公司账号密码、通信录泄露屡见不鲜,肆意流淌的敏感信息:WEB安全基础入门—信息泄露漏洞

欢迎关注订阅专栏!
WEB安全系列包括如下三个专栏:

  • 《WEB安全基础-服务器端漏洞》
  • 《WEB安全基础-客户端漏洞》
  • 《WEB安全高级-综合利用》

知识点全面细致,逻辑清晰、结合实战,并配有大量练习靶场,让你读一篇、练一篇,掌握一篇,在学习路上事半功倍,少走弯路!
欢迎关注订阅专栏!

  • 专栏文章追求对知识点的全面总结,逻辑严密,方便学习掌握。力求做到看完一篇文章,掌握一类漏洞知识。让读者简洁高效的掌握WEB安全知识框架,推开入门深造的大门。
  • 绝不为了追求文章数量,彰显内容丰富而故意拆散相关知识点。避免读者沉迷在无尽的技巧中而迷失进阶的道路!本系列的目标是授之以渔,而不仅仅是技巧的堆砌。
  • 每篇文章均配有大量靶场,点击文章中靶场名即可跳转练习(靶场在网站注册即可免费使用)。
  • 欢迎订阅专栏!建议学完两个基础专栏,再学习高级哦~

1. 什么是信息泄露漏洞

网站或应用在响应中无意间泄露的敏感信息,攻击者获取到这些敏感信息为后续攻击做准备。泄露的信息主要包括以下三类:

  • 其他账户的数据或财务信息意外泄露
  • 敏感业务数据泄露
  • 网站及其基础架构技术细节信息泄露

2. 通常泄露信息的途径

  • 扫描获得的网站目录和文件信息。 /cgi-bin/phpinfo 等等
  • /robots.txt/sitemap.xml君子协定文件里的路径文件信息
  • 遗漏的临时备份的源代码文件/.git /backup
  • 数据库报错或异常响应信息中反馈的内容
  • 应用反馈过多的非必要展示信息
  • 硬编码写在源码中的API KEY 、IP地址、数据库信息等

3. 信息泄露引起的原因

  • 开发遗留的部分信息,未在上线前进行清理。
  • 不安全的配置导致。比如debug模式上线后未关闭,导致在公开使用时,泄露大量调试报错信息。
  • 程序设计和实现缺陷。

3. 漏洞利用

1. 探测漏洞存在

渗透测试的一项关键技能是能够随时随地识别有价值的信息。下面的几个具体方法可以用来探测漏洞是否存在:

  • 输入混淆的参数

一旦对某个参数感兴趣,可以将该参数值进行混淆输入,观察应用响应。这一步可使用Burp爆破模块进行大量自动化的混淆测试。

  • 使用扫描器对网站进行扫描
  • 使用Burp或其他相关工具探寻信息
    • search-能在监测的所有数据包中快速筛选指定内容。
    • find comments-在检测的所有数据包和文件中,快速查找注释
    • discover content-内容探测,发现隐藏的路径、敏感信息和文件
  • 使用各种方式,诱使应用响应报错信息

2. 报错信息中的信息泄露

例题1

3. 隐藏路径中包含敏感信息

例题2

4. 通过备份文件查看源代码

例题 3

5. 错误配置导致信息泄露

例题4

6. 版本控制历史信息泄露

在开发阶段经常使用版本控制系统,例如Git 在路径扫描中有时能发现路径/.git 可在攻击端安装Git,直接拉取下载,来获取部分源代码

例题5

4. 漏洞实例

1. 错误消息中的信息泄漏(Information disclosure in error messages

  • 目标

获取使用框架的版本号

  • 解题思路

抓取数据包/product?productId=20随意在后面加个特殊符号如'尝试引起报错。

HTTP/1.1 500 Internal Server Error
Connection: close
Content-Length: 1511

Internal Server Error: java.lang.NumberFormatException: For input string: "20'"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
	at java.base/java.lang.Integer.parseInt(Integer.java:668)
	at java.base/java.lang.Integer.parseInt(Integer.java:786)
	.......
  at java.base/java.lang.Thread.run(Thread.java:833)

Apache Struts 2 2.3.31

获取到框架及其版本号

2. 调试页面上的信息泄露(Information disclosure on debug page

  • 目标

获取SECRET_KEY

  • 解题思路

通过路径扫描,发现/cgi-bin/phpinfo

3. 通过备份文件泄露源代码(Source code disclosure via backup files)

  • 目标

获取部分源代码,找到数据库密码

  • 解题思路
    1. 存在/robots.txt
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Connection: close
Content-Length: 32

User-agent: *
Disallow: /backup

  1. 访问/backup存在源代码备份,从中找到数据库密码

4. 通过信息泄露绕过身份验证(Authentication bypass via information disclosure

  • 目标

指定header为本地的用户才有权限访问admin, 删除账户carlos
测试账户:wiener:peter

  • 解题思路
    1. 扫描发现/admin页面,尝试访问。

Admin interface only available to local users

  1. 使用TRACE 方法 访问该页面发现X-Custom-IP-Authorization: IP
TRACE /admin/ HTTP/1.1
Host: acd91ff31f481bb2c0acb121008d007b.web-security-academy.net
Origin: 127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Connection: close
Cookie: session=CdwDkeDYoxOtc7RD83dIx71oQaL2kwRx
HTTP/1.1 200 OK
Content-Type: message/http
Connection: close
Content-Length: 416

TRACE /admin/ HTTP/1.1
Host: acd91ff31f481bb2c0acb121008d007b.web-security-academy.net
Origin: 127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Connection: close
Cookie: session=CdwDkeDYoxOtc7RD83dIx71oQaL2kwRx
X-Custom-IP-Authorization: IP
  1. 在访问GET /admin 设置X-Custom-IP-Authorization: 127.0.0.1成功绕过限制
GET /admin/ HTTP/1.1
Host: acd91ff31f481bb2c0acb121008d007b.web-security-academy.net
X-Custom-IP-Authorization: 127.0.0.1
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
Connection: close
Cookie: session=CdwDkeDYoxOtc7RD83dIx71oQaL2kwRx

5. 版本控制历史中的信息泄漏 (Information disclosure in version control history

  • 目标

获取administrator密码, 删除账户carlos

  • 解题思路

扫描发信版本控制路径/.git
使用linux命令拉取下载
wget -r https://your-lab-id.web-security-academy.net/.git/

0000000000000000000000000000000000000000 4e09c0b6424c3d3ef8c3a5bc704d8267f2734808 Carlos Montoya <[email protected]> 1654060361 +0000	commit (initial): Add skeleton admin panel
4e09c0b6424c3d3ef8c3a5bc704d8267f2734808 bc92290a11f85897017c0ff4d0e0a89505f8fbcf Carlos Montoya <[email protected]> 1654060361 +0000	commit: Remove admin password from config
使用diff命令查看变化,可获取到administrator密码

猜你喜欢

转载自blog.csdn.net/eason612/article/details/125331625
今日推荐