手动复现DedeCMS_V57_UTF8_SP1 版本的CSRF漏洞
写在前面
最近在学习CSRF,就拿DedeCMS_V57_UTF8_SP1这个练练手,小白第一次写博客,欢迎赐教!
前置知识
CSRF概念
CSRF(Cross-site request forgery)跨站请求伪造:也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像XSS,但它与XSS非常不同,XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
攻击有俩重点:
1、CSRF攻击建立在浏览器与web服务器的会话中
2、欺骗用户访问URL
CSRF只能通过用户的正规操作进行攻击,实际上就是劫持用户操作
检测手段
用的比较多的是手动检测和半自动检测
手动检测:
分析传参意义,动手编写POC,这里我感觉就主要看token吧。如果没有设置token的话,就可能有csrf
半自动检测:
CSRFTester工具
预防手段
可以强行用验证码(强制用户和应用进行交互)
请求中加随机Token值(不同的表单包含一个不同的伪随机值)
将cookie设置为httponly,以及增加session相关的Hash token码
复现过程
先把这个版本的cms安装在本地,我用的phpstudy,记得打开数据库~
url后面加上dede就能访问到后台,找到文件式管理器
在这里写一个一句话木马,点击保存的时候开代理抓取数据包(这里有个坑,我用burpsuite抓不到本地的包,然后修改了限制的地址也没有用。后来用本机ip代替了127.0.0.1,在谷歌里面开代理就能抓取到啦~)
利用burpsuite的工具自动生成POC
copy html保存为文档
然后访问我们写入的php文档,并且传参phpinfo,如果成功,则说明一句话木马写入成功
再来说生成的POC
如果是你要去打对应版本的一个靶场,将html文件里的路径修改一下,改成靶场的路径(为了方便,最好在搭建的时候就搭建与靶场一样版本一样路径的,我的newcsrf文件夹就是为了方便打靶场而写的名)。然后添加一段自动触发的JS代码
<script> function a(){ document.getElementById(id='aa').submit(); } setTimeout(a,100) </script>
同时还要修改这里
在靶场里面上传修改之后的html文件(由于是内部靶场,不方便展示,理解一下哈),得到文件上传之后地址,想办法诱惑管理员点击这个地址(所以这里写了自动触发),然后用蚁剑或者菜刀连接,结合之前的一句话木马,就能拿下查看文件目录的权限了。
结语
在查阅资料的过程中,我看到这个版本还有个远程文件包含漏洞,等学了这个再来复现啦~