emre evren yalçın $whoami - linux · ”samy is my hero” twitter dom-xss ... güvenli mimariyi...
TRANSCRIPT
![Page 1: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/1.jpg)
Ö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
![Page 2: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/2.jpg)
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?
![Page 3: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/3.jpg)
Statik kod analiz nedir?
Yazılımda hata bulmak Yazılım kurallarına uygun bir şekilde üretim
yapmak
Lexical analizSözdizimsel ve anlamsal
analiz
![Page 4: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/4.jpg)
Lexical analiz
token_get_all, token_name Zend engine lexical scanner
token_get_all("<?php echo 1; ?>");
Örnek Kullanım :
![Page 5: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/5.jpg)
Sözdizimsel ve anlamsal hatalar
Php lint-mode
Php -l dosyaismi
Örnek Kullanım :
Kullanabileceğimiz programlar:
PHP Code SnifferPHP ASTPHP SatPHP DependPHP LintPHP Call GraphxDebug
![Page 6: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/6.jpg)
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)
![Page 7: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/7.jpg)
Cross Site Scripting
<?php hello("Hello " . $_GET["name"]); ?>
/index.php?name=<script>alert(1)</script>
![Page 8: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/8.jpg)
Cross Site Scripting
<?php hello("Hello " . $_GET["name"]); ?>
/index.php?name=<script>alert(1)</script>
![Page 9: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/9.jpg)
Command İnjection
<?php eval("\$color = \'" . $_GET["color"] . "\';"); ?>
/index.php?color=\';phpinfo();//
![Page 10: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/10.jpg)
File Inclusion
<?php include("includes/" . $_GET["file"]); ?>
/index.php?file=../../../../../../../etc/passwd
![Page 11: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/11.jpg)
File Disclosure
<?php echo file_get_contents("files/" . $_GET["file"]); ?>
/index.php?file=../../../../../../../etc/passwd
![Page 12: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/12.jpg)
File Manipulation
<?php $h = fopen($_GET["file"], "w"); fwrite($h, $_GET["data"]); ?>
/index.php?file=shell.php&data=<?php phpinfo();?>
![Page 13: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/13.jpg)
Command Execution
<?php exec("./crypto -mode " . $_GET["mode"]); ?>
/index.php?mode=1;sleep 10;
![Page 14: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/14.jpg)
Sql Injection
<?php mysql_query("SELECT * FROM users WHERE id = " . $_GET["id"]); ?>
/index.php?id=1 OR 1=1-- -
![Page 15: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/15.jpg)
Ldap Injection
<?php $ctx->xpath_eval("//user[name/text()=\'" . $_GET["name"] . "\']/account/text()"); ?>
/index.php?person=*
![Page 16: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/16.jpg)
POP
<?phpclass 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"]);?>";}
![Page 17: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/17.jpg)
Grep ile güvenlik açığı keşfi
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”
Xss :
![Page 18: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/18.jpg)
Grep ile güvenlik açığı keşfi
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(” *
Command execution:
![Page 19: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/19.jpg)
Grep ile güvenlik açığı keşfi
grep -i -r “eval(” *grep -i -r “assert(” *grep -i -r “preg_replace” * | grep “/e”grep -i -r “create_function(” *
Code execution
![Page 20: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/20.jpg)
Grep ile güvenlik açığı keşfi
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 “\$_”
File inclusion
![Page 21: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/21.jpg)
Grep ile güvenlik açığı keşfi
grep -i -r “\$sql” *grep -i -r “\$sql” * | grep “\$_”
Potansiyel Sql açığı
![Page 22: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/22.jpg)
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.
![Page 23: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/23.jpg)
Dominator Online
http://www.domxssscanner.com/ Online olarak sitelerde Dom-Xss taraması
gerçekleştirebilirsiniz.
/(location\s*[\[.])|([.\[]\s*["']?\s*(arguments|dialogArguments|innerHTML|write(ln)?|open(Dialog)?|showModalDialog|cookie|URL|documentURI|baseURI|referrer
|name|opener|parent|top|content|self|frames)\W)|(localStorage|sessionStorage|Database)/
/((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*\()/
Regular Expressions
Sources
Sinks
![Page 24: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/24.jpg)
Dominator Sources
The Cookies Sources
The location/documentURI/URL Sources
The Referrer Source
The Window Name Source
Indirect Sources
Other Objects Sources
![Page 25: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/25.jpg)
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
![Page 26: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/26.jpg)
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
![Page 27: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/27.jpg)
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.
![Page 28: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/28.jpg)
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)’)”>
![Page 29: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/29.jpg)
Samy Worm
<div id="mycode" expr="alert('hah!')" style="background:url('java script:eval(document.all.mycode.expr)')">
”Samy is my hero”
![Page 30: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/30.jpg)
Twitter Dom-Xss
//<![CDATA[(function(g){var a=location.href.split("#!")[1];if(a){g.location=g.HBR=a;}})(window);//]]>
http://twitter.com/#!javascript:alert(document.domain);
Açık barındıran kod:
URL:
![Page 31: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/31.jpg)
Split Kullanımı
<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>
The first element is 1234The second element is 6789
Javascript split
Sonuç:
![Page 32: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/32.jpg)
Twitter Dom-Xss
![Page 33: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/33.jpg)
Dom-Based Xss
<HTML><TITLE>Welcome!</TITLE>Hi <SCRIPT>var pos = document.URL.indexOf("name=") + 5; document.write(document.URL.substring(pos,document.URL.length));</SCRIPT></HTML>
http://www.example.com/welcome.html?name=Joe
http://www.example.com/welcome.html?name=<script>alert(document.cookie)</script>
![Page 34: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/34.jpg)
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.
![Page 35: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/35.jpg)
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ü
![Page 36: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/36.jpg)
Saldırı boyutları
Maddi zararlar Manevi zararlar (prestij kaybı, negatif algı
oluşması, güven kaybı)
![Page 37: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/37.jpg)
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.comE-mail : [email protected]
![Page 38: Emre Evren Yalçın $Whoami - Linux · ”Samy is my hero” Twitter Dom-Xss ... Güvenli mimariyi yazılım sürecinin en başında oluşturmak zaman ve maliyet açısından önemlidir](https://reader033.vdocuments.pub/reader033/viewer/2022041417/5e1c4ec5833a1f380c7c02b6/html5/thumbnails/38.jpg)
TEŞEKKÜRLER