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

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

一句话木马

【基本原理】

利用文件上传漏洞,往目标网站中上传一句话木马,然后可以通过中国菜刀chopper.exe来获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示将括号内的语句字符串作为代码执行。$_POST['attack']表示从页面中获取名为"attack"的参数值。

主要的Web漏洞

Sql注入

原理: 网站数据过滤不严格,过分信赖用户输入的数据,没有过滤用户输入的恶意数据,无条件地将用户输入的数据作为SQL语句执行,导致sql注入漏洞产生。

Sql注入分类:

  • 以有无闭合字符分类:字符型、整数型
  • 以数据传输方式分类:POST类型、GET类型
  • 注入方式细分:联合查询注入、报错型注入、布尔型盲注、时间型盲注、宽字节注入

报错注入常用函数:

  • UpdateXML()
  • Floor()
  • Extractvalue()

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

  • Information_schema

时间型盲注

特点: 用于无数据回显、无报错、布尔型盲注失效情况下的场景。在时间型盲注中,页面没有明显的回显,只能根据页面刷新时间的长短来判断构造语句是否正确。

常用函数: sleep()函数、if条件语句等。

易受网络波动影响。

布尔型盲注特点:
布尔型盲注是一种通过判断页面的正确和错误状态来猜测构造语句是否正确的注入方式。根据页面的响应情况,可以推断出数据库中存储的数据是否符合构造的条件。

常用函数:

  • length(): 用以猜测数据返回字符串的长度
  • substr(): 截取字符串
  • mid(): 取出字符串的一部分值
  • left(): 取出字符串左边的几个字符
  • ascii(): 返回一个字符的ASCII码值

SQL手注的一般步骤:

  1. 判断注入点
  2. 判断注入类型
  3. 判断注入点提交方式
  4. 使用order by语句查询数据库中有多少字段
  5. 使用联合查询来查询信息,如 union select User()(当前用户)、union select Database()(数据库)、union select Version()(数据库版本)
  6. 查询数据库中的表、列和值

宽字节注入:

宽字节注入利用某些编码方式进行绕过,一些WAF在提交数据前可能会加入\,通过将\编码为%5c,再添加%df进行编码后变为一个繁体汉字運,从而绕过单引号的闭合,逃逸转义的限制。

SQL注入绕WAF姿势:

  1. 函数大小写混合绕过: 利用服务器端未开启大小写不敏感的特点,进行大小写混合使用。
  2. 多重关键字绕过: 利用服务器端检测到敏感字符时进行替换为空的特点,使用多个关键字拼接在一起绕过检测。
  3. 编码绕过: 利用服务器端未检测或检测不严格具有编码形式的关键字,如十六进制编码、URL编码、Unicode编码。
  4. 注释绕过: 利用服务器端未检测或检测不严格注释内的字符串,注释形式包括/**//*!*//*!12345*/#-- -等。
  5. 等价函数或命令绕过: 利用服务器端黑名单不完整或过滤不严格的特点,使用与原函数或命令等价的形式进行绕过。例如,使用union distinct替代unionupdatexmlextractvaluefloor等。

MySQL查询相关函数:

  • union:联合查询多个结果集。
  • distinct:去除重复的行。
  • updatexml:在XML类型的列中更新节点的内容。
  • extractvalue:从XML类型的列中提取指定节点的值。
  • floor:返回不大于给定数字的最大整数。

字符串截取函数:

  • mid:从指定位置开始截取字符串的一部分。
  • substr:截取字符串的一部分。
  • substring:截取字符串的一部分。
  • left:截取字符串的左边指定长度的部分。
  • reverse:将字符串倒转。

字符串连接函数:

  • concat:将多个字符串连接成一个字符串。
  • group_concat:将多个字符串连接成一个字符串,并以指定分隔符分隔。
  • concat_ws:将多个字符串连接成一个字符串,并以指定分隔符分隔。

字符串转换函数:

  • char:将数字转换为对应的字符。
  • hex:将字符串转换为十六进制表示。
  • unhex:将十六进制表示转换为字符串。

替换逗号:
将以下内容中的逗号替换为指定的内容:

  • limit 1 offset 0
  • mid(version() from 1 for 1)

替换等号:
将等号替换为指定的内容:

  • like

6. 特殊符号绕过:

  • 绕过原因:数据库中效果相同,服务器端却没有限制。
  • 形式:
    • 科学记数法 and 1e0 = 1e0
    • 空白字符 %0a %a0 %0b %20 %09
    • 反单引号 table_name
    • 括号 select * from (test.admin)

7. 组合绕过:

  • 可以绕过原因:服务器端检测多处位置,需要多重绕过方式组合使用。
  • 形式:id = 1’ and//‘1’like’2’///!12345union/select 1,2,3

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

  • 和数据库有数据交互的网站,比如一些使用PHP、ASP等动态脚本编写的网站。
  • 伪静态网站,虽然看起来是HTML网站,但实际上是动态网站与数据库有数据交互。

SQL注入漏洞挂马利用成功的条件(SQL注入挂马):

  1. 支持联合查询。
  2. 知道网站的绝对路径。
  3. 上传马的路径允许写入文件。
  4. 木马上传后能够被解析执行。
  5. 能够找到上传后的木马位置。

当您发现一个网站存在SQL注入漏洞时,您会如何进行挂马?

  • 您会通过手工注入的方式和SQLMap工具进行挂马。

手工注方式挂马用到的函数:

  • union, select, into outfile

SQLMap挂马用到的参数和原理:

  • 参数:–os-shell。原理:SQLMap内置了一个方法select * into dumpfile,可以将结果写入一个文件。

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

  • 利用SQL注入漏洞进行数据读取,通常是读取用户数据或者网站后台数据。
  • 利用SQL注入挂马获取服务器权限。

如何挖掘SQL注入漏洞?

  • 首先会判断网站是否为动态网站,然后可以使用手工注入或SQLMap工具进行扫描。
  • 使用手工注入时,尝试使用敏感字符进行测试,找出闭合字符,根据页面状态选择注入模式(如联合查询),然后判断列数、显示位,获取当前数据库、表名、列名以及字段。

SQL注入漏洞如何修复?

  • 过滤恶意字符和函数(如select, union, order by)。
  • 过滤或转义单引号和双引号。
  • 使用参数化的语句来传递用户输入的变量。

请注意,SQL注入是一种严重的安全漏洞,修复措施应该由专业的安全人员来实施。以上提供的信息仅供参考。

Sql预编译原理(PreparedStatement)

  • PreparedStatement是java.sql中的一个接口,是Statement的子接口。
  • 在创建PreparedStatement对象时,即指定SQL语句,立即发送给DBMS进行编译。
  • 执行预编译语句时,DBMS直接运行编译后的SQL语句,提高处理性能。

Sql注入getshell

  • 利用outfile函数或–os-shell方式获取webshell权限。
  • 利用条件包括具有写权限的web目录、能够使用单引号、知道网站的绝对路径、secure_file_priv未设置具体值。

文件上传漏洞

1、文件上传漏洞原理

  • 开发人员未在文件上传点对文件名和文件内容做严格的过滤,导致用户可以上传恶意脚本到服务端。

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

  • 一般上传符合网站语言环境的一句话、冰蝎、大马等恶意脚本。

3、文件上传绕WAF方式

  • 绕过黑名单(大小写绕过)。
  • 绕过白名单%00截断(可以配合中间件漏洞)。
  • 绕过前端验证(burp抓包修改Content-Type为允许的字段)。
  • 对文件内容进行绕过。

4、文件上传常用方式

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

5、文件上传漏洞防护

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

6、文件上传绕WAF

  • 文件名大小写绕过,使用像AsPpHp等文件名绕过黑名单检测。
  • 名单列表绕过,使用黑名单中没有的文件名,如asacer等。
  • 特殊文件名绕过,将文件名改成test.asp.test.asp_等,利用操作系统的特性绕过验证。
  • 通过上传.htaccess文件来绕过各种检测。
  • 使用特殊的文件写入方法,如使用1.php:jpg来写入恶意代码。
  • 利用截断绕过上传,如将.jpg中的空格二进制20改为00。
  • 还有一些图片木马之类的,需要结合文件包含漏洞来解析

文件包含漏洞

1、文件包含漏洞原理

  • 文件包含是指在程序编写过程中,为了减少重复的代码编写操作,将重复的代码采取从外部引入的方式。
  • 如果包含的文件被攻击者控制,就可以通过包含精心构造的脚本文件来获取控制权。
  • 包含命令主要有includeinclude_oncerequirerequire_once

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

  • 本地文件包含只能包含本地的文件。
  • 远程文件包含可以从其他服务器加载文件,前提是PHP配置选项allow_url_include为ON。

3、includeinclude_oncerequirerequire_once这几个函数区别

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

4、文件包含漏洞修复

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

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漏洞的认识,加强安全意识。

CSRF漏洞(跨站请求伪造)

1、CSRF原理及修复

  • 原理:利用受害者尚未失效的身份认证信息(如cookie、会话等),诱骗其点击恶意链接或访问包含攻击代码的页面。然后,受害者在不知情的情况下以受害者的身份向服务器发送请求,完成非法操作。
  • 修复方法:
    • 验证HTTP头的Referer:只响应Referer头带有本域的请求。
    • 请求地址中添加Token验证:在请求参数或表单中添加一个随机生成的Token,服务器验证请求是否带有有效Token。
    • 使用Local Storage和Session Storage保存会话:将会话信息存储在客户端,而不是依赖于Cookie。

2、CSRF的类型

  • GET请求型CSRF:只需要构造URL,然后诱导受害者访问该URL。
  • POST请求型CSRF:构造自动提交的表单,诱导受害者访问或点击该表单。

3、CSRF的危害

  • 利用受害者身份发送邮件、发消息、盗取受害者的账号等。

4、与XSS的区别

  • CSRF和XSS都属于Web应用程序的安全漏洞,但它们的实际攻击方式和目标有所不同:
    • CSRF利用用户的身份认证信息来伪造受害者的请求,目标是攻击后台接口和功能。
    • XSS则是通过注入恶意脚本来攻击用户的浏览器,目标是窃取用户的信息或实施其他恶意行为。

5、与SSRF的区别

  • CSRF(跨站请求伪造)是指攻击者盗用你的身份,以你的名义发送恶意请求,比如发送电子邮件、盗用账户、购买商品等。
  • SSRF(服务器端请求伪造)是指大型网站或Web应用提供了从其他服务器获取数据的功能,攻击者利用有漏洞的Web应用作为代理进行远程攻击。

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

1、原理:

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

2、修复方法:

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

3、利用方式:

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

4、绕过姿势:

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

XXE漏洞(外部实体注入)

1、原理:

  • 配置不当的XML处理器会对外部实体进行引用。
  • 攻击者可以通过上传有恶意内容的XML文档来利用易受攻击的代码攻击XML处理器。

2、利用方式:

  • 任意文件读取。
  • 系统命令执行。
  • 内网端口探测。
  • 攻击内网网站。
  • 钓鱼攻击。

3、修复防御:

  • 使用开发语言提供的禁用外部实体的方法。
  • 过滤提交的XML数据,避免包含敏感关键字如SYSTEM

逻辑漏洞

1、原理:

逻辑漏洞是指攻击者利用业务或功能上的设计缺陷,从而获取敏感信息或破坏业务的完整性。它通常涉及对系统逻辑的错误理解或绕过,使攻击者能够执行不符合预期的操作。

2、越权:

越权是一种常见的逻辑漏洞,其本质是失效的访问控制,即未对通过身份验证的用户实施恰当的访问控制。越权访问的原理在于对客户端请求的数据遗漏了权限的判定,验证不充分导致越权漏洞的出现。一般分为以下两种分类:

  1. 水平越权:未经验证的用户可以访问和操作其他同等权限的账号。相同权限的用户之间可以相互越权访问。
  2. 垂直越权:未经验证的用户可以访问和操作权限更大的账号。低权限用户可以访问到高权限用户的资源。

3、常见的逻辑漏洞:

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

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

4、普通的安全加固手段:

针对逻辑漏洞,常见的安全加固手段包括:

  1. 关闭不常用的端口和服务,以减少攻击面。
  2. 开启防火墙,限制网络流量,不允许外部USB设备的插入。
  3. 数据库不允许匿名登录,使用强密码进行访问控制。
  4. 对可控参数进行严格的检查和过滤,以防止越权访问和恶意输入。

命令执行漏洞

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. 定期更新和维护:及时更新和修补应用程序中使用的各种库和框架,以确保已知的漏洞得到修复,从而降低命令执行漏洞的风险。

反序列化漏洞

1、原理

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

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

2、常用函数

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

3、常用的魔术方法

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

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

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

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工具的问题,以下是菜刀、冰蝎、蚁剑和哥斯拉的流量特征:

2023年网络安全面试题:详细答案解析与最佳实践分享_第1张图片  

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

2023年网络安全面试题:详细答案解析与最佳实践分享_第2张图片

2023年网络安全面试题:详细答案解析与最佳实践分享_第3张图片 

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发起主动连接。(如下图)

2023年网络安全面试题:详细答案解析与最佳实践分享_第4张图片

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响应,和客户端发送确认信息。四次挥手则包括客户端发送释放信号,服务器发送确认和释放信号,和客户端发送确认信息,最终关闭连接。

你可能感兴趣的:(网络安全,web安全,安全)