Mapping the Application(2)(Chapter 4) - Analyzing the Application

Posted by D on March 7, 2020

参考:The Web Application Hacker’s Handbook Chapter 4 Mapping the Application

1.分析应用(Analyzing the Application)

枚举尽可能多的应用程序内容只是映射过程的一个元素。 同样重要的是,任务是分析应用程序的功能行为技术,以识别应用程序暴露的主要攻击面,并开始制定一种方法来探测应用程序中的可利用漏洞。
以下是一些要研究的关键领域:

  • 应用程序的核心功能–按预期使用时可以利用其执行的操作
  • 其他更多外围应用程序行为,包括站点外链接错误消息管理日志记录功能以及重定向的使用
  • 核心安全机制及其作用方式-特别是会话状态访问控制身份验证机制和支持逻辑用户注册密码更改帐户恢复)的管理
  • 应用程序处理用户提供的输入的所有不同位置-每个URL,查询字符串参数POST数据项cookie
  • 客户端使用的技术,包括表单,客户端脚本,胖客户端组件(Java applet,ActiveX控件和Flash)和cookie
  • 服务器端采用的技术,包括静态和动态页面,使用的请求参数的类型,SSL的使用,Web服务器软件,与数据库的交互,电子邮件系统以及其他后端组件
  • 关于服务器端应用程序的内部结构和功能的任何其他详细信息-它在后台使用的机制来提供从客户端角度可见的功能和行为

1.1 识别用户输入的入口点(Identifying Entry Points for User Input)

当查看在浏览应用程序功能时生成的HTTP请求时,应用程序捕获用户输入以进行服务器端处理的大多数方式应该很明显。 以下是需要注意的关键位置:

  • 每个URL字符串,直至查询字符串标记
  • URL查询字符串中提交的每个参数
  • 在POST请求的正文中提交的每个参数
  • 每个cookie
  • 应用程序可能会处理的所有其他HTTP标头-特别是User-Agent,Referer,Accept,Accept-Language和Host标头

1.1.1 URL文件路径(URL File Paths)

URL的查询字符串之前的部分通常被视为入口点,因为它们被假定只是服务器文件系统上目录和文件的名称。 但是,在使用REST样式URL的应用程序中,查询字符串之前的URL部分实际上可以用作数据参数,并且与用户输入的入口点一样重要,就像查询字符串本身一样。

典型的REST风格的URL可能具有以下格式:

http://eis/shop/browse/electronics/iPhone3G/

在本例子中,字符串electronicsiPhone3G应该被当作存储搜索功能的参数。
类似的,在下面的URL:

http://eis/updates/2010/12/25/my-new-iphone/

updates后的每个URL组件都可以以RESTful方式进行处理。

1.1.2 请求参数(Request Parameters)

URL查询字符串消息正文和HTTP cookie中提交的参数是用户输入最明显的入口点。 但是,某些应用程序未对这些参数采用标准的name=value。 他们可以使用自己的自定义方案,该方案可以使用非标准查询字符串标记和字段分隔符,或者可以将其他数据方案(例如XML)嵌入参数数据中。

这是作者在野外遇到的一些非标准参数格式的示例:

  • /dir/file;foo=bar&foo2=bar2
  • /dir/file?foo=bar$foo2=bar2
  • /dir/file/foo%3dbar%26foo2%3dbar2
  • /dir/foo.bar/file
  • /dir/foo=bar/file
  • /dir/file?param=foo:bar
  • /dir/file?data=%3cfoo%3ebar%3c%2ffoo%3e%3cfoo2%3ebar2%3c%2ffoo2%3e

如果使用非标准参数格式,则在对应用程序进行各种常见漏洞的探测时,需要考虑到这一点。 例如,假设在测试此列表中的最终URL时,您忽略了自定义格式,只是将查询字符串视为包含单个名为data的参数,因此提交了各种攻击有效载荷作为此参数的值。 您将错过处理查询字符串时可能存在的多种漏洞。 相反,如果您剖析格式并将有效负载放置在嵌入式XML数据字段中,则可能会立即发现一个严重的错误,例如SQL injectionpath traversal

1.1.3 HTTP头(HTTP Headers)

某些应用程序对Referer标头执行附加处理。 例如,应用程序可以检测到用户已通过搜索引擎到达,并寻求提供针对用户搜索查询的定制响应。 该应用程序可以回显搜索项,或者可以尝试突出显示响应中的匹配表达式。 一些应用程序试图通过动态添加诸如HTML关键字之类的内容来提高其搜索排名,这些内容包含来自搜索引擎的近期访问者一直在搜索的字符串。 在这种情况下,通过多次发出包含适当设计的Referer URL的请求,有可能将内容持久地注入到应用程序的响应中。

许多应用程序执行自定义日志记录功能,并且可能记录HTTP标头的内容,例如RefererUser-Agent。 这些标头应始终被视为基于输入的攻击的可能入口点。

近年来,一个重要的趋势是应用程序向通过不同设备(笔记本电脑,手机,平板电脑)访问该应用程序的用户呈现不同的内容。 这是通过检查User-Agent标头实现的。 除了直接在User-Agent标头本身内为基于输入的攻击提供途径外,此行为还提供了一个机会来发现应用程序内的其他攻击面。 通过为流行的移动设备分配User-Agent标头,您可以访问行为与主界面不同的简化用户界面。 由于此接口是通过服务器端应用程序中的不同代码路径生成的,并且可能受到较少的安全性测试,因此您可能会发现主要应用程序接口中不存在的错误(例如跨站点脚本)。

TIP

Burp Intruder包含一个内置的有效负载列表,其中包含用于不同类型设备的大量用户代理字符串。 您可以执行简单的攻击,对提供不同用户代理字符串的主应用程序页面执行GET请求,然后查看入侵者结果以识别表明正在呈现不同用户界面的异常。

除了定位浏览器默认发送的HTTP请求标头或应用程序组件添加的HTTP请求标头之外,在某些情况下,您还可以通过添加应用程序可能仍在处理的标头来进行成功的攻击。 例如,许多应用程序对客户端的IP地址执行一些处理,以执行诸如日志记录,访问控制或用户地理位置定位之类的功能。 客户端网络连接的IP地址通常可通过平台API供应用程序使用。 但是,要处理应用程序驻留在负载平衡器或代理后面的情况,应用程序可以使用X-Forwarded-For请求标头中指定的IP地址(如果存在)。 开发人员可能会错误地认为IP地址值是不变的,并以危险的方式对其进行处理。 通过添加适当设计的X-Forwarded-For标头,您可能能够发出诸如SQL注入持久性跨站点脚本之类的攻击。

1.1.4 带外通道(Out-of-Band Channels)

用户输入的最后一类入口点包括任何带外通道,应用程序可通过这些通道接收您可能控制的数据。 如果仅检查应用程序生成的HTTP流量,则其中某些入口点可能是完全无法检测到的,而找到它们通常需要了解应用程序所实现功能的更广泛的上下文。 以下是一些通过带外通道接收用户可控制数据的Web应用程序示例:

  • 一个Web邮件应用程序,用于处理和呈现通过SMTP接收的电子邮件
  • 一个发布应用程序,该应用程序包含通过HTTP从另一台服务器检索内容的功能
  • 入侵检测应用程序,它使用网络嗅探器收集数据并使用Web应用程序界面显示数据
  • 提供通过非浏览器用户代理使用的API接口的任何类型的应用程序,例如手机应用程序,如果通过此接口处理的数据与主Web应用程序共享

1.2 识别服务器端技术(Identifying Server-Side Technologies)

通常,可以通过各种线索和指标来确定服务器上使用的技术。

1.2.1 标语抓取(Banner Grabbing)

许多Web服务器都披露了有关Web服务器软件本身以及已安装的其他组件的详细版本信息。 例如,HTTP Server标头公开了有关某些安装的大量详细信息:

Server: Apache/1.3.31 (Unix) mod_gzip/1.3.26.1a mod_auth_passthrough/
1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.9 FrontPage/
5.0.2.2634a mod_ssl/2.8.20 OpenSSL/0.9.7a

除了Server头之外,软件的类型和版本可能会在其他位置公开:

  • 用于构建HTML页面的模板
  • 自定义的HTTP标头
  • URL查询字符串参数

1.2.2 HTTP指纹(HTTP Fingerprinting)

原则上,服务器返回的任何信息项都可以进行自定义甚至是故意篡改,并且类似Server标头的横幅也不例外。大多数应用程序服务器软件允许管理员配置服务器HTTP标头中返回的横幅。尽管采取了此类措施,但是,确定的攻击者通常可能会使用Web服务器行为的其他方面来确定所使用的软件,或者至少缩小可能性范围。 HTTP规范包含许多可选的细节,或由实现者自行决定。同样,许多Web服务器以各种方式偏离或扩展了规范。因此,除了通过其服务器标语之外,还可以通过许多微妙的方式对Web服务器进行指纹识别。 Httprecon是一种方便的工具,可以执行许多测试以尝试指纹打印Web服务器的软件。图4-11显示了针对EIS应用程序运行的Httprecon,并以不同的置信度报告了各种可能的Web服务器。

figure4-11

1.2.3 文件扩展名(File Extensions)

URL中使用的文件扩展名通常会公开用于实现相关功能的平台或编程语言。 例如:

  • asp - Microsoft Active Server Pages
  • aspx - Microsoft ASP.NET
  • jsp - Java Server Pages
  • cfm - Cold Fusion
  • php - The PHP language
  • d2w - WebSphere
  • pl - The Perl language
  • py - The Python language
  • dll - Usually compiled native code (C or C++)
  • nsf or ntf - Lotus Domino

即使应用程序在其发布的内容中未使用特定的文件扩展名,通常也可以验证是否在服务器上实现了支持该扩展名的技术。 例如,如果安装了ASP.NET,则请求存在的.aspx文件将返回由ASP.NET框架生成的自定义错误页面,如图4-12所示。 请求不存在的扩展名不同的文件将返回由Web服务器生成的一般错误消息,如图4-13所示。

figure4-12

使用已经描述的自动内容发现技术,可以请求大量的公共文件扩展名,并快速确认是否在服务器上实施了任何相关技术。

由于许多Web服务器将特定的文件扩展名映射到特定的服务器端组件,因此出现了上述不同的行为。 每个不同的组件可能会以不同方式处理错误(包括对不存在内容的请求)。 图4-14显示了在默认安装的IIS 5.0中映射到不同处理程序DLL的各种扩展。

figure4-13 图4-13

figure4-14 图4-14

可以通过请求文件扩展名时生成的不同错误消息来检测每个文件扩展名映射的存在。 在某些情况下,发现特定的映射可能表明存在Web服务器漏洞。 例如,过去发现IIS中的.printer.ida/.idq处理程序容易受到缓冲区溢出漏洞的攻击。 要注意的另一个常见指纹是如下所示的URL:

https://wahh-app/news/0,,2-421206,00.html

URL末尾的逗号分隔数字通常由Vignette内容管理平台生成。

1.2.4 目录名称(Directory Names)

通常会遇到表明存在相关技术的子目录名称。 例如:

  • servlet - Javs servlets
  • pls - Oracle Application Server PL/SQL gateway
  • cfdocs or cfide - Cold Fusion
  • SilverStream - The SilverStream web server
  • WebObjects or {function}.woa - Apple WebObjects
  • rails - Ruby on Rails

1.2.5 会话令牌(Session Tokens)

许多Web服务器和Web应用程序平台默认情况下会生成会话令牌,其名称提供有关所使用技术的信息。 例如:

  • JSESSIONID - The Java Platform
  • ASPSESSIONID - Microsoft IIS server
  • ASP.NET_SessionId - Microsoft ASP.NET
  • CFID/CFTOKEN - Cold Fusion
  • PHPSESSID - PHP

1.2.6 第三方代码组件(Third-Party Code Components)

许多Web应用程序都结合了第三方代码组件来实现通用功能,例如购物车登录机制留言板。 这些可能是开源的,也可能是从外部软件开发人员处购买的。在这种情况下,相同的组件通常会出现在Internet上的许多其他Web应用程序中,您可以对其进行检查以了解组件的功能。 通常,其他应用程序使用同一组件的不同功能,从而使您能够识别目标应用程序中直接可见范围之外的其他行为和功能。 另外,该软件可能包含在其他地方讨论过的已知漏洞,或者您可以自己下载并安装组件,并执行源代码审阅或以受控方式探查缺陷。

HACK STEPS

  • 1.标识用户输入的所有入口点,包括URL,查询字符串参数,POST数据,cookie以及应用程序处理的其他HTTP标头。
  • 2.检查应用程序使用的查询字符串格式。 如果未使用第3章中描述的标准格式,请尝试了解如何通过URL传输参数。 实际上,所有自定义方案仍然在名称/值模型上采用一些变体,因此请尝试了解如何将name/value对封装到您已标识的非标准URL中。
  • 3.确定将用户可控制的或其他第三方数据引入到应用程序处理过程中的任何越界通道。
  • 4.查看应用程序返回的HTTP Server标语。 请注意,在某些情况下,应用程序的不同区域由不同的后端组件处理,因此可能会收到不同的服务器标头。
  • 5.检查任何自定义HTTP标头或HTML源代码注释中包含的任何其他软件标识符。
  • 6.运行httprint工具以对Web服务器进行指纹识别。
  • 7.如果获得了有关Web服务器和其他组件的详细信息,请研究使用的软件版本以识别可能被利用来进行攻击的任何漏洞(请参阅第18章)。
  • 8.查看您的应用程序URL映射,以识别可能提供有关服务器上使用的技术线索的任何有趣的文件扩展名,目录或其他子序列。
  • 9.查看应用程序发出的所有会话令牌的名称,以标识所使用的技术。
  • 10.使用常见技术或Google的列表来确定服务器上可能正在使用哪些技术,或者发现其他似乎使用相同技术的网站和应用程序。
  • 11.在Google上搜索可能属于第三方软件组件的任何异常cookie,脚本,HTTP标头等的名称。 如果找到使用相同组件的其他应用程序,请查看它们以识别组件支持的任何其他功能和参数,并验证目标应用程序中是否还存在这些功能和参数。 请注意,由于品牌定制,第三方组件在每个实现中的外观可能会完全不同,但是核心功能(包括脚本和参数名称)通常是相同的。 如果可能,下载并安装该组件并进行分析,以充分了解其功能,并在可能的情况下发现任何漏洞。 查阅已知漏洞的资源库,以识别所涉及组件的任何已知缺陷。

1.3 识别服务器端功能(Identifying Server-Side Functionality)

通过观察应用程序向客户端公开的线索,通常可以推断出有关服务器端功能和结构的大量信息,或者至少可以做出有根据的猜测。

1.3.1 剖析请求(Dissecting Requests)

考虑以下URL,该URL用于访问搜索功能:

https://wahh-app.com/calendar.jsp?name=new%20applicants&isExpired=
0&startDate=22%2F09%2F2010&endDate=22%2F03%2F2011&OrderBy=name

如您所见,.jsp文件扩展名指示正在使用Java Server Pages。 您可能会猜测搜索功能将从索引系统或数据库中检索其信息。 OrderBy参数的存在表明正在使用后端数据库,并且您提交的值可以用作SQL查询的ORDER BY子句。 如果在数据库查询中使用了其他任何参数,则此参数可能很容易受到SQL注入的影响(请参阅第9章)。

isExpired字段在其他参数中也令人感兴趣。 这似乎是一个布尔标志,指定搜索查询是否应包括过期内容。 如果应用程序设计人员不希望普通用户能够检索任何过期的内容,则将此参数从0更改为1可以识别访问控制漏洞(请参阅第8章)。

以下URL(允许用户访问内容管理系统)包含一组不同的线索:

https://wahh-app.com/workbench.aspx?template=NewBranch.tpl&loc=/default&ver=2.31&edit=false

在此,.aspx文件扩展名表明这是一个ASP.NET应用程序。 还很有可能使用template参数指定文件名,而使用loc参数指定目录。 可能的文件扩展名.tpl似乎证实了这一点,位置/default也是如此,该位置很可能是目录名。 应用程序可能会检索指定的模板文件,并在其响应中包含内容。 这些参数很容易受到路径遍历攻击的影响,从而允许从服务器读取任意文件(请参见第10章)。

还需要注意的是edit参数,该参数设置为false。 将此值更改为true可能会修改注册功能,从而可能使攻击者能够编辑应用程序开发人员不希望对其进行编辑的项目。 ver参数没有任何可轻易猜到的目的,但是修改此参数可能会导致应用程序执行攻击者可以利用的一组不同功能。

最后,考虑以下请求,该请求用于向应用程序管理员提交问题:

POST /feedback.php HTTP/1.1
Host: wahh-app.com
Content-Length: 389

from=user@wahh-mail.com&to=helpdesk@wahh-app.com&subject=
Problem+logging+in&message=Please+help...

与其他示例一样,.php文件扩展名指示该功能是使用PHP语言实现的。 同样,该应用程序很可能与外部电子邮件系统连接,并且似乎用户可控制的输入已在电子邮件的所有相关字段中传递到该系统。 可以利用该功能将任意消息发送给任何收件人,并且任何字段都可能容易受到电子邮件标头注入的影响(请参阅第10章)。

TIP 通常有必要考虑整个URL和应用程序上下文,以猜测请求的不同部分的功能。 从Extreme Internet Shopping应用程序中调用以下URL:

http://eis/pub/media/117/view

该URL的功能可能等效于以下内容:

http://eis/manager?schema=pub&type=media&id=117&action=view

虽然不确定,但资源117似乎包含在资源media集合中,并且应用程序正在对此资源执行与view等效的操作。 检查其他URL将有助于确认这一点。

首先要考虑的是将动作从view更改为可能的替代方式,例如editadd。 但是,如果将其更改为add,而这种猜测是正确的,则可能对应于尝试添加id117的资源。 这可能会失败,因为已经有一个id117的资源。 最好的方法是寻找一个id值高于最高观察值的加法运算,或者选择一个任意的高值。 例如,您可以请求以下内容:

http://eis/pub/media/7337/add

在保持相似的URL结构的同时,通过更改media来寻找其他数据收集也是值得一试的:

http://eis/pub/pages/1/view
http://eis/pub/users/1/view

HACK STEPS

  • 1.在它们支持的功能的上下文中,查看提交给应用程序的所有参数的名称和值。
  • 2.尝试像程序员一样思考,并想象可能使用了哪些服务器端机制和技术来实现您可以观察到的行为。

1.3.2 推算出应用程序行为(Extrapolating Application Behavior)

通常,应用程序在其功能范围内的行为都是一致的。 这可能是因为不同的功能是由同一开发人员编写的,或者是为同一设计规范编写的,或者共享一些通用的代码组件。 在这种情况下,有可能在一个区域中得出有关服务器端功能的结论,并将其推断到另一个区域。

例如,应用程序可以强制执行一些全局输入验证检查,例如在处理各种潜在的恶意输入之前将其清除。 识别出一个盲目的SQL注入漏洞后,您可能会遇到利用它的问题,因为输入验证逻辑会以看不见的方式修改您精心设计的请求。 但是,应用程序中的其他功能可能会提供有关正在执行的消毒类型的良好反馈,例如,将某些用户提供的数据回显到浏览器的功能。 您可能可以使用此功能来测试SQL注入有效负载的不同编码和变体,以确定在应用输入验证逻辑后必须提交哪些原始输入才能实现所需的攻击字符串。 如果幸运的话,验证在整个应用程序中的工作方式相同,使您可以利用注入漏洞。

某些应用程序在客户端上存储敏感数据时会使用自定义混淆方案,以防止用户随意检查和修改此数据(请参阅第5章)。 某些这样的方案可能很难区分给定的仅对混淆数据样本的访问权限。 但是,应用程序中可能会有一些功能,用户可以提供混淆后的字符串并检索原始字符串。 例如,错误消息可能包含导致错误的模糊数据。 如果在整个应用程序中使用相同的混淆方案,则有可能从一个位置(例如cookie)获取混淆后的字符串,并将其提供给另一函数来解释其含义。 通过为功能提交系统变化的值并监视其去混淆的等效项,还可以对混淆方案进行反向工程。

最后,错误通常在应用程序中不一致地处理。 一些区域可以很好地捕获和处理错误,而其他区域则只是崩溃并向用户返回详细的调试信息(请参阅第15章)。 在这种情况下,可能可以从一个区域中返回的错误消息中收集信息,并将其应用于可以正常处理错误的其他区域。 例如,通过以系统的方式操纵请求参数并监视接收到的错误消息,可以确定应用程序组件的内部结构和逻辑。 如果幸运的话,可以在其他区域复制此结构的各个方面。

HACK STEPS

  • 1.尝试识别应用程序中可能包含其他区域内部结构和功能线索的任何位置。
  • 2.在这里可能无法得出任何肯定的结论; 但是,当您尝试利用任何潜在漏洞时,发现的案例可能在攻击的后期阶段很有用。

1.3.3 隔离独特的应用程序行为(Isolating Unique Application Behavior)

有时情况与上述情况相反。 在许多安全性良好或成熟的应用程序中,采用了一致的框架来防止多种类型的攻击,例如跨站点脚本,SQL注入和未授权访问。 在这些情况下,最容易发现漏洞的领域通常是应用程序中已追溯添加或“附加”的部分,因此未由应用程序的一般安全框架处理。 此外,它们可能无法通过身份验证,会话管理和访问控制正确地绑定到应用程序中。 这些通常可以通过GUI外观,参数命名约定中的差异或通过源代码中的注释来明确地识别。

HACK STEPS

  • 1.记下任何与应用程序其余部分中使用的标准GUI外观,参数命名或导航机制不同的功能。
  • 2.还记下可能已追溯添加的功能。 示例包括调试功能,CAPTCHA控件,使用范围和第三方代码。
  • 3.对这些方面进行全面检查,不要假定应用程序中其他地方使用的标准防御措施也适用。

1.4 映射攻击面(Mapping the Attack Surface)

映射过程的最后阶段是确定应用程序暴露的各种攻击面以及与每个应用程序通常关联的潜在漏洞。 以下是您可以识别的某些关键行为和功能类型的粗略指南,以及每种类型中最常见的漏洞类型。 其余的本书关注如何发现和利用以下每个问题的实用细节:

  • 1.客户端验证 - 检查可能无法在服务器上复制
  • 2.数据库交互 - SQL注入
  • 3.文件上传和下载 - 路径遍历漏洞,存储的跨站点脚本
  • 4.显示用户提供的数据 - 跨站脚本
  • 5.社交网络功能 - 用户名枚举、存储的跨站点脚本
  • 6.登录 - 用户名枚举,若密码,暴力破解
  • 7.多级登录 - 逻辑缺陷
  • 8.会话状态 - 可预测的令牌,令牌的不安全处理
  • 9.访问控制 - 横向和纵向特权升级
  • 10.用户模拟功能 - 特权提升
  • 11.使用明文通信 - 会话劫持,捕获密码和其他敏感数据
  • 12.站外链接 - Referer标头中查询字符串参数的泄漏
  • 13.与外部系统的接口 - 会话and/or访问控制处理的快捷方式
  • 14.错误信息 - 信息泄漏
  • 15.电子邮件交流 - 电子邮件and/or或命令注入
  • 16.本机代码组件或交互 - 缓冲区溢出
  • 17.使用第三方应用程序组件 - 已知漏洞
  • 18.可识别的Web服务器软件 - 常见的配置缺陷,已知的软件错误

Mapping the Extreme Internet Shopping Application

在映射了EIS应用程序的内容和功能之后,可以通过许多路径来攻击应用程序,如图4-15所示。

figure4-15 图4-15

/auth目录包含身份验证功能。 全面审查所有身份验证功能,会话处理和访问控制是值得的,包括进一步的内容发现攻击。

/core路径中,sitestats页面似乎接受由管道字符|分隔的参数数组。 与传统的基于输入的攻击一样,其他值也可能是暴力破解的,例如sourcelocationIP,以试图揭示有关其他用户或pageID中指定的页面的更多信息。 还可以找出有关不可访问资源的信息,或者尝试使用pageID中的通配符选项,例如pageID=allpageID=*。 最后,由于观察到的pageID值包含斜杠,因此它可能指示正在从文件系统中检索资源,在这种情况下,可能会发生路径遍历攻击。

/gb路径包含网站的留言簿。 访问此页面建议将其用作讨论论坛,由管理员主持。 邮件经过审核,但是登录绕过login=true意味着攻击者可以尝试批准恶意邮件(例如,进行跨站点脚本攻击),并向管理员读取其他用户的私人邮件。

/home路径似乎包含经过身份验证的用户内容。 这可以为尝试发起横向特权升级攻击以访问其他用户的个人信息并确保在每个页面上都存在并实施访问控制提供良好的基础。

快速查看显示/icons/images路径包含静态内容。 对于可能表示第三方软件的图标名称,可能需要蛮力地进行,并检查这些目录上的目录索引,但它们不太值得进行大量工作。

/pub路径在/pub/media/pub/user下包含REST风格的资源。 通过将/pub/user/11中的数值作为目标,可以使用蛮力攻击来查找其他应用程序用户的配置文件页面。 诸如此类的社交网络功能可以揭示用户信息,用户名和其他用户的登录状态。

/shop路径包含在线购物站点,并具有大量URL。 但是,它们的结构都相似,攻击者可能只看一两个项目就可以探测所有相关的攻击面。 购买过程可能包含有趣的逻辑缺陷,可利用这些缺陷获取未经授权的折扣或避免付款。

HACK STEPS

  • 1.了解应用程序内实现的核心功能以及所使用的主要安全机制。
  • 2.确定应用程序功能和行为的所有特征,这些特征通常与常见漏洞相关。
  • 3.针对公共漏洞数据库(例如www.osvdb.org)检查任何第三方代码,以确定任何已知问题。
  • 4.制定攻击计划,优先考虑外观最有趣的功能和最严重的关联潜在漏洞。

总结

映射应用程序是攻击它的关键先决条件。 潜入并开始探查错误可能很诱人,但是花一些时间对应用程序的功能,技术和攻击面有深刻的了解将为您带来很多好处。

与几乎所有的Web应用程序黑客一样,最有效的方法是使用手动技术,在适当的情况下通过受控的自动化加以补充。 没有完全自动化的工具可以安全地对应用程序进行彻底的映射。 为此,您需要动手并借鉴自己的经验。 我们概述的核心方法包括以下内容:

  • 手动浏览和用户控制的搜寻,以枚举应用程序的可见内容和功能
  • 使用蛮力结合人类推理和直觉来发现尽可能多的隐藏内容
  • 对应用程序进行智能分析,以识别其关键功能,行为,安全性机制和技术
  • 评估应用程序的攻击面,突出显示最有前途的功能和行为,以便更集中地研究可利用的漏洞

Mapping the Application(1)(Chapter 4) - Enumerating Content and Functionality

: