渗透测试问题概览(精简版)

常见的WEB漏洞 

一、一句话木马

1、基本原理:

利用文件上传漏洞将恶意代码上传到目标服务器,实现远程控制目标网站。

2、连接工具:

中国菜刀、蚁剑、冰蝎等常用工具可用于连接和控制被植入的一句话木马。

3、防御措施:

  • 及时更新和升级操作系统的应用程序,修复已知漏洞。
  • 强化文件上传验证和过滤机制,限制文件类型、大小及访问路径。
  • 定期巡查和安全扫描服务器,及时处理异常情况。
  • 用户账号进行权限管理,避免滥用和未授权访问。
  • 配置防火墙和入侵检测系统,监控和阻止异常网络流量。

二、SQL注入漏洞

1、SQL注入漏洞原理

  • 用户的输入缺乏正确的输入验证
  • 字符串拼接方式构建SQL语句
  • 对用户的输入缺乏过滤和转义

2、SQL注入防御、修复漏洞

  • 使用参数化查询或预编译语句
  • 输入验证和过滤
  • 最小权限原则(在数据库上设置最小权限,在保证用户有权限执行必要的操作外,没有其他多余的权限)
  • 代码审计和漏洞扫描
  • 避免显示详细的错误信息 

3、SQL注入分类

  • 基于错误注入
  • 基于联合查询的注入
  • 基于时间延迟、布尔盲注的注入
  • 叠对查询注入
  • 基于批处理注入

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

  • MySQL默认存在的数据库是 information_schema 。它是MySQL提供的一个系统数据库,用于存储关于数据库对象(如表、列、约束等)的元数据信息。

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

  • 函数大小也混合绕过:如将"UNION"改为"UnIoN"。
  • 多重关键字绕过:如,将关键字"UNION SELECT"改为"UNI//ON SEL//ECT"。
  • 编码绕过:如,使用十六进制编码、URL编码、Unicode编码等方式将关键字"UNION SELECT"进行转换
  • 注释绕过:常见的注释符号包括/**/、/!/、/!12345/、#、-- -、--+等。
  • 等价函数或命令绕过:如,将关键字"UNION SELECT"改为"UNION DISTINCT",或者使用其他类似的函数和命令替代,如updatexml、extractvalue、floor等。

6、一般的SQL手注步骤

  • 判断注入点(使用单/双引号判断,并判断闭合符)
  • 判断注入类型(是报错注入还是盲注之类的)
  • 判断注入点提交方式(GET或POST之类的)
  • 使用ORDER BY 语句查询数据库中的字段数量
  • 使用联合查询构造攻击payload (一般步骤是查询库、表、字段、字段值)

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

  • 动态网站:使用像PHP、ASP等动态脚本编写的网站
  • 伪静态网站:伪静态网站看起来是静态HTML网页,但实际上背后仍然是通过动态脚本与数据库进行交互的网站
  • CMS网站(内容管理系统):许多CMS网站使用数据库来存储和管理内容。

8、SQL注入漏洞挂马成功的前提条件

  • 支持联合查询
  • 知道网站的绝对路径(注入后木马文件的存放路径)
  • 木马上传后能够被解析执行

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

  • 获取敏感信息
  • 挂马获取服务器权限

 三、文件上传漏洞

1、文件上传漏洞原理:

由于开发人员在文件上传功能中未对文件名和内容进行严格的过滤和验证,导致攻击者可以上传恶意脚本到服务端。

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

  • 小马(一句话木马或带有上传文件功能脚本):限制,需要用到一些连接工具(菜刀、蚁剑)才能使用
  • 大马(功能比较全的恶意脚本)
  • CS或metasploit制作的木马
  • 病毒文件

3、文件上传绕过WAF方式

  • 绕过黑名单(大小写绕过):例如,将 ".php" 替换为 ".pHp" 或 ".PHp
  • 绕过白名单%00截断绕过:通过在文件名后添加 %00,可以欺骗WAF,使其认为文件类型符合白名单要求。(这种方法利用了截断的漏洞,使得WAF无法正确解析文件)
  • 绕过前端验证:可以使用代理工具(如Burp Suite)截获上传请求,并更改请求中的Content-Type字段,将其修改为允许的文件类型,从而绕过前端验证。或直接在浏览器禁用JavaScript语言。
  • 对文件内容进绕过:例如,使用 Base64 编码对恶意代码进行转换,然后在服务器端解码执行。
  • 特殊文件名绕过:将文件名如:test.php改成test.php. 或test.php_
  • 上传 .htaccess 文件:上传.htaccess文件可以绕过一些检测,因为.htaccess文件可以用来配置服务器行为。
  • 特殊的文件写入方法:使用特殊的文件写入方法,如使用1.php:jpg来写入恶意代码
  • 结合文件包含漏洞:利用文件包含漏洞来解析上传的图片木马等恶意代码。这种方法可以绕过一些检测,因为WAF可能只检测文件上传而不检查文件包含漏洞。(前提是你能找到文件包含漏洞)

4、文件上传上传常用方式

服务器是IIS

  • 通常会上传asp或asp后缀类型的马,若上传asp脚本文件失败,可以尝试将文件后缀名改为asa、cdx或cer进行上传,或者是因为IIS服务器开启了文件后缀控制功能

服务器是Apache

  • 通常会上传php后缀类型的马

服务器使用Tomcat中间件

  • 通常会上传jsp后缀类型的马

服务器使用WebLogic中间件

  • 通常会上传jsp后缀类型的马

服务器使用Nginx

  • 通常会上传php后缀类型的马

5、文件上传漏洞防护

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

四、文件包含漏洞

1、文件包含漏洞原理

在程序开发中,为了减少代码的冗余和提高代码的可维护性,开发人员通常会使用文件包含机制,将一些重复的代码片段或外部文件引入到主程序中。

2、远程文件包含(RFI)和本地文件包含(LFI)的区别

  • 来源不同:

    • 远程文件包含:文件来源于远程服务器。
    • 本地文件包含:文件来源于本地文件系统
  • 影响范围不同:

    • 远程文件包含:可以执行远程服务器上的代码,可能导致远程命令执行、跨站脚本等攻击。
    • 本地文件包含:可以访问本地文件系统上的敏感文件,可能获取配置文件、用户数据等敏感信息。
  • 操作方式不同:

    • 远程文件包含:通过构造恶意的URL,将远程服务器上的文件引入到目标应用程序中执行。
    • 本地文件包含:通过构造恶意请求,利用应用程序对文件路径的包含或引用机制获取本地文件系统上的文件。

3、includeinclude_oncerequirerequire_once这几个函数区别

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

4、文件包含漏洞修复

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

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

1、XSS漏洞原理

当应用程序没有对用户提交的内容进行验证和重新编码,而是自己呈现给网站访问者时,就可能触发XSS攻击。

2、XSS漏洞防护手段

  • 过滤用户输入的危险字符
  • 限制用户输入的内容长度
  • 对页面HTML进行实体编码
  • 使用白名单进行验证,仅允许特定的HTML标签和属性,禁止其他标签与属性的使用
  • 对于反射型和存储型XSS,可以在数据返回客户端浏览器时,将敏感字符进行转义。
  • 对于DOM型XSS,可以使用上下文敏感的数据编码。

3、XSS类型和危害

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

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

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

5、XSS防护措施

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

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

1、CSRF漏洞原理

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

2、CSRF修复方法

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

3、CSRF攻击类型(常见的就是GET与POST)

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

4、CSRF攻击的危害

  • 非法操作:攻击者可以利用受害者的身份进行各种非法操作,列如:发送恶意邮件、发布虚假信息、修改个人资料或删除重要数据等。这可能导致信息泄露、社交工程攻击、声誉损失或财务损失。
  • 盗取用户账户:通过诱导受害者点击恶意链接或访问包含攻击代码的页面,攻击者可以在不知情的情况下面盗取受害者的账号信息。这使得攻击者能够以受害者的身份登录并访问其敏感信息,从而进一步滥用和利用这些信息。
  • 数据篡改:CSRF攻击还可以导致数据篡改或劫持。攻击者可以通过构造恶意请求来修改受害者的个人数据、订单信息、支付金额等,从而造成混乱、损失和破坏。
  • 信任破坏:一旦用户意思到自己的账号或信息被攻击,他们可能对受影响的网站或服务产生怀疑和不信任。这会个企业的声誉和客户关系带来负面影响。

5、CSRF与XSS的区别

攻击目标不同:

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

攻击方式不同:

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

影响范围不同:

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

防御措施略有差异:

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

6、CSRF与SSRF的区别

攻击方式不同:

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

攻击目标不同:

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

影响范围不同:

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

防御措施略有差异:

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

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

1、SSRF漏洞原理

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

2、SSRF漏洞修复方法

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

3、SSRF漏洞利用方式

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

4、SSRF漏洞绕过姿势

  • 进制转换IP绕过黑名单
  • 在URL中使用@嵌入凭据绕过白名单
  • 使用302跳转绕过限制(302跳转是一种常见的HTTP重定向方式,通常用于将用户从一个URL重定向到另一个URL)
  • 利用DNS重绑定攻击

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

1、XXE漏洞原理

  • XXE漏洞(XML外部实体注入漏洞)利用了配置不当的XML处理器在解析XML文档时对外部实体的引用。攻击者可以通过删除包含恶意内容的XML文档来对易受攻击的XML处理器进行攻击。
  • 简单来说,XXE漏洞的原理是由于XML处理器未正确配置,导致攻击者能够向XML文档中注入恶意代码或实体引用,从而获取敏感信息或进行拒绝服务攻击。

 2、XXE漏洞利用方式

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

3、XXE漏洞修复

  • 使用安全的XML解析器
  • 禁用外部实体引用
  • 对用户的输入进行验证和过滤
  • 使用白名单机制限制解析过程中允许解析的外部资源
  • 遵循安全的编码实践,如:避免将敏感信息存储在XML文档中、使用对输入进行充分验证的API等

九、逻辑漏洞

1、逻辑漏洞原理

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

2、常见的逻辑漏洞

  • 越权:指的是未经恰当访问控制的身份验证,导致攻击者可以越过权限限制进行访问或操作。越权漏洞可分为水平越权和垂直越权两种类型。水平越权:即相同权限级别的用户直接可以相互越权访问,这种情况可能导致隐私泄露或非法操作。垂直越权:即低权限用户能够访问高权限用户的资源,从而可能获取敏感信息或执行限制性操作。(如:普通用户访问了管理员才能看到的敏感信息或执行了管理员才能使用的操作)
  • 支付逻辑漏洞:指支付过程存在设计缺陷和判断错误,导致攻击者能够以不当的方式获取货币或物品
  • 短信逻辑漏洞(短信轰炸):由于短信业务逻辑设计缺陷,未对短信发送次数做限制,导致攻击者可以无限制地发送短信,造成骚扰或增加运营商短信费用。
  • 命令执行漏洞:指攻击者可以利用系统命令执行函数(如:php中的system、exe、shell-exec等)执行恶意代码或系统命令,从而获取系统权限或访问敏感数据。
  • 代码执行漏洞:指攻击者可以执行后端脚本命令(如:php的脚本)的漏洞,从而执行恶意代码并获取系统权限或敏感数据。

3、逻辑漏洞修复

  • 关闭不常用的端口和服务
  • 开启防火墙,限制网络流量:配置防火墙规则,限制进入和离开网络的流量,仅允许合法的网络通信,阻止恶意流量的传输。此外,不允许外部USB设备的插入可以防止恶意软件通过可移动介质传播(关闭windows自动播放功能)。
  • 数据库访问控制:不允许匿名登录,限制用户对数据库的权限,确保只有授权用户能进行合法的操作。
  • 对用户输入内容进行过滤与验证:如对输入的长度、类型、格式等进行验证,以防止恶意输入和越权访问。

 十、命令执行漏洞

1、命令执行漏洞原理

命令执行漏洞是指在程序应用中使用了能够执行系统命令的函数,攻击者可以通过构造恶意输入来执行任意代码或系统命令,甚至控制整个网站或服务器,甚至进一步进行内网渗透。

2、命令执行漏洞利用与危害

  • 执行任意代码
  • 读取敏感文件
  • 反弹shell (在Windows系统中,常见的shell是Command Prompt(命令提示符))
  • 控制网站或服务器
  • 内网渗透(就是攻击内部网络)

3、命令执行漏洞修复

  • 尽量避免执行外部指令
  • 使用自定义函数或函数库代替危险函数
  • 处理命令参数使用转义函数
  • 定期更新和维护应用程序已使用到的各种库和框架

十一、反序列化漏洞

1、反序列化漏洞原理

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

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

2、反序列化漏洞常用函数

在PHP中,常用的序列化和反序列化函数有:

  • serialize():将对象或数组序列化为字符串。
  • unserialize():将序列化的字符串还原为对象或数组。此函数如果在处理不可信任的数据时没有适当的验证和过滤,可能导致反序列化漏洞。

在Python中,常用的序列化和反序列化函数有:

  • pickle.dumps():将对象序列化为字节流。
  • pickle.loads():将序列化的字节流还原为对象。与PHP中的unserialize()类似,如果未对pickle.loads()接收到的不可信任数据进行适当的验证和过滤,可能存在反序列化漏洞。

在Java中,常用的序列化和反序列化函数有:

  • ObjectOutputStream.writeObject():将对象序列化为字节流。
  • ObjectInputStream.readObject():将序列化的字节流还原为对象。如果在处理来自不可信任源或网络接收到的数据时,未经适当的验证和过滤,使用ObjectInputStream.readObject()可能导致反序列化漏洞。

3、反序列化漏洞常用的魔术方法

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

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

web漏洞部分建议尽量记忆,因为面试可能会问到,其他的了解即可。

相关知识补充 

一、shell与反向shell

1、shell

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

2、反向shell

反向Shell 则是指攻击者在目标系统上成功植入了恶意代码,使目标系统主动连接到攻击者控制的服务器,并将命令行的控制权转移到攻击者控制的服务器上

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

  • 上传Webshell:攻击者通过漏洞利用或者其他手段,将带有恶意代码的Webshell上传至目标服务器,然后通过浏览器或其他工具链接该Webshell来执行命令和操作目标系统。
  •  命令注入:通过在目标系统的应用程序输入点,注入恶意代码来执行攻击者所期望的操作。

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

  • 反向Shell连接:攻击者通过在目标系统上植入恶意代码,使目标系统主动与攻击者控制的服务器建立反向连接,并将命令行传输给攻击者。这样,攻击者就可以在自己的服务器上执行命令和操作目标系统。
  • 反向代理:通过在目标系统上设置反向代理,将流量转发到攻击者控制的服务器,从而实现目标系统的控制。

二、HTTP请求

1、HTTP请求方法及其含义:(常见的就是GET与POST)

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

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

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

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

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

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

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

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

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

其中:使用OPTIONS方法可以用于探测服务器开启了哪些HTTP方法。 

2、用于检测和获取目标服务器信息的常见HTTP方法

  • 扫描方法GET方法是最常用的用于扫描的HTTP方法之一。通过发送GET请求,可以获取指定资源的实际内容和元数据信息。这对于了解目标服务器上的文件、目录结构以及返回的响应状态非常有用。

  • 快速扫描方法HEAD方法是用于快速扫描的HTTP方法之一。与GET方法不同,HEAD方法只返回请求资源的头部信息,而不返回实际内容。这使得HEAD方法比GET方法更快,因为它只需要获取资源的元数据,而无需传输大量的实际数据。

3、HTTP状态码解析

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

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

4、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:服务器中间件和源码信息。

三、CDN (内容分发网络)

1、介绍

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

2、检测网站是否开启CDN

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

3、CDN查询真实IP

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

四、永恒之蓝漏洞的背景和工作原理

1、工作原理

        永恒之蓝漏洞是一种利用Windows操作系统的Server Message Block(SMB)协议漏洞来获取最高权限的安全漏洞。SMB协议是一种用于文件共享、打印以及其他网络通信的协议,广泛应用于Windows系统中。

2、背景

        该漏洞最初由美国国家安全局(NSA)开发,并在2017年泄露到公开领域。攻击者可以利用永恒之蓝漏洞来执行任意代码,并对被入侵的计算机进行完全控制。这意味着攻击者可以访问、修改或删除计算机上的文件,安装恶意软件,甚至在受感染计算机上创建后门等。

3、利用 

        攻击者通常通过扫描网络上开放了445文件共享端口的Windows机器来寻找潜在目标。一旦找到受漏洞影响的计算机,攻击者会发送特制的网络数据包,利用该漏洞将恶意代码注入目标计算机。在成功利用漏洞后,攻击者就能够获取被入侵计算机的最高权限,从而将其控制起来。

五、TCP三次握手与四次挥手

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

详细过程

三次握手的步骤如下:

  1. 客户端发送SYN(同步)请求给服务器,表示客户端希望建立连接。
  2. 服务器收到SYN请求后,发送SYN和ACK(确认)响应给客户端,表示服务器接受连接请求,并告知客户端可以开始传输数据。
  3. 客户端收到服务器的SYN和ACK响应后,再发送一个ACK确认信息给服务器,表示客户端接受了服务器的响应,连接建立完成。

四次挥手的步骤如下:

  1. 客户端发送释放信号给服务器,表示客户端希望关闭连接。
  2. 服务器收到释放信号后,发送一个确认信号给客户端,表示服务器准备好关闭连接。
  3. 服务器关闭与客户端的连接,但仍可接收来自客户端的数据。
  4. 客户端收到服务器的确认信号后,发送最后一个确认信息给服务器,表示客户端也关闭了连接。此时,连接完全关闭。

通过三次握手,双方确保彼此能够正常通信。而四次挥手则用于优雅地关闭连接,确保数据传输的完整性和可靠性。

渗透思路

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

1)收集信息

首先,收集有关目标登录框和应用程序的信息,包括URL、登录表单字段、错误回显信息等。这些信息将帮助你更好地理解目标,并针对其特定特征进行测试。

2)身份验证爆破

尝试通过爆破攻击猜测正确的用户名和密码组合。使用常见的用户名和密码字典,使用工具(如Burp Suite、Hydra等)进行自动化爆破攻击。观察页面是否有回显提示来判断是否成功破解。

3)错误回显分析

根据不同的回显情况采取相应的策略

  • 如果页面回显密码错误,使用Burp Suite等抓包工具进行捕获请求包,将密码设为变量,在爆破工具中导入密码本进行密码爆破。
  • 如果页面显示用户名错误,也可使用类似的方法来进行用户名爆破。
  • 如果无法判断用户名存在与否,可以使用双变量爆破,分别导入用户名和密码本进行爆破。

4)其他漏洞检测

除了身份验证方面的测试,还可以尝试其他漏洞检测,如SQL注入、命令执行、逻辑漏洞等。通过输入特定的测试字符串或利用特定的漏洞检测工具,来验证目标是否存在其他安全漏洞。

如:存在其他安全漏洞那就进一步扫描和验证

使用漏洞扫描工具(如AWVS)进行扫描目标应用程序,生成漏洞报告。然后,手动验证扫描结果,确保其中列出的漏洞是真实存在的,并进行进一步的渗透测试。

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

1)信息收集:

        了解目标网站使用的语言和中间件,这有助于确定可能存在的漏洞和攻击面。

2)端口扫描:

        使用端口扫描工具(如Nmap)扫描目标网站开放的端口,以查找敏感端口泄露或未经授权的服务暴露。

3)目录扫描:

        使用目录扫描工具(如御剑、dirsearch)对网站进行扫描,寻找可能存在的敏感文件、未授权访问路径或后台管理页面。

4)子域名和IP收集:

        通过DNS记录查询工具或子域名收集工具来获取目标网站的子域名或C段IP地址,以扩大攻击面。

5)漏洞分析和挖掘:

        根据之前收集到的信息,使用各种技术和工具进行漏洞分析和挖掘,如尝试弱口令、SQL注入等,以发现潜在的漏洞。

6)漏洞扫描和验证:

        使用漏洞扫描工具(如AWVS、Nessus)对目标网站进行全面扫描,验证之前发现的漏洞,并确认漏洞的实际存在。

7)逻辑漏洞检查:

        对网站的功能项和逻辑进行审查,寻找可能存在的逻辑漏洞,如越权访问、任意文件上传等。

8)渗透测试报告:

        将渗透测试的结果整理成报告,包括漏洞的利用点、修复建议、使用的工具和方法等,以便开发人员修复漏洞并提高网站的安全性。

三、域渗透思路

1)定位域控制器的IP和域管理员账号:

        首先,需要进行信息搜集,找到目标网络中的域控制器,并获取其IP地址。同时,也需要确定域管理员账号。

2)利用域成员主机作为跳板,扩大渗透范围:

        通过入侵一台域成员主机,可以作为跳板进一步渗透目标网络。可以利用漏洞、弱口令等方式获取域成员主机的访问权限。

3)利用域管理员特权登录任意成员主机的机制:

        域管理员拥有在域中任何成员主机登录的特权,可以利用这个特权找到域管理员登录过的主机IP。可以通过查看日志、审计工具等方式获取相关信息。

4)获取域管理员密码:

        通过对域成员主机进行内存取证等技术手段,可以获取到域管理员在该主机上使用的密码。可以利用常见的密码破解工具、弱口令字典等进行尝试。

5)获取域控制器的控制权限:

        获取到域管理员的密码后,就可以使用这个密码登录域控制器,获取对域控制器的控制权限。从而可以进行更深入的渗透和攻击操作。

四、渗透测试和挖SRC的区别

1)目的不同:

        渗透测试的主要目的是评估系统、应用程序或网络的安全性,发现潜在的漏洞和弱点,并提供修复建议。而挖SRC的主要目的是主动寻找系统、软件或平台中的未知漏洞,并将其报告给相关方,以便进行修复。

2)范围和深度不同:

        渗透测试通常是在客户的授权和明确的范围内进行,涉及对特定目标进行一系列测试,例如应用程序、网络或整个系统。而挖SRC更加自由,攻击者可以在任何目标上进行漏洞挖掘,包括大型软件平台、操作系统等。

3)报告复杂程度不同:

        渗透测试的报告通常更为复杂,包括对所发现漏洞的详细描述、风险评估、攻击路径示例、修复建议等。而挖SRC的报告主要关注漏洞的发现过程和方法,包括漏洞的利用流程、复现步骤以及漏洞的影响和潜在威胁等。

4)法律授权不同:

        渗透测试必须在授权范围内进行,通常需要事先获得合法的授权书或协议。而挖SRC则依赖于漏洞奖励计划(Bug Bounty Program)或雇主的授权,在法律框架和道德规范下进行。

五、了解的漏洞收取网站

1)补天:

        补天安全团队是中国互联网行业首家公益性SRC平台,旨在为互联网安全爱好者提供一个合规、合法、道德的漏洞挖掘平台。补天的挖掘范围覆盖广泛,包括政府机构、金融、电信、新媒体、电商等领域。漏洞挖掘者可以通过提交漏洞报告获取奖励。

2)漏洞盒子:

        漏洞盒子是国内较大的漏洞挖掘平台,提供包括公益SRC、企业SRC和安全扫描等服务。漏洞盒子通过建立与企业的合作关系,为企业提供安全测试和漏洞验证,同时给予独立安全研究人员提交报告的机会。漏洞盒子对挖掘到的漏洞进行鉴定和评估,并根据漏洞的严重程度给予相应的奖励。

3)CNVD

        CNVD(中国国家信息安全漏洞库)是由中国国家信息安全产品质量监督检验中心(CAC)管理的一个官方漏洞信息库。它收集和管理各种漏洞信息,并向公众提供漏洞查询和下载服务。CNVD 的漏洞信息经过确认和分类,并分配相应的编号供参考。

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

1)无法联系上厂商:

        在提交漏洞之前,与厂商建立有效的联系渠道非常重要。如果无法联系上厂商或没有得到及时的回应,那么漏洞报告可能会被拒绝。这可能是因为没有提供足够的信息或没有通过适当的渠道进行联系。

2)漏洞危害较小:

        在某些情况下,即使漏洞存在,但如果其危害性较小,例如反射型XSS(跨站脚本攻击),平台或厂商可能会认为修复该漏洞的优先级较低,从而导致审核不通过。这取决于漏洞的严重程度以及可能的攻击影响。

3)平台不收录特定类型的漏洞:

        某些平台可能有自己的收录规则和漏洞类型限制。例如,一些平台可能不接受目录遍历、phpinfo 泄露等已被广泛公开的漏洞,因为这些问题被认为是常见的安全配置问题,而不是实际的漏洞。平台可能更关注新颖、严重或对用户造成实质性威胁的漏洞。

七、常用的漏洞扫描工具

1)AWVS(Acunetix Web Vulnerability Scanner):

        AWVS是一款专门用于扫描网站漏洞的工具。它可以自动发现常见的Web应用程序漏洞,如跨站点脚本(XSS)、SQL注入等,并提供详细的报告和修复建议。

2)Goby:

        Goby是一款全面的网络安全扫描工具,它可以进行主机发现、端口扫描和漏洞扫描。Goby支持多种协议和服务的扫描,包括HTTP、FTP、SMTP、SSH等,并能够检测常见的漏洞。

3)Nessus:

        Nessus是一款广泛使用的漏洞扫描和评估工具。它可以全面地扫描网络设备、操作系统和应用程序,发现并评估各种漏洞。Nessus具有强大的定制化功能和报告生成能力。

4)AppScan:

        AppScan是一款专注于Web应用程序的漏洞扫描和安全评估工具。它可以自动发现和验证Web应用程序的漏洞,如代码注入、路径遍历等,并提供修复建议和报告。

5)X-Ray:

        X-Ray是一款基于机器学习的网络安全扫描工具。它使用机器学习算法来发现和识别潜在的漏洞,包括未公开的漏洞。X-Ray具有自适应学习能力,可以提供更准确的扫描结果。

八、中级研判的一般流程 

1)流量分析:

        对网络数据包进行分析,检测异常流量行为,例如大量的数据传输、频繁的连接尝试等,以发现可能存在的攻击活动或异常行为。

2)漏洞复测和验证:

        对已发现的漏洞进行复现和验证,确保漏洞的可利用性和危害性,并评估其对系统安全的影响。

3)基线加固:

        对系统进行安全配置和补丁管理等操作,以确保系统在基础安全设置上具备较高的防护能力,减少潜在的安全风险。

4)渗透测试:

        针对指定资产进行渗透测试,模拟真实攻击场景,评估系统的安全性并发现存在的漏洞和弱点。

5)报告撰写:

        创建处置建议报告或每日流量分析报告,总结安全状况,并提供解决方案和建议,帮助相关人员了解当前的安全情况,以及采取相应的措施来改进安全防护。

6)应急响应:

        参与应急响应工作,进行溯源分析,追踪攻击者的活动,尽可能还原攻击过程和攻击手段,以便采取措施进行威胁清除和修复工作。

九、在HW攻防演习中,提交的日报和周报可以包括以下内容 

1)安全事件概述:

        对过去一天或一周内发生的安全事件进行总结,包括攻击尝试、恶意行为等。

2)告警数量统计:

        记录每天或每周触发的告警数量,包括入侵检测系统、防火墙、日志监控等各个安全设备的告警情况。

3)攻击成功事件:

        列举成功渗透或攻击的事件,并分析攻击者的手段和攻击路径。

4)已采取的响应行动:

        描述已经采取的应对措施,如关闭攻击来源IP、隔离受感染主机等。

5)安全事件趋势分析:

        针对攻击事件的发展趋势,进行分析和预测,以便及时调整安全防护策略。

6)漏洞和弱点总结:

        总结发现的漏洞和弱点,并提供相应的建议和解决方案,以改进系统的安全性。

7)响应时间统计:

        记录每次安全事件的发现时间和响应时间,评估安全团队的反应速度和效率。

8)演习效果评估:

        对演习的整体效果进行评估,包括发现的问题、改进的措施等。

9)建议和改进方案:

        提供有关安全演习的建议和改进方案,帮助组织更好地应对未来的安全挑战。

十、公司安全报告通常包括渗透测试报告月报两部分

1)渗透测试报告:

  1. 目标系统描述:对测试的目标系统或网站进行详细描述,包括系统架构、功能特点等。
  2. 测试范围和方法:明确测试的范围和使用的渗透测试方法,例如黑盒测试还是白盒测试。
  3. 发现的问题和漏洞:详细列出在渗透测试过程中发现的问题和漏洞,包括系统配置错误、代码漏洞、权限问题等。
  4. 漏洞风险评估:对每个发现的漏洞进行评估,确定其风险级别和潜在影响,并给出建议的修复方案。
  5. 修复建议:提供具体的修复建议,包括修复措施、补丁更新、安全配置等,以加强系统的安全性。

2)月报:

  1. 安全事件总结:总结当月发生的安全事件,包括攻击事件、恶意软件感染、异常行为等,以及对应的应对措施。
  2. 漏洞情况分析:分析当月发现的漏洞情况,包括漏洞类型、数量、修复进度等,为安全团队和管理层提供全景了解。
  3. 安全事件趋势:对安全事件进行趋势分析,比较前几个月的情况,提供漏洞和威胁变化的观察和推测。
  4. 整体安全评估:对整体安全状况进行评估,包括防御能力、应急响应能力等方面的综合评价。
  5. 建议和改进方案:针对发现的问题和趋势,提供相应的建议和改进方案,帮助公司进一步加强安全管理和防护措施。

十一、初级流量监控监测的工作内容

1)每天进行流量告警检测:

        监控网络设备和系统的流量情况,设置相应的流量告警阈值,并进行定期或实时的流量检测。一旦流量超过设定的阈值,及时触发告警通知,以便快速发现异常情况。

2)初步的流量分析和监测:

        对监测到的流量数据进行初步分析,包括监测网络带宽利用率、流量峰值时段、流量来源等。通过分析流量情况,可以了解当前网络的负载状况和流量分布情况,发现异常流量或网络拥堵等问题。

3)根据需要升级设备:

        根据流量监测结果和需求,评估网络设备的性能和容量是否满足需求。如果发现网络设备已经达到承载上限或存在瓶颈,需要及时提出升级设备的建议,并参与升级实施过程。

4)编写当日的流量日报:

        根据流量监测结果和分析,编写当日的流量日报,包括流量统计、流量变化趋势、异常流量情况、网络瓶颈等重要信息的总结。日报应当清晰、简洁地呈现流量情况,并提供必要的分析和建议,为管理层和相关团队提供决策参考。

十二、HW项目 (即网络安全项目) 包括以下组

1)监控组:

        负责监控设备的流量,及时检测异常流量和攻击行为,并进行流量分析。

2)研判组:

        对监控组上报的流量进行深入分析和漏洞验证,确定是否存在漏洞或攻击事件,并评估其威胁级别。

3)处置组:

        针对恶意攻击的IP地址或恶意行为进行封禁和处置,采取防御措施限制攻击者的访问和影响。

4)应急响应组:

        针对成功受到攻击的服务器或系统进行紧急响应,包括隔离受感染的设备、修复漏洞、恢复系统功能等。

5)溯源反制组:

        负责对攻击事件的来源进行溯源,追踪攻击者的身份和行为,同时采取相应的反制措施。

6)专家组:

        负责总体指挥协调项目工作,并提供专业的技术支持和指导,确保项目的顺利进行和目标的达成。

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

十三、修复漏洞时的注意事项

1)业务连续性:

        在修复漏洞的过程中,要确保业务的连续性和稳定性。修复行动应该在不影响正常业务运行的前提下进行,避免对业务流程和用户体验产生负面影响。

2)风险评估:

        在进行漏洞修复之前,需要对漏洞的风险进行评估。了解漏洞的严重程度、可能造成的影响,以及修复措施的风险和影响范围。这样可以更好地制定修复计划,减少意外情况发生。

3)漏洞补丁:

        根据漏洞的类型和修复建议,及时安装相应的补丁或更新版本。确保使用最新的安全补丁,以修复已知漏洞并增强系统的安全性。

4)漏洞验证:

        在完成漏洞修复后,进行漏洞验证测试,确保修复措施生效并能够防止漏洞再次被利用。

5)修复计划:

        制定详细的修复计划,并与相关团队进行充分的沟通和协调。明确修复的时间窗口,避开业务使用的高峰期,尽量减少对业务的影响。

6)监控和回滚:

        在修复漏洞过程中,及时进行监控和备份。监控系统运行状况,确保修复措施的有效性。同时,制定回滚计划,以备不时之需,在修复过程中出现问题时能够迅速回滚到原始状态。

十四、溯源的常见手法

1)安全设备查找攻击者的IP:

        通过网络安全设备(如防火墙、入侵检测系统等)的日志,可以查找到攻击者使用的IP地址。这可以帮助追踪攻击来源和确定攻击者的大致位置。

2)反查手机号和邮箱:

        通过相关的网站和工具(如ipwhois、微步、站长之家等),可以反查攻击者所使用的手机号码和电子邮箱地址。这些信息有时可能会与其他攻击事件或恶意行为相关联,从而提供更多关于攻击者的线索。

3)社交软件和购物平台等信息描绘:

        攻击者在互联网上的活动留下了许多足迹。利用社交软件、购物平台、论坛等信息,可以收集攻击者的个人资料、兴趣爱好、工作经验等,从而描绘出攻击者的画像。这些信息可以帮助进行进一步的调查和溯源工作。

猜你喜欢

转载自blog.csdn.net/weixin_43263566/article/details/132656063