安全面试1

发布于:2025-02-19 ⋅ 阅读:(25) ⋅ 点赞:(0)

渗透的流程

  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;

网站公告

今日签到

点亮在社区的每一天
去签到