首页 > 其他分享 >upload靶场总结1-11客户端验证和文件后缀验证

upload靶场总结1-11客户端验证和文件后缀验证

时间:2023-05-24 16:46:23浏览次数:46  
标签:11 文件 文件名 验证 upload htaccess ini php 上传

第一关JS校验

利用文件上传js前端的后缀名检测来进行检测

后端并没有对文件进行检验

上传文件方法

1.关闭前端的js

image-20230321173315964

2.burp抓包 先上传允许上传的文件,然后抓包后修改上传文件的后缀

image-20230321173625089

image-20230321173820589

image-20230321173846162

3、将网站源码复制下来,放到本地,然后将js代码删除。

先查看网页源代码然后复制粘贴到本地文本文件,将文件名后缀改为html,用vscode打开删除js校验的代码

若是直接打开则能看到文件上传还是存在

image-20230321182955684

但是我们并没有上传的目的地址

回到原先正常的页面,上传一个正常的照片,从开发者工具网络中

image-20230321184349788

请求地址就是我们需要上传的地址

修改我们的代码文件action 这个action是告诉他这个图片提交给谁,因为这个源代码中没有,那我只好给它整一个

image-20230321184612370

保存后以HTML浏览器打开

image-20230321190513275

上传成功

第二关服务端(后端)验证

一如既往burp抓包

漏洞描述:只检测 content-type 字段导致的漏洞。(后端利用 PHP 的全局数组$_FILES()获取上传文件信息)

利用方法:修改 content-type 字段的值为图片格式。

image-20230321190935328

常用 content-type 字段:

image/jpeg :jpg 图片格式

image/png :png 图片格式

image/gif :gif 图片格式

text/plain :纯文本格式

text/xml : XML 格式

text/html : HTML 格式

image-20230321191424895

上传成功

image-20230321191314357

第三关文件名后缀校验(黑名单绕过)

image-20230321191721388

由代码可见,获取文件后缀名后,进行判断有些是不能上传的,但是这哥们明显没有将所有危险文件都deny

特殊文件名绕过: .php3 .php4 .php5 .phtml .phtm .phps .phpt .php345

image-20230321191955075

上传成功,页面回显访问回显路径

image-20230321192024651

因为上传上去的文件名会改变,但是在数据包(burp)中有回显(实战中可能没有),所以我们还是可以访问的

上传成功

注意

要在apache的httpd.conf中有如下配置代码:AddType application/x-httpd-php .php .phtml .phps .php5 .pht,如果不配置他是无法解析php5代码的,访问的时候就是一个空白页

配置过程

image-20230321192234529

打开配置文件---打开httpd.conf

存疑我没找到

第四关文件名后缀校验(配置文件解析控制)

image-20230321193326767

黑名单长到心碎

但可

以允许上传.htaccess 文件。

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

利用方法:上传.htaccess 解析文件,利用其配置,将白名单文件的类型解析成php 文件类型。

上传.htaccess 文件 内容如下:(将服务器上的 1.jpg 文件解析成 php 文件,这里文件可以自由配置)

<FilesMatch "1.jpg">

SetHandler application/x-httpd-php

</FilesMatch>

再上传一个一句话木马,文件名为 1.jpg,依旧访问 1.jpg,但其会以 php形式显示

注意.htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess或者其他的什么名字是不可以的,无法解析。在实战中有可能上传上去这个文件会被自动重命名,被重命名了就不可以了。

如果以上操作都弄好了,还是出不来,还是去改phpstudy配置文件,其他选项菜单--打开配置文件---httpd.conf

img

箭头指向位置一开始none,改为all保存,重启phpstudy,就可以了。

第五关

image-20230321200557441

很好他把上一关学到的htaccess禁用了

​ $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".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");

利用方法:

(1)使用大小写绕过.htaccess (网上有这个方法,但我看了看我的这个版本的源码,它给转化了)

image-20230321201133766

真的难受兄弟

(2)利用.user.ini 配置文件

.user.ini。它比.htaccess 用的更广,不管服务器是 nginx/apache/IIS,当使用 CGI/FastCGI 来解析 php 时,php 会优先搜索目录下所有的.ini 文件,并应用其中的配置。类似于 apache 的.htaccess,但语法与.htacces 不同,语法跟 php.ini 一致。

image-20230321201446355

php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。

但是想要引发 .user.ini 解析漏洞需要三个前提条件

  • 服务器脚本语言为PHP
  • 服务器使用CGI/FastCGI模式
  • 上传目录下要有可执行的php文件
CGI

[公共网关接口](https://baike.baidu.com/item/公共网关接口/10911997)(Common Gateway Interface,CGI)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与[浏览器](https://baike.baidu.com/item/浏览器/213911)进行交互,还可通过数据API与[数据库服务器](https://baike.baidu.com/item/数据库服务器/613818)等外部数据源进行[通信](https://baike.baidu.com/item/通信/300982),从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。

FastCGI

快速通用网关接口**(**Fast** **C**ommon **G**ateway **I**nterface/**FastCGI**)是一种让交互程序与Web服务器通信的协议。FastCGI是早期[通用网关接口](https://zh.wikipedia.org/wiki/通用网关接口)(CGI)的增强版本。

FastCGI致力于减少[网页服务器](https://zh.wikipedia.org/wiki/網頁伺服器)与[CGI](https://zh.wikipedia.org/wiki/通用网关接口)[程序](https://zh.wikipedia.org/wiki/计算机程序)之间交互的开销,从而使[服务器](https://zh.wikipedia.org/wiki/伺服器)可以同时处理更多的网页请求。

以上全是互联网产物

上传文件 .user.ini,内容为: auto_prepend_file=1.jpg

.user.ini文件里的意思是:所有的php文件都自动包含1.jpg文件。.user.ini相当于一个用户自定义的php.ini

然后在复制图像地址后,用蚁剑访问将文件名改为readme.php

3、这关其实也可用 php. . 点空格点 绕过上传(如下图)

image-20230321202830051

第六关文件名后缀校验(大小写绕过)

这一关同样是后端黑名单,同时过滤掉.htaccess和.ini。但是没有使用strtolower()函数,可以使用大小写绕过黑名单

把.php 格式改为 .Php 上传上去之后,就会自动解析为.php.

大小写绕过原理:

Windows 系统下,对于文件名中的大小写不敏感。例如:test.php 和 TeSt.PHP 是一样的。

Linux 系统下,对于文件名中的大小写敏感。例如:test.php 和 TesT.php 就是不一样的

image-20230321203609163

image-20230321203632655

第七关文件名后缀校验(空格绕过)

漏洞描述:对上传的文件名未做去空格的操作->trim()

Windows 系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。

利用方法:burp 抓包,修改对应的文件名 添加空格

image-20230321204200779

上传成功

image-20230321204229400

第八关文件名后缀校验(点号绕过)

漏洞描述:对上传的文件后缀名未做去点.的操作 ->deldot()过滤文件名末尾的.

利用 Windows 系统下,文件后缀名最后一个点会被自动去除。

利用方法:文件后缀名为 .php.

image-20230321204740100

上传成功

image-20230321204812903

第九关 文件名后缀校验(::$DATA 绕过)

漏洞描述:对上传的文件后缀名没有做去::$DATA 处理

image-20230321205341703

这个关卡的代码没有这一行 因此我们可以利用::$DATA后缀

Windows 系统下,如果上传的文件名为 1.php::$DATA 会在服务器上生成一个

1.php 的文件,其中内容和所上传文件内容相同,并被解析。

利用方法:上传带有一句话木马的文件,其文件名为 1.php::$DATA

image-20230321205517276

但是直接按照路径打开

image-20230321205651327

把::$data 删掉

image-20230321205722581

成功上传

也就是说用蚁剑连接的时候也要url中删除::$data

第十关文件名后缀校验(拼接绕过)

漏洞描述:将文件名进行过滤操作后,将文件名拼接在路径后面,所以需要绕过前面的首尾去空以及去点。

利用方法:上传文件名为 .php. .(点+php+点+空格+点)

image-20230321210139342

上传成功

image-20230321210209781

第十一关文件名后缀校验(双写绕过)

漏洞描述:利用 str_ireplace()将文件名中符合黑名单的字符串替换成空

利用方式:利用双写黑名单字符,对字符串的一次过滤后拼接出 php,文件名.pphphp

<?php
echo str_ireplace("WORLD","Shanghai","Hello world!");
?>
把字符串 "Hello world!" 中的字符 "WORLD"(不区分大小写)替换成 "Shanghai":

image-20230321211306857

image-20230321211449959

上传成功

image-20230321211558059

标签:11,文件,文件名,验证,upload,htaccess,ini,php,上传
From: https://www.cnblogs.com/vaneshadow/p/17428796.html

相关文章

  • SQL_lab总结11-20关
    第十一关现在为post类型抓包后发到repeater模块抓包后找注入点和闭合方式单引号闭合uname接下来开始尝试测试列数目由此可见有字段数只有2然后进行联合注入当然报错注入也可第十二十三十四关和第十一关操作相同,但第十二关闭合为")十三关为')十四关为"十五关布尔......
  • LeetCode 98. 验证二叉搜索树
    classSolution{public:vector<int>dfs(TreeNode*root)//依次返回是否是二叉搜索树,最大值最小值{vector<int>res{1,root->val,root->val};if(root->left){autol=dfs(root->left);res[1]=max(res......
  • 直播app开发,基于van-uploader封装的文件上传图片压缩组件
    直播app开发,基于van-uploader封装的文件上传图片压缩组件1、调用<template>  <div>    <compress-uploaderv-model="fileList":compressSwitch="true":quality="0.5":maxCount="3"/>  </div></template> <......
  • 百度WebUploader中实现文件上传下载的三种解决方案(推荐)
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • upload-labs靶场第10关
    经过查看源码很多文件格式都被禁掉了提示所以我们要尝试是否是循环验证循环验证就是没有进行二次验证或者多次验证只验证了一次但是加两个点或者加多个空格这样就只会检测到一次就只会删除一个剩下的就可以上传进去上传文件进行抓包查看完成......
  • upload-labs靶场第9关
    因为是白盒测试可以看到前端代码所以我们知道没有禁用掉字符::$DATA如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名上传文件进行抓包修改后缀查看完成......
  • upload-labs靶场第8关
    这关是尝试在文件后面加点因为被禁用了很多文件名但是没有禁用后面加点这一项那我们就可以进行尝试在文件后面加点经过尝试直接在文件后面加点会被自动删除掉所以要抓包进行修改上传图片进行抓包查看完成......
  • upload-labs靶场第16关
    查看源码注意到这样查看你的phpstudy文件配置或者PHP扩展及设置配置文件里代码太多不好找去PHP扩展更改也可以配置改完重新启动就i可以16关和 15 14关步骤一样......
  • upload-labs靶场第15关
    以上步骤和14关一样1 制作图片马 创建一个文件夹里面 准备一张 jpg图片和准备一个一句话木马的php文件 使用notepad++打开图片最后一行添加<?php phpinfo();?>2 打开cmd 使用命令制作图片马输入命令copy 图片位置 /b + 木马php位置 /a 编写的文件名称 .jpg3上传文......
  • upload-labs靶场第14关
    打开靶场发现phpStudy使用5.3以上版本只允许使用这三种文件格式1制作图片马创建一个文件夹里面准备一张jpg图片和准备一个一句话木马的php文件使用notepad++打开图片最后一行添加<?phpphpinfo();?>2打开cmd使用命令制作图片马输入命令copy图片位置/b+木马php位置/a......