ก่อนอื่นเลยฉันไม่รู้ว่าผู้โจมตีคนใดที่พยายามจะทำให้สำเร็จ บางทีอาจมีสคริปต์ PHP หรือ PHP เวอร์ชันที่มีความเสี่ยงต่อการถูกโจมตีด้วย ID ที่แปลกประหลาด คุณอาจไม่มีอะไรต้องกังวล
เซิร์ฟเวอร์ของคุณมีพฤติกรรมตรงตามที่คาดไว้ 200 คือรหัสที่คาดไว้ในสถานการณ์นั้นเนื่องจาก Apache แปลความหมายของ URL ที่ส่งไปยังมันอย่างไร
ครั้งแรกที่http://allrequestsallowed.com
ได้รับการปฏิบัติเหมือนปกติ 'พิธีกร:' ส่วนหัว ( ทราบว่าฉันไม่คิดว่านี้จะถูกระบุใน RFC และเซิร์ฟเวอร์อื่น ๆ ที่ไม่อาจตีความว่าวิธีนี้ผมผิดนี้จะถูกระบุใน RFC 2616 ในส่วน 5.1 2 ถึงแม้ว่าลูกค้าไม่ค่อยจะใช้แบบฟอร์มนั้นขอโทษฉันต้องไปแก้ไขการใช้งานเซิร์ฟเวอร์ HTTP ฉันเขียนกลับไปสักครู่ ... )
ทีนี้สมมุติว่าคุณไม่มีเว็บไซต์ชื่อ 'allrequestsallowed.com' ดังนั้นจะเกิดอะไรขึ้นเมื่อ Apache ได้รับHost:
ส่วนหัว (หรือเทียบเท่า) สำหรับชื่อโฮสต์ที่ไม่รู้จัก มันเลือกโฮสต์เสมือนแรกเป็นค่าเริ่มต้น นี่คือพฤติกรรมที่กำหนดไว้อย่างดีและมีเอกสารสำหรับ Apache ดังนั้นสิ่งที่โฮสต์เสมือนแรกของคุณคือ (หรือเพียงแค่การกำหนดค่าเซิร์ฟเวอร์หลักหากไม่มี vhosts ใด ๆ ) ก็เข้าครอบครองไม่ว่าจะมีชื่ออะไรก็ตาม
ตอนนี้ส่วนที่เหลือของ URL ที่ระบุประกอบด้วยสองส่วน - พา ธ/
และพารามิเตอร์ GET ( ?PHPSESSID...
บิต)
ทีนี้เส้นทาง/
ควรจะปรากฏบนเว็บเซิร์ฟเวอร์ทุกอันที่นั่น ในกรณีส่วนใหญ่มันแมปกับสิ่งที่ชอบindex.html
หรืออาจเป็นindex.php
สคริปต์แม้ว่าคุณสามารถแทนที่ใด ๆ ของหลักสูตรนี้
หากแมปไปยังไฟล์ HTML แบบคงที่ไม่มีอะไรผิดปกติเกิดขึ้นอย่างแน่นอน - เนื้อหาของไฟล์ถูกส่งคืนและนั่นคือพารามิเตอร์นั้นจะถูกละเว้น (สมมติว่าคุณไม่ได้มีคำสั่งกำหนดค่าขั้นสูงบางอย่างและคุณเกือบจะไม่แน่นอน)
ในทางกลับกันหากเป็นสคริปต์บางประเภทPHPSESSID
ตัวแปรนั้นจะถูกส่งผ่านไปยังสคริปต์ หากสคริปต์ใช้ตัวแปรนั้นจริง ๆ(ในกรณีนี้เฉพาะสคริปต์ PHP ที่ใช้การจัดการเซสชันในตัวของ PHP เท่านั้น) พฤติกรรมของมันจะขึ้นอยู่กับเนื้อหา
อย่างไรก็ตามในทุกกรณีแม้ว่าการแมปของคุณ/
กับสคริปต์ PHP โดยใช้เซสชันจะไม่มีอะไรเกิดขึ้น รหัสเซสชันอาจยังไม่มีอยู่และจะถูกละเว้นหรือสคริปต์จะแสดงข้อผิดพลาด
ในกรณีที่ไม่น่าเป็นไปได้ที่จะมี ID เซสชันอยู่ผู้โจมตีสามารถจี้เซสชันของบุคคลอื่นได้ นั่นอาจจะไม่ดี แต่มันไม่ใช่ช่องโหว่ด้านความปลอดภัยในตัวเอง - ช่องนั้นจะเป็นที่ใดก็ตามที่ผู้โจมตีได้รับข้อมูลรหัสเซสชันจาก (การสูดดมเครือข่ายไร้สายเป็นตัวเลือกที่ดีถ้าคุณไม่ได้ใช้ HTTPS) พวกเขาไม่สามารถทำสิ่งใด ๆ กับผู้ใช้ที่เซสชันเดิมไม่สามารถทำได้
แก้ไข: นอกจากนี้ '% 5C' ภายใน SESSIONID จะจับคู่กับอักขระเครื่องหมายทับขวา นี่น่าจะเป็นการทดสอบการโจมตีผ่านไดเรกทอรีในโฮสต์ windows
curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80
แต่เราได้พบรายการเช่นนี้ในบันทึกของเราและเราก็สามารถที่จะตรวจสอบว่ามันก็ไม่ได้เป็นอันตรายโดยการทำซ้ำคำขอด้วยขด: การกำหนดค่าเริ่มต้นดูเหมือนจะส่งคืนหน้า "ยินดีต้อนรับสู่ nginx" โดยไม่มีเนื้อหาที่มีความหมายในระบบอูบุนตูของเรา ดังนั้นมันจึงเป็นการตอบสนอง 200 ครั้ง แต่เป็นหน้าเว็บที่ง่ายต่อการรวบรวม - เราไม่ได้ส่งคำขอไปที่อื่นหรืออะไรทำนองนั้น