揭露88red生成htm靜態頁面企業建站系統漏洞第1/2頁

88red生成htm靜態頁面企業建站系統後門利用代碼,用88red做企業佔的朋友可要注意了 作者:小帥(xsser)@[0.S.T] 
本文已發表在《黑客手冊》第4期,轉載請註明出處,或以超鏈接方式註明:http://blog.0kee.com/xiaoshuai 小帥's blog
很久沒去asp300溜達了,不去總覺得的對不起這個發佈站的流量,也對不起黑客手冊那麼多讀者的強烈要求(別扔雞蛋!扔錢!),那好,既然牛都吹起來了,我不得不冒着生命危險看看代碼吧,反正我下載下來的時候就覺得很偉大,這個系統很偉大,他吹的比我還大,好好,我們看他怎麼說的:88red生成htm靜態頁面企業建站系統V3.0經過精心打造正式推出,集合了網站地圖、企業新聞中心、企業產品、搜索、客戶留言、下載、投票系統等等功能,基本涵蓋了一個企業網站所需要的基本功能。其生成靜態頁面的功能爲廣大企業網站優化搜索引擎SEO,提供了最大的幫助。系統設計了新的美工,更加貼近企業網站效果。我們用事實說話。1、未過濾的留言版打開目錄後發現conn.asp、config.asp等文件,那就看看吧,首先看config.asp裏沒有什麼特別的,conn.asp裏容錯了(就是防止暴庫了),沒戲?當然有,我們看下conn.asp: 
<% on error resume next dim conn dim connstr dim db db="data/qiyedata.asa" Set conn = Server.CreateObject("ADODB.Connection") connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db) conn.Open connstr%> 
順藤摸…亂摸吧,摸到啥就是啥,我摸到了數據庫,還是asa的,我先想到了一句話這個東西,一句話?什麼東西能和一句話連在一起呢?怎麼讓他入庫呢?用戶、留言、發佈等地方,我看了一下根目錄都是靜態的,想想html注入行不?這個想法我先擱着,去看留言,留言都是靜態的,唉!沒事,繼續…根目錄下有個叫savegb.asp的文件,想想也知道是保存留言的文件,那就看他的過濾吧,片斷如下: 
if request.form("code")="" then ‘驗證碼爲空就“彈死你”response.write"<script language=javascript>alert('請填寫您的名字');this.location.href='javascript:history.go(-1)';</script>"response.endend ifif request.form("content")="" then ‘你不寫留言內容就剝奪你的發言權response.write"<script language=javascript>alert('請填寫留言內容');this.location.href='javascript:history.go(-1)';</script>"response.endend ifset rs=server.createobject("adodb.recordset") ‘滿足以上2個要求才讓你去見數據庫sql="select * from gb"rs.open sql,conn,3,3 
唉!文件頭也就個conn.asp沒什麼防止或者過濾的,這樣就造成2個結果:第1、直接寫一句話得到shell。第2、跨站腳本攻擊咯!先來看第一個辦法,寫一句話(前提數據庫裏沒幹擾),如圖1

然後我們點擊“提交”,這樣我們的一句話就輸入到asa的數據庫了。我是小旋風,asa格式的文件不解析的,所以我換成asp,但是原理是一樣的,我們來看圖2

這樣我們就成功的把一句話插到了數據庫裏,接着就是提權什麼的。第2個,我們來看xss,由xss大家要馬上想到有不有辦法拿到webshell,比如利用管理員的session進行操作什麼的,跨站得到webshell,某牛人寫過,我們來看後臺吧,後臺驗證的還行,至少我們的萬能鑰匙不再萬能。片段如下: 
TheAdmin=Replace(Trim(Request("User")),"'","") ‘過濾了空格,並把單引號轉換成空格Pass=Replace(Trim(Request("Pass")),"'","") ‘和上面一樣的過濾。Set Rs=Server.CreateObject("Adodb.RecordSet")Sql="Select * From Admin Where admname='"&TheAdmin"'" 再進入數據庫操作Rs.Open Sql,Conn,1,3If Rs.eof thenResponse.Write "<Script Language='javascript'>alert('對不起,此用戶不存在!');window.location.href='Login.asp';</Script>"Response.EndElsePass1=Rs("admpass")If Pass1=Md5(Pass) thenSession("admin")=Rs("admname")Response.Redirect "Main.asp"ElseResponse.Write "<Script Language='javascript'>alert('對不起,密碼錯誤!');window.location.href='Login.asp';</Script>"End IfEnd IfRs.CloseSet Rs=NothingConn.CloseSet Conn=Nothing 
End If 
沒戲看了,單引號過濾了就被掐住了我們進後臺的辦法之一。繼續看代碼,思路現在整理一下,方便大家理解吧。留言過濾不嚴---à一句話入庫---àxss---à後臺驗證很好,無法進入-à找到配置文件的文件頭查看。2、利用漏洞1順藤摸webshell我們用默認密碼進去看看後臺,啥白盒黑盒一起測試,測到webshell就是好tester,呵呵,廢話不繼續了,小心編輯扣小費,我們來看圖3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章