linux应急1 redis应急

发布时间:2026/6/28 9:58:18
linux应急1 redis应急 小王急匆匆地找到小张小王说李哥我dev服务器被黑了快救救我本靶机需要用户挑战内容黑客的IP地址遗留下的三个flag排查流程排查ip登录信息的排查w查看系统信息用于显示某一时刻用户的行为排查当前用户信息登录信息whopts就是代表当前的终端 一个终端 数字代表编号last查看最近用户的登录信息ip找到了 但是对方直接登录的就是root 很纳闷 为什么对方能直接使用 root 可能是登录了某个服务号然后进行了提权查看一下登录日志这个类似于找ip的方法2登录日志的存储位置在 /var/log这里面有服务日志也有系统日志grep -E -o ([0-9]{1,3}\.){3}[0-9]{1,3} ./secure |sort| uniq -c 筛选ip一般上面这个是判断是否多ip爆破如果是则会进行成功与否的判断判断登录失败grep Failed password /var/log/secure | awk {print $11} | sort -u登录成功grep Accepted /var/log/secure | awk {print $11} | sort -u这样基本上可以进行定性了排查用户1、先查看拥有root权限的用户分析一下 /etc/password 文件用户名:是否有密码:uidGID用户家目录用户的使用的shell 没有/bin/bash的就是一些服务用户等 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown然后查看拥有 shell 能力的用户2、查看用户是否有高权限威胁因为这里就 2 用户 直接排查 defend 即可直接使用grep筛选 或者grep -v ^#\|^$ /etc/sudoers这个把有执行力的筛选出来发现一个 %wheel %开头的是组3、排查用户组4、有些时候 等保的时候还需要对用户的口令进行查看 是否为sha-256grep -E root|defend /etc/shadow如果有必要可以进行用户或组的删除清除用户usermod -L user禁用帐号帐号无法登录/etc/shadow第二栏为!开头userdel user删除user用户userdel -r user将删除user用户并且将/home目录下的user目录一并删除[rootlocalhost defend]# cat /etc/shadow root:$6$JNlByqtvBvk0qoo0$K5jqUDhnnq6b.WhUk3ENwNjm8kLykf1LV20bJibX9rV1dPDQd8m8wJAWrTLs.OOuH0gV/PH6kgTLo/7YKghXu1::0:99999:7::: bin:*:18353:0:99999:7::: daemon:*:18353:0:99999:7::: adm:*:18353:0:99999:7::: lp:*:18353:0:99999:7::: sync:*:18353:0:99999:7::: shutdown:*:18353:0:99999:7::: halt:*:18353:0:99999:7::: mail:*:18353:0:99999:7::: operator:*:18353:0:99999:7::: games:*:18353:0:99999:7::: ftp:*:18353:0:99999:7::: nobody:*:18353:0:99999:7::: systemd-network:!!:19800:::::: dbus:!!:19800:::::: polkitd:!!:19800:::::: libstoragemgmt:!!:19800:::::: 用户名是非为禁用用户!!为禁用用户(锁定用户) *为休眠用户可以通过激活服务 系统用户登录最后一次密码修改时间密码经过多少天可以修改密码的存活期密码过期多少天后警告历史命令排查如果对方服务器运维人员并没有对历史命令添加 时间管理脚本就是 获取当前用户的ip 然后 使历史命令显示 %F 日期 %T 时间 和ip的形式 但是一般情况下 对方的VPS都是配置好了的这种形式更有利于我们进行定性攻击入侵的时间等历史记录最大条数如果遭遇了 历史记录被删除事件主要分为两部1、重新找回在内存中查看 - -c清楚的是记录而不是磁盘中记载的文件主要就是查看隐藏的文件 cat ~/.bash_history2、重新加载history -r ~/.bash_history :重恢复即可网络检测如果netstat -natpu如果 netstat 没下载 可以使用 ss 进行代替异常进程检测异常进程主要是找到然后进行封锁静态ps aux --sort-%cpu | head -20 --sort-%cpu 以排序 - 降序 head -20 前20行根据pid 查找进程一般是 ls -al /proc/2259/exe如果没有则进入进程号中查看有啥执行的恶意命令动态排除top自启动排查1、计划任务crontab -l如果没有计划任务 可以进行排查 恶意脚本1 /var/spool/cron/* 用户个人定时任务crontab -e 编辑的文件 2 /etc/crontab 系统级主定时任务配置文件 3 /etc/cron.d/* 系统级额外定时任务目录软件包安装的定时任务 4 /etc/cron.daily/* 每天执行的定时任务脚本目录 5 /etc/cron.hourly/* 每小时执行的定时任务脚本目录 6 /etc/cron.monthly/* 每月执行的定时任务脚本目录 7 /etc/cron.weekly/* 每周执行的定时任务脚本目录 8 /etc/anacrontab Anacron 主配置文件用于非7×24小时运行的机器 9 /var/spool/anacron/* Anacron 执行时间记录文件目录可以直接查看more /etc/cron.daily/* 查看下面是否有可疑脚本2、自启动脚本项目cat /etc/rc.local异常文件排查一般出现异常文件 我们一般会先查找 24小时内被创建的文件 也可以根据进程中的命令名查找文件主要注意 /tmp 下是否有恶意的文件find /path/to/search -ctime -1 find / -type f -newerct 2024-03-18 00:30 ! -newerct 2024-03-20 15:28 2/dev/nullfind /tmp -iname * -type f -atime -1 iname 匹配的名称不区分大小写 -atime 是根据时间查看创建的文件 1 是一天前 -1 是24小时内 1 这个指的是 48 小时内 1查看的较全 find / -type f -newerat 2024-03-18 00:30 ! -newerat 2024-03-20 15:28 2/dev/null 或使用时间段 -newat at 就是 atimefind / -type f -newermt 2024-03-18 00:30:00 ! -newermt 2024-03-20 15:28:00 2/dev/null mtime 修改的文件日志排查主要分为2部分1、系统日志的排查爆破事件主要查看 secure2、服务日志主要是dev服务器上部署的中间件或者第三方等靶场拿到靶机之后先进行最简单的定性 查看是否为挖矿先判断命令镜像没有被劫持没有恶意的cpu占用查看历史命令cat /~/.bash_history不要搞混概念 /home 是普通用户的家目录 ~ 是root用户的家目录主要是查看对方使用 root权限干了什么flag1echo flag{thisismybaby}查看一下这个自启动文件flag2然后下面是创建了一个文件这个文件是空的 然后这个目录下也没有威胁文件然后我们查看一下入侵ip查看入侵ip主要是看日志为主grep Failed password /var/log/secure | awk {print $11} | sort -u 成功grep Accepted /var/log/secure | awk {print $11} | sort | uniq -cuniq 这个就是去重的 也可以进行统计重复项的次数 uniq -c 统计重复次数 -u 不显示重复项主要是 本身是用来排序的命令 sort -n 按数字顺序排序 -r 按字母反序 -u 去重1、查看登录成功的ip2、查看失败的ip查看ip 只有一个可能不是ssh 因为如果是ssh的话 会对ip进行禁止行为等查看服务发现有个redis文件 部署了这个服务 查看loggrep Accepted | redis.conf发现入口是redis 无疑我们换方向查看他的配置文件但是我们发现 redis没有被启动查看配置文件grep -v ^#\|^$ redis.conf然后分析一下requirepass 这个直接没配置 说明存在未授权然后也没设置保护模式监听全网段等对方应该是利用redis未授权进入 然后篡改ssh秘钥最后获取了root权限flag3flag{PssW0rd_redis}最后完成打靶改进方案1、对入口点进行防护改redis的配置文件 设置保护 单点登录 设置强密码 改端口为不经典的端口2、对系统把历史命令进行改进 定期排查启动项3、封锁对方的ip192.168.75.129配置防火墙未配置的话先进行封锁后配置echo ALL: 192.168.75.129 /etc/hosts.deny整个的攻击过程对方通过如果 -》 redis未授权 -》获取root shell -》写入计划任务 -》篡改redis.confdev机器启动验证redis写ssh公钥实现ssh登录使用redis-cil 本地无需密码查看TJ原理Redis 的持久化机制被攻击者利用将 SSH 公钥“伪装”成 Redis 的数据库文件写入到目标服务器的 SSH 授权目录中我们查看本地的的 秘钥cat /root/.ssh/authorized_keys最后验证