天天看點

Web Hacking 101 中文版 二十、漏洞報告二十、漏洞報告

二十、漏洞報告

作者:Peter Yaworski

譯者:

飛龍 協定: CC BY-NC-SA 4.0

是以這一天終于來了,你發現了你的第一個漏洞。 首先,恭喜你! 認真來講,發現漏洞并不容易,但是有一些不爽的事情。

我的第一條建議是放松,不要過度興奮。 我知道在送出報告時的極度興奮感,以及當你被告知它不是漏洞,公司關閉了漏洞報告,損害了你在漏洞平台上的聲望,被拒絕的沮喪感。我想幫你避免它們。是以,第一件事是首先:

閱讀披露準則

在 HackerOne 和 Bugcrowd 上,每個參與公司都列出了範圍内外的程式。希望你先閱讀它們,以免你浪費時間。 但是如果沒有,請現在閱讀。 確定你發現的是未發現的,而不在他們的程式之外。

這是我以前的一個痛苦的例子 - 我在 Shopify 發現的第一個漏洞,如果你在文本編輯器中送出格式不正确的 HTML,其解析器就會對其進行更正并存儲 XSS。 我非常興奮,因為我的挖掘是有回報的。 我無法足夠快地送出報告。

太好了,我點選送出,等待我的 500 美元的獎金。 相反,他們禮貌地告訴我,這是一個已知的漏洞,他們要求研究人員不要送出。 然後這個工單被關閉了,我失去了 5 分。 我想鑽進洞裡。這是一個慘痛的教訓。

從我的錯誤中學習,要閱讀準則。

包含細節。之後包含更多東西

如果你希望認真對待報告,請提供詳細的報告,其中至少包括:

  • 用于查找漏洞的 URL 和任何受影響的參數
  • 浏覽器,作業系統(如适用)和/或應用程式版本的說明
  • 對感覺影響的描述。 這個 bug 可能如何被利用?
  • 重制錯誤的步驟

這些标準對于 Hackerone 的主要公司來說都很常見,包括雅虎,Twitter,Dropbox 等。如果你想更進一步,我建議你添加螢幕截圖或視訊驗證(POC)。 兩者都對公司有很大幫助,并将幫助他們了解漏洞。

在這個階段,你還需要考慮該網站的影響。 例如,由于使用者和互動數量衆多,Twitter 上存儲的 XSS 可能是一個非常嚴重的問題。 相比之下,一個互動有限的站點可能不會将這個漏洞視為嚴重。不同的是,敏感的網站,如 PornHub 的隐私洩露可能比在 Twitter 上更重要,後者大多數使用者資訊已經是公開的(而不會尴尬?)。

确認漏洞

你已閱讀準則,你已經起草了你的報告,你已經添加了截圖。等一下,并確定你的報告實際上是一個漏洞。

例如,如果你要報告公司在其标題中沒有使用 CSRF 令牌,那麼你是否看到了,要傳遞的參數是否包含一個像 CSRF 令牌一樣的标記,但是标簽不一樣?

在送出報告之前,我無法鼓勵你確定已經驗證了此漏洞。 考慮你所發現的重要漏洞,隻是讓你意識到你在測試時弄錯了一些東西,這非常令人失望。

在你送出該漏洞之前,請自行決定是否需要額外的時間并确認該漏洞。

尊重廠商

根據 HackerOne 公司建立的測試流程(是的,你可以作為研究人員進行測試),當公司啟動新的漏洞獎勵計劃時,它們可能會收到大量報告。 送出之後,讓公司有機會審查你的報告并回複你。

一些公司在他們的獎勵準則上釋出時間表,而其他公司則沒有。 平衡你的興奮與他們的工作量。 根據我與 HackerOne 支援者的對話,如果你在至少兩周内沒有收到公司的消息,他們将幫助你進行跟進。

在你選擇這條路線之前,在報告上釋出禮貌的消息,詢問是否有更新。 大多數時候,公司會回應并讓你了解情況。 如果他們并沒有留出太多時間,在問題更新之前再試一次。 另一方面,如果公司已經确認了這個漏洞,一旦完成,與他們一起确認修複。

在寫這本書的時候,我很幸運地和 Adam Bacchus 聊天,他是截至 2016 年 5 月的 HackerOne 團隊的新成員,任首席獎勵官,我們的對話真的讓我開闊了眼界。 在他的背景中,Adam 擁有 Snap Chat 和 Google 的工作經驗。在 Snap Chat 時,他銜接了安全團隊,和其他軟體工程團隊。在 Google 時,他在漏洞管理團隊工作,并幫助執行 Google 漏洞獎勵計劃。

亞當幫助我了解了,運作獎勵計劃時,有一些分析者會遇到的問題,包括:

  • 噪音:不幸的是,漏洞獎勵計劃會收到大量無效的報告,HackerOne 和 BugCrowd 都已經寫過這個。 我知道我絕對有貢獻,希望這本書可以幫助你避免這個問題,因為送出無效報告會為你和獎勵計劃浪費時間和金錢。
  • 優先級:漏洞計劃必須找一些方法來為漏洞修複排序。 當你有多個具有類似影響的漏洞,但報告持續不斷進入時,這非常困難,獎勵計劃面臨嚴峻的挑戰。
  • 驗證:在分析報告時,必須驗證漏洞。 這就是為什麼我們的黑客必須提供明确的訓示,并解釋我們發現的内容,如何重制它以及為什麼它是重要的。 隻是提供一個視訊并不能切中它。
  • 資源:并不是每個公司都能雇得起全職從業人員來運作獎勵計劃。 有些計劃很幸運,有專門的人對報告做出回應,而其他計劃則由從業人員兼任。 是以,公司可能會有輪流的時間表,人們輪流回應報告。提供必要資訊中的任何資訊差距或延誤都會産生嚴重影響。
  • 編寫修複:編碼需要時間,特别是如果有完整的開發生命周期的時候,包括調試,編寫回歸測試,分期部署,最後推送到生産環境。如果開發人員甚至不知道漏洞的根本原因怎麼辦?這一切都需要時間,而我們黑客不耐煩,想要獎勵。這就是溝通交流的重點,每個人都需要互相尊重。
  • 關系管理:黑客獎勵計劃希望黑客能夠回來。 HackerOne 已經在文章中寫到,在黑客向單個程式送出更多漏洞的同時,漏洞的影響如何增長。 是以,獎勵方案需要找到一種方法來平衡發展這些關系。
  • 媒體關系:漏洞可能會錯過,花費太長時間才能解決,或者被認為獎勵太低,總是有黑客會在 Twitter 或媒體上曝光的壓力。還有,這會對分析者造成影響,并影響他們與黑客發展關系和協作的方式。

看完所有這一切,我的目标是真正有助于使這個過程人性化。我有兩方面的經驗,好的和壞的。 然而最後,黑客和程式員将一起工作,了解每一個面臨的挑戰,這有助于改善各方面的成果。

獎金

如果你向支付獎金的公司送出了一個漏洞,請尊重他們對獎金金額的決定。

根據 Joaro Abma(HackerOne 聯合創始人) Quora 上 的回答:

我如何成為一個成功的漏洞賞金獵人?

如果你不同意收到的金額,請讨論你為什麼相信它值得更高的獎勵。在沒有詳細說明你為什麼相信的情況下,不要索要另一份獎金。作為回報,一家公司應該表示尊重你的時間和價值。

不要在穿越池塘之前喊“你好”

在 2016 年 3 月 17 日,Mathias Karlsson 撰寫了一篇很牛并且很棒的部落格文章,關于尋找可能的同源政策(SOP)繞過(同源政策是一個安全特性,它定義了 Web 浏覽器如何允許腳本從網站通路内容),我在這裡包含一些内容。 除此之外,Mathias 在 HackerOne 上有很好的成績 - 截至 2016 年 3 月 28 日,他發現了 109 個漏洞,在 Signal 上為第 97 個百分比,在 Impact 上是第 95 個,公司包括 HackerOne,Uber,Yahoo,CloudFlare 等。

是以,“不要在穿越池塘之前喊‘你好’”是一個瑞典諺語,意思是你在絕對确定前不應該慶祝。 你可能猜到我為什麼說這個 - 挖漏洞并不總是充滿陽光和彩虹。

根據 Mathias 的說法,他正在使用 Firefox,并注意到浏覽器會接受格式錯誤的主機名(OSX),是以 URL

http://example.com..

會加載

example.com

,但是在主機頭中發送

example.com..

。然後他嘗試了

http://example.com..evil.com

并得到相同的結果。

他立即知道了,這意味着 SOP 可以被繞過,因為 Flash 會将

http://example.com..evil.com

視為

*.evil.com

域下。他檢查了 Alexa 前 10000 名,發現有 7% 的網站可以被利用,包括

Yahoo.com

他建立了一個 WriteUp,但決定做一些更多的确認。 他檢查了一個同僚,他們的虛拟機也證明了這個 bug。他更新了 Firefox,bug還在那裡。然後他在 Twitter 暗示了他的發現。對他來說,Bug 已經驗證了,對吧?

并不是。它所犯的錯誤就是它沒有将它的作業系統更新到最新版本。這樣做之後,Bug 就消失了。很明顯,這在 6 個月之前就有人報告了,并且更新到 OSX 10.0.5 會修複這個問題。

我将其包含在這裡來展示,即使優秀的黑客也可能弄錯,以及在報告之前确認 Bug 的利用十分重要。

非常感謝 Mathias 讓我包含這個 - 我推薦關注它的 Twitter 動态

@avlidienbrunn

,以及

labs.detectify.com

,Mathias 在那裡的文章中寫到了它。

最後的話

希望本章能幫助你,你最好準備撰寫一份“殺手”報告。在發送之前,請稍等一下,真正考慮一下報告 - 如果要公開披露和公開閱讀,你會感到自豪嗎?

無論你送出了什麼,你應該為提供支援做好準備,為公司,其他黑客和你自己辯護。我不是說這個來吓到你,而是作為一些建議的話,我希望我最開始也能知道它。我最開始的時候,絕對送出了可疑的報告,因為我隻是想上排行榜,并且助人為樂。但是,企業受到了轟炸。找到完全可重複的安全漏洞,并清楚地報告它更有幫助。

你可能會想知道誰真正關心它 - 去問公司,以及在乎其他黑客的想法的人吧。 這很公平。 但至少在 HackerOne 上,你的報告是重要的,你的統計資料将被跟蹤,每當你收到有效的報告時,都會根據你的“Signal”記錄資料,範圍為 -10 到 7,可以平均顯示你的報告值:

  • 送出灌水,你會得到 -10
  • 送出被拒絕,你會得到 -5
  • 送出說明式資訊,你會得到 0
  • 送出可解決的報告,你會得到 7

同樣,誰在乎呢? Signal 現在用于判斷誰能夠收到私有計劃的邀請,以及誰可以将報告送出給公開的計劃。私有計劃對于黑客來說,通常都是鮮肉 – 這些站點剛剛進入漏洞獎勵計劃,僅僅向一部分黑客開放他們的站點。這意味着,潛在的漏洞和較少的競争。

對于報告給其它公司 – 使用我的經驗作為一個警告的故事吧:

我被邀請參加一個私有計劃,在一天之内,發現了八個漏洞。 但是那天晚上,我向另一個計劃送出了一份報告,得到了一個無效。 這使我的 Signal 到了 0.96。 第二天,我再次向私有公司報告,并得到了通知 - 我的 Signal 太低了,我必須等待 30 天來儲存點數,并且其他公司要求 Signal 為 1.0。

真是糟糕! 雖然沒有人找到我在那段時間發現的漏洞,但是他們可能會花費我的錢。每一天我都檢查了我是否可以再次報告。 從那以後,我發誓要提升我的 Signal ,你也應該這樣!

祝挖掘順利!

繼續閱讀