本帖最后由 如初 于 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,那么攻击者现在构造一个链接,链接中包含以下内容; - <form action=/coures/user/handler/25332/buy method=POST>
- <input type="text" name="xx" value="xx" />
- </form>
- <script> document.forms[0].submit(); </script>
复制代码当用户访问该网页后,表单会自动提交,相当于模拟用户完成了一次POST操作,自动购买了25332的视频,从而导致受害者余额扣除;
2、CSRF攻击实例:通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的session,并且该session的用户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代码,放在服务器上;
5.这时可以看到,信息已经修改成功;
|