المراجعة قبل التسليم والـ Retest

جارٍ التحميل…

01 / ملخص الدرس

المراجعة قبل التسليم والـ Retest

Checklist مراجعة الجودة قبل ما تبعت التقرير: اسم العميل، والبيانات اللي ما اتخفتش، والـ TODO، وتسليم التقرير بأمان، وبعدين الـ Retest بعد الإصلاح.

02 / شرح الدرس مكتوبًا

نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.

أهلاً بيك. أسوأ غلطة ممكن تحصل: تبعت لعميل تقرير فيه اسم عميل تاني. وده بيحصل فعلاً، لما تنسخ من تقرير قديم. علشان كده فيه حاجة اسمها QA، يعني مراجعة الجودة.

الـ QA Checklist: اسم العميل والتواريخ صح في كل حتة. مفيش باسوردات أو بيانات حساسة باينة. مفيش TODO أو أماكن فاضية. كل Finding ليه دليل وتوصية. والأفضل، حد تاني يقرا التقرير قبلك. وزي ما قلنا، افتكر الـ Executive Summary، المدير مش هيقرا غيره. نعمل QA أوتوماتيك بسيط بـ Python: بيدوّر على TODO، وعلى باسوردات ما اتخفتش. نشغّل… مشكلتين. التقرير مش جاهز.

main.py
import re

report = """Penetration Test Report for ACME Corp
F-01 SQL Injection - evidence: F-01.png
F-02 Default password admin:Admin123 - evidence: TODO
Prepared for Globex Inc."""

problems = []
if "TODO" in report:
    problems.append("unfinished TODO left")
if re.search(r"\w+:\w*\d\w*", report):
    problems.append("password not redacted")

for p in problems:
    print("QA:", p)
print("ready to send" if not problems else "NOT ready")

المخرجات

QA: unfinished TODO left
QA: password not redacted
NOT ready

والتسليم نفسه: ما تبعتش التقرير attachment عادي في إيميل. ابعته متشفّر، زي PDF بباسورد أو 7z، والباسورد في قناة تانية زي التليفون. أو على portal آمن متفق عليه.

وبعد ما العميل يصلّح، بييجي الـ Retest: تجرّب نفس الخطوات تاني. ولكل Finding تكتب حالته: Fixed، أو Partially Fixed، أو Not Fixed. وتطلّع نسخة جديدة من التقرير، أو Retest Letter. دورك: التقرير فيه اسم عميل غلط في آخره. ضيف check بيدوّر على أسماء الشركات، ويقارنها باسم العميل الصح.

تمرين

ضيف client = "ACME Corp" و check بـ re.findall على أي اسم تاني.

الحل: نشغّل… لقينا Globex. الـ check ده لوحده ممكن يحمي سمعتك.

main.py
import re

report = """Penetration Test Report for ACME Corp
F-01 SQL Injection - evidence: F-01.png
F-02 Default password admin:Admin123 - evidence: TODO
Prepared for Globex Inc."""

problems = []
if "TODO" in report:
    problems.append("unfinished TODO left")
if re.search(r"\w+:\w*\d\w*", report):
    problems.append("password not redacted")
client = "ACME Corp"
for name in re.findall(r"for ([A-Z]\w+ (?:Corp|Inc)\.?)", report):
    if name.rstrip(".") != client:
        problems.append("wrong client name: " + name)

for p in problems:
    print("QA:", p)
print("ready to send" if not problems else "NOT ready")

المخرجات

QA: unfinished TODO left
QA: password not redacted
QA: wrong client name: Globex Inc.
NOT ready

الدرس الجاي: تقرير مخصوص… تقرير امتحان OSCP، وقواعده اللي لو ما مشيتش عليها، ممكن ما تنجحش. يلا بينا.

03 / دروس المسار (21)
  1. 01ليه التقرير أهم حاجة في الـ Pentest
  2. 02مين بيقرا التقرير؟
  3. 03نظام Notes من أول دقيقة
  4. 04Activity Log: كل حاجة بالوقت
  5. 05خلّي الـ Terminal يسجّل لوحده
  6. 06الأدلة: إيه اللي يعتبر دليل؟
  7. 07سلامة الأدلة: Hash و Chain of Custody
  8. 08إخفاء البيانات الحساسة (Redaction)
  9. 09خطوات إعادة التنفيد (Steps to Reproduce)
  10. 10الـ Impact: الخطر الحقيقي على البيزنس
  11. 11CVSS: الخطورة برقم
  12. 12الـ Risk Matrix: الاحتمال في الـ Impact
  13. 13ترتيب الأولويات والـ Quick Wins
  14. 14هيكل تقرير اختبار الاختراق
  15. 15الـ Executive Summary: صفحة للإدارة
  16. 16كتابة الـ Finding التقني
  17. 17توصيات الإصلاح اللي تتنفّد فعلاً
  18. 18خلّي Python يكتب التقرير
  19. 19المراجعة قبل التسليم والـ Retestانت هنا
  20. 20تقرير امتحان OSCP
  21. 21المراجعة النهائية: من الـ Note للتقرير