2024-01-14|閱讀時間 ‧ 約 30 分鐘

Bug Bounty 初體驗 - 從發現漏洞到領取獎金,我是如何拿到 1000 美元的

前述

如果你還不知道什麼是 Bug Bounty,或者對於 Bounty Hunter 的技巧細節有興趣,我強烈推薦你閱讀 Lays 在 HITCON 2022 演講中的『從 Binary Researcher 到 Bounty Hunter 的致富之路』。這是一篇非常有趣的心路歷程,並且提供了一些寫報告的實用心得。

儘管標題是寫初體驗,但我之前已經有過一些經驗,只是第一次從多個管道了解國外的 Bug Bounty 是怎麼運作的。

這篇文章主要記錄了這個過程和分享一些較少人提及的獎金領取小知識。

Bug Bounty Program 是什麼

在一些資安網站中,我們常見 BPP(Bug Bounty Program)的縮寫,它是企業策劃的一項獎勵方案。通過該計劃,人們可以揭露並向公司報告其產品中存在的漏洞或安全性問題。如果成功揭示了一個未知且重大的安全弱點,提報者往往能獲得現金或其他獎勵。

這項計劃旨在激勵人們以安全、有責任感的方式揭露安全隱患,避免將這些漏洞用於惡意行爲或不當公開,由此可能給用戶及企業帶來的風險。透過此舉,企業得以強化產品安全,並與資安研究社區建立正面的合作關係。

我看到的漏洞

某一天讀到「nOAuth: How Microsoft OAuth Misconfiguration Can Lead to Full Account Takeover」,這是一個攻擊 OAuth 實作缺陷的方法。

以下是攻擊過程的簡述:許多網站使用 OAuth 這個標準來實作授權登入,讓使用者可以透過 Google、Facebook、Apple等帳號來登入網站,以方便使用者登入並減少需要記憶的帳號密碼。

而 nOAuth 是網頁實作 OAuth 時常見的一個問題,當使用者要使用 Entra ID(前 Azure AD)帳號登入某個網頁服務時,網頁伺服器會要求使用者先轉跳到身份提供商(Identity Provider)進行驗證。當使用者與身份提供商完成驗證後,身份提供商會提供一些聲明(Claim)給網頁伺服器,讓網頁伺服器了解登入者的 GUID、email或其他相關資訊。

問題出在網頁伺服器對於這些聲明的處理上,有些網頁只會提取聲明中的 email 欄位來識別使用者的唯一方式,這樣就仰賴身份提供商的可信度以及該欄位是否經過驗證(即使用者是否可以在身份提供商的系統中任意修改email欄位)。

而在 nOAuth 這個攻擊案例中,Entra ID(以前稱為 Azure AD)的email欄位是不可信的,Entra ID的管理員可以任意修改email屬性。以下是擷取 nOAuth 的範例圖,可以看到同一個帳號的email欄位可以是不同的。

上述說到這邊大概了解漏洞的成因了吧,當使用相同的 OAuth 帳號登入時,若網頁伺服器將可變動的電子郵件 email 欄位作為唯一的帳號辨識數據,這就會導致攻擊者可以任意切換他們想要登入的帳號!如果您想瞭解更多技術細節,可以參考原文文章中的 nOAuth 攻擊手法介紹。

回報過程& 心得

注意:回報漏洞時應遵守廠商制定的規則,僅測試授權範圍內的系統,尊重目標系統的安全和隱私,並避免進行破壞性測試。

我在閱讀這篇文章時意識到在我之前瀏覽的服務中可能存在這個攻擊手法,而且很容易重現此漏洞,只需一個 Google 帳號和一個 Entra ID 帳號(可修改電子郵件)。

於是我開始在各個服務上進行註冊,測試是否存在這個漏洞。很可惜,似乎很多網站都已經修復了這個問題,所以我花了兩個晚上的時間,找到了 5 個仍存在這個漏洞的網站。

然後我開始撰寫報告並聯繫這些網站的資安團隊。我的漏洞回報管道如下:

  • HackerOne(國外):如果廠商有在該平台上註冊,我會透過這個平台回報。從回報到拿到獎金的整個過程非常順利。
  • HITCON ZeroDay(台灣):如果我找到國內的漏洞,我會優先選擇這個平台。整個流程很順利,而且這次我也找到了一個台灣公司的網站存在這個漏洞。
  • 各個公司的資安團隊信箱:我會查詢對方是否有 PSIRT 或對外的安全團隊信箱。如果沒有,有時我會先透過支援信箱詢問。

在回報過程中,有時我會自己尋找聯繫管道或私訊對方的資安團隊信箱,但不可避免地會遇到無回應的情況。不過,這次我透過漏洞回報平台回報的都收到了修復措施或對方的回信。

令我比較意外的是,我保著佛系的心情找到一家 IT 軟體服務商也存在這個問題,由於他們沒有對外的漏洞回報信箱,我先透過 support center 的信箱詢問,並提供了初步資料(為了避免對方支援人員是外包人員,可能會洩漏不必要的資訊給第三方,造成對方不必要的困擾)。對方隔天就轉給了資安團隊人員,然後從漏洞修補到發錢只花了 2 天的時間,對方修復了這個問題並給予了 $1000 美元的獎金。但我想最讓我感到驚訝的是對方的修補速度以及願意提供額外獎金(他們並沒有漏洞獎金計畫)。對他們的迅速行動和重視程度,我感到非常開心,也很高興能幫上他們的忙。

對我而言,我覺得漏洞回報技巧以外,我還體會到保持”心平氣和“,如果你以後要回報漏洞或許可以參考以下兩點:

  • 無聲函不要氣餒:多次回報漏洞無下文就無下文,反正被打的不是我,已經盡道德義務就好。
  • 據理力爭但尊重決定:由於處理漏洞回報的人,不一定是這方面的專業,所以耐心溝通是很重要的,如果最後對方不認為是漏洞,那就尊重廠商的決定。

如何收帳

注意:依法納稅是每個人的義務,如果你的收入達到需要納稅的程度,請務必繳稅。根據我查到的說明,海外所得達到100萬元(且基本所得額超過670萬元)的人必須繳稅,參考連結

註記:每間公司的獎金提供計畫不同,有些會收取手續費,讓你實際領取的金額減少,有些則不會。

這篇文章要介紹的是如何收取海外的 BPP 獎金。大多數回報漏洞所提供的獎金都是以美元計算,所以我們將專注於美元部分。下面會分享幾種收獎金的方式。常見的獎金發放方式有:銀行轉帳、PayPal、以及轉做慈善公益三種方式。

做公益:如果你覺得這個獎金金額太少,或者覺得領取獎金需要填寫太多資料很麻煩,你可以請對方捐贈給慈善單位。捐贈時不會多收取什麼手續費,有些公司甚至會主動加碼,例如 Google 會將慈善捐贈的獎金加倍捐贈出去。

銀行轉帳,外國銀行帳號收款:如果你在當地公司的同個國家有戶頭的話,這是最推薦的方法,因為這個過程基本上不會收取手續費。不過,如果是英國發獎金給美國銀行,這樣的交易會被收取跨國手續費,而每間銀行的手續費標準也不同。如果你是專業的獎金獵人,可以考慮開立美國戶頭,畢竟很多獎金都是以美元發放。

銀行轉帳,台灣銀行外幣收款:以台新銀行的手續費為例,存入外匯存款的匯款金額手續費為0.05%,最低 USD10,最高 USD40。所以如果你的獎金只有50美元,進來就會被扣除最低的10美元,相當不划算。

PayPal:使用台灣的 PayPal 交易,會收取固定的4.40%交易費用,這還不包括你將錢換回台幣時的費用。不過優點是交易方便,如果你不在意手續費且不打算將錢再轉成其他貨幣,那可以考慮使用 PayPal。

結論

感謝 descope 發表的研究,讓我了解了一個新的攻擊手法。這篇文章也讓我發現了幾家廠商存在相似的問題,並且讓我接觸到多種漏洞回報的管道。以前工作上,我發現漏洞時都是透過業務窗口回報,所以沒有像獎金獵人一樣自己從頭到尾處理過。

因此,我整理了這篇文章,希望讓其他人在回報漏洞時能夠了解如何領取獎金,或者捐贈給公益機構。如果你發現一個攻擊技巧,千萬不要以為大家都已經知道了。網路世界上有無數的服務,並不是每個人都讀過相關的漏洞報告並進行修復。所以,請勇於嘗試!

再次提醒:當你成為獎金獵人時,切記遵守廠商的規則,成為一個負責任的駭客,共同為網路安全盡一份心力。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.