知名网站欣赏,宁波公司网站建立,seo推广是什么,网站seo站外优化目录
漏洞原理
影响版本
漏洞复现 漏洞原理
CGI#xff1a;是一种协议#xff0c;定义了web服务器传递的数据格式。
FastCGI#xff1a;优化版的CGI程序
PHP-CGI#xff1a;PHP解释器#xff0c;能够对PHP文件进行解析并返回相应的解析结果
PHP-FPM#xff1a;Fas…目录
漏洞原理
影响版本
漏洞复现 漏洞原理
CGI是一种协议定义了web服务器传递的数据格式。
FastCGI优化版的CGI程序
PHP-CGIPHP解释器能够对PHP文件进行解析并返回相应的解析结果
PHP-FPMFastCGI进程管理程序
当Nginx得到一个用户请求时首先对url进行解析进行正则匹配如果匹配到以.php后缀结尾的文件名会将请求的PHP文件交给PHP-CGI去解析。其中处理模块如下
location ~ \.php$ {root html;include fastcgi_params;fastcgi_pass IP:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;fastcgi_param DOCUMENT_ROOT /var/www/html;
}
以.php结尾的文件都会交给该模块处理其中fastcgi_pass就是Nginx与PHP-FPM之间的媒介通过ipport的方式将请求转发给PHP解释器
CVE-2013-4547漏洞是由于非法字符空格和截止符导致Nginx在解析URL时的有限状态机混乱导致攻击者可以通过一个非编码空格绕过后缀名限制。假设服务器中存在文件‘123.png 则可以通过访问如下网址让服务器认为123.png 的后缀为php
http://192.168.146.1/123.png \0.php从代码层面来说我们请求的url中123.png[0x20][0x00].php正好与location模块中的.php相匹配但进入该模块后Nginx确认为请求的文件名是123.png 就设置其为script_name的值交给CGI进行解析最终造成解析漏洞
想象一下你有一个商店Nginx服务器这个商店里有很多商品网页文件其中一些是特殊的商品PHP文件需要特别的售货员PHP-FPM来处理。正常情况下只有当顾客用户要求购买特殊商品时请求.php文件才会叫来特别的售货员。
但是商店Nginx在检查顾客想要购买的商品名时有个漏洞。如果有人攻击者在商品名里加了些奇怪的字符比如一个看不见的空间空格字符和一个特殊的结束标记空字符商店就可能会搞混。
比如攻击者想要买一件叫“123.png ”注意这里商品名末尾有个空格的普通商品但他却假装这是件特殊商品于是在商品名后面加上了“.php”。就像这样“123.png [空格][空字符].php”。由于商店的检查系统有漏洞它可能会误以为这是一件特殊商品于是就叫来了特别的售货员PHP-FPM来处理。 影响版本 Nginx 0.8.41 ~ 1.4.3 Nginx 1.5.0 ~ 1.5.7 漏洞复现
进入vulhub项目对应的目录cd vulhub-master\nginx\CVE-2013-4547
编译容器“docker-compose build”
启动Docker容器输入命令“docker-compose up -d”。
查看容器状态输入命令“docker ps”并查看对应容器ID。
进入容器输入命令“docker exec -it 容器id /bin/bash”。 利用攻击主机浏览器访问http://靶机ip:8080 利用该图片上传页面上传一个图片webshell代码如下
GIF98A
?php phpinfo();? 成功上传写一遍2021的burp抽风了下面改为用1.7的老版本了 访问上传的图片马可以正常访问 使用0x00截断将图片马解析为PHP文件访问该url并抓包修改192.168.2.110:8080/uploadfiles/1.png%20a.php
原始数据包如下 a作为占位符将%20删除后%20需要改成空格不然hex把%20也转了进入Hex中把表示a的61修改为00最后发送请求 最终数据包如下 按照上述修改后Nginx收到的请求就变为了http://192.168.146.134/uploadfiles/phpinfo.png \0.php使得png被解析为了PHP