第56天:漏洞利用-CSRF请求伪造&Refere同源&置空&配合XSS&Token值校验&复用删除

第56天:漏洞利用-CSRF请求伪造&Refere同源&置空&配合XSS&Token值校验&复用删除
Yatming的博客原理
经典场景:
1 | 假设用户登录某银行网站后,未退出登录。 |
防护措施
1 | --对敏感信息的操作增加安全的token; |
攻击条件:
1 | 条件: |
CSRF常出现的功能点
1 | 留言板、论坛:用户发表、编辑、删除评论或帖子。 |
CSRF-无检测防护-检测&生成&利用
检测:黑盒手工利用测试。白盒看代码校验(有无token,来源检测等)
生成:BurpSuite –>Engagement tools –>Generate CSRF Poc
利用:将文件防止自己的站点下,诱使受害者访问(或配合XSS 触发访问)
我这里使用的汉化的,所以有点差异,但是都差不多。
这里要把这个选项进行勾选,然后删除下图中的代码,因为如果不删除在提交的时候就会有一个按钮,要受害者手动点击,所以要进行删除。
然后上传到内网虚拟机上(实战中要上传到云服务器上),然后伪造一个界面诱使(组合XSS打一个组合拳)受害者访问,这里需要注意需要在受害者有身份验证没有失效的浏览器进行访问,不然成功不了:
1 | http://192.168.111.128/test.html |
访问之后,回显如上。
在来看用户这里,发现新增用户成功。
这样是没有防护的。
CSRF Referer 同源规则上传&XSS
这里使用zblog,用上面同样的方式,进行测试:
这里还存在token复用
这里就出现非法访问。
其类似原理如下图:
就是检测了来源,但是这个是可以进行伪造的。
进行抓包,发现来源是192.168.111.128
这个地址,这里尝试将来源修改成本地地址。
但是小迪修改之后,csrf攻击成功,我这里修改之后还是非法访问。
基于严谨的检测绕过&&基于不严谨的检测绕过
1 | 开发验证来源,无非两种逻辑, |
上图这样的就是模糊匹配。
那么实战中该怎么进行操作呢?总不能要受害者帮忙抓包改包吧。
绕过思路1(创建来源同名目录)
1 | http://xxx.xxx.xxx.xxx/http://xxx.xxx.xxx.xxx/hack.html |
绕过思路2(置空)
1 | 或者你直接将Referer这个值给置空 |
绕过思路3(删除Referer)
1 | 直接从数据包中删除Referer这个参数 |
发现报错信息更过, 然后抓取数据包进行研究:
确实没有来源头了,放包,攻击成功。
还有最后一种比较实用的就是:
1 | 配合XSS,如果对方有xss,诱使点击xss链接,使其跳转到我们的钓鱼页面,然后钓鱼页面加载csrf poc。或者直接和之前一样,在用户名那里植入xss,然后管理员只要看日志就会触发xss的链接,可以将这个链接进行修改成csrf poc,进一步利用就像小皮面板那个一样要AI帮你生成poc对应的js语句,xss直接就可以触发。 |
Token验证-值删除&复用&留空
CSRF_token 对关键操作增加Token参数,token必须随机,每次都不一样,存储在cookie中,与验证码一样
当我换一个浏览器进行触发的时候:
就会告诉我token验证失败
再次在浏览器中进行抓包:
token值发生变化
那么这个东西到底有什么作用?试想一下,当你在实战情况下自己本地搭建源码,然后复现出来攻击的数据包,然后本地自己抓包获得到POC,然后诱使受害者进行触发, 但是因为有token的存在,每次访问都会发生变化, 你的token和他的token不一样当然也就执行不成功。
置空
删除
zblog—token复用
这里需要知道受害者的Token才行。所以基本就是GG
漏洞修复
1 | --对敏感信息的操作增加安全的token; |