Upload-Labs学习记录(Less1-Less10)


前言

Upload-Labs项目链接:

https://github.com/c0ny1/upload-labs

本文靶场环境于2021.5月份在Kali Linux下Docker中搭建

本文内容为Pass1-Pass10,后续Pass会另开一篇文章写


搭建过程中出现的问题

1. github所给出的创建容器指令有误
所给出的

docker run -d -p 80:80 upload-labs:latest

应改为

docker run -d -p 80:80 c0ny1/upload-labs:latest

2. 搭建后容器网站根目录下无upload文件夹,需手动创建并加权

3. 搭建后靶场内配置文件需根据实际操作进行更改,如增加对php5,phtml等类型文件的解析,在做部分Pass时还会因为中间件版本问题,导致已上传的文件的后缀还会有过滤所用的字符。

Pass1-Pass10 学习记录:

—Pass1

拦截方法:使用js对不合法图片进行检查

思路:既然用js,那就把js禁用掉,打开浏览器(本人用的Chrome)调试设置(F12),禁用掉JavaScript,进行上传
在这里插入图片描述
在这里插入图片描述

上传成功
此处上传的info.php,写的内容为(如下),后续相同

<?php
phpinfo()
?>

在这里插入图片描述

访问http://ip:port/upload/info.php可解析,证明成功
在这里插入图片描述

—Pass2

拦截方法:检测文件后缀(包中的Content-Type)

思路:上传文件,burpsuite抓包,修改Content-Typen内容image/jpeg
抓包
在这里插入图片描述

修改
在这里插入图片描述

上传成功,可访问解析,效果和Pass1一样,后续关同样不放图了

—Pass3

拦截方法:对后缀名进行黑名单拦截,检测并禁止上传.asp,.aspx,.php,.jsp后缀文件

思路:可以上传php5,phtml后缀等服务器同样会解析的类型的文件

此处会遇到的问题为:在docker内搭建的uploadlabs环境的apache2服务器配置文件,没有写对php5,phtml等文件进行解析,需要我们手动去到uploadlabs内的apache2.conf增添语句

方法

docker ps

显示正在运行的容器信息
在这里插入图片描述

docker exec -it 容器id/容器名称 /bin/bash

进入对应的容器文件夹中
在这里插入图片描述

移动到/etc/apache2目录下
在这里插入图片描述

对apache2.conf文件进行修改,写入

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

在这里插入图片描述

重启apache2及容器,即可上传并解析php5,phtml后缀的文件

:容器内的编辑器vim需自己手动安装(用自带的vi也行)

扩展知识点:apache的配置文件是httpd.conf,因为容器内的是apache2,所以配置文件是apache2.conf
关于 /etc/apache2/下sites-enable 和 sites-available的区别,enable是要用的配置文件,sites-available是所有的配置,包括临时不启用的站点的配置。即available是所有配置,enable是要用的配置的调用,当有需要更改的配置的时候,只用在enable里删除或增加指向链接即可,无需更改available这个大配置文件。enable依靠available,enable负责配置文件调用进行连接,是软连接,available是负责配置文件的存放。

—Pass4

拦截方法:对后缀名进行黑名单拦截,检测并禁止上传,包括php5,phtml等后缀

思路:Pass4可以看作是Pass3的一个加强版,既然无法解析那就想办法上传一个.htaccess文件,文件内容为

SetHandler application/x-httpd-php

文件名就是

.htaccess

在这里插入图片描述

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。我们要在目录里上传一个配置文件,写的文件内容是让它把所有上传的文件全按照php文件进行解析。
我们先上传.htaccess文件,然后再上传我们的php文件,后缀可以是jpg,gif,因为无论后缀是什么都会被解析成php

上传成功,解析成功
在这里插入图片描述

—Pass5

拦截方法:对后缀名进行黑名单拦截,检测并禁止上传特殊文件(全面)
在这里插入图片描述

思路:Pass5又是一个黑名单加强版,这次连.htaccess也无法上传了,但是有一个简单的方法,大小写,例如把后缀php改成phP,就是这么简单
在这里插入图片描述

上传成功,解析成功

—Pass6

拦截方法:对后缀名进行黑名单拦截,但是未过滤空格

思路:在文件后缀加上“ ”(空格)进行绕过
例如“info.php”,则改成“info.php ”

上传成功,解析因靶场配置,版本问题未解析成功

—Pass7

拦截方法:对后缀名进行黑名单拦截,但是未过滤“.”

思路:在文件后缀加上“.”进行绕过
例如“info.php”,则改成“info.php.”

上传成功,解析成功
在这里插入图片描述

—Pass8

拦截方法:对后缀名进行黑名单拦截,但是未过滤“::$DATA”

思路:在文件后缀加上“::$DATA”进行绕过
例如“info.php”,则改成“info.php::$DATA”
这里利用的原理是 php在window的时候如果文件名加::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名。

上传成功,解析因靶场配置,版本问题未解析成功

—Pass9

拦截方法:先通过deldot函数删除文件名末尾的点后,再对后缀名进行黑名单拦截
思路:在文件后缀加上“. .”(.空格.)进行绕过
例如“info.php”,则改成“info.php. .”
这里利用的原理是deldot函数是从后往前检测“.”符号,从检测到第一个“.”开始,遇到空格后停止检测的原理,所以最后文件后缀仍会保留一个“.”和一个空格

上传成功,解析成功(本不应该有后面的%20即空格,但因为靶场配置问题所以加上才能访问,正常服务器应该会自动去除空格,访问info.php.即可)
在这里插入图片描述

—Pass10

拦截方法:对后缀名进行黑名单拦截,将有问题后缀名替换为空

思路:文件后缀名双写进行绕过
例如“info.php”,则改成“info.pphphp”
识别中间的php并变成空格后,剩余字符组成完整的php后缀名。

上传成功,解析成功
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值