当前位置: 首页 > 后端技术 > PHP

WEB安全渗透漏洞靶场挖掘实践

时间:2023-03-29 14:14:35 PHP

简介最近在逛码云的时候发现了permeat靶场系统。感觉界面和业务场景设计还不错。所以过来分享一下。同时,我也会分享一些自己的漏洞利用思路。虽然本文只是简单介绍了其中的三种漏洞类型,但我也想抛砖引玉,为网络安全新手提供一些挖掘思路。下载地址:GitHub地址:https://github.com/78778443/permeate国内地址:https://gitee。com/songboy/permeate一文主要介绍SQL注入挖掘、xss跨站挖掘、csrf漏洞。漏洞频繁出现。我心目中的Web安全漏洞分为三类:编码漏洞、业务逻辑漏洞、运行环境漏洞。之前有给别人做代码审计的习惯。从代码上分析问题。为什么要这样做,因为你认为如果代码跑不起来,很多漏洞单从代码层面是发现不了的。当代码可以运行时,不仅可以验证问题,还可以从系统的业务功能上进行验证。了解更多问题。例如,许多网站都提供站内搜索功能。搜索时,他们通常会返回用户在页面上搜索的关键字。这里很可能存在反射型XSS漏洞。另外,很多网站都有用户系统,在修改个人资料时存在越权的可能。比如修改个人数据时,检查是否提交了uid参数。如果是,修改uid值,看看是否修改了其他人的信息。这些实际上需要运行才能找出问题所在。笔者比较简单的是在windows系统中通过wampser搭建。这里简单介绍一下安装方法:使用git把代码拉下来配置一个单独的虚拟主机目录(不要放在二级目录下,好像有问题)新建一个数据库,导入sql文件,文件位置/doc/bbs_cate.sql在/config/dbconfig.php文件中修改数据库账号密码信息经过上面的安装步骤后,应该可以看到如下界面。有defaultplate和defaultpartition,说明连接数据库成功。现在我们开始挖掘其中的漏洞。在项目介绍中可以看到存在SQL注入、XSS和CSRF问题,但是并没有告知漏洞的位置,所以需要先分析每个漏洞对应的场景。先说SQL注入挖矿。1.SQL注入挖掘理解SQL注意事项进入过知识点的人应该都能想到,sql注入是由于攻击者可以控制sql语句中的参数造成的。然后我们先找到一个需要传递参数的地址。可以看到刚才首页有个默认版块,然后点击默认版块。点击之后,上面的URL地址变成了http://permeate.localhost/home/index.php?m=tiezi&a=index&bk=5可以看到URL中有三个参数,但是根据经验一般来说,第一个m和a这两个参数有点像routing,所以暂时用exclusion的方法把这两个排除掉,最后一个参数bk是一个数字,好像是板子的ID,所以我们可以重点关注一下,先记住测试前的页面是什么样子的?现在让我们快速手动测试它。如何测试?可以在bk=5后面加一个单引号,或者加一个%27得到URL地址如下http://permeate.localhost/home/index.php?m=tiezi&a=index&bk=5'这时候,查看页面运行情况,发现帖子列表中的帖子已经不存在了。这时候我们可以初步得出结论,这个地方可能存在SQL注入问题,但是还不确定,要确定这个地方是否存在注入问题,我们深入验证一下,可以使用参数value5'or'1'='1进行验证,得到URL地址如下http://permeate.localhost/home/index.php?m=tiezi&a=index&bk=5'or'1'='1后访问,发现页面又变了。这时候我们就可以确定这个地方存在SQL注入问题,如下我们可以通过sqlmap查看数据库中存在哪些数据库信息。sqlmap命令如下:sqlmap-u"http://permeate.localhost/home/index.php?m=tiezi&a=index&bk=5"--dbsthroughsqlmap从反馈结果可以看出,确实有这个地方的注入问题。接下来我们来寻找XSS漏洞漏洞2.XSS跨站导致XSS的主要原因我们知道页面会输出参数,所以在寻找XSS漏洞的时候,我们先看看站点的功能;在首页和帖子列表页面的图片中,我们可以大致看到有搜索功能、发帖、回复帖子等功能。这些地方会使用接收到的参数作为内容展示显示出来,这样我们就可以一一测试了。让我们从最简单的搜索页面开始。导航栏中有一个搜索框。我先在搜索框里输入test,url地址如下http://permeate.localhost/home/search.php?keywords=test从url地址可以看出搜索关键词会通过keywords,传过去后会显示在页面内容中,如下图,现在分析显示的是html元素,在关键字testNode的父级,可以看到是一个div,script标签写在div中会被执行,所以可以直接使用下面的payloadhttp://permeate.localhost/home/search.php?keywords=test来测试,访问这个链接通过浏览器,可以看到弹出了123确认框,但是xss不限于script标签可以执行,还可以配合img标签的onerror属性执行,可以构造如下payloadhttp://permeate.localhost/home/search.php?keywords=test还是访问url地址,可以看到弹出了456的确认框。上面的XSS都是reflective的,storage-type项也说明存在,这里略过,先来看看CSRF漏洞。3、CSRFCSRF漏洞的主要原因是服务器在收到表单请求时,没有验证请求是用户发出的还是浏览器发出的。request,所以在挖掘这类表格的时候,首先要找到表格所在的位置。在前面的截图中可以看到有一个post按钮,可以进去点进去看看,点击post,url地址是http://permeate.localhost/home/fatie.php?bk=5在这个上页面,你可以看到有一个用于发布的表单。我们主要检查表单是否有token令牌。如果不是,则可能存在CSRF漏洞。浏览器的评论元素截图如下。页面上确实没有token信息,所以我们可以初步断定这个地方存在CSRF的可能。现在我们需要验证一下。校验的时候需要指定CSRF有GET类型和POST类型,get类型用起来比较简单,而且在这个地方,虽然表单提交是通过POST,但是不排除GET提交也可以使用,所以我们先尝试使用GET类型提交数据,先通过抓包浏览器的网络分析模块,看看post会发送什么数据,如下图所示,帖子会传递三个参数,以往对于bk、title、content这三个参数,我们先构造一个get形式的payload,获取URL地址如下:http://permeate.localhost/home/_fatie.php?bk=5&zt=0&title=111&content=222然后去浏览器打开这个地址看看表单能不能提交成功。访问后弹出一个确认框,告诉我帖子已成功发布。进入下图列表确认,发现帖子确实发布成功,如下图帖子列表。CSRF相对低级。很多时候post提交是不能用get来提的,那我们就尝试用post方法构造一个payload吧。代码如下test
<脚本>varf=document.getElementById("test");f.getElementsByTagName("输入")[0].value="标题";f.getElementsByTagName("输入")[1].value="内容";上面代码中可以使用f.submit();可以看出,表单中的值是事先定义好的,受害者打开时,表单会自动提交。前面说了,这个系统里面有一个存储的XSS,还有一个CSRF漏洞,可以用来做XSS蠕虫测试吗?4、蠕虫XSS满足蠕虫XSS、存储型XSS和CSRF漏洞的两个必要条件,这两个条件在本系统中都有。因此,实施起来没有问题。需要的是找出过去存储的XSS在哪里发布。参数会被存储和显示,所以这个地方是比较好的测试点。我们先在发帖位置试一下。如下图,在表单中提交了xss验证码。触发成功后,会弹出框123。点击下图的发帖按钮,发帖成功。当你来到帖子列表页面时,你会发现警报(123)已被成功触发,如下图,现在有了CSRF和存储型XSS,那么接下来就是将它们结合起来,但是蠕虫XSS利用代码相对alert(123)比较长,所以我们需要先将利用代码放将其写入文件,然后通过脚本将其导入。我们构建的代码如下varstrrand=+newDate();varstr='http://premeate.localhost/home/_fatie.php?bk=5&zt=0&title=1111&content=222';vartag=document.createElement('img');tag.src=str;document.body.append(tag.src);上面代码中,一执行,页面就会插入一个img标签,标签的src属性会再次请求表单,而表单中的内容是一段xss代码,所以会变回XSS蠕虫攻击的结果,每个请求都会呈指数增长。如下图,浏览器刷新3次后,已经有很多帖子了。作者:唐青松微信:songboy8888