天天看点

网络攻击与防御之CSRF

参考网站

https://www.freebuf.com/articles/web/118352.html

Low

服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码,并没有任何的防CSRF机制。

漏洞利用:

1.构造最基础的链接

http://10.169.167.182:8080/DVWA/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#

网络攻击与防御之CSRF

当受害者点击了这个链接,他的密码就会被改成hack(这种攻击有些拙劣,链接容易看出是改密码的,而且受害者点了链接之后看到这个页面就会知道自己的密码被篡改了。)

用修改后的密码可以登录成功。

2. 使用短链接来隐藏URL(点击短链接,会自动跳转到真实网站)

网络攻击与防御之CSRF

虽然利用了短链接隐藏url,但受害者最终还是会看到密码修改成功的页面,所以这种攻击方法也并不高明。使用短网址会自动跳转到此路径,仍可被发现。

网络攻击与防御之CSRF

3. 构造攻击页面

构造攻击页面,让受害者去访问这个页面然后自动访问该链接。

网络攻击与防御之CSRF

当受害者访问10.169.167.182.html时,会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为了hack。

网络攻击与防御之CSRF
网络攻击与防御之CSRF

Medium

Medium级别的代码检查了保留变量 HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,及要访问的主机名,这里是10.169.167.182),希望通过这种机制抵御CSRF攻击。

网络攻击与防御之CSRF

漏洞利用:

过滤规则是http包头的Referer参数的值中必须包含主机名(这里是10.169.167.182)

我们可以将攻击页面命名为10.169.167.182.html(页面被放置在攻击者的服务器里,这里是192.168.232.1)就可以绕过了

1.利用IIS建立网站,如图将攻击界面挂载到网站上。

网络攻击与防御之CSRF

2.浏览网站

网络攻击与防御之CSRF
网络攻击与防御之CSRF

3. Burpsuite的截图

网络攻击与防御之CSRF
网络攻击与防御之CSRF

4. Referer参数完美绕过过滤规则

网络攻击与防御之CSRF

4.repeater截图如下:

网络攻击与防御之CSRF

5.密码修改成功

用hack密码登录成功

网络攻击与防御之CSRF

High

High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。

要绕过High级别的反CSRF机制,关键是要获取token,要利用受害者的cookie去修改密码的页面获取关键的token。

漏洞利用:

1.初始的攻击思路是构造一个攻击页面,将其放置在攻击者的服务器,引诱受害者访问,从而完成CSRF攻击。

绕过需要获取页面的token,但是由于浏览器是不允许跨域请求的,域名A是不允许获取域名B页面中的内容的。除非域名A下的页面主动发送信息给域名B的页面,所以我们的攻击脚本是不可能取到改密界面中的user_token。

2. 利用High级别的XSS漏洞协助获取Anti-CSRF token。

网络攻击与防御之CSRF

3. Name存在XSS漏洞,于是抓包,改参数txtName=<iframe src="…/csrf" alert(frames[0].document.getElementsByName(‘user_token’)[0].value)>&mtxMessage=hj&btnSign=Sign+Guestbook。

网络攻击与防御之CSRF

4.repeater可见

网络攻击与防御之CSRF

5.成功弹出token

网络攻击与防御之CSRF

6.写攻击界面(借用low级别的代码稍作修改)

网络攻击与防御之CSRF

7.访问攻击界面

网络攻击与防御之CSRF

8.修改密码成功,可以用修改后的密码1登录。

Impossible级别的代码利用PDO技术防御SQL注入,至于防护CSRF,则要求用户输入原始密码(简单粗暴),攻击者在不知道原始密码的情况下,无论如何都无法进行CSRF攻击。