目录
文件上传漏洞
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。
漏洞成因:由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。打个比方来说,如果你使用 windows 服务器并且以 asp 作为服务器端的动态网站环境,那么在你的网站的上传功能处,就一定不能让用户上传 asp 类型的文件,否则他上传一个 webshell,你服务器上的文件就可以被他任意更改了。因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。
服务器上传文件命名规则:
- 第一种:上传文件名和服务器命名一致
- 第二种:上传文件名和服务器命名不一致(随机,时间日期命名等)
文件头欺骗:在一句话木马前面加入GIF89a,然后将木马保存为图片的格式,有时候还需要对文件进行扩充到正常图片大小。文件头欺骗可以用来绕过简单的WAF
一句话木马
在存在文件上传漏洞的网页中,黑客非常喜欢上传一句话木马,原因是一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。
常见的一句话木马
php一句话木马:
<?php @eval($_POST[value]); ?>
asp一句话木马:
<% execute(request("value")) %>
aspx一句话木马:
<%@ Page Language="Jscript" %>
<% eval(Request.Item["value"]) %>
<?php fputs( fopen('xie.php','w') , '<? php eval($_POST[xie]) ?>' ) ; ?>
将当前目录下创建xie.php文件,并且将一句话木马写入xd.php中
一句话木马原理:将一句话木马插入到脚本文件中,客户端向服务端提交控制数据,该语句将会作为触发,接收入侵者通过客户端提交的数据,提交的数据通过服务器构成完成的脚本功能语句并执行。
一句话木马的制作:
- C32Asm下做一句话,打开C32,把图片放里面,写入一句话保存
- cmd下做一句话 , copy /b 1.jpg+1.asp 2.jpg
- 右键图片,在属性->详细信息->版权内插入一句话
一句话木马过WAF: 将一句话木马代码改成jpg后缀的,然后写一个脚本文件包含这个jpg,然后用菜刀连接这个文件。
解析漏洞
解析漏洞主要说的是一些特殊文件被IIS、apache、nginx在某种情况下解释成脚本文件格式的漏洞
IIS解析漏洞
第一种 目录解析漏洞:
在IIS5.x/6.0中,在网站下建立文件夹的名字为.asp的文件夹,其目录内的任何扩展名的文件都被IIS当做asp文件来解释并执行。例如创建目录cracer.asp,那么/crecer.asp/1.jpg将被当做asp文件来执行。假设黑客可以控制上传文件夹路径,就可以不管你上传后你的图片改不改名都能拿shell了
第二种 文件名解析漏洞:
在IIS5.x/6.0中, 分号后面的不被解析,也就是说xie.asp;.jpg会被服务器看成是xie.asp。还有IIS6.0默认的可执行文件出了asp还包含这三种 .asa .cer .cdx。
第三种 畸形解析漏洞:
IIS7.0、IIS7.5和ngnix<8.03中,在默认Fast-CGI开启状况下,新建一个1.txt文件,内容为<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST['xie'])?>')?>,将文件保存成1.jpg格式,上传到服务器,假设上传路径为/upload,上传成功后,直接访问/upload/1.jpg,此时神奇的畸形解析开始发挥作用啦,我们会神奇的发现/upload目录下创建了一个一句话木马文件shell.php。
其他解析漏洞:
在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,黑客可以通过抓包,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被windows自动消除,这样也可以getshell
Ngnix解析漏洞
Nginx<8.03空字节代码执行漏洞
我们在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码
Apache解析漏洞
一:文件名解析漏洞:apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断。比如 xie.php.owf.rar .owf和.rar 这两种后缀是apache不可识别的解析,apache就会把xie.php.owf.rar解析成 xie.php 。如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个 xie.php.rara.jpg.png..(把你知道的后缀都写上去)去测试是否是合法后缀。任意不识别的后缀,逐级向上识别。
二:.htaccess文件:如果在Apache中 .htaccess 可被执行,且可被上传,那可以尝试在 .htaccess 中写入 <FilesMatch "shell.jpg"> SetHandler application/x-httpd-php </FilesMatchc> 。然后再上传 shell.jpg 的木马,这样shell.jpg 就可解析为 php 文件了
00截断:文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语言函数中,如php,处理字符串的函数中认为0x00是终止符。php<5.3.4才存在00截断漏洞
例如:网站上传函数处理XX.php%00.jpg时,首先后缀名是合法的jpg格式,可以上传,在保存文件时,遇到%00字符丢弃后面的jpg,文件后缀最终保存的后缀名为 XX.php
使用burpsuite进行包拦截,找到上传的路径,把文件名改为 xx.php .jpg ,十六进制查看,空格的十六进制代码为20,将其修改为 00 ,
文件上传漏洞结合解析漏洞,可以成功拿下网站Webshell,危害很大!!