Bu konu altında zamanla bulduğum bug bounty programlarındaki zafiyetleri ve nasıl bulduğumu anlatacağım.
Dom Based XSS
Program bir kriptopara borsasıydı, ve fonksiyonları incelerken uygulamada site dışına verilen linkler bir yönlendirme sayfasına gönderiliyordu.
Ve bu link query stringteki bir parametre aracılığıyla gönderiliyordu sonra DOM manipüle edilerek a etiketi içerisine yazdırılıyordu.
yani ben x.com girdiğimde
<a href="x.com">x.com</a>
oluyordu
Deneme 0:
Bu tarz kritik fonksiyonlarda zaten XSS önlemi var olduğunu düşündüğümden direkt olarak XSS payloadını göndermedim veri olarak.
DENEME 1:
burada şu aklıma geldi: yönlendirme yapılan sayfada benden aldığı url içerisinde bir query stringte bir parametre gönderirsem ve onun içerisin XSS payload yazarsam çalışacak mıydı?
hemen şu payloadı oluşturdum:
payload 1: x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)>
ancak çıktıda HTML tarafında sanitize edildiği için < > gibi özel karakterler sadece browserda bir yansıtma olacaktır yani direkt html içerisinde bir özel anlam taşımayacaktır. dolayısıyla sanitize olduğundan zafiyet çıkmadı
Çıktısı şöyleydi yani:
çıktı 1: <a href="x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)>">x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)></a>
DENEME 2:
Backend htmldeki özel karakterleri sanitize ettiğinden dolayı a etiketi içerisinde href özelliğinden de çıkamazdım bu adımı da pas geçiyorum. yani şunu deneseydim bunu alırdım:
Payload 2: x.com/?gereksizzz="><img src=x onerror=prompt(1)>
Çıktı 2: <a href="x.com/?gereksizzz="><img src=x onerror=prompt(1)>">x.com/?gereksizzz="><img src=x onerror=prompt(1)></a>
hmm takıldık ha. işte burdan sonra araştırma yapmaya başladım.
DENEME 3:
HTML ve Javascript temellerim olduğundan dolayı şunu biliyorum. Web tarayıcıları bazı HTML etiketlerinde bazı javascript kodlarını çalıştırabilmekte.
Ve yaptığım araştırma sonucu a etiketi içerisindeki href özelliği direkt olarak javascript kodu çalıştırabilmekteyiz.
Payload 3:
Çıktı 4: <a href="javascript:alert(document.cookie)">javascript:alert(document.cookie)</a>
Ve kim ki yönlendirme sayfasındaki linke tıklarsa onun browserında bi popup açılır
Ödül: 1000 $
Dom Based XSS
Program bir kriptopara borsasıydı, ve fonksiyonları incelerken uygulamada site dışına verilen linkler bir yönlendirme sayfasına gönderiliyordu.
Ve bu link query stringteki bir parametre aracılığıyla gönderiliyordu sonra DOM manipüle edilerek a etiketi içerisine yazdırılıyordu.
yani ben x.com girdiğimde
<a href="x.com">x.com</a>
oluyordu
Deneme 0:
Bu tarz kritik fonksiyonlarda zaten XSS önlemi var olduğunu düşündüğümden direkt olarak XSS payloadını göndermedim veri olarak.
DENEME 1:
burada şu aklıma geldi: yönlendirme yapılan sayfada benden aldığı url içerisinde bir query stringte bir parametre gönderirsem ve onun içerisin XSS payload yazarsam çalışacak mıydı?
hemen şu payloadı oluşturdum:
payload 1: x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)>
ancak çıktıda HTML tarafında sanitize edildiği için < > gibi özel karakterler sadece browserda bir yansıtma olacaktır yani direkt html içerisinde bir özel anlam taşımayacaktır. dolayısıyla sanitize olduğundan zafiyet çıkmadı
Çıktısı şöyleydi yani:
çıktı 1: <a href="x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)>">x.com/?gereksiz_parametre=<img src=x onerror=prompt(1)></a>
DENEME 2:
Backend htmldeki özel karakterleri sanitize ettiğinden dolayı a etiketi içerisinde href özelliğinden de çıkamazdım bu adımı da pas geçiyorum. yani şunu deneseydim bunu alırdım:
Payload 2: x.com/?gereksizzz="><img src=x onerror=prompt(1)>
Çıktı 2: <a href="x.com/?gereksizzz="><img src=x onerror=prompt(1)>">x.com/?gereksizzz="><img src=x onerror=prompt(1)></a>
hmm takıldık ha. işte burdan sonra araştırma yapmaya başladım.
DENEME 3:
HTML ve Javascript temellerim olduğundan dolayı şunu biliyorum. Web tarayıcıları bazı HTML etiketlerinde bazı javascript kodlarını çalıştırabilmekte.
Ve yaptığım araştırma sonucu a etiketi içerisindeki href özelliği direkt olarak javascript kodu çalıştırabilmekteyiz.
Payload 3:
Kod:
javascript:alert(document.cookie)
Çıktı 4: <a href="javascript:alert(document.cookie)">javascript:alert(document.cookie)</a>
Ve kim ki yönlendirme sayfasındaki linke tıklarsa onun browserında bi popup açılır
Ödül: 1000 $
Bu içeriği görmek için giriş yapın.