危险函数之preg_replace函数

admin 2026-04-04 05:29:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了PHP中pregreplace函数的安全风险,重点指出当使用/e修饰符时,replacement参数会被当作PHP代码执行,从而产生代码执行漏洞。通过实验演示了如何利用该漏洞执行vardump和phpinfo等代码,并列举了其他常见危险函数。建议开发人员避免使用/e修饰符,并对用户输入进行严格过滤。 综合评分: 75 文章分类: 漏洞分析,WEB安全,代码审计,安全开发,PHP安全


cover_image

危险函数之preg_replace函数

原创

建哥聊安全 建哥聊安全

建哥聊安全

2026年4月3日 08:41 湖南

免责声明:严格禁止对任何未授权系统/网络进行扫描、攻击或入侵。 禁止制作/传播恶意程序,禁止参与任何网络犯罪。如擅自将本文实验技术用于非法用途,一切法律后果及责任由行为人独立承担,与作者无关。

危险函数之preg_replace函数

实验目的

通过本实验,掌握命令执行漏洞产生的原因和利用方法,体验命令执行漏洞的利用过程。

实验环境

·操作机:Win10 用户名:Administrator 密码:Sangfor!7890

·靶机:Apache + PHP

·实验地址:http://ip/os/preg_replace.php

实验原理

应用程序有时需要调用一些执行命令的函数,由于服务器对代码中可执行的特殊函数入口没有做过滤,并且用户能够控制这些函数中的参数时,就可以将恶意命令拼接到正常命令中,从而造成命令执行攻击。 命令执行漏洞可以分为远程命令执行(代码执行)和系统命令执行两类,常见危险函数也分为两类:代码执行函数和命令执行函数。

PHP中常见代码执行函数:

array_map()

eval()

assert()

preg_replace()

call_user_func()

$a($b)动态函数

PHP中常见系统命令执行函数:

system()

exec()

shell_exec()

passthru()

popen()

反引号”`”

实验步骤

1、登录”Attack”操作机,打开浏览器,访问http://ip/os/preg_replace.php

2、在URL后拼接”?a=var_dump(array(1,2,3)),访问http://ip/os/preg_replace.php?a=var_dump(array(1,2,3)),执行代码

3、在URL后拼接”?a=phpinfo();”,访问http://ip/os/preg_replace.php?a=phpinfo(),查看执行效果

实验总结

通过本实验,掌握preg_replace函数的利用,成功实现了代码执行,体验了preg_replace函数实现代码执行的过程。preg_replace函数的作用是搜索subject中正则匹配pattern的部分,以replacement进行替换。pattern:要搜索的模式,可以是一个字符串或字符串数组。当pattern处存在一个“/e”修饰符时,$replacement的值会被当成php代码来执行。

往期文章:

危险函数之可变函数

快检查下你服务器中间件,存不存在这个漏洞

什么!!验证码就这样破解了?

安全基线之MongDB安全配置


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:建哥聊安全 建哥聊安全 建哥聊安全《危险函数之preg_replace函数》

评论:0   参与:  0