Tips and Tricks Burp Suite: ฟีเจอร์(ไม่)ลับที่มือใหม่ส่วนใหญ่มองข้าม

โดย admin

4 นาที
แชร์
Blog Thumbnail

Tips and Tricks Burp Suite: ฟีเจอร์(ไม่)ลับที่มือใหม่ส่วนใหญ่มองข้าม

By Rapeephong Manaphong,

Penetration Tester Team, Datafarm Company Limited

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

เมื่อก่อนตอนผมเพิ่งเริ่มทำ Pentest ผมมี workflow คือเปิด Burp ขึ้นมา เปิด Intercept กด Forward ไปเรื่อยๆ เจอ request ที่น่าสนใจก็คลิกขวา “Send to Repeater” แล้วนั่งแก้ parameter ส่งซ้ำไปซ้ำมา

แต่พอมาตั้งใจศึกษาเครื่องมือนี้ดีๆ ผมจึงเข้าใจว่าจริงๆ แล้วผมใช้ฟีเจอร์ของเครื่องมือนี้เพียง 40% ของทั้งหมด มันมีฟีเจอร์อีกหลายอย่างที่ช่วยให้ทำงานได้เร็วขึ้นมาก บทความนี้คือฟีเจอร์ที่เปลี่ยน workflow ของผม จึงอยากมาเล่าให้ทุกคนฟังครับ

1. Match and Replace: แก้ Request/Response อัตโนมัติ ไม่ต้องนั่งแก้มือ

ระหว่างการทดสอบ จะมีสถานการณ์ที่เราต้องแก้ไข request ทุกตัวที่ส่งออกไป เช่น ต้องแก้ค่า parameter เพื่อ bypass client-side validation หรือลบ attribute ต่างๆ ที่จะพาเราไป redirect ไปสู่อีกหน้าโดยอัตโนมัติ ซึ่งถ้าทำมือ เราต้องเปิด Intercept แล้วนั่งแก้ทีละ request ซ้ำไปซ้ำมา ถ้าเราต้องทดสอบกับหลายๆ endpoint พร้อมกัน จะเสียเวลามาก

ฟีเจอร์นี้จะช่วยให้ Burp แก้ไข request หรือ response อัตโนมัติทุกตัวที่ผ่านเข้ามา โดยไม่ต้องเปิด Intercept มานั่งแก้เอง ให้เราไปที่ Proxy → Proxy settings→ Match and Replace จากนั้นกด Add เพื่อตั้ง rule

โดยเราก็สามารถตั้ง Rule โดยใช้ regex ว่าอยากให้ตรวจส่วนไหน และต้องการให้เปลี่ยนเป็นอะไร

จากตัวอย่างการใช้งานนี้คือเราตั้ง Rule ว่าถ้าเจอบรรทัดที่ขึ้นต้นด้วย User-Agent ให้เปลี่ยนเป็น User-Agent ของ iPhone เป็นการทดสอบ API หากระบบเห็นว่าเป็น Mobile User-Agent ระบบอาจจะ Redirect ไปที่หน้าเว็บเวอร์ชันมือถือ หรืออาจจะเปิดเผย API Endpoints ที่ทำมาเฉพาะแอปพลิเคชันมือถือ

ตัวอย่างการใช้งาน:

แก้ UI ฝั่ง Client: หลายครั้งนักพัฒนาชอบซ่อนปุ่ม เปิดโหมด Read-only หรือซ่อนฟิลด์ข้อมูลบางอย่างไว้ไม่ให้ผู้ใช้ทั่วไปเห็น เราสามารถใช้ Match and Replace เพื่อแก้ไขให้ เปลี่ยน type=”hidden” เป็น type=”text” ทำให้ฟิลด์ที่ซ่อนอยู่โผล่ขึ้นมาบนจอ หรือลบคำว่า disabled=”disabled” หรือ readonly ออกจากแท็ก HTML ได้ทำให้เรากดปุ่มที่ถูกล็อคไว้ หรือพิมพ์ข้อความในช่องที่ห้ามพิมพ์ได้

เปลี่ยน User-Agent เป็น Mobile: replace User-Agent เป็นของมือถือ บาง application มี mobile version ที่ security หลวมกว่า

2. Comparer: เปรียบเทียบ Response แบบไม่ต้องใช้ตาเปล่า

ตอนทดสอบช่องโหว่ IDOR หรือ Access Control เราต้องส่งสอง request แล้วเทียบ response กัน เช่น ส่งด้วย user ธรรมดากับ admin แล้วดูว่า response ต่างกันตรงไหน ปัญหาคือถ้า response มันยาวมากบางทีเป็นร้อยบรรทัด นั่งอ่านเทียบด้วยตาเปล่าก็พลาดได้ง่าย แถมเสียเวลา บางทีต่างกันแค่จุดเดียวแต่หาไม่เจอ ฟีเจอร์ Comparer จะทำการ highlight ส่วนที่ต่างให้ทันที ไม่ต้องนั่งอ่านเอง วิธีใช้คือ click ขวาที่ response แล้วเลือก “Send to Comparer” ทำแบบนี้สองครั้งกับ response ที่ต้องการเปรียบเทียบจากนั้นเปิดแท็บ Comparer แล้วกด “Words”

ตัว Burp ก็จะทำการ Highlight สิ่งที่ต่างกันให้ โดยแบ่งเป็นสี 3 สีได้แก่:

สีฟ้า(Modified): สิ่งที่เปลี่ยนไป

สีแดง(Deleted): สิ่งที่ลบไปจาก response แรก

สีเขียว(Added): สิ่งที่ถูกเพิ่มมาจาก response แรก

จากตัวอย่างนี้เราเปรียบเทียบสอง requests ส่ง request ปกติตัวหนึ่ง กับ request ที่ใส่ payload อีกตัวหนึ่ง แล้วเทียบ response จะเห็นได้ชัดเลยครับว่า WAF ทำอะไรกับ request ของเราบ้าง block ทั้งหมด, strip payload ออก, หรือแค่เพิ่ม header บางตัวเข้ามา

ตัวอย่างการใช้งาน:

ทดสอบ Access Control: เวลาอยากรู้ว่าหน้าต่างของ User ธรรมดา กับ Admin ต่างกันตรงไหนบ้าง Comparer จะไฮไลต์ URL, ปุ่ม (Buttons) หรือ API Endpoints ที่แสดงให้เห็นเฉพาะ Admin (เช่น <a href=”/admin/delete_user”>) ทำให้เราเอา Path ลับพวกนี้ไปลองยิงด้วยสิทธิ์ User ธรรมดาเพื่อทดสอบช่องโหว่ IDOR ได้

หาช่องโหว่ Username Enumeration: หน้า Login ระบบมักจะตอบกลับมาเป็นคำกว้างๆ เช่น “Invalid username or password” ไม่ว่าเราจะพิมพ์อะไรลงไป บางครั้ง Comparer จะจับได้ว่า แม้ข้อความ Error จะเหมือนกัน แต่ Response ของ Username ที่มีอยู่จริง อาจจะมี Tag HTML ที่ต่างออกไป

3. Intruder + Grep Extract: ทำตาราง data leak

ตอนทดสอบ IDOR เราต้องเปลี่ยน user ID ใน request แล้วดูว่ามี user ID ไหนที่มีสิทธิ์เป็น admin ปัญหาคือถ้า application มี user เป็นพันคน เราไม่มีทางมานั่งอ่าน response ทีละ request ได้ โดยในฟังก์ชัน Intruder ฟีเจอร์ชื่อ Grep — Extract โดยหลักการคือเราบอก Burp ว่า “ในแต่ละ response ให้ดึงค่าเฉพาะที่เราต้องการออกมาแสดงเป็น column ในตาราง Results”

ตัวอย่างสมมติ เราพบช่องโหว่ IDOR และเราต้องการทราบว่า user ไหนมีสิทธิ์เป็น admin เพื่อยกระดับช่องโหว่

Step 1: ส่ง request ไป Intruder ตามปกติ เช่น GET /api/users/§1§ แล้วตั้ง payload เป็น Numbers → From: 1, To: 1000, Step: 1 จากนั้นไปที่แท็บ Settings ในหน้า Intruder เลื่อนลงมาหาส่วน “Grep - Extract” แล้วกด “Add”

Step 2: Burp จะแสดง response ตัวอย่างขึ้นมา ให้เรา ลาก highlight ไปที่ค่าที่ต้องการดึง เช่น highlight ที่ [email protected] Burp จะจำ pattern รอบๆ ค่านั้นโดยอัตโนมัติ (เช่น start after: "email":" / end at: ",\\n "phone") กด OK แล้วทำซ้ำกับ field อื่นที่ต้องการ เช่น balance, role

Step 3: กด Start Attack ตามปกติ

ผลลัพธ์ที่ได้จะเป็นตารางที่ทำ Grep — Extract ไว้ ทีนี้เราก็สามารถดู role ของ user ได้ง่ายๆ ไม่ต้องนั่งเปิด response ทีละตัว

เคล็ดลับเพิ่มเติม: ใช้คู่กับ “Grep — Match” เช่น ตั้งให้ flag เฉพาะ response ที่มีคำว่า "role":"admin" จะได้เห็นทันทีว่า ID ไหนเป็น admin account โดยไม่ต้องมานั่งไล่ดูทั้งตาราง

4. Extensions ที่แนะนำให้ลองใช้

Burp Suite มาพร้อมฟีเจอร์เยอะก็จริง แต่มีบางงานที่ตัว Burp เองทำไม่ได้หรือทำได้แต่ไม่สะดวก เช่น การทดสอบ Broken Access Control ทั้ง application ด้วยมือนั้นใช้เวลานานมากครับ ต้องเปลี่ยน token ส่ง request ใหม่ เทียบ response ทีละ endpoint หรือการหา hidden parameters ที่ไม่ได้อยู่ใน form ก็ต้องอาศัย wordlist กับ Intruder ซึ่งตั้งค่าหลายขั้นตอน ใน Burp ก็จะมี Extensions ที่ช่วยเราในเรื่องนี้ๆได้ ลองเข้าไปดูได้ที่ Extension→ BApp Store

ผมขอแนะนำตัวที่ผมใช้ประจำ:

Autorize: ตัวนี้แก้ปัญหาการทดสอบ Access Control ได้ดีมากครับ หลักการคือมันจะ replay ทุก request ที่เราส่ง โดยใช้ cookie ของ user ที่มีสิทธิ์ต่ำกว่าโดยอัตโนมัติ แล้วบอกเราว่า endpoint ไหนที่ access control ไม่ทำงาน แค่เปิด Extension นี้ทิ้งไว้ แล้ว browse app ตามปกติ Autorize จะทำงานให้เองครับ

Param Miner — ค้นหา hidden parameters ที่ไม่ได้อยู่ใน form หรือ JavaScript

Hackvertor — encode/decode ได้ทุกรูปแบบในที่เดียว ไม่ว่าจะเป็น Base64, URL encoding, HTML entities ไม่ต้องสลับไปเปิด CyberChef หรือเว็บ decode ข้างนอกให้เสียเวลาครับ

Logger++: บันทึก request/response ทุกตัว ดีกว่าตัวปกติของ Burp มาก สามารเก็บ Log ที่เราทดสอบและ export เป็น json หรือไฟล์อื่นๆ ได้ ในกรณีที่ลูกค้าต้องการดู Log การทดสอบที่เราทำทั้งหมด extension นี้จะเป็นตัวช่วยชีวิตคุณอย่างแน่นอน

สรุป

ผมมองว่าทุกเครื่องมือต่างๆ ที่เราใช้งานรวมถึง Burp Suite ถ้าเรามานั่งอ่าน document หรือทดลองฟีเจอร์ที่เราไม่เคยใช้ มันอาจจะสามารถช่วยเพิ่มประสิทธิภาพการทำงานของเราไม่มากก็น้อย มันมีหลายๆ ครั้งที่ผมใช้เครื่องมือโดยใช้แค่คำสั่งพื้นฐาน จนพี่ๆ ที่ทำงานมาบอกผมในหลายๆ ครั้งว่า “ลองใช้ฟีเจอร์นี้ดูสิ” ทำให้ผมรู้ว่ายิ่งเราศึกษาแต่ละเครื่องมือมากแค่ใน เราก็จะยิ่งดึงประสิทธิภาพของเครื่องมือนั้นออกมาใช้งานได้อย่างเต็มที่มากขึ้น

ถ้าใครยังใช้แค่ Proxy กับ Repeater ครั้งหน้าที่เปิด Burp ลองคลิกแท็บที่ไม่เคยคลิกดูครับ ลองเล่น Match and Replace, เปิด Comparer เทียบ response, ลง Autorize ปล่อยมันทำงานอยู่เบื้องหลัง และอีกหลายฟีเจอร์ที่ไม่ได้กล่าวถึงในบทความนี้ ผมเชื่อว่ามันจะเพิ่มประสิทธิภาพการทำงานให้กับผู้ทดสอบทุกท่าน หวังว่าบทความนี้จะเป็นประโยชน์กับทุกท่าน ขอบคุณที่อ่านครับ

ถ้าใครยังใช้แค่ Proxy กับ Repeater ครั้งหน้าที่เปิด Burp ลองคลิกแท็บที่ไม่เคยคลิกดูครับ ลองเล่น Match and Replace, เปิด Comparer เทียบ response, ลง Autorize ปล่อยมันทำงานอยู่เบื้องหลัง และอีกหลายฟีเจอร์ที่ไม่ได้กล่าวถึงในบทความนี้ ผมเชื่อว่ามันจะเพิ่มประสิทธิภาพการทำงานให้กับผู้ทดสอบทุกท่าน หวังว่าบทความนี้จะเป็นประโยชน์กับทุกท่าน ขอบคุณที่อ่านครับ

แชร์
กลับไปด้านบน

บทความที่เกี่ยวข้อง

อัปเดตข้อมูลด้านไซเบอร์ ทุกสัปดาห์
รับข่าวสารความรู้เชิงลึกเกี่ยวกับความปลอดภัยไซเบอร์จากดาต้าฟาร์มก่อนใคร

ฟีเจอร์นี้จะเปิดให้ใช้งานเร็ว ๆ นี้ โปรดติดตาม

ส่งสัปดาห์ละ 1 ครั้ง ไม่มีสแปม ยกเลิกการรับข่าวสารได้ทุกเมื่อ