從 SQL 到 RCE: 利用 SessionState 反序列化攻擊 ASP.NET 網站應用程式

今日來聊聊在去年某次滲透測試過中發現的趣事,那是在一個風和日麗的下午,與往常一樣進行著枯燥的測試環節,對每個參數嘗試各種可能的注入,但遲遲沒有任何進展和突破,直到在某個頁面上注入 ?id=1; waitfor delay '00:00:05'--,然後他就卡住了,過了恰好 5 秒鐘後伺服器又有回應,這表示我們找到一個 SQL Server 上的 SQL Injection! 一些陳舊、龐大的系統中,因為一些複雜的因素,往往仍使用著 sa 帳戶來登入 SQL Server,而在有如此高權限的資料庫帳戶前提下,我們可以輕易利用 xp_cmdshell 來執行系統指令以取得資料庫伺服器的作業系統控制權,但假如故事有如此順利,就不會出現這篇文章,所以理所當然我們取得的資料庫帳戶並沒有足夠權限。但因為發現的 SQL Injection 是 Stacked based,我們仍然可以對資料表做 CRUD,運氣好控制到一些網站設定變數的話,甚至可以直接達成 RCE,…

VolgaCTF 2020 Qualifier: Library, Newsletter, User Center Write-up

這次一樣快速記錄 VolgaCTF 2020 Qualifier 的三道 Web 題目,因為沒有空而不能以 full time 模式來解題,所以只在抽空時間內來得及解出 3 題而已 QQ Library - 150 分 這題一個簡單的登入、登出功能,登入後就可以看到有儲存書籍的列表。 其中背後查詢列表的 API 是透過 GraphQL 來查詢。 對於測試 GraphQL API 的起手式就是可以利用內建 Introspection 操作來請求取得所有 Query / Mutation 的 schema,嘗試找出隱藏、可以利用的 API。為了方便性,所以我使用 GraphQL CLI 這套工具來協助完成操作。 只要依照順序執行下面兩個指令,就能獲得目標上 GraphQL API 完整的…

玩轉 ASP.NET VIEWSTATE 反序列化攻擊、建立無檔案後門!

最近微軟產品 Exchange Server 爆出一個嚴重漏洞 CVE-2020-0688,問題發生的原因是每台 Exchange Server 安裝完後在某個 Component 中都使用了同一把固定的 Machine Key,而相信大家都已經很熟悉取得 Machine Key 之後的利用套路了,可以竄改 ASP.NET Form 中的 VIEWSTATE 參數值以進行反序列化攻擊,從而達成 Remote Code Execution 控制整台主機伺服器。 更詳細的 CVE-2020-0688 漏洞細節可以參考 ZDI blog: * CVE-2020-0688: Remote Code Execution on Microsoft Exchange Server Through Fixed Cryptographic Keys 對於 VIEWSTATE 反序列化漏洞攻擊分析在網路上已經有無數篇文章進行深入的探討,所以在此篇文章中將不再重複贅述,…

簡單聊聊在 OpenEMR 5.0.1 <Patch 5 中發現的 CVE-2018-17179、CVE-2018-17180 及 CVE-2018-17181

最近武漢肺炎疫情不停延燒、愈發嚴重,每個人都只能盡力做好自主管理、照顧好身子,也得盡量別在這期間感冒而造成額外擔憂,台灣目前仍能防治住疫情也得特別感謝政府、第一線醫護人員、防疫人員、第三方人員等等許多人的努力! 筆者我身為技術宅,不是醫護人員,只能作為普通民眾盡可能地遵從一些政策、規定以降低醫療人員的負擔,但即使如此也還是希望能替醫療界盡一份心力,所以只好發揮所長試著在醫療界不為人知、沒有直接關聯的角落作出貢獻,因此今天就來聊聊很久之前曾在開源醫療管理系統 OpenEMR 所發現的 3 個 Pre-Auth 弱點。 過去資策會資安科技研究所曾經發表過一篇文章 OpenEMR 弱點分析,分析關於他們在 OpenEMR 發現的 RCE 弱點,RCE 可以讓攻擊者直接控制整台主機,是非常嚴重的風險,值得慶幸的是弱點必須要先登入擁有權限的帳號才可觸發。但倘若攻擊者發現可以在不知道帳號密碼的前提下從匿名使用者(未登入狀態)提升權限(登入)的弱點,就能進一步擴大風險!因此我決定挖掘 Pre-Auth 的弱點並將之回報給開發者作修復以預防此類風險發生,最終發現 2 個 Pre-Auth SQ…

AIS3 2019 Pre-exam Web Write-up

最近 AIS3 2019 的課程正在進行中,於是想起堆在電腦中的 pre-exam 截圖還沒寫成 write-up,趕緊來寫篇文章。個人覺得今年度的 web 題目很優質,沒有太多通靈成分而且還帶到了許多實用知識,然而我其實沒有報名今年度的 AIS3,純粹是因為好奇而偷要到了題目玩玩看 XD 首先附上官方出題者的解答: * AIS3 2019 Pre-Exam 官方解法 by Yuankui Lee * AIS3-PreExam-2019 by Kaibro 這些解答在 pre-exam 結束後沒多久就公佈了,相信大家應該都已經看完,但我這邊還是再附上一次。 Simple Window 開啟首頁馬上就看到一個類似 Virtual Terminal 的畫面,不過這是假的。 view-source 一下就能發現 flag 的頁面在 http://ip/flag,但是直連該頁面會只看到訊息說「I catch…

0CTF/TCTF 2019 Quals: Ghost Pepper Write-up

太久沒寫文章,快速記錄一次簡單的 Web 題目。 題目敘述如下: Do you know ghost pepper? Let's eat. http://111.186.63.207:31337 點開網頁出現授權要求視窗,網站訊息提示:「karaf」,直覺猜預設帳密 karaf/karaf,即可成功通過授權驗證。 但是進去後,頁面顯示 HTTP 404,快速猜測一些常見路徑都無果。 回想起題目敘述提到「ghost pepper」,丟到 Google 搜尋,第一筆結果為維基百科「Bhut jolokia - Wikipedia」,Bhut Jolokia 是一種稱為印度鬼椒的辣椒。 於是嘗試輸入網址 http://111.186.63.207:…

HITCON 2018: Why so Serials? Write-up

Why so Serials? 是由 Orange 在前陣子剛結束的 HITCON CTF 2018 出的一道 Web 題目,題目架設在 Windows/IIS,其功能只有一個頁面 Default.aspx,題目有提供原始碼,現在可以在 Orange 的 GitHub 上找到。 該頁面有提供一個上傳功能,但幾乎阻擋了所有可能直接 RCE 的副檔名。 String[] blacklists = {".aspx", ".config", ".ashx", ".asmx", ".aspq", ".axd", ".cshtm", ".cshtml", ".rem", ".soap", ".vbhtm", ".vbhtml", ".asa", ".asp", ".cer"}; if (blacklists.Any(extension.Contains)…

DefCamp CTF Qualification 2018: Vulture Write-up

Vulture 是一道出現在 DefCamp CTF Qualification 2018 屬於 Web 類型的題目。這題很有趣,雖然是黑箱但不用通靈、猜謎,整道題可以透過各種蛛絲馬跡有邏輯性地推敲並串出完整漏洞利用來解題。 題目敘述如下: We created an online service where you can upload pictures of vultures (or other birds). Each user has a feed so you can privately enjoy the photos you took of this majestic killing machines :) Target: https:…