Jenkins ile Invicti Enterprise Entegrasyonu

Ferruh Mavituna - 22 Mayıs 2017 -

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 ile Invicti Enterprise Entegrasyonu

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.

Jenkins ile Invicti Enterprise Entegrasyonu -1

Adım 1: "Manage Jenkins > Manage Plugins" sayfasına gidilir.

Jenkins ile Invicti Enterprise Entegrasyonu -2

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.

Jenkins ile Invicti Enterprise Entegrasyonu -3

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.

Jenkins ile Invicti Enterprise Entegrasyonu -4

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.

Jenkins ile Invicti Enterprise Entegrasyonu -5

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.

Jenkins ile Invicti Enterprise Entegrasyonu -6

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
}

Jenkins ile Invicti Enterprise Entegrasyonu -7

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.

Jenkins ile Netsparker Cloud Entegrasyonu -8

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.

Jenkins ile Invicti Enterprise Entegrasyonu -9

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.

Jenkins ile Invicti Enterprise Entegrasyonu -10

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.

Jenkins ile Invicti Enterprise Entegrasyonu -11

Ferruh Mavituna

About the Author

Ferruh Mavituna

Ferruh Mavituna is the founder and CEO of Invicti Security, a world leader in web application vulnerability scanning. His professional obsessions lie in web application security research, automated vulnerability detection, and exploitation features. He has authored several web security research papers and tools and delivers animated appearances at cybersecurity conferences and on podcasts. Exuberant at the possibilities open to organizations by the deployment of automation, Ferruh is keen to demonstrate what can be achieved in combination with Invicti’s award-winning products, Netsparker and Acunetix.