[红日安全]Web安全Day11 - 敏感信息泄露实战

本文由红日安全成员: 爱夕 编写,如有不当,还望斧正。

大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式([email protected])联系我们。

0x01 漏洞简介

敏感数据包括但不限于:口令、密钥、证书、会话标识、License、隐私数据(如短消息的内容)、授权凭据、个人数据(如姓名、住址、电话等)等,在程序文件、配置文件、日志文件、备份文件及数据库中都有可能包含敏感数据。主要分为由版本管理软件导致的泄露, 文件包含导致的泄露和配置错误导致的泄露.

0x02 漏洞原理

由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如:

  • 通过访问url下的目录,可以直接列出目录下的文件列表;
  • 输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
  • 前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;

类似以上这些情况,我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞,但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。 因此,在web应用的开发上,除了要进行安全的代码编写,也需要注意对敏感信息的合理处理。

2、手工挖掘,根据web容器或者网页源代码的查看,找到敏感信息。

0x03 漏洞危害

  1. 扫描内网开放服务
  2. 向内部任意主机的任意端口发送payload来攻击内网服务
  3. DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
  4. 攻击内网的web应用,例如直接SQL注入、XSS攻击等
  5. 利用file、gopher、dict协议读取本地文件、执行命令等

0x04 测试方法

1、检测形式多样,工具爬虫扫描得到敏感文件的路径,从而找到敏感数据,主要是还是通过关键词爆破。

2、手工挖掘,根据web容器或者网页源代码的查看,Github,找到敏感信息。

软件敏感信息

操作系统版本

  • 可用nmap扫描得知

中间件的类型、版本

  • http返回头
  • 404报错页面
  • 使用工具(如whatweb)
    web程序(cms类型及版本、敏感信息)
  • 可用whatweb、cms_identify

    Web敏感信息

  • phpinfo()信息泄露
      http://[ip]/test.php和http://[ip]/phpinfo.php

  • 测试网页泄露在外网
      test.cgi、phpinfo.php、info.php等
  • 编辑器备份文件泄漏在外网
      http://[ip]/test.php.swp
      http://[ip]/test.php.bak
      http://[ip]/test.jsp.old
      http://[ip]/cgi~
      常见编辑器备份后缀
  • 版本管理工具(如git)文件信息泄露
      http://[ip]/.git/config
      http://[ip]/CVS/Entriesp
      http://[ip]/.svn/entriesp
  • HTTP认证信息泄露
      http://[ip]/basic/index.php
      we目录开启了HTTP Basic认证,但未限制IP,导致可暴力破解账号,密码
  • 管理后台地址泄露
      http://[ip]/login.php
      http://[ip]/admin.php
      http://[ip]/manager.php
      http://[ip]/admin_login.php
  • 泄露员工邮箱、分机号码
      泄露邮箱及分机号码可被社工、也可生成字典。
  • 错误页面暴露信息
      mysql错误、php错误、暴露cms版本等
  • 探针文件
  • robots.txt
  • phpMyAdmin
  • 网站源码备份文件(www.rar/sitename.tar.gz/web/zip等)
  • 其他

网络信息泄露

DNS域传送漏洞运维监控系统弱口令、网络拓扑泄露、zabbix弱口令、zabbix sql注入等

第三方软件应用

github上源码、数据库、邮箱密码泄露
  搜类似:smtp 163 password关键字
百度网盘被员工不小心上传敏感文件
*QQ群被员工不小心上传敏感文件

敏感信息搜集工具

https://github.com/ring04h/weakfilescan
https://github.com/lijiejie/BBScan
whatweb
dnsenum
github

0x05 实战演示

1)敏感文件泄露

URL=https://game.gtimg.cn/hosts

之前在腾讯的图床站发现了腾讯的内网hosts文件暴露在公网上。

[红日安全]Web安全Day11 - 敏感信息泄露实战_第1张图片

2)账号密码泄露

[红日安全]Web安全Day11 - 敏感信息泄露实战_第2张图片

右键查看源代码发现测试账号

登陆成功

[红日安全]Web安全Day11 - 敏感信息泄露实战_第3张图片

3)错误处理测试

不安全的错误处理方法可能泄露系统或应用的敏感信息,手工测试的过程中应留意各类错误信息,如果发现错误信息中包含系统或应用敏感信息,则进行记录。就和显错注入一样

0x06 漏洞修复

1、禁止在代码中存储敏感数据:禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据,这样容易导致泄密。用于加密密钥的密钥可以硬编码在代码中。

2、禁止密钥或帐号的口令以明文形式存储在数据库或者文件中:密钥或帐号的口令必须经过加密存储。例外情况,如果Web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令,那么就不用强制遵循该规则,将该配置文件的属性改为只有属主可读写。

3、禁止在cookie中以明文形式存储敏感数据:cookie信息容易被窃取,尽量不要在cookie中存储敏感数据;如果条件限制必须使用cookie存储敏感信息时,必须先对敏感信息加密再存储到cookie。

4、禁止在隐藏域中存放明文形式的敏感数据。

5、禁止用自己开发的加密算法,必须使用公开、安全的标准加密算法。

6、禁止在日志中记录明文的敏感数据:禁止在日志中记录明文的敏感数据(如口令、会话标识jsessionid等),防止敏感信息泄漏。

7、禁止带有敏感数据的Web页面缓存:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题。

8、应根据业务特点定义出系统存储的敏感信息。

9、敏感信息在存储、传输、显示时应进行安全处理,可采用的处理方式为加密或脱敏。

10、敏感信息不应使用GET方式提交到服务器。

11、用户密码为最高级别的敏感信息,在存储、传输、显示时都必须加密。

12、需要选择可靠的加密算法,优先选择不对称加密算法,不得使用BASE64等编码方式进行“加密”

13、对于一些系统默认报错页面应重新进行设计自定义报错页面,以免暴露系统敏感信息。[红日安全]Web安全Day11 - 敏感信息泄露实战_第4张图片

你可能感兴趣的:([红日安全]Web安全Day11 - 敏感信息泄露实战)