文件上传漏洞-uploadlabs靶场11~20关解析

简介

在现代互联网的web应用程序中,上传文件是一种常见的功能,因为它有助于提高业务效率,比如社交网站中,允许用户上传图片、视频、头像和许多其他类型的文件。然而向用户提供的功能越多,web应用受到攻击的风险就越大,如果web应用存在文件上传漏洞,那么恶意用户就可以利用文件上传漏洞将可执行脚本程序上传到服务器中,获取网站的权限,或者进一步危害服务器。
为什么文件上传存在漏洞?
上传文件时,如果服务器代码未对客户端上传的文件进行严格的验证和过滤,就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、aspx、php、jsp等格式的文件)。
会造成什么危害?
非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又称之为webshell,也可将webshell脚本称为一种网页后门,webshell脚本具有强大的功能,比如查看服务器目录,服务器中的文件,执行系统命令等。

关卡

上一篇我们介绍了1~10关,这一篇我们继续介绍11~20关卡。

GET-%00截断-Pass-11

00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到了一个字符串的结束符号。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。00截断通常用来绕过web软waf的白名单限制。
产生的条件

  • php版本小于5.3.29
  • magic_quotes_gpc = Off

最终达到的效果:

www.xxx.com/shell.jpg
www.xxx.com/shell.php%00.jpg => www.xxx.com/shell.php

我们直接查看源码:
image.png
直接burp抓包:

image.png
image.png
获得shell:
image.png

POST-%00截断-Pass-12

原理和pass-11是一样的。只是post的处理方式不一样。
查看源码:
image.png
路径变为了post的方式。
我们知道GET传惨会自动解码,post不会, 所以我们在修改包的时候需要主动去解码。
image.png
修改为:
image.png
解码:
image.png
解码后:
image.png
放包:
image.png
拿shell:
image.png

图片码-Pass-13

直接查看源码:
image.png
所以上图片码,图片码制作比较简单。需要一张真的图片, 需要一个php文件。
然后将图片和php文件组合在一起即可。
准备一张图片和一句话木马:
image.png
然后在cmd中执行:

copy 1.png /b + shell.php shell.png

image.png
image.png
接下来上传这张图片,并抓包:
image.png
可以清晰的看到码的存在。
image.png
利用文件包含获取shell:
image.png
image.png

图片码-Pass-14

这关和Pass-13一样。只需要上传图片码即可。
只是需要了解一下过来得机制即可:
image.png
这个函数的意思是:会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的。
所以操作和上一关一致。
image.png

图片码-Pass-15

看源码:
image.png
先确定是否开启php_exif模块:
image.png
exif_imagetype() 读取一个图像的第一个字节并检查其签名。
本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER[‘HTTP_ACCEPT’] 结合使用来检查浏览器是否可以显示某个指定的图像。
具体操作和13,14一致。
image.png

二次渲染-Pass-16

直接看源码:
image.png
我们还是按照13,14,15的思路进行上传:
发现没有info信息了。
image.png
二次渲染的时候把码的信息给干掉了。
怎么办呢?
把原图和他修改过的图片进行比较,看看哪个部分没有被修改。将php代码放到没有被更改的部分,再重新上传即可绕过。
使用HxD Hex Editor进行比较
下载地址:https://mh-nexus.de/en/hxd
image.png
自己搞,jpg图片容易损坏,建议试用gif尝试。
image.png
可以在没有修改的地方去插入码,二次渲染的时候就不会被干掉了。
image.png
重新上传:
image.png
温馨提示:
在找GIF图片的时候一定要记得找上传之后能够打开的,不然会制作失败。如:
image.png

条件竞争-Pass-17

查看源码:
image.png
我们看代码他是先将图片上传上去,才开始进行判断后缀名、二次渲染。如果我们在上传上去的一瞬间访问这个文件,那他就不能对这个文件删除、二次渲染。这就相当于我们打开了一个文件,然后再去删除这个文件,就会提示这个文件在另一程序中打开无法删除。
这个地方需要对并发有一定了解才行。
总体操作是,直接上传一个php文件,利用burp抓包,然后跑一个Null payloads
image.png
image.png
image.png
image.png
然后发包,用另一个浏览器一直访问shell.php地址,只要在上传的一瞬间,他还没来的及删除、修改就可以了。
image.png

白名单-图片码-Pass-18

这一关先要改一下源码,路径有问题,修改myupload.php中的如下代码:
image.png
这关是检查了后缀名,然后上传,然后在进行名字修改。这时我们只能上传图片马:
image.png
image.png
直接上传之前做好的图片码即可:
image.png

黑名单-/.-Pass-19

查看源码:
image.png
发现保存的名字参数可控
move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.
所以直接上传php文件,然后抓包,添加/. 然后绕过黑名单。
image.png
image.png
image.png
image.png

数组绕过-/.-Pass-20

查看源码:
image.png
mime类型可以抓包修改
文件名可以抓包修改
这个时候直接上传一个php 文件如何?再结合move_uploaded_file() 会忽略/.
来我们精心构造一下:
image.png
image.png
image.png
还有一种做法,就是直接图片码,但是应该不是这关的本意。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL注入漏洞文件上传漏洞是常见的Web应用程序安全漏洞,它们经常被黑客用来攻击和入侵网站。联合靶场是一个综合性的训练平台,用于模拟和演示各种安全漏洞的攻击和防御技术。 SQL注入漏洞是指攻击者通过在Web应用程序的输入字段中插入恶意的SQL代码,从而绕过应用程序的验证和过滤机制,直接操作数据库。攻击者可以通过SQL注入漏洞获取、修改或删除数据库中的数据,甚至执行任意的系统命令。为了防止SQL注入漏洞,开发人员应该使用参数化查询或预编译语句来过滤用户输入,并对输入进行严格的验证和转义。 文件上传漏洞是指攻击者通过上传恶意文件来绕过应用程序的安全机制,从而执行任意的代码或获取系统权限。攻击者可以通过文件上传漏洞上传包含恶意代码的文件,然后通过访问上传的文件来执行攻击。为了防止文件上传漏洞,开发人员应该对上传的文件进行严格的验证和过滤,限制上传文件的类型和大小,并将上传的文件存储在安全的位置。 于联合靶场,我可以介绍一些常用的靶场平台,供您进行学习和实践: 1. WebGoat:一个开源的Web应用程序,旨在教授Web应用程序安全的基本概念和技术。它包含了各种常见的安全漏洞,包括SQL注入和文件上传漏洞。 2. DVWA(Damn Vulnerable Web Application):一个专门设计用于测试和练习Web应用程序安全漏洞集合。它提供了多个漏洞场景,包括SQL注入和文件上传漏洞。 3. bWAPP(Buggy Web Application):一个有意设计存在漏洞Web应用程序,用于训练和测试安全专业人员的技能。它包含了多种常见的漏洞类型,包括SQL注入和文件上传漏洞

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miracle_PHP|JAVA|安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值