需要的工具:kali,githack(win版没下载成功)
安装方法:
kali命令行中输入:git clone https://github.com/lijiejie/GitHack
下载成功如下:
输入GitHack,然后输入python GitHack.py +所要下载的网页链接+/.git/
GIT文件基本介绍:
Git 是目前最流行的版本控制系统。版本控制系统在一种特殊的基于文件系统的数据库中记录对我们的项目代码库所做的更改。在 Git 中,这个数据库被称为存储库,其结构受 Linux 文件系统的启发。存储库维护我们代码库更改的历史记录。
git的文件夹将包含对代码库的每一个微小变动的细节。修改的所有快照都将像数据库一样记录在此文件夹中,这使得撤消更改并回滚到所需的代码版本成为可能。
git的文件夹被隐藏,以防止意外删除或文件夹的修改。如果删除此文件夹,代码库的版本历史将丢失。这意味着,将来我们将无法回滚对代码所做的更改。也意味这如果git文件夹没能及时隐藏,会导致数据泄露,源代码暴露。
几个php的函数规则:
assert
函数:
assert ( mixed $assertion [, string $description ] ) : bool
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动
如果assertion是字符串,他会被assert()当做php代码执行。 思路是通过可控变量file传入恶意参数,构造闭合 file_exists(),使assert()执行恶意代码。
strpos
函数
strpos() 函数查找字符串在另一字符串中第一次出现的位置(区分大小写。
语法:
strpos(string,find,start)
例子:攻防世界mfw
打开网页,
发现url的page会随页面更改,且再上述页面中出现git,尝试进入.git/文件,
发现能进入,存在git数据泄露,
打开kali,使用githack
输入GitHack,
再运行,python GitHack.py http://111.200.241.244:53024/.git/ (为git泄露的页面)
在root文件夹中,获取到源代码
进入flag.php发现并没有内容,应该是隐藏了,则代码审计index.php
主要部分
$file
变量接收输入的
$page
并且拼接
.php
代码中不允许输入的字符中包含连续的两个点,否则就返回错误,利用assert函数漏洞
构造playload:?page='.system('cat ./templates/flag.php').'
打开网页开发工具查看,成功获取flag
版权归原作者 托物言志 所有, 如有侵权,请联系我们删除。