概念及前言·

靶场: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/

关于图片马的构造:

  1. 加上图片的文件头前缀GIF89A <?php phpinfo();?>
  2. 图片和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
2
3
4
5
PHP
复制成功<?php
$f = fopen("info1.php","w");
fputs($f,"<?php phpinfo();?>");
?>

执行文件上传的intruder,会发现upload的文件夹不停出现消失han.php文件,此时要在服务器分析删除前,新建phpinfo文件(即条件竞争)

于是,采用插件:Turbo Intruder - PortSwigger 手动安装

配置jpython环境:BurpSuite扩展–python扩展运行环境配置 下载jar包并配置

插件使用:url参数加入%s,选择脚本,python脚本设置字典路径

保姆级并发教程(Turbo Intruder)

参考:

https://www.cnblogs.com/henry666/p/17051491.html

引子 · burpsuite实战指南 (gitbooks.io)

BP真的强大!