当前位置: 首页 > news >正文

Upload-labs 文件上传靶场

环境部署

upload-labs是一个使用PHP编写的开源靶场,专门用于学习和测试文件上传漏洞,特别是在渗透测试和CTF(Capture The Flag)竞赛中常见的场景。

c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场

更方便的windows集成环境:

Releases · c0ny1/upload-labs

按照步骤利用phpstudy搭建好环境后    访问127.0.0.1即可

Pass01

先直接上传一个php后门文件 看看什么情况

限制了上传的文件后缀

那么我们通过抓包看看  

注意: 抓包无法抓到127.0.0.1   我使用的是google的一个插件Zero Omega来解决这个问题

要改成你所用的内网IP访问该网站  但是BP设置仍然抓取127.0.0.1

在选择文件和校验的时候都没有数据包 说明是前端JS验证

刷新页面  抓取页面  也能发现相应的JS代码

采用了白名单过滤 只允许.jpg .png .gif文件上传

绕过:禁用JS绕过前端验证

绕过原理:

上传文件没有数据流量交互,表明是在线页面的程序,即仅包含前端验证程序。通过禁用JS,也把就前端JS验证程序禁用了

便可以畅通无阻的上传我们的后门木马

<?php@eval($_POST['pass']);
?>

这个图片的URL即保存的地方

直接用蚁剑连接

Pass02

第二关采用了后端认证

绕过:修改Content-type绕过后端CT验证

绕过原理:

对于上传的文件类型,只通过Content-type判断。然而该参数可以被抓包伪造绕过

抓包看看

将content-type改为image-jpeg

发现上传成功了

原来后端只验证了content-type

也是成功蚁剑连接

Pass03

这次使用了黑名单后端过滤

并且还会对上传的文件重命名

绕过: 

多个php可执行后缀绕过黑名单

绕过原理:

我们发现只过滤了php

但是别忘了我们还有许多php可执行后缀

.php3
.php4
.php5
.php7
.phps
.php-s
.pht
.phar
.phtml

上传php5后缀成功

直接蚁剑连接

Pass04

黑盒测试多种方法 没有绕过

查看源码

".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"

这么多后缀都加入了黑名单

然而我们发现一个重要的.htaccess后缀没有过滤

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能

通过上传.htaccess改变文件扩展名绕过

绕过原理:

通过修改后缀执行逻辑,使png等文件按照php程序来执行

payload1

<FilesMatch "\.png">SetHandler application/x-httpd-php</FilesMatch>

payload2

AddType application/x-httpd-php .png

注意

.htaccess文件不能起名字

这些payload都会将png文件按照php文件解析

但是本题payload2无法使用

选择payload1 先上传该htaccess文件 然后上传一个以.png为后缀的php木马

使用蚁剑成功连接

Pass05

这关把htaccess也禁用了

查看源代码 发现

没有大小写过滤的函数 xxx.PhP随便绕

绕过原理:

只过滤了php 没有过滤大小写函数,导致绕过如Php,pHP,PhP,pHp等等

Pass06

这关添加了大小写过滤

然而捡了芝麻 丢了西瓜

去空格的函数trim不见了

缺少首位去空的trim函数   通过空格绕过黑名单

绕过原理:

上传的后缀为 .php 

能够绕过黑名单

蚁剑成功连接

Pass07

缺少去除末尾点的deldot函数   通过点绕过黑名单

绕过原理:

在Windows系统上  .php.   会被识别为.php 实现黑名单绕过

访问的是空白 不过没关系 windows解析会自动识别为php文件

蚁剑成功连接

Pass08

查看代码 

没有对::DATA进行过滤  使用::DATA绕过黑名单

绕过原理:

Windows系统在解析后缀名称的时候,会把::$DATA之后的数据当成文件流处理,而不会检测后缀名

如修改为xxx.php::$data文件   解析后变成xxx.php成功绕过黑名单

访问的时候去掉::$data

成功连接

Pass09

查看源代码

未循环验证导致的绕过

绕过原理

这次从首位去空,末尾去点,去除::$data函数都有了,

但是我们发现它没有循环验证,去除首位空格,删除末尾的点,去除::$DATA,都只验证了一次。

并且在Windows系统上.php. 会被识别为.php 这实现了黑名单绕过

所以我们的绕过思路就很简单,抓包把后缀名设置为

.php. .

(注意中间有一个空格)

首先去除末尾的一个点,这时变成

.php. 

又去除末尾的一个空格,得到最终的

.php.

成功连接蚁剑

Pass10

查看源码

str_ireplace函数将所有匹配黑名单中的值的后缀全部用替换为空,这导致我们前面那些绕过都无效了,因为php的后缀没有了

双写php绕过 黑名单替换

绕过原理:

虽然php会被直接替换为空,但是仅仅过滤一次 未经过循环验证,通过双写pphphp,实现绕过

函数发现第一个php将其替换为空,剩下的p和后面的hp拼接成php实现绕过

Pass11

当我们上传文件时候发现

GET参数 任意路径保存+%00截断绕过

这个一个GET请求 我们发现URL多了一个保存路径

这意味着我们可以任意修改保存路径,同理保存文件名称文件后缀也能自己决定

准备一个图片马 即在正常图片文件中嵌入php后门

php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00

对于GET请求 URL会自动解码 通过使用%00截断后面的代码

然后访问1.php文件

蚁剑连接

Pass12

 POST参数 任意路径保存+%00解码截断绕过

绕过原理同Pass11

这次URL里面没有显示 变成了post请求  与上题目的区别是保存路径参数 从get变成了post的

抓包能发现该保存路径

路径改为888.php%00

注意:post请求不会自动解码 因此我们手动解码一下%00 变成空格

随后访问888.php  蚁剑成功连接

Pass13

图片马+文件包含漏洞绕过

图片马即包含php后门文件的图片文件

文件包含漏洞意味着我们能使用文件包含函数,该函数可以直接解析文件里面的代码,当发现<?php?>时 会使用php解析器执行里面的代码

蚁剑连接成功

同理jpg gif都成功

Pass14

第十四关加了判断文件头字符串,来判断是否符合图片的要求

因此对于图片马 我们最好是

用图片来插入后门绕过 

而不是直接将php文件改成图片后缀

同Pass13绕过

Pass15

15关同样验证图片的真实性

exif_imagetype() 读取一个图像的第一个字节并检查其签名。

本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER['HTTP_ACCEPT'] 结合使用来检查浏览器是否可以显示某个指定的图像。

真实图片插入后门绕过

Pass16

16关相较于前两关 加入了更加严格的检测  加入了二次渲染

相关函数为imagecreatefromjpeg()
二次渲染是由Gif文件或 URL 创建一个新图象。成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失,上传图片马失败

我们上次之前的payload成功 但是发现蚁剑无法连接 下载下来发现php后门不见了

后门插入未变化部分绕过二次渲染

对比两份文件  找出没有变化的部分

把后门插入在没有变化的地方

但是注意不要破坏前面的文件特征字符串

不然就会变成这样

因此必须借助工具来帮我们插入

使用010Editor 的比较功能

选取匹配的结果

插入代码

尝试多次 未绕过。。

Pass17

审计代码

条件竞争绕过

 绕过原理:

我们发现先执行1区块 这里面文件被上传了

然后执行2区块 开始过滤文件

利用条件竞争 我们能在上传的一瞬间访问该文件

抓取上传phpinfo后门的包  发送至intruder 设置无限发包

设置好资源池

点击开始攻击后

你要做的就是不断的刷新

直道出现目标

Pass18

代码审计后

发现这关同样需要条件竞争 但是无法直接上传php文件了 

必须要利用到图片马  还要文件包含解析功能

条件竞争+图片马+文件包含绕过

intruder无限发包上传图片马

不停访问图片马

Pass19

抓包我们可以看到

由于是$_POST接收 利用%00截断绕过

注意由于post请求不会自动解码  这里进行了解码

解码完不会显示出来 实际存在

成功上传

利用move_uploaded_file()特性绕过

move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.

访问成功

蚁剑连接成功

Pass20

本关利用数组绕过

检测的是jpg

蚁剑成功连接

http://www.dtcms.com/a/442051.html

相关文章:

  • 江苏省网站备案查询系统天津做网站找津坤科技专业
  • 虚幻版Pico大空间VR入门教程 05 —— 原点坐标和项目优化技巧整理
  • AI绘画新境界:多图融合+4K直出
  • 云图书馆平台网站建设方案柴沟堡做网站公司
  • 第67篇:AI+农业:精准种植、智能养殖与病虫害识别
  • GitPuk入门到实战(5) - 如何进行标签管理
  • 特征工程中平衡高频与低频数据的权重分配试错
  • 做网站需要买企业网站icp备案
  • 兰亭妙微QT软件开发经验:跨平台桌面端界面设计的三大要点
  • 大数据工程师认证项目:汽车之家数据分析系统,Hadoop分布式存储+Spark计算引擎
  • 【AI4S】DrugChat:迈向在药物分子图上实现类似ChatGPT的功能
  • 构建基于Hexo、Butterfly、GitHub与Cloudflare的高性能个人博客
  • 自动驾驶中的传感器技术64——Navigation(1)
  • RAG技术全栈指南学习笔记------基于Datawhale all-in-rag开源项目
  • 哪里有免费服务器南京seo域名
  • 网站公众号建设工具中国建筑集团有限公司有几个局
  • K230基础-几种图像处理方式
  • 鸿蒙NEXT网络管理:从“能用”到“智能”的架构演进
  • UE HTML5开发一:构建引擎以及项目发布踩坑
  • DaYe-PhotoStudio-2 v2.0.0 安装教程(64位/AMD64)详细步骤
  • 【计算机视觉】分水岭实现医学诊断
  • SAP HANA2.0数据库升级实录
  • Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)
  • 多功能集成工具软件,图片音视频处理一体化
  • 大型网络建站公司响应式网站的意义
  • linux使用yum安装数据库
  • php-cve篇(CVE-2019-11043CVE-2012-1823)
  • PyTorch, TensorFlow, FastAPI, LangChain, Hugging Face深度学习框架
  • 单片机学习中的一些简单总结
  • icp备案域名购买seo品牌优化