اعرف اللي قصادك. احمي أرضك.
العمليات والتقصي

Pentest Reporting — التقرير اللي بيخليك تتدفع

Executive summary و CVSS و proof-of-exploit وخطة معالجة تتنفذ

المستوى
متقدم
المدة
70m
الترتيب
الدرس 24 من 85
ReportingCVSSPentestDocumentationFederal

ليه التقرير أهم من الاختراق نفسه؟

اخترقت الشركة في 4 ساعات. حلو قوي.

طب مين هيقرا اللي عملته؟

- الـ CIO طبعاً!

كنت مستنيك تقول كده. متوقّع كالعادة يا مستجد.

الـ CIO هيقعد معاك على Burp؟ هيقرا 80 صفحة Markdown؟ أبداً. هو هيقرا صفحة واحدة. واحدة بس.

تشبيه يقرّب الفكرة
تخيّل دكتور لقى ورم نادر، شخّصه صح، وبعدين كتب في الملف "لقيت حاجة". القيمة كلها راحت. الـ pentest زي كده بالظبط — 80% من قيمة شغلك في التقرير، مش في الـ shell. الـ CIO هيقرا صفحة Executive Summary واحدة ويقرّر الميزانية على أساسها. لو الصفحة دي عك، شغلك كله راح في الزبالة.

حكاية حقيقية: تقرير اتسلّم.. ومحدش قراه

الـ CIO اللي طلب الـ engagement اتنقل، الـ findings اتدفنت في SharePoint، وبعد سنة الـ APT دخل من نفس الخرم بالظبط.

الدرس: التقرير اللي محدش فاهمه = إنت ما عملتش حاجة. خالص.

هيكل التقرير الفيدرالي

1
Executive Summary (صفحة واحدة، CIO/CISO)
نص من غير jargon: لقينا إيه، الخطر على الأعمال إيه، إيه اللي لازم يحصل الأسبوع الجاي. مفيش CVSS هنا ولا Burp screenshots. أرقام: "مهاجم خارجي قدر يوصل لـ 47% من بيانات HR في 4 ساعات."
2
Scope & Methodology
اللي اتطلب نختبره، واللي اختبرناه فعلاً (دايماً مختلف)، إيه المعايير اللي اتبعناها (NIST SP 800-115, OWASP WSTG, MITRE ATT&CK). والقيود (zero-knowledge؟ assume-breach؟ business hours بس؟).
3
Findings — مرتّبة بالخطورة
كل واحدة: ID، عنوان، CVSS 3.1، CWE، الوصف التقني، خطوات الإعادة، proof of exploit (screenshot/log)، الأثر على الأعمال، التوصية.
4
Attack Path Narratives
حكاية، مش قايمة ثغرات. "بدأنا بـ email phishing، خدنا credentials، عدّينا الـ MFA، وصلنا Domain Admin في 6 ساعات." ده اللي بيفضل في عقل القارئ.
5
Remediation Roadmap
مش "صلّحوا كل حاجة". خطة 30/60/90 يوم بأولويات. إيه اللي محتاج patch دلوقتي، إيه اللي محتاج architecture change، إيه اللي محتاج تعديل policy.
6
Appendices
الأدوات المستخدمة، الـ IPs/IDs اللي اتختبرت، الـ timeline، الـ contacts، references.

كتابة Finding واحد بشكل صحيح

markdown
### F-007 | SQL Injection in /api/v2/search?q

**Severity**:    Critical
**CVSS 3.1**:    9.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
**CWE**:         CWE-89 — SQL Injection
**Affected**:    api.target.gov/v2/search (production)
**Discovered**:  2026-04-12 14:22 UTC
**Tester**:      J. Doe

#### Summary
The /api/v2/search endpoint passes the 'q' parameter unsanitized into a
SQL query, allowing arbitrary database access without authentication.

#### Technical Detail
Reproduction (single curl):
```
curl 'https://api.target.gov/v2/search?q=test%27%20UNION%20SELECT%20NULL,version(),NULL--'
```
Response leaks PostgreSQL 14.8 banner. Stacked queries confirmed via
out-of-band DNS lookups (proof captured at burpcollab.example).

#### Proof of Impact
Within 12 minutes the tester:
1. Enumerated 47 tables including `users_pii` and `audit_log`
2. Read 1.2M user records (full name, SSN-last-4, address, DOB)
3. Modified one test record (reverted post-confirmation)

Screenshots: see Appendix B, F-007-01..03.

#### Business Impact
- 1.2M PII records exposed → CCPA/GLBA notification scope
- Audit log tampering → compliance violation under FISMA
- Estimated breach disclosure cost: $4.5M (Ponemon 2024 average)

#### Recommendation
Short-term (this week):
  - Deploy parameterized queries on the affected query builder
  - WAF rule blocking UNION/SELECT in 'q' as a stop-gap

Long-term (this quarter):
  - Audit all 312 endpoints using same query helper
  - Move to ORM (Prisma/SQLAlchemy) with mandatory bound params
  - Add SAST gate (Semgrep) blocking string concatenation in DB code

#### References
- OWASP Top 10 — A03:2021 Injection
- CISA Secure-by-Design pledge — Memory-safe & SQLi
- NIST SP 800-53 SI-10 (input validation)

CVSS — لا تتعجل في الرقم

CVSS 3.1 فيه حقول دقيقة. الفرق بين 7.5 و9.8 هو اللي بيحدّد إذا كان الـ CIO هيصحى في نص الليل ولا لأ. خد وقتك:

text
Attack Vector (AV):
  Network (N)   — قابل للوصول من الإنترنت        → +0.85
  Adjacent (A)  — يحتاج شبكة محلية                → +0.62
  Local (L)     — يحتاج تسجيل دخول                → +0.55
  Physical (P)  — يحتاج وصول مادي                → +0.20

Attack Complexity (AC):
  Low (L)       — كل مهاجم يقدر                  → +0.77
  High (H)      — يحتاج race condition / timing  → +0.44

Privileges Required (PR):
  None (N)      — مجهول                          → +0.85
  Low (L)       — مستخدم عادي                    → +0.62
  High (H)      — admin                          → +0.27

User Interaction (UI):
  None (N)      — تلقائي                         → +0.85
  Required (R)  — يحتاج click / paste            → +0.62

Scope (S):
  Unchanged (U) — ضمن الـ component              → ×1.0
  Changed (C)   — يخرج إلى components أخرى       → ×1.5

CIA Impact: None / Low / High

أخطاء شائعة

ما تعملش
  • "Critical" لكل finding — التقرير بيفقد مصداقيته.
  • Screenshots من غير redaction (PII حقيقية في التقرير).
  • "اعملوا best practices" — دي مش توصية.
  • ما تنسخش findings من تقارير قديمة من غير ما تتأكد تاني.
  • ما تكتبش نكت ولا تستخفّ بالـ team — هما اللي هيقروا التقرير.
اعمل
  • راجع كل finding مرتين — غلطة تقنية واحدة = engagement محروق.
  • اربط كل finding بـ ATT&CK technique و CWE.
  • ضيف قسم "اختبرناه ومقدرناش نكسره" — بيبني ثقة.
  • سلّم النسخة النهائية في ميتنج، مش بـ email.
  • اعرض retest بعد 30 يوم من التسليم.

معايير فيدرالية

  • NIST SP 800-115 — Technical Guide to Information Security Testing
  • NIST SP 800-53 — Security Controls (لربط findings بـ controls)
  • FISMA / FedRAMP — متطلبات تقارير
  • PTES — Penetration Testing Execution Standard (community)
  • OWASP WSTG — Web Security Testing Guide
  • MITRE ATT&CK — للـ attack path narratives

غلطات الـ junior في كتابة التقرير

الخلاصة الناشفة

التقرير مش paperwork — التقرير هو المنتج.

الـ shell اللي اخدته، الـ CVE اللي لقيته، الـ chain اللي بنيته — كل ده مادة خام. التقرير هو اللي بيحوّلهم لقرار، وميزانية، وحماية حقيقية.

اوعى تسلّم تقرير عك وتقول "هما اللي ميقروش".

اكتب لـ CIO ما يفهمش technical jargon، وفي نفس الوقت لـ engineer هيـ reproduce الخطوة بعد سنة.

لو قدرت تعمل الاتنين في تقرير واحد، يبقى انت محترف فعلاً.

مصادر

  • OffSec — OSCP report template (نموذج جيد للبدء)
  • SANS — Reporting Penetration Tests (SEC560 module)
  • NCC Group / TrustedSec — public report samples
  • Daniel Miessler — "How to Write a Penetration Test Report"
  • RedTeam Pentesting GmbH — sample reports
خلّصت الدرس؟

علّمه علشان تفضل عارف انت فين على السكة.