OWASP Noir’in Pasif Taramasını Keşfetmek | HAHWUL


Noir ile Sırları Tespit Etmek – PassiveScan Avantajı

Merhaba güvenlik tutkunları! Bugün OWASP Noir v0.18’in heyecan verici yeni özelliklerine, özellikle de PassiveScan işlevselliğine odaklanıyoruz. Bu güncelleme Noir’ın yeteneklerini geliştiriyor; Eskiden yalnızca uç noktaları tespit ederken artık kural dosyalarına dayalı olarak sırları ve diğer güvenlik sorunlarını da eş zamanlı olarak tanımlayabiliyor. Bu özellikten şu şekilde yararlanabilirsiniz:

Noir nedir?

OWASP Noir, yazılım sistemlerindeki güvenlik açıklarını belirlemeye adanmış açık kaynaklı bir projedir. API uç noktalarını, web uç noktalarını ve kaynak kodundaki diğer potansiyel giriş noktalarını keşfetme yeteneği sağlayarak beyaz kutu güvenlik testlerini ve güvenlik hatlarını geliştirmede uzmanlaşmıştır.

Daha fazlasını mı öğrenmek istiyorsunuz? Belgelerimize ve OWASP Proje Belgelerimize göz atın.

Noir’ın Pasif Taraması

Noir, v0.18.x sürümüyle birlikte etkinleştirilebilen PassiveScan özelliğini sunar. -P veya --passive-scan bayrak. Bu işlevsellik, aracın önceden tanımlanmış yollarda veya özel konumlarda pasif kuralları taramasına olanak tanır:

İşletim Sistemi Yol
MacOS: ~/.config/noir/passive_rules/
Linux: ~/.config/noir/passive_rules/
Windows: %APPDATA%\noir\passive_rules\

Her kural YAML formatını takip eder ve çeşitli kuralları OWASP Noir Pasif Kuralları’nda keşfedebilirsiniz. Örneğin, ÖZEL ANAHTARI tespit etmeye yönelik bir kural şuna benzer:

id: private-key
info:
  name: "Detect PRIVATE_KEY"
  author: 
    - "hahwul"
  severity: critical
  description: "Detects the presence of PRIVATE_KEY in the code"
  reference:
    - ""

matchers-condition: or
matchers:
  - type: word
    patterns:
      - "PRIVATE_KEY"
      - "-----BEGIN PRIVATE KEY-----"
    condition: or

  - type: regex
    patterns:
      - "PRIVATE_KEY\\s*=\\s*['\"]?[^'\"]+['\"]?"
      - "-----BEGIN PRIVATE KEY-----[\\s\\S]*?-----END PRIVATE KEY-----"
    condition: or

category: secret
techs:
  - '*'

Kuralların Hazırlanması

Bu kuralları verimli bir şekilde kullanmak için noir-passive-rules deposunu varsayılan yola kopyalamak isteyebilirsiniz:

git clone https://github.com/owasp-noir/noir-passive-rules ~/.config/noir/passive_rules/

Alternatif olarak, onu başka bir dizine kopyalayabilir ve Noir’ın yapılandırmasını bu yeni konumu işaret edecek şekilde güncelleyebilirsiniz:

# cat ~/.config/noir/config.yaml
passive_scan: true
passive_scan_path: ["~/repositories/noir-passive-rules"]

Taramayı Çalıştırma

Yapılandırıldıktan sonra -P bayrağıyla bir tarama başlatabilirsiniz:

Bunu çalışırken görmek için Rails uygulaması ve özel anahtarla basit bir test ortamı oluşturalım:

rails new testapp
openssl genrsa -out ./testapp/private_key.pem 1024

Şimdi Noir’ı çalıştırın:

Noir’ın yalnızca uç noktaları algılamakla kalmayıp aynı zamanda PassiveScan aracılığıyla PRIVATE_KEY dosyasını da tanımladığını göreceksiniz.

Diğer araçlarla entegrasyon gerekiyorsa çıktı biçimini örneğin JSON’a ayarlayabilirsiniz:

noir -b ./testapp/ -P -f json --no-log

Bu, hem uç nokta bilgilerini hem de pasif tarama bulgularını içeren sonuçları sağlayacaktır:

{
  "endpoints": [
    {
      "url": "/favicon.ico",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/favicon.ico"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/422.html",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/422.html"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/apple-touch-icon.png",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/apple-touch-icon.png"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/500.html",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/500.html"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/404.html",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/404.html"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/apple-touch-icon-precomposed.png",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/apple-touch-icon-precomposed.png"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/robots.txt",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp/public/robots.txt"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    },
    {
      "url": "/up",
      "method": "GET",
      "params": [],
      "details": {
        "code_paths": [
          {
            "path": "./testapp//config/routes.rb"
          }
        ]
      },
      "protocol": "http",
      "tags": []
    }
  ],
  "passive_results": [
    {
      "id": "private-key",
      "info": {
        "name": "Detect PRIVATE_KEY",
        "author": [
          "hahwul"
        ],
        "severity": "critical",
        "description": "Detects the presence of PRIVATE_KEY in the code",
        "reference": [
          ""
        ]
      },
      "category": "secret",
      "techs": [
        "*"
      ],
      "file_path": "./testapp/private_key.pem",
      "line_number": 1,
      "extract": "-----BEGIN PRIVATE KEY-----"
    }
  ]
}

PassiveScan’i güvenlik kontrollerinize entegre ederek yalnızca uç nokta tespitini geliştirmekle kalmaz, aynı zamanda gizli güvenlik açıklarını ortaya çıkarma yeteneğinizi de önemli ölçüde geliştirirsiniz.

Güvende kalın ve mutlu taramalar yapın!



Source link