Herkese merhaba, makalemde "Advanced Web Attacks and Exploitation (AWAE)" eğitiminde kısaca neler olduğuna, "Offensive Security Web Expert (OSWE)" sertifikasyon sürecinde hangi konulara odaklanılması gerektiğine ve katkılarının neler olduğuna değineceğim.

Her şeyden önce bu makalenin konusu olan OSWE'den daha faydalı olacağını düşündüğüm önemli iki farklı noktaya değinmek istiyorum.

I - Sizce sertifikalara olan bakış açımız doğru mu?

Çevremden ve iki senelik kısacık siber güvenlik hayatımdan edindiğim küçük tecrübeye göre hiç de doğru değil :) Bu yüzden söyleyeceklerime kulak verilmesi çok önemli.

En büyük yanlış, sertifikaların daha yüksek paralar kazandıracak ve yeni iş kapıları açacak parlak, şaşaalı kağıtlar olarak görülmesidir. Peki bu yanlış bir düşünce mi? Hayır bu da doğru :) İyi bir iş ve yüksek kazanç için elbette kurum ve kuruluşlar bu sertifikalara çok önem veriyor. Çünkü alınması zor şeyler. Eğer kişi önemli sertifikaları elde etmişse bir nevi bu sertifikalar kişinin bilgi düzeyini de temsil ediyor. Fakat yapılan hata sertifikanın alınmasında ki birincil amacın bu olarak görülmesidir. Eğer ilk amaç kişinin kendisini geliştirmesi değilse ne yazık ki genelde sertifika süreci başarısız geçiyor. Başarılı olunsa bile bilgi düzeyi yeterince ilerlemiyor.

Sertifikasyon sürecine girilmesindeki temel amaç yeni bilgiler öğrenmeye yönelik zorlanma olmalıdır. Şunu demek istiyorum; Sertifikasyona belirli bir ücret ödeyerek kayıt oluyorsunuz ve bu süreci iyi geçirmek için çalışma planı oluşturuyorsunuz. Sınavda başarısız olmamak için eğitime ait dökümanların tamamını okuyarak yapılması gerektiğine inadığınız her şeyi yapıyorsunuz. Sınava hazırlanırken daha önce duymadığınız terimleri ve konuları öğreniyorsunuz. Daha önce karşılaşmadığınız önemli noktaları araştırıp not alıyorsunuz. Peki sertifikasyon sürecine dahil olmasaydınız bu planı yine de yapar mıydınız? herhangi bir döküman/kaynak bulup bitirmeye çalışır mıydınız? Aslında hangi konuları öğrenmeniz gerektiğini bilebilir miydiniz? Bana soracak olursanız, çok düşük bir ihtimal derim. İşte bu yüzden sertifikasyon süreçleri aslında bize büyük bir amaç vermiş oluyor. Bizi bilmediğimiz bilgileri öğrenmeye zorluyor. Dolayısıyla sertifikasyonu bir kağıt parçası olarak değil, belirli bir amaca yönelik çalışma planı olarak görebiliriz. Tavsiyem bütçeniz yetiyorsa bu tip sertifikasyon programlarına kayıt olmanızdır. Arka planda beyniniz sizi sürekli çalışmanız gerektiği konusunda uyaracaktır ve bu sizin motivasyon kaynağınız olacaktır.

II - WEB dile mi kolay?

Biraz eleştirel yaklaşacağım ancak siber güvenlik sektöründe WEB'in bir çok kişi tarafından küçümsendiğini görüyorum. Halbuki uzaktan bir sunucu ele geçirilecekse bu %90 web üzerinden gerçekleşir çünkü hedef sisteme dışardan(uzaktan) erişim noktası genelde sadece web uygulaması olur. Bu yüzden web güvenliğinin önemi çok büyüktür. Küçümsenmesini bir kenarı bırakalım, karşılaştığınız her 10 kişiden 9'u web güvenlik uzmanı olabilir. Bu yaklaşım sektördeki herkesin en azından bir kaç kere web tasarım(kurulum demek daha doğru olabilir) işine girişmiş olmasından kaynaklanıyor. Kişi eğer web sitesi kurabiliyorsa rahatlıkla web güvenlik uzmanı diyebilirmişiz gibi davranılıyor. Tam olarak bir anlam verememekle birlikte temel sebep olarak WEB'in internet teknolojisinde insanların karşılaştığı ilk yapı olmasından kaynaklandığını düşünüyorum. Çünkü insanlar uzun süre kullandıkları herhangi bir şeyin genelde uzmanı olduklarını düşünürler. Ancak ne yazık ki gerçekçi bakıldığında işlerin böyle yürümediğini görebilirsiniz.

Bu konuya değinmemin sebebiyse, "Zaten ben bir web güvenlik uzmanıyım." diyorsanız OSWE sertifikasyonuna hiç bulaşmamanız gerektiğini söylemek istememdir. Çünkü sağlam bir tokat yiyebilirsiniz. Sorunun cevabı ise "Evet, WEB ne yazık ki dile kolaydır.". Eğer WEB'e aşık değilseniz OSWE sertifikasyon süreci sizi bunaltabilir hatta mevcut motivasyonunuzu kırabilir. WEB'e aç olmanız gerektiğinin altını çizerek makaleye devam ediyorum.

Aşağıda yer alan başlıklarla elimden geldiğince bilgi aktarmaya çalışacağım. Umarım faydalı olur.

- OSWE'den önce diğer sertifikaların alınması gerekiyor mu?

- AWAE eğitim içeriğinde neler var?

- Öneriler

- Sınav hakkında bilmeniz gerekenler

- Sınava girmeden önce hakim olunması gerekenler

# OSWE'den önce diğer sertifikaların alınması gerekiyor mu?

Bir çok kaynakta OSWE sertifikasının OSCP/OSCE'den sonra alınması gerektiği yazılıyor. Bu sertifikaları alan kişiler "bir sonraki hedefim OSWE" olarak duyuru geçiyor. Bence şart değil. Çünkü bu sertifikalar tamamen birbirinden farklıdır.

OSCP'de web uygulamalarına yönelik bir sömürü var evet. Ancak bu otomatize bir şekilde sorulmaktadır. Sizden herhangi bir exploit geliştirme veya kaynak kod analizi ile sıfırdan zafiyet bulma gibi ileri seviye web istenmemektedir. OSCP'de web uygulama ve servis zafiyetlerinin sömürülmesi aynı mantıkta olmakla birlikte var olan bir zafiyeti pentest metodolojisiyle keşfederek yayında olan exploit koduyla bu zafiyeti sömürmekten ibarettir. Ayrıca şunu da eklemem gerekir ki, OSCP her pentester'ın kesinlikle dahil olması gerektiği bir sertifasyon programıdır. Pentest vizyonu ve pratikliği katıyor. Ek olarak kali linux aşinalığına sahip oluyorsunuz. Zaten OSCP, kali linux ile penetrasyon testi gerçekleştirmeye yöneliktir.

OSWE ise çok farklı bir sertifikasyon programıdır. Soruyu "OSWE'den önce diğer sertifikaların alınması faydalı olur mu?" şeklinde değiştirecek olursak, işte o zaman evet derim. En azından web uygulamalarında daha önce keşfedilmiş zafiyetleri ve türlerini görmüş olursunuz. Bu zafiyetleri sömürmek için yazılmış exploit kodlarını inceleme şansınız olur ve çalışma mantıklarına yönelik alt yapı katabilir. Web uygulamasındaki bir zafiyeti sömürürken nasıl payload oluşturulur? ve sunucuda nasıl komut yürütülebilir? gibi sömürme işlemlerinin son aşamalarına yönelik soruların temel cevapları elde edilebilir.

Yine de WEB'in kendi başına çok farklı bir dünya olduğunu söylemek zorundayım. Bu sebepten dolayı OSCP'nin şart olduğunu düşünmüyorum. OSCE sertifikasyonunda web exploitation'a yer verilmiş fakat yine OSWE mantığında değil. Şuan OSCE sertifikasyonundayım. Yani OSWE'i OSCE'den sonra almadım :) Bu yüzden OSCE almakta şart değil. Kısacası OSWE almak için diğer sertifikasyonları almış olmak gerekmiyor ancak almışsanız faydaları elbette olacaktır.

# AWAE eğitim içeriğinde neler var?

Eğitim içeriğinden ne yazık ki etik olmaması sebebiyle tam anlamıyla bahsedemeyeceğim.Ancak yeteri kadar bilgi vereceğime inanıyorum.

Kurs müfredatı OffSec tarafından paylaşılmaktadır. Aşağıdaki link aracılığıyla erişebilirsiniz;

  • >> AWAE Syllabus
  • Ayrıca eğitimde anlatılmak istenilen konular için kullanılan zafiyetli uygulamaları ve sürümleri daha önce github ortamında paylaşıldı. Bu bilgilere ise aşağıdaki adreslerden ulaşabilirsiniz.

  • >> Project AWAE-PREP
  • >> Project AWAE-Preparation
  • Eğitim içeriği Steven Seeley(mr_me) tarafından hazırlanmışır. Dolayısıyla kendisinin paylaştığı blog yazılarını okumakta fayda olduğunu düşünüyorum. Kişisel blog sitesine srcincite.io adresinden ulaşabilirsiniz.

    Genel olarak aktarılmak istenilen temel konu, web uygulamaları ile sunucuda komut yürütmeye yöneliktir. Zafiyetlerin RCE'e nasıl dönüştürülebileceği veya hangi zafiyet türlerinin direkt olarak sunucu ile temasa sebebiyet verebileceğine değiniliyor. Yine bu zafiyetlerin nasıl otomatize(exploit) hale getirileceğinden de bahsediliyor.

    Eğitimde kaynak kod analizi hakkında bilgilendirme de yapılmaktadır. Zafiyetlerin keşfedilmesine yönelik kod takibi ve geliştiricilerin hangi fonksiyonlarda zayıflık bırakabileceğinin de üzerine gidiliyor. Aslında sıfırdan zafiyet keşfetmeye ve bu zafiyeti otomatize hale getirmeye yönelik bir eğitim oluşturulmak istenmiş diyebiliriz. Tabii artıları ve eksileri tartışılabilir.

    # Öneriler

    WEB'e aşık değilseniz farklı sertifikasyon programlarına yönelmenizi öneririm. Sertifikasyon sürecine girecek kişiler daha öncesinde kesinlikle web uygulamalarındaki popüler zafiyetlere aşina olmalıdır. Çünkü AWAE eğitiminde kesinlikle XSS,SQLi,RCE,SHijacking vb. gibi zafiyet türlerinin temel mantığı anlatılmamaktadır. Bir çok zafiyet türünün çalışma mantığını ve keşfedilme süreçlerine hakim olmalısınız.

    Örnek vermek gerekirsek, MYSQL,PostgreSQL veya MSSQL gibi veritabanı dillerinin de detayları verilmememektedir. Yani sizin SQL injection zafiyetini sömürmeniz için gerekli olan bu veritabanı dillerini daha önce kullanmış olmanız ve en azından SQL injection zafiyetinin bir kaç türünde bu veritabanı dillerini sömürmüş olmanız gerekiyor. Çünkü eğitimde sadece bir kaç farklı sömürü tekniği göreceksiniz.

    En önemli konulardan biri olan exploitation yani zafiyetin otomatize hale getirilmesinde ise yine daha önce bilgi sahibi olmak gerekiyor. Bu konuda önerim, python requests-httplib-httplib2, ruby net/http-HttpClient, javascript XMLHttpRequest gibi popüler dillere ait HTTP protokolüne yönelik istek gerçekleştirebilen kütüphanelerin incelenerek kullanılmış olunmasıdır.

    Üstünde durulması gereken en önemli konulardan bir diğeriyse neye çalışacağınızı bilmektir. Eğer doğru konulara çalışmazsanız süreci uzatabilirsiniz ve toparlanmayacak bir hal alabilir. İlk etapta bilgi sahibi olmadığınız konuları belirlemelisiniz ve sertifikasyon eğitiminden ayrı çalışmalısınız. Gerekli ön bilgiyi edindiğinizi düşündüğünüz anda sertifikasyon müfredatına devam edebilirsiniz. Bu şekilde size aktarılmak istenen noktaları kolaylıkla yakalayacaksınız.

    Şahsen ASP.NET bilgim daha önce zayıf olduğu için yaklaşık bir aylık bir süreci bu core yapısına çalışarak geçirdim. Daha sonra asıl konuya dönerek güvenliğe yönelik kaynak kod analizi üzerinden yolculuğa devam ettim. Zayıf olduğunuz yazılım dillerine ayrıca çalışıp geliştirmeli ve sertifikasyon sürecine devam etmelisiniz. Temeli iyi atılmamış bir binanın deprem anında çöküşü ne kadar kaçınılmazsa, yine temeli atılmamış bir bilginin o zeminde kalması mümkün değildir. Bu yüzden üst düzey bir bilgi edinmeden önce altını iyi doldurmak gerekiyor.

    # Sınav hakkında bilmeniz gerekenler

    Sınavda toplam beş farklı makina mevcut. Bir adet windows, bir adet linux sunucu olmak üzere iki farklı hedef makina ve debug işlemleri için bu iki makinanın kopyaları bulunuyor. Kopya makinaların creds bilgileri size temin edilmektedir. Beşinci makina ise sınav esnasında eğer dilerseniz kullanabileceğiniz Kali Linux makinasıdır. Bu makinanın bilgileri yine size temin edilmektedir.

    Her makinada farklı dillerde yazılmış birer adet web uygulaması bulunuyor. Sizden istenilen, kopya makinalarda bu uygulamaların kaynak kodlarını inceleyerek özel olarak yerleştirilmiş zafiyetleri keşfetmenizdir. Daha sonra ise keşfettiğiniz bu zafiyetlerle hedef makinalara saldırarak proof.txt dosyalarının içerisindeki bayrağı yakalamanız istenmektedir.

    İlk amacınız uygulamada yetkili kullanıcı haline gelmektedir (Authentication Bypass). Son olarak uygulamada yer alan farklı bir zafiyetle sunucuda komut yürütmeniz istenmektedir (Remote Code Execution). Sınavda kaynak kod analiz, zafiyet tarama veya otomatize exploitation araçları kesinlikle yasaktır. Tamamen manuel performans istenmektedir. AB işlemleri 35 puan olarak değerlendirilirken, RCE ise 15 puan olarak değerlendiriliyor. Toplamda en fazla 100 puana ulaşabilirsiniz. Sınavın taban geçme puanı ise 85'dir. Yani sadece bir adet RCE zafiyetini keşfedememe gibi bir lüksünüz var. Ayrıca belirtilen makinalardan en az birinde keşfedilen zafiyetlerin dilediğiniz herhangi bir dilde oneclick olarak birleştirilerek exploit edilmesi istenmektedir.

    Sınavın toplam süresi 48 saattir. Eğer sınavı geçerseniz ek olarak 24 saatte raporlama süresi verilmektedir.

    # Sınava girmeden önce hakim olunması gerekenler

  • PHP,Javascript,ASP.NET,Python dilleriyle yazılmış uygulamalar üzerinde kod analizi gerçekleştirebilecek seviyede olmalısınız. (Çok önemli)
  • Popüler veritabanı dilleri olan MySQL,MSSQL ve PostgreSQL yapılarına hakim olmalısınız.
  • Zafiyet türlerini manuel sömürebilecek bilgiye sahip olmalısınız.(Sınavda otomatize araçlar yasaktır.)
  • Keşfedilen zafiyeti otomatize(exploitation) hale getirmek için bu amaçla kullanılabilecek Ruby,Python,Perl gibi dillerden en az birine hakim olmalısınız. (Çok önemli. Çünkü zafiyeti keşfetseniz bile otomatize hale getiremezseniz puan alamıyorsunuz.)
  • Sunucuda komut yürütmeye yönelik farklı teknik ve vektörlere hakim olmalısınız. (Zafiyet keşfedilse bile komut yürütmek için gerekli olan payload/vektör sömürüye uygun olmalıdır.)
  • Aktarmak istediklerim bu kadardı. OSWE hakkındaki soru ve görüşlerinizi aşağıda yer alan yorum alanına bırakabilirsiniz. Bilgimin yettiği kadar cevap vermeye çalışacağım. Umarım faydalı bir konu olmuştur.

    Azimli günler dilerim. (AkkuS)