前言
作者简介:不知名白帽,网络安全学习者。
博客主页:不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主
网络安全交流社区:https://bbs.csdn.net/forums/angluoanquan
目录
CSRF漏洞原理
CSRF常见分类
GET型
POST型
CSRF危害
CSRF防御
CSRF常见利用手法
bWAPP
Change password
Change secret
Transfer amount
Pikachu
CSRF GET
CSRF POST
CSRF TOKEN
CSRF漏洞原理
CSRF(跨站请求伪造),是一种对网站的恶意利用。通过伪装受信任用户的请求来利用受信任的网站
CSRF常见分类
GET型
仅需要一个HTTP请求,就能构造一个简单的CSRF
在访问危险站点B之前,已经登录受信任网站A,访问了一个合法的请求,但是此请求已经被黑客利用
POST型
构造自动提交的表单,诱导受害者访问或点击
CSRF危害
更改账号信息,权限,货币等
获取用户的隐私数据
配合其他漏洞攻击
CSRF防御
验证http referer字段
在请求地址中增加token并验证
在http头中验证自定义属性
CSRF常见利用手法
bWAPP
Change password
修改密码,BP抓包,发现get传参,尝试创建CSRF的POC
CpoyHTML,并新建一个HTML文件,将密码修改为user
点击 sumbit request,发现密码被成功修改
登出后,利用新密码(user)重新登陆
Change secret
同理,BP抓包,修改secret值
同理,构造CSRF的POC,并修改部分参数,更加诱惑用户点击
Transfer amount
BP抓包
发现为get请求,可以url构造成一个短链接
触发链接,发现少了200 EUR
Pikachu
CSRF GET
BP抓包,发现为GET型
因此修改URL,构造payload,将性别修改为girl
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18626545453&add=chain&email=vince%40pikachu.com&submit=submit
payload太过于明显,继续构造成短链接
用在在登录网站的情况下,访问该链接,则会造成CSRF
CSRF POST
BP抓包,发现为POST型
使用CSRF POC构造html
将手机号码改为12345678910
将此html文件,发给用户,诱导访问
CSRF TOKEN
Token验证原理:
CSRF的主要问题是敏感操作的链接容易被伪造
每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对随机码进行验证
网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用。
分析代码:
修改用户信息时,服务器会比较url中的token字段和session中的token字段,如果相同才能修改用户信息。
修改完用户信息之后,会用set_token()函数生成新的token,将其返回到html表单中并隐藏起来,以便下次用户修改信息时代入url。
我们使用BP自带的CSRF Token Tracker
Extender -- Bapp store -- CSRF Token Tracker
安装之后,设置IP和变量名,并勾选参数
直接抓包,发送到repeater
发现第一次失败,继续点击send
信息修改成功
点击Follow redirection,进行重定向
刷新原页面