漏洞概要
关注数(24)
关注此漏洞
漏洞标题:Discuz!x xss反弹后台无防御sql注入getshell(附带exploit)
提交时间:2014-09-13 19:48
修复时间:2014-12-12 19:50
公开时间:2014-12-12 19:50
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-09-13: 细节已通知厂商并且等待厂商处理中
2014-09-15: 厂商已经确认,细节仅向厂商公开
2014-09-18: 细节向第三方安全合作伙伴开放
2014-11-09: 细节向核心白帽子及相关领域专家公开
2014-11-19: 细节向普通白帽子公开
2014-11-29: 细节向实习白帽子公开
2014-12-12: 细节向公众公开
简要描述:
Discuz!x xss反弹后台无防御sql注入getshell,这里的xss只是做一个药引子,因为xss来自日志功能,然而这个日志功能却又默认关闭的,为了测试我们开启它。这个漏洞应该是所有dz通杀的,我下载了最新版本的所以测试通过......
详细说明:
首先我们开启日志功能,然后存储一个xss看看:
测试一个xss页面:
我们调到文章页面看看,是否被执行了:
下来我们看看怎样把这个发给管理员呢,底下有一个举报页面:
我们以管理员的身份看看这个后台的举报请求:
这个过程我们分析完毕了,下来我们看看后台一处,无防御的sql注入:
我们这里就不分析代码了,这里代码好曲折啊,大致思路我们给一张图,就可以看清楚
1.设置表前缀,抓包重放如下:
2.然后我们改一下表前缀的注入:
3.我们来监控一下,sql语句的执行过程,我们就明白了,这个漏洞产生的原因
a.当你第一次点击的时候,这个sql语句不会执行,然后你多提交几次,就可以了
b.数据第一次流进了这个表:
看以看出来,做了过滤
c.但是当数据取出来的时候,这个就没有在进行转义,直接从数据库获取,所以造成漏洞:
那么我们去这个目录看看是否生成了我们想要的shell:
这么一来所有的来龙去买我们都搞清楚了,那么怎么样把这两个组合起来,因为有表单hash的存在我们怎么通过xss搞定,思路如下:
1.我们通过ajax 首先对表单页面进行一次get访问,大家都知道dz会隐藏的形式写进表单的一个字段为formhash
2.有了这个formhash的话我们就可以,再次发送ajax请求,直接发送五次然后geshell
3.有人要问为什么要发送五次,这三次分别是什么
a.第一次是get请求获取formhash
b.第二,三次是发送构造的包,因为这第一次发送,是不会成功的,它要利用上次的发包,再二次构造,所以这里面发两次才能产生shell
c.第四,五次请求就是还原人家本来的面目,这里原理是相同的
接下来看我们的代码:
我们在远端的服务器放置的js内容如下:
然后依照刚才的解法,我们应该在那个目录下生成了一个shell.php
最后我们的站点还是可以正常访问,不留痕迹
到此为止所有的东西已经做完.............
漏洞证明:
修复方案:
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2014-09-15 10:39
厂商回复:
感谢您对我们产品的支持,我们会尽快处理。
最新状态:
暂无
漏洞评价:
评论
-
2014-09-13 19:56 |
zeracker ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)
-
2014-09-13 19:57 |
zph ( 普通白帽子 | Rank:235 漏洞数:43 )
-
2014-09-13 20:08 |
鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)
-
2014-09-13 20:09 |
铁汉 ( 路人 | Rank:12 漏洞数:6 | 向各种大神学习之)
-
2014-09-13 20:10 |
menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)
-
2014-09-13 20:45 |
ecbug ( 实习白帽子 | Rank:97 漏洞数:15 | hello wooyun)
这标题咋看不懂呢?到底是xss还是sqli?是不是xss跨到后台再利用后台的sqli注射出key获得shell?那这个意思是说xss是必须的?然后这个xss默认又关闭,那岂不是这个漏洞在实战中就是个鸡肋?只能在代码审计层面YY下?
-
2014-09-13 21:00 |
泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)
-
2014-09-13 21:54 |
bey0nd ( 普通白帽子 | Rank:895 漏洞数:142 | 相忘于江湖,不如相濡以沫)
-
2014-09-13 22:21 |
menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)
@ecbug 不一样的,后台的sql,没有任何防御,直接写文件
-
2014-09-13 22:24 |
menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)
@ecbug 再说,我有xss,就是不想公布到这里面,只是演示其危害性
-
2014-09-13 22:30 |
kimdle ( 路人 | Rank:0 漏洞数:1 | @kimdle)
-
2014-09-13 23:02 |
子非海绵宝宝 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)
-
2014-09-13 23:04 |
saline ( 普通白帽子 | Rank:231 漏洞数:32 | Focus On Web Secur1ty)
@menmen519 后台sql写文件?是写到缓存还是利用mysql root?
-
2014-09-14 09:12 |
pangshenjie ( 普通白帽子 | Rank:110 漏洞数:14 )
-
2014-09-14 14:41 |
围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)
-
2014-09-15 11:38 |
Ray ( 实习白帽子 | Rank:75 漏洞数:7 )
@menmen519 hi,冻主,我记得以admin身份发的日志才不会被富文本过滤,所以,这是不是个误报呢。
-
2014-09-15 11:43 |
menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)
@Ray 这里不会的,这里是利用了xss,其实随便找个xss就可以,主要功能点不在这里
-
2014-09-15 13:43 |
ziwen ( 实习白帽子 | Rank:49 漏洞数:4 | 活着为了乐还是为了苦?)
-
2014-09-18 18:09 |
子丑寅卯辰 ( 路人 | Rank:2 漏洞数:1 | 子丑寅卯辰巳午未申酉戌亥)
竟然附带exploit。。。cncert不用加班了
-
2014-09-19 16:28 |
Ray ( 实习白帽子 | Rank:75 漏洞数:7 )
@menmen519 $POST['message'] = checkhtml($POST['message']);……function checkhtml($html) { if(!checkperm('allowhtml')) {不要和我说这里没有任何处理,只是你的admin账户有allowhtml的perm
-
2014-11-02 20:02 |
微尘 ( 普通白帽子 | Rank:218 漏洞数:74 )
@menmen519 这个拿shell需要root权限吧?
-
2014-12-12 22:16 |
ID被封,再混个ID ( 路人 | Rank:0 漏洞数:1 | 1)
@Ray 貌似dz和wp的是一样的啊,管理员不受限制,这个感觉是误报
-
2014-12-13 11:08 |
cmxz ( 普通白帽子 | Rank:128 漏洞数:13 | )
@ID被封,再混个ID 洞主的意思是通过任意的XSS让管理员来执行sql。不过既然都能xss了,为何不拿到管理员cookie直接自己登陆呢!?@menmen519
-
2014-12-13 11:29 |
menmen519 ( 普通白帽子 | Rank:762 漏洞数:146 | http://menmen519.blog.sohu.com/)
@cmxz dz后台很少有sql注射 你们可以看一下这个原理 很有意思的
-
2014-12-13 20:49 |
廷廷 ( 路人 | Rank:0 漏洞数:1 | 有很强的好奇心,爱好广泛,求女女带走。。...)
-
2014-12-17 21:02 |
迦南 ( 路人 | Rank:14 漏洞数:11 | 我不是玩黑,我就是认真)