第八章 内存马分析-java02-shiro.md
First Post:
Last Update:
Last Update:
练习地址:挑战 · 玄机 - EDISEC
靶机来源 @vulntarget
靶机可以采集本地搭建或者是云端调度
搭建链接 https://github.com/crow821/vulntarget
本题不提供靶机账户密码请根据nacos 获取的shirokey 攻击靶机后登录应急
1.将 shiro 的 key 作为 flag 提交
在 java1 里:flag{KduO0i+zUIMcNNJnsZwU9Q==}
2.隐藏用户后删除,并将隐藏用户名作为 flag 提交
flag{guest}
3.分析app.jar文件是否存在后门,并把后门路由名称作为 flag 提交
flag{/exec}
4.分析app.jar文件,将后门的密码作为 flag 提交
flag{cmd}
过程:
用fscan扫描,得到22端口和8088端口,并且扫描出来了两个url,点击网址,跳转登录界面根据题目,我们知道了是shiro框架,我们利用工具进行注入
秘钥是java1里知道的秘钥,点击检测当前秘钥,发现的确是shiro框架
然后点击爆破利用链及回显
然后我们就可以在功能区进行命令执行和木马上传
然后利用蚁剑进行连接,记得选择连接类型是JSP
查看/etc/passwd文件,发现有一个名为 guest 的管理员用户,这与 root 用户重复,所以这个用户是隐藏用户
下载app.jar文件
使用java反编译软件 jadx 进行反编译
发现这里有漏洞(后门),有一个路由 /exec 接受一个参数 cmd 的传值
1 | if (cmd != null) { |
- 获取操作系统名称并将其转换为小写,检查其是否包含
"win"
字符串。 - 如果操作系统是 Windows,则执行
cmd.exe
命令和/c
参数创建一个新的ProcessBuilder
对象。/c
参数用于告诉cmd.exe
执行指定的命令并立即终止。 - 如果操作系统不是 Windows,则执行 Unix/Linux shell 命令。
- 使用
/bin/sh
和-c
参数创建一个新的ProcessBuilder
对象。-c
参数用于告诉 shell 执行指定的命令。
这样会导致任意命令执行,攻击者可以通过 cmd
参数执行任意系统命令
reward
支付宝 | Alipay


微信 | Wechat

