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即可进入管理页面。
缓解因素:攻击者首先需要取得web服务器上其他站点的webshell权限,主要影响对象为虚拟主机。
? * 所带ewebeditor编辑器session欺骗漏洞
Ce-Admin自带了ewebeditor编辑器,版本为免费版2.8.0,这是一款所见即所得的网页编辑器,该系统对管理员的验证通过session实现,具体文件为Admin_Private.asp,相关代码如下:

图8:session验证
可以构造包含如下内容的asp文件,浏览后再访问uploadfile下的Admin_Default.asp即可进入管理页面。
缓解因素:攻击者首先需要取得服务器上其他站点的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会对进行解析,因为符号未闭合发生错误,可有效防下载