六月WEB安全技术专题——说说那些安全的事
团队简介:
白帽子社区技术团队由多位优秀开发工程师,安全工程师,以及数名优秀安全技术人员自发组成,团队本照 公平,公正,公开的理念来经营,并已经举办数次线上技术交流活动,现已推出,月度技术专题,优秀技术分析 今后将会陆续推出线上活动:产品研发交流,名人专访,技术成果分享,优秀作者技术专栏,新手公开课等多项活动,来让更多人了解和学习到更全面的安全技术。同时在今后我们还会举办CTF线上技术比赛和线下沙龙活动,让各位更近距离的接触到技术大牛学习更好的安全技术。
本次专题的核心主题经各位用户的一致投票决定为WEB安全系列,本次我们将围绕这个主题以平时所积累的众多经验对其展开全方面的研究和实例说明,让各位了解到如今存在的各种各样的风险以及如何防御这些存在的威胁。
文档声明:
本文档意在为广大安全技术人员提供科普教材提高网络安全意识,非法利用本文档中的技术对他人进行非法攻击的,造成的任何后果与本文档及社区团队无关。投稿人投稿内容对他人企业造成不良影响以及损失由投稿人承担。
一.WEB安全现况分析
随着网络时代的不断变更,越来越多的企业或者*机构开始从电视广播,广告转变为网络宣传,网络通知这无疑加快了信息传播的速度以及扩大了传播范围,但由此而来的则是大量的地网络攻击与数据泄露,各种安全公司也在不断地修复漏洞推出安全产品但是网络攻击并没有因此停止,每年因为网络攻击造成的损失高达上千亿,我们也不得不深思造成这种现况的原因。
1.企业网站安全问题
企业网站多适用于各中小型企业,业务范围更多的是体现在个人经营或者信息发布或广告宣传,大多数采用的是独立开发的程序,而这种网站也是最为容易被攻击的对象,因为其首先是规模较小,第二此类网站有许多涉及财产交易所以在多数黑产交易中此类网站占有很大的比例,第三由于是独立开发的程序多数企业没有对程序进行良好的安全性审计所以就有可能存在很多的程序漏洞,但是由于多数企业的经营范围较小,所以大多数的企业不愿意承受高昂的维护费用,所以大部分的企业都轻视了安全方面的重要性,像SQL注入这种高危漏洞大多数都发生在此类网站中,于是就造成很多刚踏入安全行业的人都可以轻而易举的拿下很多企业网站。
2.社交网站安全问题
社交网站多数为论坛,社区等可多用户注册的网站,此类网站大多是采用通用CMS程序来搭建所以在程序安全上要高于企业网站的安全,但是没有绝对的安全程序,社交网站由于其程序的公开性也为其他用户寻找漏洞带来了便利,而且由于其庞大的用户数据也同样成了黑产交易中的主要目标,但最重要的一点还是漏洞的生命周期,从漏洞的产生到通知官方修复再到补丁的推出这一过程的时间决定了用户信息财产安全是否能得到保障。
二.漏洞种类详解
NO.1 SQL注入漏洞
SQL注入漏洞正如我们在第一部分说的那样绝大多数还是出现在中小型企业网站上,但同样一些大型企业或*机构也存在此类漏洞,造成SQL注入的主要原因是带入查询不合法的SQL语句,而造成不合法SQL语句的手段有很多种所以导致SQL注入漏洞一直是WEB安全中的一个重大威胁,由于漏洞的危害大且利用的简易性也成为多数黑客眼中拿WEBSHELL以及窃取用户信息的重要路径之一。
注入漏洞分类:
GET注入
POST注入
COOKIE注入
盲注
宽字节注入
延时注入
字符串截断注入
双编码注入
排序注入
对于SQL注入漏洞的认识多数人依旧停留在 and 1=1 and 1=2报错上面,然而随着网络安全知识的普遍性这种手段也逐步的落后,SQL注入漏洞也逐渐变的隐匿起来,以往的过滤思维也变得难以抵挡黑客的攻击。
以下分析几段漏洞代码
首先看一下最简单的
$name=$_REQUEST[‘name’]; $sql=”SELECT * FROM ADMIN WHERE name=$name”; $res=mysql_query($sql); //此段代码对用户传入的参数未做任何的过滤,直接导致了SQL注入的产生 看一下进阶的 $name=$_REQUEST[‘name’]; $sql=”SELECT * FROM ADMIN WHERE name=’$name’”; $res=mysql_query($sql); //此段代码对变量添加了单引号的保护,但同样我们可以提交 a’or ‘a’=’a’#这种方法对其进行绕过
中级的
$name=$_GET[‘name’]; $sql=”SELECT * FROM ADMIN WHERE name=’$name’”; If($res=mysql_query($sql)){ $res=mysql_fetch_row($res); print_r($res); } else{ echo “内容不存在”; } //此段代码对查询不正确的信息做了一个友好的返回结果,但万变不离其宗这SQL注入还是存在,产生了盲注漏洞
高级的
//论坛程序 $passwd=md5($_REQUEST[‘passwd’]); $sql=”SELECT * FROM ADMIN WHERE name=’admin’and password=’$passwd’”; If($res=mysql_query($sql)){ echo “登陆成功”; }else{ echo “登陆失败”; } //这段代码限制了用户名并对密码进行md5加密导致用户无法使用敏感字符来测试是否存在注入,但是如果我们注册了一个admin 的用户名用其登陆就可以成功的登录到管理员账号
以上我们只是挑选了一些经典的漏洞类型,当然其他还有很多产生的原因,由于篇幅和漏洞出现概率的原因我们这里就不再一一展示。
上一篇: 站长们容易忽略影响网站排名的几大因素
下一篇: 防范xss的正确姿势