7、用户帐号信息
1、个人信息:用户的个人资料或帐户页面通常包含敏感信息,如用户的电子邮件地址、电话号码、API密钥等。由于用户通常只能访问自己的帐户页面,因此这本身并不代表漏洞。但某些网站包含逻辑缺陷,可能允许攻击者利用这些页面查看其他用户的数据。
如网站用户名传参
GET /user/personal-info?user=carlos
2、大多数网站都会采取措施来防止攻击者通过更改此参数来访问任意用户的帐户页面,但有时加载单个数据项的逻辑并不健壮
攻击者可能无法完全加载另一个用户的帐户页面,但是用于获取和呈现用户注册的电子邮件地址的逻辑可能无法检查用户参数是否与当前登录的用户匹配。在这种情况下,简单地更改用户参数将允许攻击者在用户自己的帐户页面上显示任意用户的电子邮件地址。
8、通过备份文件泄露源代码
1、源码泄露:获得源代码访问权限使攻击者更容易理解应用程序的行为并构造高严重性攻击。敏感数据有时甚至被硬编码在源代码中。这方面的典型示例包括用于访问后端组件的API密钥和凭据。
2、开源技术框架:如果可以识别正在使用的特定开源技术,则可以轻松访问数量有限的源代码。
3、交互式泄露:有时甚至有可能导致网站暴露自己的源代码。在规划网站时,可能会发现某些源代码文件被显式引用。不幸的是,请求它们通常不会显示代码本身。当服务器处理具有特定扩展名的文件时,例如. php语言时,它通常会执行代码,而不是简单地将其作为文本发送到客户端。但在某些情况下,可以诱使网站返回文件的内容。如文本编辑器通常在编辑原始文件时生成临时备份文件。这些临时文件通常以某种方式表示,如在文件中附加代字号(~)添加到文件名或添加不同的文件扩展名。使用备份文件扩展名请求代码文件有时会允许读取响应中的文件内容。
4、涉及实验:
实验3:通过备份文件泄露源代码
实验3:通过备份文件泄露源代码
信息:
/robots.txt文件泄露了备份文件
part1:
访问/robots.txt文件
/robots.txt文件中显示Disallow: /backup
浏览/backup
浏览到/backup/ProductTemplate.java.bak以访问源代码
part2:
完成实验
分析备份源代码中数据
连接构建器包含Postgres数据库的硬编码密码
eptvf6k7s238z52vork0s0yjspgiz1f3
单击"提交解决方案",然后输入数据库密码来解决实验室问题
(BP工具)
目标---map---选中URL--互动工具---内容搜索---启动内容发现会话
最后会发现/backup目录及其内容等相关信息
9、不安全配置导致信息泄露
1、配置不当:由于配置不当,网站有时容易受到攻击。由于第三方技术的广泛使用,这种情况尤其常见,而第三方技术的大量配置选项并不一定能被实现它们的人很好地理解。
2、调试功能:在其他情况下,开发人员可能忘记禁用生产环境中的各种调试选项。如HTTP痕量方法设计用于诊断目的。如果启用,Web服务器将响应使用痕量方法,方法是在响应中回显收到的确切请求。此行为通常是无害的,但偶尔会导致信息泄漏,例如可能由反向代理附加到请求的内部身份验证头的名称。
3、涉及实验:
实验4:经由信息公开的认证旁路
实验4:经由信息公开的认证旁路
管理界面存在一个绕过身份验证的漏洞(请获取头名称,然后使用它绕过实验的身份验证)
已有账号:wiener:peter
目标:访问管理界面并删除卡洛斯的帐户
part1:
使用已有账号登陆
后面加上/admin进行访问
响应显示,只有以管理员身份登录或从本地IP请求时,管理面板才可访问
part2:
在HTTP历史记录中,找到数据包
再次发送请求,但这次使用TRACE方法:
TRACE /admin
包含IP地址的X-Custom-IP-Authorization报头会自动附加到请求中
(用于确定请求是否来自本地主机IP地址)
part3:
"Proxy" ---> "Options"--->向下找到到“搜索和替换”--->单击“添加”
将匹配条件留空,但在“置换”字段中输入:
X-Custom-IP-Authorization: 127.0.0.1
(BP代理现在将添加此标头到发送的每个请求)
part4:
解决实验
(刷新刚刚的/admin页面)
浏览到主页,现在可以访问管理面板,就可以删除了
10、版本控制历史记录
1、版本控制系统:几乎所有的网站都是使用某种形式的版本控制系统开发的,比如Git。默认情况下,Git项目将其所有版本控制数据存储在名为.git。有时网站会在生产环境中公开此目录。在这种情况下,只需浏览到/.git.
2、下载:虽然手动浏览原始文件结构和内容通常是不切实际的,但有多种方法可以下载整个 .git 目录,然后,可以使用本地安装的Git打开它,以访问网站的版本控制历史记录。这可能包括包含已提交更改和其他感兴趣信息的日志。
3、有限性:可能无法访问完整的源代码,但是比较diff将允许阅读小的代码片段。与任何源代码一样,也可能在某些更改的行中发现硬编码的敏感数据
4、涉及实验:
实验5:版本控制历史信息泄露
实验5:版本控制历史信息泄露
获取其版本控制历史记录泄露敏感信息(获取管理员用户的密码)
目标:删除指定账号
part1:
浏览到/.git以显示实验室的Git版本控制数据
part2:
下载整个目录的副本(Linux主机命令)
Linux wget命令:用于在终端中下载网络文件
wget -r https://YOUR-LAB-ID.web-security-academy.net/.git/ 我的是: wget -r https://0a49009104e59083c21b2aaf00fd0029.web-security-academy.net/.git
part3:
先进入到文件夹中(cd命令,文件在kali中)
git status (用于显示工作目录和暂存区的状态)
仔细查看更改后的admin.conf文件的差异(提交用环境变量ADMIN_PASSWORD替换了硬编码的管理员密码。但硬编码密码在diff中仍然清晰可见)
消息提示:“从配置中删除管理员密码”(删除了2个admin文件)
git log命令:用于显示提交日志信息
git log
git diff 命令:显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别
git diff + 文件名(第二个) 我的是: git diff 08d6da909e61ec2857f99e2c41084dc3b7493834
ADMIN_PASSWORD=h2uaz3b3f199lf0ota5g
part4:
完成实验
使用管理员账号登陆,并删除指定账号