Linux的应急加固
一、JS劫持
获取JS劫持域名
JS劫持,JavaScript Hijacking介绍:
攻击者通过某种方式篡改网页中的JavaScript代码,从而使网页跳转到恶意域名。
常见攻击方式有:
- 中间人攻击,在网络传输过程中拦截并修改js代码
- 恶意注入,通过XSS漏洞向页面注入恶意JS代码
- 第三方库篡改
- DNS劫持,将JS文件请求重定向到恶意服务器
访问目标网站,自动跳转到恶意网站,这个恶意网站的域名就是被用于JS劫持的恶意域名。
二、黑客首次webshell密码
登录目标服务器,随手查看根目录文件,发现ls命令并不是默认展示形式,可能遭到篡改
进行日志分析,/var/log/nginx/access.log
1.可以下载后使用日志分析工具logparser分析,也可以使用linux命令
分析日志中出现的脚本文件,在正则表达式中.是通配符,需要借助/转义字符,否则会匹配其他字符
gerp -E '\.php|\.jsp|\.asp|\.aspx' ./access.log
2.日志记录了文件上传位置,可以去查看是否有异常文件
3.网站被劫持,抓包访问该网站,发现利用某个文件完成了网站跳转
查询第二个webshell,可以借助awk指令,查询.php但是非第一个webshell的日志
awk '/\.php/ && !/first\.php/ {print $0}' access.log
斜杠表示正则,反斜杠表示转义.,!表示排除,{print $0}表示打印当前行所有内容。{print $m,n} ,m,n!=0表示打印第m、n个字段
三、黑客首次入侵方式
日志分析获取了黑客的IP,查找首次入侵的尝试。
GET是没有请求体的,只能请求资源,这里Webshell已经上传成功了,这里的POST请求是蚁剑连接。
这里可以看到蚁剑流量特征。
筛选IP,审计日志,发现攻击特征
在线日志分析网站 ,不知道logparser为什么不能解析这个日志,明显的NCSA格式。
首次尝试为反射型XSS
常见的日志格式 | 样例 |
---|---|
NCSA | 192.168.1.1 - - [10/Oct/2023:12:34:56 +0800] “GET / HTTP/1.1” 200 1234 |
W3C/IIS | 2023-10-10 12:34:56 192.168.1.1 GET / 200 |
四、黑客服务器的信息
找到黑客留下的后门中黑客服务器的IP和端口号
后门往往通过反弹shell执行命令
- 查看可疑进程
ps -aux
- 发现有启动进程的指令异常
ps -aux:查看系统运行的进程信息(ps -u user,查看user启动的进程)
ps查看进程状态,ss查看网络连接(ss -tulnp,查看tcp、udp、监听端口、不显示服务名、进程信息)
五、修复MySQL可getshell漏洞
MySQL的getshell:就是在某些情况下,通过sql语句,能够写入shell code
修复漏洞,让前提条件中的任何一个(或全部)不满足即可
MySql的getshell方式 | 前提条件 |
---|---|
利用文件写入功能 into outfile into dumpfile(查询结果以二进制形式写入) | secure_file_priv为空(未设置,NULL表示完全禁止) 知道网站绝对路径 当前用户需要有文件写入权限FILE |
利用通用查询日志 general log | 执行操作的用户具有FILE权限 知道网站的绝对路径 |
慢查询日志 slow query log | 默认查询超过10s的记录会被记入慢查询日志中 第一步,开启日志,设置日志文件目录 第二步,通过查询将指令写入日志 |
提权方式 | |
利用UDF提权 | 通过create function 创建用户自定义函数,从而利用包含恶意代码的UDF库文件(Linux的.so文件、Windows的.dll文件) 这些包含恶意代码的UDF库文件包含系统命令调用的实现 |
利用MOF提权 | 利用低版本Windows系统中,每几分钟会执行mof文件的特性 |
getShell和提权是两件事情,比如,利用MySQLgetShell后。发现Mysql以root权限运行,通过UDF获取root权限。
这的用户是MySQL用户,由MySQL自行管理,存储在mysql.user表中
FILE权限决定该用户能否执行文件操作命令
六、黑客的账号
找到黑客添加的账号并删除
cat /etc/passwd 查看用户
awk '/\$1|\$6/{print $1}' /etc/shadow 查看具有远程登录权限的用户
删除用户
userdel -r user,递归删除user目录
七、黑客篡改的命令
修复黑客篡改的命令,并删除篡改命令生成的免杀马
linux一切皆文件,指令也一样如此,可能黑客只是给原本的命令修改了名称,并自定义一个命令,cat同样可以查看command信息
Linux指令存放目录 | 用途 |
---|---|
/bin | 存放系统基础命令(如ls、cp、mv),所有用户可用 |
/sbin | 存放系统管理命令(如iptables、reboot),通常需要root权限 |
/usr/bin | 存放用户级应用程序/命令(如python、curl等),系统启动后加载 |
/usr/sbin | 存放非关键的超级用户命令(如useradd、userdel、usermod) |
/usr/local/bin | 用户手动安装的软件(优先级高于/usr/bin) |
/usr/local/sbin | 手动安装的系统管理命令 |
which ls 或 whereis ls 显示命令路径
八、修复JS劫持
有两种方法查询到异常的JavaScript代码
- 进入网站根目录 /var/www/html
使用命令find .| xargs grep -ri '<script type=text/javascript">' -l|sort|uniq -c
依次查看文件,删除其中的恶意JavaScript代码 - 访问目标网站,使用burpsuite抓包,响应包中会触发恶意JavaScript
这种方式可能只适用靶场,因为被入侵会断网
vim快速删除8,9行之间的内容:8,9d