一、web应用安全概述
web应用常见的功能与优点
web应用的优点
web应用典型安全漏洞
不完善的身份验证措施 弱密码、验证不完善…… 不完善的访问控制措施 数据和功能缺乏保护,攻击者可以查看其他用户数据,或执行特权操作
SQL注入 攻击者可设计输入,提取数据,执行命令…… 跨站点脚本 攻击者可攻击其他用户、访问其信息、执行未授权的操作…… 信息泄露 应用程序泄露敏感信息,攻击者利用这些信息攻击应用程序 跨站点请求伪造 攻击者可诱使用户无意中使用自己的用户权限对应用程序执行操作
Web应用安全的核心问题:用户可提交任意输入
Web应用防御机制――处理用户输入
1.黑名单 黑名单包括一组已知的字符串或模式。处理用户输入的机制,应阻止任何与黑名单匹配的数据,并接受其它数据。
2.白名单 白名单仅包含与良性输入匹配的一组字符串、模式或一组标准。处理用户输入的机制,应接受任何与白名单匹配的数据,并阻止其它数据
3.净化 对用户输入的数据进行净化处理,防止造成任何不利的影响。如,删除输入数振中的恶意字符,或者对输入数据进行编码或转义。 例如:防御跨站点脚本攻击的常用方法,是将危险字符进行HTML编码。
4.安全数据处理 使用安全的编程方法处理用户数据。如,在数据库访问中正确地使用参数化查询。
有效性:白名单>净化>安全数据处理>黑名单
Web应用防御机制—―处理攻击
1.处理错误 web应用程序的一个关键防御机制是合理地处理无法预料的错误。在生产环境下,应用程序不应在其响应中返回任何系统生成的消息或其他调试信息。因为过于详细的错误消息非常有利于恶意用户向应用程序发动进一步攻击。
2.审计/错误日志 审计日志应记录所有重要事件,至少包括以下几项: (1)所有与身份验证功能有关的事件,如登录(成功或失败)、密码修改等。
(2)关键交易,如信用卡支付与转账。
(3)任何包含已知攻击字符串,公然表明恶意意图的请求。 错误日志记录出错信息,内容至少包括:错误类型、错误编号、错误描述、日期和时间、引发该错误的操作、错误发生时的用户名等。
3.发出警报 对应用异常、交易异常、已知攻击等行为,向管理员发出警报。管理员可采取的措施有:阻止发起攻击的IP地址或账号、将web应用从网络中断开等等。
4.应对攻击 web应用程序自动阻止攻击者的探查:对攻击者提交的请求的响应速度,越来越慢;终止攻击者的会话;强迫攻击者重新登录;要求攻击者执行其他步骤...。
二、服务器端常见平台和语言
Java平台:跨平台,应用多层与负载平衡架构,适于模块化开发。
主要有:EnterpriseJavaBean(EJB),Plain Old Java Object(POJO), Java Servlet, Java Web容器。常见的漏洞:
文件访问:可能会引入路径遍历漏洞
数据库访问:可能受到sQL注入攻击.
动态代码执行:没有动态评估Java源代码的机制,存在用户非法控制数据的风险Os命令执行:可能受到命令执行攻击
URL重定向:可能受到钓鱼攻击
套接字:攻击者可能会接入任意主机
ASP.NET:使用微软的.NET Framework,提供一个虚拟机cLR (Common Language Runtime和一组API。ASP.NET框架能防御一些常见的web应用程序漏洞。常见的漏洞:
文件访问:可能会引入路径遍历漏洞
数据库访问:可能受到sQL注入攻击
动态代码执行:攻击者可能在程序中执行任意命令OS命令执行:可能受到命令执行攻击
URL重定向:可能受到钓鱼攻击
套接字:攻击者可能会接入任意主机
PHP: PersonalHome Page,LAMP组合: Linux+Apache+MySQL+PHP。由于PHP框架原因,容易包含大量安全漏洞。常见的漏洞:
文件访问:攻击者可能会访问服务器文件系统上的任意文件
数据库访问:可能受到sQL注入攻击
动态代码执行:易于受到脚本注入攻击OS命令执行:可能受到命令执行攻击URL重定向:可能受到钓鱼攻击
套接字:攻击者可能会接入任意主机
Ruby on Rails:主要侧重于模型-视图-控制器体系架构。该架构中发现的漏洞,和PHP类似。 SQL:结构化查询语言,用于数据库访问。常见漏洞为:
SQL注入攻击****XML:可扩展标记语言,主要由标签和数据构成。
Web服务: web服务使用soAP来交换数据。SOAP使用HTTP协议来传送消息,开使用XML格式表示数据。服务器会以web服务描述语言(WSDL〉格式公布可用的服务和跌效,蚁击者可据此攻击身份验证服务。
三、客户端功能
HTML:超文本标记语言,是建立web界面所需的核心技术。
超链接:是指从一个网页指向一个目标的连接关系。
表单:通过网页来收集一些用户信息(例如用户名、电话、邮箱地址等)的一组元素。
css:层叠样式表用于格式化网页内容的布局。易引发XSs漏洞。
JavaScript:可根据用户操作,动态修改用户界面。
vBScript:可替代JavaScript。但只有微软浏览器才支持。
文档对象模型:一个web页面是一个文档。DOM提供了对文档的结构化表述(一个由节点和对象组成的结构集合),并定义了一种方式可以使程序对该结构进行访问,从而改变文档的结构、样式和内容,从而将web页面和脚本或程序语言连接起来。
Ajax: Asynchronous Javascript+XML。一些用户操作将由客户端脚本代码,不需要重新加载整个页面。
JSON:Javascript对象表示法,一种轻量级的数据交换格式。
同源策略:浏览器实施的一种关键机制,主要用于防范不同来源的内容相互干扰。如果两个URL的protocol、host和port都相同的话,则这两个URL是同源。两个相同的源之间是可以相互访问资源和操作DOM的。两个不同的源之间若要相互访问资源或者操作DOM,会有安全策略的制约。
HTML5: HTML的新版本。新增的标签、属性和APl,可能引入跨站点攻击、跨域攻击和SQL注入等风险
服务器端/客户端知识―—
1.服务器端常见平台和语言有哪些?
2.服务器端常见安全漏洞有哪些?
3.LAMP是指什么?
4.Ruby on Rails主要使用什么体系架构?
5. wSDL是什么?它的受攻击面是什么?
6. DOM是什么?
7、什么是Ajax?它和DOM是什么关系?8.什么是同源策略?
四、web测试工具包
1、浏览器:
InternetExplorer/Edge:大多数web应用程序都能在IE中正确显示和使用;支持ActiveX控件;IE8引入反xSS筛选器;HttpWatch和IEWatcha扩展功能有助于攻击web应用程序;只在windows平台使用..... Firefox:绝大多数web应用程序都能在Firefox上正常运行;不支持Activex控件;针对IE无效的许多攻击能够对Firefox实施: HttpWatch, FoxyProxy, LiveHTTPHeaders, PrefBar, Wappalyzer, Web Developer..... Chrome: XSS Rays, cookie编辑器, wWappalyzer, Web Developer....
2、集成测试套件:
**BurpSuite, WebScarab, Paros proxy,Zed Attack Proxy, Fiddler......**主要功能:拦截代理服务器、web应用程序爬虫、web应用程序测试器、漏洞扫描器、手动请求工具、分析会话cookie与其他令牌的工具、各种共享功能与实用工具等......
3、独立漏洞扫描器:
Acunetix, AppScan,Burp Scanner,NetSparker, N-Stalker, Skipfish,Webinspect.... 可探测的漏洞:反射型跨站点脚本、SQL注入、文件路径遍历、命令注入、发现无链接数据...... 无法判定的漏洞:不完善的访问控制、不了解参数的作用、逻辑错误、会话劫持攻击、泄漏敏感信息.... 内在局限性: web应用各不相同、不理解语法、无直觉,不会即兴处理.....
4、其它工具:
Nikto/Wikto: Nikto可确定web服务器上默认或常见的第三方内容。Wikto是Nikto的windows版本。 Firebug:一种浏览器调试工具,可以在当前显示的页面上调试和编辑HTML及JavaScript脚本,还可以浏览和编辑DOM。 Hydra:密码猜测工具,用于攻击web应用程序常用的基于表单的验证。定制脚本:不常见的的会话处理机制、合并数据、多个非标准验证步骤.....
常见测试工具包―—测验
1.常见的web测试工具包有哪几类?
2.浏览器支持的控件类型有哪些?
3.集成测试工具有哪些,提供哪些主要功能?
4.集成测试工具测试过程中的核心数据是什么?
----代理服务器历史记录和站点地图
5.什么是主动扫描和被动扫描?
主动扫描:给出指定的目标主机,对目标主机主动发起扫描
被动扫描:主要指的是在目标无法察觉的情况下进行的信息收集
6.独立漏洞扫描器,可探测的漏洞有哪些?
7.独立漏洞扫描器的局限是什么?
五、攻击验证机制
验证机制是web应用程序所有安全机制中最简单的一种,也是web应用程序防御恶意攻击的中心机制,通常也是最薄弱的环节。
一.验证技术
- 基于HTML表单的验证
- 多元机制,如组合型密码和物理令牌
- 客户端SSL证书或智能卡
- HTTP基本和摘要验证
- 使用NTLM或Kerberos整合windows的验证.
- 验证服务
二.验证机制设计缺陷
1.密码保密性不强:非常短、空白、常用词、用户名和密码相同、默认密码.....
2.暴力攻击登录:密码常见;允许重复登录; cookie机制可被绕开;禁用解除.....
3.详细的失败信息:详细的失败消息或差异点,可帮助攻击者发动攻击......
4.证书传输易受攻击:HTTP传输;HTTPS传输....... 5.密码修改功能:提供详细信息,说明用户名是否有效;无限制猜测现有密码; 验证现有密码后,仅检查“新密码”和“确认新密码”是否相同......
6.忘记密码功能:提问;无应答次数限制;密码暗示.....
7.“记住我”(自动登录)功能:通过cookie保存用户相关信息,易被攻击
8.用户伪装功能:允许特权用户伪装成其他用户。特殊链接;特殊cookie;后门 密码
9.证书确认不完善:密码验证较弱......
10.非唯一性用户名:不强制用户使用唯一的用户名,用户名可重复.....
11.可预测的用户名:根据某种可预测的规则,自动生成用户名(test1, test2....
12.可预测的初始密码:相同的初始密码;密码同用户名;密码同部门名......
13.证书分配不安全:通过邮箱激活账号;激活URL存在某种规律.....
三.验证机制执行缺陷
1.故障开放登录机制:代码逻辑存在缺陷,导致异常情况下,用户仍然可以登录
2.多阶段登录机制中的缺陷:后面阶段只验证本阶段;后面阶段信任前面阶段的数据;后面信任前面的用户身份.....
3.不安全的证书存储:明文存储密码;MD5或SHA-1,攻击者可观察散列值数据库.....
版权归原作者 の Demon 所有, 如有侵权,请联系我们删除。