[黑客攻防技术宝典 Web实战篇]---解析应用程序
Web安全与漏洞攻防技术

Web安全与漏洞攻防技术Web安全是指在互联网应用中保护用户信息和系统数据的一系列措施。
随着互联网的快速发展,Web应用也变得越来越普及,而Web安全问题也日益严重。
黑客们利用各种漏洞进行攻击,给个人和企业带来了巨大损失。
因此,学习和掌握Web安全漏洞攻防技术是至关重要的。
1. 漏洞的种类在深入了解Web安全漏洞攻防技术之前,我们首先需要了解一些常见的漏洞种类。
常见的Web安全漏洞包括:1.1 跨站脚本攻击(XSS):攻击者通过在Web页面中注入恶意代码,在用户浏览器中执行恶意脚本,获取用户敏感信息。
1.2 SQL注入攻击:攻击者通过在Web应用的输入框中注入SQL语句,从而绕过身份验证,窃取、修改或删除数据库中的数据。
1.3 文件包含漏洞:攻击者通过利用Web应用在加载动态页面时未正确检查用户输入的文件路径,实现任意文件读取或执行恶意代码。
1.4 跨站请求伪造(CSRF)攻击:攻击者利用用户对网站的信任,通过伪造请求,以用户的身份执行恶意操作。
1.5 点击劫持攻击:攻击者通过隐藏或透明化的方式在正常页面上覆盖一个恶意页面,当用户点击时执行恶意操作。
这仅仅是一些常见的漏洞类型,实际上还有许多其他类型的漏洞。
了解这些漏洞的种类,有助于我们更好地理解Web安全问题的本质。
2. Web安全防御技术为了保护Web应用免受攻击,我们需要采取一系列防御措施。
以下是一些常见的Web安全防御技术:2.1 输入验证:对用户输入的数据进行验证,确保其符合预期的格式和范围,以防止SQL注入、XSS等攻击。
2.2 输出编码:对从数据库或其他来源检索到的数据进行编码,以防止XSS攻击。
2.3 访问控制:基于用户角色和权限设置访问控制,限制非授权用户对系统资源的访问。
2.4 密码安全:采用加密算法对用户密码进行存储,确保用户密码的安全性。
2.5 安全的会话管理:采用安全的会话标识和Cookie管理机制,防止会话劫持和重放攻击。
《黑客攻防技术宝典web实战篇》第二版----全部答案

《⿊客攻防技术宝典web实战篇》第⼆版----全部答案第2章:核⼼防御机制1. 为什么说应⽤程序处理⽤户访问的机制是所有机制中最薄弱的机制?典型的应⽤程序使⽤三重机制(⾝份验证、会话管理和访问控制)来处理访问。
这些组件之间⾼度相互依赖,其中任何⼀个组件存在缺陷都会降低整个访问控制机制的效率。
例如,攻击者可以利⽤⾝份验证机制中的漏洞以任何⽤户⾝份登录,并因此获得未授权访问权限。
如果能够预测令牌,攻击者就可以假冒成任何已登录⽤户并访问他们的数据。
如果访问控制不完善,则任何⽤户都可以直接使⽤应该受到保护的功能。
2. 会话与会话令牌有何不同?会话是服务器上保存的⼀组数据结构,⽤于追踪⽤户与应⽤程序交互的状态。
会话令牌是应⽤程序为会话分配的⼀个特殊字符串,⽤户需要在连接提出请求的过程中提交该字符串,以重新确认⾃⼰的⾝份。
3. 为何不可能始终使⽤基于⽩名单的⽅法进⾏输⼊确认?许多时候,应⽤程序可能会被迫接受与已知为“良性”输⼊的列表或模式不匹配的待处理数据。
例如,许多⽤户的姓名包含可⽤在各种攻击中的字符。
如果应⽤程序希望允许⽤户以真实姓名注册,就需要接受可能的恶意输⼊,并确保安全处理这些输⼊。
4. 攻击者正在攻击⼀个执⾏管理功能的应⽤程序,并且不具有使⽤这项功能的任何有效证书。
为何他仍然应当密切关注这项功能呢?攻击者可以利⽤任何访问控制核⼼机制中的缺陷未授权访问管理功能。
此外,攻击者以低权限⽤户⾝份提交的数据最终将向管理⽤户显⽰,因此,攻击者可以提交⼀些恶意数据,⽤于在管理⽤户查看这些数据时攻破他们的会话,从⽽对管理⽤户实施攻击。
5. 旨在阻⽌跨站点脚本攻击的输⼊确认机制按以下顺序处理⼀个输⼊:(1) 删除任何出现的<script>表达式;(2) 将输⼊截短为50个字符;(3) 删除输⼊中的引号;(4) 对输⼊进⾏URL解码;(5) 如果任何输⼊项被删除,返回步骤(1)。
是否能够避开上述确认机制,让以下数据通过确认?“><script>alert(“foo”)</script>是。
黑客大曝光:Web应用程序安全(原书第3版)

1.1 什么是Web应用入侵我们不打算浪费太多的时间去定义Web应用程序—除非你在过去的十年中与世隔绝,否则你可能已经直接体验过数十个Web应用(Google、、Hotmail等)。
更深入的背景材料,可以在上搜索“Web application”这个词。
在这里我们将尽可能快速而简洁地集中介绍与安全相关的内容。
我们将Web应用定义为通过超文本传输协议HTTP(关于HTTP的背景资料参见本章末尾的“参考与延伸阅读”)访问的应用。
因此,Web 入侵的本质是通过HTTP篡改应用,有3种简单的Web入侵方法:●通过图形化Web界面直接操纵应用●篡改统一资源标识符(URI)●篡改没有包含在URI中的HTTP元素1.1.1 GUI Web入侵许多人都有这种印象:Web入侵是一种非常棘手的技术工作,最好是留给住在黑屋子里、喝了许多威士忌的年轻人去干。
但是,借助Web应用直观的图形用户界面(GUI,读做“gooey”),这件工作并不一定有这么困难。
我们来看看Web 入侵有多么简单。
在第6章中,我们将介绍最具杀伤力的Web应用攻击之一:SQL注入。
尽管这种攻击的内部原理有些复杂,但是对于任何会在网上搜索的人来说,SQL注入的基本细节到处可见。
通过搜索可以发现进行相对简单的攻击指南,这种攻击能够绕开质量低下的Web应用的登录页面,只需输入简单的字符集就能让登录功能返回“授权访问”—屡试不爽!图1-1说明实施这种类型的攻击有多么容易,样例是Foundstone公司Web应用Hacme Bank的简单GUI。
有些纯粹主义者无疑会嘲笑仅仅使用浏览器进行“真正”的Web应用入侵的念头,当然,在本章稍后的部分以及整本书中,还将描述许多能够大大地改进基本Web浏览器能力、进行业界领先的入侵工具。
但是,不要过分地轻视浏览器。
在我们多年的Web应用入侵的经历中,我们已经确定,黑客试图战胜的是应用的基本逻辑,而不在乎使用的是什么工具。
黑客攻防技术宝典——Web实战篇

Web应用程序安全的关键问题因素:1.不成熟的安全意识2.独立开发3.欺骗性的简化4.迅速发展的威胁形式5.资源与时间限制6.技术上强其所难Web应用程序使用三层相关联的安全机制处理用户访问:1.身份验证2.会话管理3.访问控制处理用户输入:1.输入的多样性2.输入处理方法:a)拒绝已知的不良输入b)接受已知的正常输入c)净化d)安全数据处理e)语法检查3.边界确认步骤:a)应用程序受到用户的登录信息b)应用程序执行一个SQL查询检验用户证书c)如果用户成功登录,应用程序再将用户资料中的某些数据传送给SOAP服务,经一步获得用户账户的有关信息d)应用程序在用户的浏览器中显示用户的帐户信息4.多步确认与规范化处理攻击者:1.处理错误2.维护审计日志3.向管理员发出警报4.应对攻击HTTP1.HTTP请求:每个HTTP请求的第一行都由三个以空格间隔的项目组成三个项目:1)一个说明HTTP方法的动词(最常用的是GET)2)被请求的URL3)使用的HTTP版本2.HTTP响应:每个HTTP响应的第一行都由三个以空格间隔的项目组成三个项目:1)使用的HTTP版本2)表示请求结果的数字状态码3)一段文本形式的“原因短语”,进一步说明响应状态3.HTTP方法:GET——获取资源POST——执行操作HEAD-—与GET类似,但服务器不会在其响应中返回消息主体TRACE——诊断目的OPTIONS-—要求服务器报告对某一特殊资源有效的HTTP方法PUT——试图使用包含在请求主体中的内容HTTP消息头1.常用消息头:Connection——用户告诉通信的另一端,在完成HTTP传输后是否关闭TCP/IP连接Content-Encoding-—压缩响应以加快传输速度Content-Length-—规定消息主体的字节长度Content—Type—-规定消息主体的内容类型Transfer—Encoding——为方便通过HTTP传输而对消息主体使用的任何编码2.请求消息头:Accept-—告诉服务器客户愿意接受哪些内容Accept—Encoding——告诉服务器客户愿意接受哪些内容编码Authorization-—用于为一种内置HTTP身份验证向服务器提交证书Cookie——用于向服务器提交它以前发布的cookieHost--用于指定出现在被请求的完整URL中的主机名称If—Modified—Since—-用于说明浏览器最后一次收到被请求的资源的时间If—None—Match——用于指定一个实体标记Referer——用于指示提出当前请求的原始URLUser—Agent——提供与浏览器或发生请求的其他客户端软件有关的信息3.响应消息头:Catch-Control—-用于向浏览器传送缓存指令ETag—-用于指定一个实体标签Expires——用户向浏览器说明消息主题内容的有效时间Location-—用户在重定向响应中说明重定向目标Pragma——用户向浏览器传送缓存指令Server—-提供所使用的Web服务器软件的相关信息Set—Cookie——用户向浏览器发布cookie,浏览器又在随后的请求中将其返回服务器WWW—Authenticate——提供与服务器所支持的身份验证类型相关的信息状态码:1xx——提供信息2xx——请求被成功提交3xx——客户被重定向到其它资源4xx——请求包含错误5xx——服务器执行请求时遇到错误服务器端功能:1.脚本语言(PHP、VBScript、Perl)2.Web应用程序平台(ASP。
Web安全攻防技术在软件开发中的应用

Web安全攻防技术在软件开发中的应用随着互联网的快速发展,互联网应用的普及成为了现代化生活中不可或缺的一部分。
然而,随着应用程序数量的快速增长,Web安全问题也变得越来越普遍和严峻,给Web应用程序安全造成了巨大的威胁。
如何保证应用程序的安全性成为了软件开发者迫切需要解决的问题。
因此,本文将介绍Web安全攻防技术在软件开发中的应用。
一、Web安全攻防技术简介Web安全攻防技术是指通过对Web应用程序中的漏洞进行攻击和防御的一种技术,旨在保障Web应用程序的安全。
Web安全攻防技术主要包括以下几个方面:1. 输入校验输入校验是指对用户输入的数据进行过滤、检测与规范,可以防止一些常见的攻击,如SQL注入、XSS攻击等。
2. 认证与授权认证是验证用户身份的过程,授权是根据用户身份访问权限为其提供访问资源的过程。
如果认证和授权实现不当,可能会导致身份欺诈、数据泄露等问题。
3. 数据加密数据加密是通过一定的算法将原始数据转化为乱码形式,以保证数据安全性。
目前广泛使用的加密算法有对称加密算法和非对称加密算法。
4. 安全性测试安全性测试是通过模拟实际攻击,评估应用程序的安全性能,从而发现潜在漏洞并及时修复,保障Web应用程序的安全。
二、1. 输入校验输入校验是保障Web应用程序的第一道防线,开发者需要对所有输入的数据进行检查和过滤。
其中,输入数据包括但不限于:表单数据、URL参数、上传文件等。
输入校验可以有效防止一些常见的攻击,如SQL注入、XSS攻击等。
2. 认证与授权在Web应用程序中,认证和授权是非常重要的,因为它们可以保证用户身份验证和用户权限管理。
实现认证和授权的方式有很多,比如Cookie、Session等。
在实现认证和授权时,需要考虑到用户信息的机密性和数据访问的可靠性。
3. 数据加密在Web应用程序中,数据通信是确保数据安全性的关键所在。
为了防止数据被窃取或篡改,可以使用数据加密技术。
常见的加密算法有DES、RSA、MD5等。
Web攻防系列教程之企业网站攻防实战

Web攻防系列教程之企业网站攻防实战摘要随着B/S架构技术的高速发展和快速应用,现在几乎所有的企业、政府单位都拥有了自己的网站。
对外有自己的企业门户网站,对内有OA、ERP、CRM等基于B/S架构的Web应用。
与此同时,攻击者也把目光转向了这块。
现在每天都有大量的网站因为存在各种安全漏洞被入侵。
轻则网站页面被篡改,重则机密数据被窃取,甚至整台服务器沦陷。
一旦遇到这样的事件,不仅会对企业形象造成非常不好的负面影响,也会带来实际的损失,有时这种危害甚至是灾难性的。
作为一名网站管理人员,非常有必要对这块给予足够的重视。
本文背景本文通过搭建一个真实的企业网站环境,先以攻击者的角度对目标网站进行入侵,最终得到目标网站数据库中的数据。
然后我们对整个入侵过程进行详细分析,并修复目标网站存在的安全漏洞和弱点。
这样通过对一个实例的完整分析,让读者对攻击者入侵网站的过程、以及网站安全加固都有一个直观的认识,当遭到黑客入侵时,不再感到无从下手。
本文用到的技术和相关工具技术:SQL注入、文件上传检测绕过、后门木马工具:Havij(一款SQL注入漏洞扫描和利用工具)、PhpSpy2008后门木马、中国菜刀一句话木马入侵网站典型步骤一个技术比较成熟的攻击者在入侵一个目标网站时,一般会经历以下三个阶段:一、信息收集这一阶段的目的就是通过技术或社工(社会工程学)手段去收集目标的各种信息。
比如:操作系统类型、网站脚本类型、目标网站采用的数据库类型等等。
这个阶段收集到的信息越全面,越详细,对下一阶段实施入侵的帮助越大。
一个成熟的攻击者在实施入侵前,会花大量时间去收集目标网站的各种信息,在实施入侵时直取目标网站的“命门”,决不拖泥带水,争取一击致命。
这一点也是一个成熟的攻击者与刚入门的攻击者之间的区别。
二、实施入侵这一阶段攻击者会对信息收集阶段得到的信息进行分析、汇总,决定采用哪种方法对目标实施入侵。
然后利用目标存在的安全漏洞和弱点,对其实施入侵。
关于逻辑漏洞挖掘方面的书

关于逻辑漏洞挖掘方面,有几本值得推荐的书籍:
* 《黑客攻防技术宝典:Web实战篇》:这本书详细介绍了Web应用程序的攻击和防御技术,包括如何发现和利用逻辑漏洞。
* 《白帽子讲Web安全》:这本书是网络安全领域的一本经典著作,涵盖了Web安全的各个方面,包括逻辑漏洞的检测和防范。
* 《软件安全开发:确保代码质量的安全方法》:这本书主要讲解了如何在软件开发过程中防止逻辑漏洞的出现,对于软件开发者来说非常有帮助。
* 《一本小小的蓝色逻辑书》:这本书是逻辑推理入门书籍,内容可以在微信读书上找到,阅读时间大概需要4个多小时。
以上书籍仅供参考,建议阅读原书了解更多信息。
【Web攻防】第一节 暴力破解介绍

暴力破解介绍
课程内容
1. 暴力破解原理 2. 暴力破解的方式
3. 暴力破解代码分析 4. 暴力破解演示-Burpsuite
01
暴力破解原理
暴力破解原理
暴力破解是用户使用自定义字典文件中的内容与验证程序交互,从而在枚举过程中得到正确数据。
案例: 1、破解用户名、密码 2、破解验证码 - 之前四位数的手机验证码在未进行任何防护措施,导致被枚举出来。
总结
1. 暴力破解原理 2. 暴力破解的方式
3. 暴力破解代码分析 4. 暴力破解演示-Burpsuite
再见
欢迎用程序或服务器未进行限制 2、具有内容涵盖全面的字典文件
02
暴力破解的方式
暴力破解的方式 根据破解的验证内容是否处于服务状态将暴力破解分为以下两类: 1、在线破解 2、离线破解
无论是在线还是离线是否可以破解成功都取决于字典文件内容的强大。同时破解速度的瓶颈在于本地机 器与服务器性能、带宽等因素。
03
暴力破解代码分析
暴力破解代码分析 以下我们将给出一个验证页面,用于验证用户输入的内容。实际情景会与数据库进行交互验证。
04
暴力破解演示-Burpsuite
暴力破解演示-Burpsuite 使用Burpsuite对目标进行暴力破解。
判断依据:登陆成功与失败返回的HTML内容不同,大小不同,导致根据大小不同筛选出唯一内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通常配置一个Web 服务器,如下所示:1. 主机系统-windows/Linux 等2. Web 服务器软件---IIS/Apache/Tomcat 等3. Web 脚本—ASP//PHP/JSP 等4. 数据库--------Access/SQLSERVER/Mysql/Oracle国内外常见的配置如下:Windows+IIS + ASP/+Access/SQL server 2000/2005 Windows/Linux+Apach+php+Mysql Windows/Linux+tomcat+Jsp+Oracle当然还有一些其他的配置情况,依具体情况而论.从上图就可以大致看出所存在问题的环节,一个Web 服务器在成功提供服务的同时,也就存在着各种安全问题.如OWASP 所介绍: OWASP Top 10 for 2010 1.Injection2.Cross-Site Scripting (XSS)3.Broken Authentication and Session Management4.Insecure Direct Object References5.Cross-Site Request Forgery (CSRF)6.Security Misconfiguration7.Insecure Cryptographic Stoage8.Failure to Restrict URL Access9.Insufficient Transport Layer Protection10.Unvalidated Redirects and Forwards因此,如果想要成功渗透一台Web 服务器,就可以在下面列举的对象上下工夫. <1>.Web 脚本 ------------------------html/asp//php/jsp/cfm 等 <2>.Web 服务器软件---------------http/ftp/svn 等<3>.数据库-----------------------------Access/SQL Server/MySQL/Oracle 等 <4>.通讯机制--------------------------http/https 等 <5>.主机系统-------------------------windows/Linux 等 <6>.主机第三方软件---------------ftp/media/等<7>.其他----ddos 等还是那句老话,攻击应用程序的第一步就是收集和分析与其有关的一些关键信息,以清楚了解攻击的目标。
解析过程首先是枚举应用程序的内容与功能,从而了解应用程序的实际功能与运行机制。
我们可轻松确定应用程序的大部分功能,但其中一些功能并不明显,需要进行猜测和反复查明。
列出应用程序的功能后,接下来就是仔细分析应用程序运行机制的每一个方面,核心安全机制及其(在客户和服务器)使用的技术。
这样就可以确定应用程序暴露的主要受攻击面并因此确定随后探查过程的主要目标,进而发现可供利用的漏洞。
利用常规的spider 抓取,当然Web 抓取也有其局限性,对于特定的情形,也会力不从心。
根据实际情况,可以结合漏洞扫描程序抓取,例如:Burp Suite[Proxy] + Nikto. 常见工具:Paros ----- /projects/paros / Burp Suite ----- /burp / Fiddler2 ------- http:// /fiddler2/Sitemap-generators ---- /p/sitemap -generators /相比与基本的抓取方法,该技巧具有诸多优点。
1.若应用程序不常用或复杂的导航机制,可以常规方式使用浏览器来遵循这些机制。
用户访问的任何功能和内容将由代理服务器/爬虫工具处理。
2.用户控制提交到应用程序的所有数据,这样可确保满足数据确认要求。
3.用户可以用常规方式登录应用程序,确保通过验证的会话在整个解析过程中保持活动状态。
如果所执行的任何操作导致会话终止,用户可重新登录并继续浏览。
4.用于该技巧可从应用程序的响应中分析出链接,能够完整枚举任何危险功能,并能将其整合到站点地图中。
但是用户可以根据自己的判断决定请求或执行哪些功能。
1.蛮力技巧2.通过公布的内容进行推测3.利用公共信息4.利用Web 服务器常见的服务器上的隐藏内容如下:1.应用程序常常包含没有直接链接或无法通过可见的主要内容访问的内容和功能。
2.备份文件,如果返回动态页面,它们的文件扩展名可能以变成非可执行文件扩展名,可通过审查页面源代码查找可在主页中加以利用的漏洞。
3.包含Web 跟目录下(或根目录外)完整文件快照的备份档案,可以使用它迅速确定应用程序的所有内容与功能。
4.部署在服务器上,用于测试目的,但尚未在主应用程序中建立链接的新功能。
5.尚未从服务器中删除的旧版本文件。
如果使用动态页面,这些文件中可能包含当前版本已经修复,但仍然可以在旧版本中加以利用的漏洞。
6.配置和包含敏感数据(如数据库证书)的文件。
7.编译现有应用程序功能的源文件。
8.包含有效用户名,会话令牌,被访问的URL 以及执行操作等敏感信息的日志文件 9.发现隐藏的内容需要组合自动和手动技巧,而且往往需要一定的勇气。
1.蛮力技巧攻击者可以利用自动技巧提高应用程序的效率。
现在可以利用自动技巧向Web 服务器提出大量请求,尝试猜测隐藏功能的名称或标识符。
例如:Burp Suite 的Intruder 可用于获取目录,文件名,文件后缀。
有时候将Burp Suite 与某些扫描工具联合使用,会有意想不到的效果[Burp + Nikto ]。
Brute_force_attack- ----------- https:///index.php/Brute_force_attack burp suite ,wget ,WFuzz ,DirBuster ,Nessus, ,Nikto, ,Acunetix ,dirb ,WebRoot , Robots.txt …....etc.2.通过发布的内容进行推测许多应用程序对其内容与功能使用某种命名方案。
通过应用程序中已经存在的资源进行推断,可以调整自动枚举操作,提高发现其他隐藏内容的可能性。
检查用户指定的浏览器与基本测试获得的结果。
编辑枚举出的所有子目录名称,文件词干和文件扩展名列表。
检查这些列表,确定应用程序使用的所有命名方案。
有时候,不同内容的命名方案使用数字和日期作为标识符,通过它们可轻易推测出隐藏的内容。
检查所有客户端代码,如HTTP 和Javascript ,确定任何与隐藏服务端内容有关的线索。
例如:与受保护或没有建立链接的功能有关的HTML 注释以及包含禁用SUBMIT 元素的HTML 表单等。
通常,注释由Web 软件自动生成,或者由其运行的平台生成。
参考服务端包含文件之类的内容也特别有效,一般这些文件都是公开的,可被下载并且可能包含高度敏感的信息。
把已经枚举出的内容添加到其他根据这些列表推测出来的名称中,并将文件扩展名列表添加到txt ,bak ,src ,inc 和old 这些常见的扩展名中。
它们也许能够披露现有页面备份的文件。
搜索开发者工具和文件编辑器不经意建立的临时文件。
例如.DB_Store 文件,其中包含一个OSX 目录索引;或者file.php~1,它是编辑file.php 时临时创建的文件。
进一步执行自动操作,结合目录,文件词干和文件扩展名列表请求大量潜在的资源。
如果确定应用程序采用一套统一的命名方案,考虑在此基础上执行更具针对性的蛮力测试。
以新枚举的内容和模式作为深入用户指定抓取操作的基础,反复执行上述每一个步骤,继续执行自动内容查找。
所采取的操作只受到想象力,可用时间以及在所针对的应用程序中发现隐藏内容的重要性的限制。
3 利用公共信息应用程序的一些内容与功能可能并没有与主要内容建立链接,但过去曾经存在链接。
在这种情况下,各种历史记录中可能仍然保留隐藏内容的引用。
我们可以利用两类主要的公共资源查找隐藏的内容。
搜索引擎,如google 。
这些搜索引擎中保存有其使用的强大爬虫所发现的所有内容的详细内容,并且将这些内容保存在缓存中,即使原始内容已被删除,缓存中内容仍然不变。
相关的工具有Gooscan ,Sitedigger ,Wikto 等。
/wiki/Google_hackingWeb 档案,如 上的WayBack Machine 。
这些档案中保存大量Web 站点的历史记录。
许多时候允许用户浏览某个站点从几年前到现在于不同时期彻底复制的站点快照。
4.利用Web 服务器Web 服务器层面存在的漏洞有助于攻击者发现Web 应用程序中并未建立链接的内容与功能。
例如,Web 服务器软件中存在大量的程序缺陷,允许攻击者枚举目录的内容,或者获取服务器可执行的动态页面的原始来源。
如果存在缺陷,攻击者就可以利用它直接获得应用程序的所有页面和其它资源。
许多Web 服务器上默认包含有助于攻击者对其实施攻击的内容。
例如,样本和诊断性脚本中可能包含已知的漏洞,或者可被利用于某些恶意用途的功能。
而且,许多Web 应用程序整合了常用的第三方组件,执行各种常规功能。
Nikto---/WVS--- Appscan--- /software/awdtools/appscan / W3af --- http://w3af /等都是很好的工具。
当然,我们也可以针对指定的漏洞定制攻击。
迄今为止,我们讨论的枚举技巧实际上由如何概念化和分类Web 应用程序内容这种特殊的动机暗中推动。
这种动机源自于Web 应用程序出现之前的万维网时代,当时的Web 服务器是静态信息仓库,我们使用实际为文件名的URL 获取这类信息。
要公布Web 内容,只需简单生成一批HTML 文件并将其复制到Web 服务器上的相应目录即可。
当用户单击超链接时,他们浏览由公布者创建的文件,通过服务器上目录树中文件名请求每个文件。
虽然Web 应用程序的急速演变从根本上改变了用户与Web 交互的体验,但上述动机仍然适用于绝大多数的Web 应用程序内容和功能。
各种功能一般通过不同的URL 访问,后者通常是执行该项功能的服务端脚本的名称。
请求参数(位于URL 查询字符串或POST 请求主体中)并不告诉应用程序执行何种功能,而是告知应用程序在执行功能时,使用哪些信息。
有鉴于此,建立基于URL 的解析方法可对应用程序的功能进行有效分类。
但是,在某些应用程序中,基于应用程序“页面”的动机并不适用。