ساخت اولین گزارش تست نفوذ؛ از یافته امنیتی تا گزارش حرفه‌ای

Creating the first penetration test report
0 دیدگاه
۱۴۰۵-۰۶-۱۴ ۱۸:۴۳:۱۶

تا اینجا در مسیر Web Pentesting یاد گرفتیم چگونه یک آزمایشگاه بسازیم، سرویس‌ها را شناسایی کنیم، با Burp Suite درخواست‌های HTTP را بررسی کنیم و آسیب‌پذیری‌هایی مثل SQL Injection، XSS و File Upload را در یک محیط آزمایشگاهی تحلیل کنیم.

اما یک سؤال مهم باقی می‌ماند:

بعد از پیدا کردن آسیب‌پذیری، چطور نتیجه تست را به شکل حرفه‌ای گزارش کنیم؟

اینجاست که Penetration Testing Report اهمیت پیدا می‌کند.

یک تست نفوذ حرفه‌ای فقط اجرای ابزار و پیدا کردن Vulnerability نیست.

فرآیند واقعی تقریباً این است:

Scope
  ↓
Reconnaissance
  ↓
Testing
  ↓
Finding
  ↓
Evidence
  ↓
Risk Assessment
  ↓
Remediation
  ↓
Final Report

در این قسمت، اولین گزارش تست نفوذ خودمان را برای آزمایشگاه Kali Linux + DVWA می‌سازیم.

⚠️ هشدار: تمام نمونه‌های این آموزش برای محیط آزمایشگاهی و سیستم‌هایی هستند که مجوز تست آن‌ها را دارید. هیچ‌گاه بدون مجوز اقدام به تست نفوذ یک سامانه واقعی نکنید.


گزارش تست نفوذ چیست؟

گزارش تست نفوذ، سندی است که نتایج یک ارزیابی امنیتی را به شکل ساختاریافته ثبت می‌کند.

این گزارش باید به چند سؤال اساسی پاسخ دهد:

چه چیزی تست شد؟
چه زمانی تست شد؟
چه چیزی پیدا شد؟
چگونه پیدا شد؟
شدت آسیب‌پذیری چقدر است؟
چه اثری می‌تواند داشته باشد؟
چگونه باید برطرف شود؟

بنابراین یک گزارش خوب فقط نمی‌گوید:

«SQL Injection پیدا شد.»

بلکه توضیح می‌دهد:

Vulnerability
    ↓
Location
    ↓
Evidence
    ↓
Impact
    ↓
Risk
    ↓
Remediation

چرا گزارش تست نفوذ مهم است؟

تصور کنید یک تستر امنیتی ۲۰ آسیب‌پذیری پیدا کرده است اما فقط نام آن‌ها را در یک فایل متنی نوشته:

SQLi
XSS
File Upload
Weak Authentication
...

این اطلاعات برای یک تیم توسعه کافی نیست.

تیم فنی باید بداند:

  • مشکل دقیقاً کجاست؟
  • چگونه بازتولید می‌شود؟
  • چه اثری دارد؟
  • اولویت اصلاح آن چیست؟
  • چه راهکاری برای رفع آن وجود دارد؟

پس گزارش تست نفوذ پل ارتباطی بین:

Security Team

و

Development / IT Team

است.


ساختار یک گزارش حرفه‌ای

یک گزارش تست نفوذ معمولاً می‌تواند شامل بخش‌های زیر باشد:

1. Cover Page
2. Executive Summary
3. Scope
4. Methodology
5. Environment
6. Findings Summary
7. Detailed Findings
8. Evidence
9. Risk Rating
10. Remediation
11. Conclusion
12. Appendix

حالا هر قسمت را بررسی می‌کنیم.


۱. صفحه اول گزارش

صفحه اول باید اطلاعات اصلی پروژه را مشخص کند.

مثلاً:

Penetration Testing Report

Target:
DVWA Laboratory

Assessment Type:
Web Application Security Assessment

Environment:
Kali Linux + DVWA + Burp Suite

Tester:
Zero & One Cyber

Date:
2026/09/05

Classification:
Confidential

در پروژه واقعی، اطلاعاتی مثل نام سازمان، محدوده تست و نسخه گزارش نیز می‌تواند اضافه شود.


۲. Executive Summary

این بخش برای افرادی نوشته می‌شود که ممکن است متخصص امنیت نباشند.

مثلاً مدیر یک شرکت می‌خواهد در چند دقیقه بفهمد وضعیت کلی امنیت چگونه است.

نمونه:

در این ارزیابی امنیتی، برنامه وب موردنظر در یک محیط
کنترل‌شده مورد بررسی قرار گرفت.

هدف ارزیابی، شناسایی ضعف‌های امنیتی در بخش‌های مختلف
برنامه و ارائه راهکارهای اصلاحی بود.

در طول ارزیابی، مواردی در حوزه پردازش ورودی، مدیریت
فایل و کنترل خروجی شناسایی و تحلیل شدند.

برای هر یافته، سطح ریسک، شواهد فنی و راهکار اصلاحی
ارائه شده است.

Executive Summary نباید بیش از حد فنی باشد.


۳. Scope یا محدوده تست

یکی از مهم‌ترین قسمت‌های گزارش:

Scope

است.

در آزمایشگاه ما:

Target:
192.168.56.20

Application:
DVWA

Environment:
Private Lab

Testing:
Web Application Security

در یک پروژه واقعی باید دقیقاً مشخص شود چه مواردی داخل Scope هستند و چه مواردی نیستند.

مثلاً:

In Scope:
example.com
api.example.com

Out of Scope:
mail.example.com
third-party services
production database

۴. زمان انجام تست

تاریخ و زمان ارزیابی را ثبت کنید.

مثلاً:

Assessment Start:
2026/09/05

Assessment End:
2026/09/05

در پروژه‌های واقعی، Time Zone نیز می‌تواند مهم باشد.


۵. Methodology

در این قسمت توضیح می‌دهیم تست را چگونه انجام داده‌ایم.

برای آزمایشگاه این مقاله:

Information Gathering
        ↓
Service Discovery
        ↓
Application Mapping
        ↓
Input Analysis
        ↓
Manual Testing
        ↓
Burp Suite Analysis
        ↓
Vulnerability Validation
        ↓
Risk Assessment
        ↓
Reporting

ابزارهای مورد استفاده:

Kali Linux
Nmap
Burp Suite
Browser
DVWA

نکته مهم:

ابزار، جایگزین تحلیل متخصص امنیت نیست.


۶. Environment

در این قسمت محیط آزمایش را توضیح می‌دهیم.

مثلاً:

Tester Machine:
Kali Linux

Target:
DVWA

Target IP:
192.168.56.20

Network:
Host-Only / Isolated Lab

Proxy:
Burp Suite

این اطلاعات باعث می‌شود شخص دیگری بتواند شرایط تست را بهتر درک کند.


۷. Findings Summary

حالا یافته‌ها را در یک جدول خلاصه می‌کنیم.

مثلاً:

# آسیب‌پذیری شدت وضعیت
1 SQL Injection High Open
2 Reflected XSS Medium Open
3 Stored XSS High Open
4 Insecure File Upload High Open

این جدول باید یکی از اولین بخش‌هایی باشد که خواننده فنی گزارش می‌بیند.


Severity چیست؟

هر آسیب‌پذیری باید یک سطح ریسک داشته باشد.

یک تقسیم‌بندی ساده:

Critical
High
Medium
Low
Informational

اما شدت فقط بر اساس «جالب بودن» آسیب‌پذیری تعیین نمی‌شود.

باید مواردی مثل:

  • Impact
  • Exploitability
  • Authentication Requirement
  • Attack Complexity
  • Data Sensitivity
  • Business Impact

در نظر گرفته شوند.


Critical

ریسک بسیار بالا.

مثلاً آسیب‌پذیری‌ای که در شرایط واقعی بتواند پیامد بسیار گسترده‌ای برای سامانه ایجاد کند.


High

ریسک بالا و نیازمند رسیدگی سریع.

مثلاً یک آسیب‌پذیری که امکان دسترسی غیرمجاز مهم یا افشای قابل‌توجه اطلاعات ایجاد کند.


Medium

ریسک متوسط.

ممکن است برای سوءاستفاده نیاز به شرایط خاص‌تری وجود داشته باشد.


Low

ریسک پایین، اما همچنان قابل توجه و بهتر است اصلاح شود.


Informational

لزوماً آسیب‌پذیری نیست.

ممکن است صرفاً یک نکته امنیتی، Configuration Finding یا اطلاعات تکمیلی باشد.


۸. Detailed Finding

مهم‌ترین قسمت گزارش همین بخش است.

برای هر آسیب‌پذیری یک Finding مستقل ایجاد کنید.

مثلاً:

Finding #01

Title:
SQL Injection

Severity:
High

Affected Component:
DVWA SQL Injection

Parameter:
id

۹. Description

در این قسمت توضیح می‌دهیم مشکل چیست.

مثلاً:

پارامتر id در بخش مشخص‌شده، ورودی کاربر را دریافت می‌کند.
در محیط آزمایشگاهی مشاهده شد که ورودی بدون کنترل مناسب
در Query دیتابیس مورد استفاده قرار می‌گیرد.

این رفتار می‌تواند باعث تغییر منطق Query شود.

توضیح باید دقیق باشد، اما غیرضروری طولانی نباشد.


۱۰. Evidence

هر Finding باید شواهد داشته باشد.

شواهد می‌تواند شامل:

  • Screenshot
  • HTTP Request
  • HTTP Response
  • Log
  • Error Message
  • Configuration
  • Output ابزار

باشد.

مثلاً:

Evidence:

Parameter:
id

Observed Behavior:
Response changed when controlled test input was supplied.

Tool:
Burp Suite Repeater

Screenshot خوب چه ویژگی‌ای دارد؟

یک Screenshot حرفه‌ای باید:

  • واضح باشد
  • فقط اطلاعات مرتبط را نشان دهد
  • بخش مهم Highlight شده باشد
  • اطلاعات حساس حذف شده باشد
  • شماره Finding روی آن مشخص باشد

از قرار دادن ده‌ها Screenshot بدون توضیح خودداری کنید.


۱۱. Steps to Reproduce

در این بخش باید توضیح دهید که آسیب‌پذیری چگونه در محیط مجاز دوباره مشاهده می‌شود.

مثلاً:

1. وارد DVWA شوید.
2. بخش SQL Injection را باز کنید.
3. پارامتر id را بررسی کنید.
4. Request را با Burp Suite مشاهده کنید.
5. Request را به Repeater ارسال کنید.
6. رفتار ورودی کنترل‌شده را بررسی کنید.
7. Response را با حالت عادی مقایسه کنید.

هدف این بخش قابل بازتولید بودن Finding است.


۱۲. Impact

حالا باید توضیح دهیم:

اگر این مشکل در یک سامانه واقعی وجود داشته باشد، چه خطری ایجاد می‌کند؟

برای مثال:

Potential Impact:

- Unauthorized access to database information
- Data exposure
- Data manipulation
- Increased security risk

Impact باید واقع‌بینانه باشد.

از بزرگ‌نمایی غیرضروری خودداری کنید.


۱۳. Root Cause

یکی از قسمت‌های حرفه‌ای گزارش:

Root Cause

است.

مثلاً برای SQL Injection:

Root Cause:

Unsafe construction of SQL queries using
untrusted user input.

برای XSS:

Root Cause:

Insufficient output encoding before rendering
user-controlled data in the browser.

برای File Upload:

Root Cause:

Insufficient validation and unsafe handling
of uploaded files.

این بخش به تیم توسعه کمک می‌کند مشکل اصلی را بفهمد.


۱۴. Remediation

حالا مهم‌ترین سؤال:

چطور مشکل را برطرف کنیم؟

مثلاً برای SQL Injection:

Recommended Remediation:

- Use Prepared Statements
- Validate input
- Apply least privilege
- Avoid dynamic SQL construction
- Do not expose database errors

برای XSS:

Recommended Remediation:

- Context-aware output encoding
- Safe DOM APIs
- Input validation where appropriate
- Secure cookie configuration
- Appropriate Content Security Policy

برای File Upload:

Recommended Remediation:

- Allowlist required file types
- Validate file content
- Limit file size
- Generate server-side filenames
- Store files outside executable locations
- Disable script execution
- Enforce access control

۱۵. References

در گزارش حرفه‌ای می‌توانید منابع فنی مرتبط را نیز ذکر کنید.

مثلاً:

References:

OWASP Web Security Testing Guide
OWASP Top 10
CWE
CVSS

در پروژه‌های واقعی بهتر است نسخه و لینک دقیق منابع نیز ثبت شوند.


ساخت اولین Finding واقعی

حالا بیایید یک نمونه کامل برای آزمایشگاه خودمان بسازیم.

Finding #01 — SQL Injection

Title:
SQL Injection in DVWA

Severity:
High

Target:
192.168.56.20

Application:
DVWA

Endpoint:
SQL Injection

Parameter:
id

HTTP Method:
GET

Description

پارامتر id در بخش SQL Injection برنامه DVWA ورودی
کاربر را دریافت می‌کند و در سطح امنیتی آزمایشگاهی
مورد بررسی قرار گرفت.

رفتار برنامه در برابر ورودی‌های کنترل‌شده نشان داد
که ورودی می‌تواند بر منطق Query تأثیر بگذارد.

Evidence

Tool:
Burp Suite Repeater

Test:
Controlled input comparison

Result:
Different application responses were observed.

Impact

در یک برنامه واقعی، SQL Injection بسته به سطح دسترسی
Database و معماری برنامه می‌تواند منجر به افشای داده،
تغییر اطلاعات یا سایر پیامدهای امنیتی شود.

Root Cause

Improper handling of untrusted input in SQL query construction.

Remediation

- Use Prepared Statements
- Validate input
- Apply least privilege
- Hide database errors
- Review all database queries

Finding #02 — Reflected XSS

نمونه دوم:

Title:
Reflected Cross-Site Scripting

Severity:
Medium

Affected Component:
DVWA XSS Reflected

Parameter:
name

Description

پارامتر name در شرایط آزمایشگاهی به صفحه بازتاب داده شد
و مشخص شد که داده ورودی بدون Encoding مناسب در Context
HTML قرار می‌گیرد.

Impact

در یک برنامه واقعی، Reflected XSS می‌تواند در شرایط مناسب
باعث اجرای JavaScript در Context برنامه برای کاربر شود.

Root Cause

Insufficient output encoding.

Remediation

- Apply context-aware output encoding
- Avoid unsafe HTML insertion
- Use safe DOM APIs
- Review client-side rendering

Finding #03 — File Upload

Title:
Insecure File Upload

Severity:
High

Affected Component:
DVWA File Upload

Description

مکانیزم Upload در محیط آزمایشگاهی از نظر اعتبارسنجی
Extension، نوع محتوا، محل ذخیره‌سازی و قابلیت اجرای فایل
بررسی شد.

Impact

در یک سامانه واقعی، File Upload ناامن می‌تواند بسته به
پیکربندی Web Server و محل ذخیره فایل، ریسک‌های جدی
برای برنامه ایجاد کند.

Remediation

- Allowlist extensions
- Validate actual content
- Limit file size
- Generate random filenames
- Store uploads in non-executable locations
- Disable script execution
- Enforce authorization

Risk Matrix

برای خلاصه‌سازی می‌توانیم یک ماتریس ساده داشته باشیم:

احتمال تأثیر ریسک
بالا بالا بحرانی/بالا
بالا متوسط بالا
متوسط متوسط متوسط
پایین بالا متوسط/بالا
پایین پایین پایین

در پروژه‌های حرفه‌ای بهتر است از یک روش استاندارد مانند CVSS برای امتیازدهی استفاده شود.


CVSS چیست؟

Common Vulnerability Scoring System روشی استاندارد برای توصیف و امتیازدهی شدت آسیب‌پذیری‌هاست.

اما یک نکته مهم:

CVSS لزوماً برابر با Business Risk نیست.

ممکن است یک آسیب‌پذیری از نظر فنی امتیاز مشخصی داشته باشد، اما در یک سازمان خاص به دلیل ارزش بالای دارایی یا داده، اولویت بیشتری پیدا کند.

بنابراین در گزارش حرفه‌ای بهتر است:

Technical Severity
+
Business Context

در کنار یکدیگر در نظر گرفته شوند.


Remediation Priority

پس از شناسایی آسیب‌پذیری‌ها، باید مشخص کنیم کدام مورد زودتر اصلاح شود.

مثلاً:

Priority 1:
Critical / High Risk

Priority 2:
Medium Risk

Priority 3:
Low Risk / Informational

اما اولویت نهایی باید با توجه به محیط واقعی سازمان تعیین شود.


Retest چیست؟

بعد از اینکه تیم توسعه آسیب‌پذیری را اصلاح کرد، تستر باید دوباره آن قسمت را بررسی کند.

این فرآیند:

Retest

نام دارد.

چرخه:

Finding
   ↓
Report
   ↓
Fix
   ↓
Retest
   ↓
Verified

مثلاً:

SQL Injection
     ↓
Developer Fix
     ↓
Prepared Statement
     ↓
Retest
     ↓
Not Reproducible

در گزارش نهایی می‌توان وضعیت را مشخص کرد:

Status:
Remediated

یا:

Status:
Still Open

وضعیت آسیب‌پذیری‌ها

می‌توانیم از وضعیت‌های زیر استفاده کنیم:

Open
Confirmed
Remediated
Retest Required
Accepted Risk
False Positive

این وضعیت‌ها مدیریت Findings را ساده‌تر می‌کنند.


اشتباهات رایج در گزارش‌نویسی

❌ اشتباه اول: فقط نام آسیب‌پذیری

نوشتن:

SQL Injection - High

گزارش کاملی نیست.


❌ اشتباه دوم: نداشتن Evidence

بدون شواهد، بررسی Finding سخت می‌شود.


❌ اشتباه سوم: اغراق در Impact

مثلاً نباید صرفاً به دلیل مشاهده یک XSS بگوییم:

«کل سرور هک می‌شود.»

Impact باید بر اساس شواهد و شرایط واقعی بیان شود.


❌ اشتباه چهارم: ننوشتن راهکار اصلاحی

گزارش باید برای تیم توسعه قابل استفاده باشد.


❌ اشتباه پنجم: Screenshotهای بی‌هدف

هر Screenshot باید دلیل وجود داشته باشد.


گزارش تست نفوذ خوب چه شکلی است؟

یک گزارش حرفه‌ای باید:

Clear
Accurate
Reproducible
Evidence-Based
Actionable

باشد.

یعنی:

Clear

واضح و قابل فهم.

Accurate

بدون ادعاهای غیرواقعی.

Reproducible

قابل بازتولید.

Evidence-Based

مبتنی بر شواهد.

Actionable

دارای راهکار قابل اجرا.


🧪 تمرین نهایی قسمت ۱۰

حالا نوبت شماست.

در آزمایشگاه DVWA حداقل سه Finding ایجاد کنید:

Finding 1

SQL Injection

Finding 2

Reflected XSS

Finding 3

File Upload

برای هرکدام این موارد را بنویسید:

Title
Severity
Target
Endpoint
Parameter
Description
Evidence
Steps to Reproduce
Impact
Root Cause
Remediation
Status

📋 قالب آماده گزارش

می‌توانید این Template را برای پروژه‌های آزمایشگاهی خود استفاده کنید:

==================================================
PENETRATION TESTING REPORT
==================================================

Project:
Web Application Security Assessment

Target:
...

Tester:
...

Date:
...

Scope:
...

==================================================
EXECUTIVE SUMMARY
==================================================

...

==================================================
METHODOLOGY
==================================================

...

==================================================
FINDINGS SUMMARY
==================================================

1. ...
2. ...
3. ...

==================================================
FINDING #01
==================================================

Title:
...

Severity:
...

Target:
...

Endpoint:
...

Parameter:
...

Description:
...

Evidence:
...

Steps to Reproduce:
1.
2.
3.

Impact:
...

Root Cause:
...

Remediation:
...

Status:
...

==================================================
FINDING #02
==================================================

...

==================================================
CONCLUSION
==================================================

...

==================================================

🎯 جمع‌بندی قسمت ۱۰

در این قسمت یاد گرفتیم که تست نفوذ فقط پیدا کردن آسیب‌پذیری نیست.

یک فرآیند حرفه‌ای باید از:

Testing

به:

Evidence

و سپس:

Risk

و در نهایت:

Remediation

برسد.

مسیر کامل:

Reconnaissance
      ↓
Scanning
      ↓
Enumeration
      ↓
Testing
      ↓
Finding
      ↓
Validation
      ↓
Evidence
      ↓
Risk Rating
      ↓
Report
      ↓
Remediation
      ↓
Retest

اگر بتوانید این چرخه را به‌درستی انجام دهید، از مرحله «یادگیری ابزارهای هک» وارد مرحله مهم‌تری می‌شوید:

یادگیری حرفه‌ای فرآیند تست نفوذ و امنیت وب.

دسته بندی‌ها:

آنچه در این مقاله میخوانید

دیدگاه شما

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *