คลัง
web

Web Methodology

ภาพรวม workflow การโจมตีเว็บแบบเป็นระบบ ตั้งแต่ recon → mapping → ทดสอบช่องโหว่ตามหมวด เพื่อไม่ให้พลาดจุดสำคัญและทำงานได้เป็นลำดับ ใช้ได้ทั้งกับโจทย์ CTF และ pentest บน scope ที่ได้รับอนุญาต

BeginnerIntermediateAdvanced#methodology#recon#enumeration#workflow#web#owasp#ctf

1. ภาพรวม — ทำไมต้องมี methodology

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

Web attack workflow
Recon Mapping Test by class Exploit Escalate
ถ้าเจอ input — ทดสอบช่องโหว่ตามนี้
เปิดเว็บ + ดู source / response headers
view-source, Wappalyzer, Server / X-Powered-By / cookie
map endpoint + parameter ทุกจุด
ffuf, อ่าน JS, Burp sitemap, arjun (hidden param)
พารามิเตอร์อ้างถึง object? (id, file, user)
เลขเดา/ไล่ได้ทดสอบ IDOR
ชื่อไฟล์/pathLFI / Path Traversal
input สะท้อนกลับ / เข้า query DB / template?
สะท้อนกลับXSS
ต่อ DBSQLi → Blind → Union
template engineSSTI
server fetch URL ภายนอก / แปลง XML?
fetch URLSSRF → internal scan
parse XMLXXE
ไม่เจอช่องตรงๆbusiness logic / race / auth / access control
ได้ช่องโหว่ → ยกระดับเป็น RCE / อ่านไฟล์ / bypass auth
เป้าหมาย: foothold หรือดึงข้อมูล/flag

2. Recon & Mapping

  1. 1สแกนพอร์ต/บริการ (nmap -sCV) ระบุ web server, framework, เวอร์ชัน
  2. 2ระบุเทคโนโลยี: Wappalyzer, response headers (Server, X-Powered-By), cookie names
  3. 3Directory/file enumeration (ffuf/feroxbuster) หา endpoint, ไฟล์ backup, admin panel
  4. 4ดู robots.txt, sitemap.xml, /.git/, source maps (.js.map) ที่อาจรั่ว path/secret
  5. 5Spider/crawl ด้วย Burp เพื่อ map ทุก endpoint และพารามิเตอร์
  6. 6Parameter discovery (arjun/param miner) หา hidden parameter
คำสั่ง recon พื้นฐาน
# directory enum
ffuf -u https://target/FUZZ -w wordlist.txt -mc 200,301,302,403

# subdomain (ถ้า scope ครอบคลุม)
ffuf -u https://target -H "Host: FUZZ.target" -w subdomains.txt

# nuclei (ตรวจช่องโหว่ที่รู้จัก) — ใช้กับ scope ที่ได้รับอนุญาต
nuclei -u https://target

3. ทดสอบช่องโหว่ตามหมวด

เมื่อ map แอปแล้ว ทดสอบช่องโหว่ตามประเภทของแต่ละ feature — แต่ละ input/endpoint ควรเช็คครบทุกหมวดที่เกี่ยวข้อง ตารางนี้คือ checklist ที่แมพ feature กับช่องโหว่ที่ควรลอง:

Featureช่องโหว่ที่ควรทดสอบ
ช่องค้นหา / filter / idSQLi, NoSQLi, XSS
ฟอร์ม login / sessionauth bypass, brute, JWT, session fixation
อัปโหลดไฟล์file upload bypass, path traversal, RCE
template / ข้อความที่ renderSSTI, XSS
พารามิเตอร์ที่เป็น URLSSRF, open redirect
พารามิเตอร์ที่เป็นชื่อไฟล์/pathLFI, RFI, path traversal
import/parse XMLXXE
ฟังก์ชันที่เรียก OS/คำสั่งcommand injection
object/id ที่อ้างถึงทรัพยากรIDOR / access control
ขั้นตอนหลาย step / ราคา / โควตาbusiness logic, race condition

4. เครื่องมือหลัก

  • Burp Suite — proxy, repeater, intruder; แกนของการทดสอบเว็บ (ดู Burp Playbook)
  • ffuf / feroxbuster — directory & parameter fuzzing
  • nuclei — template-based vuln scanning
  • arjun — hidden parameter discovery
  • sqlmap — automate SQLi (เฉพาะ scope ที่ได้รับอนุญาต)

5. Quick Reference

  • enumerate ให้ครบก่อนเจาะ — attack surface ที่มองไม่เห็น = ช่องโหว่ที่พลาด
  • Recon → Map → Test by class → Exploit → Escalate
  • ทุก input ทดสอบทุกหมวดที่เกี่ยวข้อง (ดูตาราง feature→vuln)
  • เก็บทุก endpoint/param ด้วย Burp spider
  • อย่าลืม headers, cookies, JSON fields เป็นจุด inject ได้เหมือนกัน

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเพิ่งได้ URL เป้าหมายมาตัวเดียว ไม่รู้อะไรเลยเกี่ยวกับแอป มีแค่ Kali เปล่าๆ นี่คือ master flow ที่จับมือทำตั้งแต่ต้นจนถึงจุดที่ต้องเลือกว่าจะไปหัวข้อไหนต่อ

  1. 1เปิด Burp Suite → ตั้งเบราว์เซอร์ให้ผ่าน proxy 127.0.0.1:8080 → เข้าเว็บเป้าหมายเพื่อให้ Burp เก็บ sitemap ให้อัตโนมัติ
  2. 2รัน whatweb -a 3 https://target ดู stack (PHP/Node/Java/.NET) และ curl -sSI ดู header ที่บอกใบ้เพิ่ม
  3. 3รัน ffuf -u https://target/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt -mc 200,301,302,401,403 หา path ที่ซ่อน
  4. 4อ่าน robots.txt, sitemap.xml, /.git/ ด้วย curl — ถ้าเจอ /.git/ เปิดอยู่ให้ git-dumper ดึง source มาอ่าน
  5. 5รัน arjun -u https://target/endpoint หา parameter ที่ซ่อนบน endpoint ที่น่าสนใจ
  6. 6ไล่ทุก parameter/endpoint ที่เจอ แล้วเทียบกับตาราง 'Feature → ช่องโหว่ที่ควรทดสอบ' ด้านบนของหัวข้อนี้
  7. 7เลือกช่องโหว่ที่เข้าเค้าที่สุดก่อน (เช่น parameter ชื่อ id → ลอง IDOR/SQLi ก่อน) แล้วเปิดหัวข้อเฉพาะทางของช่องโหว่นั้นต่อ
  8. 8ถ้าทดสอบแล้วไม่เจออะไรเลยในหมวดที่คิดไว้ ให้วนกลับมาที่ตารางแล้วลองหมวดถัดไป อย่าติดอยู่กับช่องโหว่เดียวนานเกินไป
Master flow — จับมือทำ Web Methodology (routes ไปหัวข้ออื่น)
endpoint มี parameter ที่อ้าง object (id/file/user) ไหม?
✅ เลขเดา/ไล่ได้→ ทดสอบ IDOR
✅ เป็นชื่อไฟล์/path→ ทดสอบ LFI/Path Traversal
❌ ไม่มี parameter แบบนี้→ ไปดูจุด input ที่ reflect/ต่อ DB แทน
input สะท้อนกลับ / ต่อ query DB / เข้า template ไหม?
✅ สะท้อนกลับใน HTML→ XSS
✅ ต่อ SQL query→ SQL Injection
✅ เข้า template engine→ SSTI
❌ ไม่เจอจุดชัดเจน→ ดู server-side fetch/parse XML
server fetch URL ภายนอก / parse XML ไหม?
✅ fetch URL→ SSRF
❌ ไม่มีเลยทั้งสองแบบ→ ลอง GraphQL / race condition / request smuggling
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
proxy หลักทุกอย่างBurp Suite Community--
fingerprint stackwhatweb-wappalyzer, builtwith
directory/content enumerationffuf, feroxbuster, gobusterapt install seclists-
parameter discovery-pipx install arjun-
subdomain/recon เสริมamass, subfinder-crt.sh
vuln scan อัตโนมัติniktoapt install nuclei-
encode/decode payload ระหว่างทาง--CyberChef
🚑 ถ้าตันสนิท ลองท่าถัดไป: Information Gathering — ถ้ายังไม่รู้ stack ชัดเจนให้กลับไปเก็บข้อมูลก่อนเลือกช่องโหว่; Directory Enumeration / Parameter Discovery — ถ้า attack surface ที่เห็นน้อยเกินไป ให้ enumerate เพิ่มก่อนเจาะ; GraphQL Attacks — ถ้าเป้าหมายเป็น SPA ที่ยิง API เดียวซ้ำๆ อาจเป็น GraphQL; Business Logic Flaw — ถ้าทุกช่องโหว่เชิงเทคนิคทดสอบแล้วไม่ติดสักอัน ให้มองหาข้อผิดพลาดใน logic ของ flow แทน

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้