点击上方蓝字“Ots安全”一起玩耍 -点击图文广告 = 打赏
不久前,我在 Bugcrowd 的一个私人项目中进行了 Bug Hunting 活动。像往常一样,狩猎过程从侦察和枚举开始。在 Blackbox 中对这个目标执行狩猎过程。不提供凭据,应用程序的首页只是一个登录页面。
一、GIT文件夹泄露
在枚举过程中,我发现了一个.git公开的目录。
通过使用这个工具,我能够从.git目录中下载应用程序的源代码。
https://github.com/arthaud/git-dumper/blob/master/requirements.txt
二、查找凭据
即使我得到了源代码,我也没有得到任何凭据。此外,此应用程序不易受到 SQL 注入攻击,因此无法绕过登录页面。
检查了几个文件夹后,我找到了一个database目录和一个名为 .sql 的 SQL 文件structure.sql。
但是,在那些 SQL 文件中,只有一个默认用户无法破解 md5 哈希密码。
幸运的是,在应用程序中,目录列表已启用。当我打开database目录时,它显示了一些数据库文件,而不仅仅是.git目录中的一个文件。
我快速获取最新文件并检查其内容。上面有几个具有多个角色的用户。不幸的是,只有 2 个用户具有admin 角色,密码无法破解。
然后我移动到具有非管理员角色的用户,我能够破解一些非管理员用户,最后,我可以登录到应用程序。
三、绕过受限文件上传
该应用程序有一个名为Create Avatar. 通过该功能,用户可以通过选择多个选项来创建自定义头像。
选择图像选项后,浏览器将向服务器发送一个带有 2 个参数的请求,imgdata以及filename. 该imgdata参数包含我们从Create Avatar Feature生成的Base64 编码图像文件,它是将存储在服务器中的文件名。filename
应用程序已经实施了一些限制来防止用户上传恶意文件:
-
服务器只接受与文件.png, .jpg以及.gif扩展
-
服务器只接受图像数据类型的文件
如果我们尝试上传带有.php扩展名的文件,服务器将返回一条error消息。
但是,在查看我之前获得的源代码后,可以通过使用双扩展名轻松绕过此过滤器,例如:filename.png.php.
第二个过滤器被检查的内容imgdata,并且必须含有data:image/png,data:image/jpg或data:image/gif。这不是问题,因为即使内容类型设置为图像文件,我们仍然可以执行 PHP 文件。
对于初始测试,我尝试上传 PHP Info 函数:
data%3Aimage%2Fpng%3Bbase64%2CPD9waHAgcGhwaW5mbygpOyA/Pg%3d%3d
这PD9waHAgcGhwaW5mbygpOyA/Pg是一个 Base64 编码的<?php phpinfo(); ?>
并且文件上传成功!
通过使用相同的方式,我能够上传 PHP Shell 并成功执行操作系统命令。
本文始发于微信公众号(Ots安全):从 Git 文件夹泄露到远程代码执行
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论