文件上传(1)一uploads靶场
概念及前言·
靶场:upload-labs
docker可理解为轻量级虚拟机
一些关卡必须windows,一些必须Linux
黑名单:列表;在黑名单列表
深入学习·
lab3·
Apache服务器是能解析PHP的.php5和.phtml扩展名的,但也不是绝对的这就看Apache服务器是否开启了解析这两个扩展名的配置了在Apache服务器配置文件中找到:AddType application/x-httpd-php 将注释解除变更为:AddType application/x-httpd-php .php .phtml .phps .php5 .pht 就可以解析了
lab4·
Upload-labs文件上传漏洞(.htaccess文件)——Pass04_渗透测试upload-labspass04 .htacess文件-CSDN博客
没有过滤 .htaccess后缀,我们可以构建一个htaccess配置文件,让所有格式文件都解析为php,然后再上传图片马(只要后缀是允许的,随便都可以)就会被解析了。
但是自己实验不成功,可能配置不对
uploads lab5·
加两个.
lab6·
由于没有大小写过滤,直接phP
lab7·
win会过滤空格,BP抓包,加空格
lab8·
通过审计源码可知, 此关卡去除了删除文件名称最末尾的字符’.'的函数, 因此可以通过在文件后缀添加"."来绕过
lab9·
通过审计源码可以发现, 此关卡去除了删除字符串"::$data
"的函数, 这样我们可以在文件后缀末尾添加字符串"::$data
", 这样网站后端识别的后缀名即为.php::$data
, 不在黑名单当中, 可以上传成功
其次, 根据Windows系统的特性, 在目录创建文件时会忽略文件名称的::$data
进行创建, 也就是说, 最后创建的文件后缀依然是php
lab10·
两个.
lab11·
此关卡用到了str_ireplace()
函数, 作用是将文件名称中的黑名单后缀替换成空格, 并且此函数的特性是忽略大小写, 所以无法使用之前的大小写后缀进行绕过, 但是可以双重写后缀来绕过, 比如构造一个后缀为pphphp, 此函数是从前往后寻找可替换的字符串, 因此经过替换后的后缀变成了php
lab14·
图片马
此关卡通过获取上传文件的内容的前两个字节来判断该文件的类型, 简单来说就通过识别文件头来判断文件类型, 我们只需修改文件头为图片格式的, 例如gif文件头:GIF89A, 就能实现绕过
upload-labs靶场第14、15、16关环境问题说明_upload-labs第十六关-CSDN博客
需要满足:include文件包含漏洞,且PHP版本小于5.3.4
PHP其余版本下载后,放入extensions文件夹,修改版本即可:https://feifeitan.cn/index.php/archives/318/
关于图片马的构造:
- 加上图片的文件头前缀
GIF89A <?php phpinfo();?>
- 图片和php文件合成:
copy 1.jpg + webshell.php webshell.jpg
Url路径:http://127.0.0.1:8083/upload/include.php?file=./upload/2720240628031502.gif
lab16·
卡住
lab17·
此关卡使用imagecreateformjpeg()
函数来对上传的图片文件进行二次渲染,随后返回一个新的图像文件, 由于新的图像文件是经过二次渲染后的, 所以我们在图像中布置的恶意代码也会被刷新, 从而导致不能配合文件包含漏洞来解析脚本文件
但是, 二次渲染后的文件并不是所有文件内容都会被刷新, 有一小部分是没有修改的, 我们只需找到这一小部分内容的位置, 然后将代码插入进去, 就能实现绕过
pass-18 条件竞争·
此关卡主要考察条件竞争, 如下代码所示, 后端先将文件上传至网站目录, 然后才对文件进行检验来决定是否删除这个文件, 如果我们在上传文件的瞬间, 也就是文件没被删除的时候, 访问这个文件, 就能实现绕过
BP抓到上传PHP文件的intruder模块,爆破上传;同时抓取访问php页面的包,同理爆破;但是可能由于社区版的原因,即使设置了高线程数,依然只能几乎每秒一次
视频教程
创建一个新木马文件creat.php,用于执行时则创建一个info1.php文件自己的文件名是han.php,因此,inturder里也需要是GET /upload/upload/han.php HTTP/1.1
,注意自己的upload路径(自己的靶场改名字为upload,前面要加靶场名)|
最终通过BP 专业版爆破很快
要相信一切问题都能解决,死磕,花了2小时,做出来还是很开心的;多搜索,没效果的话就和教程采用相同的工具配置(如检查软件、PHP版本、参数配置等
1 | PHP |
执行文件上传的intruder,会发现upload的文件夹不停出现消失han.php文件,此时要在服务器分析删除前,新建phpinfo文件(即条件竞争)
于是,采用插件:Turbo Intruder - PortSwigger 手动安装
配置jpython环境:BurpSuite扩展–python扩展运行环境配置 下载jar包并配置
插件使用:url参数加入%s,选择脚本,python脚本设置字典路径
参考:
https://www.cnblogs.com/henry666/p/17051491.html
引子 · burpsuite实战指南 (gitbooks.io)
BP真的强大!