工具使用要点60 条

curl 手工验证与取证

curl 是复现与证据留存的常用手段:-i 看响应头、-v 看握手细节、-x 走代理、-o /dev/null -w 输出状态码与耗时,超时参数控制节奏。

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 格式(状态码、响应长度、总耗时等指标一行输出)可以直接贴进报告摘要,复核时不必重新构造请求。

易错点

  • 未设置 --max-time,脚本在异常连接上长时间挂起,拖慢整体进度
  • 把 -k 忽略证书校验的做法带进常规核查,掩盖真实的证书问题
  • 真实令牌写进命令与报告正文,造成凭据扩散
  • 只用 -I 发 HEAD 请求做结论,部分接口对 HEAD 与 GET 的返回行为不同
  • 复现时不保留原始请求的头部与参数,修复方无法独立验证问题
  • 同一次验证里混用 Cookie 文件与手工粘贴的会话值,证据无法说明会话来源,复测时难以重现

数据来源与参考

  • curl 官方文档(man curl)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌