WEB应用中的信息泄漏以及攻击方法

简介: 本文讲的是WEB应用中的信息泄漏以及攻击方法,下面内容介绍了在web应用程序中的一些信息泄漏问题,当然也会举例分析,介绍如何发现这些信息泄漏。
本文讲的是 WEB应用中的信息泄漏以及攻击方法下面内容介绍了在web应用程序中的一些信息泄漏问题,当然也会举例分析,介绍如何发现这些信息泄漏。

Banner收集/主动侦查

Banner收集或主动侦察是一种攻击类型,攻击者在此期间向他们的目标系统发送请求,以收集有关它的更多信息。如果系统配置不当,可能会泄漏自己的信息,如服务器版本,PHP或者ASP.NET版本,OpenSSH版本等。

在大多数情况下,Banner收集并不会涉及关键信息泄漏,不过可以让攻击者收集到开发过程中使用环境版本的信息。例如:如果目标在服务器上面使用的是php旧版本,由于没有更新,所以攻击者可以利用已知的漏洞攻击,也许会出现远程命令执行/代码执行的漏洞。

Banner信息收集举例:

Nmap scan report for example.com (x.x.x.x)
Host is up (0.037s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.3 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

在上面例子中,我们使用Nmap扫描器对目标进行端口扫描。结果表明目标开启了22端口,并且OpenSSH版本号是5.9p1。也许这个版本就存在可以被攻击者利用的漏洞。

源码泄漏

当Web应用程序的后端环境代码暴露给不涉及应用程序开发的用户时,会发生源代码泄露问题。源代码泄露使攻击者能够通过读取代码和检查逻辑缺陷,以及查看硬编码的用户名/密码对或者API密钥来发现这个应用程序的不足以及漏洞。

漏洞的严重性取决于泄漏源码的多少,以及代码在应用程序中的重要性。总而言之,因为攻击者可以查看源代码,所以很大程度上将渗透测试由黑盒转向白盒。事实上,有很多错误能够导致源码泄漏的漏洞发生,下面这几种错误就包含在其中:

代码库未受保护

为了更加方便的管理站点,大多数站点都会把他们源码上传到云端。这些项目有时会管理不当,攻击者能够直接访问网站源码和网站信息。并且,有些公司将他们的开源软件项目放到了github上面,这样公共用户可以对这个项目作出改进。这种情况下,源码已经是公开的,但是这种情况下泄漏公司重要信息已经是很常见了。

实例:

有些源码库只允许使用第三方帐号进行登录并且符合身份认证的用户查看源码代码。这些源码库有时候配置错误,没有严格控制查看内容的权限,导致任何人都可以查看源码内容。

WEB应用中的信息泄漏以及攻击方法

源代码中存在敏感信息

另一个例子是当公共代码具有硬编码的敏感信息时,例如用户凭证或API密钥。攻击者可以轻松地使用这些信息来破坏这些服务,或者可以使用合法账户进行登录。在信息披露期间通常泄漏的另一条信息是内部IP地址,允许攻击者识别和了解内部网络拓扑,然后可以将这样的信息用于攻击内部服务中,例如服务器端请求伪造(SSRF)攻击来攻击多个系统。

MIME类型不正确

浏览器通过HTTP包头中的Content-Type内容来确定如何解析HTTP服务器响应返回的内容。举个例子,我们想让浏览器将html文件解析,而不是只是纯文本文件。再比如我们想让浏览器下载一个zip,而不是解析这个zip文件。

如果web服务器的配置错误,那么就会出现这样的错误:当我们访问html时候,Conten-Type会是:text/plain,而不是text/html,并且html文件会以纯文档的形式展现给浏览器。因此</>还有一些其他字符都会在页面上显示出来。下面图片是展示当页面访问时服务器设置的Content-Type响应头。

WEB应用中的信息泄漏以及攻击方法

当Web应用程序无法为其中包含源代码的网页发送适当的Content-Type头部时,可能会发生信息泄露问题,并且最终以纯文本形式呈现信息,并披露有关Web应用程序的有价值信息。

实例

我们假设一个Web服务器用于运行一个PHP
Web应用程序,但现在运行一个ASP.NET。以前由旧的Web应用程序使用并具有敏感信息(如MySQL数据库凭据)的PHP脚本正在被用户访问。如果PHP没有在Web服务器上运行和配置,则Content-Type将从HTTP响应中省略,并且PHP脚本将被解释为纯文本或HTML标记,具体取决于Web浏览器,然后就会泄露里面包含的所有信息。

下面屏幕截图就展示了即使服务器返回头没有设置Content-Type,火狐浏览器还是将php脚本解析成了HTML。我们需要在查看源代码中看到脚本信息。

WEB应用中的信息泄漏以及攻击方法

下面截图展示了chrome浏览器直接返回了纯文本的文件,所以我们可以直接看到源码。

WEB应用中的信息泄漏以及攻击方法

处理敏感信息不当

另一种常见的信息泄漏是由硬编码的账户名和密码以及内部ip在代码的注释中泄漏。在大多数情况下,这些敏感信息在访问web页面时会展现出来。这些敏感信息的泄漏也可能会导致web应用程序遭受攻击。攻击者只需要右键页面查看网页源代码,就可以找到这些注释。如果在发现web应用程序存在这种问题,Netsparker将会提醒您。

缺少认证机制或者认证机制配置不当

在Web应用程序权限设置不正确,不完整或甚至缺少授权检查可能会允许攻击者访问敏感信息或未授权访问登录用户的信息。这些问题很常见,它们也列在OWASP十大最常见和利用漏洞的列表中。

示例:https://www.netsparker.com/blog/web-security/missing-function-level-access-control-vulnerability-maian-support-helpdesk/
一个真实的权限控制不当,导致被拿shell的案例。

文件名或者文件路径泄漏

在某些情况下,Web应用程序可以公开文件名或文件路径,从而显示关于底层系统结构的信息。这可能是由于用户输入的不正确处理,后端的异常或Web服务器的不当配置。有时可以在Web应用程序,错误页面,调试信息等的响应中找到或标识这些信息。

示例:
攻击者可以通过发送访问请求来检查Web应用程序是否公开任何文件名或路径。例如,当发送以下请求时,Web应用程序返回403(禁止)响应:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd

但是当攻击者发送下面请求时,web应用程序返回404(没有文件)的响应:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/doesntexist

由于第一次请求,攻击者得到了403 Forbidden错误,而对于第二个请求,他得到了404 Not Found,他知道在第一种情况下,该文件存在。因此,攻击者可以利用Web应用程序的行为,了解服务器的结构以及验证系统上是否存在某个文件夹或文件。

目录遍历

文件名和路径公开相关的是Web服务器中的目录显示功能。此功能在Web服务器上默认提供。当没有默认网页时,在网站上显示Web服务器显示用户列表中的文件和目录。

因此,在apahce服务器上面默认文件名为Index.php,当没有上传index.php时,服务器就会将文件夹中的内容全部展示出来。如下图:

WEB应用中的信息泄漏以及攻击方法

使用这样一个模块会使服务器产生很大的安全隐患。
实例:

现在很多人都知道这样的功能应该被禁用,所以看到它并不常见。虽然我们假设扫描Web服务器的端口后,攻击者发现在8081端口运行的Web服务器的默认启动此功能。
这样的“默认值”通常被Web服务器管理员忽略,这也意味着它们不太安全。它会允许攻击者浏览目录并访问Web应用程序的源代码,备份和可能的数据库文件。

防止信息泄漏应该注意的事项

信息泄漏问题似乎是一件小事情,但对攻击者来说是非常有价值的。它们允许攻击者通过执行基本测试,有时只需在公共页面中查找信息,获得有关攻击目标的非常有用的信息。

事实上,Netsparker在扫描目标网站时会报告知识库节点中可能的信息披露和其他类似的安全问题。你应该解决这些问题,特别是当你认为它们很容易修复时。以下是遵循的一些指导方针,以便您可以确保您的Web应用程序受到良好保护:

1. 确保您的Web服务器不发送显示有关后端技术类型或版本信息的响应头。

2. 确保服务器打开的端口上运行的所有服务都不会显示有关其构建和版本的信息。

3. 确保所有目录的访问权限正确,保证不会让攻击者访问到你的所有文件。

4. 不要在代码中将账户密码硬编码进去。也不要在注释中写入相关信息。

5. 在web服务器中为所有类型的应用程序配置MIME信息

6. 不需要上传到网站上的敏感信息永远都不要上传

7. 始终检查每个创建/编辑/查看/删除资源的请求是否具有适当的访问控制,防止越权访问,并确保所有机密信息保密。

8. 确保您的Web应用程序正确处理用户输入,并且始终为所有不存在/不允许的资源返回通用响应,以便混淆攻击者。

9. 后端代码应该考虑到所有情况,并且当异常发生时,能够保证信息不被泄漏。

10. 配置Web服务器以禁止目录遍历,并确保Web应用程序始终显示默认网页。




原文发布时间为:2017年3月27日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
14天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
30天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
401 3
|
1月前
|
前端开发 数据库 UED
构建高性能Web应用的关键技术
本文将介绍构建高性能Web应用的关键技术,包括前端优化、后端优化、数据库优化等方面。通过深入讨论各项技术的原理和实践方法,帮助开发者们提升Web应用的响应速度和用户体验。
|
1天前
|
SQL 存储 前端开发
< 今日份知识点:web常见的攻击方式(网络攻击)有哪些?如何预防?如何防御呢 ? >
网络安全威胁日益严重,2017年的永恒之蓝勒索病毒事件揭示了网络攻击的破坏力。为了防御Web攻击,了解攻击类型至关重要。Web攻击包括XSS、CSRF和SQL注入等,其中XSS分为存储型、反射型和DOM型,允许攻击者通过注入恶意代码窃取用户信息。防止XSS攻击的方法包括输入验证、内容转义和避免浏览器执行恶意代码。CSRF攻击则伪装成用户执行操作,防范措施包括同源策略和CSRF Token验证。SQL注入则通过恶意SQL语句获取数据,预防手段包括输入验证和使用预编译语句。面对网络威胁,加强安全意识和实施防御策略是必要的。
|
7天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
12 1
|
7天前
|
缓存 监控 数据库
Flask性能优化:打造高性能Web应用
【4月更文挑战第16天】本文介绍了提升Flask应用性能的七大策略:优化代码逻辑,减少数据库查询,使用WSGI服务器(如Gunicorn、uWSGI),启用缓存(如Flask-Caching),优化数据库操作,采用异步处理与并发(如Celery、Sanic),以及持续监控与调优。通过这些手段,开发者能有效优化Flask应用,适应大型或高并发场景,打造高性能的Web服务。
|
8天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
12天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
20天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
30天前
|
安全 测试技术 网络安全
Web安全基础入门+信息收集篇
学习信息收集,针对域名信息,解析信息,网站信息,服务器信息等;学习端口扫描,针对端口进行服务探针,理解服务及端口对应关系;学习WEB扫描,主要针对敏感文件,安全漏洞,子域名信息等;学习信息收集方法及实现安全测试,能独立理解WEB架构框架,树立渗透测试开展思路!
18 0
Web安全基础入门+信息收集篇