arow 您现在的位置: Yes!黑客联盟 >> 技术 >> 黑客技术 >> 漏洞利用 >> 正文
专题栏目
[组图]Ce-Admin新闻发布系统漏洞分析           ★★★
Ce-Admin新闻发布系统漏洞分析
作者:哽咽 文章来源:本站原创 更新时间:2007-2-8 5:31:44 【字体:
该新闻发布系统目前主要用于图片新闻的发布,由于能生成html,浏览速度很快,产生了多个修改版本,目前发现至少有4个修改版本,用户群广大,虽然经过了修改,但是还是存在安全隐患:
    Ce-Admin原版下载地址:http://down.chinaz.com/s/15868.asp
    J111版图片程序下载地址:http://www.lwcode.com/codeinfo/1045.html
    52mt版图片程序下载地址:http://www.indowns.com/Soft/1/25/2005/200512265441.html
    lc520版图片程序下载地址:http://www.soucode.com/Software/Catalog18/7102.html
    玩乐吧版本,程序演示地址:http://www.ebpv.com
    由于存在的安全隐患都是相同的,我主要对原版程序文件进行漏洞分析,其他版本则进行简单介绍。

1、原版漏洞分析
  
* 管理目录下del.asp、save.asp来源未检查漏洞
      Ce-Admin版管理目录为ce-admins,j111版和lc520版管理目录均为j111admins,52mt版为Admin_52mt,更多的是修改成Admin,一般可以通过提交http://target/admin_login.asp然后查看网页源文件得到管理目录。
      由于del.asp和save.asp没有对来源进行检查,可以导致攻击者匿名就可以进行新闻以及新闻分类的删除,还可以非法进行新闻的添加、修改。

      来看del.asp中删除分类功能的代码:

 图1:删除分类部分代码

      通过提交如下url可以删除id为15并且名称为“security”的分类:(新闻的分类名称可以在首页找到,分类ID则可以进行构造和枚举,一般是1-50之内的数字)
      http://target/ce-admins/Del.asp?ID=15&Type=NewsClass&News_Class=security(url1)

      另外,上述代码并没有对ID进行合法性验证,可以导致注入,但是因为不容易取得ID和分类名称之间的对应关系,所以很难被攻击者利用。通过分析,ID和分类名的对应只可以通过提交上述“url1”来确认,但是如果确认,这个分类也就被删除了,再者攻击者没有权限进行分类的添加,所以无法继续利用。

      再看del.asp中删除新闻功能的代码:

图2:删除新闻部分代码

      需要两个参数,一个是类型News,一个是生成的新闻页面文件名File_Name,type固定,而新闻的文件名file_name可以根据首页新闻的URL得到,所以通过提交如下url可以删除数据库中记录以及生成的html文件:
      http://target/ce-admins/Del.asp?File_Name=20060309131700.html&Type=News

      由于未进行来源的验证,本地构造表单可以进行新闻的添加和修改,来看这部分代码:

图3:新闻添加功能部分代码

      需要4个参数,构造表单如下, Post地址为:http://target/ce-dmins/save.asp?Type=add


图4:构造的表单

      对指定ID新闻的修改只需要将上述表单的post地址改为:
      http://target/ce-admins/save.asp?Type=edit&ID=11

      这里的ID可以在html新闻页面的源文件里找到:


图5:新闻 ID包含在生成的html文件

 * 管理目录下save.asp导致网站web路径暴露漏洞
      进行新闻的批量生成时,save.asp会暴露服务器路径,由于没有来源检查,匿名用户只要提交如下url就可以知道网站web路径:(b_id为需批量生成的起始新闻id,e_id为结束id)http://target/ce-admins/Save.asp?Type=update&b_id=1&e_id=11111



图6:网站web路径暴露

 * session欺骗漏洞
      ce-admin系统对管理员的验证通过session实现,具体文件为check.asp:


图7:session验证

      可以构造包含如下内容的asp文件,浏览后再访问ce-admins下的admin_index.asp即可进入管理页面。
      <%Session("Name") = "hacker"%>
      缓解因素:攻击者首先需要取得web服务器上其他站点的webshell权限,主要影响对象为虚拟主机。

 * 所带ewebeditor编辑器session欺骗漏洞
      Ce-Admin自带了ewebeditor编辑器,版本为免费版2.8.0,这是一款所见即所得的网页编辑器,该系统对管理员的验证通过session实现,具体文件为Admin_Private.asp,相关代码如下:


图8:session验证

      可以构造包含如下内容的asp文件,浏览后再访问uploadfile下的Admin_Default.asp即可进入管理页面。
      <%Session("eWebEditor_User") = "hacker"%>
      缓解因素:攻击者首先需要取得服务器上其他站点的webshell权限,主要影响对象为虚拟主机。

 * 所带ewebeditor编辑器admin_uploadfile.asp目录遍历以及文件删除漏洞
      该asp文件是用来管理上传文件的,但是可以构造dir参数进行目录的遍历通过提交http://target/uploadfile/admin_uploadfile.asp?id=14&dir=../../
      返回结果如下,并且可以进行非授权文件的删除操作。


图9:目录遍历

      缓解因素:首先需要取得ewebeditor的后台权限。

 * 所带ewebeditor编辑器upload.asp文件上传漏洞
      上传通过upload.asp来实现,除了如图11设置的扩展名外,还对asp文件进行了限制:


图10:对asp文件的限制

      设置任何情况均不允许上传asp文件,但是我们可以突破,既然程序会把asp替换,那我们在上传文件设置里设置允许上传扩展名为aaspsp的文件,因为程序检查扩展名时把asp替换为Null,那么aaspsp就变成asp,就可以上传asp文件了


 
图11:上传文件扩展名设置


图12:经过设置后asp文件可以上传!

      当然我们还可以设置允许上传asa、cer等也能被asp.dll解析的文件来达到目的。
      缓解因素:首先需要取得ewebeditor的后台权限。

      注:以上ewebeditor编辑器的漏洞在最新免费版本2.8修正版中也存在,商业版未做测试。


2、其他修改版本简单分析

    其他修改版本中的玩乐吧版,直接把数据库改成了#$%mmpic%$#.asp(j111版改为j111mm.asp),初衷是为了防止下载,虽然通过http://target/data/#$%mmpic%$#.asp 不能下载,但是用flashget下载如下url则可以下载:
http://target/data/#$%mmpic%$#.asp
    这里涉及url编码的问题,因为#$%是非数字和字母,字母不需要编码,如果编码也是可以识别的,编码的规则是%加ascii码的16进制,#$%的ascii码为35、36和37,16进制则是23、24和25。因此#$%mmpic%$#的url编码是#$%mmpic%$#。url编码经常被攻击者用于Phishing钓鱼攻击,这里不再展开。

    Ce-Admin的密码是明文的,所以下载数据库后用access打开可以得到管理员密码直接登陆管理页面,然后添加新闻,或者构造表单添加新闻,在标题内输入一句话asp木马:发布后,http://target/data/#$%mmpic%$#.asp成了webshell,可以上传其他asp木马进行其他非授权的活动,甚至提升权限得到系统管理权限。


3、漏洞防范
 
 * del.asp和save.asp
      针对del.asp和save.asp的来源未检查以及web路径暴露漏洞,我们可以在这两个文件中加上头文件:处理 SSI 文件时出错

      check.asp内容如下:

    * session欺骗漏洞

      对于session欺骗,相关的是cookie欺骗,相对来说session比cookie更安全一些,因此我们不建议你改用cookie验证。建议选择设置比较安全的虚拟主机,并加强对服务器的安全管理。

 * 目录遍历漏洞
      在admin_upload.asp中找到sDir = Trim(Request("dir")这行,修改为:
 sDir = Replace(Trim(Request("dir")),"..", "/")

 * ewebeditor上传漏洞
      可以把upload.asp文件中的sAllowExt = Replace(UCase(sAllowExt), "ASP", "")改为:

      因为很多虚拟主机是全能主机,可以同时支持asp、aspx、jsp、cgi、php,因此也需要把这些过滤掉,上述语句是把asp等替换为”error”。

 * 另外,建议你把程序默认的管理员账户以及数据库文件名进行修改,不建议你把数据库改成asp来防止下载,如果一定要改成asp,那么安全的方法如下:
      首先新建1个txt文件,内容为,然后在需要改为asp的数据库文件中新建1个表,名字任意,字段任意,数据类型为ole对象,如图:

      添加数据库记录,ALT+T选择对象—>由文件创建-->选择刚才新建的文本,插入后显示如下:

     

      这样设置的原因是:asp会对进行解析,因为符号未闭合发生错误,可有效防下载。


友情提示:如果您对本文章的内容存在疑问请到点此进入论坛进行讨论

文章录入:哽咽    责任编辑:哽咽 
  • 上一篇文章:

  • 下一篇文章:
  •