• 【网络安全】文件上传靶场通关(1-11关)


    博主昵称:
    博主主页面链接:博主主页传送门
    创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。
    博主座右铭:发现光,追随光,成为光,散发光;
    博主研究方向:渗透测试、机器学习 ;
    博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;


    目录

    一、简介

    二、实验准备

    三、实战

    1.第一关?? —(前端绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    2.第二关?? —(MINE类型)

    (1)看代码

    (2)尝试上传??

    (3)绕过方法

    3.第三关?? —(修改后缀名绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    4.第四关?? — (.htaccess绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    5.第五关?? —(大小写绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    6.第六关?? —(空格绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    7.第七关?? —(.绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    8.第八关?? —(::$DATA绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    9.第九关?? —(. .绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    10.第十关?? —(双写绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    11.第十一关?? —(00截断绕过)

    (1)看代码

    (2)尝试上传

    (3)绕过方法

    四、总结


    后续持续更新


    一、简介

    本次实验利用靶场为upload-labs-env

    这个靶场作为文件上传初学者是很友好的,大部分关卡是比较基础的,而且可以看源码了解思路和开发的思路对于初学者来说十分的友好,所以本次汇总一下也是为了分享更多的资料给各位粉丝们学习交流。

    二、实验准备

    首先我们需要了解什么是一句话木马,什么是小马 什么是大马,其次我们需要了解文件上传绕过方式。在前面的文章中我分享过有关文件上传漏洞的绕过方式及其原理介绍。

    链接:文件上传绕过原理

    其次我们需要准备好webshell管理工具,比如蚁剑、冰蝎等,我在这里使用蚁剑进行演示。

    最后,我们还需要burp抓包工具

    使用方法请参考文章:Burp使用与实战

    另外还需要用到010图片对比工具

    工具下载链接:010图片解析工具

    三、实战

    1.第一关 —(前端绕过)

    (1)看代码

    我们看到代码中看到了白名单,可以作为一个信息点来使用。

    (2)尝试上传

    准备好一句话木马文件

    尝试上传查看回显效果

    出现一个弹框,很明显的白名单

    那么我们尝试抓包看一下

    我们发现无法抓包,那就说明页面请求没有发送到服务器,那么很有可能是基于前端的绕过方式.

    (3)绕过方法

    前面两步说明很清楚,这个很有可能是基于前端的过滤,所以我们尝试修改前端代码进行尝试

    这里我们可以看到十存在一个前端事件,所以说这里我们可以利用代码修改删除事件进行绕过,那么我们来试一下

    这里发现成功的绕过,下面补上一张截图十需要删除的前端事件。

    我们对上传的文件进行查看,显示空白

    下面我们尝试使用hackbar插件发送一个post请求

    我们看到了phpinfo的文件,这里就进行了绕过。

    2.第二关 —(MINE类型)

    (1)看代码

    这个我们也可以看到代码中显示如果咱们的后缀名不一样,那么回显出来的信息是文件类型不正确,请重新上传。说明这是一个黑名单。

    (2)尝试上传

    上传一句话木马文件

    回显

    (3)绕过方法

    MINE类型绕过,我们看源码就可以看到过滤机制是对文件进行mine类型检测,

    那么我们可以先抓包看一下。

    将包发送到repeater模块进行重放,修改mine类型的后缀

    构造url路径查看上传文件

    成功绕过

    3.第三关 —(修改后缀名绕过)

    (1)看代码

    分析:在代码中明显的可以看到构造了一个array数组进行验证,而且后面判断回显现实的为不允许上传xxx.xxx后缀文件,说明为黑名单检测。

    (2)尝试上传

    尝试上传一句话木马

    发现回显是不允许上传,那么我们应该在怎么去绕过呢?

    有一个思路:我们可以尝试抓包,对数据包进行修改看是否上传成功

    (3)绕过方法

    抓包

    改包,将后缀php改成php2进行上传。

    发送包,这里看到上传成功。

    验证时候上传成功

    上传成功。

    4.第四关 — (.htaccess绕过)

    (1)看代码

    分析:我们能看到这里对大多数的后缀名做了限制,而且是属于黑名单范畴

    (2)尝试上传

    上传一句话木马

    回显此文件不允许上传

    那么我们这时候还是在看一下源码,主要看这里,我们发现虽然过滤了很多文件,但没有一个文件被忽略了,apache的内存在一个.htaccess特性文件,是可以利用进行绕过的。

    (3)绕过方法

    抓包

    改包

    释放包

    验证

    成功绕过。

    5.第五关 —(大小写绕过)

    (1)看代码

    分析:这里代码我们可以了解到基本上我们所用的后缀都给过滤了,然后我们怎么办呢?

    可以再看看代码的其他过滤机制,没有看到对大小写的限制,那么我们可以尝试

    (2)尝试上传

    上传一句话木马文件

    回显

    (3)绕过方法

    抓包

    改包

    释放包

    验证

    成功绕过

    6.第六关 —(空格绕过)

    (1)看代码

    (2)尝试上传

    上传一句话木马文件

    发现不允许上传,说明存在过滤,咱们之前研究过代码,看到没有限制空格绕过,那么咱们可以继续看一下是否可以绕过。

    (3)绕过方法

    抓包

    改包

    验证

    成功绕过

    7.第七关 —(.绕过)

    (1)看代码

    分析:代码中可以看到过滤机制,发现少了一项.绕过,那么咱们可以尝试一下

    (2)尝试上传

    (3)绕过方法

    抓包

    改包

    验证

    成功绕过

    8.第八关 —(::$DATA绕过)

    (1)看代码

    分析:我们来分析一下代码:发现::$DATA没有过滤,那么我们可以尝试一下

    我们来试一试

    (2)尝试上传

    还是一样的不允许上传,那么我们尝试下,看代码后分析的绕过方式

    (3)绕过方法

    抓包

    改包

    验证

    成功绕过

    9.第九关 —(. .绕过)

    (1)看代码

    分析:我们看代码中首先是删除了后缀中的点然后进行了首尾去空的操作,那么我们可以想,如果我们在后缀末尾加上一个.再加上一个空格,那么是不是属于恢复正常,那么我们再次利用点绕过的方式,应该是可以的,那么咱们来尝试一下

    (2)尝试上传

    上传一句话木马文件

    我们发现也是无法上传,说明我们需要其他方式,通过代码的分析下面尝试绕过

    (3)绕过方法

    抓包

    改包

    验证

    成功绕过

    10.第十关 —(双写绕过)

    (1)看代码

    分析:这个地方的代码主要还是后缀名称被检测到之后,直接为空,但是只执行一次,所以说,我们可以尝试双写绕过的方式

    (2)尝试上传

    虽然上传成功,但是我们验证的时候是无法查看到phpinfo文件的,

    (3)绕过方法

    抓包

    改包

    验证

    成功绕过

    11.第十一关 —(00截断绕过)

    (1)看代码

    分析:代码中有一些信息很重要,我们发现是白名单判断,但$img_path是直接拼接,因此可以利用%00截断绕过

    (2)尝试上传

    这里明显的白名单,只允许这三种类型的文件上传。那么我们来进行绕过。

    (3)绕过方法

    抓包

    改包验证,发现上传成功。

    验证

    成功绕过

    四、总结

    本次总结1-11关卡,下一篇继续分享

  • 相关阅读:
    (九)mmdetection源码解读:训练过程中训练数据的调用DataLoader
    「iOS」暑假第一周 —— ZARA的仿写
    C和C++的区别
    HTTP协议 和 HTTPS协议
    JavaScript基础语法
    服装行业数字化改革及未来趋势
    vue中的虚拟dom
    C# 将HTML转为XML
    树链剖分与线段树
    docker部署gitlab内存占用过大的解决
  • 原文地址:https://blog.csdn.net/m0_67401660/article/details/126045117