找回密码
 立即注册
首页 安全领域 安全板块 Web安全-CSRF漏洞

Web安全 Web安全-CSRF漏洞

2023-3-1 11:31:14 评论(0)
本帖最后由 如初 于 2023-3-1 11:32 编辑

1、CSRF分类
1、CSRF分类1.1、CSRF(Cross-Site Request Forgery)
XSS漏洞攻击一样,存在巨大的危害性,你可以这么理解,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻者所期望的一个操作,比如,以你的名义发送邮件,发消息,盗取你的账号,添加系统管理员,甚至于购买商品,虚拟货币转装等;

1.2、Get型:
如果一个网站某个地方的功能,比如用户修改邮箱是通过GET请求进行修改的,如/user.php?id=1&email=123@163.com,这个链接的意思就是用户id=1将邮箱改为123@163.com,当我们把这个链接修改为/user.php?id=1&email=abc@163.com,然后通过各种手段发送给攻击者,诱导攻击者点击我们的链接,当用户刚好访问这个网站,同时又点击了这个链接,那么悲剧发生了,这个用户的邮箱被修改为abc@163.com了,同理我们不仅可以修改他的邮箱,我们修改他的密码,手机号等等;

1.3、Post型:
在普通用户的眼种,点击网页->打开试看视频->购买视频是一个很正常的流程,可是在攻击者眼里可以算正常,但又不正常,当然不正常的情况下,是在开发者安全意识不足所造成的,攻击者在购买处抓到购买时候网站处理购买(扣除)用户余额的地址,比如:/coures/user/handler/25332/buy.php,通过提交表单,buy.php处理购买的信息,这里的25532为视频ID,那么攻击者现在构造一个链接,链接中包含以下内容;
  1. <form action=/coures/user/handler/25332/buy method=POST>
  2. <input type="text" name="xx" value="xx" />
  3. </form>
  4. <script> document.forms[0].submit(); </script>
复制代码
当用户访问该网页后,表单会自动提交,相当于模拟用户完成了一次POST操作,自动购买了25332的视频,从而导致受害者余额扣除;


2、CSRF攻击实例:
1、受害者Bob在银行有一笔存款,通过对银行的网站发送请求:http://bank.example/withdraw?account=bob&amount=1000000&for=bob2可以使Bob把100000的存款转到bob2的账户下,
通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的session,并且该session的用户Bob已经成功登陆;

2、黑客Mallory自己在该银行也有账户,他知道上文中的URL可以把钱进行转账操作,Mallory可以自己发送一个请求给银行:http://bank.example/withdraw?
account=bob&amount=1000000&for=Mallory,但是这个请求来自Mallory而非Bob,他不能通过安全认证,因此该请求不会起到作用;

3、这时,Mallory想到使用CSRF的攻击方式,他先自己做一个网站,在网站放入如下代码:src="http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory ",并且通过广告等诱使Bob来访问他的网站,当Bob访问该网站的时候,上述url就会从Bob的浏览器发向银行,而这个请求会附带Bob浏览器中的cookie一起发向银行服务器,大多数情况下,该请求会失败,因为他要求Bob的认证信息,但是如果Bob当时恰巧访问他的银行不久,他的浏览器与银行网站之间的session尚未过期,浏览器的cookie之中含有Bob的认证信息,这时,悲剧发生了,这个url请求就会得到响应,钱将从Bob的账户转移到Mallory的账号,而Bob当时毫不知情,等以后Bob发现账户的钱少了,即使他去银行查询日志,他也只能发现确实有一个来自他本人的合法请求转移了资金,没有任何被攻击的痕迹,而Mallory则可以拿到钱后逍遥法外;

3、CSRF攻击的防御:
1、验证HTTPreferer字段
2、在请求地址中添加token,并且验证(Anti-CSRF token)
3、在HTTP头中自定义属性并验证

4、CSRF漏洞的的挖掘
1、最简单的方法就是抓取一个正常的数据包,如果没有Referer字段,和token,那么极其有可能存在CSRF漏洞;
2、如果有Referer字段,但是去掉Referer字段后重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞;
3、随着CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等,以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下,使用CSRFTester进行测试时,首先需要抓取我们浏览器中访问过的所有链接以及所有的表单等信息,然后通过CSRFTester中修改响应的表单等信息,重新提交,这相当于一次伪造客户端请求,如果修改后测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用于来进行CSRF攻击;

5、使用Burp快速生成CSRF POC1、手工测试
目标机器:192.168.61.1
攻击机器:192.168.61.132

1.手工测试

这台192.168.61.132,我们就当成我们自己的服务器,来攻击192.168.61.1这台机器,首先我们知道目标机器上存在CSRF这个漏洞,并且我们知道了它使用了什么CMS,我们在修改信息的地方或者是修改密码的地方抓取同样的数据包,然后通过CSRF POC生成网页恶意代码,将此链接发送给目标机器,而目标机器正在登陆这个网站,并且点击了我们发送的恶意链接,就修改了他的信息或者密码;

1、我们首先登陆网站抓取修改信息的包;

2、我们生成CSRF POC,Engagement tools——>Generate CSRF PoC;

3、我们复制HTML代码,放在服务器上;
4.接下来我们向目标机器发送恶意链接:http://192.168.61.132/1.html,让目标机器进行点击;

5.这时可以看到,信息已经修改成功;








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们(3513994353@qq.com)。
您需要登录后才可以回帖 登录 | 立即注册
楼主
如初

关注0

粉丝0

帖子11

最新动态