昨天从17点到21:30一下子挖了4个半小时的csrf
感觉贼爽,收获也颇丰,领悟了一套华山剑法,来快速定位csrf漏洞
昨晚挖的是一个电商的src,所以测试点也都是电商类的
添加购物车、添加收货地址、删除收货地址啥的
0x01 基本流程
1.发到Repeater模块下,go一次看看正常的相应包
2.观察post数据里是否存在与用户信息或者token相关的字段
如果存在,那么删除后看看相应包是否正常。
如果正常那么继续,如果不正常,那么尝试绕过(几率很小)
当然,没有更好
3.观察header中的Referer、Origin字段
删除Origin,看看相应包是否正常
如果正常那么继续,如果不正常那么尝试绕过(几率较小)
删除Referer,看看相应包是否正常
如果正常那么继续,如果不正常那么尝试绕过(几率较大)
正常的话然后构造表单用另一个浏览器另一个账号进行验证
BurpSuite里面
右键-Engagment tools-Generals CSRF Poc
0x02 基本绕过
假设原referer如下:
Referer: http://admin.teagle.top/test/
发现删除referer删除后失败后
删除域名后边的东西,成功则说明不检测路径(呃,一般不检测路径)
Referer: http://admin.teagle.top/
1. 检测referer是否属于指定域
将二级域名替换为别的字符,成功则说明后台检测的是referer是否属于teagle.top域
Referer: http://aaaaa.teagle.top/
绕过:
寻找个任意二级域名*.teagle.top,构造xss
<img src=payload>
2. 检测referer中包含指定关键字
将admin.teagle.top放到路径位置,域名换为别的;
成功则说明服务器检测了关键字
Referer: http://www.baidu.com/admin.teagle.top/
绕过:
构造admin.teagle.top目录,将文件放到该目录下
3. 检测referer中是否含有指定的域
构造如下Referer,如果成功,则说明服务器检测了域
Referer: http://admin.teagle.top.baidu.com/
绕过:
在自己的域名上添加解析,然后将指定的域名包含进去
0x03 其他
昨天遇到一种情况
点击添加购物车后
后面跟了四个请求
针对这种情况,可以按照如下操作来决定决定性请求是哪一个
- 四个请求走完流程
- 关掉firefox的代理,将history中的四个条目逐个发送到repeate模块
- 删除刚才添加到购物车里的东西
- 四个请求,逐个发送,每发送一次边刷新一次购物车
- 找到那个决定性请求后,删除刚才添加到购物的东西
- 再发送一次刚才发现的请求
如果成功,那么说明添加购物车只需要这一个请求,在这个请求上尝试csrf即可
如果失败,说明需要多个链接,也就意味着接近GG
0x04 参考文章
Http referer origin
https://www.cnblogs.com/btgyoyo/p/6232569.html
CSRF 花式绕过Referer技巧
http://www.it610.com/article/3305205.htm
CSRF 防御
https://www.jianshu.com/p/d15c5773fa07