#知识点:
1、CSRF-审计-复现测试&同源策略
2、SSRF-审计-功能追踪&函数搜索
CSRF:
首先CSRF漏洞的挖掘不像其他漏洞一样是需要关键函数和应用功能的,这个就是看网站会不会对来源进行检测,不会那就是有CSRF,然后我们可以进行复现(复现就是通过前期的信息打点得到网站是什么系统搭建的,然后在本地自己搭建进行复现),如果复现成功那就是有,失败的话就是两种情况,看代码的过滤完整不完整,不完整就是有漏洞,完整就是没漏洞。
案例一:代码审计-CSRF-SCMSFH无验证
首先把网站搭建好,然后进入后台进行添加管理员的操作,浏览器代理开起来,端口设成8008,利用csrftester工具去抓取添加管理员的数据包,这个工具上节说过了。
这个是数据包,把多余的那些get请求删掉,然后保存到桌面,这里在虚拟机搭建的网站,把这个数据包放到虚拟机中来模拟外网。然后我们在要测试的网站那里,访问这个数据包即可。
可以看到本来没有adminmn,访问这个数据包之后就会发现管理员那里多了一个用户admimn。(上面的数据包那个截图是之前的,里面的名字应该是admimn)
这里直接成功了,是因为它没有验证。
案例二:代码审计-CSRF-ZBLOG同源策略
这个就会有验证了,当我们还是按照之前的操作时,会发现成功不了。
注意:这里只对来源进行了验证,而没有对tooken进行验证,数据包中有这个tooken,如果说它对这个tooken进行验证的话是绕过不了的,因为它是在服务器端产生的,并且你每一次操作都会产生一个tooken,如果tooken能绕过的话,那支付宝那些就直接不干了。
然后我们抓包,对数据包的refer进行修改之后会发现也是成功了的。
这里需要把下图的数据包中的refer改成localhost:85/zb_system/cmd.php
然后把数据包放出去之后会发现xiaopei这个管理员创建好了。这个相当于就是对来源进行了检测。
在实战中,如果我们的目标网站会对来源进行检测的话,我们是无法让被攻击者去修改refer的,所以我们有两个解决方法去绕过。
第一个就是直接在数据包中固定来源,就是把refer的值固定了,让网站以为是自己访问的,而不是从其他地方跳转过来的。
第二个方法就是试着在网站上寻找可以上传的地方,然后我们上传一个文件,通过抓包可以看到它上传的地址,然后我们把数据包中的refer直接改成这个地址再让别人去访问。
小迪讲了一下如何用py脚本去固定来源,但是这个py脚本是无法直接在浏览器访问的,需要搭建web环境。不然访问py文件就是下载。这个会麻烦一点。可以看到,如果不固定来源的话,就是空,固定来源的话就会显示我们固定的来源。那个xx.php文件里面的代码就是获取来源然后输出出来。
SSRF:
这个主要就是看服务器能不能接受你输入的地址去帮你请求访问。
首先通过看特定功能进而对代码段进行分析审计,比如文件下载功能,那我么能不能输入一个地址让服务器去下载。还有就是特定漏洞函数进而对相应的功能去分析。比如下面的file_get_contents这个函数就对应这个文件读取的操作,因此在下面这个案例就是因为这个函数导致的SSRF漏洞。
案例:代码审计-SSRF-Yzmcms功能&函数
首先这个SSRF有点鸡肋,因为需要进入后台,有个采集管理的功能,这个肯定是服务器去采集,这就满足第一个条件,你让他采集什么他就采集什么,这就满足第二个条件。
那么我们就可以让他读取到e.txt这个文件,而能读取到这个文件就是因为源码中有这个file_get_contents函数。