CSRF-代码审计+检测绕过
csrf漏洞-黑白盒判断
CSRF安全问题黑盒怎么判断:
1、看有没有验证来源
2、看凭据有没有token
3、看关键操作有没有验证
修复:把上述三点变成有即可
CSRF安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看
测试步骤:
1.复现成功——有漏洞
2.复现失败——看代码——缺陷过滤(成功绕过)——有漏洞
3.复现失败——看代码——完美过滤(无法绕过)——没有漏洞
案例一:自动添加管理员用户(无过滤)
测试源码名称:发货100 - 虚拟商品自动发货系统
使用CSRFTester工具抓取添加管理员用户的请求数据包
成功抓取
保存数据包为html文件,将文件放到服务器让目标管理员访问。
目标管理员访问链接,成功创建管理员用户
使用工具Seay源代码审计系统查看源码添加管理员用户的功能点发现没有进行csrf的相关过滤
案例二:自动添加管理员用户(有过滤)
测试源码名称:Z-BlogPHP——由Z-Blog社区提供的博客程序
使用CSRFTester工具抓取添加管理员用户的请求数据包
数据包保存为html文件导出,打开文件删除除了添加管理员用户的其他表单,将文件放到服务器让目标管理员访问
目标管理员访问链接,提示”非法访问“,并没有添加用户
进行代码审计,根据请求地址得到代码文件
源码搜索
继续定位函数
再次定位,成功找到过滤代码,检测了请求来源”Referer“。
检测代码的意思就是:收到请求时检测请求里的referer值是否和Host值相同,不相同就不执行请求。
那么我们就要伪造来源绕过检测
伪造来源两种方法:
1.伪造——需要在添加管理员用户的请求数据包文件中”固定来源“
2.借目标——在目标网站寻找可上传地方,上传请求数据包,获取目标同域名访问地址。
网站没有上传地方,使用第一种方法,浏览器搜索referer伪造代码,更改对应的值即可。
把伪造来源的php文件放到能让目标访问的服务器上
目标访问链接,成功绕过来源检测创建管理员用户
漏洞代码审计思路:
看应用功能和关键函数
1.特定漏洞功能——》代码端分析审计
2.特定漏洞函数——》测试对应功能判断
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。