upload-labs通关攻略教程【1-11关】
upload-labs通关攻略教程【12-18关】
文章目录
- 文件上传
-
- 概述
- 文件上传漏洞测试流程
- 注意
- client check
-
- 方法:
- MIME type(服务端验证通过)
-
- 小知识介绍
- 方法:
- getimagesize(php中用来判断目标文件是否为图片)
-
- 思路:
- 方法(图片木马的制作):
- 解析漏洞
-
- IIS6.0【web服务器】解析漏洞
-
- 注意
- IIS6.0特性
- 练习1
- 练习2
- CGI解析漏洞
-
- 练习
文件上传 概述 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被
webshell
【WebShell
是一个网站的后门,也是一个命令解释器,不过是以Web 方式(HTTP 协议)通信(传递命令消息),继承了Web
用户的权限。WebShell
本质上是服务器端可运行的脚本文件,后缀名为.php/.asp/.aspx/.jsp
等,也就是说WebShell
接受来自于Web
用的命令,然后在服务器端执行。它的分类包括大马和小马,需要配合中国菜刀或中国蚁剑使用】,从而通过对该恶意文件的访问来控制整个web
后台。所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
- 验证文件类型、后缀名、大小;
- 验证文件的上传方式;
- 对文件进行一定复杂的重命名;
- 不要暴露文件上传后的路径;
- 等等…
2.尝试上传不同类型的“恶意”文件,比如
xx.php
文件,分析结果;3.查看
html
源码,看是否通过js
在前端做了上传限制,可以绕过;4.尝试使用不同方式进行绕过:黑白名单绕过/
MIME
类型绕过/目录0x00
截断绕过等;5.猜测或者结合其他漏洞(比如敏感信息泄露等)得到木马路径,连接测试。
注意
move_uploaded_file
为php
上传专用函数。php
、phps
、php3
、php4
、php5
、phtml
等这些后缀会被解析为php
文件来执行。asp
、asa
、cer
、aspx
这些后缀会被解析为jsp
来执行。- windows会自动去除后缀末尾的空格和点。
- 靶场中第十关构建文件后缀这种方法很难,一般需要获得源码。
- 获得源码的途径:
github
、CMS
魔改、源码泄露、官方提供、没有源码但是直到公司的开发风格、建模强测【最难】。
【常见web漏洞|文件上传漏洞+解析漏洞详解】
文章图片
1.按F12键打开开发者工具;
文章图片
2.上传文件是就会调用一次
onchange
,看上传文件是否符合要求,同时点击右键查看源码。 文章图片
3.该操作属于在前端的操作,很容易绕过,即改变
onchange
后面的要求,即可成功上传我们想要上传的文件。 文章图片
4. 客户端检测不建议关闭
JS
,有的网上传功能需要用到JS
。MIME type(服务端验证通过) 小知识介绍
MIME多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio,图像image等,后面定义具体的种类。常见的MIME类型,比如:
超文本标记语言文本:
.html,.html text/html
普通文本:
.txt text/plain
PTF文本:
.rtf application/rtf
GIF图形:
.gif image/gif
JPEG图形:
.ipeg,.jpg image/jpeg
方法:
1.分别新建一个
.jpg
文件和.php
文件(新建一个.txt
文件,保存一句话木马,比如
,然后修改文件后缀为.php
即可);2.先上传
.jpg
文件,用burp抓包,复制符合要求的content type
;3.随后上传
.php
文件,使用burp抓包,发送到repeater
,将符合要求的content type
替换了.php
文件中的content type
,点击render
一栏,即可发现一句话木马上传成功。getimagesize(php中用来判断目标文件是否为图片) 思路:
使用
xxd
(Linux
命令之xxd
命令主要用来查看文件对应的十六进制形式,也可以讲文件对应的十六进制形式输出到一个指定的文件。使用此命令所支持的特有选项,亦可以以二进制的形式查看文件)查看十六进制的第一行数据,可发现后缀为.png
的图片前几个字符为8950 4e47
,因此可通过前几个字符来判断是否为后缀.png
的图片,同时我们可以伪造一张图片,保证十六进制数据的前几个字符为8950 4e47
,在数据中插入一些恶意代码,从而实现getimagesize
的绕过。方法(图片木马的制作):
本质: 在图片的数据后面加入一句话木马;由于php判断目标文件是否为图片时判断图片对应的十六进制形式的第一行数据,所以将木马加在数据的最后面可以不被识别出来。
方法: 在
cmd
命令行中输入copy/b ai.png+muma.php ccc.png
,即可在相对应的文件夹中生成一个ccc.png
的图片木马。解析漏洞 IIS6.0【web服务器】解析漏洞 注意
- 文件上传是通过方法上传,解析漏洞是让文件当做PHP来执行,两者之间界限不明显。
IIS => asp aspx
apache => php jsp
nginx => php
- 一台服务器上面可能搭建多个网站、多种环境,看到PHP文件 ,觉得是个PHP的站,但这个站也可以解析其他语言。
- 这两种错误页面均为
IIS
服务器页面,或者抓包数据包回显来查看web容器。
文章图片
文章图片
ASP
一句话木马
IIS6.0
除了将ASP
后缀当做ASP
进行解析的同时,当文件后缀名字为.asa
、.cer
、.cdx
也会当做asp
去解析,这是因为IIS6.0
在应用程序扩展中默认设置了.asa
、.cer
、.cdx
都会调用asp.dll
。
文章图片
文章图片
IIS 6.0
在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:【IIS5.1
和IIS7.5
无此漏洞】
test.asp; .jpg
他将当做asp
进行解析 【分号代表语句结束】
test.asp/123.jpg
他将当做asp
进行解析
1.查看源码,利用
IIS6.0
解析漏洞的第一个特性,我们知道asa
等后缀是被解析为asp
执行的,且asa
在白名单中,因此我们上传一个文件内容为
的木马文件,其中文件后缀为asa。文章图片
2.上传成功后,使用菜刀连接,目录
C:\inetpub\wwwroot\a\image\flag
下获得flag
。文章图片
练习2
利用
IIS6.0
解析漏洞的第二个特性,直接将写有asp
一句话木马的文件后缀修改为test.asp;
.jpg
即可直接上传成功,上传成功后只用菜刀连接即可获得flag。CGI解析漏洞
Nginx
【web服务器】默认是以CGI
的方式支持PHP
解析的,普遍的做法是在Nginx
配置文件中通过正则匹配设SCRIPT_FILENAME
。- 当访问
www.xx.com/phpinfo.jpg/1.php
这个URL
时,$fastcgi_script_name
会被设置“phpinfo.jpg/1.php”
,然后构造成SCRIPT_FILENAME
(绝对路径)传递给PHP CGI
- 如果开启了
cgi.fix_pathinfo=1
选项(这个默认值就是1,所以没有设置过就是开启),那么就会触发在PHP中的如下逻辑:PHP
会认为SCRIPT_FILENAME
(绝对路径)是phpinfo.jpg
,而1.php
是PATH_INFO
,所以就会phpinfo.jpg
作为PHP
文件来解析了. - 所以说我们只需要在正常的
.jpg
后面加/.php
就可以成功的绕过解析 - 这不是
Nginx
特有的漏洞,在IIS7.0
、IIS7.5
、Lighttpd
等Web
容器中也经常会出现这样的解析漏洞
上传一个
php
的图片马,上传成功使用蚁剑连接时,需要在网址后添加/.php
,即http://zmie8016.ia.aqlab.cn//Pass-23/upload/123.jpg/.php
,使用蚁剑直接连接图片马即可获得flag。推荐阅读
- web安全|网络安全之文件包含漏洞总结
- 网络安全|概述-文件上传漏洞(一)-网络安全
- 萌新自学笔记|解析漏洞和文件包含漏洞
- 安全相关|跨站脚本攻击详解
- 大数据|零零信安(0.zone攻击面查询和收敛平台——攻防演练神器)
- 渗透蓝队|蓝队应急响应之Windows篇
- 网络安全|k8s系列 之 容器安全pod安全 集群安全
- 网络安全|网络安全事件收集,分析
- 网络安全|网络安全与网站安全及计算机安全(如何下载到各版本Kali Linux计算机操作系统)