Agentic AI ในงาน Pentest: ใช้ Burp Suite ร่วมกับ Claude Code ผ่าน MCP แล้วช่วยได้จริงแค่ไหน

โดย admin

4 นาที
แชร์
Blog Thumbnail

สวัสดีครับทุกคน วันนี้ผมจะมาเล่าเรื่องที่ช่วงนี้เป็นที่นิยมกันมาก นั่นคือการเอา AI มาช่วยทำ Pentest โดยเฉพาะการต่อ Claude Code เข้ากับ Burp Suite ผ่าน MCP ครับ

ผมได้ทดลองใช้ในการฝึกฝนกับ Lab มาสักพักแล้ว ขอสรุปให้ก่อนเลยว่ามันช่วยได้จริงครับ โดยเฉพาะ Lab ประเภทสร้าง Payload และไล่ดู Proxy History เป็นร้อย ๆ รายการเพื่อหา Pattern ที่ผิดปกติ ซึ่งเป็นงานที่คนทำแล้วเบื่อจนพลาดได้ง่าย

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

Burp MCP Server คืออะไร

MCP (Model Context Protocol) คือมาตรฐานกลางที่ให้ AI Agent เชื่อมต่อกับเครื่องมือภายนอกได้ครับ พูดง่าย ๆ คือแทนที่ AI จะทำได้แค่ตอบข้อความ เราสามารถยื่น “กล่องเครื่องมือ” ให้มันหยิบไปใช้เองได้

ทาง PortSwigger ได้ทำ Extension ชื่อ MCP Server ออกมาครับ พัฒนาด้วย Kotlin บน Montoya API หน้าที่ของมันคือเปิดพอร์ตขึ้นมา แล้วประกาศความสามารถของ Burp ออกไปเป็น Tool ชุดหนึ่งให้ AI Agent เรียกใช้งานได้

พอ Claude Code ต่อเข้ามา มันจะมองเห็นเครื่องมือทั้งหมด 27 ตัว ครับ เช่น อ่าน Proxy History, ยิง HTTP Request, ทำ Encode/Decode, ส่ง Request เข้า Repeater Tab หรืออ่าน Scanner Issues ทีนี้แทนที่เราจะต้องสั่งทีละขั้นว่าให้ไปกดตรงไหน Copy ค่าอะไรมา เราก็พิมพ์เป็นภาษาคนแล้วให้ Agent ไปหยิบมาเองได้เลยครับ

ตรงนี้มีจุดที่คนสับสนกันเยอะครับ เพราะตอนนี้ฝั่ง Burp มีของที่เกี่ยวกับ AI อยู่ถึงสามอย่าง และมันเป็นคนละเรื่องกันหมดเลย

  • Burp AI คือฟีเจอร์ผู้ช่วยที่แทรกอยู่ในเครื่องมือที่เราใช้กันอยู่แล้ว โดย PortSwigger รันโมเดลให้เราเองและกิน AI Credits
  • Burp AT คือ Agentic AI ที่ PortSwigger ทำมาให้เสร็จเรียบร้อย เพิ่งเปิด Public Beta ไปเมื่อปลายเดือนกรกฎาคม 2026 ตอนนี้มีเฉพาะบน Burp Suite Professional ครับ
  • Burp MCP Server คือสิ่งที่บทความนี้พูดถึง เป็นการที่เราประกอบ Agent ขึ้นมาเอง โดยเอาโมเดลของเราเองมาต่อกับ Burp ไม่กิน AI Credits และเราคุมเองทั้งหมดว่าจะใช้โมเดลตัวไหน

สองตัวหลังเป็น Agentic AI เหมือนกันครับ ต่างกันตรงที่ Burp AT เป็นของสำเร็จรูปที่ PortSwigger ออกแบบมาให้ ส่วนทาง MCP เราประกอบเอง ข้อดีของการประกอบเองคือยืดหยุ่นกว่าและใช้ได้บน Community Edition ด้วย แต่ก็แลกมากับการที่เราต้องรับผิดชอบเรื่องความปลอดภัยเองทั้งหมด ซึ่งจะเล่าต่อในหัวข้อถัด ๆ ไปครับ

วิธีต่อ Burp เข้ากับ Claude Code

ฝั่ง Burp ง่ายมากครับ ไปที่ Extensions แล้วเข้า BApp Store ค้นคำว่า “MCP Server” แล้วกด Install จากนั้นจะมีแท็บใหม่ชื่อ MCP โผล่ขึ้นมา ซึ่งค่า Default คือเปิดใช้งานอยู่แล้วที่ http://127.0.0.1:9876

แท็บ MCP ของ Burp MCP Server Extension

ส่วนฝั่ง Claude Code สร้างไฟล์ .mcp.json ไว้ใน Project ที่เราทำงานอยู่ แล้วใส่แค่นี้ครับ:

{
  "mcpServers": {
    "burp_suite": {
      "type": "sse",
      "url": "http://127.0.0.1:9876/"
    }
  }
}

จบแล้วครับ เปิด Claude Code ขึ้นมาใหม่แล้วเช็กด้วยคำสั่ง /mcp ว่าต่อติดและเห็น Tool ครบไหม

ตรงนี้มีเรื่องที่อยากเน้นเป็นพิเศษครับ ถ้าเพื่อน ๆ ไปหาวิธีติดตั้งจากบทความทั่วไป ส่วนใหญ่จะบอกให้กด Extract server proxy jar ออกมาจากแท็บ MCP แล้วรันผ่าน java -jar ซึ่งความจริงคือ Claude Code ไม่ต้องใช้ jar ตัวนั้นเลยครับ

เหตุผลคือโครงสร้างมันต่างกันครับ Claude Desktop จะรองรับการเชื่อมต่อ MCP แบบ stdio เท่านั้น เลยต้องอาศัยไฟล์ jar มาเป็นตัวกลาง (Proxy) เพื่อแปลงข้อมูล แต่สำหรับ Claude Code นั้นรองรับการเชื่อมต่อแบบ SSE (Server-Sent Events) ได้โดยตรง เราเลยสามารถชี้ URL เข้าไปที่ Burp MCP Server ได้เลยโดยไม่ต้องไปรันไฟล์ jar ให้ยุ่งยากครับ ซึ่งตอนนี้เอกสาร Official ของ PortSwigger อาจจะยังไม่ได้อัปเดตวิธีสำหรับ Claude Code ไว้ชัดเจนนัก การต่อแบบ SSE นี้จึงเป็นวิธีที่สะดวกที่สุดครับ

อีกเรื่องที่มักเข้าใจผิดกันคือต้องมี Burp Professional เท่านั้นถึงจะใช้ได้ จริง ๆ แล้วไม่ใช่ครับ ใน Tool ทั้ง 27 ตัว มีแค่ 3 ตัว ที่ล็อกไว้ให้ Professional คือ อ่าน Scanner Issues, สร้าง Collaborator Payload และ Poll Collaborator Interactions ที่เหลือใช้ได้บน Community Edition หมดเลยครับ (แต่ Community จะโดน Throttle อยู่ ในทางปฏิบัติเลยลำบากกว่าพอสมควร)

โดยทุกอย่างที่ผมเล่าในบทความนี้มาจากการใช้งานบน Burp Suite Professional ครับ

แล้วมันช่วยงานเราได้ตรงไหนบ้าง

ความสามารถที่ผมมองว่าต่างจากเครื่องมือเดิมจริง ๆ มีอยู่อย่างเดียวครับ คือการอ่าน Request หลายร้อยรายการพร้อมกัน แล้วมองเห็นความสัมพันธ์ระหว่างมัน

ช่องโหว่กลุ่ม IDOR และ Broken Access Control พวกนี้ไม่มี Signature ให้จับ Scanner จึงมักจะไม่เจอครับ สิ่งที่บอกใบ้ว่ามีปัญหาคือรูปแบบ เช่น ID ที่ไล่เรียงกันเป็นเลขลำดับ, Endpoint ที่ไม่เคยมี Tenant ID โผล่ในพารามิเตอร์เลย หรือ Response ของ User คนละ Role ที่มี Field ไม่เท่ากัน ซึ่งปกติคนต้องนั่งไล่ดูเองถึงจะเห็น และมันน่าเบื่อมากพอที่จะทำให้เราพลาดได้ครับ

งานประเภทนี้ LLM ทำได้ดีครับ เพราะมันคือการเทียบ Pattern ล้วน ๆ นอกจากนั้นผมยังใช้มันช่วยแตก Payload Variant, ไล่ Encoding Chain ที่ซ้อนกันหลายชั้น และช่วยร่างเนื้อหา Finding เพื่อเอาไปเรียบเรียงต่อในรายงานได้ด้วย

จากการใช้งาน Burp MCP กับ Claude Code พบว่าสามารถช่วยลดเวลาในการทดสอบ Lab ของผมได้อย่างชัดเจน โดยเฉพาะในส่วนของการทำ WAF Bypass ที่ต้องลองผิดลองถูกเป็นจำนวนมาก ทำให้สามารถค้นพบ Payload ที่ไม่ถูกบล็อกได้เร็วยิ่งขึ้น และยังสามารถ Reference ข้อมูลเก่าจาก Request History ได้อีกด้วย

ข้อจำกัดที่พบ

  1. มันยิง Active Scan ไม่ได้ครับ ใน Main Branch ไม่มี Tool สำหรับ Active Audit และไม่มี Tool สำหรับ Crawl เลย

  2. มันรัน Intruder ไม่ได้ครับ Tool ที่ชื่อ send_to_intruder แค่เปิดแท็บ Intruder แล้วใส่ Request ให้เท่านั้น มันไม่ได้กด Start และอ่านผลลัพธ์กลับมาไม่ได้

  3. เนื้อหาถูกตัดทิ้งโดยเราไม่รู้ตัว ทุก Tool ที่อ่าน Traffic จะ Cap ข้อมูลไว้ที่ 5,000 ตัวอักษรต่อรายการ แล้วต่อท้ายด้วย ... (truncated) ปัญหาคือ Request ถูก Serialize ก่อน พอ Header ยาว ๆ (เช่น Request ที่ WAF ทำการ Set-Cookie ยืนยันตัวตนหลาย ๆ รอบ) กินโควตาไปหมด Response Body ก็เลยหายไปทั้งก้อน ครับ

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

  4. ใช้ Token เยอะมาก การ Dump Proxy History ทั้งงานเข้าไปนั้นกิน Token และ Context Window มาก ทำให้ไม่เหมาะสมในทางปฏิบัติครับ วิธีที่ใช้ได้จริงคือใช้ get_proxy_http_history_regex กรองให้แคบก่อนเสมอ แล้วค่อยเจาะเป็นจุด

Target Scope ของ Burp ไม่ได้คุม MCP

หลายคนน่าจะคิดว่าตั้ง Target แล้วตั้ง Scope ไว้ก็ปลอดภัยแล้ว เพราะ Burp จะไม่ไปยุ่งกับอะไรที่อยู่นอก Scope แต่พอผมไปไล่ดู Source ของ mcp-server ในไฟล์ HttpRequestSecurity.kt พบว่าฟังก์ชันที่ตรวจสิทธิ์ก่อนยิง Request ดูแค่สองอย่างเท่านั้น คือค่า “Require approval for HTTP requests” (requireHttpRequestApproval) กับ Auto-approve List ของแท็บ MCP เอง มันไม่เคยเรียก api.scope() เลยครับ

แปลว่า Allowlist ในแท็บ MCP คือด่านเดียวที่กั้นไม่ให้ Agent ยิงออกนอก Scope ของงานเรา

โดย Default ค่า “Require approval for HTTP requests” เปิดอยู่ครับ ทุกครั้งที่ Agent จะยิงไปหา Host ที่ยังไม่อนุมัติ จะมี Dialog เด้งขึ้นมาให้เลือกสี่ทาง คือ Allow Once, Always Allow Host, Always Allow Host:Port และ Deny

สิ่งที่ต้องระวังเป็นพิเศษครับ:

  • อย่ากด Always Allow Host แบบอัตโนมัติเพื่อลดความรำคาญ เพราะนั่นคือการปิดกลไกป้องกันตัวเดียวที่เรามีอยู่
  • ระวัง Scope ที่เป็น Wildcard (*.domain) ให้ดีครับ หากเป้าหมายเป็นแพลตฟอร์มที่ให้บริการลูกค้าหลายรายร่วมกัน (Shared Platform) การตั้งเป้าเป็น *.example.com อาจทำให้เราเผลอไปเทสต์โดเมนของคนอื่นจนหลุด Scope ได้
  • อ่าน Host ใน Dialog ทุกครั้งก่อนกด ไม่ใช่กดผ่านเพราะความเคยชิน
  • อย่าปิด “Require approval for HTTP requests” และอย่าเปิด “Enable tools that can edit your config” (ค่า Default ปิดอยู่แล้ว ปล่อยไว้แบบนั้นดีที่สุดครับ)

Request ที่ Agent ยิงออกไป ต้องตามดูที่ Logger ไม่ใช่ Proxy History

เรื่องนี้ทำเอาผมงงอยู่พักหนึ่งเหมือนกันครับ คือ Tools send_http1_request และ send_http2_request ทำการส่ง Request ผ่าน api.http().sendRequest() ซึ่งไม่ได้วิ่งผ่าน Proxy ของ Burp ผลก็คือ Request ที่ Agent ยิงออกไป จะไม่ปรากฏใน Proxy History ครับ

ตอนแรกผมนึกว่ามันหายไปเฉย ๆ แต่จริง ๆ แล้วมันไปโผล่อยู่ที่แท็บ Logger ครับ เพราะ Proxy History เก็บเฉพาะ Traffic ที่วิ่งผ่าน Proxy เท่านั้น ส่วน Logger จะเก็บ Traffic ของเครื่องมือทุกตัวใน Burp รวมถึงที่ Extension ยิงออกไปด้วย

แท็บ Logger ใน Burp Suite

ดังนั้นถ้าเพื่อน ๆ อยากรู้ว่า Agent ยิงอะไรออกไปบ้าง ให้ไปดูที่ Logger นะครับ อย่าไปนั่งหาใน Proxy History เพราะไม่เจอแน่นอน

ที่ต้องระวังคือ Proxy History เป็นที่ที่เราคุ้นเคยและเปิดดูกันโดยอัตโนมัติ ถ้าเราเผลอเชื่อว่าเห็นทุกอย่างจากตรงนั้น เราจะประเมินพลาดว่า Agent ทำอะไรไปบ้าง แนะนำให้เช็กด้วยว่า Logger เปิด Capture อยู่ตั้งแต่ก่อนเริ่มงาน จะได้ไม่พลาดช่วงต้น

อีกวิธีที่ผมชอบใช้คือให้ Agent เอา Request ไปวางไว้ใน Repeater Tab แล้วเรากดยิงเอง (Tool create_repeater_tab แค่เตรียม Request ไว้ ไม่ได้ยิงเอง) ช้ากว่าครับ แต่ได้ทั้งความชัวร์ว่าอะไรถูกส่งออกไป และได้ตัว Request ที่พร้อมเอาไปใส่รายงานเลย

เช็กลิสต์ก่อนนำไปใช้งานจริง

ผมสรุปเป็นเช็กลิสต์สั้น ๆ ไว้ให้เพื่อน ๆ เอาไปปรับใช้กันได้เลยครับ

  • เปิด “Require approval for HTTP requests” และ “Require approval for project data access” ไว้ตลอด
  • ปิด “Enable tools that can edit your config” ไว้ (เป็นค่า Default อยู่แล้ว)
  • ไม่เก็บ Credential ไว้ใน Burp Config ระหว่างงานที่ใช้ MCP
  • อ่าน Host ใน Approval Dialog ทุกครั้ง และไม่ใช้ Wildcard *.domain กับเป้าหมายที่เป็นระบบที่มีการแยก Subdomain
  • ใช้ Tool get_proxy_http_history_regex กรองให้แคบก่อนเสมอ อย่า Dump ทั้งก้อน
  • ทุก Finding ที่ Agent เสนอมา ต้อง Reproduce ด้วยมือใน Repeater ก่อนเข้ารายงาน ข้อนี้ไม่มีข้อยกเว้นครับ
  • ตามดู Request ที่ Agent ยิงจากแท็บ Logger และเช็กว่า Capture เปิดอยู่ตั้งแต่ก่อนเริ่มงาน
  • ในงานที่ต้องการความชัวร์ ให้ Agent เตรียม Request ไว้ใน Repeater แล้วเรากดยิงเอง

สรุป

กลับมาที่ประโยคแรกครับ Burp MCP + Claude Code ช่วยงานเราได้จริง โดยเฉพาะงานไล่ Pattern ที่คนทำแล้วเบื่อจนพลาด แต่มันไม่ใช่ Automatic Scanner ไม่ใช่ตัวแทนคน และที่สำคัญคือ Scope ที่เราคุ้นเคยกันไม่ได้ควบคุมมันอยู่

ถ้าเพื่อน ๆ อยากลอง ผมแนะนำให้ทำ Lab ของ PortSwigger Web Security Academy ดูครับและต่อ MCP เข้าไป แล้วลองสองอย่างนี้ดู คือดูว่า Approval Dialog เด้งขึ้นมาตอนไหนบ้าง และลองเปิดแท็บ Logger ทิ้งไว้เพื่อดูว่า Agent ยิงอะไรออกไปบ้างจริง ๆ ใช้เวลาไม่นานครับ แต่จะเปลี่ยนวิธีที่เราใช้มันไปเลย

AI ในยุคปัจจุบันสามารถช่วยเจาะระบบได้จริงครับ ถึงแม้จะติด Guardrail ของผู้พัฒนาอยู่บ้าง แต่ถ้าใช้เป็น มันก็เป็นเครื่องมือที่ช่วยให้เจอช่องโหว่ได้เร็วขึ้นมาก จากที่ได้ทดลองใช้งานใน Lab ต่าง ๆ ผมมีกฎเหล็กเลยคือ ให้มันช่วยวิเคราะห์ แต่ไม่ให้มันช่วยยิงแบบอัตโนมัติ ผมจะใช้มันร่าง Payload หรือแกะ Logic ของแอปฯ แต่การยิงออกไปแต่ละครั้งต้องผ่านการ Validate จากผมก่อนเสมอ เพื่อป้องกันไม่ให้มันเผลอยิงหลุด Scope หรือทำระบบเป้าหมายพังครับ

หวังว่าบทความนี้จะเป็นประโยชน์กับเพื่อน ๆ ที่กำลังคิดจะเอา AI มาช่วยงาน Pentest นะครับ แล้วพบกันใหม่ในบทความหน้าครับ

อ้างอิง

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

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

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

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

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