Top Banner
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
41

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

Jul 01, 2015

Download

Software

Samir Hasanov
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Təhlükəsiz proqram təminatının hazırlanma texnologiyaları

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

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

İ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.

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

İnternetdə məlumat ötürmə modelləri

Client-Server Peer-to-Peer

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

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ışı

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

URL, URİ və ya URN

• URL – Uniform Resource Locator

• URİ – Uniform Resource İdentifier

• URN – Uniform Resource Name

http://en.example.org:8080/file.html

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

Veb proqramlar

• Veb serverdə yerləşdirilir

• Brauzer vasitəsilə qoşulma

• Klient – Server modeli istifadə olunur

• HTTP protokolu istifadə olunur

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

Veb tətbiqin strukturu

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

Hər hissəyə uyğun hücum taktikaları

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

Hər hissəyə uyğun hücum taktikaları

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

Hər hissəyə uyğun hücum taktikaları

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

Hər hissəyə uyğun hücum taktikaları

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

Hər hissəyə uyğun hücum taktikaları

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

Hansı veb tətbiqlər hücuma daha çox məruz qalır?

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

Məşhur hücum taktikaları

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

Baxacağımız taktikalar

• Cross-Site Scripting (XSS, Script İnjection)

• Cross-Site Request Forgery (CSRF)

• Clickjacking

• Directory/Path Traversal

• SQL İnjection

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

XSS

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

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

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

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 %>

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

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 %>

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

XSS nəticələri

• Cookie oğurlamaq

<script>alert(document.cookie);</script>

• Saytı deface etməkhttp://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>

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

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

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

Cross-Site Request Forgery (CSRF)

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

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

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

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">

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

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

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

Clickjacking

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

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

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

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.

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

Clickjacking Qorunma

• HTTP Response Header istifadə etməkX-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)

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

Directory/Path Traversal

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

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ı

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

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

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

Directory Traversal

Kataloq arası keçid simvolları:

1. Unix – Root kataloq “ / ”

Unix – Kataloq keçidi “ / ”

2. Windows – Root kataloq “KataloqAdı: \ ”

Windows – Kataloq keçidi “ / ” “ \ ”

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

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” = ..\

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

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

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

SQL İnjection

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

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

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

SQL İnjection

Nümunə - İstifadəçidən gələn sorğu ilə sql generasiyawww.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

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

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);

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

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

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

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