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

41
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

Upload: samir-hasanov

Post on 01-Jul-2015

264 views

Category:

Software


3 download

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