curl 在评估里的角色
curl 是复现与取证的基础工具:-i 看响应头、-v 看握手细节、-x 走代理、-o /dev/null 配合 -w 输出状态码与耗时。相比浏览器,它能精确保留请求的每一个头与参数,便于在报告里给出可复现的最小请求,也便于在修复后做回归对比。
基本信息
| 适用平台 | Linux/macOS 自带,Windows 10 及以上内置 curl.exe |
|---|---|
| 常用选项 | -i/-I/-v/-s/-S/-o/-w/-L/-H/-b/-c |
| 代理 | -x http://127.0.0.1:8080 走 Burp 等中间代理 |
| 超时 | --max-time 总时长,--connect-timeout 连接阶段 |
典型使用场景
- 最小化复现漏洞请求并留存证据
- 批量核对状态码与响应时间,判断接口可用性
- 通过代理复测 Burp 中发现的请求
- 检查响应头中的安全配置(Cookie 属性、CSP 等)
- 对比修复前后的响应差异,作为复测证据
验证示例
验证示例
curl -isS https://example.com/ | head -40 # 同时看状态行与响应头
curl -o /dev/null -s -w '%{http_code} %{time_total}s\n' https://example.com/ # 只取状态码与总耗时
curl -x http://127.0.0.1:8080 -isS https://app.example.com/api/me -H 'Authorization: Bearer test-token' # 经代理复现
curl -isS --max-time 10 --connect-timeout 3 https://app.example.com/health # 明确超时,避免挂起
curl -I -L https://example.com/old-path # 跟随跳转并记录跳转链常用输出字段读法
| -w 变量 | 含义 | 用途 |
|---|---|---|
| %{http_code} | 响应状态码 | 判断接口是否放行 |
| %{time_total} | 请求总耗时 | 发现隐藏的响应时间差异 |
| %{time_connect} | 连接建立耗时 | 区分网络问题与服务问题 |
| %{size_download} | 下载字节数 | 识别软 404 与空响应 |
| %{redirect_url} | 跳转目标 | 记录跳转链与开放重定向 |
| %{ssl_verify_result} | 证书校验结果 | 非 0 表示证书未通过校验 |
证据留存用占位符写法更安全:命令里写 Authorization: Bearer [TOKEN],真实令牌通过环境变量或代理注入,避免令牌进入命令历史与报告正文。
-k 会忽略证书校验,只适合在明确知道原因的排查场景临时使用;把 -k 带进常规核查会让 TLS 类问题被整体隐藏。
证据留存建议把输出重定向到文本文件并标注采集时间与账号来源:配合自定义的 -w 格式(状态码、响应长度、总耗时等指标一行输出)可以直接贴进报告摘要,复核时不必重新构造请求。