0

0

文件上传如何触发php代码执行_文件上传触发php代码执行方法【注意】

雪夜

雪夜

发布时间:2025-12-23 18:11:02

|

430人浏览过

|

来源于php中文网

原创

上传文件被当作PHP解析可致远程代码执行,常见路径有五:一、绕过后缀检查上传含代码的伪装文件;二、Apache下用.htaccess强制解析;三、Nginx CVE-2013-4547路径解析漏洞;四、PHAR反序列化利用;五、IIS短文件名绕过。

文件上传如何触发php代码执行_文件上传触发php代码执行方法【注意】

如果上传的文件被服务器当作PHP脚本解析并执行,则可能造成远程代码执行风险。以下是实现该行为的常见技术路径:

一、上传含PHP代码的文件并绕过扩展名检查

部分应用仅校验文件后缀名,未验证文件内容或MIME类型,攻击者可将PHP代码保存为看似合法的图片文件(如.jpg),再通过服务端配置缺陷触发解析。

1、使用文本编辑器创建文件,写入,保存为shell.jpg

2、在上传表单中选择该文件,同时使用抓包工具(如Burp Suite)拦截请求。

立即学习PHP免费学习笔记(深入)”;

3、修改HTTP请求中Content-Disposition字段的filename值,将shell.jpg改为shell.php

4、若服务端仅依赖前端或简单后缀白名单,该请求可能成功上传并生成可访问的PHP文件。

二、利用Apache解析漏洞(.htaccess覆盖)

当目标使用Apache且允许用户上传.htaccess文件时,可通过自定义规则强制特定扩展名按PHP模块解析。

1、构造内容为AddType application/x-httpd-php .jpg.htaccess文件。

2、上传该文件至Web可写目录(如/uploads/)。

3、上传另一张含PHP代码的图片文件,命名为test.jpg

4、访问http://target.com/uploads/test.jpgApache将按PHP方式解析并执行其中代码

三、利用Nginx文件名逻辑解析漏洞(CVE-2013-4547)

Nginx在处理带空格和斜杠的文件路径时存在解析歧义,可使非PHP文件被当作PHP执行。

1、准备含PHP代码的文件,命名为shell.jpg

2、上传后,构造URL访问:http://target.com/uploads/shell.jpg%20/1.php

MVM mall 网上购物系统
MVM mall 网上购物系统

采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压

下载

3、Nginx将忽略%20/1.php部分,但将shell.jpg交由后端PHP-FPM处理。

4、PHP-FPM默认不校验原始请求路径,直接执行shell.jpg中的PHP代码

四、上传用户可控的PHAR文件并触发反序列化

当应用存在未过滤的反序列化点且启用phar://协议时,上传恶意PHAR可间接执行代码。

1、使用PHP构建PHAR文件,在stub中嵌入__HALT_COMPILER();,并在meta-data中注入恶意反序列化对象。

2、设置PHAR文件后缀为.jpg,并禁用签名以绕过校验。

3、上传该文件至服务器,获取其可访问路径(如/uploads/malicious.jpg)。

4、在存在unserialize()调用的功能点中,传入phar://./uploads/malicious.jpg作为参数。

5、PHP将解析PHAR并触发反序列化链中的__destruct()等魔术方法

五、利用IIS短文件名特性结合解析顺序

IIS在启用短文件名功能时,会为长文件名生成8.3格式别名,配合特定解析顺序可导致PHP文件被误识别为静态资源后仍被解析。

1、上传shell.php,确认其短文件名为shell~1.php

2、尝试访问http://target.com/uploads/shell~1.php,观察是否返回PHP执行结果。

3、若IIS配置将.php映射至PHP-CGI且未禁用短名,该请求将直接交由PHP引擎处理。

4、即使上传目录无直接执行权限,短文件名仍可能绕过路径级限制

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2644

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1635

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1513

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1418

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1448

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.8万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号