一、概念
文件上传漏洞,也就是常说的上传木马程序,一般先传小马,通过小马上传大马
文件包含漏洞,可以读取服务器本地文件
二、文件上传
1、本地上传限制不严格,头像上传,通过修改数据包上传文件后缀,可以绕过该限制。
选择一句话木马的php文件,提示只能上传JPEG和PNG文件
抓包,将Content-Type属性修改为:image/jpeg,点击发送
解释:MIME类型用来设定某种扩展名文件的打开方式,当具有该扩展名的文件被访问时,浏览器会自动使用指定的应用程序来打开。如GIF图片MIME为Image/gCSs文件MIME类型为text/ss。上传时,程序会对文件MME类型做验证。
提示上传成功
菜刀连接
2、服务器配置不当,HTTP没有禁用PUT和OPTIONS请求方法
3、文件解析漏洞:Apche、Nginx、IIS
Apache解析漏洞
Apache对文件解析是从右到左的,由于 Apache无法解析rar和owf后缀,但能够解析php后缀,因此 Apache会将 x.php owf.rar当做php格式的文件进行解析并执行
http://www.aiyoubucuo.com/x.php.owf.rar
Nginx<8.03空字节代码执行漏洞
影响范围: Nginx0.5.0.6,0.7<=0.7.65,0.8<=0.8.37访问以下网址,服务器将把x.jpg文件当做php解析并执行
http://www.aiyoubucuo.com/x.jpg%00.php
IIS7.0/IIS7.5/ Nginx<0.8.3畸形解析漏洞
在默以 Fast-CGI开启状况下,访问以下网址,服务器将把x.jpg文件当做php解析并执行
http://www.aiyoubucuo.com/x.jpg/.php
IIS 5.x/6.0解析漏洞
目录解析:在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀为后缀的文件夹,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行
http://www.aiyoubucuo.com/x.asp/x.jpg
文件解析在IIS6.0下,分号后面的不被解析x. asp;.jpg将被当做x.asp解析并执行。
http://www.aiyoubucuo.com/x.asp;.jpg
IIS6.0默认的可执行文件有asp、asa、cer、cdx四种。
4、文件路径截断:%00截断
00截断的原理,就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。
限制条件:
0X00截断是16进制的截断,需要修改16进制的数据头,使用burp在Hex中对数据进行改写
PHP<53.29, magic_quotes_gpc=OFF
%00的使用是在路径上,不是在文件名中"a. php%00b jpg"
由于%00做了截断,所以最后服务器接收到的文件名依然还是 a. php,因为在接收的时候,就直接对url编码进行解码,然后再去接收文件,这时候的文件名就变成了a.php,后面的 b. jpg已经被截断
三、文件包含漏洞
1、概念
一些网站由于业务需求,提供文件下载功能,但如果对用户查看或下载的文件不受限制,则恶意用户就能够查看或下载任意敏感文件,如脚本代码,服务及系统配置文件等,如果得到代码可以进行代码审计,得到更多可利用漏洞直接执行代码的函数:
2、常用函数
eval()、 assert()、 system()、exec()、 shell exec()、 passthru()、 escapeshellcmd()、 pcnl_exec()等
eval():该函数把字符串按照PHP代码来计算,如常见的句话后门程序:<? php eval($_ POST[a])?>
assert():该函数与eval类似,字符串被 assert()当做PHP代码来执行;
3、PHP中常见的导致文件包含的函数:
require:找不到被包含的文件时会产生致命错误( E COMPILE ERROR),并停止脚本
include:找不到被包含的文件时只会产生-个( E waring),脚本将继续执行
require_once:与 require类似会产生警告,区别是如果文件代码已经被包含,则不会再次被包含
include once:与 include类似会产生警告,区别是如果文件代码已经被包含,则不会再次被包含
4、重要文件路径
1、Unix/liux系统:
/etc/passwd
/usr/local/app/apache2/conf/httpd.conf //apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/httpd/conf/httpd.conf //apache配置文件
/etc/my.cnf //Mysql配置文件
2、Windows系统
C:\\boot.ini //查看系统版本
C:\windows\\system32\\inetsrv\\MetaBase.xml //IIS配置文件
C:\\Program files\\mysql\\my.ini //mysql配置
C:\\Program Filed\\mysql\data\\mysql\\user.MYD //Mysql root
C:\\windows\\php.ini //php配置信息
C:\\windows\\my.ini // Mysql配置文件
禁止非法,后果自负