บทนำ (Overview)
การรวบรวมชื่อบัญชีผู้ใช้โดยสังเกตุจากระบบแจ้งการลงทะเบียนบัญชีซ้ำ สามารถอธิบายได้จากบทความ Account Enumeration via New User Registration โดยในหลักการเราจะใช้โปรแกรม “Burp” ดักจับข้อมูลเพื่อตรวจสอบว่าถ้า username ซ้ำจะมีข้อความอย่างไร จากนั้นเราจะพยายามส่ง “username” ในรูปแบบต่าง ๆ เพื่อให้ “Server” ตอบกลับและตรวจสอบว่ามี “username” ในระบบหรือไม่นั้นเอง โดยเราไม่ต้องตรวจสอบเอง
ขั้นตอน (Steps)
- ติดตั้งโปรแกรม “Herd Financial” จากบทความ How to set GoatDroid (Herd Financial)
- จากนั้นตั้งค่าให้สามารถ “Burp” ดักจับข้อมูล “HTTP request” และ “HTTP response” จากบทความ How to intercept the traffic between application and the server (GoatDroid)
- จากนั้นที่หน้า Register ทดลองสร้าง “Account” ประมามาณ 2-3 อันสำหรับทดสอบการทำ “Enumeration”
- จากนั้นลองใช้ “Burp” ดักจับทั้ง “Message” เพื่อตรวจสอบว่า ถ้า “Username” ซ้ำเป็นอย่างไรและไม่ซ้ำเป็นอย่างไร จากรูปข้างเป็นตัวอย่างเมื่อ “username” ซ้ำ สามารถตรวจสอบได้ที่ (Proxy > History)
- จากนั้นคลิกขวาที่พื้นที่ว่างตามรูป และเลือก “Send to Intruder”
- เมื่อส่งข้อมูลไปยัง “Intruder” จากนั้นเลือก “Positions” และกดปุ่ม “Clear” ดังภาพ
- ต่อไปเป็นจุดสำคัญในการที่เดาอักษร หรือคำศัพท์ หรือเลขลำดับ อักษรเรียงลำดับ หรือขนาดตัวอักษร ทั้งนี้ขึ้นอยู่กับรูปแบบการตั้ง “username” ของผู้ใช้ หรือการบังคับของระบบ เช่น บางระบบใช้ หมายเลขโทรศัพท์ รหัสบัตรประชาชน รหัสพนักงาน เป็นต้น จากตัวอย่างเราจะทดสอบเฉพาะเลขลำดับ 0-1 โดยมีว่า test นำหน้า เราสามารถใส่สตริง คร่อมดังภาพ (โดยกดปุ่ม Add)
- จากนั้นเราจะใส่เลขลำดับ โดยไปที่ “Payloads” แล้วเลือก “Add from list” เป็น “0-9”
- เมื่อเลือกข้อมูลนำเข้าเสร็จสิ้น เราจะทำให้โปรแกรมตรวจสอบได้ว่าเจอ “Username” ในระบบแล้วโดยการ เลือกที่ “Options” และทำเครื่องหมายถูกที่ “Flag result…” และกดปุ่ม “Clear” ในหัวข้อ “Grep-Match” เพื่อหาเฉพาะ username ที่มีในระบบ โดยใส่คำค้นหาตามข้อ 4
- เริ่มต้นการค้นหาโดยกดปุ่ม “Intruder” และเลือก “Start Attack”
- จากตัวอย่างเราสามารถรวบรวม “username” ได้ดังนี้ test1, test2, test3 เป็นต้น