Skip to content

Latest commit

 

History

History
122 lines (120 loc) · 9.67 KB

0x19|Source_Code_Review_SonarSource.md

File metadata and controls

122 lines (120 loc) · 9.67 KB

Source-Code Review

eval her zaman sıkıntı bir fonksiyondur, bu fonksiyonun parametresinde kullanıcının kontrol edebildiği hiçbir şey olmamalıdır.

Kod Analizi

Command Injection

image

  • .Net yazılımı bu, IntallPackage dediğinde aklına işletim sistemi üzerinde bir paket kurulumu olacak bu da arkada background proccess oluşturacak, directorylere bir şeyler yazılacak. image

  • Burada Command Injection zafiyeti var. Process’in Argüman’ına string concatenation yapılıyor Argüman passing yapılmamış durumda.

Code evalution

image

  • Bu input alanı genelde HTML oluyor. HTML templating var fonksiyonun ismi o zaten. image
  • Code evalution zafiyeti var burda. Eval fonk. parametresini son kullanıcı değiştirebilir burda oynamalar yapabilir.

SQL injection

image

  • Bu kısım kıllandırıyormuş: image
  • “nodeParm” kodu genel olarak incelediğinde, GET ve POST requestleri ile birlikte gelen ve userın kontrol edebildiği bir parametre.
  • Java kodu olduğu için, Java’da sqlRestriction kodunu gidip okuduğunda SQLi’dan kaçınman için gereken bir fonksiyon. “sqlRestriction” fonksiyonu virgülden sonraki nodeParmValue gibi parametreleri kontrol eder. Fakat burada “nodeParameterName” query template’dir ve kullanıcı manipüle edebildiği için SQL injection çıkar.

NOT: if else kısımlarını okumazmış, neyi trace edeceğine bakar eğer o parametre if else te geçiyorsa bakarmış.

KeySize

image

  • Burada yönetilebilen parametre tokendır. Direkt token’a odaklandır reis. Token’ı manipüle edemiyorsa okumazmış.
  • KeySize sen gidip 4096 yazdığında gidip değiştirmezmiş. Setter ve getter lar ile değiştirmek lazım diyor. image

Local File Inclusion(LFI)

image

  • Regex gördüğün anda şüphe uyandırır.
  • require_once dediğin anda burada Local File Inclusion vaar.
  • cookie ile bir şeyler geliyor. Regexi kontrol ettiğinde 46-122 arası karakterleri yasaklamış ama işte $ ile başlayan bir şey koyarak yine LFI yapılabilirmiş. image
$../../../../../../../../etc

XXE

image

  • XXE varmış burda
    • .odt dosyası
  • SAXBuilder ile aşağıda dox.getContent çalışınca, content.xml ‘i parse ediyor ve DTD lerin disable edilmesi yokmuş.

Log Forging Vulnerability

image

  • _create_export bir file oluşturuyo, bid ne işe yarıyor ona bir bakmak lazım hem input alanı zaten. Bu fonksiyonlar ne iş yapıyor bilemediği için gitti üsttekilere baktı
  • business_id ile log injection yapabiliyorum dedi. Devamını görmek lazım işte…
  • Jsonify outputu content type olarak json verirsen bile, body’i kontrol edebilsen bile browser render ettirtmiyor dedi image
  • Line 22’dee geçici log dosyası oluşturuluyor ardından siliniyor, buna injection yapılabilir. Bunu da söyledi

Deserialization

image

  • Untrusted source’dan aldığın datayı deserialize ediyosan .Net, Java gibi OOP dillerinde ciddi problem.
  • String’den direkt objeye dönme işi var burda.
  • “textReader” Deserialize ediliyor, bu da zaten input alanında var ayrıca stringi XML ‘e çeviriyor.

XSS

image

  • $upload_name kısmında XSS varmış.
    1. satır upload_name kullanıcıdan alınıyor ama sanitize ediliyor fakat sanitize etmenin hiçbir önemi yok. Burada HTML encoding yapman lazım.
    1. satırda echo veriyor burda da XSS varmış
  • Ayrıca 19..satırda upload_name kısmında hiçbir validation yok, burda da File Upload vuln. var.

Arbitrary File Overwrite

image

  • installRepository diyor, bir şeyler yüklenecek.
  • Arbitrary file overwriting
  • mode’u benden alıyor, repHome’u benden alıyor, repHome’u istallConfig’e yolluyor yani “dest” kontrol ediyoruz. Gidip config dosyası üstüne başka dosya yazır falan yani

Regular expression Denial of Service(ReDoS)

image

  • ReDoS var burda.
  • 36.satırda Regex(search) var.
  • Non-Deterministic Finite Automaton image
  • Recursive inner call’a girer bu da DOS’a sebep olur. a ile başlıyor b ile bitmesi gerekiyor, aa ile başlayıp a ile devam ediyor b ile bitiyor…..
  • .Net ile yazılıp NFA kullanan motorlarda bu sebep olabilir.

LDAP Injection

image

  • LDAP search injection.
  • 28.satırda ldapSearchFiler alıyor, filterın içine atyıor, 33te de ldap_seatch ediyor işte. 30.satıda req ile envvar alıyor.

ZIP Slip

image

  • Zip’i decomprise ederken programlama tarafında, çok dikkatli olunmalı. Zip’in içerisindeki syn-linkler ile dosyayı çıkardığında path traversal check yapmak lazım
  • Yani içerden ../../../ dosyası falan çıkarsa ne bok yiyecen??

Arbitrary File Deletion

image

  • get_addon_path adından belliymiş
  • gidip token alınıyor, temporarily bir path oluşuyor, bu dosya geçerli mi diye bakılıyor, sonra gidip o siliniyor.
  • Arbitrary file deletion.
  • tmp_token kullaınıcıdan alınıyor ve artık pathi o kontrol ediyor falan…

XSS

image

  • XSS var.
  • Html.Raw, Razor template engineinde default context encoding yapmaz. Default contex encodingi HTML ve attribute encoding için yapıyor.

Command Injection

image

  • Şu patterni gördüğün zaman renkli hikayeler dönüyor demektir. File’a “name” attribute’u atanması lazım burda da 8.satırda bütün alanlarına koymuş zaten

CORS Bypass

image

  • Cors bypass var:
    • referer header’ı parametre olarak alınıyor image
  • 14.satırda referer değil origin header’ı tarafından check edilmesi lazımmış CORS konusu.
  • Origini kontrol edip spoof edemiyoruz fakat referer’ı kontrol edebiliyoruz

Account Takeover

image

  • Account takeover…
    • password reset veya acount oluşturma olayı var bruda
  • Sana doğrualam epostası geliyor ya, bu token’ı offline olarak hesaplarsam sıkıntı
  • tokenı oluşturma fonksiyonu tahmin edilebilir.
  • CSPRNG

Path Traversal

image

  • \ ile de bakman lazım…
  • image’dan LFI yaparsın akarsın

XPath Injection

image

  • Kullaınıcdan alınan inputu direkt olmasa da query kısmına yapıştırıyor.
  • XPath injection

SSRF

image

Open Redirect

image

  • Django kullanılmış.
  • get_success_url returnüne redirect verilmiş
  • "next"e google.com yazarım akarım