Özgür Yazılımlar ile Statik ve Dinamik Kod Güvenliği Analizi Emre Evren Yalçın



Benzer belgeler
Web Uygulama Pentest Eğitimi

Web Application Penetration Test Report

Web 2.0 Örnek Eğitim Notu

KISIM I: HACKING B R ALAN OLARAK GÜVENL K

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

[ Web Uygulamalarında Kayank Kod Analizi II ] [ Mehmet Dursun INCE < mehmet.ince@intelrad.com > ] [ 10 Haziran 2013 ]

Güvenlik Java ve Web Uygulama Güvenliği

VERİ GÜVENLİĞİ. Web Uygulamaları Güvenliği. Özer Çelik Matematik-Bilgisayar Bölümü

(W)eb (A)pplication (F)irewall Bypass

Öğr. Gör. Serkan AKSU 1

Güncel İnternet Teknolojileri ve PHP 2

XSS Exploitation via CHEF

Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

İstemci Tabanlı Saldırı Türleri. Ozan UÇAR

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

HTML5. Erek Göktürk. Özgür Yazılım A.Ş.

CODEIGNITER SEMINERI KÜTÜPHANE YAZMA GÜVENLIK ÖNLEMLERI CODEIGNITER 2.0

KURULUM KILAVUZU MART Visilabs Target Kurulum Kılavuzu

Dokuz Eylül Üniversitesi Bilgi İşlem Dairesi Sunum konusu: Web Güvenliği

PHP CodeIgniter MVC Framework

Web Uygulama Güvenliğinde Doğru Bilinen Yanlışlar!

W3af ile Web Uygulama Güvenlik Testleri

Basit bir web uygulaması

Mustafa Şatıroğlu. İletişim Bilgileri. Kişisel Bilgiler. Özet Bilgi 1 / 9 MESLEK: BİLGİSAYAR MÜHENDİSİ. ALAN: Web Developer (Front-End Developer)

Local File Inclusion Nedir?

CSS3, HTML 5 ve jquery ile Web Tasarımı. Umuthan Uyan

Client Server Database

BİLGİSAYAR VE AĞ GÜVENLİĞİ ÖĞR. GÖR. MUSTAFA ÇETİNKAYA DERS 2 > AĞ VE UYGULAMA GÜVENLİĞİ

Web Uygulamaları Güvenlik Denetimi. Fatih Özavcı

AJAX WITH JQUERY. Ajax Hikayesi MODULE 11

1 / 5. Ali Eren Köseoğlu. Yazılım Uzmanı. İletişim Bilgileri

Halil ÖZTÜRKCİ, MVP CISSP, CISA,GPEN,CEH,CHFI BT Güvenlik Hizmetleri Direktörü

JAVASCRIPT JAVASCRIPT DİLİ

Reverse Engineering Bootcamp Eğitim İçeriği

solid; BORDER-LEFT: #1F9FFF 0px solid; BORDER-RIGHT: #1F9FFF 0px solid; BORDER-TOP: #1F9FFF 0px solid; COLOR: #1F9FFF; FONT-FAMILY: Trebuschet MS;

1 JAVASCRIPT NEDİR? 1

JavaScript & DOM XML & JSON

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

İNTERNET PROGRAMLAMA II. Tanımlar

Algorithm of Your Life. AJAX ve...

PHP ile Web Uygulama Güvenliği

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

Linux php.ini Guvenlik Ayarları

JBoss Seam. Melih Sakarya

1 / 6. Mustafa Şatıroğlu. İletişim Bilgileri

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ SÖZLEŞMELİ BİLİŞİM PERSONELİ SINAVINA BAŞVURACAKLAR İÇİN DUYURU

1 WEB GÜVENLIĞINE GIRIŞ

SÜRE BAŞLAMA TARİHİ : 19/12/2018 BİTİŞ TARİHİ : 20/02/2019 KURS SÜRESİ : 144 Saat KURS NO :

Web Programlama Kursu

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Web Teknolojileri ve Programla

Sürücü Belgesi B. Firma Sektörü Bilişim. Bitiş Tarihi Hala çalışıyorum. Firma Sektörü Bilişim. Bitiş Tarihi

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

PHP 1. Hafta 1. Sunum

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

9/21/2016

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

DIGITAL MARKET GRUBU PROJE PLANI

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme

Web Uygulamaları Mimarileri ve Güvenliği

1 FULL STACK DEVELOPMENT NEDIR? 1 Nasıl Full Stack Developer Olurum? 2

1 / 5. Mehmet Alper Şen. Kıdemli Yazılım Uzmanı. İletişim Bilgileri

Javascript Geliştiricileri İçin Xaml Ve Microsoft Silverlight

EMRE CAMADAN KİŞİSEL BİLGİLER EĞİTİM. E-Posta: Cep:

Web Uygulama Saldırıları ve Klasik Çözümlerin Yetersizliği

İnternet Programcılığı

PHP ile İnternet Programlama

Ç NDEK LER 1 PHP 6 1 PHP Nedir? 1 PHP nin Tarihi 2 PHP nin Avantajlar 4 PHP nin Dezavantajlar 4 PHP nin Çal flma Mant 6 PHP nin Çal flma Aral 8 PHP

PHP ye Giriş. Hidayet Doğan

İnternet Programcılığı Öğr. Gör. Serkan AKSU Statik ve Dinamik Web Siteleri. Dinamik Web Sitesi Nedir?

Web Önyüzü Nasıl Olmalı? <Markup> : İskelet {css} : Görünüm JavaScript() : Etkileşim

Retargeting. MediaMind Turkey

Mobil Uygulama Geliştirme Yaklaşımları, Web Tabanlı Mobil Uygulama Çatıları. Burak USGURLU

1.PROGRAMLAMAYA GİRİŞ

On Site SEO. seo. laysos.com. Length 95 character(s) Favicon no. H3 tags :40. Google PageSpeed. Google Index. Top Keywords. Great!!!

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Web Uygulamaları Güvenlik Denetimi. Fatih Özavcı

Php Programlama Dili MySQL Uygulamaları

Internet Programming II

2 SEO DOSTU SİTE YAPMAK

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

YZM 3215 İleri Web Programlama

HTTP. (Hyper Text Transfer Protocol)

duralbend.com Web Sayfasının Seo Analiz Raporu

2 SEO YOL HARITASI 21 Seo Çalışmasının Aşamaları 21 Ön Analiz Ve Araştırma 21 Planlama 23 Çalışmanın Uygunlanması Ve İzlenmesi 24

WEB TASARIM. CSS, IFRAME, TEMPLATE, SLICE, INCLUDE(php komutu) Tarık ÖZEL

Web Uygulama Güvenliği Kontrol Listesi 2010

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Web Teknolojileri ve Programla

WEB UYGULAMASINA YÖNELİK DENETLEMELERDE LİNK KEŞFETME TEKNİKLERİ VE ARAÇLARI. Deniz Çevik, <denizcev at gmail dot com>, webguvenligi.

Web Uygulama Güven(siz)liği 2.0

Metin Editörleri YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ. ALINTI:

Transkript:

Özgür Yazılımlar ile Statik ve Dinamik Kod Güvenliği Analizi Emre Evren Yalçın $Whoami Web Developer @ İstanbul Kültür Üniversitesi BST Information Security Researcher @ Signalsec.com

Ajanda Statik kod analizi nedir? Php ile karşılaşabileceğimiz güvenlik açıkları nelerdir? Rips nedir? Rips ile statik kod analizi nasıl yapılır? Dominator nedir? Dominator ile dinamik kod analizi nasıl yapılır? Dünyadan bazı örnekler? Güvenli yazılım nasıl olmalıdır?

Statik kod analiz nedir? Yazılımda hata bulmak Yazılım kurallarına uygun bir şekilde üretim yapmak Lexical analiz Sözdizimsel ve anlamsal analiz

Lexical analiz token_get_all, token_name Zend engine lexical scanner Örnek Kullanım : token_get_all("<?php echo 1;?>");

Sözdizimsel ve anlamsal hatalar Php lint-mode Örnek Kullanım : Php -l dosyaismi Kullanabileceğimiz programlar: PHP Code Sniffer PHP AST PHP Sat PHP Depend PHP Lint PHP Call Graph xdebug

RIPS Statik kod analiz aracı Gelecekte php5 (wordpress, joomla) Cross-Site Scripting (4) SQL Injection (54) File Disclosure (39) File Manipulation (20) File Inclusion (8) Remote Code Execution(47) Remote Command Execution (8) Header Injection (27) XPath Injection (3) LDAP Injection (5) Unserialize / POP (1) Other (17)

Cross Site Scripting <?php hello("hello ". $_GET["name"]);?> /index.php?name=<script>alert(1)</script>

Cross Site Scripting <?php hello("hello ". $_GET["name"]);?> /index.php?name=<script>alert(1)</script>

Command İnjection <?php eval("\$color = \'". $_GET["color"]. "\';");?> /index.php?color=\';phpinfo();//

File Inclusion <?php include("includes/". $_GET["file"]);?> /index.php?file=../../../../../../../etc/passwd

File Disclosure <?php echo file_get_contents("files/". $_GET["file"]);?> /index.php?file=../../../../../../../etc/passwd

File Manipulation <?php $h = fopen($_get["file"], "w"); fwrite($h, $_GET["data"]);?> /index.php?file=shell.php&data=<?php phpinfo();?>

Command Execution <?php exec("./crypto -mode ". $_GET["mode"]);?> /index.php?mode=1;sleep 10;

Sql Injection <?php mysql_query("select * FROM users WHERE id = ". $_GET["id"]);?> /index.php?id=1 OR 1=1-- -

Ldap Injection <?php $ctx->xpath_eval("//user[name/text()=\'". $_GET["name"]. "\']/account/text()");?> /index.php?person=*

POP <?php class foo { public $file = "test.txt"; public $data = "text"; function destruct() { file_put_contents($this->file, $this->data); } } $a = unserialize($_get["s"]);?> /index.php?s=o:3:"foo":2:{s:4:"file";s:9:"shell.php";s:4:"data";s:29:" <?php passthru($_get["c"]);?>";}

Grep ile güvenlik açığı keşfi Xss : grep -i -r echo * grep -i -r \$_GET * grep -i -r \$_ * grep echo grep -i -r \$_GET * grep echo grep -i -r \$_POST * grep echo grep -i -r \$_REQUEST * grep echo

Grep ile güvenlik açığı keşfi Command execution: grep -i -r shell_exec( * grep -i -r system( * grep -i -r exec( * grep -i -r popen( * grep -i -r passthru( * grep -i -r proc_open( * grep -i -r pcntl_exec( *

Grep ile güvenlik açığı keşfi Code execution grep -i -r eval( * grep -i -r assert( * grep -i -r preg_replace * grep /e grep -i -r create_function( *

Grep ile güvenlik açığı keşfi File inclusion grep -i -r file_include * grep -i -r include( * grep -i -r require( * grep -i -r require(\$file) * grep -i -r include_once( * grep -i -r require_once( * grep -i -r require_once( * grep \$_

Grep ile güvenlik açığı keşfi Potansiyel Sql açığı grep -i -r \$sql * grep -i -r \$sql * grep \$_

Dinamik Analiz Gerçek zamanlı veri toplama DOM (Document Object Model) XSS Dominator kullanarak dom-tabanlı xss analizi gerçekleştirebilirsiniz. Dominator bir Firefox eklentisidir. (Firefox 3.6.13) sürümüyle çalışmaktadır.

Dominator Online http://www.domxssscanner.com/ Online olarak sitelerde Dom-Xss taraması gerçekleştirebilirsiniz. Sources Regular Expressions /(location\s*[\[.]) ([.\[]\s*["']?\s*(arguments dialogarguments innerhtml write(ln)? open(dialog)? showmodal Dialog cookie URL documenturi baseuri referrer name opener parent top content self frames)\w) (localstorage sessionstorage Database)/ Sinks /((src href data location code value action)\s*["'\]]*\s*\+?\s*=) ((replace assign navigate getresponseheader open(dialog)? showmodaldialog eval evaluate execcommand execscript settimeout setinterval)\s*["'\]]*\s*\()/

Dominator Sources The Cookies Sources The location/documenturi/url Sources The Referrer Source The Window Name Source Indirect Sources Other Objects Sources

Dominator Sinks Set Object Sinks Execution Sinks HTMLElement Sinks Style Sinks XMLHttpRequest Sink Set Cookie Sink Set Location Sink Control Flow Sink Use of Equality And Strict Equality Math.random Sink JSON Sink XML Sink

Neden Olduğu açıklar Bilgi hırsızlığı (Session) İçerik değişikliği Geçmiş tarama, port tarama Dahili IP çalma, Web Spidering, XSS Botnet Worm

Myspace Worm Bilinen ilk XSS wormu: 2005 yılında MySpace sosyal paylaşım sistemini etkileyen SamyJSWorm. Samy, profiline (sevdiği kitaplar benzeri bir alana) javascript yazıp gönderiyor. Bakıyor ki veritabanına kaydedildi, profil geri geldiğinde Samy'nin sayfasına, o script çalışıyor. Samy, profiline browserda çalıştığında (profiline baktığı anda bakan kişinin tarayıcısında) kendisini arkadaş olarak ekleyen bir kod gömüyor. Script aynı zamanda kendisini profili açan kişinin profiline de kopyalıyor ki solucan dağılsın. 24 saat içinde Samy'nin 1 milyonun üzerinde arkadaşı oluyor.

Alert('myspace'); <script>, <body>, onclick, <a href=javascript://> taglarına izin verilmişti. Css tagları içinde javascript kullanılabiliyor. <div style= background:url( javascript:alert(1) ) >

Samy Worm <div id="mycode" expr="alert('hah!')" style="background:url('java script:eval(document.all.mycode.expr)')"> Samy is my hero

Twitter Dom-Xss Açık barındıran kod: //<![CDATA[ (function(g){var a=location.href.split("#!")[1];if(a){g.location=g.hbr=a;}})(window); //]]> URL: http://twitter.com/#!javascript:alert(document.domain);

Split Kullanımı Javascript split <script type="text/javascript"> var mystring = "123456789"; var mysplitresult = mystring.split("5"); document.write("the first element is " + mysplitresult[0]); document.write("<br /> The second element is " + mysplitresult[1]); </script> Sonuç: The first element is 1234 The second element is 6789

Twitter Dom-Xss

Dom-Based Xss <HTML><TITLE>Welcome!</TITLE> Hi <SCRIPT> var pos = document.url.indexof("name=") + 5; document.write(document.url.substring(pos,do cument.url.length)); </SCRIPT> </HTML> http://www.example.com/welcome.html?name=joe http://www.example.com/welcome.html?name=<script>alert(document.cookie)</script>

Yazılımda Güvenlik Yaklaşımı Statik ve dinamik kod analizi yapan otomatize araçlar riski azaltsa da, sıfır düzeyine indirememektedir. Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir. Yazılımda sürekli olarak iyileştirme yapılmalıdır.

Bodoslama Mimari Hızlı çözümler Heyecanlı yazılımcılar MVC karşıtı yaklaşımlar Tek bir fiziksel yapı Web'in büyük bir bölümü

Saldırı boyutları Maddi zararlar Manevi zararlar (prestij kaybı, negatif algı oluşması, güven kaybı)

Risk? Advisories by SignalSEC Adobe Shockwave Player Memory Corruption Vulnerability Microsoft Windows Mobile Double Free Vulnerability Novell edirector Buffer Overflow Vulnerability AOL 9.5 Heap Overflow Vulnerability Facebook (http://www.facebook.com/whitehat) (yakında) Web : http://www.signalsec.com E-mail : evren@signalsec.com

TEŞEKKÜRLER