動網7 0sp2 cookie欺騙原理

2021-06-20 21:06:20 字數 4610 閱讀 6770

cookie欺騙必須要收集到密文,cookie是怎麼收集的呢?不允許上傳,不允許html,不允許flash,防止網頁帶毒,防止asp木馬。防止跨站漏洞攻擊。建議:強制不允許長時間儲存cookie。

是不是只要收集到cookie密文就可以進行cookie欺騙呢?是的,如果password存放在cookie中的話。

動網作這個為什麼?相比較而言降低很多,因為你只要再登陸,前面的cookie就失效,動網就是讓你這個失效。

以動網資料庫和註冊、登陸、登出為核心建立passport是可以信賴的。

李濤 2006-11-22

動網7.0sp2 cookie欺騙原理 (本文發於《黑客防線》雜誌)

似乎近年來asp指令碼的漏洞都來自動網,從sql注入到cookie欺騙,動網無一不首當其衝。樹大招風,無不為奇,但在嚴酷的磨練下,動網最新的版本似乎無懈可擊。但網上關於動網入侵的案例不少,總結起來,其實並非動網本身問題,而屬論壇配置或管理不當。

動網論壇目前最新版本sql注入似乎不太可能了,而md5加密的16位密碼如果設定比較合理的話,暴力破解也非其對手。

目前直接入侵動網無非找一些管理上的不當入侵,比如預設的管理員使用者名稱密碼,根據預設的資料庫路徑盜得資料庫等。當有了資料庫而無法暴力破解管理員密碼的話,cookie欺騙就能大展身手!

然而在多次cookie欺騙得手而要對動網下**時候,問題出現了,在cookie其中幾個值進行修改欺騙並不成功,仔細研究後發現,其中password欄位並非md5加密的密文(圖1),一般的md5密文均為數字加小寫字母或數字加大寫字母的形式,大寫字母和小寫字母放在一起,一定是利用了另外的演算法處理了密碼。 圖1

開啟動網的源**,從index.asp檔案中跟蹤到inc/dv_clsmain.asp,發現這樣幾個函式:   引用 

if checkstr(trim(request.cookies(forum_sn)("password")))=truepassword then

execute("update [dv_user] set truepassword='"&truepassword&"' where userid="&userid)

memberword = truepassword

dim iuserinfo

iuserinfo = session(cachename & "userid")

iuserinfo(35) = truepassword

session(cachename & "userid") = iuserinfo

end if 第一句校驗如果使用者cookie中的password字段值等於資料庫中truepassword的值,等會,truepassword,這是什麼意思?開啟動網的資料庫,果然在dv-user欄位中發現userpassword和truepassword兩個字段,那這個truepassword是做什麼用的呢?

繼續跟蹤這個函式:   引用 

public sub newpassword0()

if userid=0 then exit sub

if not response.isclientconnected then

exit sub

end if

dim truepassword,usercookies

usercookies=request.cookies(dvbbs.forum_sn)("usercookies")

truepassword=createpass

if (isnull(usercookies) or usercookies="") and not isnumeric(usercookies) then usercookies=0

select case cint(usercookies)

case 0

response.cookies(forum_sn)("usercookies") = usercookies

case 1

response.cookies(forum_sn).expires=date+1

response.cookies(forum_sn)("usercookies") = usercookies

case 2

response.cookies(forum_sn).expires=date+31

response.cookies(forum_sn)("usercookies") = usercookies

case 3

response.cookies(forum_sn).expires=date+365

response.cookies(forum_sn)("usercookies") = usercookies

end select

response.cookies(forum_sn).path=cookiepath

response.cookies(forum_sn)("username") = membername

response.cookies(forum_sn)("userid") = userid

response.cookies(forum_sn)("userclass") = checkstr(request.cookies(forum_sn)("userclass"))

response.cookies(forum_sn)("userhidden") = userhidden

response.cookies(forum_sn)("password") = truepassword

'檢查寫入是否成功如果成功則更新資料

if checkstr(trim(request.cookies(forum_sn)("password")))=truepassword then

execute("update [dv_user] set truepassword='"&truepassword&"' where userid="&userid)

memberword = truepassword

dim iuserinfo

iuserinfo = session(cachename & "userid")

iuserinfo(35) = truepassword

session(cachename & "userid") = iuserinfo

end if

end sub 可以看出,論壇在對使用者的cookie進行校驗的時候,其中的密碼項是用乙個truepassword進行對照的,而在這個函式中,truepassword定義後賦值的時候給的是這個值:truepassword=createpass,檢視createpass函式,   引用 

public function createpass()

dim ran,i,lengthnum

lengthnum=16

createpass=""

for i=1 to lengthnum

randomize

ran = cint(rnd * 2)

randomize

if ran = 0 then

ran = cint(rnd * 25) + 97

createpass =createpass& ucase(chr(ran))

elseif ran = 1 then

ran = cint(rnd * 9)

createpass = createpass & ran

elseif ran = 2 then

ran = cint(rnd * 25) + 97

createpass =createpass& chr(ran)

end if

next

end function 這是乙個系統分配隨機密碼的函式,通過跟蹤下邊這個函式:   public sub newpassword()

if userid=0 then exit sub 

response.write ""

end sub 可以得出結論:動網在使用者開啟頁面的時候,通過cookie檢查使用者的資訊,然後進行密碼校驗的時候並不是通過使用者的真實password,而是通過乙個truepassword進行驗證,如果驗證通過,則重新分配乙個隨機密碼createpass,重新整理資料庫中truepassword的值為createpass,然後使用者登陸資訊寫入伺服器端session;當cookie校驗不能通過的時候,顯示登陸錯誤資訊,呼叫登陸頁面,提示使用者登陸,當使用者輸入正確的使用者名稱密碼的時候(這次的驗證在login.asp頁面中的dvbbs_chklogin函式中),使用者正確登陸,系統仍然分配乙個隨機的密碼儲存在truepassword欄位中,供下次登陸校驗用。

可以看出,動網論壇在防止cookie欺騙上確實下了一番工夫,是不是這樣就不能進行欺騙了呢?不是:當你要進行對動網的欺騙的時候,只要把cookie中password中的值替換成資料庫中truepassword的值就可以,但要注意:從你盜得資料庫到你進行欺騙的中間,你要使用的帳戶不能再登陸,否則資料庫中的truepassword值又會更新,那你那時候肯定是欺騙不成功的!

可以看出,動網論壇在各個地方考慮都是很周到的,雖然cookie驗證的**增加了好多,但為了安全性的提高降低了程式的效率,也是有必要的,這樣一來,動網的安全性才能在磨練中不斷提公升!

通過這次分析,初學者應該學會對程式的跟蹤和分析,其實也是每個學程式設計的必須掌握的知識。在碰到這類問題的時候,拿出程式的**仔細分析,你肯定會有新的發現,可能下乙個首發漏洞的發現者就是你! 

動網三部曲(一)dvbbs7 0sp2前台提權

可是最近還是有很多朋友問我怎麼操作。為了避免麻煩。我把我知道的都寫出來 以後大家不要在qq裡問我了。先說一下關於dvbbs7.0sp2的前台提權方法。工具 http 61.232.173.243 83 soft xiumu dvbb70ssp2.exe 1 先開啟需要測試的論壇,版本號必須是dvbb...

Access ,Oracle , 動網論壇v7 0

新人新氣象,流水一篇.最近應主管的要求,要把動網論壇放到內部網站上來,並且要把for access 改成 for oracle.我原來到是沒接觸過oracle,但是一想,無非就是修改一下sql而已,也沒甚麼太難得.結果一改,問題來了,oracle的中沒有自增id這個概念,只能用sequences 或...

動網論壇7 1sp1,部落格存在安全漏洞及解決

我們在boke.asp檔案後邊的引數加入 如 boke.asp?lantian.index.html 加個 變成boke.asp?lantian.index.html,發現報錯。這一下為sql注入開了方便之門。分析boke.asp等檔案得知,讀取查詢引數的語句在boke cls main.asp中,...