1 / 103

Güvenli Yazılım Geliştirme : OWASP

www.cihanozhan.com

cihanozhan
Download Presentation

Güvenli Yazılım Geliştirme : OWASP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OWASP{Open Web Application Security Project} www.cihanozhan.com

  2. OWASP Nedir? • OWASP kar amacı gütmeyen global bir organizasyondur(hayır kurumu). • Odak noktası web uygulama güvenliğidir. • The Top Ten Most Critical Web Application Security Risks adında bir doküman yayınlar. • Top 10dökümanı teknoloji bağımsız bir website güvenlik risklerini yönetim rehberidir. • Top 10 web uygulama geliştiricileri ve güvenlik uzmanları için güvenlik odağında bir rehberdir.

  3. Top 10 • Injection • XSS : Cross-Site Scripting • BrokenAuthenticationandSession Management • Insecure Direct Object References • CSRF : Cross-Site RequestForgery • Security Misconfiguration • InsecureCryptographic Storage • FailuretoRestrict URL Access • Insufficient Transport LayerProtection • UnvalidatedRedirectsandForwards

  4. SQL Injection{OWASP} www.cihanozhan.com

  5. TemellerTrusted?Untrusted? http://www.ecommerce.com/product?id=1 = SELECT * FROM Products WHERE ID = 1

  6. Güvenilmez Veri • Bütünlüğü doğrulanamaz veriler • Kötü niyetli olabilir. • Veri çeşitli yük içerebilir: • SQL Injection • XSS : Cross-Site Scripting • Kötü Amaçlı Yazılım İçeren Binary Dosya • Güvenilmez verinin kaynakları: • Kullanıcıdan • Routing ya da QueryString vasıtasıyla • Form’dan POST edilerek • Tarayıcıdan • Cookie’lerde • RequestHeader’ında • Diğer Yerler • Harici servisler • Kendi veritabanın!

  7. Story? • Sony hacked! 2011… • https://thehackernews.com/2011/06/sony-pictures-hacked-and-database.html • https://www.troyhunt.com/brief-sony-password-analysis/ • Neler çalındı? • 1.000.000 kullanıcının kritik bilgileri • Emailadresleri, Parolalar, Ev Adresleri, Doğum Tarihleri vb…

  8. Örnek Sorgular SELECT * FROM users WHERE username = 'cihanozhan' AND password = 'choqHizliBeYa'; username = "cihanozhan' OR 1=1; --" password = "blank " SELECT * FROM users WHERE username = 'cihanozhan' OR 1=1; --' AND password = 'blank';

  9. Örnek Sorgular SELECT * FROM categories WHERE name = '${query}'; query= "q' OR 1=(SELECT COUNT(*) FROM AdminLogins); --" query= "q' UNION SELECT username, password FROM Users; --" query= "q'; DROP TABLE Customers; --" query= "q'; UPDATE Users SET admin=1 WHERE username='hacker'; --" query= "q'; INSERT INTO Orders(customer_id, product_id, paidAmount) VALUES(354, 729, 755.0); --"

  10. Demo! • Genel uygulama yapısını oluşturmak • SQL Injection sorgusu ile sistemi manipüle etmek

  11. Nasıl Korunuruz?(ParameterisedInline SQL) • Demo demodemo…

  12. Nasıl Korunuruz?(StoredProcedure) • Demo demodemo…

  13. WhiteListvs.BlackList

  14. WhiteListvs. WhiteList • BlackList:Engellenenler listesi • WhiteList:Kabul edilecekler listesi

  15. Nasıl Korunuruz?(WhiteList nasıl uygulanır?) • Güvenilmeyen tüm veriler iyi bilinen değerler ile doğrulanmalıdır. • WhiteList, güvenli olduğu iyi bilinen/belirlenmiş değerlerden oluşur. • Bu çok net/açık bir kontrol yöntemidir. • Güvenmediğimiz olası herşeyi filtreler. • BlackList, güvenli olmadığı bilinen/belirlenmiş değerlerden oluşur. • Çok net olmayan ve üstü kapalı bir yöntem. • Listede olmayan herşeyin güvenli olduğunu öngörür.

  16. Nasıl Korunuruz?(WhiteListyaklaşımları) • Tür dönüşümü • Integer, Date, GUID vb… • RegularExpressions • Email, Telefon No, Ad(Dikkatli ol!) • Açıkça bilinen verilerin listesi • Renkler, Markalar, Ülkeler, Şehirler, Ürünler vb…

  17. Nasıl Korunuruz?(WhiteList) • Demo demodemo…

  18. Nasıl Korunuruz?(ORM, Framework) • Framework ve ORM’nin güvenliğe katkısı nedir? • Entity Framework? • Demo, demo, demo…

  19. Nasıl Korunuruz?(StoredProcedureBi’ Mucize mi?) • Demo, demo, demo…

  20. Nasıl Korunuruz?(Özet) • Veritabanı kullanıcısına sınırlı yetkiler vermek • Veritabanına gelen veri filtrelenip temizlenmeli • SQL için escape karakterleri kullanmak • PreparedStatements • SET @sql = "SELECT * FROM Categories WHERE name = ?"; • PREPARE stmt FROM @sql; • EXECUTE stmt USING @query;

  21. SQL Injection(Araç-Gereçler) • Netsparker • https://www.netsparker.com.tr/ • BSQL Hacker • https://www.darknet.org.uk/2008/09/bsql-hacker-automated-sql-injection-framework/ • https://labs.portcullis.co.uk/tools/bsql-hacker/ • SQLmap • https://github.com/sqlmapproject/sqlmap(TR) • SQLninja • http://sqlninja.sourceforge.net/ • Havij • https://www.darknet.org.uk/2010/09/havij-advanced-automated-sql-injection-tool/ • Safe3 SQL Injector • https://sourceforge.net/projects/safe3si/ • SQLsus • http://sqlsus.sourceforge.net/ • Mole • https://sourceforge.net/projects/themole/files/

  22. SQL Injection(Araç-Gereçler) • jSQLInjection • https://www.kitploit.com/2015/12/jsql-injection-v073-java-tool-for.html • BBQSQL • https://www.kitploit.com/2016/10/bbqsql-blind-sql-injection-exploitation.html • NoSQLMap • https://www.kitploit.com/2016/02/nosqlmap-v06-automated-nosql-database.html • Whitewidow • https://www.kitploit.com/2017/05/whitewidow-sql-vulnerability-scanner.html • DSSS • https://www.kitploit.com/2017/08/dsss-damn-small-sqli-scanner.html • Explo • https://www.kitploit.com/2017/05/explo-human-and-machine-readable-web.html • Blind-SQL-Bitshifting • https://www.kitploit.com/2016/04/blind-sql-bitshifting-blind-sql.html • Leviathan • https://www.kitploit.com/2017/04/leviathan-wide-range-mass-audit-toolkit.html • Blisqy • https://www.kitploit.com/2017/10/blisqy-exploit-time-based-blind-sql.html

  23. XSS : Cross-Site Scripting{OWASP} www.cihanozhan.com

  24. XSS XSS açıkları uygulama kullanıcıdan veri alıp, bunları herhangi bir kodlama ya da doğrulama işlemine tabi tutmadan sayfaya göndermesi ile oluşur. XSS saldırganın kurbanın tarayıcısında kullanıcı oturumları bilgilerin çalınmasına, web sitesinin tahrif edilmesine veya solucan yüklenmesine sebep olan betik çalıştırmasına izin verir.

  25. Hack News • MySpaceHack • https://samy.pl/myspace/ • https://samy.pl/myspace/tech.html

  26. Trustedvs. Untrusted http://www.cihanozhan.com/search?q=bombili Yukarıdaki URL’de dışarıdan alınan bombili verisi haricinde herşeytrusted, bombili ise kullanıcıdan alındığı için untrusted veridir. Yani asla güvenilemez!

  27. HackYapalım! • Demo, demo, demo…

  28. OutputEncodingConcepts • Arama alanı markup biçimlendirme için kullanılmaz, sadece veri alır. • XSS saldırıları, uygulamanın bir XSS yükünün(payload) data context(veri bağlamı)’ten çıkmasına ve markup içeriğini değiştirmesine izin verdiği için mümkündür. Yani bu teknik bir gereksinimin sonucudur. • XSS riskinin azaldığından emin olmak için metin kutusuna girilen verinin sayfada girildiği gibi görüntülendiğinden emin olunmalıdır. • HTML markup tarayıcının kod alanında şöyle görünmelidir. • <i>bombili</i> • &lt;i&gt;bombili&lt;/i&gt;

  29. EncodingTypes • CSS • HTML • HTML attribute • HTML from URL • JavaScript • LDAP distinguished name • LDAP filter • URL • URL path • XML • XML attribute

  30. Tarayıcı Çıktısı Nasıl Olmalı? • Orijinal veri : <i>bombili</i> • HTML Çıktısı : &lt;i&gt; bombili &lt;/i&gt; • JavaScript Çıktısı : \x3ci\x2ebombili\x3c\x2fi\x3e • CSS Çıktısı : \00003Ci\00003Ebombili\00003C\00002Fi\00003E Not :OutputEncoding işlemlerinde kendini kanıtlamış kütüphaneler kullanılmalı.

  31. OutputEncoding • Demo, demo, demo… • HTML BasedEncoding • JavaScriptBasedEncoding (AntiXss) • https://docs.microsoft.com/tr-tr/dotnet/api/system.web.security.antixss?view=netframework-4.8

  32. Kontrol Bazlı Encoding’i Anlamak • Demo, demo, demo… • ASP.NET Web Form ControlsEncodings • ASP.NET MVC Control Encodings

  33. RegExWhiteList İzin Verilen Değerler • RegularExpression desenlerini bir WhiteList filtresi olarak kullanmak!

  34. RequestValidation • RequestValidation nedir?

  35. RequestValidation(Yöntemler) • Application Level • Page Level • Control Level

  36. RequestValidation(Application Level) • Demo, demo, demo…

  37. RequestValidation(PageLevel) • Demo, demo, demo…

  38. RequestValidation(Control Level) • Demo, demo, demo…

  39. TinyURL? • Demo, demo, demo… • https://tinyurl.com/y28zle9t • Kısa URL’ler ile de hackleyebiliriz. Hiç sorun değil…

  40. Native Browser Defence • Tarayıcılarda doğal olarak gelen bir savunma mekanizmasıdır. • Tarayıcı özelinde NBD desteğini araştırmanızı öneririm. • Google Chrome’da varsayılan olarak XSS savunması bulunmaktadır.

  41. Hack News • Apple

More Related