当前位置: 首页 > news >正文

靶场(二十九)---小白心得靶场体会---BitForge

兄弟们浅做一下社区评级very hard难度的靶场,话不多说直接开始我们的每日一扫,运气不错我们发现了git泄露,果断尝试git-dumper去拉一下文件

PORT     STATE  SERVICE    VERSION
22/tcp   open   ssh        OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 f2:5a:a9:66:65:3e:d0:b8:9d:a5:16:8c:e8:16:37:e2 (ECDSA)
|_  256 9b:2d:1d:f8:13:74:ce:96:82:4e:19:35:f9:7e:1b:68 (ED25519)
80/tcp   open   http       Apache httpd
|_http-title: Did not follow redirect to http://bitforge.lab/
|_http-server-header: Apache
| http-git: 
|   192.168.165.186:80/.git/
|     Git repository found!
|     .git/config matched patterns 'user'
|     Repository description: Unnamed repository; edit this file 'description' to name the...
|_    Last commit message: created .env to store the database configuration 
3306/tcp open   mysql      MySQL 8.0.40-0ubuntu0.24.04.1
| ssl-cert: Subject: commonName=MySQL_Server_8.0.40_Auto_Generated_Server_Certificate
| Not valid before: 2025-01-15T14:38:11
|_Not valid after:  2035-01-13T14:38:11
| mysql-info: 
|   Protocol: 10
|   Version: 8.0.40-0ubuntu0.24.04.1
|   Thread ID: 19
|   Capabilities flags: 65535
|   Some Capabilities: SupportsCompression, LongColumnFlag, Speaks41ProtocolOld, LongPassword, Support41Auth, SupportsTransactions, IgnoreSigpipes, FoundRows, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, ConnectWithDatabase, DontAllowDatabaseTableColumn, InteractiveClient, ODBCClient, SwitchToSSLAfterHandshake, SupportsLoadDataLocal, SupportsAuthPlugins, SupportsMultipleResults, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: ])w\x0D\x02x\x19Sj-Xn1p\x086>.+g
|_  Auth Plugin Name: caching_sha2_password
|_ssl-date: TLS randomness does not represent time
9000/tcp closed cslistener
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

这里我是使用创建一个虚拟环境,进行git-dumper的一些库的下载,要不然常规下载我的kali会报错

python3 -m venv /path/to/venv
source /path/to/venv/bin/activate

这里就是创建环境成功的图片

直接拉取我们可以发现两个文件index.php和login.php文件,单纯去看只能发现两个域名,其他啥也没有,果断使用git log看一下历史变动记录(这里的操作如果你打过oscp官方指定靶场会很熟悉)

然后就是用git show查看具体文件变更,如果不知道查看哪个文件可能有用,博主的建议是挨个看,就会发现中间两个文件内容差不多都有用户名和密码露出,第一个和第四个文件都无可以展示的内容,所以我就不展示了,嘿嘿

这里就是我们获得的域名,在之前的git爬取的文件中所记录的,添加到hosts文件中

当我们访问这个plan子域名时候,我们会跳转到这个登录界面,然后我们发现了该服务的版本号(这里基本我们就可以确定突破口大概在这里)然后我们拿之前获得的票据去登录发现不成功,遂暂时放弃

然后我们用这个票据尝试登录mysql,发现可以成功登录,但是这里还需要注意的一点是跟上一个靶场一样我们要加个-ssl=0,要不然会报错,然后就是正常的文件查询了(这里的第一个库里面没东西,第二个不用看,第三个禁止读取,所以我们只能看第四个了),很顺利的我们读到了admin的票据

果断尝试hash破解,结果如图所示发现破解不了,那么看似好像没路了,但实则不然,靶场的第一个难点来了,在破解不了的情况,我们可以尝试替换一下hash(这里考你会不会mysql的替换名命令),但是我们不知道这里用的是什么加密方式,遂暂时放弃

那没办法只能去跑一下plan的目录了,看看能不能看到一些有用的消息,结果如图所示我们跑出不少有用的目录,这里我比较感兴趣的是/includes目录,如果你简单学过一点点php代审,就会知道我为啥会先去看这个目录了

进入这个includes目录后发现了一堆可读文件,挨个点点,搜索一下关键字pass,看看能不能找到加密方式,结果一不小心发现了默认admin加密后的值,那还能说什么呢,果断复制粘贴保存下来

然后再回到数据库中使用updata命令对用户admin的密码尝试替换

UPDATE planning_user SET password='df5b909019c9b1659e86e0d6bf8da81d6fa3499e' WHERE user_id='ADM';

然后正如我所想,可以替换admin用户的命令,所以当你破解不了hash的时候,不妨试试updata命令

再回到之前的登录界面,直接输入admin:admin成功登录,证明票据成立

然后就是搜索这个版本的服务的exp,发现一个rce的漏洞,但是就是需要用户名和密码,正好符合我们之前的苦心,果断复制粘贴下来

这里使用exp的时候,需要注意一下攻击的路径,要不然他上传不了后门文件

在成功执行后,我们可以获得一个交互shell,只不过这个是不完整的,我们需要构造一个新的反弹shell,这里经过测试发现还是python3的反弹shell命令好用,其他常规的弹不成功

然后就是我们选择的反弹shell的端口,最好选靶机开放的端口,这个靶机设置防火墙了,其他端口弹不出来,一开始我还以为我的命令出现问题了,毕竟好久没遇到端口限制的靶机了

因为端口限制,所以直接远程执行linpeas会出现访问不到的情况,这个时候我们只能上传linpeas脚本了(呜呜呜,偷不了懒了)

这里也是很顺利的发现了一个jack的票据

话不多说直接su jack,成功拿到jack权限,顺利读到第一个flag,然后就是用jack权限再跑一遍linpeas,发现了jack底下有个sudo提权的方法

那多的不说,少的不唠我直接看看这个文件是干啥的,发现是个bash脚本,他会cd到一个目录底下,然后运行flask,那看到这个消息我们肯定也要去看一下这个目录底下有啥东西,然后紧接着我们便会看到一个python文件,而且还是我们jack权限可以改的,那虽然咱不知道他是咋关联到的,但是我猜测是劫持一类的方法,所以我们果断写个pytho脚本进行替换

这里是就是常规重命名加上传我们的恶意文件,然后sudo执行一下这个脚本

这里我们也是成功收到root权限的shell,完美结束

总结:

这个靶场不是很难,猜测作者想要考验git一些命令和mysql的update命令的使用,至于内网我纯靠经验猜测,因为他的那些脚本都没办法更改,能改的地方只有那一个python脚本,也算是瞎猫碰见死耗子,但是博主还是要嘴硬一下,这个靶场一点也不难,嘿嘿。

链接:

SOPlanning 1.52.01 (Simple Online Planning Tool) - Remote Code Execution (RCE) (Authenticated) - PHP webapps Exploit

CrackStation - Online Password Hash Cracking - MD5, SHA1, Linux, Rainbow Tables, etc.

http://www.dtcms.com/a/320013.html

相关文章:

  • MySQL 极简安装挑战:跨平台高效部署指南
  • C语言 16_day
  • 【Linux基础知识系列】第八十九篇 - 文件内容快速查看:使用cat与tac
  • 容器之王--部署Docker私有仓库harbor母盘步骤演练
  • 使用python基于langchain来写一个ai agent
  • TCP粘包问题详解与解决方案
  • 2025 年华数杯全国大学生数学建模竞赛C 题 可调控生物节律的 LED 光源研究--完整成品、思路、模型、代码、结果分享
  • Maven私服搭建--Nexus-3.82.0 Linux环境
  • 微服务平台需求-部署一体化文档V1.0
  • 计算机网络:固定网络位长度子网划分flsm和可变长子网掩码划分vlsm的区别
  • Liberica JDK 和普通JDK(如Oracle JDK、OpenJDK等)的差异
  • Spring MVC中HttpSession的详解
  • RocketMQ架构解析
  • 工单分类微调训练运维管理工具原型
  • 【FreeRTOS 】任务通知
  • 【原创】Flex和Bison中巧用单双引号提升语法文件的可读性
  • 21点(人机)
  • 学习设计模式《二十一》——装饰模式
  • 深入解析Three.js中的BufferAttribute:源码与实现机制
  • 微信小程序与后台管理系统开发全流程指南
  • 用LaTeX优化FPGA开发:结合符号计算与Vivado工具链
  • 广东省省考备考(第六十九天8.7)——判断推理(强化训练)
  • 从零实现RPC框架:Go语言版
  • newlib库中malloc函数依赖_sbrk函数,该函数使用链接脚本中的_end符号作为堆的初始地址.
  • 古法笔记 | 通过查表进行ASCII字符编码转换
  • change和watch
  • Event Stream输出优化:Vue3节流函数的正确实现
  • Flink的运行模式
  • 【算法训练营Day22】回溯算法part4
  • Linux中进程地址空间