7、防範遠(yuǎn)程注入攻擊
這(zhè)類攻擊在以前應該是(shì)比較常見(jiàn)的(de)攻擊方式,比如(rú)POST攻擊,攻擊者可(kě)以随便的(de)改變要(yào)提交的(de)✘數(shù)據值已達到(dào)攻擊目的(de).又(yòu)如(rú):COOKIES 的(de)僞造,這(zhè)一(yī)點更值得(de)引起程序編寫者或站(♣zhàn)長(cháng)的(de)注意,不(bù)要(yào)使用(yòng)COOKIES來(lái)做(zuò)為(wèi)用(yòng)戶驗證的(de)方式Ω,否則你(nǐ)和(hé)把鑰匙留給賊是(shì)同一(yī)個(gè)道(dào)理(lǐ).
比如(rú):
If trim(Request. cookies ("uname"))="fqy" and Request.cookies("upwd") =”fqy#e3i←5.com” then
……..more………
End if
我想各位站(zhàn)長(cháng)或者是(shì)喜好(hǎo)寫程序的(de)朋(péng)友(yǒu)千萬别出這(zhè≠)類錯(cuò)誤,真的(de)是(shì)不(bù)可(kě)饒恕.僞造COOKIES 都(dōu)多(duō)少(shǎo)年(nián)了(le),你(nǐ)還(hái)¶用(yòng)這(zhè)樣的(de)就(jiù)不(bù)能(néng)怪别人(rén)跑你(nǐ)的(de)密碼.涉及到(dào)用(yòng)戶密碼或者是(sπhì)用(yòng)戶登陸時(shí),你(nǐ)最好(hǎo)使用(yòng)session 它才是(shì)最安全的(de).如(rú)果≠要(yào)使用(yòng)COOKIES就(jiù)在你(nǐ)的(de)COOKIES上(shàng)多(duō)加一(yī)個(gè)信↕息,SessionID,它的(de)随機(jī)值是(shì)64位的(de),要(yào)猜解它,不(bù)可(kě)能(néng).例:
if not (rs.BOF or rs.eof) then
login="true"
Session("username"&sessionID) = Username φ
Session("password"& sessionID) = Password
‘Response.cookies(“username”)= Username
‘Response.cookies(“Password”)= Password
下(xià)面我們來(lái)談談如(rú)何防範遠(yuǎn)程注入攻擊,一(yī)般的(de)攻擊都(dōu)是(shì)将單表提交文(wén)件(jiàn)拖到(αdào)本地(dì),将Form ACTION=”chk.asp” 指向你(nǐ)服務器(qì)中處理(lǐ)數(shù)據的(de)文(wén)件(jiàn)即可(kě).如(rú)果你(nǐ)全部的(de)數(shù)據過濾都(dō u)在單表頁上(shàng),那(nà)麽恭喜你(nǐ),你(nǐ)将已經被腳本攻擊了(le).
怎麽才能(néng)制(zhì)止這(zhè)樣的(de)遠(yuǎn)程攻擊?好(hǎo)辦,請(qǐng)看(kàn)代碼如(rú)下↕(xià): 程序體(tǐ)(9)
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))®
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center>"
response.write " "
response.write "你(nǐ)提交的(de)路(lù)徑有(yǒu)誤,禁止從(cóng)站(zhàn)點外(wài)部提交數(shù)據請(qǐng)≥不(bù)要(yào)亂改參數(shù)!"
response.write " "
response.end
end if
%>
‘個(gè)人(rén)感覺上(shàng)面的(de)代碼過濾不(bù)是(shì)很(hěn)好(hǎo),有(yǒ♣u)一(yī)些(xiē)外(wài)部提交竟然還(hái)能(néng)堂堂正正的(de)進來(lái),于是(shì)再寫一(yī)♥個(gè).
‘這(zhè)個(gè)是(shì)過濾效果很(hěn)好(hǎo),建議(yì)使用(yòng).
if instr(request.servervariables("http_referer"),"http://"&request.servervariables("host") )<1 then response.write "處理(lǐ) URL 時(shí)服務器(qì)上(shàng)出錯(cuò)。
如(rú)果您是(shì)在用(yòng)任何手段攻擊服務器(qì),那(nà)你(nǐ)應該慶幸,你(nǐ)的(de)所有(yǒu)操作(zuò)已經被服務器(qì)記錄,我們會(huì)&第一(yī)時(shí)間(jiān)通(tōng)知(zhī)公安局與國(guó)家(jiā)安全部門(mén)來(lái)調查你(nǐ)的(de)IP. "
response.end
end if
程序體(tǐ)(9)
本以為(wèi)這(zhè)樣就(jiù)萬事(shì)大(dà)吉了(le),在表格頁上(shàng)加一(yī)些(xiē)限制(zhì),比如( rú)maxlength啦,等等..但(dàn)天公就(jiù)是(shì)那(nà)麽不(bù)作(zuò)σ美(měi),你(nǐ)越怕什(shén)麽他(tā)越來(lái)什(shén)麽.你(nǐ)别忘了(le),攻擊者可(kγě)以突破sql注入攻擊時(shí)輸入框長(cháng)度的(de)限制(zhì).寫一(yī)個(gè)SOCKET程序改變HTTP_REFERER?∏我不(bù)會(huì)。網上(shàng)發表了(le)這(zhè)樣一(yī)篇文(wén)章(zhāng):
------------len.reg-----------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\擴展(&E)]
@="C:\Documents and Settings\Administrator\桌面\len.htm"
"contexts"=dword:00000004
-----------end----------------------
-----------len.htm------------------
----------end-----------------------
用(yòng)法:先把len.reg導入注冊表(注意文(wén)件(jiàn)路(lù)徑)
然後把len.htm拷到(dào)注冊表中指定的(de)地(dì)方.
打開(kāi)網頁[www.123z.cn],光(guāng)标放(fàng)在要(yào)改變長(cháng)度的(de)輸入框上(shàng)點右鍵,看(kàn)多(duō)了(le)一(yī)個(gè)叫擴展的(de)選項了(le)吧(ba)
單擊搞定! 後記:同樣的(de)也(yě)就(jiù)可(kě)以對(duì)付那(nà)些(xiē)限制(zhì)輸入內(nèi)容的(d✘e)腳本了(le).
怎麽辦?我們的(de)限制(zhì)被饒過了(le),所有(yǒu)的(de)努力都(dōu)白(bái)費(fèi)了(le)?不(bù),舉起你(nǐ)d≈e鍵盤,說(shuō)不(bù)。讓我們繼續回到(dào)腳本字符的(de)過濾吧(ba),他(tā)們所進行(xíng)的(d e)注入無非就(jiù)是(shì)進行(xíng)腳本攻擊。我們把所有(yǒu)的(de)精力全都(dōu)用(yòng)到(dào)ACTION以後的(de)頁面吧(ba),在chk.asp頁↕中,我們将非法的(de)字符全部過濾掉,結果如(rú)何?我們隻在前面虛晃一(yī)槍,叫他(tā)們去(qù)改注冊←表吧(ba),當他(tā)們改完才會(huì)發現(xiàn),他(tā)們所做(zuò)的(de)都(dōu)是♥(shì)那(nà)麽的(de)徒勞。
8、ASP木(mù)馬
已經講到(dào)這(zhè)裡(lǐ)了(le),再提醒各位論壇站(zhàn)長(cháng)一(yī)句,小(xiǎo)心你(nǐ)們的(de)文(wén)件λ(jiàn)上(shàng)傳:為(wèi)什(shén)麽論壇程序被攻破後主機(jī)也(yě)随之被攻擊者占據。原因就(jiù)在……對(duì)!AS↓P木(mù)馬!一(yī)個(gè)絕對(duì)可(kě)惡的(de)東(dōng)西(xī)。病毒麽?非也(yě).把個(gè)文(εwén)件(jiàn)随便放(fàng)到(dào)你(nǐ)論壇的(de)程序中,您老(lǎo)找去(qù)吧(ba)。不(bù)吐血才怪哦。如(rú)何才能(néng)防止A&SP木(mù)馬被上(shàng)傳到(dào)服務器(qì)呢(ne)?方法很(hěn)簡單,如(rú)果你(nǐ)的(de)論壇支持文(wén)件(jiànσ)上(shàng)傳,請(qǐng)設定好(hǎo)你(nǐ)要(yào)上(shàng)傳的(de)文(wén)件(jià×n)格式,我不(bù)贊成使用(yòng)可(kě)更改的(de)文(wén)件(jiàn)格式,直接從(cóng)程序上(shàng)鎖定,隻有(yǒσu)圖象文(wén)件(jiàn)格式,和(hé)壓縮文(wén)件(jiàn)就(jiù)完全可(kě)以,多(duō)給自(zì)己留點方便也(yě')就(jiù)多(duō)給攻擊者留點方便。怎麽判斷格式,我這(zhè)裡(lǐ)收集了(le)一(yī)個(gè),也(yě)改出了(le)一(yī)個(gè),大(dà)家(jiā)可(kě)以看(kàn)一(yī)下(xià):
程序體(tǐ)(10)
'判斷文(wén)件(jiàn)類型是(shì)否合格
Private Function CheckFileExt (fileEXT)
dim Forumupload
Forumupload="gif,jpg,bmp,jpeg"
Forumupload=split(Forumupload,",")
for i=0 to ubound(Forumupload)
if lcase(fileEXT)=lcase(trim(Forumupload(i))) then
CheckFileExt=true
exit Function
else
CheckFileExt=false
end if
next
End Function
‘驗證文(wén)件(jiàn)內(nèi)容的(de)合法性
set MyFile = server.CreateObject ("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile (sFile, 1) ' 讀(dú)取文(wén)本文(wén)件(j iàn)
sTextAll = lcase(MyText.ReadAll): MyText.close
'判斷用(yòng)戶文(wén)件(jiàn)中的(de)危險操作(zuò)
sStr ="8 .getfolder .createfolder .deletefolder .createdirectory
.deletedirectory"
sStr = sStr & " .saveas wscript.shell script.encode"
sNoString = split(sStr," ")
for i = 1 to sNoString(0)
if instr(sTextAll, sNoString(i)) <> 0 then
sFile = Upl.Path & sFileSave: fs.DeleteFile sFile&n§bsp;
Response.write "<center><br><big>"& sFileSave &am✘p;"文(wén)件(jiàn)中含有(yǒu)與操作(zuò)目錄等有(yǒu)關的(de)命令"&_
"<br><font color=red>"& mid(sNoString(i),2) &"</font>,為(wèi)了>(le)安全原因,<b>不(bù)能(néng)上(shàng)傳。<b>"&_"</big>< /center></html>"
Response.end
end if
next
程序體(tǐ)(10)
把他(tā)們加到(dào)你(nǐ)的(de)上(shàng)傳程序裡(lǐ)做(zuò)一(yī)次驗證,那(nà)麽你(nǐ)的(£de)上(shàng)傳程序安全性将會(huì)大(dà)大(dà)提高(gāo).
什(shén)麽?你(nǐ)還(hái)不(bù)放(fàng)心?拿(ná)出殺手锏,請(qǐng)你(nǐ)的(de) 虛拟主機(jī)服務商來(lái)幫忙吧(ba)。登陸到(dào)服務器(qì),将PROG ID 中的(de)"shell.applica$tion"項和(hé)"shell.application.1"項改名或删除。再将”WSCRIPT.SHEL↔L”項和(hé)”WSCRIPT.SHELL.1”這(zhè)兩項都(dōu)要(yào)改名或删除。呵呵,我可(kě)以大¥(dà)膽的(de)說(shuō),國(guó)內(nèi)可(kě)能(néng)近(jìn)半以上(shàng)的(de)虛拟主機(jī)都(dōu)沒改過。隻能(néng)慶幸你(nǐ)<們的(de)用(yòng)戶很(hěn)合作(zuò),否則……我删,我删,我删删删……

掃碼立即溝通(tōng)
公衆号加關注