Təhlükəsiz proqram təminatının Java
mühitində hazırlanma texnologiyaları
Samir Həsənov
Qafqaz Universiteti
Kompyuter Mühən...
İnternet nədir?
• Milyonlarla kompyuterin qarşılıqlı məlumat
mübadiləsini dəstəkləyən şəbəkə
• Qlobal əlaqə şəbəkəsi
• Ümü...
İnternetdə məlumat ötürmə modelləri
Client-Server Peer-to-Peer
WWW – World Wide Web
• İnternetdə istifadə olunan servislərdən biri
• Veb anlayışı
• Veb resurslar
• İstifadə olunan model...
URL, URİ və ya URN
• URL – Uniform Resource Locator
• URİ – Uniform Resource İdentifier
• URN – Uniform Resource Name
http...
Veb proqramlar
• Veb serverdə yerləşdirilir
• Brauzer vasitəsilə qoşulma
• Klient – Server modeli istifadə olunur
• HTTP p...
Veb tətbiqin strukturu
Hər hissəyə uyğun hücum taktikaları
Hər hissəyə uyğun hücum taktikaları
Hər hissəyə uyğun hücum taktikaları
Hər hissəyə uyğun hücum taktikaları
Hər hissəyə uyğun hücum taktikaları
Hansı veb tətbiqlər hücuma daha
çox məruz qalır?
Məşhur hücum taktikaları
Baxacağımız taktikalar
• Cross-Site Scripting (XSS, Script İnjection)
• Cross-Site Request Forgery (CSRF)
• Clickjacking
•...
XSS
XSS
• Non-persistent
• Persistent (stored)
• DOM-based xss
1) HTTP sorğu ilə səhifə yüklənə bilən skript
2) Verilənlər baz...
Non-Persistent XSS
Səhifəyə http sorğudan gələn parametrlər
sanitarizasiya keçmədən yüklənirsə. Məs.
Tapılmayan axtarış sö...
Persistent XSS
• HTTP sorğudan gələn parametr sanitarizaiya olunmadan
verilənlər bazasına yazılır və gələcəkdə digər istif...
XSS nəticələri
• Cookie oğurlamaq
<script>alert(document.cookie);</script>
• Saytı deface etmək
http://www.example.com/sea...
XSS Qorunma
• HTTP Sorğu ilə gələn parametrləri
sanitarizasiya etmək (html teqlərdən və script-
lərdən təmizləmək)
• Bazay...
Cross-Site Request Forgery (CSRF)
CSRF
• Hər hansı istifadəçi adından hal-hazırda aktiv sessiyası olduğu
saytlarda əməliyyat keçirtmək üçün istifadə oluna b...
CSRF
• Xaker seçdiyi istifadəçiyə GET sorğusunun məzmunu
dəyişdirib göndərir. Beləliklə aktiv sessiyası olan istifadəçinin...
CSRF Qorunma
• Gizli Cookie dəyişəni istifadə etmək və hər
əməliyyat öncəsi ilkin olaraq yoxlamaq
• Əməliyyatlarda HTTP PO...
Clickjacking
Clickjacking
• Veb səhifəyə şəffaf freym yükləməklə
istifadəçinin bu freym üzərində olan
əməliyyatları yerinə yetirməsinə ...
Clickjacking nəticələri
• Sosial şəbəkələrdə geniş istifadə olunan hücum texnikasıdır
(facebook-da istifadəçilərə səhifələ...
Clickjacking Qorunma
• HTTP Response Header istifadə etmək
X-Frame-Options Header:
1. DENY – iframe-lərə icazə verməmək
2....
Directory/Path Traversal
Directory/Path Traversal
• “../” (dot dot slash) hücumu da deyilir
• Serverdə yerləşən faylları əldə etmək imkanı
yaradır
...
Directory Traversal
• Nümunə:
http://some_site.com.br/get-files.jsp?file=report.pdf
http://some_site.com.br/get-page.php?h...
Directory Traversal
Kataloq arası keçid simvolları:
1. Unix – Root kataloq “ / ”
Unix – Kataloq keçidi “ / ”
2. Windows – ...
Directory Traversal – Sadə Filtri
Keçmək üçün sorğu kodlaşdırılması
Sorğu dəyişmə
“%2e%2e%2f” = ../
“%2e%2e/” = ../
“..%2f...
Directory Traversal Qorunma
• Fayl sistemi ilə işləyərkən istifadəçidən gələn
məlumatı direkt istifadə etməmək
• İstifadəç...
SQL İnjection
SQL İnjection
• SQL inyeksiya relyasiya verilənlər bazası ilə
işləyən və sql sorğuları düzgün generasiya
etməyən proqramla...
SQL İnjection
Nümunə - İstifadəçidən gələn sorğu ilə sql generasiya
www.example.com/login.jsp?username=user&password=pass
...
SQL İnjection Qorunma
• Javada SQL sorğuları üçün PreparedStatement
sinfindən istifadə etmək:
String usr = req.getParamete...
SQL Injection Qorunma
• Dinamik SQL sorğular yerinə Oracle PLSQL
prosedur dilindən istifadə etmək
• PrepaparedStatement si...
Son söz
• Veb proqram yazılarkən əsas diqqət yetirilməli
məsələlər
• İstifadəçi potensial xaker ola bilər,
istifadəçidən g...
Upcoming SlideShare
Loading in …5
×

Təhlükəsiz proqram təminatının hazırlanma texnologiyaları

477 views

Published on

Published in: Software
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
477
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Təhlükəsiz proqram təminatının hazırlanma texnologiyaları

  1. 1. Təhlükəsiz proqram təminatının Java mühitində hazırlanma texnologiyaları Samir Həsənov Qafqaz Universiteti Kompyuter Mühəndisliyi
  2. 2. İnternet nədir? • Milyonlarla kompyuterin qarşılıqlı məlumat mübadiləsini dəstəkləyən şəbəkə • Qlobal əlaqə şəbəkəsi • Ümümdünya kompyuter şəbəkələr sistemi • Və s.
  3. 3. İnternetdə məlumat ötürmə modelləri Client-Server Peer-to-Peer
  4. 4. WWW – World Wide Web • İnternetdə istifadə olunan servislərdən biri • Veb anlayışı • Veb resurslar • İstifadə olunan model: Klient-Server • Əsas protokol: HTTP • Request – Response (Sorğu - Cavab) anlayışı
  5. 5. URL, URİ və ya URN • URL – Uniform Resource Locator • URİ – Uniform Resource İdentifier • URN – Uniform Resource Name http://en.example.org:8080/file.html
  6. 6. Veb proqramlar • Veb serverdə yerləşdirilir • Brauzer vasitəsilə qoşulma • Klient – Server modeli istifadə olunur • HTTP protokolu istifadə olunur
  7. 7. Veb tətbiqin strukturu
  8. 8. Hər hissəyə uyğun hücum taktikaları
  9. 9. Hər hissəyə uyğun hücum taktikaları
  10. 10. Hər hissəyə uyğun hücum taktikaları
  11. 11. Hər hissəyə uyğun hücum taktikaları
  12. 12. Hər hissəyə uyğun hücum taktikaları
  13. 13. Hansı veb tətbiqlər hücuma daha çox məruz qalır?
  14. 14. Məşhur hücum taktikaları
  15. 15. Baxacağımız taktikalar • Cross-Site Scripting (XSS, Script İnjection) • Cross-Site Request Forgery (CSRF) • Clickjacking • Directory/Path Traversal • SQL İnjection
  16. 16. XSS
  17. 17. XSS • Non-persistent • Persistent (stored) • DOM-based xss 1) HTTP sorğu ilə səhifə yüklənə bilən skript 2) Verilənlər bazasından yüklənən skript 3) Dom elementlər ilə yüklənən skript
  18. 18. Non-Persistent XSS Səhifəyə http sorğudan gələn parametrlər sanitarizasiya keçmədən yüklənirsə. Məs. Tapılmayan axtarış sözü və ya tapılmayan səhifə sorğusu. Nümunə: <% String eid = request.getParameter("eid"); %> ... Employee ID: <%= eid %>
  19. 19. Persistent XSS • HTTP sorğudan gələn parametr sanitarizaiya olunmadan verilənlər bazasına yazılır və gələcəkdə digər istifadəçilərə göstərilirsə. Nümunə: <%... Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from emp where id="+eid); if (rs.next();) { String name = rs.getString("name"); } %> Employee Name: <%= name %>
  20. 20. XSS nəticələri • Cookie oğurlamaq <script>alert(document.cookie);</script> • Saytı deface etmək http://www.example.com/search?s=<script>alert(‘xss’)</script> <IMG SRC="http://mywebsite.com/defacepic.jpg"> • Redirekt üçün <script>window.open( "http://www.example.net/" )</script>
  21. 21. XSS Qorunma • HTTP Sorğu ilə gələn parametrləri sanitarizasiya etmək (html teqlərdən və script- lərdən təmizləmək) • Bazaya təmizlənmiş input yazmaq • Səhifəyə render üçün yalnız sanitarizasiya keçmiş verilənlər göndərmək
  22. 22. Cross-Site Request Forgery (CSRF)
  23. 23. CSRF • Hər hansı istifadəçi adından hal-hazırda aktiv sessiyası olduğu saytlarda əməliyyat keçirtmək üçün istifadə oluna biləcək bir hücum mexanizmidir Nümunə: Bank proqramında bir hesabdan digər hesaba pul köçürməsi sadə HTTP GET metodu ilə keçirilir GET http://bank.com/transfer.do?acct=BOB&amount=100
  24. 24. CSRF • Xaker seçdiyi istifadəçiyə GET sorğusunun məzmunu dəyişdirib göndərir. Beləliklə aktiv sessiyası olan istifadəçinin hesabından pul çəkilmiş olur http://bank.com/transfer.do?acct=MARIA&amount=100000 Və ya hər hansı dom element daxilində yerləşdirilən URL <a href="http://bank.com/transfer.do?acct=MARIA&amount=100000">View my Pictures!</a> <img src="http://bank.com/transfer.do?acct=MARIA&amount=100000" width="1" height="1" border="0">
  25. 25. CSRF Qorunma • Gizli Cookie dəyişəni istifadə etmək və hər əməliyyat öncəsi ilkin olaraq yoxlamaq • Əməliyyatlarda HTTP POST metodu istifadə etmək • Bir biznes əməliyyatını bir neçə addım ilə yerinə yetirmək
  26. 26. Clickjacking
  27. 27. Clickjacking • Veb səhifəyə şəffaf freym yükləməklə istifadəçinin bu freym üzərində olan əməliyyatları yerinə yetirməsinə nail olmaq Nümunə: Css z-index ilə səhifəyə yüklənən şəffaf freym səhifə kontentinin üzərinə yerləşdirilir. Hər hansı düyməyə klik edən istifadəçi əslində freymin üzərində yerləşdirilmiş düyməni klikləmiş olur
  28. 28. Clickjacking nəticələri • Sosial şəbəkələrdə geniş istifadə olunan hücum texnikasıdır (facebook-da istifadəçilərə səhifələri LİKE etdirmək) • İstifadəçinin aktiv sessiyası olan saytlarda URL dəyişdirilməsi ilə əməliyyatlar icra etmək (elektron məktub və məlumatları silmək kimi) • Flash ilə isitfadəçinin kompyuter kamera və dinamikindən istifadə etmək • Sosial şəbəkələrdə istifadəçini profil məlumatlarını gizli rejimdən çıxarmaq və s.
  29. 29. Clickjacking Qorunma • HTTP Response Header istifadə etmək X-Frame-Options Header: 1. DENY – iframe-lərə icazə verməmək 2. SAMEORİGİN – yalnız cari saytdan freym qəbul etmək 3. ALLOW-FROM uri – yalnız göstərilmiş adresdən freym qəbul etmək • Klient tərəf xüsusi skript istifadə etmək (hazırki işləyən pəncərənin ən üst layda olduğunu yoxlamaq üçün)
  30. 30. Directory/Path Traversal
  31. 31. Directory/Path Traversal • “../” (dot dot slash) hücumu da deyilir • Serverdə yerləşən faylları əldə etmək imkanı yaradır • Serverdə yerləşən hər hansı proqram təminatını remote olaraq işlətmək imkanı
  32. 32. Directory Traversal • Nümunə: http://some_site.com.br/get-files.jsp?file=report.pdf http://some_site.com.br/get-page.php?home=aaa.html http://some_site.com.br/some-page.asp?page=index.html Burada server http sorğuda gələn adlı faylı istifadəçiyə göstərir. Fayl adı yerinə yazsaq “../../../../some dir/some file” Ümumi sorğu belə alınar: http://some_site.com.br/get-files?file=../../../../some dir/some file
  33. 33. Directory Traversal Kataloq arası keçid simvolları: 1. Unix – Root kataloq “ / ” Unix – Kataloq keçidi “ / ” 2. Windows – Root kataloq “KataloqAdı: ” Windows – Kataloq keçidi “ / ” “ ”
  34. 34. Directory Traversal – Sadə Filtri Keçmək üçün sorğu kodlaşdırılması Sorğu dəyişmə “%2e%2e%2f” = ../ “%2e%2e/” = ../ “..%2f” = ../ “%2e%2e%5c ” = .. “%2e%2e ” = .. “..%5c” = .. “%252e%252e%255c” = .. və s. Url Encoding • “..%c0%af” = ../ • “..%c1%9c” = ..
  35. 35. Directory Traversal Qorunma • Fayl sistemi ilə işləyərkən istifadəçidən gələn məlumatı direkt istifadə etməmək • İstifadəçinin sorğusuna faylı adını və ya tam yolunu deyil, sadəcə hər fayla verilmiş index (id) istifadə etmək (məs. 1-test.pdf, 2 – a.txt) • İstifadəçinin yazdığı fayl adını server tərəfdə fayl kodu ilə başlamaq • Hər hansı kataloq keçid operatorlarını istifadəçidən qəbul etməmək
  36. 36. SQL İnjection
  37. 37. SQL İnjection • SQL inyeksiya relyasiya verilənlər bazası ilə işləyən və sql sorğuları düzgün generasiya etməyən proqramlarda müvəffəqiyyətli olur • Dinamik SQL sorğular da bu inyeksiyaya məruz qala bilərlər
  38. 38. SQL İnjection Nümunə - İstifadəçidən gələn sorğu ilə sql generasiya www.example.com/login.jsp?username=user&password=pass SQL – “select * from users u where u.username=‘” + user + “’ and u.password=‘” + password + “’”; Istifadəçi adı yerinə “' or '1'='1' --” yazılarsa (Oracle üçün) SQL – “select * from users u where u.username=‘’ or ‘1’=‘1’ -- and u.password = ..” “--” komment etmək operatorudur, sql sonu nəzərə alınmır 1=1 doğru olduğundan sorğu nəticə qaytarır
  39. 39. SQL İnjection Qorunma • Javada SQL sorğuları üçün PreparedStatement sinfindən istifadə etmək: String usr = req.getParameter(“user"); String pass = req.getParameter(“password"); String query = "SELECT id, firstname, lastname FROM authors WHERE username = ? and password = ?"; PreparedStatement pstmt = connection.prepareStatement( query ); pstmt.setString( 1, usr); pstmt.setString( 2, pass);
  40. 40. SQL Injection Qorunma • Dinamik SQL sorğular yerinə Oracle PLSQL prosedur dilindən istifadə etmək • PrepaparedStatement sinfinin setXxx() metodları vasitəsilə məlumatları sorğu daxilinə yerləşdirmək
  41. 41. Son söz • Veb proqram yazılarkən əsas diqqət yetirilməli məsələlər • İstifadəçi potensial xaker ola bilər, istifadəçidən gələn hər məlumat həm klient həm server tərəfdə validasiya keçməlidir • Defensive kod yazmaq

×