文件上传漏洞(二)iis6.0 CGI漏洞
后端校验的黑名单机制
黑名单比较危险
1、大小写绕过
2、点 空格绕过
3、NTFS文件流绕过 ::$DATA
4、.htaccess 配置文件绕过
5、双写绕过 phphp
6、别名绕过 phtml php4 php5
开发用白名单(jpg)
文件上传 白名单、黑名单
上传一个 1.abcooo
1、00截断[16进制00]
PHP的某些版本里面也代表着结束
零零截断原理 1.php终止符号.jpg => 白名单检测jpg
PHP某些版本存在00截断 PHP5.3
move_uploaded_file 移动文件
文件上传流程:
你点击上传--> 临时目录(随机)-->移动出来重命名
$ FILES['upload file']['name'] 你上传的文件名
strrpos($ FILES['upload file']['name'], 文件后缀名截取
if(in array($file ext,$ext arr) 如果文件后缀名是组里的一个
$img_path = $ GET['save_path']."/".rand(10,99).date("YmdHis").".".$file_ext
获取get传参 save_path 随机值10-99 当前的一个时间
此时如果传的是文件名是kk 会返回 kk/52202509271024.jpg 52是随机数 后续是时间
此时用burp抓包 在后面加入%00
经过上面的代码分析 会对123.php后端加上后缀
去掉后缀直接访问123.php发现 以当作代码执行(改成一句话木马...)
%00 => 16进制的00 (URL编码 16进制)
POST他是不会进行URL编码
00截断需要传16进制的00
GET传参因为会URL编码,所以%00 = 16进制的00
URL编码原理:把字符变成16进制,然后加上%
=> 核心是为了更好的传参
=> a.php?a=123%23asdad 锚点
' 27 %27
POST没有URL编码,所以不在%00,但是我们00截断要想办法得传入16进制00
在hex里改成零零截断 4444.phpa [a为61]
把61改为00
此时访问4444.php即可攻击成功
在后缀上面做文章
13、14、15 [他去检测图片]
图片马: 图片 + 木马 {黏到一起}
正常图片,传一个不正常图片他会容易产生问题
添加方法:直接复制代码放到末尾追加
在cmd里进行
copy 1.jpg/b + 1.txt 444.jpg
将文件后缀改成phtml 然后h将生成的文件上传 会发现 图片正常显示 也可进行传参
copy也可将压缩包和图片整合 将后缀改成zip 即可查看压缩包(ctf里的隐写术)
有的检测,检测头和尾巴
图 + 马 + 图
PHP可以混写(HTML+PHP )当看到PHP标识的时候才会执行phphp
<?php ?>
文件上传漏洞:能上传、能解析(解析漏洞)
图片马的方法可以藏文件,而且比NTFS文件流厉害的多
二次渲染[获得图片后,给你重新加载,然后重新保存] 上传图片马 一句话木马会消失
a.jpg 打开a.jpg 然后重新渲染图片,然后保存
gif图片去破,二次渲染,只会渲染画面部分
gif图片 (头部4行不会渲染)
直接在gif 的hex模式下 第3-4行填写一句话木马(图片崩溃就换一张 )
条件竞争
过滤有两种:
1、先检测,直接不允许上传
2、先上传,再去检测,删除
上传 -> 检测 -> 删除
检测需要时间,如果你上传的够快的,可以卡时间差,在删除之前访问到
2、马生马 => 访问一个木马,生成一个木马
检测的是上传的问题,但是如果你上传的文件,他写了一个木马,他是不会被检测的
file_put_contents(文件地址,文件内容)
file_put_contents('nf.php','<?php eval($_REQUEST[8])?>')
可以用burp 跑10000次 (no playload )会有删除不及时生成的 没有的话也可看作ddos攻击
1、00截断 (GET POST)
2、图片马(copy 1.jpg/b + 2.txt 3.jpg)
3、二次渲染(gif)
4、条件竞争
CC攻击 /DDOS 通过快速的访问网站来拖累服务器的性能
sql注入疯狂打盲注 sleep(10000)
---------------------------------------------------------------------------------------------------------------------------------
1、文件上传是个功能,任意文件上传 (漏洞)
2、我教你们的文件上传,都是以拿shell为目的
提交漏洞(项目上 有危害)
文件上传可以上传HTML文件(存储型XSS)
密码明文传输(SRC 无影响忽略[移动 高危漏洞])
XSS漏洞 => 不能调用JS
3、前端校验、后端校验
4、黑名单 or 白名单
5、绕过 [检测的时候 和 真实的使用产生不同的时候]
and 1=1 / && 1=1
6、黑名单绕过:
别名(phtml)、点、空格、NTFS文件流(::$DATA)、.htaccess(化学反应)、构造绕过(白盒)、双写绕过(强行替换删除)、大小写绕过
7、白名单绕过:
00截断(某些动态语言版本的函数存在00截断)、条件竞争(先上车 先买票)
解析漏洞:(默认开启)
上传漏洞(想办法传上.php文件)
解析漏洞(让其他后缀当作php解析)
IIS6.0漏洞 => iis(web容器 windows) 6.0是他的版本
.nf 当作asp来执行
asp.dll => 任何的文件交给他,他就会当作asp执行
asa cer cdx 会当作asp来执行 他是IIS的默认设置
(黑名单)
上传图片马 抓包改后缀(fffadasd.jpg)
把后缀改成asp (连菜刀需要改脚本类型为asp)
IIS ASP/ASPX
PHP APAHCE / NGINX
一个网站可不可能混合(asp php )
x.com/a/ (asp + IIS)
x.com/b/ (php + IIS)
x.com/c/ (php + apche)
http://59.63.166.75:8002/a/upload_file.php
什么文件被解析 什么文件不被解析是由web容器决定(可通过修改配置文件解析不同后缀名文件)
IIS6.0解析漏洞2、3:
test.asp;.jpg 他将当做asp进行解析
test.asp/123.jpg 他将当做asp进行解析(文件夹后缀为asp的任意文件都可被执行)
iis6.0三大漏洞
1.配置错误
2.分号截断
3.文件夹名影响
CGI解析漏洞 (PHP特有)
iis7.0 iis7.5 nginx 可能存在
直接在原本的访问地址后面加 /.php
PHP在连接IIS 和 NGINX的时候他是这样连接
PHP-CGI会开启本地的9000端口(拿来通信)
www.xx.com/phpinfo.jpg/asdsa.php
web容器: phpinfo.jpg
PHP-CGI .php