0x00前言
上半年就说要写怎么挖csrf漏洞了,主要是懒....后面就忘记写了。今天正好有人问到,索性就写一篇文章出来
0x01 什么是CSRF
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
0x02怎么挖掘
第一个就是看网站是否存在token,如果存在token的话,可以测试一下这个token是不是摆设(还真遇到过)。如果不是摆设的话,我们还可以去查找是否有接口能够获取到token。如果有的话这个token就相当于可有可无了。 第二个,看完token我们可以尝试一下删除Referer了,如果删除Referer后,该数据包仍然能够执行的话,十有八九这里就存在着漏洞了。如果删除Referer不能正常发送的话,也不用放弃。可以先尝试把POST数据包改成GET数据包(看看能不能正常执行)。然后就可以去尝试找xss漏洞来包含这个get请求,从而也能达到csrf的效果,或者如果有发表文章之类的地方。在加载图片链接等的地方也可以尝试把get请求放进去。这样就形成了蠕虫啦~
0X03挖掘过程
今天我们拿帝国cms来演示一下具体怎么挖掘。 我们需要,俩个浏览器+俩个账号+burpsuite。
抓个包,发现这里没用token限制,那我们删除下Referer试试。
OKK,正常执行了。接下来我们利用burp生成个CSRF的POC
保存到本地生成个poc。接下来换个账号和浏览器登入
然后点击下poc
成功!!!
当然,在这个时候肯定就有朋友想到了。这怎么还需要点击???有没有办法让人家打开url后自动发送数据包且让其他人没有察觉? of course,当然有。我们可以利用js去自动点击。 我们需要魔改一下burp的poc。 这里我们用到了俩个网页(一个页面的话还是会自动跳转就很容易被发现了。),欺骗网页来包含发送数据包的网页 -index.html(用来欺骗的) -yx666.html(用来发送数据包的)
index.html是我下载了百度搜索的页面,然后加上红框中的那句话就能包含了 为了演示效果我把width=0% height=0%改成width=100% height=100% (0%的话就可以完美隐藏了)
0x04文末
唔,太简单了(本文在本地复现,请各位不要做非法测试~~~)