前几天,我们分享了《渗透测试最强秘籍Part1:信息收集》。今天继续该系列的第二篇文章——配置和部署。
分享纲要:
1. 测试网络/架构配置
2. 测试应用程序平台配置
3. 测试文件扩展处理敏感信息
4. 审计旧的、备份的和未引用的文件以发现敏感信息
5. 枚举基础结构和应用程序管理接口
6. 测试 HTTP 方法
7. 测试 HTTP Strict Transport Security
8. 测试 RIA 跨域策略
《渗透测试最强秘籍》系列文章将会按以下主题陆续分享给大家,欢迎大家持续关注绿盟科技博客!
审查应用程序架构
不安全的协议, 如 ftp, telnet 或 http 基本身份验证, 易于利用Wireshark嗅探管理员密码。
更糟糕的是, WebDAV 不要求客户端提供用户名和密码, 因此黑客可以上传任何他想要的恶意文件。
建议使用安全协议如: FTPs, SFTP, SSH, TLS/SSL,VPN,…
配置审计和测试是一项关键任务, 而典型的 web 和应用程序服务器安装将包括许多功能 (如应用程序示例、文档、测试页), 在部署前应删除这些不必要的内容以避免安装后被利用。
许多 web 服务器和应用程序服务器在默认安装中提供了为开发人员的利益提供的示例应用程序和文件, 以便测试服务器在安装后是否正常工作。
但是, 许多默认 web 服务器应用程序后来被发现易于受攻击或信息泄露现象。
例如:
参考:
Strict Transport Securityhttps://isc.sans.edu/diary/Wordpress+%22Pingback%22+DDoS+Attacks/17801
https://hackerone.com/reports/96294
https://github.com/1N3/Wordpress-XMLRPC-Brute-Force-Exploit/blob/master/wordpress- xmlrpc-brute-v2.py
WordPress XMLRPC brute force attacks via BurpSuite
这是非常普遍的, 甚至是建议的行为。
应考虑到一些共同准则:
日志记录是应用程序体系架构安全性的重要资产, 因为它可以用来检测应用程序中的缺陷, 日志通常是由 web 和服务器软件生成的。
日志中的敏感信息
某些应用程序可能会使用GET来转发表单数据, 在服务器日志中可以查看。这意味着服务器日志可能包含敏感信息 (如用户名密码或银行帐户详细信息)。如果攻击者获得日志, 例如通过管理接口或已知的 web 服务器漏洞或配置错误 (如基于 Apache 的 HTTP 服务器的状态错误配置), 攻击者可能会利用此敏感信息。。
日志位置
尝试将日志保存在另外的位置, 而不是在 web 服务器中。这也使得聚合来自不同源的日志 (如 web 服务器场的应用程序) 更容易, 而且它也使得在不影响服务器本身的情况下进行日志分析 (可以是 CPU 密集型) 更容易。
日志存储
在 UNIX 系统中, 日志将位于/var (虽然某些服务器安装可能驻留在 /opt 或 /usr/local), 因此确保包含日志的目录位于单独的分区中是非常重要的。在某些情况下, 为了防止系统日志受到影响, 服务器软件本身的日志目录 (如 apache web 服务器中的 var/log/apache) 应该存储在专用分区中。
日志分割
大多数服务器 (但很少有自定义应用程序) 会分割日志以防止它们填满其驻留的文件系统。
应测试此功能, 以确保:
某些服务器在达到给定大小时可能会分割日志。如果发生这种情况, 必须确保攻击者无法强制日志分割以隐藏其踪迹。
日志内容
文件扩展通常在 web 服务器中使用, 以方便地确定哪些技术/语言/插件满足 web 请求。
提交涉及不同文件扩展名的 http 请求, 并验证它们是如何处理的。这些验证应在每个 web 目录基础上进行。
web 服务器永远不应返回以下文件扩展名, 因为它们与可能包含敏感信息的文件相关, 也不应用于没有理由提供服务的文件。
使用谷歌黑客技术, 容易找到他们, 例如
下面的文件扩展名与文件有关, 在访问时, 浏览器将显示或下载此文档。因此, 必须检查具有这些扩展名的文件, 以验证它们是否确实应该被送达 (而不是剩饭), 并且它们不包含敏感信息。
有关更多信息, 请访问此链接: http://filext.com/
我们可以用下面的技术来解决这个问题:
对文件扩展名处理执行白盒测试, 以检查 web 服务器/应用服务器中参与 web 应用程序体系结构的配置, 并验证它们如何为不同的文件提供服务扩展。如果 web 应用程序依赖于负载平衡的异构基础结构, 则确定这是否会引入不同的行为。
虽然 web 服务器中的大多数文件都是由服务器本身直接处理的, 但发现未引用和/或被遗忘的文件并不少见, 它们可用于获取有关基础架构或登录凭据的重要信息。常见的情形包括:重命名的修改后的文件的旧版本、可以作为源下载的加载到选则语言中的包含文件, 以压缩存档形式进行的自动或手动备份。所有这些文件都可以授予渗透测试人员对内部工作、后门、管理接口甚至凭据的访问权限, 以连接到管理接口或数据库服务器。
使用自动化和手动技术对未引用文件进行测试:
关于未引用目录的另一个线索来源是用于向 web 机器人提供指令的/robots.txt 文件。
下面介绍可用于测试管理接口是否存在的向量。这些技术还可用于测试相关问题, 包括权限升级。
HTTP 提供了许多可用于在 web 服务器上执行操作的方法。许多论文的方法旨在帮助开发人员部署和测试 HTTP 应用程序。
虽然 “GET” 和 “POST” 是用于访问 web 服务器提供的信息的最常用方法, 但超文本传输协议 (HTTP) 允许使用其他几种方法 (以及一些不太熟悉的方法):
其中一些方法可能会对 web 应用程序造成安全风险, 因为它们允许攻击者修改存储在 web 服务器上的文件, 在某些情况下窃取合法用户的凭据。更具体地说, 应禁用的方法如下:
发现支持的方法
测试 XST 潜能
查找您想访问的网页, 该页面具有安全约束, 因此它通常会强制将302重定向到登录页或直接强制登录。此示例中的测试 URL 与许多 web 应用程序一样工作。但是, 如果您获得的不是登录页的 “200” 响应, 则可以绕过身份验证, 从而进行授权。
www.example.com 80 JEFF / HTTP/1.1 Host: www.example.com HTTP/1.1 200 OK
Date: Mon, 18 Aug 2008 22:38:40 GMT
Server: Apache
Set-Cookie: PHPSESSID=K53QW…
如果您的框架或防火墙或应用程序不支持 “JEFF” 方法, 它应该产生错误页 (或者最好是405 Not Allowed 或501 Not implemented error page )。如果它相应了该请求, 它就受到了威胁。
如果您认为系统易受此问题威胁, 请发出类似于 CSRF 的攻击, 以便更充分地利用此威胁:
幸运的是, 使用上面的三个命令-修改以适应测试和测试要求下的应用程序-将创建一个新用户, 分配一个密码, 并成为管理员。
HTTP Strict Transport Security (HSTS) 标头是一种机制, web 站点必须与 web 浏览器通信, 所有与给定域交换的通信必须始终通过 https 发送。
考虑到此安全措施的重要性, 验证网站是否使用此 HTTP 标头非常重要, 以确保所有数据都从 web 浏览器加密到服务器。
HTTP Strict Transport Security (HSTS) 功能允许 web 应用程序通过使用特殊的响应报头通知浏览器它不应该使用 HTTP 建立到指定域服务器的连接。相反, 它应该自动建立所有连接请求, 通过 HTTPS 访问站点。
HSTS标头使用两个指令:
Strict-Transport-Security: max-age=60000; includeSubDomains
必须检查 web 应用程序使用此标头, 以查找是否可能导致以下安全问题:
RIA 是基于 web 的服务, 它执行与桌面应用程序系统相同的功能。
跨域策略文件指定 web 客户端 (如 Java、Adobe Flash、adobe Reader等) 用于跨不同域访问数据的权限。对于 Silverlight, Microsoft 采用了 Adobe 的 crossdomain.xml 的一个子集, 另外还创建了它自己的跨域策略文件: clientaccesspolicy. xml。
每当 web 客户端检测到必须从其他域请求资源时, 它将首先在目标域中查找策略文件, 以确定是否允许执行跨域请求 (包括标头和基于套接字的连接)。
主策略文件位于域的根目录中。可能会指示客户端加载其他策略文件, 但它始终首先检查主策略文件, 以确保主策略文件允许请求的策略文件。
我们应该尝试从应用程序的根目录和每个找到的文件夹中检索策略文件 crossdomain.xml 和 clientaccesspolicy.xml。
检索所有策略文件后, 应根据最小特权原则检查允许的权限。请求只应来自需要的域、端口或协议。应该避免过于宽松的政策。应密切审查在这些政策中采用 “*”。
https://packetstormsecurity.com/files/download/146830/web-application-security-testing.pdf