专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » web服务器脚本程序:web脚本程序攻击的防范 »正文

web服务器脚本程序:web脚本程序攻击的防范

来源: 发布时间:星期六, 2009年9月12日 浏览:32次 评论:0
本文作者:lanker
文章出处:www.cnwill.com
发布时间:2005-01-06
如今WEB安全问题影响着整个安全界SQL注入跨站脚本攻击等攻击受到了关注
网络安全问题日益变更加重要国内依然有很多主机受到此类安全威胁所以我们今天讲讲如何通过安全编写WEB把损失降更小
综观WEB主机所到安全威胁大多都是WEB脚本造成下面就谈下如何防范受到攻击
1现在很多站点为了减少开发时间很多站点都部分或全部采用了第 3方这无疑是个节省时间好办法但也为站点安全性增加了风险如果你使用了第 3方公开那你就要注意了这类源码是公开在网上随便都可以找到很容易被黑客下载下来去研究其中漏洞这样你受攻击可能性就增加了举个简单例子吧就单说国内名气不错动网吧风格和实用性什么都不错在国内也有很多站点论坛都采用是动网但动网重大漏洞也不少就单说上些日子比较严重UPFILE漏洞吧直接上传ASP木马可怕吧!这样每当动网出现次大漏洞就涉及到用动网站点也出现了漏洞这两天我没事就在网上闲逛发现很多站点论坛用还是动网6.0版本呢人家官方都是DVBBS7.0+SP2漏洞就不用说了肯定是存在N多了
  解决办法:尽量少用或不用第 3方或应对第 3方进行评估后采用另管理员不要偷懒要经常去官方站点下载更新补丁

2. 如果你采用是自己开发那就要注意在输入地方要有严格过滤这也是最容易受到攻击地方比如SQL注入跨站脚本攻击基本都是利用过滤不严格来构造畸形语句进行这就是所谓输入验证攻击你应该明白是每个GET和POST请求都可以用来进行输入验证攻击然而最容易受到攻击地方就是输入字段通常情况下这些字段是登陆名口令地址电话号码个人主页等以及搜索地方还有个比较容易忽略地方就上COOKIE过滤让我们来看看BBSXP+SP1源码
下面是upface.asp 部分代码:
...........
<%
top
Request.Cookies("username")=empty then error("<li>您还未<a href=login.asp>登录</a>社区")

Request("menu")="up" then
id=Conn.Execute("Select id From [user] where username='"&Request.Cookies("username")&"'")(0)

...........

可以很清楚看到 对 Request.Cookies("username") 这个变量根本未做任何过滤象这样未过滤地方在BBSXP里还有很多这可以让我们来提交构造包进行注入攻击
要说COOKIES是容易忽略地方User-Agent 注入会另你意想不到在HTTP1.1规范标准就定义了个“User-Agent”头标我们抓个包看看:

GET /bbsxp/images/skins/1/T_bg.g HTTP/1.1
Accept: */*
Referer: http://localhost/bbsxp/Default.asp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive
Cookie: eremite=0; member_id=1; pass_hash=5140c3b61780e904b05d44f8d3193564; skins=1; ASPSESSIONIDQADBTQQA=AGIPJKACPGNICLMHAFEOBHKA; username=lanker; userpass=E10ADC3949BA59ABBE56E057F20F883E; _disibledevent=>
“User-Agent”用来鉴别浏览器你在这个串中经常可以看到“Mozilla”些表单应用使用“User-Agent”串来适应浏览器特殊性可以允许你指定特殊串这就给我们注射机会动网 User-Agent 注入是最好介绍说明和例子了不明白朋友可以看看 “动网论坛DVBBS漏洞及入侵则”和“深入分析DVBBS7 User-Agent注入”这两篇文章这可能就属于他们所说包注入了

下面列出通常情况要过滤要掉如下图:

然而对和些纯数字过滤最好莫过于用脚本语言本身:
比如 asp 脚本可以用 c,clong,isNumeric 这样过滤可以说是最严格种了PHP脚本里可以用val
这样
对于不能过滤“<”和“>”情况下跨站脚本防范手段是将所有尖扩号都转化成对应HTML编码对于“<”表示成“<” 对和“>” 表示成“>” 需要特别注意是对于上面所有输入过滤都要在服务端进行客户端所有验证都会等于徒劳无用可以很轻松绕过

好了上面已经过滤差不多了是不是现在就万事大吉了呢?答案是否定对于些数字字段还有许多潜在使用思路方法即使我们限制了数据必须是数字还是会引起所以我们下面要做是边界检查你不要小视边界检查哦某些时候他会暴出你绝对路径来地
般需要我们注意检查有:布尔值数字长度

最后个编写中注意就是要有恰当捕捉机制无论采用什么样语言编写都应该有象C#JAVA中TryCatch机智来捕获出错信息对于遇到异常时能够正常终止运行在出错提示页中应该尽量不要包含系统信息

整理总结:上面是我个人在学习中整理总结些经验希望能对编程人员编写安全健壮代码有定把帮助如有地方还请指教.







  • 篇文章: 如何寻找WEB漏洞及如何利用和防范

  • 篇文章: 卡哆日记存在严重问题!
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: