#渗透测试实践笔记(开发者版)
红客攻防实验室
2026年8月18日 19:18
天津
在小说阅读器读本章
去阅读
一、概述
渗透测试(Penetration Testing,简称 pen-testing)是一种主动安全评估方法——通过模拟真实攻击,在攻击者利用漏洞之前主动暴露注入缺陷、弱身份验证、配置错误等问题。
合规实践中,通常还会配合两类正式评估:
二、常见 Web 攻击速查表
三、渗透辅助工具:PenTestingHelper
01.
设计思路
构建一个可复用的 C# 工具类,覆盖渗透测试的五个核心环节:
侦察 → 安全头检查 → Cookie 标志验证 → CSRF 保护测试 → 模糊测试
02.
完整代码
using System.Net.Http.Json;using System.Text;using System.Text.Json;
namespace MyPlaygroundApp.Utils{ publicclassPenTestingHelper { private readonly HttpClient _httpClient;
publicPenTestingHelper(string baseUrl){ _httpClient = new HttpClient { BaseAddress = new Uri(baseUrl) }; }
// ① 侦察:探测常见端点,收集信息 public async Task RunReconnaissanceAsync(){ Console.WriteLine(\"\
[Reconnaissance]\"); var endpoints = new[] { \"/robots.txt\", \"/.well-known/security.txt\", \"/favicon.ico\" }; foreach (var ep in endpoints) { var res = await _httpClient.GetAsync(ep); Console.WriteLine($\"{ep} -> {(int)res.StatusCode} {res.ReasonPhrase}\"); } }
// ② 安全头检查:确认关键安全头是否存在 public async Task CheckSecurityHeadersAsync(){ Console.WriteLine(\"\
[Security Header Check]\"); var res = await _httpClient.GetAsync(\"/\"); var headers = new[] { \"X-Frame-Options\", \"X-Content-Type-Options\", \"Content-Security-Policy\", \"Referrer-Policy\" }; foreach (var header in headers) { Console.WriteLine($\"{header}: {(res.Headers.Contains(header) ? \"Present\" : \"Missing\")}\"); } }
// ③ Cookie 标志验证:检查 HttpOnly / Secure 是否设置 public async Task CheckCookieFlagsAsync(string loginUrl){ Console.WriteLine(\"\
[Cookie Flags Validation]\"); var res = await _httpClient.GetAsync(loginUrl); if (res.Headers.TryGetValues(\"Set-Cookie\", out var setCookies)) { foreach (var cookie in setCookies) { Console.WriteLine($\"Set-Cookie -> {cookie}\"); if (!cookie.Contains(\"HttpOnly\")) Console.WriteLine(\" Warning: Cookie missing HttpOnly\"); if (!cookie.Contains(\"Secure\")) Console.WriteLine(\" Warning: Cookie missing Secure\"); } } else { Console.WriteLine(\"No cookies found in the response.\"); } }
// ④ CSRF 保护测试:无令牌的 POST 应被拒绝 public async Task TestCsrfProtectionAsync(string endpoint){ Console.WriteLine(\"\
[CSRF Protection Test]\"); var res = await _httpClient.PostAsync(endpoint, new StringContent(\"{\\\"dummy\\\":\\\"x\\\"}\", Encoding.UTF8, \"application/json\")); Console.WriteLine($\"{endpoint} -> {(int)res.StatusCode} {res.ReasonPhrase}\"); }
// ⑤ 模糊测试:用恶意/超大负载探测输入验证 public async Task FuzzEndpointAsync(string endpoint){ Console.WriteLine(\"\
[Fuzzing Endpoint]\"); var payloads = new[] { new { name = \"normal\" }, new { name = \"' OR '1'='1\" }, // SQL 注入探测 new { name = \"\" }, // XSS 探测 new { name = newstring('A', 5000) } // 超大输入 / DoS 探测 };
foreach (var payload in payloads) { var res = await _httpClient.PostAsJsonAsync(endpoint, payload); Console.WriteLine($\"Payload: {JsonSerializer.Serialize(payload)} -> {(int)res.StatusCode} {res.ReasonPhrase}\"); } } }}
03.
调用方式
using MyPlaygroundApp.Utils;
classProgram{ static async Task Main(string[] args){ var baseUrl = \"https://your-app-url.com\"; var helper = new PenTestingHelper(baseUrl);
await helper.RunReconnaissanceAsync(); await helper.CheckSecurityHeadersAsync(); await helper.CheckCookieFlagsAsync(\"/login\"); await helper.TestCsrfProtectionAsync(\"/bank/transfer\"); await helper.FuzzEndpointAsync(\"/api/test\"); }}
04.
运行命令
dotnet run
四、安全 vs 脆弱应用——结果对照
01.
侦察
02.
安全头检查
03.
标志验证
04.
CSRF 保护测试
05.
模糊测试
五、安全响应头中间件
在 Program.cs 中添加以下中间件,可以一键配置全部推荐安全头:
app.Use(async (context, next) =>{// 防 MIME 嗅探 context.Response.Headers.Append(\"X-Content-Type-Options\", \"nosniff\");
// 防点击劫持 context.Response.Headers.Append(\"X-Frame-Options\", \"DENY\");
// 控制 Referrer 信息 context.Response.Headers.Append(\"Referrer-Policy\", \"strict-origin-when-cross-origin\");
// 旧版浏览器 XSS 保护 context.Response.Headers.Append(\"X-XSS-Protection\", \"1; mode=block\");
// 限制浏览器功能 context.Response.Headers.Append(\"Permissions-Policy\",\"camera=(), microphone=(), geolocation=(), payment=(), usb=()\");
// CSP:定义允许加载的资源 var connectSrc = app.Environment.IsDevelopment() ? \"'self' ws: wss: http://localhost:* https://localhost:* https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://ajax.googleapis.com https://ajax.aspnetcdn.com\" : \"'self' https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://ajax.googleapis.com https://ajax.aspnetcdn.com\";
var csp = \"default-src 'self'; \" +\"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://ajax.googleapis.com https://ajax.aspnetcdn.com; \" +\"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://ajax.googleapis.com https://ajax.aspnetcdn.com; \" +\"font-src 'self' https://fonts.gstatic.com https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://ajax.googleapis.com; \" +\"img-src 'self' data: https:; \" + $\"connect-src {connectSrc}; \" +\"frame-ancestors 'none'; \" +\"base-uri 'self'; \" +\"form-action 'self'; \" +\"upgrade-insecure-requests\";
context.Response.Headers.Append(\"Content-Security-Policy\", csp);
// 生产环境强制 HTTPSif (!app.Environment.IsDevelopment()) { context.Response.Headers.Append(\"Strict-Transport-Security\",\"max-age=31536000; includeSubDomains; preload\"); }
// 移除服务器标识信息 context.Response.Headers.Remove(\"Server\"); context.Response.Headers.Remove(\"X-Powered-By\");
await next();});
01.
各安全头作用对照
;0x0a ou \
(caractère du saut à la ligne)$()
六、安全应用预期输出示例
[Reconnaissance]/robots.txt -> 200 OK/.well-known/security.txt -> 404 Not Found/favicon.ico -> 404 Not Found
[Security Header Check]X-Frame-Options: PresentX-Content-Type-Options: PresentContent-Security-Policy: PresentReferrer-Policy: Present
[Cookie Flags Validation]Set-Cookie -> sessionid=xyz; HttpOnly; Secure; SameSite=Strict
[CSRF Protection Test]/bank/transfer -> 403 Forbidden
[Fuzzing Endpoint]Payload: {\"name\":\"normal\"} -> 200 OKPayload: {\"name\":\"' OR '1'='1\"} -> 400 Bad RequestPayload: {\"name\":\"\"} -> 400 Bad RequestPayload: {\"name\":\"AAAA...\"} -> 400 Bad Request
七、防御措施清单(速查)
八、总结
-
渗透测试是将安全左移的关键手段——在开发阶段主动发现问题,而非等外部审计。
-
PenTestingHelper 封装了侦察、安全头检查、Cookie 验证、CSRF 测试、模糊测试五大环节,可直接集成到 .NET 项目中复用。
-
配合安全头中间件,可以在框架层面统一加固,确保应用符合现代安全标准。
-
渗透测试 + 预防措施双管齐下,既能发现问题,也能在源头堵住问题。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论