【漏洞学习】挖掘CSRF漏洞

0x00前言

上半年就说要写怎么挖csrf漏洞了,主要是懒....后面就忘记写了。今天正好有人问到,索性就写一篇文章出来

0x01 什么是CSRF

跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

43574-oz3i4o9flji.png

0x02怎么挖掘

第一个就是看网站是否存在token,如果存在token的话,可以测试一下这个token是不是摆设(还真遇到过)。如果不是摆设的话,我们还可以去查找是否有接口能够获取到token。如果有的话这个token就相当于可有可无了。 第二个,看完token我们可以尝试一下删除Referer了,如果删除Referer后,该数据包仍然能够执行的话,十有八九这里就存在着漏洞了。如果删除Referer不能正常发送的话,也不用放弃。可以先尝试把POST数据包改成GET数据包(看看能不能正常执行)。然后就可以去尝试找xss漏洞来包含这个get请求,从而也能达到csrf的效果,或者如果有发表文章之类的地方。在加载图片链接等的地方也可以尝试把get请求放进去。这样就形成了蠕虫啦~

86318-6vrcpl84wd6.png

0X03挖掘过程

今天我们拿帝国cms来演示一下具体怎么挖掘。 我们需要,俩个浏览器+俩个账号+burpsuite。

44335-3i7afazlicn.png

抓个包,发现这里没用token限制,那我们删除下Referer试试。

00150-ps31w9jh5q8.png

OKK,正常执行了。接下来我们利用burp生成个CSRF的POC

11105-8ly3xr22x46.png
85656-cbeca6sa89.png

保存到本地生成个poc。接下来换个账号和浏览器登入

99856-ybwty32r95.png

然后点击下poc

63153-pyalvopqlxd.png
60312-zdjyqvjuhjb.png

成功!!!

21152-l7kid58cmd.png

当然,在这个时候肯定就有朋友想到了。这怎么还需要点击???有没有办法让人家打开url后自动发送数据包且让其他人没有察觉? of course,当然有。我们可以利用js去自动点击。 我们需要魔改一下burp的poc。 这里我们用到了俩个网页(一个页面的话还是会自动跳转就很容易被发现了。),欺骗网页来包含发送数据包的网页 -index.html(用来欺骗的) -yx666.html(用来发送数据包的)

38506-76nuj9w4bhf.png
65335-ijdpomhjgwi.png
98793-1qitjnri0guh.png

index.html是我下载了百度搜索的页面,然后加上红框中的那句话就能包含了 为了演示效果我把width=0% height=0%改成width=100% height=100% (0%的话就可以完美隐藏了)

46037-9msp8ibfzrb.png

0x04文末

唔,太简单了(本文在本地复现,请各位不要做非法测试~~~)