安全面试1

news/2025/2/22 11:09:59/

目录

  • 渗透的流程
  • 信息收集如何处理子域名爆破的泛解析问题
    • 泛解析
    • 判断泛解析的存在
    • 处理泛解析的策略
  • 如何绕过CDN查找真实ip
  • phpinfo中常见的敏感信息
  • 权限维持
    • Windows 权限维持
    • Linux 权限维持技术
    • 跨平台权限维持技术
    • 检测和防御
  • 输出到href的XSS如何防御
  • samesite防御CSRF的原理
    • SameSite 的工作原理
  • CSRF防御
  • json格式的CSRF如何防御
  • 浏览器解析顺序和解码顺序
    • 解析顺序
    • 解码顺序
  • 过滤逗号的SQL注入如何绕过

渗透的流程

  1. 信息收集:收集目标系统的相关信息,如 域名 、IP地址、开放端口、运行的服务等。
  2. 漏洞扫描:使用扫描工具对目标系统进行扫描,发现潜在的漏洞和弱点。
  3. 漏洞利用:尝试利用发现的漏洞,获取系统的访问权限。
  4. 权限提升:在成功获取访问权限后,尝试提升权限,以便进行更深入的探测。
  5. 数据提取:收集敏感数据,如用户信息、密码等。
  6. 后利用:维持访问权限,进行进一步的探测和攻击。
  7. 报告编写:整理测试结果,编写详细的渗透测试报告,提供修复建议和安全增强措施。

信息收集如何处理子域名爆破的泛解析问题

泛解析

域名泛解析是指利用通配符(星号)来做次级域名,以实现所有的次级域名均指向同一IP地址。例如,将.wolke.cn解析到10.10.10.10,这样访问子域名a.wolke.cn、b.wolke.cn等都会指向10.10.10.10。这种解析方式虽然方便,但在信息收集时会造成请求的所有子域名都能访问的假象,从而收集到一堆无效的子域名,为子域名爆破带来不便。

判断泛解析的存在

访问一个随机的、不存在的子域名,并观察其解析结果。如果解析结果返回一个IP地址,那么很可能该域名存在泛解析。

处理泛解析的策略

  1. TLL判断:在权威DNS中,泛解析记录的TTL通常是相同的。因此,可以通过比较不同子域名的TTL值来判断是否存在泛解析。
  2. 使用 amass、assetfinder 等工具,它们能自动处理泛解析问题。
  3. 将泛解析的IP地址添加到黑名单中。在进行子域名爆破时,如果解析出的IP地址在黑名单中,则默认跳过该子域名。

如何绕过CDN查找真实ip

  1. 查询历史DNS记录:目标可能在启用CDN前使用过真实IP,历史记录中可能保留这些信息。
  2. 查询子域名:并非所有子域名都经过CDN,可能直接解析到真实IP。
  3. SSL证书:扫描互联网获取SSL证书,进而找到服务器的真实IP。
  4. 邮件服务器查询:邮件服务器可能未经过CDN,直接暴露真实IP。
  5. 国外主机解析域名:由于一些CDN服务在国外地区可能无法提供完整的保护,使用国外的主机直接访问目标网站可能会获取到真实IP地址。
  6. 利用SSRF漏洞:如果目标网站存在SSRF漏洞,可以通过该漏洞获取真实IP。
  7. 利用CDN配置错误:某些CDN配置不当可能导致真实IP泄露。
  8. 解码负载均衡器:当服务器使用特定的负载均衡器(如F5 LTM)时,通过对特定关键字的解码(如set-cookie),可以获取到真实IP地址。
  9. ping一个不存在的二级域名

phpinfo中常见的敏感信息

  1. 绝对路径:_SERVER[“SCRIPT_FILENAME”]
  2. 支持的程序:可以看看服务器是否加载了redis、memcache、mongodb、mysql、curl,如果加载了,那么就可以适当往这几个方面考虑,还可以看看是否支持gopher、是否开启了fastcgi
  3. 查看真实IP:绕开 cdn 获取 C 段资产,旁站等重要信息
  4. 查看敏感配置:allow_url_include:远程文件包含,allow_url_fopen:远程文件读取,disable_functions:表示禁用的函数名,short_open_tag:允许<??>这种形式,并且<?=等价于<? echo,Loaded Configuration File:配置文件位置

权限维持

Windows 权限维持

  1. 注册表启动项:通过修改注册表,在系统启动时自动运行恶意程序。使用 reg add 命令添加启动项
  2. 计划任务:创建计划任务,定期执行恶意程序。使用 schtasks 命令创建任务。
  3. 服务创建:将恶意程序注册为系统服务。使用 sc 命令创建服务。
  4. WMI 事件订阅:利用 WMI(Windows Management Instrumentation)在特定事件触发时执行恶意程序。使用 wmic 或 PowerShell 创建事件订阅。
  5. 启动文件夹:将恶意程序放入用户的启动文件夹。将恶意程序复制到 C:\Users<Username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup。

Linux 权限维持技术

  1. Cron 任务:编辑 /etc/crontab 或用户级的 Cron 任务。
  2. SSH 后门:通过修改 SSH 配置或添加授权密钥维持访问。将攻击者的公钥添加到 ~/.ssh/authorized_keys。
    修改 /etc/ssh/sshd_config,启用 PermitRootLogin 或 PasswordAuthentication。
  3. 系统服务:将恶意程序注册为系统服务。创建自定义的 systemd 服务文件。
  4. 动态链接库注入:通过 LD_PRELOAD 或 /etc/ld.so.preload 注入恶意库。将恶意库路径写入 /etc/ld.so.preload。

跨平台权限维持技术

  1. Web Shell:在目标服务器上放置 Web Shell,通过 HTTP 请求执行命令。
  2. 后门账户:在 Windows 中使用 net user 创建账户。
    在 Linux 中直接编辑 /etc/passwd 和 /etc/shadow。
  3. 内存驻留:将恶意代码注入到系统进程内存中,避免写入磁盘。

检测和防御

5.1 检测方法

  • 日志分析:检查系统日志、安全日志和网络流量。
  • 文件完整性监控:使用工具(如 Tripwire)监控关键文件。
  • 内存分析:使用 Volatility 等工具分析内存。
    5.2 防御措施
  • 最小权限原则:限制用户和服务的权限。
  • 定期更新和打补丁:修复已知漏洞。
  • 启用安全软件:使用防病毒、EDR 等工具。

输出到href的XSS如何防御

  1. 输入验证:对用户输入的数据进行严格验证,确保其符合预期的格式。
  2. 输出编码:在将用户输入输出到 HTML 属性时,对特殊字符进行编码,防止其被解析为 HTML 或 JavaScript 代码。
  3. 使用安全的 URL 协议:限制 href 属性中允许的 URL 协议,防止使用 javascript: 等危险协议。
  4. 内容安全策略(CSP):通过 HTTP 响应头配置 CSP,限制浏览器加载和执行外部资源。设置 Content-Security-Policy 头,禁止内联脚本和 javascript: URL。
  5. 使用安全的库和框架:使用经过安全验证的库或框架处理用户输入和输出。
  6. 限制用户输入长度:限制用户输入的长度,减少攻击者注入恶意代码的可能性。
  7. 避免直接拼接 HTML:避免直接将用户输入拼接到 HTML 中,使用安全的 DOM 操作方法。

samesite防御CSRF的原理

SameSite 是 Cookie 的一个属性,用于防御 CSRF(跨站请求伪造) 攻击。它的原理是通过限制 Cookie 的发送范围,防止恶意网站利用用户的身份发起未经授权的请求。当 SameSite 设置为 Strict 或 Lax 时,浏览器不会在跨站请求中自动携带 Cookie。

SameSite 的工作原理

  1. SameSite=Strict:仅当请求来自同一站点时,才会发送 Cookie。
    完全禁止跨站请求携带 Cookie。
  2. SameSite=Lax:允许部分跨站请求携带 Cookie(如导航请求: 标签、GET 表单)。
    禁止非导航请求携带 Cookie(如 POST 表单、AJAX 请求)。
  3. SameSite=None:允许所有跨站请求携带 Cookie。
    必须与 Secure 属性一起使用(即仅适用于 HTTPS)。

CSRF防御

  1. 使用 CSRF Token
  2. SameSite Cookie 属性
  3. 验证 HTTP Referer 头
  4. 双重提交 Cookie:将 CSRF Token 同时存储在 Cookie 和请求参数中。服务器验证两者是否一致。
  5. 使用自定义请求头:在 AJAX 请求中添加自定义请求头(如 X-Requested-With)。服务器检查请求头是否存在。
  6. 限制敏感操作的 HTTP 方法:仅允许 POST、PUT、DELETE 等非幂等方法执行敏感操作。避免使用 GET 方法执行敏感操作。
  7. 用户交互验证:在执行敏感操作前,要求用户进行二次验证(如输入密码、验证码)。

json格式的CSRF如何防御

  1. 使用 CSRF Token
  2. 检查 Origin 和 Referer 头
  3. 使用 SameSite Cookie 属性
  4. 禁用 CORS(跨域资源共享)
  5. 使用自定义请求头:通过添加自定义请求头,可以防止简单的 CSRF 攻击。
  6. 验证 Content-Type:确保 JSON 请求的 Content-Type 为 application/json,防止浏览器自动发送简单请求。

浏览器解析顺序和解码顺序

解析顺序

  1. 接收数据:浏览器从服务器接收HTML文件的原始字节流。
  2. 字节流解码:根据HTML文件指定的字符编码(如UTF-8)将字节流转换为字符。
  3. 解析HTML:浏览器解析HTML字符流,生成DOM树。
  4. 解析CSS:解析CSS文件,生成CSSOM树。
  5. 构建渲染树:将DOM树和CSSOM树结合,生成渲染树。
  6. 布局(重排)
  7. 绘制(重绘)
  8. 执行JavaScript:在DOMContentLoaded事件后执行JavaScript代码,可能修改DOM或CSSOM,触发重排和重绘。

解码顺序

  1. HTML解码:浏览器首先对HTML文档进行解析,完成HTML解码,并创建DOM树。在解析HTML时,浏览器会对标签内的特定部分(如value属性、RCDATA元素等)进行HTML解码。同时,HTML解析器以状态机的方式运行,根据遇到的不同字符和标签状态进行解码。
  2. URL解码:URL解码通常在HTML解码之后进行,但主要针对a标签的href属性等特定场景。URL的协议部分(如http://、https://、javascript:等)不能被URL编码,否则会导致URL解析失败。在URL解码过程中,浏览器会将URL中的编码字符还原为原始字符。
  3. JS解码:对于HTML文档中的内联脚本和

过滤逗号的SQL注入如何绕过

  1. 使用JOIN代替逗号:id=1’ union select * from (select 1)a join (select 2)b join (select 3)c --+
  2. 利用FROM子句:在使用substr()或mid()函数时,可以使用from来指定起始位置和长度,select substr(database() from 1 for 1);
  3. 利用宽字节注入
  4. 使用CASE语句:SELECT * FROM users WHERE id = 1 UNION SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END;
  5. 使用FROM子句中的子查询:SELECT * FROM (SELECT 1 AS a UNION SELECT 2 AS a) AS b;
  6. 使用BETWEEN和AND:SELECT * FROM users WHERE id BETWEEN 1 AND 10;
  7. 使用HEX和UNHEX:SELECT * FROM users WHERE username = UNHEX(‘61646D696E’);
  8. 使用LIMIT和OFFSET:SELECT * FROM users LIMIT 1 OFFSET 1;

http://www.ppmy.cn/news/1574137.html

相关文章

deepseek本地调用

目录 1.介绍 2.开始调用 2.1模型检验 2.2 通过url调用 3.总结 1.介绍 这篇博客用来教你如何从本地调用ollama中deepseek的模型接口&#xff0c;直接和deepseek进行对话。 2.开始调用 2.1模型检验 首先要保证ollama已经安装到本地&#xff0c;并且已经下载了deepseek模型…

Dify怎么创建数据交易的智能体

Dify怎么创建数据交易的智能体 Dify是一个低代码AI应用开发平台,能帮助你快速创建智能体。以下是使用Dify创建一个数据定价智能体的大致步骤和示例: 1. 注册与登录 首先,访问Dify官网(https://dify.ai/ ),完成注册并登录到你的账号。 2. 创建新项目 登录后,点击创建…

CSS定位全解析:position属性详解与应用场景

在网页布局中&#xff0c;CSS定位是实现元素精准控制的关键技术之一。通过position属性&#xff0c;我们可以将元素放置在页面的任何位置&#xff0c;并控制其相对于其他元素的行为。本文将深入解析position属性的各个取值及其应用场景&#xff0c;帮助你掌握CSS定位的精髓。 …

Springboot应用开发工具类整理

目录 一、编写目的 二、映射工具类 2.1 依赖 2.2 代码 三、日期格式 3.1 依赖 3.2 代码 四、加密 4.1 代码 五、Http请求 5.1 依赖 5.2 代码 六、金额 6.1?代码 七、二维码 7.1 依赖 7.2 代码 八、坐标转换 8.1 代码 九、树结构 9.1?代码 9.1.1 节点 …

RV1126解码—ffmpeg_read_thread线程的讲解

fmpeg_read_thread线程的用处 解码这一块&#xff0c;在第一篇的时候就看到了&#xff0c;有三个线程&#xff0c;这篇先介绍一个线程的作用是怎么样的。 ffmpeg_read_thread线程的主要作用是读取每一帧流媒体文件&#xff0c;这个流媒体文件可以是复合流文件。如&#xff1a;T…

工控自动化领域:数字量信号与模拟量信号的差异解析

在工控自动化的神秘世界里&#xff0c;信号如同传递指令和信息的使者&#xff0c;而数字量信号和模拟量信号则是其中的两大主角。它们各自有着独特的 “性格” 和 “使命”&#xff0c;在不同的场景中发挥着关键作用。下面&#xff0c;就让我们一起来深入了解一下它们的区别。 …

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算&#xff1f; 2.1、One-hot分类编码&#xff08;传统词表示方法&#xff09; 2.2、词向量 3、Transformer架构 3.1、何为注意力机制&#xff1f; 3.2、注意力机制在 Transformer 模型中有何意义&#xff1f; 3.3、位置编…

React进阶之前端业务Hooks库(二)

前端业务Hooks库 Actiondeploy.ymltest.yml基于 state 的 hooks 方法useBooleanpackages/hooks/src/useBoolean/index.tsusePrevioususeDeleteRole防抖和节流useDebounceuseThrottlelocalStorage和sessionStorager区别packages/hooks/src/useLocalStorageStatepackages/hooks/s…