Jenkins ile Invicti Enterprise Entegrasyonu
Bu yazımızda popüler Continuous Integration araçlarından biri olan Jenkins ile Invicti Enterprise tarafından yapılacak testlerin nasıl otomatize edilip Continuous Integration sürecine dahil edilebileceğini anlattık.
Jenkins Nedir?
Continuous Integration mimarisi günümüzdeki yazılım projelerinde olmazsa olmaz haline geldi. Deployment sürecinin otomatize olarak yapılmasının artılarından dolayı güvenlik testlerinin de bu mimari dahilinde otomatize edilmesi gereksinimi ortaya çıktı. Jenkins de popüler Continuous Integration araçlarından biridir.
Jenkins ile Netsparker Entegrasyonu Nasıl Yapılır?
Öncelikle Jenkins kurulumunu yaptıktan sonra, Jenkins web arayüzü açılır. Jenkins’in web arayüzüne http://127.0.0.1:8080/ adresinden ulaşabilirsiniz.
Jenkins web arayüzünü açtıktan sonra, ilk olarak "HTTP Request" eklentisinin kurulması gerekiyor. Eklentiyi kurmak için sırasıyla aşağıdaki görsellerdeki adımlar takip edilmeli.
Adım 1: "Manage Jenkins > Manage Plugins" sayfasına gidilir.
Adım 2: "Plugin Manager" sayfasındaki "Available" sekmesine geçilir ve sağ üstteki "Filter" alanına kurulacak eklentinin kodu olan "http_request" yazılır.
Ardından "Download now and install before restart" butonuna basılır.
Adım 3: Eklentinin indirildiği "Downloaded Successfully" çıktısından teyit edildikten sonra "Restart Jenkins when installation is complete and no jobs are running" seçeneğine tıklanır.
Adım 4: Jenkins yeniden başlatıldıktan sonra tekrar "Plugin Manager" sayfasına gidilip, "Installed" sekmesinden "HTTP Request" eklentisinin gerçekten kurulduğu teyit edilebilir.
"HTTP Request" hakkında daha fazla bilgi şu bağlantıdan alınabilir: https://wiki.jenkins-ci.org/display/JENKINS/HTTP+Request+Plugin
Artık Jenkins ile Invicti Enterprise'da tarama başlatabiliriz.
Invicti Enterprise'da tarama başlatabilmek için sırasıyla aşağıdaki görsellerdeki adımların uygulanması gerekiyor.
Adım 1: Invicti Enterprise'da "Your Account > API Settings" sayfasına gidilir ve "Token" değeri kopyalanır.
Invicti Enterprise'da API üzerinden tarama yapabilmek için bu Token'ı kullanmak gerekli.
Adım 2: Invicti Enterprise API dökümantasyonunda "scans/new" endpoint'ini kullanarak nasıl tarama başlatılacağına bakılabilir.
"scans/new" endpoint'ine şu bağlantıdan ulaşabilirsiniz: https://www.netsparkercloud.com/docs/api/post-api-1.0-scans-new/
Minimum konfigürasyon ile tarama başlatmak için endpoint'in aşağıdaki gibi bir JSON objesine ihtiyacı var;
{
"TargetUri": "http://asp.testsparker.com/",
"PolicyId": null,
"Scope": "EnteredPathAndBelow",
"CrawlAndAttack": true
}
Adım 3: Jenkins'in web arayüzü açılır ve "Freestyle project" seçeneği seçildikten sonra "OK" butonuna basılır.
Adım 4: Oluşturulan görevin konfigürasyon sayfasının "Build" sekmesinde "Add Build Step" butonuna basılıp "HTTP Request" seçeneği seçilir.
Adım 5: Gereken bilgiler aşağıdaki gibi doldurulur:
URL: https://www.netsparkercloud.com/api/1.0/scans/new
HTTP mode: POST
Accept: APPLICATION_JSON
Content-type: APPLICATION_JSON
Body: {
"TargetUri": "http://asp.testsparker.com/",
"PolicyId": null,
"Scope": "EnteredPathAndBelow",
"CrawlAndAttack": true
}
Ardından "Custom Headers" bölümündeki "Add" butonuna basılarak yeni bir header oluşturulur. Oluşturulan header ise aşağıdaki gibi olmalı:
Header: Authorization
Value: Basic m8htjJmXG0AGiaU9FLcf/7ycTfpvlFO3XlNhsY6Ww0w=
"Value"daki kırmızı ile işaretlenen kısma, Invicti Enterprise hesabınızda tanımlanmış Token değeri gelmelidir. Geçersiz veya yanlış bir token yazılması durumunda istek başarısız olacaktır.
Adım 6: Oluşturulan görev çalıştırıldıktan sonra "Console Output" sayfasındaki çıktı kontrol edilebilir. Çıktıda göründüğü üzere "scans/new" endpoint’ine bir istekte bulunulmuş ve ardından "HTTP/1.1 201 Created" cevabı alınmış. Bu çıktıdan anlaşılıyor ki tarama başarılı bir şekilde başlatıldı.
Bu tarama Invicti Enterprise üzerinde "Scans > Recent Scans" sayfasından kontrol edildiğinde ise aşağıdaki görseldeki gibi taramanın başarılı bir şekilde başlatıldığı görülür.