首页 神兵利器正文

上传网站木马拿到高管权限(非常强!)

欲儿 神兵利器 2020-03-23 412 0

转载:https://blog.csdn.net/Auuuuuuuu/article/details/83927994

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

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

我这里为了方便,就下载了靶主已经集成配置好的环境进行本地搭建。地址:github.com/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。

再次上传

成功写入


参考链接:  www.waitalone.cn/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-2015-2348

move_uploaded_file() 00截断,上传webshell,同时自定义保存名称,直接保存为php是不行的
发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过:

构造

或者

均可绕过


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




参考链接:github.com/LandGrey/upload-labs-writeup

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论