GitHub สำหรับ Bug Bounty Hunters

Apr 28 2023
สำหรับนักล่าค่าหัวแมลง ที่เก็บ GitHub สามารถเปิดเผยข้อมูลที่อาจเป็นประโยชน์ได้หลากหลาย อาจมีปัญหากับเป้าหมายที่ไม่ได้เปิดแหล่งที่มาเสมอไป

สำหรับนักล่าค่าหัวแมลง ที่เก็บ GitHub สามารถเปิดเผยข้อมูลที่อาจเป็นประโยชน์ได้หลากหลาย อาจมีปัญหากับเป้าหมายที่ไม่ได้เปิดแหล่งที่มาเสมอไป บางครั้งข้อมูลที่สามารถใช้กับบริษัทเป้าหมายถูกเปิดเผยโดยไม่ได้ตั้งใจโดยสมาชิกองค์กรและโครงการโอเพ่นซอร์สของพวกเขา ฉันจะให้ภาพรวมโดยย่อในบทความนี้ซึ่งจะช่วยให้คุณเริ่มสแกนที่เก็บ GitHub เพื่อหาช่องโหว่และดำเนินการสำรวจทั่วไป

การโคลนนิ่ง 1 ครั้ง

คุณเพียงแค่ทำการวิจัยของคุณบน github.com อย่างไรก็ตาม เพื่อเปิดใช้งานการทดสอบในเครื่อง ฉันแนะนำให้โคลนที่เก็บเป้าหมายทุกแห่ง GitHubCloner โดย@ mazen160เป็นผลิตภัณฑ์ที่ยอดเยี่ยม สิ่งที่คุณต้องทำคือเรียกใช้สคริปต์เพื่อให้พร้อมใช้งาน

$ python githubcloner.py --org organization -o /tmp/output

      
                

สิ่งสำคัญคือต้องเข้าใจโครงการที่คุณตั้งเป้าไว้ก่อนที่จะเริ่มการวิเคราะห์แบบคงที่ ใช้คุณสมบัติหลักในขณะที่ดำเนินโครงการ เหตุผลที่ฉันเรียกสิ่งนี้ว่า “ขั้นตอนของ Jobert” เพราะฉันได้ยินมาว่าก่อนที่จะเริ่มการล่าทุกครั้งJobertจะใช้โครงการและทำความเข้าใจกับเป้าหมายเป็นอย่างดีก่อนที่จะมองหาจุดอ่อน

3- การวิเคราะห์ด้วยตนเอง

คำพูดที่ว่า“เรียนรู้ที่จะทำมัน แล้วทำลายมัน”ใช้ได้กับสถานการณ์นี้ หากคุณสามารถเรียนรู้ภาษาโปรแกรมได้ คุณควรจะสามารถเข้าใจรายละเอียดปลีกย่อยของมาตรการป้องกันความปลอดภัยที่ควรปฏิบัติและหลีกเลี่ยงได้

คุณสามารถเริ่ม grepping ได้เมื่อคุณคุ้นเคยกับเป้าหมายและสถาปัตยกรรมของมันแล้ว มองหาคำหลักที่คุณสนใจ คุ้นเคย หรือทราบว่านักพัฒนามักจะเข้าใจผิด

ต่อไปนี้เป็นรายการพื้นฐานของคำค้นหาบางส่วนที่ฉันจะใช้ระหว่างการประเมินแบบกว้างๆ ครั้งแรก:

  • API และคีย์ (รับจุดสิ้นสุดเพิ่มเติมและค้นหาคีย์ API)
  • โทเค็น
  • ความลับ
  • ทำ
  • รหัสผ่าน
  • อ่อนแอ
  • http:// & https://
  • ซีเอสอาร์เอฟ
  • สุ่ม
  • กัญชา
  • MD5, SHA-1, SHA-2 เป็นต้น
  • เอชแมค

ขั้นตอนสำคัญอีกประการหนึ่งคือการตรวจสอบประวัติการคอมมิต คุณจะประหลาดใจกับข้อมูลที่คุณสามารถรวบรวมได้จากการกระทำ ฉันเคยเห็นผู้ร่วมให้ข้อมูลเข้าใจผิดว่าพวกเขาได้ลบข้อมูลประจำตัวในขณะที่ยังคงอยู่ในประวัติการกระทำ เนื่องจากประวัติคอมไพล์ ฉันได้ค้นพบจุดสิ้นสุดแบบโบราณที่ยังคงใช้งานได้ นอกเหนือจากข้อกังวลในปัจจุบัน คุณอาจพบปัญหาในอดีตที่อาจหลีกเลี่ยงได้เนื่องจากข้อผูกมัดเก่า

4- เครื่องมือ

บางครั้งการทำงานที่น่าเบื่อโดยอัตโนมัติสามารถช่วยให้คุณเห็นภาพรวมเบื้องต้นเกี่ยวกับสิ่งที่ต้องค้นหา สิ่งสำคัญคือต้องจำไว้ว่าคุณไม่ควรคัดลอกและวางผลการสแกนลงในรายงาน คุณจะได้รับผลบวกลวงจำนวนมาก ดังนั้นคุณควรตรวจสอบปัญหาที่อาจเกิดขึ้นอย่างรอบคอบเพื่อให้แน่ใจว่าสามารถถูกโจมตีได้

เครื่องมือหลักที่ฉันใช้เมื่อทำโครงการ Python คือBandit

Banditจะระบุปัญหาทั่วไป แต่มักจะส่งกลับผลบวกปลอมหรือผลไม้ห้อยต่ำ ดังนั้นใช้ด้วยความระมัดระวัง ไม่ต้องสงสัยเลยว่ามันไม่ควรพึ่งพา

$ bandit -r path/to/your/code -ll

Snyk.ioเป็นเครื่องมือที่ยอดเยี่ยมสำหรับตรวจสอบการพึ่งพา แพลตฟอร์มรองรับภาษาที่หลากหลาย

สำหรับรีคอน นักวิจัยหลายคนแนะนำให้ใช้Gitrob เครื่องมือนี้จะค้นหาข้อมูลที่ละเอียดอ่อนในที่เก็บ GitHub สาธารณะ

$ gitrob analyze acme,johndoe,janedoe

$ truffleHog https://github.com/dxa4481/truffleHog.git

สำหรับ แอพ Ruby on Rails ฉันขอแนะนำBrakeman Brakeman เป็นเครื่องสแกนความปลอดภัยในการวิเคราะห์แบบสแตติกที่สามารถค้นหาปัญหาด้านความปลอดภัยต่าง ๆ มากมายในโค้ด

ใช้LinkFinderโดยGerben Javado เพื่อค้นหาจุดสิ้นสุดในไฟล์ JSของที่เก็บ

$ python linkfinder.py -i 'path/to/your/code/*.js' -r ^/api/ -o cli

ตกลง อย่าเอาจริงเอาจังกับโซเชียลเอ็นจิเนียร์เจ้าของโครงการ

การรายงานสิ่งที่คุณค้นพบ

เช่นเคย เมื่อพูดถึงการล่าเงินรางวัลจากบั๊ก โปรดอ่านนโยบายของโปรแกรมอย่างละเอียด โปรแกรมไม่ค่อยยอมรับรายงานผ่าน GitHub ติดต่อทีมรักษาความปลอดภัยหรือหากเป็นไปได้ให้ใช้แพลตฟอร์มรางวัลบั๊ก เช่นHackerOneหรือBugcrowd

สิ่งที่น่าสนใจเกี่ยวกับการทดสอบกล่องขาวก็คือ เนื่องจากคุณสามารถเข้าถึงโค้ดได้ จึงสามารถแนะนำการแก้ไขหรือส่งแพตช์ได้ง่ายขึ้น

ขอบคุณสำหรับการอ่านสิ่งนี้!