ไม่ว่าคุณจะเชื่อหรือไม่ก็ตามผ่าน ASP คุณอาจแฮ็คเข้าไปในเว็บเซิร์ฟเวอร์ขโมยไฟล์บนเซิร์ฟเวอร์ได้อย่างง่ายดายจับรหัสผ่านผู้ใช้ของฐานข้อมูลเว็บและระบบอื่น ๆ หรือแม้แต่ลบไฟล์บนเซิร์ฟเวอร์จนกว่าระบบจะเสียหาย . มันเป็นเรื่องที่น่าตื่นเต้นและเกิดขึ้นจริง
ในบทความก่อนหน้านี้ฉันมุ่งเน้นไปที่วิธีการแสดงหน้าเมื่อเข้าถึงฐานข้อมูล ADO ค่าในการจัดทำหน้า ฉันอยากจะขอบคุณเพื่อนคนนี้ที่ชี้ให้เห็นข้อบกพร่องในโปรแกรมให้ฉันอย่างกระตือรือร้น หน้าและในเวลานั้นฉันไม่สามารถแน่ใจได้ว่า Pagecount สามารถรับจำนวนหน้าได้อย่างถูกต้องหรือไม่ดังนั้นฉันจึงขี้เกียจเขียนสูตรนี้ :) พูดตามตรงฉันยังไม่ได้ลองใช้ Pagecount ลองดูอย่าเรียนรู้จากฉันฉันขี้เกียจ
เมื่อเร็ว ๆ นี้เมื่อฉันพูดคุยเกี่ยวกับปัญหาเกี่ยวกับ BBS ใน ChinaeSasp ฉันพบว่าเพื่อนหลายคนไม่ทราบเกี่ยวกับปัญหาด้านความปลอดภัยของ ASP และฉันไม่รู้วิธีแก้ปัญหาซอร์สโค้ด ASP :: $ Data Display ที่พบบ่อยที่สุด ดังนั้นฉันคิดว่ามันจำเป็นมากที่นี่ฉันจะมุ่งเน้นไปที่ปัญหานี้สำหรับเพื่อนทุกคน ปัญหาด้านความปลอดภัยของ ASP ที่สำคัญสำหรับเว็บมาสเตอร์
วันหลัง :: $ data ช่องโหว่ถูกค้นพบและปล่อยออกมาเมื่อปีที่แล้วฉันตรวจพบเว็บไซต์ส่วนใหญ่ในประเทศจีนที่ใช้ ASP ในเวลานั้นและ 99% ของพวกเขามีปัญหาข้างต้นกับซอร์สโค้ดที่ปรากฏในวันนั้น ฉันยังมีปัญหาเช่นเดียวกับซอร์สโค้ดที่มองเห็นได้ คุณอาจคิดว่าการเห็นซอร์สโค้ดไม่ใช่เรื่องใหญ่ แต่ถ้าคุณเป็นเว็บมาสเตอร์คิดอย่างนั้นคุณผิดมาก ตัวอย่างเช่นหากโปรแกรมเมอร์ ASP เขียนรหัสผ่านเข้าสู่ระบบของไซต์ลงใน ASP โดยตรงจากนั้นเมื่อค้นพบซอร์สโค้ดอื่น ๆ สามารถป้อนหน้าเว็บที่ไม่ควรเห็นได้อย่างง่ายดาย ฟรี ในบางโปรแกรม BBS ที่พัฒนาขึ้นด้วย ASP มักจะใช้ไลบรารี AccessMDB เป็นสิ่งที่อันตรายมากถ้าคนที่ได้รับรหัสผ่านโดยเจตนาสร้างความเสียหายที่เป็นอันตรายเขาเพียงแค่ต้องเข้าสู่ระบบในฐานะผู้ดูแลระบบเพื่อลบโพสต์ทั้งหมดใน BBS ซึ่งก็เพียงพอแล้วสำหรับคุณที่จะสำลัก รายการต่อไปนี้มีช่องโหว่ที่ถูกค้นพบจนถึงตอนนี้ หลังจากชื่อไฟล์ ASP ในแถบที่อยู่เบราว์เซอร์ IIS3 มีปัญหาเดียวกัน
2. ช่องโหว่ที่รู้จักกันดีของ IIS2, IIS3 และ IIS4 คือ :: $ data Win98+PWS4 ไม่มีช่องโหว่นี้
อะไรทำให้เกิดช่องโหว่ที่น่ากลัวนี้อย่างแน่นอน? สาเหตุที่แท้จริงคือระบบไฟล์ที่ไม่ซ้ำกับ WindowsNT กำลังสร้างสัตว์ประหลาด ทุกคนที่มีสามัญสำนึกรู้ว่า NT มีระบบไฟล์ที่แตกต่างอย่างสิ้นเชิงจาก FAT: NTFS ซึ่งเป็นเทคโนโลยีที่เรียกว่าระบบไฟล์เทคโนโลยีใหม่ซึ่งทำให้ NT มีกลไกความปลอดภัยที่สูงขึ้น แต่ก็เป็นเพราะมันทำให้เกิดอาการปวดหัวมากมาย คุณอาจไม่ทราบว่า NTFs รองรับสตรีมข้อมูลหลายตัวที่มีอยู่ในไฟล์และสตรีมข้อมูลหลักนี้ที่มีเนื้อหาทั้งหมดเรียกว่าข้อมูลดังนั้นจึงช่วยให้เบราว์เซอร์เข้าถึงระบบ NTFS โดยตรงและจับภาพโปรแกรมสคริปต์ในไฟล์ได้อย่างง่ายดาย อย่างไรก็ตามเหตุผลโดยตรงสำหรับ :: $ data คือ IIS มีปัญหาเมื่อแยกชื่อไฟล์ซึ่งไม่ได้มาตรฐานชื่อไฟล์เป็นอย่างดี
เราจะแก้ปัญหานี้ได้อย่างไร? มีหลายวิธี:
.
b ติดตั้งแพทช์ที่จัดทำโดย Microsoft
แพตช์นี้สำหรับ IIS3, แพลตฟอร์ม Intel
ftp.microsoft.com/bussys/iis/iis
-public/fixes/cht/security/iis3-datafix/iis3fixi.exe
แพตช์นี้สำหรับ IIS3, แพลตฟอร์ม Intel
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis3-datafix/iis3fixa.exe
แพตช์นี้สำหรับ IIS4, แพลตฟอร์มอัลฟ่า
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixi.exe
แพตช์นี้สำหรับ IIS4, แพลตฟอร์มอัลฟ่า
ftp.microsoft.com/bussys/iis/iis-public/fixes/cht/security/iis4-datafix/iis4fixa.exe
ค. มันคือการติดตั้ง IE4.01SP1 บนเซิร์ฟเวอร์หรือไม่
d รักษาความคิดเห็นส่วนตัวของผู้เขียนพยายามติดตั้ง NT เวอร์ชันภาษาอังกฤษแทนการใช้เวอร์ชันภาษาจีน เวอร์ชันภาษาจีน
3. ปัญหาที่ต้องเผชิญกับเซิร์ฟเวอร์ที่รองรับพื้นที่หน้าแรกของ ASP และบริการโฮสติ้งเสมือนจริง
1. รหัส ASP บนเซิร์ฟเวอร์มีแนวโน้มที่จะได้รับอย่างผิดกฎหมายจากผู้อื่นที่มีสิทธิ์ ASP
เพื่อให้ตัวอย่างง่าย ๆ ในรูทีน ASP1.0 ที่จัดทำโดย Microsoft มีไฟล์. ASP ที่ใช้โดยเฉพาะเพื่อดูซอร์สโค้ดของไฟล์. ASP อื่น ๆ หากมีคนอัปโหลดโปรแกรมนี้ไปยังเซิร์ฟเวอร์โดยไม่มีข้อควรระวังใด ๆ บนเซิร์ฟเวอร์เขาสามารถดูโปรแกรมของผู้อื่นได้อย่างง่ายดาย
ตัวอย่างเช่น:
code.asp? source =/directory/file.asp
2. ฐานข้อมูลการเข้าถึง MDB ที่ใช้อาจถูกดาวน์โหลด MDB อยู่ไกล
< %connstr = dbq =+server.mapath (database/source.mdb)+; defaultdir =; driver = {microsoft access driver (*.mdb)}; driverid = 25; fil = ms access; 512; maxscanrows = 8; pagetimeout = 5;
ดังที่ได้กล่าวไว้ก่อนหน้านี้ในกรณีนี้ห้องสมุด MDB มีแนวโน้มที่จะดาวน์โหลดโดยผู้อื่นส่งผลให้เกิดการรั่วไหลของรหัสผ่าน ฯลฯ
ดังนั้นในฐานะที่เป็นเว็บมาสเตอร์เราควรใช้มาตรการบางอย่างเพื่อห้ามโปรแกรมอย่างเคร่งครัดเช่น code.asp (ดูเหมือนยากที่จะทำ แต่รหัสคุณสมบัติสามารถเรียกคืนได้อย่างสม่ำเสมอ) และ จำกัด การดาวน์โหลด MDB
3. ภัยคุกคามจากส่วนประกอบ FilesystemObject ที่ทรงพลัง
การดำเนินการไฟล์ของ IIS3 และ IIS4 ASPs สามารถนำไปใช้งานได้ผ่าน FileSystemObject รวมถึงการอ่านและเขียนไดเรกทอรีการดำเนินการของไฟล์ข้อความการเปลี่ยนชื่อและการลบไฟล์ ฯลฯ แต่ฟังก์ชั่นที่ทรงพลังนี้ยังเป็นแบ็คดอร์ที่อันตรายมาก FileSystemObJet สามารถเชื่อมโยงกับไฟล์ใด ๆ ในพาร์ติชัน FAT แม้ว่าการอนุญาตจะไม่ได้รับการตั้งค่าอย่างถูกต้อง แต่ก็สามารถถูกทำลายได้ น่าเสียดายที่เว็บมาสเตอร์หลายคนรู้เพียงว่าเว็บเซิร์ฟเวอร์ทำงานและไม่ค่อยได้ตั้งค่าสิทธิ์สำหรับ NTFS ในขณะที่การตั้งค่าเริ่มต้นสำหรับการอนุญาตไดเรกทอรี NT นั้นต่ำมาก ดังนั้นหากคุณเป็นเว็บมาสเตอร์ผู้เขียนแนะนำอย่างยิ่งให้คุณให้ความสนใจกับการตั้งค่าเซิร์ฟเวอร์และพยายามสร้างเว็บไดเรกทอรีบนพาร์ติชัน NTFS กลุ่มผู้ดูแลระบบโดยทั่วไปไม่จำเป็นต้องควบคุมอย่างเต็มที่
4. การโจมตีที่แอปพลิเคชัน ASP อาจเผชิญในอดีต
ในไฟล์ HTML หากข้อความที่ป้อนโดยไคลเอนต์จะแสดงในไฟล์ HTML จะต้องสอดคล้องกับมาตรฐาน HTML และโปรแกรม CGI โดยทั่วไปจะรวมภาษา HTML เฉพาะ เมื่อไคลเอนต์ป้อนเนื้อหาและแทรกไฟล์ HTML มันจะถูกแทรกลงในคำสั่งหัวและหาง HTML ในเวลาเดียวกันเช่น::
<font> ตัวแปรที่ป้อนโดยไคลเอนต์ </font> แต่ถ้า HTML ก่อนและหลังถูกทำเครื่องหมายบนหน้าจอคุณสามารถทำสิ่งต่าง ๆ ได้มากมาย
ถ้าพิมพ์บน:
</font> <font> ก่อนและหลังคำสั่ง <font> ที่สอดคล้องกับมาตรฐาน HTML ใช้สำหรับคำสั่ง HTML ในหน้าจอ CGI ของฉัน สิ่งที่แทรกลงในไฟล์ HTML จะกลายเป็น:
<font> </font> คำสั่งที่สอดคล้องกับมาตรฐาน HTML <font> </font> เนื่องจากคุณสมบัตินี้การเขียน JavaScript Vicious Loop นั้นง่ายมาก
<a href = url onMouseOver = ในขณะที่ (1) {window.close ('/')}> หรือ <a herf = url onmouseever = ในขณะที่ (ture) {window.close ('/')}> จากนั้นคุณสามารถสร้างอื่น ๆ ได้ สิ่งที่เบราว์เซอร์ของลูกค้าที่ดูข้อความเสียชีวิตเนื่องจากการวนซ้ำที่ตายแล้ว โปรแกรมที่พัฒนาโดย ASP อาจมีปัญหานี้ด้วยเช่นกันดังนั้นเมื่อคุณเขียนโปรแกรมที่คล้ายกันใน ASP คุณควรระวังการดำเนินการดังกล่าวเช่นการเขียนโปรแกรมเพื่อตัดสินอินพุตของลูกค้าและปิดกั้นคำสั่ง HTML และ JavaScript ทั้งหมด
หลังจากอ่านปัญหานี้หากคุณตกใจมากคุณต้องตรวจสอบเว็บไซต์หรือโปรแกรม ASP ที่มีอยู่ของคุณอย่างละเอียดเพื่อดูว่ามีช่องโหว่ใด ๆ ข้างต้นหรือไม่ หากคุณมีความเข้าใจเกี่ยวกับช่องโหว่ที่กล่าวถึงในบทความและมีการตอบโต้อย่างเพียงพอในขณะที่ขอแสดงความยินดีคุณควรเตือนให้คุณตรวจสอบเว็บไซต์และโปรแกรม ASP ของคุณบ่อยครั้ง การโจมตีโดยใช้ช่องโหว่ที่เราไม่รู้ ในที่สุดหากคุณมีข้อมูลเชิงลึกที่เป็นเอกลักษณ์เกี่ยวกับปัญหาด้านความปลอดภัยของ ASP ที่กล่าวถึงในบทความนี้หรือมีการค้นพบใหม่เกี่ยวกับช่องโหว่ฉันหวังว่าจะเขียนถึงฉันเพื่อหารือเกี่ยวกับมัน