2023年网络安全面试题(渗透测试):详细答案解析与最佳实践分享

如果在数据来源和网络分享方面存在侵权问题,请立即联系我以删除相关内容。

一、一句话木马

1、基本原理

  • 通过利用存在文件上传漏洞的目标网站,将恶意的一行代码或脚本(通常是PHP语言)上传到目标服务器上,从而实现对目标网站的远程控制。

2、连接工具:

3、防御(被问到随便说两三个就行)

  • 安全审查:对网站应用进行严格的安全审查,及时修补和更新漏洞,特别是文件上传功能的漏洞。

  • 输入验证:对于用户上传的文件和数据,进行输入验证和过滤,确保只有合法有效的内容被上传和执行。

  • 文件类型限制:限制上传文件的类型和大小,仅允许上传安全的文件格式,并设定合理的文件大小限制。

  • 文件权限设置:确保上传目录的文件权限设置为最小权限,只有必要的文件才能被执行。

  • 文件上传检测:实施文件上传检测机制,对上传的文件进行安全扫描和检测,防止恶意文件的上传。

  • 安全策略和访问控制:建立明确的安全策略和访问控制机制,只允许授权的用户能够访问和执行上传的文件。

  • 异常监测和日志记录:实时监测系统日志,检测异常行为和攻击迹象,并将其记录下来以便进一步分析和应对。

  • 安全意识培训:加强员工安全意识培训,教育他们如何识别和防范针对文件上传漏洞的攻击。

漏洞复现

一句话木马攻击复现:揭示黑客入侵的实战过程_正经人_____的博客-CSDN博客

二、SQL注入

1、原理

  • 不正确的输入验证:应用程序没有对用户输入进行充分的验证和检查,使得攻击者可以在输入中插入恶意的SQL代码。
  • 字符串拼接方式构建SQL语句:应用程序使用字符串拼接的方式将用户输入直接嵌入到SQL语句中,而不是使用参数化查询或预编译语句。这使得攻击者能够通过构造特殊的输入来修改原始SQL查询的逻辑。
  • 缺乏过滤和转义:应用程序没有对用户输入的特殊字符进行过滤和转义处理,使得攻击者可以插入SQL关键字、注释符号或其他特殊字符,终止原始查询并添加恶意的SQL代码。

2、防御

  • 使用参数化查询或预编译语句:不要使用字符串拼接方式构建SQL查询,而是使用参数化查询或预编译语句,将用户输入作为参数传递给查询,以确保输入被正确转义和处理,从而防止注入攻击。
  • 输入验证和过滤:对所有用户输入进行严格的验证和过滤,包括检查数据类型、长度、范围等。使用白名单过滤机制,只允许特定的字符或格式。
  • 最小权限原则:在数据库上设置最小权限原则,确保应用程序连接数据库的账户具有足够的权限来执行必要的操作,而没有过多的权限。
  • 代码审计和漏洞扫描:进行定期的代码审计,检查代码中是否存在潜在的SQL注入漏洞。同时,使用漏洞扫描工具来检测和修复已知的安全漏洞。
  • 避免显示详细的错误信息:在生产环境中,不要向用户显示详细的错误信息,因为攻击者可以利用这些信息来发现潜在的漏洞并进行注入攻击。

3、SQL注入分类(随便说几个)

  • 基于错误的注入(Error-based Injection):攻击者通过构造恶意的SQL语句,利用应用程序返回的错误信息来获取数据库中的敏感信息
  • 基于联合查询的注入(Union-based Injection):攻击者通过在注入点处构造特殊的SQL语句,利用UNION命令将其他查询结果合并到原始查询中,从而获取额外的数据。
  • 基于时间延迟的注入(Time-based Injection):攻击者通过在注入点处构造特殊的SQL语句,利用数据库的延迟函数(如SLEEP())或其他时间相关的操作来判断是否存在注入漏洞
  • 基于布尔盲注的注入(Boolean-based Blind Injection):攻击者通过在注入点处构造特殊的SQL语句,利用应用程序的不同响应结果来判断SQL语句的真假,并逐步推测数据库中的信息
  • 基于报错盲注的注入(Error-based Blind Injection):攻击者通过在注入点处构造特殊的SQL语句,利用应用程序返回的错误信息来推测数据库中的信息,但与基于错误的注入不同,攻击者无法直接获取错误信息
  • 堆叠查询注入(Stacked Queries Injection):攻击者通过在注入点处构造多个SQL语句,使得应用程序在执行时会依次执行这些查询,从而实现对数据库的操作。
  • 基于批处理注入(Batched Queries Injection):攻击者通过在注入点处构造一系列SQL语句,并一次性发送给数据库执行,从而绕过应用程序的防御机制

4、MySQL默认存在的哪个数据库,注入时经常用到?

  • MySQL默认存在的数据库是 information_schema 。它是MySQL提供的一个系统数据库,用于存储关于数据库对象(如表、列、约束等)的元数据信息。
  • 在SQL注入攻击中,攻击者经常会利用information_schema数据库来获取数据库结构和敏感信息。通过查询information_schema数据库中的表和列信息,攻击者可以获得目标数据库的架构和表结构,从而更好地进行后续的注入攻击。例如,攻击者可以通过查询information_schema.tables表获取数据库中所有的表名,然后进一步探测和攻击这些表。

5、常见的SQL注入绕过WAF的技术:

  • 函数大小写混合绕过:利用服务器端未开启大小写敏感的特点,将关键字的大小写进行混合使用,如将"UNION"改为"UnIoN"。
  • 多重关键字绕过:利用服务器端替换敏感字符为空的特性,使用多个关键字拼接在一起,绕过检测。例如,将关键字"UNION SELECT"改为"UNI//ON SEL//ECT"。
  • 编码绕过:利用服务器端未检测或检测不严格的编码形式来绕过WAF。可以使用十六进制编码、URL编码、Unicode编码等方式来表示敏感字符,如将关键字"UNION SELECT"改为"%55%4E%49%4F%4E%20%53%45%4C%45%43%54"。
  • 注释绕过:利用服务器端未检测或检测不严格注释内的字符串,通过添加注释符号来绕过WAF。常见的注释符号包括/**/、/!/、/!12345/、#、-- -等。
  • 等价函数或命令绕过:利用服务器端黑名单不完整或过滤不严格的特点,使用与原函数或命令等价的形式进行绕过。例如,将关键字"UNION SELECT"改为"UNION DISTINCT",或者使用其他类似的函数和命令替代,如updatexml、extractvalue、floor等。

6、一般的SQL手注步骤:

  1. 判断注入点:在目标应用程序中找到可能存在SQL注入漏洞的输入点,如表单字段、URL参数等。
  2. 判断注入类型:确定注入点是哪种类型的注入,例如基于布尔盲注、基于错误的注入、基于时间的注入或联合查询注入等。
  3. 判断注入点提交方式:分析数据交互过程,确定注入点的数据是通过GET请求还是POST请求提交的。
  4. 使用ORDER BY语句查询数据库中的字段数量:通过在被注入的参数中构造带有ORDER BY子句的SQL语句,观察页面返回的排序情况,以了解目标数据库中字段的数量。
  5. 使用联合查询查询信息:根据已知的字段数量,使用UNION SELECT语句来联合查询数据。例如,使用"UNION SELECT User()"来获取当前用户,"UNION SELECT Database()"来获取数据库名,"UNION SELECT Version()"来获取数据库版本。
  6. 查询数据库中的表、列和值:通过构造合适的SQL语句,利用联合查询来扫描数据库中的表、列和具体数值,以获取所需的信息。

7、MySQL中与查询相关的函数的简要说明:

  • UNION:用于联合查询多个SELECT语句的结果集。它将多个SELECT语句返回的结果合并成一个结果集,并去除重复的行。例如,使用"SELECT column1 FROM table1 UNION SELECT column2 FROM table2;"可以将table1和table2中指定的列合并返回。
  • DISTINCT:用于从查询结果中去除重复的行。它可以应用于SELECT语句中的列,确保返回结果中每个值只出现一次。例如,使用"SELECT DISTINCT column1 FROM table1;"可以返回table1中column1列的唯一值。
  • UPDATEXML:用于在XML类型的列中更新指定节点的内容。它接受一个XML列、XPath表达式和新的节点值,并返回更新后的XML列。例如,使用"UPDATE table1 SET xml_column = UPDATEXML(xml_column, '/path/to/node', 'new_value') WHERE id = 1;"可以更新表table1中指定id的行的xml_column列中的节点值。
  • EXTRACTVALUE:用于从XML类型的列中提取指定节点的值。它接受一个XML列和XPath表达式,并返回匹配的节点的值。例如,使用"SELECT EXTRACTVALUE(xml_column, '/path/to/node') FROM table1;"可以从表table1的xml_column列中提取指定节点的值。
  • FLOOR:用于返回不大于给定数字的最大整数。它接受一个数值参数,并返回不大于该参数的最大整数。例如,使用"SELECT FLOOR(3.8);"将返回结果为3。

8、MySQL中与字符串截取相关的函数的说明 

  1. MID(str, start, length):从指定位置开始截取字符串的一部分。它接受三个参数:str表示要截取的原始字符串,start表示截取开始的位置(从1开始计数),length表示要截取的长度。例如,MID("Hello World", 7, 5)将返回"World"。
  2. SUBSTR(str, start, length):截取字符串的一部分。它与MID函数的功能相似,接受三个参数:str表示要截取的原始字符串,start表示截取开始的位置(从1开始计数),length表示要截取的长度。例如,SUBSTR("Hello World", 7, 5)将返回"World"。
  3. SUBSTRING(str, start, length):与SUBSTR函数相同,用于截取字符串的一部分。它也接受三个参数:str表示要截取的原始字符串,start表示截取开始的位置(从1开始计数),length表示要截取的长度。例如,SUBSTRING("Hello World", 7, 5)将返回"World"。
  4. LEFT(str, length):截取字符串的左边指定长度的部分。它接受两个参数:str表示要截取的原始字符串,length表示要截取的长度。例如,LEFT("Hello World", 5)将返回"Hello"。
  5. REVERSE(str):将字符串倒转。它接受一个参数str表示要倒转的字符串。例如,REVERSE("Hello")将返回"olleH"。

9、字符串连接函数

  • CONCAT(str1, str2, ...):将多个字符串连接成一个字符串。它接受一个或多个参数,每个参数表示要连接的字符串。例如,CONCAT('Hello ', 'World')将返回'Hello World'。
  • GROUP_CONCAT(expr, separator):将多个字符串连接成一个字符串,并以指定分隔符分隔。它接受两个参数:expr表示要连接的表达式或列,可以是字符串、数字或其他数据类型;separator表示用于分隔连接的字符串。例如,GROUP_CONCAT(name, ', ')将连接多个name列的值,并以逗号和空格作为分隔符。
  • CONCAT_WS(separator, str1, str2, ...):将多个字符串连接成一个字符串,并以指定分隔符分隔。它接受至少两个参数:separator表示用于分隔连接的字符串,str1, str2, ...表示要连接的字符串。例如,CONCAT_WS(', ', 'Apple', 'Banana', 'Orange')将返回'Apple, Banana, Orange'。

10、字符串转换函数

  1. CHAR(number):将数字转换为对应的字符。它接受一个参数number,表示要转换为字符的数字。例如,CHAR(65)将返回大写字母'A'。
  2. HEX(str):将字符串转换为十六进制表示。它接受一个参数str,表示要进行转换的字符串。例如,HEX('Hello')将返回'48656C6C6F',表示每个字母的十六进制 ASCII 值。
  3. UNHEX(str):将十六进制表示转换为字符串。它接受一个参数str,表示要进行转换的十六进制字符串。例如,UNHEX('48656C6C6F')将返回'Hello',将十六进制的 ASCII 值转换为对应的字符。

11、替换逗号

要将逗号替换为指定的内容,可以使用MySQL中的REPLACE函数。以下是将逗号替换为指定内容的示例:

SELECT REPLACE('limit 1 offset 0, mid(version() from 1 for 1)', ',', '替换内容');

请将"替换内容"替换为您想要替换逗号的具体内容。执行以上SQL语句后,逗号将被替换为指定的内容。注意,REPLACE函数是大小写敏感的。

例如,如果要将逗号替换为"###",可以使用以下语句:

SELECT REPLACE('limit 1 offset 0, mid(version() from 1 for 1)', ',', '###');

执行结果将为:"limit 1 offset 0### mid(version() from 1 for 1)"。

12、替换等号

要将等号替换为指定的内容,同样可以使用MySQL中的REPLACE函数。以下是将等号替换为指定内容的示例:

SELECT REPLACE('like', '=', '替换内容');

请将"替换内容"替换为您想要替换等号的具体内容。执行以上SQL语句后,等号将被替换为指定的内容。注意,REPLACE函数是大小写敏感的。

例如,如果要将等号替换为"~~~",可以使用以下语句:

SELECT REPLACE('like', '=', '~~~');

执行结果将为:"~~~"。

13、特殊符号绕过

特殊符号绕过是指利用特定的符号或字符来绕过服务器端的安全限制,从而执行一些未经授权的操作。这种行为是不道德且违法的,应该严格遵守法律和道德规范。

以下是一些常见的特殊符号绕过形式:

  1. 科学记数法绕过:使用科学记数法来比较两个等式,例如 "and 1e0 = 1e0"。这种绕过方式可以使条件判断始终返回 true,从而绕过一些限制。
  2. 空白字符绕过:利用不同编码的空白字符来绕过过滤机制。常见的空白字符包括 %0a、%a0、%0b、%20、%09 等。通过将空白字符插入到特定位置,以欺骗服务器端的输入过滤或解析过程。
  3. 反单引号绕过:使用反单引号(`)来绕过对于表名或列名的限制,例如 "table_name"。在某些情况下,这种绕过方式可以欺骗数据库系统处理表名或列名的方式,导致执行未授权的操作。
  4. 括号绕过:利用括号来绕过查询的限制,例如 "select * from (test.admin)"。通过将查询语句放置在括号内,可以绕过某些限制或限定查询的作用域。

14、组合绕过

组合绕过是指通过多种绕过方式的组合来绕过服务器端的安全检测,以达到执行未经授权操作的目的。这种技术常用于欺骗输入过滤、绕过访问控制或执行恶意查询等攻击。

针对上述示例的组合绕过形式进行解析:

  • id = 1' and//:在注入点插入 ' and// 语句,以绕过可能存在的单引号过滤。由于 // 被视为注释符号,这样的注入可能会使后续的语句被忽略。
  • 1'like'2'///:使用 like 运算符进行字符串比较,在这种情况下,始终返回 false,绕过原始语句中可能存在的等号判断。注入点之后的部分可能会被注释符号 /// 忽略。
  • !12345union/select 1,2,3:通过在注入点插入 union 关键字和 select 查询语句,尝试进行联合查询并获取指定列的数据。! 可能是为了绕过某些特定的过滤规则。

15、什么样的网站可能存在SQL注入漏洞?

  • 动态网站:使用像PHP、ASP等动态脚本编写的网站很容易受到SQL注入攻击,因为这些网站直接将用户输入的数据传递给数据库查询,如果没有进行适当的输入验证和参数化查询,攻击者可以通过恶意注入代码来执行非授权的数据库操作。
  • 伪静态网站:伪静态网站看起来像是静态HTML网页,但实际上背后仍然是通过动态脚本与数据库进行数据交互。如果这些伪静态网站没有正确地处理用户输入的数据,在查询过程中可能存在注入漏洞。
  • CMS(内容管理系统)网站:许多CMS网站使用数据库来存储和管理内容。如果CMS没有妥善处理用户输入的数据,特别是在搜索功能或用户提交表单时,可能会导致SQL注入漏洞。

16、SQL注入漏洞挂马利用成功的条件 ,也就是SQL注入挂马

  1. 支持联合查询:通过注入恶意的SQL语句,攻击者可以利用联合查询功能将额外的恶意代码注入到原始查询中。
  2. 知道网站的绝对路径:攻击者需要知道目标网站的绝对路径,以便在注入时指定木马文件的位置。
  3. 上传马的路径允许写入文件:如果目标网站具有文件上传功能,并且该功能存在安全漏洞,允许攻击者将恶意文件上传到服务器上。
  4. 木马上传后能够被解析执行:上传的恶意文件必须能够被服务器解析和执行,通常会利用服务器配置或脚本解析器的漏洞来实现。
  5. 能够找到上传后的木马位置:攻击者需要知道上传的恶意文件的存储位置,以便在后续攻击中引用它。

17、当发现网站存在SQL注入漏洞时,应该采取以下步骤进行挂马

  1. 了解网站结构和漏洞类型:分析网站的结构和功能,确定存在的SQL注入漏洞类型,例如基于GET请求的注入或基于POST请求的注入。
  2. 收集必要信息:获取目标网站的URL、参数、数据库类型等必要信息。可以使用开发者工具、代理工具或手工方式获取。
  3. 手工注入测试:使用手动注入的方法,通过在参数中插入恶意的SQL语句来检测漏洞。可以通过单引号闭合、UNION查询、布尔盲注等技术进行测试,验证是否存在漏洞。
  4. 利用SQLMap工具:SQLMap是一款自动化的SQL注入工具,可以加快漏洞检测和利用的过程。可以使用SQLMap来自动检测漏洞、获取数据库信息,并尝试执行进一步的攻击。
  5. 确定挂马点:当成功注入并获取数据库权限后,需要确定合适的挂马点(木马文件的存储位置),通常是服务器上可解析执行的目录。
  6. 上传马文件:根据找到的挂马点,将恶意文件(木马)上传到服务器上。确保文件能够被解析执行,以实现攻击目的。

18、手工注入方式中常用的函数

  • UNION(联合查询):通过在SQL语句中使用UNION关键字,可以将两个或多个SELECT语句的结果合并为一个结果集。在注入攻击中,可以利用UNION操作来绕过输入参数的限制,从而获取额外的数据库信息。
  • SELECT(查询):SELECT语句用于从数据库表中检索数据。在注入攻击中,可以通过在SELECT语句中插入恶意的SQL代码来执行任意的操作,如获取敏感数据、修改数据等。
  • INTO OUTFILE(导出文件):INTO OUTFILE语句可用于将查询结果导出到指定的文件路径。在注入攻击中,可以利用该语句将恶意脚本文件写入服务器上的可解析目录中,实现挂马操作。

19、SQLMap挂马用到的参数和原理

  • 参数:--os-shell
  • 原理:--os-shell 参数用于在目标服务器上获取系统级命令执行的交互式 shell。当 SQLMap 发现漏洞并成功获取数据库权限后,它可以利用该参数执行系统命令,进而获取服务器的完全控制。
  • 原理解释:SQLMap 内部实现了一个名为 "select * into dumpfile" 的方法,可以将注入结果写入到指定的文件中。这个函数本质上是利用联合查询(UNION)的方式,将数据库查询的结果集输出到文件中。通过指定合适的文件路径和文件名,可以将恶意文件(比如木马文件)写入服务器中可解析执行的目录,进而实现挂马操作。

20、一般会如何利用SQL注入漏洞?

  • 数据读取:攻击者可以通过注入恶意的SQL语句,读取数据库中的数据,包括用户数据、敏感信息和网站后台数据等。通过构造合适的查询语句,攻击者可以绕过身份验证或访问控制,直接获取目标数据。
  • 挂马获取服务器权限:挂马是指将恶意脚本文件(如Webshell)写入服务器上可解析执行的目录,从而获取对服务器的控制权。通过注入特定的SQL语句,攻击者可以执行系统级的操作,比如写入恶意文件、修改服务器配置等,最终实现对服务器的完全控制。

21、如何挖掘SQL注入漏洞?

  1. 确认目标网站是否是动态网站,因为静态网站不容易受到SQL注入攻击。
  2. 使用安全测试工具如SQLMap对目标网站进行扫描,该工具可以自动检测和利用SQL注入漏洞。
  3. 基于手工注入的方法,使用敏感字符进行测试,尝试找出闭合字符(如单引号),通过构造恶意SQL语句来暴露漏洞。
  4. 根据页面返回的信息和错误提示,判断注入点的类型,选择合适的注入模式(如联合查询)。
  5. 通过构造合适的SQL语句,判断列数、显示位,进一步获取数据库、表名、列名以及字段的信息。

22、SQL预编译(PreparedStatement) 

        PreparedStatement是一种预编译的SQL语句机制,用于提高数据库操作的性能和安全性。它在执行之前,会将SQL语句发送给数据库管理系统(DBMS)进行编译,并生成一个查询计划。然后,可以通过设置参数值来多次执行该查询计划,而不需要再次编译。

工作原理:
  1. 创建PreparedStatement对象:通过Connection对象的prepareStatement方法创建PreparedStatement对象。在创建过程中,需要指定包含占位符(如问号)的SQL语句。
  2. 发送SQL语句进行编译:创建PreparedStatement对象后,DBMS会立即接收到SQL语句并进行编译。编译过程中,DBMS会检查语法和语义的正确性,并生成一个查询计划。
  3. 设置参数值:在执行预编译语句之前,可以使用PreparedStatement对象的set方法为占位符设置参数值。这样可以安全地将用户输入传递给数据库,而无需手动转义或过滤特殊字符。
  4. 执行预编译语句:通过调用PreparedStatement对象的executeQuery、executeUpdate或execute方法来执行预编译语句。DBMS会直接使用已编译的查询计划来执行SQL查询或更新操作。

由于PreparedStatement在编译阶段已经预先处理了SQL语句的结构,所以在执行相同的SQL语句时,可以重复使用已编译的查询计划,提高了数据库操作的性能。

此外,PreparedStatement还可以防止SQL注入攻击,因为参数值是通过set方法设置的,并且会被正确地转义或处理,而不是直接拼接到SQL语句中。

总结起来,PreparedStatement通过预编译和参数化的方式,提高了数据库操作的性能和安全性,是开发数据库相关应用程序时常用的技术之一。

23、SQL注入攻击获取WebShell权限

  • 使用outfile函数:通过注入恶意代码,结合MySQL的outfile函数,可以将查询结果写入文件中,进而创建一个具有命令执行功能的WebShell。
  • 使用--os-shell方式:这种方式利用注释符"--"来绕过语法检查,然后执行系统命令,从而获取操作系统级别的Shell权限。

条件要求:成功利用SQL注入获取WebShell权限通常需要满足以下条件:

  • 目标网站具有写权限的web目录,以便创建和执行恶意文件。
  • 能够使用单引号(')作为注入的特殊字符,用于修改SQL查询语句。
  • 知道目标网站的绝对路径,以便正确定位需要进行注入的位置。
  • 目标数据库的secure_file_priv参数未设置具体值,允许将查询结果写入文件。

漏洞复现

SQL注入漏洞复现:探索不同类型的注入攻击方法_正经人_____的博客-CSDN博客

三、文件上传漏洞

1、文件上传漏洞原理

  • 由于开发人员在文件上传功能中未对文件名和文件内容进行严格的过滤和验证,导致用户可以上传恶意脚本到服务端
  • 攻击者利用这个漏洞,能够上传包含恶意代码的文件,并在服务器上执行这些恶意代码,从而导致安全威胁和漏洞的利用。
  • 为了防止文件上传漏洞,开发人员应该采取适当的安全措施,包括文件类型验证、白名单机制、输入校验等。

2、文件上传漏洞一般上传什么马?

  1. 一句话木马(Webshell):一句话木马是一种常见的恶意脚本,它可以通过一个简短的命令实现远程控制服务器。攻击者可以使用一句话木马来执行任意命令、操作文件系统、获取敏感信息等。

  2. 冰蝎(Behinder):冰蝎是一款功能强大的远程管理工具,可用于控制被入侵的服务器。攻击者可以使用冰蝎来执行命令、上传下载文件、管理数据库等。

  3. 大马(Web Shell):大马也是一种常见的恶意脚本,与一句话木马类似,但通常具有更多的功能和特性。攻击者可以使用大马来执行命令、查看文件、修改网站内容等。

  4. 文件包含漏洞利用脚本:攻击者可以上传包含恶意代码的文件,然后利用文件包含漏洞来执行这些恶意代码。这可能导致服务器执行任意命令、访问敏感数据或攻击其他用户。

  5. 病毒文件:攻击者可以上传包含病毒或恶意软件的文件,用于传播恶意代码、感染其他文件或系统,或窃取敏感信息。

  6. ......

需要注意的是,具体上传哪种类型的恶意脚本取决于攻击者的意图以及目标网站的环境。

3、文件上传绕WAF方式

  1. 绕过黑名单(大小写绕过):WAF 可能会对特定文件类型或文件名做出黑名单配置。攻击者可以使用大小写变体来绕过这种检测。例如,将 ".php" 替换为 ".pHp" 或 ".PHp"。

  2. 绕过白名单%00截断:WAF 有时会使用白名单机制,只允许特定的文件类型上传。攻击者可以利用空字节(%00)截断的方式来绕过此限制。通过在文件名后添加 %00,可以欺骗WAF,使其认为文件类型符合白名单要求。(这种方法利用了截断的漏洞,使得WAF无法正确解析文件)

  3. 绕过前端验证:前端验证通常是为了提高用户友好性而进行的检查,比如检查文件类型或文件大小。攻击者可以使用代理工具(如Burp Suite)截获上传请求,并更改请求中的Content-Type字段,将其修改为允许的文件类型,从而绕过前端验证。

  4. 对文件内容进行绕过:WAF 可能会检查上传文件的内容,以防止恶意代码的执行。攻击者可以通过编码、加密或混淆文件内容来绕过这种检测。例如,使用 Base64 编码对恶意代码进行转换,然后在服务器端解码执行。

  5. 名单列表绕过:使用黑名单中没有的文件名,如asa或cer等。这些文件名可能不会被WAF检测到。

  6. 特殊文件名绕过:将文件名改成test.asp.或test.asp_等,利用操作系统的特性绕过验证。有些操作系统会忽略文件名中的点或下划线。

  7. 使用上传.htaccess文件:上传.htaccess文件可以绕过一些检测,因为.htaccess文件可以用来配置服务器行为。

  8. 特殊的文件写入方法:使用特殊的文件写入方法,如使用1.php:jpg来写入恶意代码。这种方法可以绕过一些检测,因为WAF可能只检测文件扩展名而不检查文件内容。

  9. 结合文件包含漏洞:利用文件包含漏洞来解析上传的图片木马等恶意代码。这种方法可以绕过一些检测,因为WAF可能只检测文件上传而不检查文件包含漏洞。

4、文件上传常用方式

  • 如果服务器是IIS,通常会上传aspaspx后缀类型的马。
  • 如果上传asp脚本文件失败,可以尝试将文件后缀名改为asacdxcer进行上传,这是因为IIS服务器开启了文件后缀扩展功能。
  • 如果服务器是Apache,通常会上传php后缀类型的马。
  • 如果服务器使用Tomcat中间件,通常会上传jsp后缀类型的马。
  • 如果服务器使用WebLogic中间件,通常会上传jsp后缀类型的马。
  • 如果服务器使用Nginx,通常会上传php后缀类型的马

5、文件上传漏洞防护

  • 使用文件类型白名单或黑名单进行判断,限制上传的文件类型。
  • 对上传的文件进行重命名,避免直接使用用户上传的文件名。
  • 限制上传文件的大小,防止恶意用户上传过大的文件。
  • 对上传的文件进行彻底的内容验证和过滤,禁止上传包含恶意代码的文件。
  • 定期更新服务器和中间件的补丁,以修复已知的文件上传漏洞。
  • 加强访问控制,限制用户上传文件的权限。

漏洞复现

探究文件上传安全:upload-labs靶场的绕过技巧_正经人_____的博客-CSDN博客

四、文件包含漏洞

1、文件包含漏洞原理

  • 在程序开发中,为了减少代码的冗余和提高代码的可维护性,开发人员通常会使用文件包含机制,将一些重复的代码片段或外部文件引入到主程序中。这可以通过包含命令(如include、include_once、require、require_once)来实现。

  • 然而,当用户可以控制包含的文件名或文件路径时,就可能存在文件包含漏洞。攻击者可以构造恶意的文件名或文件路径,并将恶意代码写入这些文件中。当包含命令执行时,恶意代码也会被执行,导致安全风险

2、远程文件包含和本地文件包含的区别

  • 本地文件包含(Local File Inclusion,LFI)指的是在服务器本地加载文件,攻击者可以通过构造恶意的文件路径来包含敏感文件或执行任意命令。攻击者可以使用相对路径或绝对路径来指定要包含的文件,通常是包含服务器上的文件。

  • 远程文件包含(Remote File Inclusion,RFI)则是指从其他服务器加载文件。攻击者可以通过指定远程服务器上的文件的URL来进行包含,通常是恶意脚本文件。要成功实施远程文件包含攻击,服务器的PHP配置选项allow_url_include必须设置为ON,允许包含远程文件。

3、includeinclude_oncerequirerequire_once这几个函数区别

  • include(): 找不到被包含的文件时只会产生警告,脚本继续运行。
  • require(): 找不到被包含的文件时会发生致命错误,停止脚本运行。
  • include_once(): 与include()类似,唯一区别是如果该文件的代码已经被包含过,则不会再次包含。
  • require_once(): 与require()类似,如果该文件的代码已经被包含过,则不会再次包含。

4、文件包含漏洞修复

  • 对文件进行敏感内容查找和限制文件类型等。
  • 对用户输入进行严格的验证和过滤。
  • 使用白名单机制,只允许包含特定文件或文件夹。
  • 注意文件引入的路径安全性,避免使用用户可控的路径。

漏洞复现

破解文件包含漏洞:实践技巧、案例分析和检测工具推荐_正经人_____的博客-CSDN博客

五、XSS漏洞(跨站脚本攻击)

1、XSS漏洞原理

  • 当应用程序没有对用户提交的内容进行验证和重新编码,而是直接呈现给网站的访问者时,就可能触发XSS攻击。
  • 攻击者利用相应的漏洞,在页面中嵌入JS脚本,用户访问含恶意脚本代码的页面或打开收到的URL链接时,用户浏览器自动加载执行恶意代码,达到攻击的目的。

2、防护手段

  • 过滤危险字符:对用户输入的内容进行过滤,去除或转义HTML特殊字符。
  • 输入长度限制:限制用户输入内容的长度,以防止恶意脚本的注入。
  • HTML实体编码:对输出到页面的内容进行HTML实体编码,将特殊字符转换为HTML实体,使其无法执行。
  • 使用白名单:只允许特定的HTML标签和属性,禁止其他标签和属性的使用。
  • 对于反射型和存储型XSS,可以在数据返回客户端浏览器时,将敏感字符进行转义
  • 对于DOM型XSS,可以使用上下文敏感的数据编码

3、XSS类型和危害

  • 反射型XSS:通过URL参数等输入点,将恶意脚本注入到目标页面,一次性攻击,危害相对较低。
  • 存储型XSS:将恶意脚本存储在目标网站的数据库中,常驻攻击,危害较高。当其他用户访问包含恶意脚本的页面时,恶意脚本会被触发执行。
  • DOM型XSS:攻击并不通过服务器端,在客户端的JavaScript代码中,通过操作DOM来触发恶意脚本,危害取决于恶意脚本的内容和目标网站的功能。

4、为什么存储型XSS危害最大?

  • 存储型XSS是一种持久性攻击,恶意脚本直接存储在目标网站的数据库中。
  • 当其他用户请求包含恶意脚本的页面时,恶意脚本会被从数据库中读取并执行,从而对其他用户造成危害

5、XSS防护措施

  • 输入验证和过滤:对用户输入的数据进行验证和过滤,去除或转义HTML特殊字符。
  • 输出编码:在输出到页面之前,对用户数据进行HTML实体编码,将特殊字符转换为HTML实体,使其无法执行。
  • 使用CSP(Content Security Policy):配置CSP策略,限制页面可以加载的资源,并阻止恶意脚本的执行。
  • 使用HttpOnly和Secure标志:设置Cookie的HttpOnly和Secure标志,以防止恶意脚本窃取用户的Cookie。
  • 教育和培训:提高用户和开发人员对XSS漏洞的认识,加强安全意识。

 漏洞复现

保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台_正经人_____的博客-CSDN博客

六、CSRF漏洞(跨站请求伪造)

1、CSRF原理及修复

CSRF(跨站请求伪造)原理:

        CSRF攻击利用受害者尚未失效的身份认证信息(如cookie、会话等),诱骗其点击恶意链接或访问包含攻击代码的页面。然后,受害者在不知情的情况下以受害者的身份向服务器发送请求,完成非法操作。

CSRF修复方法:
  • 验证HTTP头的Referer:服务器只响应Referer头带有本域的请求,这可以防止跨域的CSRF攻击。
  • 请求地址中添加Token验证:在请求参数或表单中添加一个随机生成的Token,服务器验证请求是否携带有效的Token,有效则继续处理请求。
  • 使用Local Storage和Session Storage保存会话:将会话信息存储在客户端的Local Storage或Session Storage中,而不是仅依赖于Cookie。这样可以增加攻击者获取会话信息的难度,提高安全性。

2、CSRF的类型(常见的就是GET、POST)

  • GET请求型CSRF:只需要构造URL,然后诱导受害者访问该URL。
  • POST请求型CSRF:构造自动提交的表单,诱导受害者访问或点击该表单。
  • 链接型CSRF:诱导受害者点击包含恶意请求的链接。这种攻击方式常见于社交媒体、论坛或电子邮件中。
  • 图片型CSRF:将恶意代码嵌入到图片标签中,并通过加载该图片来触发攻击。
  • Flash型CSRF:利用Flash应用中的安全漏洞来执行CSRF攻击。
  • JSON型CSRF:当网站使用JSON作为数据交换格式时,攻击者可以通过构造恶意的JSON请求来进行CSRF攻击。
  • WebSocket型CSRF:WebSocket是一种基于TCP的协议,攻击者可以通过WebSocket连接发送恶意请求。

3、CSRF的危害

  • 非法操作:攻击者可以利用受害者的身份进行各种非法操作,例如发送恶意邮件、发布虚假消息、修改个人资料或删除重要数据等。这可能导致信息泄露、社交工程攻击、声誉损失或财务损失。

  • 盗取用户账号:通过诱导受害者点击恶意链接或访问包含攻击代码的页面,攻击者可以在不知情的情况下盗取受害者的账号信息。这使得攻击者能够以受害者的身份登录并访问其敏感信息,从而进一步滥用和利用这些信息。

  • 数据篡改:CSRF攻击还可以导致数据篡改或劫持。攻击者可以通过构造恶意请求来修改受害者的个人数据、订单信息、支付金额等,从而造成混乱、损失和破坏。

  • 信任破坏:一旦用户意识到自己的账号或信息被攻击,他们可能对受影响的网站或服务产生怀疑和不信任。这会给企业的声誉和客户关系带来负面影响。

4、CSRF和XSS的区别

  • 攻击目标不同:CSRF攻击主要针对Web应用程序的后台接口和功能,通过伪造受害者的请求来执行非法操作。而XSS攻击则主要针对用户的浏览器,通过注入恶意脚本来获取用户的信息或实施其他恶意行为。

  • 攻击方式不同:CSRF攻击利用用户的身份认证信息,通过诱导受害者访问包含攻击代码的页面或点击恶意链接来触发攻击。而XSS攻击则是通过在网页中注入恶意脚本,当用户浏览受感染页面时,恶意脚本会在其浏览器中执行。

  • 影响范围不同:CSRF攻击的影响范围主要局限于受害者与目标网站之间的交互,攻击者无法直接窃取用户的信息。而XSS攻击的影响范围更广泛,可以直接窃取用户的敏感信息,如登录凭证、支付信息等。

  • 防御措施略有差异:为防止CSRF攻击,常见的防御措施包括使用CSRF Token验证、检查Referer头和使用验证码等。而为防止XSS攻击,常见的防御措施包括输入验证和过滤、输出编码、设置HTTP头等。

5、CSRF和SSRF的区别

  • 攻击方式不同:CSRF攻击是通过伪造受害者的请求来执行非法操作,利用用户的身份认证信息进行攻击。而SSRF攻击是利用有漏洞的Web应用作为代理进行远程攻击,通过发送恶意请求来获取目标服务器上的数据或执行其他恶意操作。

  • 攻击目标不同:CSRF攻击主要针对受害者与目标网站之间的交互,攻击者以受害者的身份发送请求,执行某些操作。而SSRF攻击主要针对目标服务器本身,攻击者可以利用有漏洞的Web应用来访问目标服务器上的内部资源,如文件、数据库等。

  • 影响范围不同:CSRF攻击的影响范围局限于受害者与目标网站之间的交互,攻击者无法直接访问或窃取用户的敏感信息。而SSRF攻击的影响范围更广泛,攻击者可以通过目标服务器来访问内部系统、获取敏感数据或利用服务器进行进一步的攻击。

  • 防御措施略有差异:为防止CSRF攻击,常见的防御措施包括使用CSRF Token验证、检查Referer头和使用验证码等。而为防止SSRF攻击,常见的防御措施包括限制Web应用的访问权限、过滤用户输入、使用白名单来限制外部资源的访问等。

漏洞复现

CSRF(跨站请求伪造)和SSRF(服务端请求伪造)漏洞复现:风险与防护方法_正经人_____的博客-CSDN博客

七、SSRF漏洞(服务端请求伪造)

1、原理:

  • 服务端提供了从其他服务器获取数据的功能,但没有对目标地址进行过滤和限制。
  • 攻击者可以通过篡改请求的目标地址来进行伪造请求。

2、修复方法:

  • 使用url白名单,限制访问内网的IP地址。
  • 过滤返回信息。
  • 统一错误信息。
  • 限制只能请求Web端口,只允许访问HTTP和HTTPS请求。

3、利用方式:

  • 端口扫描获取服务的Banner信息。
  • 攻击内网或本地的应用程序。
  • 对内网Web应用进行指纹识别,访问默认文件实现。
  • 攻击内外网的Web应用,利用GET参数实现攻击。
  • 利用file协议读取本地文件。
  • 利用未授权访问的Redis,通过HTTP CRLF注入实现getshell。
  • DOS攻击,请求大文件,保持连接等。

4、绕过姿势:

  • 进制转换IP绕过黑名单。
  • 在URL中使用@嵌入凭据绕过白名单。
  • 使用302跳转绕过限制。
  • 利用DNS重绑定攻击。

漏洞复现

CSRF(跨站请求伪造)和SSRF(服务端请求伪造)漏洞复现:风险与防护方法_正经人_____的博客-CSDN博客

八、XXE漏洞(外部实体注入)

1、原理:

  • 配置不当的XML处理器在解析XML文档时会对外部实体进行引用。
  • 攻击者可以利用这个漏洞,通过上传含有恶意内容的XML文档来攻击易受攻击的XML处理器。
  • 在恶意XML文档中,攻击者包含对外部实体的引用。
  • XML处理器尝试解析并获取外部实体的内容。
  • 如果成功引用到敏感文件,攻击者就可以获取这些敏感信息,比如系统文件、配置文件等。

2、利用方式:

  • 任意文件读取:攻击者可以通过构造恶意XML实体引用来读取服务器上的文件,比如敏感配置文件、密码文件等。
  • 系统命令执行:攻击者可以通过在恶意XML中添加外部实体,然后在外部实体中插入命令,从而控制目标服务器执行任意命令。
  • 内网端口扫描:攻击者可以在恶意XML文档中包含远程实体,然后扫描内部网络中其他主机上的端口,获取网络拓扑和其他敏感信息。
  • 攻击内网网站:攻击者可以通过插入包含有恶意代码的XML实体引用来攻击内部网站,从而获取网站敏感信息或对其进行破坏。
  • 钓鱼攻击:钓鱼攻击者可以利用XXE漏洞来伪装合法网站或系统,然后向用户发送钓鱼邮件或链接,以便窃取用户的敏感信息。

3、修复防御:

  • 使用安全的XML解析器:使用被认为是安全的XML解析器,该解析器已经禁用了外部实体的解析或提供了安全配置选项。确保更新并使用最新版本的解析器。

  • 禁用外部实体引用:在解析XML数据的过程中,禁用或限制对外部实体的引用。这可以通过配置解析器或使用相关的开发语言功能来实现。

  • 输入验证和过滤:对用户输入进行充分的验证和过滤,确保输入的XML数据符合预期的结构和格式。避免直接将用户输入的XML作为源进行解析,而应该先进行适当的检查和处理。

  • 白名单机制:使用白名单机制限制解析过程中允许解析的外部资源。只允许解析特定的受信任资源,从而减少攻击者利用恶意实体的可能性。

  • 安全编码实践:遵循安全的编码实践,如避免将敏感信息存储在XML文档中、使用对输入进行充分验证的API等。

 漏洞复现

细节揭示:XXE漏洞复现步骤及安全防护建议_正经人_____的博客-CSDN博客

九、逻辑漏洞

1、原理:

        逻辑漏洞是一种安全问题,它并不涉及系统、应用程序或网络的技术层面,而是设计层面的缺陷。攻击者利用这些缺陷,可以对业务流程进行绕过和操作,从而获取敏感信息或破坏业务完整性。

2、越权:

越权是一种常见的逻辑漏洞,指的是未经恰当访问控制的身份验证,导致用户可以越过权限限制进行访问或操作。越权漏洞可分为水平越权和垂直越权两种类型。

  • 水平越权:指未经验证的用户可以访问和操作其他具有相同权限的账号。即相同权限级别的用户之间可以相互越权访问,这种情况可能导致隐私泄露或非法操作。
  • 垂直越权:指未经验证的用户可以访问和操作具有更高权限的账号。低权限用户能够访问高权限用户的资源,从而可能获得敏感信息或执行限制性操作。

3、常见的逻辑漏洞(包括但不限于以下几种):

  • 支付逻辑漏洞:指支付过程中存在设计缺陷或判断错误,导致攻击者能够以不当的方式获取货币或物品。
  • 短信逻辑漏洞(短信轰炸漏洞):由于短信业务逻辑设计缺陷,未对短信发送次数做限制,导致攻击者可以无限制地发送短信,造成骚扰或增加运营商短信费用。
  • 命令执行漏洞:指攻击者可以利用系统命令执行函数(如php中的system、exec、shell-exec等)执行恶意代码或系统命令,从而获取系统权限或访问敏感数据。
  • 代码执行漏洞:指攻击者可以执行后端脚本命令(如php的代码)的漏洞,从而执行恶意代码并获取系统权限或敏感数据。

4、常见的安全加固手段:

  • 关闭不常用的端口和服务:减少暴露在外部网络中的开放端口和运行的服务,避免攻击者利用未修补或弱点存在的服务进行攻击。

  • 开启防火墙,限制网络流量:配置防火墙规则,限制进入和离开网络的流量,仅允许合法的网络通信,阻止恶意流量的传输。此外,不允许外部USB设备的插入可以防止恶意软件通过可移动介质传播。

  • 数据库访问控制:数据库不应允许匿名登录,并且需要使用强密码对数据库进行保护。同时,采取适当的访问控制措施,限制用户对数据库的权限,确保只有授权用户能够进行合法的操作。

  • 输入参数过滤和验证:对于从用户接收到的输入参数,要进行严格的检查和过滤,验证其合法性和正确性。这包括对输入的长度、类型、格式等进行验证,以防止恶意输入和越权访问。

漏洞复现

掌握逻辑漏洞复现技术,保护您的数字环境_正经人_____的博客-CSDN博客

十、命令执行漏洞

1、原理:

        命令执行漏洞是指在程序应用中使用了能够执行系统命令的函数,攻击者可以通过构造恶意输入来执行任意代码或系统命令。常见的危险函数包括在PHP中的system、exec、shell_exec、passthru、popen、proc_open、assert、putenv等。漏洞产生的条件主要有两个方面:用户能够控制的函数输入和存在能够执行代码或系统命令的危险函数。

2、基本定义

命令执行漏洞指攻击者可以随意执行系统命令的漏洞。当攻击成功后,攻击者可以继承Web服务程序的权限,执行任意代码、读写文件,甚至控制整个网站或服务器,甚至进一步进行内网渗透。

3、利用和危害

  1. 执行任意代码:攻击者可以执行任意代码,并使用系统的权限进行恶意操作,如删除文件、篡改数据等。
  2. 读写文件:攻击者可以读取和修改服务器上的文件,包括敏感数据和配置文件。
  3. 反弹shell:攻击者可以通过执行恶意代码来获取一个交互式的系统Shell,进一步控制服务器。
  4. 控制网站或服务器:攻击者可以完全控制整个网站或服务器,进而进行其他恶意活动,如数据泄露、攻击其他系统等。
  5. 内网渗透:利用命令执行漏洞,攻击者可以扩大攻击面,进一步渗透和攻击内部网络。

4、防御措施

  1. 尽量避免执行外部指令:在开发应用程序时,避免直接使用用户输入的数据来执行系统命令,尽量使用其他安全的方式来实现相同的功能。
  2. 使用自定义函数或函数库替代危险函数:可以编写自定义的命令执行函数,对用户输入的数据进行过滤和验证,以确保只执行预期的命令。
  3. 处理命令参数使用转义函数:在执行系统命令之前,使用适当的转义函数(如escapeshellarg)处理命令参数,确保输入的数据不会被误认为是命令。
  4. 定期更新和维护:及时更新和修补应用程序中使用的各种库和框架,以确保已知的漏洞得到修复,从而降低命令执行漏洞的风险。

漏洞复现

命令执行漏洞复现攻击:识别威胁并加强安全_正经人_____的博客-CSDN博客

十一、反序列化漏洞

1、原理

序列化和反序列化是一种将对象转换成特定格式以便持久化存储或传输的过程。Java中,序列化通过将对象转换为字节流,而反序列化则将字节流重新转换为对象。

反序列化漏洞的成因在于当输入的反序列化数据可被用户控制时,攻击者可以构造恶意输入,导致反序列化过程产生非预期的对象,同时执行恶意代码。

2、常用函数

在 PHP 中,围绕反序列化的常用函数是 serialize() 和 unserialize()。它们用于将对象转换为字符串以进行存储或传输,并将字符串转换回对象。

3、常用的魔术方法

以下是一些常用的与反序列化相关的魔术方法:

  1. __construct(): 当一个对象被创建时自动调用的方法。
  2. __destruct(): 当一个对象被销毁时自动调用的方法。
  3. __toString(): 在对象被转换为字符串时自动调用的方法。
  4. __sleep(): 在对象被序列化之前运行的方法。
  5. __wakeup(): 在对象被反序列化之后立即被调用的方法。

这些魔术方法在反序列化过程中扮演着重要角色,攻击者可以利用它们来执行恶意操作。

漏洞复现

Python、PHP和Java下的反序列化漏洞复现实例_正经人_____的博客-CSDN博客

十二、shell和反向shell

1、shell

  • Shell(正向Shell)是指一个攻击者通过某种方式获取对目标系统的控制权,并在目标系统上执行命令或者操作的一种方式。攻击者可以直接与目标系统进行交互,执行命令、查看文件等操作。

2、反向shell

  • 反向Shell(Reverse Shell)则是指攻击者在目标系统上成功植入了恶意代码,使目标系统主动连接到攻击者控制的服务器,并将命令行的控制权转移到攻击者控制的服务器上。这样,攻击者就可以通过自己控制的服务器与目标系统进行交互。

在渗透测试中,攻击方式有两类:一类是shell类型的攻击,另一类是反向shell类型的攻击。

3、Shell类型的攻击方式通常包括:

  1. 上传Webshell:攻击者通过漏洞利用或者其他手段,将带有恶意代码的Webshell上传至目标服务器,然后通过浏览器或其他工具,访问该Webshell来执行命令和操作目标系统。

  2. 命令注入:通过在目标系统的应用程序输入点注入恶意命令来执行攻击者所期望的操作。常见的注入点有用户输入点、URL参数、请求头等。

4、反向Shell类型的攻击方式通常包括:

  1. 反向Shell连接:攻击者通过在目标系统上植入恶意代码,使目标系统主动与攻击者控制的服务器建立反向连接,并将命令行输入输出传输给攻击者。这样,攻击者就可以在自己的服务器上执行命令和操作目标系统。

  2. 反向代理:通过在目标系统上设置反向代理,将流量转发到攻击者控制的服务器,从而实现对目标系统的控制。

HTTP请求方法

HTTP协议定义了一组请求方法,用于指定客户端对服务器执行的操作。

以下是常用的HTTP请求方法:

  1. GET:用于请求获取指定资源。GET请求应该仅用于获取数据,而不应用于对服务器进行修改。

  2. POST:用于向服务器提交数据,并请求服务器接受它作为请求的一部分。通常用于创建新资源、提交表单数据或执行服务器上的操作。

  3. PUT:用于向服务器上传指定的资源,如果资源存在则进行替换,如果不存在则进行创建。

  4. DELETE:用于请求服务器删除指定的资源。

  5. PATCH:用于对资源进行局部更新,只修改指定资源的部分内容。

  6. HEAD:类似于GET请求,但只返回请求资源的头部信息,不返回实际内容。

  7. OPTIONS:用于请求服务器返回资源所支持的通信选项。

  8. TRACE:用于追踪由客户端到服务器的路径。

  9. CONNECT:用于建立与目标资源的双向连接,常用于通过代理进行加密传输。

这些请求方法定义了客户端对服务器发起请求时可以采取的不同操作,根据具体的需求选择合适的方法来与服务器进行交互。

请注意,不同的请求方法对应着不同的语义和使用场景,正确使用和理解这些方法是实现安全和高效的Web开发的关键之一。

1、扫描方法和快速扫描方法

一般用于扫描的HTTP方法是GET和HEAD。其中,HEAD方法比GET方法更快。

2、探测服务器开启的方法

使用OPTIONS方法可以探测服务器开启了哪些方法。

3、HTTP状态码

以下是常见的HTTP状态码及其含义:

  • 1xx(信息响应):表示请求已被接收,继续处理。
  • 2xx(成功响应):表示请求已被成功接收、理解并接受。
  • 3xx(重定向):表示需要客户端进一步操作才能完成请求。
  • 4xx(请求错误):表示客户端发出的请求有误,服务器无法处理。
  • 5xx(服务器错误):表示服务器在处理请求时发生了错误。

具体的HTTP状态码包括 100、200、301、302、400、401、403、404、500、503 等。

4、HTTP字段

以下是一些常见的HTTP字段:

  • Host:请求的Web服务器域名地址(对方的IP)。
  • User-Agent:当前HTTP请求的客户端浏览器类别,包括浏览器类型、操作系统及版本、CPU类型、浏览器渲染引擎、浏览器插件等信息。
  • Accept:告诉服务器能够接受的媒体类型。
  • Accept-Charset:告诉服务器能够接受的字符集。
  • Accept-Encoding:告诉服务器能够接受的编码方式。
  • Accept-Language:告诉服务器能够接受的语言。
  • Content-Encoding:对主体执行的任意编码方式。
  • Content-Length:主体的长度或尺寸。
  • Content-Type:主体的对象类型。
  • Authorization:包含了客户端提供给服务器的身份认证数据。
  • Cookie:客户端向服务器传送令牌的数据。
  • Referer:告诉服务器该网页是从哪个页面链接过来的。
  • DNT:表示用户对在目标站点上进行跟踪的偏好。
  • X-Forwarded-For:用来表示HTTP请求端真实IP。
  • Connection:表示是否需要持久连接。
  • Keep-Alive:使客户端与服务器的连接保持持久有效。
  • X-Requested-With:指示请求的方式是XMLHttpRequest。
  • Date:响应的时间。
  • Server:服务器中间件和源码信息。

这些字段在HTTP通信过程中起到了不同的作用,提供了额外的信息和功能。

请注意,这只是HTTP协议的一部分内容,HTTP协议还有更多的规范和功能。

中间件漏洞

1、存在目录遍历漏洞的中间件有:

  • IIS
  • Apache
  • Nginx

2、存在war后门文件部署的中间件有:

  • Tomcat
  • Weblogic
  • JBoss

【IIS漏洞】

  1. Put漏洞(本质是任意文件上传):

    • 原理:IIS开启了WebDAV配置了可写入权限,造成任意文件上传漏洞。
    • 防御:关闭WebDAV;关闭写入权限。
  2. 解析漏洞:

    • 原理:6.0版本默认将*.asp;.jpg等文件名当成asp解析,后面的内容不解析,相当于截断,可绕过文件类型验证。
    • 防御:禁止上传和创建畸形文件;将图片存放目录设置为禁止脚本执行。
  3. 短文件名猜解:

    • 原理:利用IIS的短文件名机制,可以暴力破解文件名。
    • 防御:升级.NET Framework;修改注册表键值。

【Apache漏洞】

  1. 解析漏洞(未知拓展名解析漏洞):

    • 原理:Apache默认一个文件可以有多个以点切割的后缀,最右的后缀无法识别时,继续向左识别,导致解析漏洞。
    • 防御:合理配置文件类型解析规则。
  2. 目录遍历:

    • 原理:程序未充分过滤用户输入的…/等目录跳转符,导致恶意用户可遍历任意文件。
    • 防御:修改httpd.conf文件中的参数。

【Tomcat漏洞】

  1. 弱口令+war后门文件部署:

    • 原理:未授权直接登录后台或使用弱口令登录后台,上传含有恶意代码的war包进行攻击。
    • 防御:配置强密码;限制后台登录IP;及时更新Tomcat版本。
  2. put任意文件上传:

    • 原理:Tomcat允许使用put方法上传任意文件类型,可通过特殊命名绕过文件类型检测。
    • 注意:Linux + Tomcat 5.0~9.0版本可上传1.jsp/绕过文件类型检测。

【Nginx漏洞】

  1. 文件解析漏洞:

    • 原理:由于配置不当,Nginx把以’.php’结尾的文件交给fastcgi处理,可通过特殊命名进行绕过。
    • 防御:修改php.ini中的cgi.fix_pathinfo参数;配置security.limit_extensions。
  2. 目录遍历:

    • 原理:配置错误可导致目录遍历与源码泄露。
    • 修复:将nginx.conf中的autoindex on改为off。
  3. CRLF注入漏洞:

    • 原理:利用CRLF字符注入恶意换行,在HTTP消息头中注入会话Cookie或HTML代码。
    • 修复:修改配置文件,避免注入恶意换行符。

JBoss:

1、反序列化漏洞(HttpInvoker 组件(CVE-2017-12149)):

  • 原理:该漏洞存在于 JBoss 的 HttpInvoker 组件的 ReadOnlyAccessFilter 过滤器中。攻击者可以利用该漏洞将来自客户端的数据流进行反序列化,从而执行任意代码。
  • 漏洞验证过程:访问/invoker/readonly,如果返回500,则说明存在反序列化漏洞。攻击者可以使用两个终端,一个进行监听,另一个发送恶意 payload,成功反弹 shell。

2、弱口令+war后门文件部署:

  • 原理:攻击者使用弱密码(如 admin/admin)登录后台管理界面,然后上传包含后门的 war 文件进行部署,实现远程执行恶意代码。
  • 防御建议:修改弱密码,删除 admin-console 页面。

WebLogic:

1、弱口令+war后门文件部署:

  • 原理:攻击者使用弱密码(如 weblogic/Oracle@123)登录 WebLogic 管理台,然后通过上传 war 文件进行部署。

2、反序列化漏洞:

  • 原理:WebLogic 的 WLS Security 组件在处理用户传入的 XML 数据时使用了 XMLDecoder 进行反序列化,导致反序列化漏洞,攻击者可以执行任意命令。

3、SSRF 漏洞:

  • 原理:WebLogic 的 Web Server 可以被外部主机访问,并允许访问内部主机。攻击者可以通过未经授权的方式使用 WebLogic Server 连接任意主机的任意 TCP 端口,从而攻击内网中的脆弱组件。

Apache Shiro:

  • Shiro 是一个 Java 安全框架,以下是与 Shiro 相关的漏洞和利用方式:

1、指纹信息:

  • 判断目标是否使用了 Shiro 框架:请求包中 Cookie 信息中存在 rememberMe 变量,并且返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段。

2、Shiro-550(反序列化漏洞):

  • 原理:Shiro 框架在登录成功后会生成经过加密和编码的 rememberMe cookie。攻击者如果获取到 AES 加密的密钥,可以构造恶意对象并进行序列化、加密和编码,然后将其作为 rememberMe 字段发送给服务器,服务器解密并反序列化发送的数据,导致反序列化漏洞。
  • 实践与利用:攻击者可以利用 ysoserial 中的监听模块,在自己的电脑上监听指定端口,然后使用 Python 脚本获取 AES 密钥并生成恶意 payload,最后将其发送给目标服务器,成功反弹 shell。

3、Shiro-721(Padding Oracle 攻击):

  • 原理:Shiro 框架的 rememberMe cookie 中使用的加密算法存在问题,容易受到 Padding Oracle 攻击。攻击者可以使用特制的 rememberMe cookie 作为攻击前缀,然后将恶意语句写入 rememberMe 字段,执行反序列化攻击。
  • 实践与利用:攻击者首先登录目标网站并获取 rememberMe cookie,然后使用 ysoserial 工具加密一条 Java 序列化 payload,并构造恶意 rememberMe cookie,发送给目标服务器,最终导致远程代码执行。

修复建议

  • 对于以上提到的漏洞,可以考虑以下修复建议:
    • 针对弱口令漏洞:修改默认密码,并使用强密码策略。
    • 针对反序列化漏洞:升级到最新的 JBoss 或 WebLogic 版本,以确保修复了已知的漏洞。同时,限制来自客户端的反序列化操作,并对输入进行严格校验和过滤。
    • 针对SSRF漏洞:限制 WebLogic 对内部主机的访问权限,并使用细粒度的访问控制策略,防止攻击者利用 SSRF 漏洞访问内网的敏感资源。
    • 针对 Shiro 漏洞:升级到最新的 Shiro 版本,以确保修复已知的漏洞。检查应用程序中的 rememberMe 功能是否正确实现,避免密码重置功能中的 Padding Oracle 攻击。

★ ThinkPHP ★

指纹信息:

  • URL中输入http://192.168.xx.xx/ThinkPHP/logo.png会显示图片,该图片也存在于页面标题中。
  • "十年磨一剑"是ThinkPHP的重要特征。

漏洞原理:

  • 程序未对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法。
  • 恶意构造的URL可以执行任意代码。

实践与利用:

  1. 植入一句话木马(写在URL中)

    • Payload:http://192.168.xx.xx/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^>shell.php
  2. 显示phpinfo信息(写在URL中)

    • Payload:http://192.168.xx.xx/public/index.php?s=index/\think\app/invokefunction&function=phpinfo&varv[0]=100
  3. POST利用方法一(写在请求正文中)

    • Payload:_method=_construct&filter=system&method=get&server[REQUEST_METHOD]=whoami
  4. POST利用方法二(写在请求正文中)

    • Payload:a=system&b=whoami&_method=filter

修复建议:

  1. 及时更新框架版本:定期关注ThinkPHP官方发布的最新版本,并及时进行升级。新版本通常会修复漏洞和安全问题。

  2. 输入验证和过滤:对用户输入的URL进行验证和过滤,确保输入的数据符合预期的格式和内容,防止恶意构造的URL导致代码执行漏洞。

  3. 控制器过滤:对控制器进行过滤和限制,确保只能调用预期的类方法,防止攻击者通过引入\符号来调用任意类方法。

  4. 安全意识培训:对开发人员进行安全意识培训,提高对Web安全的认识,并教授安全编码实践,避免常见的安全漏洞。

  5. 涉及敏感操作的权限控制:根据业务需求,对涉及敏感操作的接口和功能进行权限控制,确保只有经过授权的用户才能进行相关操作。

★ Struts2 ★

指纹信息:

  1. 通常使用st2框架开发的网站,URL会包含.action或.do后缀的文件名。
  2. 可通过回显错误消息来判断是否使用了st2框架。
  3. 默认情况下,st2框架存在http://192.168.xx.xx/struts/webconsole.html文件。
  4. Content-Type字段可能包含%{#x=[‘xxx’]指示。

漏洞原理:

  • st2-045漏洞:在处理上传数据时,解析Content-Type字段中的OGNL表达式,如果存在恶意语句,将会执行。
  • S2-062远程命令执行漏洞:修复不完整的CVE-2020-17530漏洞,原理类似,通过标签属性中的%{x}和用户可控的%{payload}进行OGNL表达式执行。

实践与利用:

详见漏洞原理部分的描述。

修复建议:

  • 升级Struts2框架至最新版。

Fastjson

指纹信息:

  • 抓包,看请求包中传入的参数值是否形如json格式,如{"张三":100,"李四":200}。随后将json数据随意修改,看响应包中是否出现fastjson.JSONException字样。
  • 正常请求是get请求没有请求体。可以通过构造错误的POST请求,看返回包中是否有fastjson这个字符串。

漏洞原理:

  • 只要我们传入一个json类型数据包含@type,程序在调用JSON.parseObject这个方法处理json对象时,程序就会反序列化生成一个对象。因此,了解了Fastjson处理json的机制,攻击者只需要将@type值设为TemplatesImpl,构造一个恶意类,而这个类还有一个字段是_bytecodes,程序根据_bytecodes生成了一个java实例。问题就在于java实例生成的同时,会自动调用构造函数。那么攻击者只要把恶意代码赋值给_bytecodes字段,恶意代码就会执行。
  • Fastjson 在对 javaBean 进行序列化的时候会调用它的所有 get 或者 is 方法,反序列化的时候会调用所有的 set 方法,如果这个 set 方法中含有些危险的调用链,我们则可以利用这个反序列化过程来执行我们自己的命令。

修复建议:

  • 对 @type 字段进行过滤。

Apache Log4j

影响范围:

  • Apache Log4j 2.x < Apache Shiro = 2.14.1

受影响的应用及组件:

  • Spring-Boot-Strater-log4j2、Apache Solr、Apache Flink、Apache Druid

漏洞原理:

  • 原理一:MessagePatternConverter 类的 format() 方法一旦遇见日志中包含 ${,就会将表达式的内容替换为表达式解析后的内容,而不是表达式本身。
  • 原理二:StrSubstitutor 类中提取参数并通过 lookup 对象进行内容替换,当日志遇到 ${ 时,会将表达式内容分割成两部分,前部分作为前缀,后部分作为要执行的语句,并通过对应的 lookup 实例调用方法执行。
  • 原理三:Jndi 注入原理就是通过将恶意语句注入到 ${jndi:ldap://…} 中,并实现远程加载恶意 class 文件和执行其中的代码,从而达到漏洞利用目的。

修复建议:

  • 添加 JVM 启动参数 -D log4j2.formatMsgNoLookups=true
  • 在应用classpath下添加 log4j2.component.properties 配置文件,文件内容为上述指令
  • 升级 JDK 至 11.0.1、8u191、7u201、6u211 及以上版本
  • 部署使用第三方防火墙产品进行安全防护。

【重要】Spring Framework远程代码执行漏洞(CVE-2022-22965)(真问到就说没做过相关复现呢)

影响范围:

  1. JDK >= 9且5.3.X < Spring Framework < 5.3.18或5.2.X < Spring Framework < 5.2.20
  2. 使用受影响的Spring框架或衍生框架。
  3. Spring-webmvc或Spring-webflux依赖项。

漏洞描述:

Spring Framework是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。然而,在JDK9及以上版本环境中,一些新的版本特性可以使攻击者绕过安全特性,通过构造数据包修改敏感文件,实现远程代码执行的目的。

漏洞利用:

  1. 在本地使用Vulfocus靶场搭建环境,执行以下命令: docker-compose up -d。

  2. 在具有漏洞的Spring框架界面抓包,并替换GET请求内容,具体替换方式如下:
    将包中的内容做以下替换:

    • 左边是替换前,
    • 右边是替换后。
  3. 最后访问http://192.168.xx.xx:8080//tomcatwar.jsp?pwd=j&cmd=whoami,即可在界面上看到命令执行结果。

修复建议:

  1. 使用UWAF防护。
  2. 在代码中搜索@InitBinder注解,查看方法体内是否调用了dataBinder.setDisallowedFields方法。如果有,则添加{" class.module.*"}到现有的黑名单中。
  3. 及时更新至最新版本。

★Weblogic★

漏洞原理:

该漏洞主要源于coherence.jar中存在用于构造gadget的类(反序列化构造类),并且利用weblogic默认开启的T3协议进行传输和解析,从而导致weblogic服务器反序列化恶意代码,并执行攻击语句。

T3是用于在WebLogic服务器和其他类型的Java程序之间传输信息的协议。服务器可以持续追踪监控客户端是否存活(心跳机制),通常心跳间隔为60秒,超过240秒未收到心跳将判定与客户端的连接丢失。

修复建议:

升级Weblogic框架版本。

【挺重要】F5漏洞CVE-2020-5902(暂时没找到最新的)

成因分析:

Apache在处理/tmui/login.jsp/…;/tmui/locallb/workspace/fileRead.jsp时,会将其认为是处理的/tmui/login.jsp文件。然而,.*.jsp会进行最大限度的匹配,导致完整的/tmui/login.jsp/…;/tmui/locallb/workspace/fileRead.jsp被传递给Tomcat进行处理。Apache对访问权限校验的处理可见于/etc/httpd/modules/mod_auth_pam.so。而Tomcat在处理/tmui/login.jsp/…;/tmui/locallb/workspace/fileRead.jsp时,会将分号和斜杠之间的字符进行移除。

漏洞利用:

通过利用该漏洞,可以以root权限在F5环境中执行命令,并可以通过调用curl命令对文件进行读写操作。需要使用别名创建bash命令,否则命令执行可能失败。另外,可以将运行脚本写入F5中的文件,并运行该脚本,理论上可执行任意shell命令。也可以使用反弹shell来获取F5的shell。

修复建议:

升级F5框架版本。

Web工具问题

1、关于Web工具的问题,以下是菜刀、冰蝎、蚁剑和哥斯拉的流量特征:

  

1. 中国菜刀:

  • 早期版本的明文传输,后来改为使用Base64加密。
  • 特征主要在请求体(body)中,其中被Base64编码的默认参数是"z0",解密后可发现用于传递payload的函数,如PHP中的eval和assert,ASP中的execute。
  • 后续版本中,请求体中的部分字符采用Unicode编码替换混淆,常见的是%u00。

2. 蚁剑:

  • 使用Base64加密和AES加密。
  • PHP类常见的特征是@ini_set(“display_errors”, “0”),而ASP类常见的特征是execute,但字符串会被打断拼接,混淆后形式通常是_0x…=。

3. 冰蝎:

  • 使用AES加密。
  • 在建立连接之前会进行AES密钥交换过程,请求体中都是AES加密后的密文。
  • 冰蝎1的特征是Content-Type: application/octet-stream。
  • 冰蝎2的特征是Content-Length: 16。
  • 冰蝎3的特征是Content-Type: application/octet-stream。

4. 哥斯拉:

  • 使用AES加密。
  • PHP连接的特征是请求中含有"pass**=“的第一个包和第二个包,而JSP连接的特征与PHP请求相同,都含有"pass=”。此外,发起连接时服务器返回的Content-Length通常是0。

5. Wireshark:

  • 网络封包分析软件
  • 用于截取并分析指定网卡上的流量包
  • 过滤规则语法正确时,Filter编辑框会显示绿色;错误时会显示红色
  • 过滤协议:可直接输入协议名,如tcp、udp、arp、icmp、http、ftp、dns等等
  • 过滤IP:
    • ip.src eq 192.168.1.107:显示来源IP
    • ip.dst eq 192.168.1.107:显示目标IP
    • ip.addr eq 192.168.1.107:显示来源或目标IP
  • 过滤端口:
    • tcp.port == 80:显示所有端口为80的流量
    • tcp.dstport == 80:显示目标端口为80的TCP流量
    • tcp.srcport == 80:显示来源端口为80的TCP流量
    • tcp.port >= 1 and tcp.port <= 80:显示端口范围在1至80之间的流量
    • udp.port eq 15000:过滤UDP端口为15000的流量
  • 过滤MAC地址:
    • eth.dst == A0:00:00:04:C5:84:过滤目标MAC地址
    • eth.src == A0:00:00:04:C5:84:过滤来源MAC地址
    • eth.addr == A0:00:00:04:C5:84:显示来源或目标MAC地址
  • 过滤HTTP:
    • http.request.method == “GET”:过滤HTTP请求方法为GET的流量
    • http.request.uri == “/img/logo-edu.gif”:过滤请求URI为/img/logo-edu.gif的流量
    • http contains “GET”:过滤包含"GET"的HTTP流量
    • http.request.method == “GET” && http contains “User-Agent:”:过滤请求方法为GET且包含"User-Agent:"的HTTP流量
    • http contains “HTTP/1.1 200 OK” && http contains “Content-Type:”:过滤状态码为HTTP/1.1 200 OK且包含"Content-Type:"的HTTP流量
  • 包长度过滤:
    • udp.length == 26:过滤UDP包长度为26的流量
    • tcp.len >= 7:过滤TCP数据包长度大于等于7的流量(不包括TCP本身)
    • ip.len == 94:过滤IP包长度为94的流量(不包括以太网头)
    • frame.len == 119:过滤整个数据包长度为119的流量(从以太网头开始)

6. Nmap:

  • 网络扫描软件,用于扫描电脑的网络连接情况和运行的服务等
  • 常用命令:
    • nmap -p 1-65535 192.168.1.1:扫描目标主机的所有端口
    • nmap -sT 192.168.1.1:使用TCP Connect扫描(默认扫描方式)
    • nmap -Pn 192.168.1.1:非ping扫描,跳过防火墙执行扫描
    • nmap -sV 192.168.1.1:返回端口及其对应的服务和版本号
    • nmap -sS 192.168.1.1:半开扫描,通过返回服务器的第二次握手确定端口状态
    • nmap -sN 192.168.1.1:使用TCP Null扫描,只进行主机发现不进行端口扫描
    • nmap -A 192.168.1.1:全面综合扫描,包括广泛的扫描功能
    • nmap -O 192.168.1.1:操作系统检测
    • nmap -T4 192.168.1.1:设置定时模板为T4(越高越快)
    • nmap -v 192.168.1.1:显示扫描过程的详细信息
    • nmap --script <脚本名称>:使用指定的脚本进行扫描
    • 其他选项:
      • nmap -p 1-65535 192.168.1.1:指定扫描所有端口(默认只扫描1000个常见端口,等价于 nmap -p-)
      • nmap --batch 192.168.1.1:选择默认选项进行扫描
      • nmap --cookie “cookie值” 192.168.1.1:使用Cookie进行扫描
      • nmap --level X 192.168.1.1:设置扫描等级(最高为X=5)
      • nmap --risk X 192.168.1.1:设置风险等级(0~3,风险越高扫描时间越长)
      • nmap --os-shell 192.168.1.1:执行文件写入挂马操作
      • nmap --os-dbms 192.168.1.1:爆破数据库类型
      • nmap -vv 192.168.1.1:显示更详细的扫描过程信息(多个-v表示更详细)

7. Burp Suite:

  • 著名的Web攻击应用程序集成平台
  • 包含多个工具,如暴力破解、编码解码、流量拦截等
  • 主要模块:
    • Proxy模块:拦截HTTP/S的代理服务器,可拦截、查看、修改数据流
    • Intruder模块:高度可配置的工具,用于自动化攻击和暴力破解Web应用程序
    • Repeater模块:发送单独的HTTP请求,并分析应用程序响应
    • Decoder模块:用于手动执行或智能解码/编码应用程序数据
    • Scanner模块(仅限专业版):高级工具,用于发现Web应用程序的安全漏洞
    • Spider模块:智能感应的网络爬虫,用于完整枚举应用程序的内容和功能

8. Sqlmap:

  • 开源渗透测试工具,用于检测SQL注入漏洞并接管数据库服务器
  • 主要功能:
    • 检测SQL注入漏洞、获取数据库信息、访问文件系统、执行命令等
  • 常用命令:
    • sqlmap -u “http://www.xx.com?id=x”:设置目标URL进行扫描
    • sqlmap -r “mlh.txt”:用于POST注入,加载保存为txt格式的数据包
    • sqlmap -p “id”:对指定参数进行注入
    • sqlmap --dbs:破解所有数据库(爆破数据库)
    • sqlmap --tables -D mlh:破解mlh库下的所有表(爆破表名)
    • sqlmap --columns -T mlh:破解mlh表下的所有字段名
    • sqlmap --dump -C name,password:获取字段中的内容(爆破字段)
    • sqlmap --current-db:显示当前数据库名(爆破数据库名)
    • sqlmap --current-user:显示当前数据库的用户名
    • sqlmap --batch:使用默认选项进行扫描
    • sqlmap --cookie “cookie值”:使用Cookie进行注入
    • sqlmap --level X:设置扫描等级(最高为X=5)
    • sqlmap --risk X:设置风险等级(0~3,风险越高速度越慢)
    • sqlmap --os-shell:执行文件写入挂马(挂马)
    • sqlmap --os-dbms:爆破数据库类型
    • sqlmap --tamper ***.py,***.py:使用脚本,后面参数为tamper库中的py文件

9. Fofa

10. Shodan

  1. Shodan 搜索引擎:Shodan 是一款专注于物联网设备和网络设备的搜索引擎,可以搜索并获取与特定条件相匹配的设备和服务信息。

  2. 搜索网页内容包含 “Beijing” 的结果:http.html:“Beijing”

  3. 搜索网页标题包含 “Cisco” 的结果:html.title:“Cisco”

  4. 搜索 HTTP 请求返回中 server 的类型为 “Microsoft-IIS/10” 的结果:http.server:“Microsoft-IIS/10”

  5. 搜索 HTTP 请求返回响应码状态为 “200” 的结果:http.status:“200”

  6. 搜索主机名或域名包含 “google” 的结果:hostname:“google”

  7. 搜索端口或服务为 “21” 的结果:port:“21”

  8. 搜索国家为 “CN” 的结果:country:“CN”

  9. 搜索城市为 “Hefei” 的结果:city:“Hefei”

  10. 搜索组织或公司名称为 “google” 的结果:org:“google”

  11. 搜索操作系统/软件/平台为 “Apache httpd” 的结果:product:“Apache httpd”

  12. 搜索软件版本为 “1.6.2” 的结果:version:“1.6.2”

  13. 搜索收录时间在 “11-09-19” 之前或之后的数据:before:“11-09-19” 或 after:“11-09-19”

  14. 搜索特定 IP 地址或子网为 “210.45.240.0/24” 的结果:net:“210.45.240.0/24”

  15. 搜索特定的 CVE 漏洞编号为 “CVE-2014-0723” 的结果:vuln:CVE-2014-0723

  16. 查找特定的 SQ-WEBCAM 摄像头的结果:Server:SQ-WEBCAM

【Google Hacking(谷歌骇客语法)】

  1. intitle:孟令昊 – 把搜索范围限定在网页标题中
  2. inurl:jsp?id= – 把搜索范围限定在 URL 链接中
  3. site:mlh.com – 把搜索范围限定在特定站点中(可用于搜索子域名)
  4. filetype:doc – 搜索范围限定在指定文档格式中
  5. intext:孟令昊 – 搜索范围限定在正文关键字中
  6. link:mlh.com – 返回所有和该网站做了链接的 URL
  7. info: – 查找指定站点的基本信息
  8. cache: – 查找关于某些内容的缓存

【安全设备问题】

  1. 什么是 IPS?
    • IPS(入侵预防系统)对网络流量进行分析监控,发现攻击后会进行拦截。它是防火墙的重要补充,作为第二道防线。
  2. 什么是 IDS?
    • IDS(入侵检测系统)监视和记录网络中的各种攻击企图,但不会对攻击行为进行拦截,只能进行事中检测和事后追查。
  3. 什么是蜜罐?
    • 蜜罐是部署的诱饵主机,用于吸引攻击者对其进行攻击,并捕捉并分析攻击行为,以了解攻击者使用的工具和方法,并增强真实系统的安全防护能力。
  4. 什么是防火墙?
    • 防火墙是一种网络安全设备,用于监控和控制网络流量,通过实施一组安全策略来保护网络免受未经授权的访问和攻击。
  5. 什么是 WAF?
    • WAF(Web应用防火墙)是专门针对Web应用的防火墙,通过检测和过滤HTTP和HTTPS请求的内容,确保其合法性和安全性,对非法请求进行阻断。
  6. WAF与IPS的区别
    • WAF针对Web系统的防护,更具针对性,可防范SQL注入、跨站脚本攻击、文件上传漏洞等。而IPS的防护面更广。
  7. 软硬WAF区别
    • 软WAF基于软件实现,硬WAF基于硬件设备实现。
  8. 遇到的厂商硬件设备有哪些?
    • 奇安信的天眼,绿盟的漏扫设备,微步的蜜罐,深信服的防火墙和VPN等。
  9. 了解哪些网络安全设备?
    • IDS、IPS、防火墙、蜜罐。
  10. 低交互蜜罐、中交互蜜罐、高交互蜜罐的区别?
    • 低交互蜜罐:模拟服务行为,数据不够真实。
    • 中交互蜜罐:对真实操作系统的行为进行模拟,提供更多交互信息,获得攻击者更多信息。
    • 高交互蜜罐:具有真实操作系统,仿真度更高,数据更真实。
  11. IPS和IDS分别在网络中如何部署?
    • IPS通常被串接在防火墙之后,可进行流量拦截和阻断操作。
    • IDS可旁挂在网络中,用于监听和记录网络流量。
  12. 了解奇安信的天擎吗?
  • 天擎是奇安信公司推出的一款安全运营平台,类似于360安全卫士,具有流量分析、监控和日志检索模块等功能。

13. 用过奇安信的天眼吗?可以用天眼来干什么?

  • 是的,我了解奇安信的天眼。天眼主要用于流量分析和监控,它还具备日志检索模块,能够进行溯源和查找。

14. IPS和IDS分别在网络中如何部署?

  • IPS(入侵预防系统)通常被部署在网络中的主线或关键节点,用于对网络流量进行实时监测和阻断操作。
  • IDS(入侵检测系统)可以旁挂在网络中的主干线或边缘节点,用于监听和记录网络流量,提供实时警报和日志分析。

15. 什么是DDoS防护?

  • DDoS(分布式拒绝服务攻击)防护是一种网络安全措施,旨在保护网络服务免受大规模DDoS攻击。它使用各种方法,如流量过滤、黑白名单、流量清洗等,来减轻和阻止攻击对网络造成的影响。

16. 什么是VPN(Virtual Private Network,虚拟专用网络)?

  • VPN是一种通过公共网络(例如互联网)建立安全连接的技术。它可以在用户和目标网络之间创建加密隧道,使得用户能够安全地访问目标网络上的资源,同时保护通信的机密性和完整性。

17. 什么是安全漏洞扫描?

  • 安全漏洞扫描是一种自动化工具或服务,用于检测计算机系统、网络设备或应用程序中的潜在漏洞和弱点。它通过扫描目标系统,识别安全漏洞,并提供修复建议以加强系统的安全性。

经验问题

1、项目进场的工作流程:

  1. 了解项目情况,包括人员组成等。
  2. 了解项目上的设备,如拓扑图,以及安全布防设备等。
  3. 确认工作内容,核查各项设备是否能够正常使用。
  4. 确认紧急联系人以及紧急事件上报流程。

2、交到漏洞盒子、CNVD这一类漏洞平台的漏洞网站都是怎么找到的?

(1) 一般通过谷歌骇客语法,如搜可能存在SQL注入的网站: inurl:php?id=1。
(2) 使用鹰图或者fofa,进行搜索,比如搜后台类的网站body=“后台”,或者搜可能存在默认密码的网站body="默认密码为admin"等。

3、渗透测试时需要注意的问题:

  • 不应影响对方网站业务系统运行的连续性,不要对其进行破坏。
  • 一般不进行提权操作,以免导致服务器崩溃。
  • 不进行挂马操作,仅测试文件上传漏洞是否能解析执行。
  • 在爆破系统账号前先手动测试,避免由于密码输入错误导致账号被锁定。

4、渗透测试的主要内容和程度:

主要针对公司的内部系统和承接的渗透测试项目进行渗透测试,程度是发现并证明漏洞存在。

5、您挖掘过的有意思的漏洞:

请自由发挥,符合逻辑即可,比如挖到了SQL注入漏洞、通过工具找到了后台、上传漏洞等。

6、公司发生安全事件的处置流程:

根据事件严重程度进行断网隔离和上机排查等操作。

7、项目渗透测试的流程:

  1. 确定渗透测试的项目需求和注意事项。
  2. 对网站进行渗透测试。
  3. 根据挖掘到的漏洞输出渗透测试报告。

8、您的渗透测试工作是否需要到现场进行?

一般是远程渗透测试,在客户现场不需要,主要对外网系统进行测试。

9、工作期间是否有合作伙伴,您的工作内容是什么?

有合作伙伴,即公司的同事,工作内容参照您的简历上的描述。

10、工作期间如果遇到有人打游戏,您会怎么办?

如果发现同事在工作时间内进行与工作无关的行为如打游戏,首先应提醒和监督,若无效则向项目经理反馈。对于其他厂商人员与客户等打游戏行为且影响到正常工作进行,可直接反馈给项目经理以便采取相应措施。(这个只是官面话,现实中别人摸鱼又不影响你,少管闲事才能更好的在职场生存)

渗透思路

1、渗透测试登录框的步骤:

  • 在登录框中尝试爆破,以猜测正确的用户名和密码。
  • 输入一个账号,观察页面是否有回显提示,根据回显信息进行爆破。
  • 根据不同的回显情况采取相应的策略:
    • 如果页面回显密码错误,使用Burp Suite进行抓包,将密码设为变量,导入密码本进行密码爆破。
    • 如果页面显示用户名错误,使用Burp Suite进行抓包,将用户名设为变量,导入常见的用户名密码本进行爆破。
    • 如果页面显示用户名或密码错误无法判断用户名存在与否,使用Burp Suite进行抓包,将用户名和密码设置为变量,使用双变量爆破,分别导入用户名和密码本进行爆破。
  • 尝试其他漏洞检测,如SQL注入、命令执行、逻辑漏洞等。
  • 使用漏洞扫描工具(如AWVS)进行扫描,并手工验证扫描结果。

2、对于一个网站的渗透测试步骤:

  • 首先进行信息收集,了解网站使用的语言和中间件。
  • 扫描网站开放的端口,查找敏感端口泄露。
  • 使用目录扫描工具(如御剑、dirsearch)扫描网站,查找敏感文件或后台。
  • 收集网站的子域名或C段IP地址。
  • 根据收集到的信息,进行漏洞分析和挖掘,如尝试弱口令、SQL注入等。
  • 使用漏洞扫描工具(如AWVS)进行扫描,并验证扫描结果。
  • 检查网站的功能项和逻辑,寻找可能存在的逻辑漏洞。
  • 输出渗透测试报告,包括漏洞的利用点、修复建议和使用的工具等。

3、域渗透思路:

  • 定位域控制器的IP和域管理员账号。
  • 利用域成员主机作为跳板,扩大渗透范围。
  • 利用域管理员具有在域中任何成员主机登录的特权,找到域管理员登录过的主机IP。
  • 从域成员主机内存中获取域管理员密码,获取域控制器的控制权限。

4、渗透测试和挖SRC的区别:

  • 报告的复杂程度不同,项目的渗透测试报告通常更为复杂。
  • 挖SRC的报告主要包括挖掘出漏洞的过程和方法。

5、漏洞盒子和补天:

  • 漏洞盒子和补天都有授权的公益SRC项目可以挖掘漏洞。
  • 两者都收取全网挖掘到的漏洞。

6、提交漏洞审核不通过的原因:

  • 无法联系上厂商。
  • 漏洞存在,但危害较小,如反射型XSS。
  • 某些平台不收录特定类型的漏洞,如目录遍历、phpinfo等。

7、了解的漏洞收取网站:

  • 补天:包括补天收集的漏洞、众测项目挖掘的漏洞以及全网挖掘的漏洞。
  • 漏洞盒子:包括漏洞盒子收集的漏洞、众测项目挖掘的漏洞以及全网挖掘的漏洞。
  • CNVD:收集和管理各种漏洞信息。

8、常用的漏洞扫描工具:

  • AWVS:用于扫描网站漏洞。
  • Goby:用于主机发现、端口扫描和漏洞扫描。
  • Nessus:全面的漏洞扫描和评估工具。
  • AppScan:用于Web应用程序的漏洞扫描和安全评估。
  • X-Ray:一款基于机器学习的网络安全扫描工具。
  • 。。。。。(说自己熟悉的工具)

9、中级研判的一般流程:

  • 进行流量分析,分析网络数据包,发现异常流量行为。
  • 对已发现的漏洞进行复测和验证,确保漏洞的可利用性和危害性。
  • 进行基线加固,对系统进行安全配置和补丁管理等操作。
  • 根据需要,进行指定资产的渗透测试,评估系统的安全性。
  • 创建处置建议报告或每日流量分析报告,总结安全状况,并提供建议和解决方案。
  • 参与应急响应工作,进行溯源分析,尽可能还原攻击过程和攻击者的活动。

10、HW报告:

在HW攻防演习中,通常会提交日报和周报,报告的内容主要是对现场安全状况的总结,包括告警数量、攻击成功事件等。

11、公司安全报告:

一般包括渗透测试报告和月报。

  • 渗透测试报告:对公司系统或网站进行渗透测试的结果,包括发现的问题和漏洞,以及修复建议。
  • 月报:总结当月发现的安全威胁和漏洞情况,提供整体安全状况的分析和建议。

12、初级流量监控监测工作内容一般有:

  • 每天进行流量告警检测
  • 初步的流量分析和监测
  • 根据需要升级设备
  • 编写当日的流量日报

13、HW项目通常包括以下组:

  • 监控组:负责监控设备的流量
  • 研判组:对监控组上报的流量进行分析和漏洞验证
  • 处置组:针对恶意攻击的IP进行封禁
  • 应急响应组:针对成功受攻击的服务器进行应急响应
  • 溯源反制组:对攻击者进行溯源和反制
  • 专家组:总体指挥协调项目工作

通常流程是:监控组将监控到的恶意攻击流量上报给研判组,研判组分析后确认是否为攻击流量,然后转给处置组进行封禁。如果有攻击成功的事件,研判组需要与溯源反制组和应急响应组进行协同工作,溯源反制组和研判组的人员进行溯源,应急响应组则对受影响的机器进行应急响应。

14、参加过hw吗?用过什么设备? 

是的,曾参加过HW项目。主要使用的设备是奇安信的天眼。

15、修复漏洞时的注意事项:

  • 在不影响业务连续性运行的前提下进行修复
  • 避开业务使用高峰期进行漏洞修复

16、hw中擅长的工作,经历过哪些hw项目

擅长流量监控和流量分析,根据简历里面的说就行

17、溯源的常见手法包括:

  • 通过安全设备查找攻击者的IP
  • 通过相关网站(如ipwhois、微步、站长之家等)反查手机号和邮箱
  • 利用社交软件或购物平台等信息,描绘出攻击者的画像。

内网问题

1、什么是域控?

        域控(Domain Controller)是指在"域"模式下,负责联入网络的电脑和用户的验证工作的服务器。它可以对域内的机器进行控制,并拥有较高的权限。

2、查找域控可以通过以下方式:

  • 查询网络配置信息:使用命令"ipconfig /all"来查看DNS服务器信息,域控通常也是DNS域名服务器。
  • 使用命令"net time /domain"来查找域控和判断主域。
  • 还可以使用其他网络扫描工具进行寻找和识别。

3、进行内网横向渗透的方法包括:

  • 信息收集:通过命令如"net view"获取同一局域网中的机器列表,"netsh wlan show profiles"查看本机网络配置文件,"net group /domain"查询域内所有用户组列表等。
  • 内网主机的基本信息收集:使用命令如"systeminfo"、“net start”、"tasklist"等来获取系统版本、服务启动情况和进程列表等信息。
  • 网络信息收集:使用命令如"ipconfig /all"、“net view /domain”、"net time /domain"等来获取网络配置、域信息和时间同步情况。
  • 用户和组信息收集:使用命令如"whoami /all"、“net user /domain”、"net group /domain"等来获取域用户信息和组信息。
  • 收集凭据信息:收集各种密文、明文、口令等,为后续横向渗透做好测试准备。

4、内网端口转发失败的原因可能包括:

  • 防火墙策略:目标端口不允许出网。
  • 端口转发工具特征明显,被防火墙或入侵检测系统检测到。
  • 目标端口无法提供服务或不可访问。
  • 端口转发的IP在网络中不可达或被拦截。

5、一些常见的端口转发工具

包括Frp、nc(Netcat)、lcx等。

6、内网端口转发失败的原因

  1. 防火墙策略:目标端口不允许出网,防火墙配置了规则限制该端口的访问。

  2. 端口转发工具特征明显:一些端口转发工具的特征容易被防火墙或入侵检测系统检测到,导致无法正常进行端口转发。

  3. 端口无法提供服务:目标端口所在的服务未启动或无法正常提供服务,导致无法成功进行端口转发。

  4. 端口转发的IP不可访问:转发的目标IP是不可达的或者无法从攻击者控制的机器(肉鸡)访问。

7、cs有了解吗

CobaltStrike(CS)是一个集成化的图形工具,支持Windows和Linux系统使用,集成了提权、端口转发、Office攻击、文件捆绑、钓鱼等功能。它还支持多人协同工作。CS的启动方式包括通过命令行加载"teamserver.bat"和"cobaltstrike.jar"进行启动。

8、黄金票据和白银票据是在Kerberos协议中用于攻击的概念:

  • 黄金票据(Golden Ticket)是通过获取krbtgt的NTLM Hash,伪造TGT和Logon Session Key,进而获取域内其他资源权限的攻击方法。
  • 白银票据(Silver Ticket)是通过伪造TGS(Ticket Granting Service),生成一张可以访问指定服务的TGS,绕过域控制器的验证。它不需要KDC(域控制器)的参与,因此可以绕过域控制器。

8、免杀有了解吗

        免杀是指绕过安全软件和防护机制的技术手段。静态免杀的方式包括替换特征码、替换资源、修改入口点和加壳等。动态免杀的方式包括替换API、重写API、调用顺序修改等。常用的免杀工具包括Metasploit(MSF)和CobaltStrike(CS)。

应急响应问题

1、Linux服务器被上传webshell,如何进行应急:

  • 在网站的根目录下使用下河马或者D盾扫描工具进行扫描,查看是否能够扫描出webshell。
  • 检查网站的web日志,webshell的访问和数据提交记录通常会在日志中留下痕迹,特征为少量IP对该页面发起访问,访问次数较少,该页面可能是孤立的。
  • 检查相关设备的告警流量,查看webshell的名称和路径,然后在服务器上使用find命令进行查找并删除。

2、Hardware期间的应急响应:

  • 首先封堵攻击源IP,根据攻击事件通报信息或报告,封禁攻击源IP地址。
  • 根据攻击事件报告,进行安全事件的处置,包括安全设备策略调整、系统下线、服务器排查、应用排查、加固整改以及系统上线的一系列措施。
  • 上报安全事件,根据攻击行为报告和处置报告,向上级接口人上报攻击事件和威胁处置情况。

3、除了杀进程外,快速找到webshell的方法:

  • 检查相关设备的告警流量,查看webshell的名称和路径,然后在服务器上使用find命令进行查找。
  • 在网站的根目录下使用下河马或者D盾扫描工具进行扫描,查看是否能够扫描出webshell。

4、应急响应的流程:

  • 事件发现和通报
  • 威胁评估和安全策略调整
  • 情报收集和分析
  • 安全事件处置和清除
  • 事件追踪和整理经验教训

5、应急响应常用的工具:

  • 火绒剑
  • D盾
  • 下河马
  • 微步云沙箱

6、查看进程和注册表的工具:

  • 火绒剑可以一键查看进程和注册表。

7、Windows应急响应步骤:

  1. 进程排查:使用"netstat -ano"命令查看当前的网络连接情况,通过PID定位可以根据"tasklist"命令查看运行的进程。
  2. 用户组情况判断:使用"net user"命令查看服务器中的隐藏账户,在注册表"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names"中查找。
  3. 服务相关判断:运行"msconfig"命令打开系统设置,查看服务列表。
  4. 系统启动项排查:使用"msconfig"命令查看系统启动项。
  5. 计划任务创建/删除检测:运行"cmd"命令,使用"schtasks.exe"查看计划任务。
  6. 注册表排查:使用杀软进行注册表排查。
  7. 文件排查:查看最近访问的目录和使用杀毒软件如"D盾"、"下河马"查找webshell、C2后门。
  8. 日志排查:查看Windows登录日志(eventvwr中的4624和4625)和中间件日志,根据源IP、目的URL、时间和响应码进行分析。
  9. 中间件日志排查: 不同中间件有不同日志目录 看源ip目的 url 时间 响应码 可以用工具:360星图日志结尾一般为acess.logo

8、Linux应急响应:

  1. 文件排查:使用命令ls -alt /tmp来查看/tmp目录下的临时文件。
  2. 启动项排查:使用命令ls -alt /etc/init.d/来查看开启启动项的内容。
  3. 查看命令执行记录:可以直接使用history命令或者cat ~/.bash_history来查看命令执行记录。
  4. 用户信息排查:查看/etc/passwd文件来获取用户信息。
  5. 计划任务排查:使用命令crontab -l查看当前的计划任务,判断是否有后门木马程序启动相关信息。
  6. 进程排查:使用命令netstat -antlp来查看进程,并使用ps命令来分析进程,或者使用top命令来查看系统资源占用情况。
  7. 系统登录日志排查:查看SSH日志/var/log/lastlog来查看最近的登录记录,使用命令lastlog来查看系统中所有用户的最近一次登录信息。
  8. 中间件日志查询:例如Apache日志位于/var/log/httpd/,Ngix日志位于/var/log/nginx/。
  9. 后门排查:可以使用工具如GScan或使用命令find来查找河马webshell等后门。

9、勒索病毒处置流程:

  1. 首先了解现状,包括发病时间和系统架构,并确认被感染的主机。
  2. 进行临时处置,对被感染的主机进行网络隔离,禁止使用移动存储设备,并对未感染的主机进行ACL隔离,关闭SSH(对于Linux)和RDP(对于Windows)等远程协议,禁止使用移动存储设备。
  3. 获取样本,对Windows系统进行文件排查、进程排查、系统信息排查和系统日志排查,对Linux系统进行文件排查、进程排查和日志排查。
  4. 进行进一步的处置,对已感染的主机进行断网隔离,等待解密进展,最后重装系统。对未感染的主机进行补丁修复,使用安全软件进行防护,并及时更新病毒库/规则库。
  5. 最后是防御措施,定期打补丁、部署杀软,加强口令策略,并部署流量检测设备。

10、挖矿应急响应:

  1. 判断:
    • 查看CPU占用率,判断是否异常高。
    • 查看天眼的流量分析,是否访问了有危险的网站并下载了挖矿命令。
    • 检查是否有外连或向远程IP的请求,可以使用命令netstat -ano查看所有端口连接情况。
  2. 事件分析:
    • 登录网站服务器,检查进程是否异常。
    • 查看异常进程的服务项,选择可疑服务项并停止服务。
    • 检查计划任务是否存在可疑项。
  3. 临时解决方案:
    • 停止并禁用可疑的服务项。
    • 根据实际存在木马的路径,进行删除。
    • 重启计算机。
    • 使用杀软进行全盘查杀。

11、蠕虫应急响应(借助大量工具)

蠕虫病毒介绍:

        蠕虫病毒是一种自包含的程序(或是一套程序),通常通过网络途径传播。每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序。一些典型的蠕虫病毒包括熊猫烧香病毒、冲击波/震荡波病毒、conficker病毒等。

发生场景:

        管理员在出口防火墙发现内网服务器不断向境外IP发起主动连接,内网环境无法连通外网。

应急响应:

1、分析判断:

  • 在出口防火墙查看服务器内网IP。
  • 将中病毒的主机从内网断开。
  • 登录该服务器,使用D盾_web工具执行以下操作:
    • 查杀病毒。
    • 检查端口连接情况。
    • 可能发现本地在大量地向外网IP发起主动连接。(如下图)

2、蠕虫病毒引起的端口异常:

  • 通过观察端口异常情况,可以跟踪进程ID,找到引起异常服务的主进程,该进程可能在向大量远程IP的端口发送请求,这可能是感染了蠕虫病毒的迹象。

3、使用卡巴斯基病毒查杀工具:

  • 使用卡巴斯基病毒查杀工具对服务器的全盘文件进行查杀。
  • 查杀过程中,可能会发现一些异常文件,这些文件可能是蠕虫病毒的病毒文件。

4、使用多引擎在线病毒扫描网站:

  • 使用一些多引擎在线病毒扫描网站对发现的异常文件进行扫描,以确认服务器感染了哪种蠕虫病毒。

5、下载蠕虫专杀工具进行清查:

  • 根据确认的蠕虫病毒种类,下载相应的蠕虫专杀工具。
  • 使用专杀工具对服务器进行清查和清除病毒操作。

处理过程(简略版):

  1. 异常发现:使用出口防火墙和观察本地端口连接情况,发现大量主动向外网发起连接的异常情况。
  2. 病毒查杀:使用卡巴斯基进行全盘扫描,发现了异常文件。
  3. 确认病毒:使用多引擎在线病毒扫描工具对异常文件进行扫描,确认服务器感染了conficker蠕虫病毒。
  4. 病毒处理:下载conficker蠕虫专杀工具,对服务器进行清查和清除病毒操作,成功清除病毒。

预防措施:

  1. 安装可靠的杀毒软件,并定期进行全盘扫描,确保及时发现和清除病毒。

  2. 避免使用来源不明的软件,并不随意接入未经过病毒查杀的U盘,以防感染病毒。

  3. 定期对Windows系统进行漏洞修复,及时安装官方提供的安全补丁,减少病毒的可利用性。

  4. 定期备份重要文件,确保数据的安全性。备份文件应存储在分离的系统或介质上,以防备份文件也被感染。

天眼问题 

天眼是一个安全监测和威胁情报平台,下面是一些常用的天眼日志检索语法:

  1. dip:被攻击的IP地址
  2. dport:被攻击的端口
  3. sip:源IP地址
  4. sport:源端口
  5. uri:请求的URL地址
  6. data:请求包的正文内容
  7. status:响应包的状态码
  8. host:域名
  9. client_os:系统运算符,可以使用AND(AND或&&或+)、OR(OR或||)、NOT(NOT或!或-)进行逻辑运算

对于内网攻击,可以进行以下处理:

  1. 研判攻击动作,如果是误报情况,可向天眼产品反馈并进行调整(特殊业务触发告警可能会引发误报)。
  2. 核查发起攻击的资产是否失陷,如果发现资产失陷,需要进行应急响应和修复。

对于外网攻击,可以进行以下处理:

  1. 研判攻击动作,如果是误报情况,可向天眼产品反馈并进行调整(特殊业务触发告警可能会引发误报)。
  2. 排除一些特殊IP地址(如网关、CDN和出口IP等),然后在边界设备上实施封禁策略来应对攻击。

天眼界面和服务:

  • 天眼由流量传感器(探针)、文件威胁鉴定器(沙箱)、分析平台和天擎(如果有)组成。
  • 天眼菜单界面包括流量传感器的状态监听、威胁告警、规则配置、策略配置和系统配置等功能。
  • 分析平台提供了威胁感知-告警列表和分析中心-日志检索等功能。

告警类型:包括企图(对目标进行攻击的尝试)、成功(攻击成功导致目标受损)、失陷(目标系统已经被攻击者控制)和失败(攻击尝试未成功)等。

一、判断告警是否是误报

观察攻击来源IP

  • 内网IP:
    • 如果告警流量请求包内有明显的恶意请求,例如包含 “ipconfig”、“whoami” 等,可能表示内网服务器失陷。立即上报给研判组人员进行详细分析。
    • 经确认是由于被访问的内网系统存在业务逻辑问题导致的误报,例如在正常的业务逻辑请求中直接带有SQL语句。此类情况需将误报告警上报给研判人员,由专家和甲方客户确认系统是否存在该业务逻辑问题,并确认告警的源IP在告警的时间段附近是否有操作记录。
  • 外网IP:
    • 根据请求包和响应包的数据内容进行对比。例如,如果请求包内包含恶意语句,如执行SQL语句 (select version 等),则可以判定此攻击为恶意攻击。

二、处理内网挖矿告警

  1. 内网挖矿告警的处理

    • 大部分内网挖矿告警属于情报告警,误报率较高,可能是由内部员工使用盗版软件或系统导致。需谨慎处理,确保不漏过任何告警。
    • 将此类告警上报研判人员进行进一步验证。
  2. 判断是否被挖矿

    • CPU占用率:检查服务器或PC的CPU占用率是否接近或超过100%,并持续高居不下,导致操作延缓。
    • 访问不受信任的地址:观察服务器或PC是否访问不受信任的主机、IP、域名,通常挖矿需要从不受信任的地址下载初始化程序。
    • 异常或恶意文件、进程或服务:检查服务器或PC是否新增异常或恶意文件、进程或服务,尤其是保存在TMP目录中的文件。
    • 定时任务变更:观察服务器或PC的定时任务是否发生变更。
  3. 确认被挖矿

    • 当服务器或PC的资源(CPU)使用率持续高居不下,接近或超过100%,导致操作延缓时,可以判定为被挖矿的状态。
    • 其他常见挖矿特征包括:访问不受信任的地址、新增异常或恶意文件/进程/服务、定时任务变更等。

确认被挖矿的方法

  1. 资源使用率:

    • 当服务器或PC的CPU使用率接近或超过100%,并持续高居不下,导致服务器或PC操作延缓时,可以判定为被挖矿的状态。
  2. 服务器或PC访问不受信任的地址:

    • 观察服务器或PC是否访问过不受信任的主机、IP、域名。大部分挖矿活动需要从不受信任的地址下载初始化程序。不受信任的来源可能包括第三方情报结构或企业内部历史数据沉淀。
  3. 异常或恶意文件、进程或服务:

    • 检查服务器或PC是否新增了异常或恶意的文件、进程或服务,特别是保存在TMP目录(暂存文件目录)中的文件。
  4. 定时任务变更:

    • 观察服务器或PC的定时任务是否发生变更,异常的定时任务可能与挖矿活动相关。

三、判断SQL注入攻击是否成功:

  • 根据请求包和响应包对比判断。
  • 检查请求包内是否包含SQL语句,如"SELECT version"。
  • 检查响应包内是否有数据库版本等执行成功的回显。
  • 若以上条件满足,则判定SQL注入攻击成功。

四、判断文件上传攻击是否成功:

  • 根据请求包和响应包对比判断。
  • 筛除状态码为404的情况。
  • 检查响应包状态码为200或302的情况。
  • 检查请求包内的文件名是否为恶意脚本文件名称。
  • 检查请求包正文内容是否包含恶意脚本内容。
  • 观察响应包内容。
  • 若满足以上条件,则判定文件上传攻击成功。

五、判断命令执行攻击是否成功:

  • 根据请求包和响应包对比判断。
  • 检查请求包内是否包含系统命令,如"ipconfig"。
  • 检查响应包回显是否含有相关内容,如IP地址。
  • 若满足以上条件,则判定命令执行攻击成功。

六、判断XSS攻击是否成功:

  • 根据请求包和响应包对比判断。
  • 检查请求包插入的脚本是否在响应包内。
  • 将响应包的正文复制出来,放到HTML文档内,并使用浏览器打开。
  • 检查是否有弹窗等攻击效果。
  • 若满足以上条件,则判定XSS攻击成功。

七、判断SSRF攻击是否成功:

  • 若可以进行漏洞验证,则进行复现验证。
  • 若无法进行漏洞验证,则查看日志,检查是否有与目标的流量交互。
  • 若有流量交互,则应判定为攻击成功。

八、分析天眼设备上的大量告警:

  • 根据轻重缓急进行筛选和查看。
  • 从高危到低危、从命令执行到目录遍历等排序查看。

九、关于天眼的误报率:

  • 相对于其他厂商的设备来说,天眼的误报率不高。
  • 大部分规则较为准确,但难以检测0day攻击。

十、当遇到一条恶意链接告警时,如何判断是否攻击成功?

  • 根据访问恶意链接的请求包和响应包进行判断。
  • 检查请求包中的URL是否包含恶意链接的特征。
  • 检查响应包中是否存在与恶意链接相关的攻击回应,如恶意脚本的执行。
  • 若满足以上条件,则可以判定恶意链接攻击成功。

十一、如何判断DDoS攻击是否正在进行中?

  • 监测网络流量情况,特别是对目标服务的流量。
  • 检查流量模式,是否出现异常的高流量峰值。
  • 分析流量来源和目标,判断是否有异常的请求集中于特定目标。
  • 若有异常的高流量并集中于特定目标,则可以判定DDoS攻击正在进行中。

十二、判断恶意文件下载攻击是否成功:

  • 检查下载文件的请求包和响应包。
  • 检查响应包的状态码是否为200,表示下载过程成功。
  • 分析下载文件的内容,检查是否为恶意文件,如病毒、木马等。
  • 若下载成功并且文件为恶意文件,则可以判定恶意文件下载攻击成功。

十三、如何判断网络钓鱼攻击是否成功:

  • 检查钓鱼网站的URL和页面内容。
  • 比对钓鱼网站与正规网站的差异,包括域名、页面布局、品牌标识等。
  • 检查用户行为是否受到钓鱼网站的诱导,如输入用户名密码、敏感信息等。
  • 若用户受到钓鱼网站的诱导并透露了敏感信息,则可以判定网络钓鱼攻击成功。

十四、天眼日志检索常用的语法包括:

  • dip:被攻击的IP
  • dport:被攻击的端口
  • sip:源IP
  • sport:源端口
  • uri:请求的URL地址
  • data:请求包的正文内容
  • status:响应包的状态码
  • host:域名

常用语法示例:

  • dip: “192.168.1.100”:检索被攻击IP为192.168.1.100的日志
  • uri: “/login”:检索包含请求URL地址为/login的日志
  • status: 200:检索响应状态码为200的日志

十五、天眼或者流量传感器上出现webshell木马使用告警,应对的步骤:

  1. 验证告警是否真的成功,查看webshell工具的流量特征,是否存在使用痕迹。
  2. 判断是手工攻击还是扫描工具批量行为,分析并比对攻击流量的特征,是否有大量请求。
  3. 进入分析平台,进一步检查攻击IP是否存在其他攻击行为,以及评估攻击的结果。
  4. 溯源攻击者的方式,如何将木马写入系统。

十六、天眼或者传感器上出现命令执行告警,应对的步骤:

  1. 验证告警是否成功,直接分析是否有命令执行的迹象。
  2. 判断是手工攻击还是扫描工具批量行为,分析并比对攻击流量的特征,是否有大量请求。
  3. 进入分析平台,进一步检查攻击IP是否存在其他攻击行为,以及评估攻击的结果。
  4. 将发现时间及攻击行为反馈给护网客户。

十七、如果发现内网IP发起攻击,应对的步骤:

  • 当内网IP发起攻击时,表示可能存在内网主机被入侵的情况,应采取以下措施:
  1. 立即将相关IP地址上报给研判组人员,进行进一步分析调查。
  2. 检查受影响的内网主机,确保其得到及时的修复和恢复。

十八、流量分析经验总结

  1. 内网攻击莫忽视:在流量分析过程中,不要忽视内网的攻击行为。内网攻击可能是来自恶意软件、僵尸网络或内部威胁等,及时发现和响应内网攻击至关重要。

  2. 企图告警需排查:当发出告警信号时,需要仔细排查可能的企图行为。不仅要关注被攻击的目标,还要查看攻击者的来源、攻击方法和可能的目的,以便更好地理解攻击行为。

  3. 爆破行为也要看:流量分析中,应关注任何爆破行为,例如密码爆破、SSH登录尝试或者弱密码登录等。这些行为可能是入侵的预兆,需要立即采取措施防范和应对。

  4. 成功失陷追仔细:当发现系统或网络已被攻破时,一定要进行仔细的追踪和调查。分析攻击者的行为,了解攻击方式和目的,修复漏洞并加强安全措施,以防止再次遭受攻击。

最近发现的漏洞

  1. F5身份验证绕过漏洞:F5是一家网络设备和应用交付解决方案提供商,该漏洞可能导致身份验证机制被绕过,攻击者可以利用此漏洞获取未授权的访问权限。

  2. Struts2 S2-062远程命令执行漏洞:Struts2是一个流行的Java Web应用程序开发框架,该漏洞可能允许攻击者通过发送恶意请求执行任意命令,进而控制受影响的服务器。

  3. Spring Framework远程命令执行漏洞:Spring Framework是一个Java应用开发框架,该漏洞可能允许攻击者通过发送特制的请求执行任意命令,从而导致服务器受到攻击。

  4. Apache Log4j漏洞(去年):Apache Log4j是一个常用的Java日志记录框架,该漏洞(具体指CVE-2021-44228)可能允许攻击者通过构造恶意的日志消息远程执行任意代码,影响广泛,需要及时修复。

网络相关知识

1、CDN(内容分发网络):

        CDN全称为内容分发网络,它的主要原理是通过部署位于全球各地的服务器节点,让用户能够就近获取所需的数据,从而提高数据传输的速度和稳定性。举个例子,如果服务器位于北京,深圳的用户要获取数据就需要跨越较远的距离,但通过在深圳建立CDN服务器,用户可以先访问CDN服务器来获取数据,从而提高访问速度。

2、检测网站是否开启CDN:

        可以使用多地ping服务,查看对应的IP地址是否唯一。如果不唯一,那么极有可能该网站正在使用CDN。

3、CDN查询真实IP:

        当我们在浏览器中输入一个域名时,首先需要将域名转换为IP地址,这就是DNS服务的功能。DNS服务器会递归地查询域名,找到对应的IP地址。通过查询CDN的真实IP地址,可以了解底层服务器的位置。

4、永恒之蓝漏洞:

        永恒之蓝漏洞是利用Windows系统的SMB协议漏洞来获取最高权限。该漏洞使攻击者能够执行任意代码,从而控制被入侵的计算机。攻击者可以通过扫描开放445文件共享端口的Windows机器来利用该漏洞。

5、TCP三次握手与四次挥手:

        TCP是一种面向连接的协议,用于在网络中传输数据。三次握手是建立TCP连接的过程,而四次挥手是关闭TCP连接的过程。三次握手包括客户端发送SYN请求,服务器发送SYN和ACK响应,和客户端发送确认信息。四次挥手则包括客户端发送释放信号,服务器发送确认和释放信号,和客户端发送确认信息,最终关闭连接。

  • 16
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值