本文先介绍了12种常见WEB安全漏洞的原理和防范措施,然后介绍了PAS在安全漏洞防范上采取的措施。
目 录
01 WEB安全的基本介绍02 常见WEB安全漏洞的原理和防范03 PAS安全漏洞的防范01
WEB安全的基本介绍
WEB安全的前世今生WEB安全是伴随计算机安全的发展演化而产生的。
最初的计算机安全主要是针对计算机软、硬件系统的安全,比如通过计算机病毒、木马程序、暴力破解、非法入侵、硬件损坏、系统缓冲区溢出、拒绝服务等攻击手段,对计算机的系统资源、软件、数据进行破坏、更改、伪造、盗取、瘫痪等恶意行为。
伴随B/S架构的技术流行,随着WEB2.0的兴起,WEB的互联网技术的发展,基于WEB环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在WEB平台上并成为信息化的主流平台。
这也吸引了黑客们的强烈关注,WEB安全也成为计算机安全中更加关注的领域,WEB安全漏洞也成为黑客攻击互联网应用和企业信息系统的重要手段。
常见的WEB安全漏洞常见的WEB安全漏洞主要是SQL注入、XSS(跨站脚本)注入、命令注入、CSRF(跨站请求伪造)攻击、SSRF(服务端伪造请求)攻击、点击劫持、文件上传漏洞、反序列化漏洞、XEE(XML实体注入)漏洞、列目录漏洞、越权攻击、暴力破解等。
之所以产生这些漏洞,原因主要有下面几个方面:
1、业务程序缺陷:业务程序没有控制输入参数,限制一些恶意和非法的参数输入,导致遭受各种注入漏洞的攻击,如SQL注入、XSS注入、命令注入。业务程序没有限制文件上传的扩展名,导致文件上传漏洞。用户登录未有效控制恶意的重复登录试探而导致的暴力破解用户密码攻击。业务程序在功能权限和数据权限上未加合理的控制,导致用户的横向越权和纵向越权。
2、第三方依赖类库和JDK本身存在缺陷:JDK本身反序列化就存在漏洞,结合很多第三方开源软件反序列化过程存在漏洞,被恶意利用,利用植入恶意代码的payload,在反序列化过程中执行恶意程序或执行任意程序,比如反序列化漏洞、XEE实体注入漏洞。
3、HTTP协议的漏洞:利用HTTP协议的一些特性,实施攻击,比如CSRF攻击、SSRF攻击、点击劫持、URL跳转漏洞等。
4、网站配置缺陷:利用网站配置的一些缺陷,实施攻击,如列目录漏洞等。
02
常见WEB安全漏洞的
原理和防范
下面分别对各种常见的WEB安全漏洞进行原理分析和如何防范进行说明。(一)SQL注入漏洞
1、原理:SQL注入是当应用程序将用户输入的内容,拼接到SQL语句中,一起提交给数据库执行时,就会产生SQL注入威胁。
由于用户的输入,也是SQL语句的一部分,攻击者可以利用输入内容,注入自己定义的语句,改变SQL语句执行逻辑,让数据库执行任意自己需要的指令。
通过控制部分SQL语句,攻击者可以查洵数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。
SQL注入除了能有显示结果的注入外,还有一种叫SQL盲注,就是用正常SQL可以查询出数据,而拼接条件的SQL查不出数据,就说明拼接条件不正确,如果拼接条件后可以正常查出数据,就说明拼接条件是对的。黑客可以反复测试不同拼接条件,从而探测数据库的基本信息。
SQL注入的必备条件:(1) 可以控制输入的数据(2) 服务器要执行的代码拼接了控制的数据。2、示例:
举例,一个登录页面,用户正常输入用户名admin和密码就可以登录,这时候正常的登录验证SQL是这样执行的:SELECT * FROM user WHERE username='admin' AND password='xxxx'但通过用户的注入恶意的输入,会导致执行实际的SQL如下:SELECT * FROM user WHERE username='admin' --' AND password='xxxx' 这样,SQL将password的条件注释掉了,只通过用户名就可以登录成功。
3、危害:本来SQL注入攻击需要攻击者对SQL语句非常了解,所以对攻击者的技术有一定要求。但是现在已经出现了大量SQL注入利用工具,可以让任何攻击者,只要点几下鼠标,就能达到攻击效果,这使得SQL注入的威胁极大增加。
SQL注入危害如下:(1) 获取数据库信息l 管理员后台用户名和密码l 获取其他数据库敏感信息:用户名、密码、手机号码、银行卡信息……l 整个数据库:脱裤,即盗走数据库所有用户信息(2) 获取服务器权限(3) 植入Webshell,获取服务器后门(4) 读取服务器敏感文件
4、防范:(1) 所有查询语句使用数据库后台的参数化查询接口,如使用PreparedStatement预编译语句,而不要使用SQL拼接方式,可以完全防范SQL注入攻击。(2) 后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。(3) 对进入数据库的特殊字符(',",,<,>,&,,; 等)进行转义处理,或编码转换,或直接拦截。
(二)XSS注入漏洞1、原理:XSS跨站脚本攻击(Cross Site Scripting),因为和CSS样式表缩写相同,更名为XSS,是指恶意攻击者往Web页面里插入恶意html 代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
XSS注入攻击主要分为两种:反射型跨站脚本攻击攻击者通过输入恶意html代码,并通过应用的某个用到这个输入的URL,在用户打开这个URL的时候,浏览器会执行嵌入其中的恶意脚本。
存储型跨站脚本攻击攻击者利用web应用程序提供的录入或修改数据功能,将恶意html注入脚本存储到服务器或用户 cookie中,当其他用户浏览展示该数据的页面时,浏览器会执行页面中嵌入的恶意脚本。所有浏览者都会受到攻击。
2、示例:
如果页面输入框输入了“
",而这个输入有被拼接到了html页面中,运行页面,就会弹出对话框,显示1。如果输入"