從寫個 WebShell 發現,啊!原來我不會寫 C#

當你在一個網站上找到可以上傳任意檔案的漏洞時,下一步會上傳什麼呢?想必大家跟我一樣,總之就想傳一個 WebShell,以 PHP 來說,可能會是 <?php system($_GET[cmd]);?> 或是 <?=`$_GET[cmd]`?>,但也僅限目標真的是 PHP 寫的,若目標是 ASP.NET 呢? 簡單,問問 Google 就行!或是更現代一點,問問 AI 就行。 於是我請 Gemini 幫我寫一個 ASPX 的 WebShell,而 Gemini 很快給了一段程式碼: <%@ Page Language="C#"…

No Database No Table, how do you do MSSQL Injection?

One day, while reviewing the code of an ASP.NET website, I came across a special case of SQL Injection with Microsoft SQL Server, basically the form of SQL Injection is like this: string sql = string.Format( "SELECT ReportsDB..{0}.* " + "FROM ReportsDB..{0} " + "WHERE ReportsDB.…

HITCON 2023 x DEVCORE Wargame: My todolist Write-up

為了 HITCON 2023 活動,我今年也在企業攤位上準備了三題趣味性質的 Wargame 題目讓參賽者在聽完議程的空閒之餘可以享受一下親自動手解題的快樂,而除了我所準備的題目以外,包括其他所有題目都可以在以下的 GitHub repository 裡找到:https://github.com/DEVCORE-Wargame/HITCON-2023。 這次準備的題目分別是 What's my IP、Submit flag 和 My todolist。第一個題目 What's my IP 只要看程式碼就會知道是個 HTTP header 偽造 IP 加上 SQL Injectin 利用的簡單題,只是活動期間參賽者們得憑著經驗與駭客直覺以黑箱方式找出弱點的存在。第二個題目 Submit flag 就是一個經典的 Race Condition,…

Playing RedTeam wargame in HITCON 2022 (created by 逢甲黑客社x台科資安社)

這次參加 HITCON PEACE 2022 路過逢甲黑客社x台科資安社的攤位時,發現他們今年準備的 wargame 裡有一個 Red Team 類別的題組,有三台主機,總共有四把 flag,主機包含 Linux * 1、Windows 10 (Workstation) * 1 和 Windows Server (Domain Controller) * 1,題組設計要從外網可連的 Linux 主機找到 Initial Access 到 Local Privilege Escalation 到 Lateral Movement 再到 Post-Exploitation 打下 Windows 主機,依序拿下所有 flag,這題組太吸引我了!只好開玩! 題目總共 4…

從 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,…

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…