第八章 内存马分析-java02-shiro

靶机来源 @vulntarget
靶机可以采集本地搭建或者是云端调度
搭建链接 https://github.com/crow821/vulntarget
本题不提供靶机账户密码请根据nacos 获取的shirokey 攻击靶机后登录应急

1.将 shiro 的 key 作为 flag 提交

在 java1 里:
image.png
flag{KduO0i+zUIMcNNJnsZwU9Q==}

2.隐藏用户后删除,并将隐藏用户名作为 flag 提交

image.png
flag{guest}

3.分析app.jar文件是否存在后门,并把后门路由名称作为 flag 提交<flag{/manager}>

image.png
flag{/exec}

4.分析app.jar文件,将后门的密码作为 flag 提交

image.png
flag{cmd}

过程:

用fscan扫描,得到22端口和8088端口,并且扫描出来了两个url,点击网址,跳转登录界面
image.png
image.png
根据题目,我们知道了是shiro框架,我们利用工具进行注入
秘钥是java1里知道的秘钥,点击检测当前秘钥,发现的确是shiro框架
image.png
然后点击爆破利用链及回显
image.png
然后我们就可以在功能区进行命令执行和木马上传
image.png
image.png
然后利用蚁剑进行连接,记得选择连接类型是JSP
image.png
查看/etc/passwd文件,发现有一个名为 guest 的管理员用户,这与 root 用户重复,所以这个用户是隐藏用户
image.png
下载app.jar文件
image.png
使用java反编译软件 jadx 进行反编译
image.png
发现这里有漏洞(后门),有一个路由 /exec 接受一个参数 cmd 的传值

 if (cmd != null) {
            if (System.getProperty("os.name").toLowerCase().contains("win")) {
                p = new ProcessBuilder("cmd.exe", "/c", cmd);
            } else {
                p = new ProcessBuilder("/bin/sh", "-c", cmd);
            }

  • 获取操作系统名称并将其转换为小写,检查其是否包含 "win" 字符串。
  • 如果操作系统是 Windows,则执行 cmd.exe 命令和/c 参数创建一个新的 ProcessBuilder 对象。/c 参数用于告诉 cmd.exe 执行指定的命令并立即终止。
  • 如果操作系统不是 Windows,则执行 Unix/Linux shell 命令。
  • 使用 /bin/sh-c 参数创建一个新的 ProcessBuilder 对象。-c 参数用于告诉 shell 执行指定的命令。

这样会导致任意命令执行,攻击者可以通过 cmd 参数执行任意系统命令
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值