burpsuite生成POC验证CSRF过程及原理

一.CSRF漏洞成因:

浏览器访问web服务器A,登录状态下,再用同一个浏览器访问了恶意web服务器B,服务器B返回给浏览器的页面中含有要求访问服务器A的恶意代码,用户不知情的情况下点击后,导致服务器A接收到来自服务器B的通过浏览器发起的恶意请求
图1
根据上图可知,要验证CSRF,需要在访问网站A后并获得cookie后,再访问一个会返回恶意代码的网站B,返回的恶意代码必须能导致浏览器访问网站A ,如果能通过返回的恶意代码访问到A,且A正常响应,说明存在CSRF漏洞。

二.Burpsuite验证CSRF原理

简单来说,验证原理就是,Burpsuite把自己作为恶意服务器,当用户通过已访问过可信任网站的浏览器访问Burpsuite恶意服务器时,burpsuite返回给浏览器的代码中含有要求访问可信任网站的代码,当用户点击时,就会对可信任网站造成攻击,若攻击成功,则验证了可信任网站存在CSRF漏洞。

三.测试过程:

本文使用phpstudy5.4+DVWA搭建的测试环境进行演示。

1.访问DVWA的CSRF测试页面可知,该网站功能为输入要修改的密码,提交后,修改成功则返回"Password changed"信息。
在这里插入图片描述
2.重新访问网站,开启浏览器代理,网站页面中填入数据,burpsuite抓取页面请求数据
在这开启里插入图片描述
在这里插入图片描述
2.将BP抓取到的数据包转至Repeater,然后在Repeater界面 “右键—>Engagement tools—>Generate CSRF POC”,即可生成POC
在这里插入图片描述
在这里插入图片描述
3.在弹出的CSRF Poc generater页面,点击"Test in browser—>Copy",复制生成的URL
在这里插入图片描述
4.打开刚才访问目标网站A的浏览器(注意不能关闭原来登录网站A的TAB页面,此时也不能关闭代理),新建一个TAB页面,粘贴刚才在BP中复制的URL,访问得到如下页面
在这里插入图片描述
原理: 此时Burpsuite生成了一个POC(一个HTML页面),并将自己作为一个web服务器(恶意Web服务器B),浏览器通过生成的URL即可访问页面,按F12查看源码,可以看到就是Burpsuite生成的HTML,源码如下:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <!--注释:将form表单中的数据提交到 http://127.0.0.1:8002/vulnerabilities/csrf/-->
  <script>history.pushState('', '', '/')</script>
    <form action="http://127.0.0.1:8002/vulnerabilities/csrf/">
      <input type="hidden" name="password&#95;new" value="1234" />
      <input type="hidden" name="password&#95;conf" value="1234" />
      <input type="hidden" name="Change" value="Change" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

这是一个HTML表单,功能是在点击"Submit request"按钮后,将表单数据提交至http://127.0.0.1:8002/vulnerabilities/csrf/,也就是提交至可信任服务器。若可信任服务器正常响应这个请求,说明漏洞利用成功。

注: Burpsuite端口为8080,浏览器只有在开启代理时才能直接通过域名URL访问到该服务器,或者也可以关闭代理,将BP生成的URL中的http://burp/用http://127.0.0.1:8080/替换即可

5.关闭浏览器代理,然后点击网页中的"Submit request",得到返回页面"Password changed",说明漏洞利用成功,网站存在CSRF漏洞。
在这里插入图片描述
在这里插入图片描述
注: 关闭代理的原因,表单是提交至DVWA的服务器,如果不关闭代理,数据将被burpsuite拦截,也可以在burpsuite中将拦截到的数据直接转发出去,查看在burpsuite中查看DVWA的响应数据包即可。

三、漏洞修复:

在http请求中
(1)增加随机token
(2)增加referer验证
(3)关键请求增加验证码

  • 16
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值