WEB安全
00-HTTP协议
01-前端基础【HTML】
02-前端基础【CSS】
03-后端基础【PHP速通】
04-后端基础【PHP面向对象】
05-MySQL基础操作
06-前后端联动【代码练习】
07-SQL注入
08-SQL注入 Labs
09-跨站脚本攻击【XSS】
09-XSS Labs
10-CSRF
11-SSRF
12-XML 外部实体注入【XXE】
13-代码执行漏洞
14-命令执行漏洞
15-文件包含漏洞
16-文件上传漏洞
17-反序列化漏洞
18-业务逻辑漏洞
19-未授权访问漏洞集合
20-跨源资源共享【CORS】
21-SSTI模板注入
22-并发漏洞
23-点击劫持【Clickjacking 】
24-请求走私
25-路径遍历
26-访问控制
27-身份验证漏洞
28-WebSocket
29-Web缓存中毒
30-HTTP 主机头攻击
31-信息泄露漏洞
32-原型污染
33-API概述
34-API分类类型
35-API交换格式
36-API身份验证
37-API常见漏洞
38-crAPI靶场
39-JWT
40-DVGA靶场
41-服务器端参数污染
42-API Labs
43-OAuth Labs
44-GraphQL API Labs
45-JWT Labs
46-小程序抓包
47-云存储
48-对象存储OSS
49-存储桶
50-存储桶漏洞
51-STS访问OSS
-
+
13-代码执行漏洞
浏览
1
## 定义 代码执行漏洞指攻击者能够通过构造恶意输入,让目标系统(如 Web 应用、服务器)执行非预期的代码(如系统命令、脚本代码等),从而控制目标系统、窃取数据或破坏服务。 代码执行漏洞的本质是:应用程序将用户可控的输入直接作为 “代码” 执行,而未进行严格的过滤和验证。 ## 工作原理 代码执行漏洞通常发生在处理用户输入的代码中,当应用程序未正确验证、过滤或限制用户输入,并将其作为可执行代码的一部分时,攻击者可以注入恶意代码,诱使系统执行这些恶意代码,从而达到控制目标系统的目的。 例如,在PHP中,如果使用`eval()`函数执行用户输入的内容,就可能导致代码执行漏洞。假设有一个简单的PHP脚本: ```php <?php $code = $_GET['code']; eval($code); ?> ``` 攻击者可以通过构造恶意的URL参数,如`code=phpinfo();`,来执行任意代码。 在php中常见函数有:**eval()、assert()、preg_replace()、create_function()、array_map()。 ** ## 函数解析 ### preg_replace 带 `e` 修饰符 → **替换内容会被当作 PHP 代码执行** 无 `e` 修饰符 → 普通字符串替换,无风险 ```php echo preg_replace("/php/", "Java", "I love php"); // 输出:I love Java ``` ```php <?php // 代码存在漏洞:e修饰符 + 参数可控 $code = $_GET['code']; // 攻击者可控参数 preg_replace("/test/e", $code, "test"); ?> ``` ```php ?code=testphpinfo() ?code=system('whoami'); ``` 函数开启了 **`e` 修饰符**; **替换内容 / 正则参数用户可控**(攻击者可以传入恶意代码); 服务器直接执行可控的恶意代码,触发 **RCE 远程代码执行**; 该漏洞仅存在于 **PHP < 5.5.0** 版本(5.4 废弃,5.5 彻底移除)。 ### create_function() **作用**:动态创建一个**匿名函数**(没有函数名的临时函数); **本质**:底层将传入的**代码字符串**直接拼接成 PHP 函数体并执行; **版本状态**: - PHP 4/5/7 全版本支持; - **PHP 7.2.0 官方废弃**; - **PHP 8.0.0 彻底移除**(无法使用)。 `create_function()` 会自动把代码拼接成一个匿名函数: ```php // 创建一个加法匿名函数 $func = create_function('$a,$b', 'return $a+$b;'); // 调用函数 echo $func(1,2); // 输出 3 ``` ```php <?php // 用户可控参数 $code = $_GET['code']; // 危险用法:将用户输入传入函数体 create_function('$name', "echo 'Hello ' . \$name; $code;"); ?> ``` ```php ?code=phpinfo();// ``` ## 危害 代码执行漏洞的危害主要包括: - 获取服务器权限:攻击者可以完全控制目标服务器,执行任意系统命令。 - 窃取敏感数据:攻击者可以访问和窃取服务器上的敏感数据,如数据库凭据、用户信息等。 - 写入恶意文件:攻击者可以在服务器上写入恶意文件,如后门、木马等,进一步扩大攻击范围。 - 植入恶意软件:攻击者可以在目标系统上安装恶意软件,如勒索软件、加密货币挖掘程序等。 ## 常见场景 代码层过滤不严:开发人员在编写代码时,未对用户输入进行充分的验证和过滤,导致恶意用户可以通过构造恶意代码来执行任意代码。 系统的漏洞造成代码注入:例如,某些系统漏洞可能导致攻击者通过特定的输入方式执行任意代码。 调用的第三方组件存在代码执行漏洞:如某些第三方库或框架中存在代码执行漏洞,攻击者可以通过这些漏洞来执行任意代码。 ## 防范措施 核心原则:禁止用户输入直接参与代码执行,若必须使用,需严格过滤和隔离。 - 输入验证和过滤:对所有用户输入进行严格的验证和过滤,确保用户输入符合预期的格式和类型,避免恶意输入被执行。可以采用白名单验证、正则表达式匹配等方式。 - 避免使用危险函数:尽量避免在代码中使用可能导致代码执行漏洞的危险函数,如PHP中的`eval()`、`assert()`等。 - 使用安全的API或库:使用安全的API或库来执行系统命令,例如使用`escapeshellarg()`函数来处理命令参数。 - 及时更新和修补系统漏洞:保持系统和应用程序的最新状态,及时应用安全更新和补丁,以修复已知的漏洞和缺陷。 - 部署安全防护设备:在关键的网络节点上部署防火墙、入侵检测系统等安全防护设备,可以有效监测和阻断恶意流量,防止攻击者利用代码执行漏洞进行攻击。
毛林
2026年11月15日 18:27
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~