1.SQL注入攻击
2.失落效的身份认证
3.跨站脚本攻击
4.失落效的访问掌握
5.安全配置缺点
6.敏感信息透露
7.攻击检测与戒备不敷
8.跨站要求假造
9.利用含有漏洞的组件
10.受保护的APIs
11.文件上传漏洞
SQL注入攻击
SQL注入便是通过把SQL命令插入到Web表单递交或输入域名或页面要求的查询字符串,终极达到欺骗做事器实行恶意的SQL命令。它是利用现有运用程序,将(恶意)的SQL命令注入到后台数据库引擎实行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去实行SQL语句。
SQL注入攻击可以造孽读取、修改、添加、删除数据库中的数据,盗取用户各种敏感信息,获取利益,可以修正数据库来改变网页的内容,可以私自添加或删除账号。常日攻击者有以下攻击技巧。
缺点回显
基于布尔的盲注
基于韶光盲注
联合查询注入
SQL注入攻击-攻击技巧之缺点回显如果攻击者在要求参数中输入的参数导致后台实行查询语句的语法缺点,从做事器中直接返回了缺点信息。则表明该要求有sql注入漏洞,并且可以在缺点回显中获取做事器的数据库类型。
从上图缺点信息可以看出,该表名不是job,而且它还见告我们后台数据库是SQL Server,不是MySQL或Oracle,这也设计一个漏洞把缺点信息直接返回给了用户。
SQL注入攻击-攻击技巧之布尔盲注所谓"基于布尔的盲注",便是在做事器没有显示回显时完成的注入攻击。常见的盲注验证方法是,布局大略的条件语句,根据返回页面是否发生变革,来判断SQL语句是否得到实行。
例如某url为:http://localhost:4444/web_test/LoginServlet?account=222
攻击者可以通过修正account参数为' and 1=1-- ,如果该页面返回正常;
之后再次修正account参数为' and 1=2-- ,如果页面未正常显示,则可以判断该url存在SQL漏洞。
SQL注入攻击-攻击技巧之韶光盲注所谓的"基于韶光的盲注"是指用条件语句查看韶光延迟语句是否实行(即页面返回韶光是否增加)来判断。
对付返回页面没有显示任何信息的情形下,利用HENCHMARK()函数或SLEEP()函数,使得结果返回的韶光比平时要长,通过韶光是非的变革,可以判断出注入语句是否实行成功。
这种攻击过程非常繁琐,以是一样平常利用一个自动化的工具来帮助完玉成部过程。目前比较盛行的SQL渗透工具是sqlmap。
SQL注入攻击-攻击技巧之联合查询注入当SQL查询的数据可以在页面上显示时,也可以通过union联合查询的办法来获取数据信息。
数据库表名--DATABASE()
用户名--USER()
数据库信息--VERSION()
该用户可访问的所有数据库--select table_schema from information_schema.columns
指天命据库的所有表名 --select table_name from information_schema.TABLES WHERE
table_schema='XXX'
SQL注入攻击-防御针对SQL注入攻击的防御一样平常有几种。
利用预编译措辞
利用存储过程
检讨数据类型
可以参考OWASP供应的ESAPI文档来对用户输入内容进行过滤。
如当用户输入为:aaaa' or 1=1#
则过滤后的用户输入即为:aaaa\' and 1\=2 \#
最小权限原则
失落效的身份认证和会化管理认证的目的是为了认出用户是谁。认证的手段是多样化的,目前认证办法有密码、数字证书、手机绑定、指纹、人脸、声音等认证。认证实际上便是一个验证凭据的过程。如果只有一个凭据被用户认证,则称为"独身只身分认证";如果有两个或多个凭据被用户认证,则成为"双成分认证"或"多成分认证"。一样平常来说,多成分认证的强度要高于独身只身分认证,但是在用户体验上,多成分认证或多或少都会带来一些未便利的地方。常日认证有两种手段。
密码认证
session认证
失落效的身份认证和会化管理-密码认证密码是最常见的一种认证手段,但目前并没有一个标准的密码策略,根据OWASP推举的一些最佳实践,以下是对密码策略的总结。
密码长度方面
普通运用哀求长度为6位以上
密码繁芜度方面
不要有连续性的字符,比如1234abcd,这种字符随意马虎被预测到
密码为大写字母、小写字母、数字和分外字符中两种以上的组合
密码认证方面
1)限定用户失落败登录次数
2)根据常用登录信息(登录IP地址)合理利用图形验证码
失落效的身份认证和会化管理-Session认证密码与证书等认证手段,一样平常仅仅是用于登录的过程。当登录完成后,用户访问网站的页面,不可能每次浏览器要求页面时都利用密码认证一次。因此,当认证成功后,就须要更换一个对用户透明的凭据。这个凭据,便是SessionID。用户在登录完成后,做事器端会创建一个新的会话Session。
SessionID在cookie中传输存储
一样平常常见的做法是把SessionID保存在Cookie中。而Cookie透露的路子有很多种,如XSS攻击、网络监听以及本地木马盗取。对付通过XSS透露盗取Cookie的攻击,通过给Cookie标记httponly,可以有效的缓解XSS盗取Cookie的问题。
SessionID作为要求参数传输
SessionID作为要求参数常日会通过referer而透露出去。QQ的WAP邮箱曾经涌现过此漏洞。
失落效的身份认证和会化管理-Session Fixation攻击用户在登录网站的过程中,如果上岸前后用户的SessionID没有发生变革,则会存在Session Fixation攻击。SessionID在cookie中传输存储
攻击事理
用户X(攻击者)先获取一个未经认证的SessionID,然后将这个SessionID交给用户Y去认证,Y完成认证后,做事器并未更新此SessioniID的值,以是之后X可以凭借此SessionID登录进Y的账户。这种攻击一样平常是在SessionID作为URL的一个参数的情形。
防御
办理Session Fixation的精确做法是,在登录完成后,重写SessionID。
失落效的身份认证和会化管理-Session保持攻击 攻击事理
一样平常运用都会给Session设置一个失落效韶光,当到达失落效韶光后,Session将被销毁。但有些系统,处于用户体验的考虑,只要这个用户还"活着",就不会让这个用户的Session失落效。此时,如果攻击者已经获取一个有效的SessionID,则可以通过一直地发起访问要求,让Session一贯"活"下去。
防御
在一定的韶光逼迫销毁Session。这个韶光可以从用户登录的韶光算起,设定一个阈值,比如3天后逼迫Session过期。
当用户客户端发生变革时,哀求用户重新登录。如用户的IP、UserAgent(分外字符串头,使得做事器能够识别客户利用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器措辞、浏览器插件)等信息发生了变革,就可以逼迫销毁当前的Session,并哀求用户重新登录。
跨站脚本跨站脚本攻击(XSS),攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,掌握用户的浏览器。这些用以完成各种详细功能的恶意脚本,被称为"XSS Payload"。
有用户数据输入或者交互的地方就有可能有XSS漏洞。
攻击类型
反射型XSS
存储型XSS
DOM Based XSS
跨站脚本-反射型XSS反射型XSS只是大略地把用户输入的数据"反射"给浏览器,该恶意脚本并未存储到做事器。如果黑客想要攻击用户,首先须要诱利用户点击一个恶意的链接才能攻击成功。以下是XSS的攻击流程。
用户登录一个有XSS漏洞的A网站
黑客向用户发送一个恶意链接并且用户点击了该链接,或者用户在别的地方点击了一个恶意链接,该链接为要求A网站的链接,但是参数中包含恶意脚本。
用户点击该链接后,恶意脚本则会在A网站实行,至此攻击成功。
例如,A网站有个页面,是显示用户输入的数据,链接为:
http://localhost:4444/web_test/XSS/html_content/b.jsp?name=ABC。页面显示效果为:
如果用户把输入的name参数改为一个js脚本,则A网站则会实行该脚本:
http://localhost:4444/web_test/XSS/html_content/b.jsp?name=<script>alert(1)</script>
跨站脚本-存储型XSS
存储型XSS会把用户输入的数据存储在做事器端。当这些存储的数据再次展示在页面时,发起攻击。如黑客写下一篇包含有恶意脚本的文章发布,之后,访问该文章的用户,他们的浏览器都会实行这段恶意脚本。
跨站脚本-DOM Based XSSDOM Based XSS为通过修正页面的DOM节点形成的XSS。
<script>
function domBasedXSS(){
var text = document.getElementById("content").value;
document.getElementById("aaa").innerHTML = "<a href='http://www.baidu.com?test="+text+"'>test</a>";
}
</script>
<div id="aaa"></div>
<input id="content" type="text" />
<input type="button" value="提交" onclick="domBasedXSS()"/>
跨站脚本-攻击事理XSS的攻击紧张分为以下几类攻击事理。
HTML标签中插入脚本
HTML属性中插入脚本
<script>标签中插入脚本
在事宜中插入脚本
在地址中插入脚本
跨站脚本-危害XSS的危害紧张有以下几种。
Cookie透露
布局GET与POST要求
XSS钓鱼
XSS蠕虫
获取用户浏览器信息等
跨站脚本-防御关于XSS的防御紧张有以下几种方法。
httponly
用户输入检讨
用户输出检讨
XSS攻击防御方法:对输入(和URL参数)进行过滤,对输出进行编码;白名单和黑名单结合;在精确的地方利用精确的编码办法。
失落效的访问掌握所谓的访问掌握,或者说是权限掌握,便是指某个主体对某个客体须要履行某种操作,而系统对这种操作的限定便是权限掌握。
访问掌握漏洞是指访问了没有授权的资源或信息,也叫越权。越权可以分为两种。
垂直越权
水平越权
失落效的访问掌握-垂直越权访问掌握实际上是建立用户与权限之间的对应关系,现在运用广泛的一种方,便是"基于角色的访问掌握",简称RBAC。
在系统验证权限时,只须要验证用户所属的角色,就可以根据该角色所拥有的权限进行授权。以是当用户在要求一些资源时,如果系统未对用户所属的角色进行权限验证,则用户就可以访问高权限的资源。这便是垂直越权。对付垂直越权的攻击漏洞,一样平常的防御方法是,在做事器端须要有所有角色的访问掌握列表ACL,即不同角色对付所有访问资源的权限掌握表。
Spring的Spring Security中的权限管理,便是RBAC模型的一个实现。
Spring Security供应两种权限管理办法,一种是"基于URL的访问掌握",一种是"基于method的访问掌握"。这两种访问掌握都是RBAC模型的实现,换言之,在Spring Security中都是验证该用户所属的角色,以决定是否授权。
失落效的访问掌握-水平越权在RBAC模型下,系统只会验证用户A是否属于角色X,而不会判断用户A是否能访问只属于用户B的数据资源,因此发生了越权访问,这种越权就叫做水平越权。如下图所示。
失落效的访问掌握-水平越权
水平权限漏洞对应的防御方法如下。
在逻辑层做鉴权,检讨要求的操作者(从session中获取)和操作的工具(要求参数中获取)是否具有关联关系(查询数据库),如果无关联关系,则停滞操作。这种防御的缺陷使增加了一次数据库查询操作。
把权限的掌握转移到数据接口层中,即在进行sql查询更新操作时,在sql语句后加入userId的条件,而userId的值是从session中获取。
在要求的参数中增加一个token值,如MD5(url+key),用做完全性校验,当攻击者修正参数时,拦截器将会拦截要求,从而完成防御。
安全配置缺点安全配置缺点可以发生在一个运用程序堆栈的任何层面,包括平台、Web做事器、运用做事器、数据库、框架和自定义代码。开拓职员和系统管理员需共同努力,以确保全体堆栈的精确配置。自动扫描器可用于检测未安装的补丁、缺点的配置、默认帐户的利用、不必要的做事等。
做事器系统掩护的安全配置
运用程序的安全配置
安全配置缺点-做事器系统掩护的安全配置对付做事器系统掩护方面的安全配置,紧张有以下几个方面。
安装补丁程序
账号和密码保护
监测系统日志
利用HTTPS要求
隐蔽IP地址
关闭不须要的做事和端口
支配检测系统和防御系统
定期对做事器进行备份
安全配置缺点-运用程序的安全配置关于运用程序的安全配置,紧张是运用程序在支配莅临盆环境后的一些配置,紧张有以下几个方面。
修正或删除后台默认账号
禁用做事器上的目录列表
隐蔽缺点堆栈信息
敏感信息透露在这个领域最常见的漏洞是该当加密的数据不进行加密。在利用加密的情形下,常见的问题是不屈安的密钥天生和管理和利用弱算法是很普遍的,特殊是利用弱的哈希算法来保护密码。以下是对敏感信息的分类。
个人信息,如姓名,身份证ID,电话号码,银行账户,驾驶证号码,社保卡号,护照号码等都是敏感数据。
网站登录的用户名、密码,SSL证书,会话ID,加密利用的密钥等都属于敏感信息,这些信息一旦透露,攻击者就可以以合法用户的身份访问Web系统,随意进行各种攻击操作。
Web做事器的OS类型,版本信息,Web容器的名称,版本号,数据库类型,版本号,运用软件利用开源软件信息都属于敏感信息,由于攻击者知道这些软件信息,就会利用这些软件存在的公开漏洞进行专门攻击,提升了系统被攻破的可能性。
敏感信息透露-保护敏感信息对付数据信息须要担保数据安全的三要素:完全性、机密性和可用性。
针对个人数据,必须加密存储,且要利用安全的加密算法。
针对敏感数据传输,须要采取SSL加密通道,对每一个要求都该当利用SSL加密通道。
运用程序运行出错随意马虎造成敏感信息的透露,定制统一出错页面,杜绝显示此类敏感信息到Web客户端。
保存敏感信息的文件要严格掌握访问权限。
攻击检测与戒备不敷对攻击的戒备方法所能覆盖的攻击类型,不应该只是XSS和SQL注入。 你可以通过如 WAFs, RASP, 和OWASP AppSensor 等技能来检测并阻挡攻击。攻击保护有以下三个目标。
检测攻击
有没有发生合法用户不可能产生的情形? 运用程序是否以普通用户永久不会做的办法运行(例如,要求频率太高,非范例输入,非常利用模式,重复要求)?
对攻击的相应
日志和关照对及时相应至关主要。考虑是否自动阻挡要求,并确定阻挡的IP地址或IP段。 考虑禁用或监控不良行为的用户账户。
快速修复
如果开拓或运维团队无法在一天内推出关键修补程序,须要支配一个可以剖析HTTP流量,数据流或代码实行的虚拟补丁,并防止漏洞被利用。
攻击检测与戒备不敷-DDOS攻击办法DDoS即分布式谢绝做事攻击, 是 指借助于客户/做事器技能,将多个打算机联合起来作为攻击平台,对一个或多个目标发动DOS攻击,从而成倍地提高谢绝做事攻击的威力。
SYN Flood
SYN Flood (SYN大水) 是种范例的DoS (Denial of Service,谢绝做事) 攻击。效果便是做事器TCP连接资源耗尽,停滞相应正常的TCP连接要求。修正内核参数即可有效缓解,分别为启用SYN Cookie、设置SYN最大行列步队长度以及设置SYN+ACK最大重试次数。
UDP Flood
攻击者利用大略的TCP/IP做事,如Chargen和Echo来传送毫无用途的占满带宽的数据。通过假造与某一主机的Chargen做事之间的一次的UDP连接,回答地址指向开着Echo做事的一台主机,这样就天生在两台主机之间存在很多的无用数据流,这些无用数据流就会导致带宽的做事攻击
戒备配置方法:关闭Chargen做事。
land 攻击
land 攻击是一种利用相同的源和目的主机和端口发送数据包到某台机器的攻击。结果常日使存在漏洞的机器崩溃。
Smurf攻击
Smurf攻击因此最初发动这种攻击的程序名“Smurf”来命名的。这种攻击方法结合利用了IP欺骗和ICMP回答方法使大量网络传输充斥目标系统,引起目标系统谢绝为正常系统进行做事,对网络进行监控和统计创造, 若涌现Smurf 攻击, 则会涌现大量的echo 报文。由于存在echo 应答风暴, 此时,echo 报文在所有报文中所占的比例大大增加。以是,如涌现这种情形, 就可能遭到了Smurf 攻击,挫败一个Smurf攻击的最大略的方法便是对边界路由器的覆信应答(echo reply)信息包进行过滤,然后丢弃他们,使网络避免被埋没。
利用做事漏洞
攻击检测与戒备不敷-DDOS检测办法关于DDOS的检测办法紧张有以下几种。
基于流量的检测
基于流量大小进行检测的方法便是在被保护的网络边界路由器上支配流量检测算法,根据流量的突发检测DoS工具的发生
基于源IP地址的检测
便是在被保护网络的边界路由器上支配源IP检测算法,根据源IP个数的溘然增加来判断Dos的发生
基于包属性的检测
绝做事攻击发生时,攻击数据包毁坏了正常网络状况下进出数据包在IP数据包头字段的统计学稳定性,因此采取一定算法在正常情形下进行包属性字段学习判断进出数据包的危险度
攻击检测与戒备不敷-DDOS戒备关于DDOS的防御方法紧张有以下几种。
源端防御
增加路由器安全性能配置,建议在该网段的路由器上做配置调度,做到数据包过滤、反欺骗、非常识别、协议剖析、流量限定多验证体系
配置防火墙过滤规则
设计访问规则,阻挡和杜绝一些恶意信息对主机的攻击
加强终端防御,对受害者主机、受害者网络进行防御
提高主机系统和网络系统安全性,加强入口防御
加强中端防御,攻击性的数据包在传输过程中采纳的防御方法
跨站要求假造跨站要求假造(CSRF)攻击可以以你的名义发送恶意要求。CSRF则通过伪装来自受信赖用户的要求来利用受信赖的网站。
CSRF能够做的事情包括:以你名义发送邮件,发,盗取你的账号,乃至于购买商品,虚拟货币转账,造成的问题包括:个人隐私透露以及财产安全。
跨站要求假造-攻击事理攻击事理如下图所示:
跨站要求假造-攻击事理
详细的攻击流程如下。
1)用户打开浏览器,访问受信赖网站A,输入用户名和密码上岸要求上岸网站A。
2)网站A验证用户信息,用户信息通过验证后,网站A产生Cookie信息并返回给浏览器。
3)用户未退出网站A之前,在同一浏览器中,打开一个TAB访问网站B。
4)网站B接管到用户要求后,返回一些攻击性代码。
5)浏览器在接管到这些攻击性代码后,匆匆利用户不知情的情形下浏览器携带Cookie(包括sessionId)信息,要求网站A。这种要求有可能进行删除、更新等操作。
跨站要求假造-防御一样平常来说,CSRF的防御紧张有以下三点:
验证HTTP Referer
验证码
token校验
利用含有已知漏洞的组件一些含有漏洞的组件(如:框架库)可以被自动化工具创造和利用。
漏洞组件检测
如果您利用的组件之一存在漏洞,您该当仔细评估该漏洞是否给您的业务也带来了毛病。此评估可以通过检讨您的代码利用该组件的部分,以及该毛病可能导致的您关心的结果来完成。
漏洞组件防御
连续监控如NVD等表露的的组件中的漏洞是否涌如今您的运用中;
剖析库文件以确保在进行变动之前在运行时实际调用了它;
决定是升级组件还是支配一个剖析HTTP流量,数据流或代码实行的虚拟补丁,并防止漏洞被利用
受保护的APIs考虑可向你的API发送要求的任何人。客户端程序随意马虎被逆向,网络通讯也随意马虎被拦截。以是依赖客户真个稠浊是无法保护API的。
WEB API漏洞该当类似于测试其他运用程序的漏洞。所有不同类型的注入、认证、访问掌握、加密、配置和其他问题都可以在传统运用程序中涌现的也存在于API中。
API安全防御
确保保护客户端和API之间的通信。
确保API具有强大的身份验证方案,并且所有凭据,密钥和令牌已被保护。
实现访问掌握方案,保护API不被禁绝确地调用,包括未经授权的功能和数据引用。
防止所有形式的注入。
利用OAuth2对web API进行安全验证
用户向客户端供应账户及密码
客户端向授权做事器发送认证信息
授权做事器验证凭据后返回令牌
客户端发送包含在http header中的token要求到资源做事器
文件上传漏洞
文件上传漏洞是指用户上传了一个可实行的脚本文件,并通过此脚本文件获取了实行做事器端命令的能力。
文件上传漏洞有以下危害。
上传文件是Web脚本措辞,做事器的Web容器阐明并实行了用户上传的脚本,导致代码实行。
上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载实行。
上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本实行,被用户钓鱼和敲诈。
文件上传漏洞-解析漏洞攻击者在利用上传漏洞时,常日会与Web容器的解析漏洞合营在一起。以是我们理解一下解析漏洞。
IIS解析漏洞
当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件来解析。
当文件名为.asp;1.jpg时,IIS同样会以ASP脚本来实行。
Apache解析漏洞
在Apache 1.x和2.x中存在解析漏洞:当碰到不认识的扩展名是,将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。比如:a.php.aa.xa.bb,Apache首先会解析bb扩展名,如果不认识,将会解析xa扩展名,直到遍历到认识的扩展名为止,然后再将其进行解析。
文件上传漏洞-防御对付文件上传漏洞的防御,有以下方法。
文件上传的目录设置为不可实行
在实际运用中,很多大型网站的上传运用,文件上传后会放到独立的存储上,做静态文件处理。
判断文件类型或对文件进行处理
在判断文件类型时,可以结合利用MIME Type、后缀检讨等办法。此外,对付图片的处理,可以利用压缩函数或者resize函数,在处理图片的同时毁坏图片中可能包含的HTML代码。
利用随机数改写文件名和文件路径
文件上传如果要实行代码,则须要用户能够访问到这个文件。如果运用利用随机数改写了文件名和路径,将极大地增加攻击的本钱。与此同时,像a.jsp;b.jpg或者a.php.aa.bb这种文件,都将会由于文件名被改写而无法进行攻击。