关于冰盾 | 使用条款 | 网站地图
 
IdeaCMS系统总体防御文档
IdeaCMS系统总体防御文档
作者:冰盾防火墙 网站:www.bingdun.com 日期:2014-12-07
 

一、程序漏洞

1、跨站漏洞。Guestbook.aspResume.asp这两个文件中添加数据时,所取参数没有任何过滤,可以进行跨站攻击。

2Cookie注入漏洞。还是上述两个文件在取参数时全用的Request(“参数名”),这样即使有通用防注入系统,也可以通过cookie注入将其绕过,提交危险字符。

3Session欺骗漏洞。后台admin/chkuser.asp,验证登录程序存在session欺骗漏洞。

4、后台注入、跨站漏洞。后台程序注入、跨站的问题基本没有考虑,没有做任何处理(这是很多程序员的通病,这当中不乏从事编程工作很多年的老程序员,记住:千里之堤,溃于蚁穴!)

5、上传文件漏洞。后台“网站管理”>>“上传设置”栏目,可以任意修改上传文件扩展名的类型,致使用户可以任意上传各种类型的网页木马(说这是漏洞有点冤枉写这个程序的程序员,人家作了设置了,后面会详细讲解)。

6、后台admin/Check_UserName.asp唉,这个文件实在不知道写程序的人想干什么,估计是调试程序时方便自己看的,最后发布时忘删除了,真不应该(被领导看了一定会被扣工资)。

7、验证码漏洞。后台登录没有验证码,可以被爆破。

二、修改方案

1、加入参数过滤函数。根据是上述14所出现的参数过滤不严而导致注入、跨站的问题,写1个字符过滤函数,取每个参数时都调用这个函数,可以防注入,代码如下:

Function CheckPara(ParaName,ParaType) 
ParaName:
参数名称-字符型 ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)
Dim ParaValue 
ParaValue=Request(ParaName) 
If ParaType=1 then 
 If not isNumeric(ParaValue) then 
 Response.write "
参数" & ParaName & "必须为数字型!" 
 Response.end 
End if 
Else 
 ParaValue=replace(ParaValue,"
","’’") 
End if 
CheckPara=ParaValue 
End function

这是好多年以前的一个防注入函数了,好像是NB的小竹写的(不去考证了),但不管理怎么样,到现在它针对注入依然有效。现在的防注入系统中,针对字符型参数的屏蔽项很多,个人觉得不太合理。完全是一棒子打死的策略,假设在某个技术论坛中,有人问某条SQL语句怎么写,那他估计这辈子都得在非法字符的对话框中徘徊了。说到底,字符型注入归根结底需要闭合SQL语句,也就是要使用单引号来闭合语句,那么把单引号屏蔽掉就行了。

最后是跨站的问题了,针对本站的漏洞,是可以写入Htmljs代码,我们把“<”和“>”都屏蔽掉了,代码就无法被浏览器解释了。其实系统中有对Html字符进行过滤的函数,只是测试站点没用而已。

1)代码文件:inc/Function.asp

2)相关代码:

*************************************************

函数名:RemoveHTML

作  用:过滤HTML代码

参  数:strHTML   ----原字符串

返回值:过滤后的字符串

*************************************************

Function RemoveHTML(strHTML)

Dim objRegExp, Match, Matches

Set objRegExp = New Regexp

objRegExp.IgnoreCase = True

objRegExp.Global = True

取闭合的<> 

objRegExp.Pattern = "<.+?>"

进行匹配

Set Matches = objRegExp.Execute(strHTML)

遍历匹配集合,并替换掉匹配的项目

For Each Match in Matches

strHtml=Replace(strHTML,Match.Value,"")

Next

RemoveHTML=strHTML

Set objRegExp = Nothing

End Function

我们还可以把防注入和防跨站的函数写到一起,这样便于操作。至于跨站的相关知识,不在我们讨论的范畴,哪一天黑防开XSS专栏了,再一起研究。

2、正确取值,防止Cookie注入。上述问题2中的情况,为避免Cookie注入,首先得明白asp Request.QueryStringRequest.FormRequest3种方法的取值顺序。前2种没什么说的,分别就1Request.QueryStringRequest.Form。恰恰是

 

 
最新内容:
SQL构造语句暴字段[2014-12-07]
PHP168后台查看/修改任意文件漏洞[2014-12-07]
关于网站的SYN_RECV攻击的防范措施[2014-12-07]
电信IP网 防范黑客攻击策略详细分析[2014-12-07]
TCP三次握手/四次挥手[2014-12-07]
简单防范SYN_RECV攻击[2014-12-07]
相关内容:

合作伙伴: 黑基网 补天科技 威盾科技 站长下载 新飞金信 北京电信 ZOL应用下载
中华人民共和国增值电信业务经营许可证京ICP备14024464 公安备案号 京1081234 
版权所有©2003-2014 冰盾防火墙  www.BingDun.com 法律声明
总机:(010)51661195