url:https://abc.com/login.do
shiro框架
Linux
shiro框架,没有跑出来。爆破用户名密码也无果。
尝试js读取。然后GET遍历。
存在一个405页面
https://jmc.com/fileDownload.do的文件
405:请求的http方式不对。
这里利用burp进行http方式修改成POST。返回200,说明存在。
POST请求,需要参数的构造。一般思路
任意文件读取
命令执行漏洞
这里看fileDownload.do为文件下载,尝试fuzz任意文件读取。
parms=/etc/passwd
利用参数字典去fuzz-parms,最终fuzz成功。
data=/etc/passwd
开始之前,这里查阅了大量关于“任意文件读取到getshell”对文章
/root/.bash_history
/home/username/.bash_history
从上述发现很多路径和密码。
例如web日志路径
例如:mysql -uroot -p 123456
直接在命令中输入密码真是坏习惯
/root/.ssh/id_rsa
/root/.ssh/authorized_keys
一般都不会开放端口,无法利用。
/etc/redhat-release
var/lib/mlocate/mlocate.db
基于本地所有文件的信息的配置信息都知道。需要高权限用户才可以。
/proc/sched_debug 配置文件可以看到当前运行的进程并可以获得对应进程的pid
/proc/pid/cmdline 则可以看到对应pid进程的完整命令行。
/proc/net/fib_trie 内网IP
/proc/self/environ 环境变量
/proc/self/loginuid 当前用户
经过不停的测试。
读取到了目标:
web日志
最新的数据用户名密码
shadow
passwd
mlocate.db
1.找源码
2.找数据库
目标是shiro框架,这里尝试去利用shiro的反序列化漏洞去执行。
利用公开的脚本没有跑出来key,那就要去读取目标的core.jar去主动寻找key值。
因为任意文件读取为高权限,这里成功读取到目标的mlocate.db
文件。
文件过大,可以下载下来。也可以利用burp返回包保存下来。
这里采用burp返回包保存下来,保存时,需要取消base64编码。
ps:关于mlocate.db文件的打开,采用下载方式,利用sqlite3去打开,发现提示不是有效的数据文件,未解决。
利用sublime打开搜索shiro
往上去寻找路径。得到shiro-core.jar的路径。
下载下来。利用Luyten去寻找key 值。
搜索Base64.decode
成功找到key。
利用网上shiro工具。拿到shell
就挺突然的。
通过key读取,发现key就是最简单的key。不知道目标如何防护的。无法找到key利用。但是直接用key,就成功执行命令。
侵权请私聊公众号删文
推荐阅读
学习更多技术,关注我:
觉得文章不错给点个‘再看’吧