HTTP不具备必要的安全功能。在HTTP请求报文内加载攻击代码,就能发起Web应用的攻击。通过URL查询字段或表单、HTTP首部、Cookie等途径把攻击代码传入,若这时Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到管理权限。
对Web应用的攻击模式有以下两种:主动攻击、被动攻击。
以服务器为目标的主动攻击
主动攻击
(active attack)是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。
以服务器为目标的被动攻击
被动攻击
(passive attack)是指利用圈套策略执行攻击代码的攻击模式。
被动攻击通常的攻击模式:
攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的HTTP请求。
当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
中招后的用户浏览器会把含有攻击代码的HTTP请求发送给作为攻击目标的Web应用,运行攻击代码。
执行完攻击代码,存在安全漏洞的Web应用会成为攻击者的跳板,可能导致用户所持的Cookie等个人信息被窃取,登陆状态中的用户权限遭恶意滥用等后果。
被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。
实施Web应用的安全对策可大致分为以下两部分:
客户端的验证
Web应用端(服务器端)的验证:输入值验证、输出值转义
输入值验证
通常是指检查是否是符合系统业务逻辑的数值或检查字符编码等预防对策。从数据库或文件系统、HTML、邮件等输出Web应用处理的数据之际,针对输出值转义
处理是一项至关重要的安全策略。当输出值转义不完全时,会因触发攻击者传入的攻击代码而给输出对象带来损害。
跨站脚本攻击
跨站脚本攻击
(Cross-Site Scripting, XSS)是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。
跨站脚本攻击有可能造成以下影响:
利用虚假输入表单骗取用户个人信息。
利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
显示伪造的文章或图片。
XSS是攻击者利用预先设置的陷阱触发的被动攻击。
SQL注入攻击
SQL注入
(SQL Injection)是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。
SQL注入攻击有可能会造成以下等影响:
非法查看或篡改数据库内的数据
规避认证
执行和数据库服务器业务关联的程序等
SQL是用来操作关系型操作管理系统(Relational DataBase Management System, RDBMS)的数据库语言,可进行操作数据或定义数据等。RDBMS中有名的数据库有Oracle Database、Microsoft SQL Server、IBM DB2、MySQL和PostgreSQL等。
OS命令注入攻击
OS命令注入攻击
(OS Command Injection)是指通过Web应用,执行非法的操作系统命令达成攻击的目的。只要在能调用shell函数的地方就有存在被攻击的风险。
HTTP首部注入攻击
HTTP首部注入攻击
(HTTP Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动攻击模式。而向首部主体内添加内容的攻击称为HTTP响应截断攻击(HTTP Response Splitting Attack)。
HTTP首部注入攻击有可能会造成以下一些影响:
设置任何Cookie信息
重定向至任意URL
显示任意的主体(HTTP响应截断攻击)
HTTP响应截断攻击是用在HTTP首部注入的一种攻击。攻击顺序相同,但是要将两个%0D%0A%0D%0A
并排插入字符串后发送。
滥用HTTP/1.1中汇集多响应返回功能,会导致缓存服务器对任意内容进行缓存操作,这种攻击称为缓存污染。
邮件首部注入攻击
邮件首部注入
(Mail Header Injection)是指Web应用中的邮件发送功能,攻击者通过向邮件首部To或Subject内任意添加非法内容发起的攻击。利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。
目录遍历攻击
目录遍历攻击
(Directory Traversal)是指对本无意公开的文件目录,通过非法截取其目录路径后,达到访问目的的一种攻击。固然存在输出值转义的问题,但更应该关闭指定对任意文件名的访问权限。
远程文件包含漏洞
远程文件包含漏洞
(Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。固然存在输出值转义的问题,但更应控制对任意文件名的指定。
因设置或设计上的缺陷引发的安全漏洞是指,错误设置Web服务器,或是由设计上的一些问题引起的安全漏洞。
强制浏览
强制浏览(Forced Browsing)
安全漏洞是指,从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
强制浏览有可能会造成以下一些影响:
泄露顾客的个人信息等重要情报
泄露原本需要具有访问权限的用户才可查阅的信息内容
泄露未外连到外界的文件
不正确的错误消息处理
不正确的错误消息处理
(Error Handling Vulnerability)的安全漏洞是指,Web应用的错误信息内包含对攻击者有用的信息。与Web应用有关的主要错误信息有:Web应用抛出的错误消息、数据库等系统抛出的错误消息。
系统抛出的错误主要集中在以下几个方面:PHP或ASP等脚本错误、数据库或中间件的错误、Web服务器的错误。
各系统应对详细的错误消息进行抑制设定,或使用自定义错误消息,以避免某些错误信息给攻击者以启发。
开放重定向
开放重定向
(Open Redirect)是一种对指定的任意URL作重定向跳转的功能。
会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有所疏忽,就会导致用户的认证状态被窃取等后果。
会话劫持
会话劫持
(Session Hijack)是指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
攻击者可获得会话ID的几种途径:
通过非正规的生成方法推测会话ID
通过窃听或XSS攻击盗取会话ID
通过会话固定攻击(Session Fixation)强行获取会话ID
会话固定攻击
对以窃取目标会话ID为主动攻击手段的会话劫持而言,会话固定攻击
(Session Fixation)会强制用户使用攻击者指定的会话ID,属于被动攻击。
跨站点请求伪造
跨站点请求伪造
(Cross-Site Request Forgeries, CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
跨站点请求伪造有可能会造成以下等影响:
利用已通过认证的用户权限更新设定信息等
利用已通过认证的用户权限购买商品
利用已通过认证的用户权限在留言板上发表言论
密码破解
密码破解攻击
(Password Cracking)计算出密码,突破认证。
密码破解有以下两种攻击:
通过网络的密码试错
对已加密加密的破解(指攻击者入侵系统,已获得加密或散列处理的密码数据的情况)
对Web应用提供的认证功能,通过网络尝试候选密码进行的一种攻击。主要有以下两种方式:穷举法、字典攻击。
从加密过的数据中导出明文通常有以下几种方法:通过穷举法·字典攻击进行类推、彩虹表、拿到密钥、加密算法的漏洞。
点击劫持
点击劫持
(Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖在Web页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段,这种行为又称为界面伪装(UI Redressing)。
DoS攻击
DoS攻击
(Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。DoS攻击的对象不仅限于Web网站,还包括网络设备及服务器等。
主要有以下两种DoS攻击方式:
集中利用访问请求造成资源过载,资源用尽的同时,实际上访问也就呈停止状态。
通过攻击安全漏洞使服务停止。
多台计算机发起的DoS攻击称为DDoS攻击
(Distributed Denial of Service attack)。DDoS攻击通常利用那些感染病毒的计算机作为攻击者的攻击跳板。
后门程序
后门程序
(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。
通常的后门程序分为以下3种类型:
开发阶段作为Debug调用的后门程序
开发者为了自身利益植入的后门程序
攻击者通过某种方法设置的后门程序
(最近更新:2019年09月18日)