20 Eylül 2018 Perşembe

TR | "C" Programlamaya Giriş [ Bölüm 1 ]


Herkese selamlar, uzun zamandır ilgilenemediğim blogumda yeni bir yazı serisi başlatmaya karar verdim.

Bu yazı serisinde temelden ileri bir seviyeye kadar "c" programlama ile ilgili birçok bilgiye yer vereceğim. Derleyici olarak GCC kullanacağım.

GNU Compiler Collection [GCC]

GNU Linux dağıtımlarının vazgeçilmez derleyicisidir. Terminalde çalışır.  Daha önceden sadece "c" compile ettiği için gnu "c" compiler denilirmiş.

Sonradan diğer diller de eklenince GCC olarak hitab edilmeye başlanmış.

Algoritma 

Algoritmaya kısaca belirli bir problemi veya ulaşılmak istenen yeri en kısa ve masrafız şekilde bulmak için yapılan işlemlerin bütünü diyebiliriz.




Örnek ile pekiştirelim

İki sayıyı toplamak için gerekli programa ait algoritmanın oluşturulması

Algoritma:

1. X değerini gir
2. Y değerini gir
3. Z ? X+Y
4. Z' yi yaz
5. Bitir.

Görüldüğü üzere bu şekilde bir algoritma ile çözüm yolunu izlemek daha kolaydır.

Bir problemin çözümü için birden çok yol olabilir. Algoritma bize en kısa ve en masrafsız yolu bulmamızda yardımcı olur 

Toparlamamız gerekirse, Bir problemin çözümü için 3 farklı yol olduğunu varsayalım

B
C

A yolu bizi sonuca çok kısa bir süre de ulaştırsa da çok masraflıdır. Burda kastedilen masraf ise ram cpu gibi donanımların yüksek oranda kullanılması.

B yolu ram cpu gibi bileşenleri fazla yormuyor fakat çok yavaş çalışıyor. Bu yol bize zamandan kaybettiriyor.

C yolunda ise hem ram cpu bileşenler az kullanılıyor hem de hızlı bir şekilde problemin çözümüne ulaşıyoruz.

C Programlama


1972 de "Dennis Ritchie" tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi.

C Dilinin Özellikleri

1-   C dili donanımdan bağımsız (machine independent) ve taşınabilirdir (portable).
2 -  Taşınabilirlik, aynı programın farklı donanımlarda ve farklı işletim sistemlerinde
 işletilebilirliğini ifade eder.

 3- Bir dilin verimliliği (productivity), hızlı fakat fazla yer kaplamayan yazılımlar geliştirmeye olanak   
 sağlaması ile ölçülür.

Bir "C" programı iki bölümden oluşur.

Preprocessor Directives yani önişlemci direktifleri
Main Function birde ana fonksiyon

Önişlemci direktifleri # ile başlar ve henüz program derlenmeden "c" önişlemcisi tarafından işletilir.

#include ve #define en sık kullanılanlardır. Hepsinin farklı görevleri vardır.

Sıklıkla kullanacağımız #include direktifi program içerisinde kullanılan fonksiyonlar için gerekli kodları programa dahil etmek için kullanılır.

Hello World!

Yazdığımız programın ekrana hello world yazdırmasını istiyoruz. Bunun için "c" dilinin standart fonksiyonu olan printf i kullanacağız

Ancak bu fonksiyonu çalıştırabilmemiz için <stadio.h> dosyasına ihtiyacımız olacak.

O halde programımızın tepesi şu şekilde olmalı 

#include <stadio.h>

Bir sonra ki fonksiyonumuz main() bu fonksiyon tüm "c" programlarında bulunması gereken ana fonksiyondur. Yazılan kodlar ise küme parantezleri içerisine yazılır {}


Dosya uzantımız "c" gcc ile derleyip sonucu almak istiyoruz.

Komut satırını açtıktan sonra 

gcc berk.c -o program 

Komudunu kullanıyoruz. Burda gcc den berk.c dosyasını derleyip output olarak program isminde bir dosya çıkarmasını istiyoruz. Ardından ./program ile çalıştırıyoruz



İkinci bölümde  görüşmek üzere sağlıcakla kalın 

24 Temmuz 2018 Salı

TR | Netsparker ile Web Uygulama Sızma Testleri




Herkese Selamlar,

Bu post Netsparker ile yapılan bir web uygulama testini simüle edip false positive oranları, optimizasyon ve diğer uygulama tarayıcalarından farkları hakkında teknik bilgiler içerecek.

Uygulamanın demo sürümüne burdan ulaşabilirsiniz

Netsparker 

Netsparker, web sitesinin geliştirildiği dil ya da teknolojiye bakmaksızın, platformdan bağımsız bir şekilde SQL Injection ve Cross-site Scripting (XSS) gibi güvenlik açıklarını tespit eder ve çözüm önerilerini de içerecek şekilde tüm detaylarıyla size raporlar. 

Ayrıca Netsparker, kendine özgü tarama teknolojileri sayesinde güvenlik açıklarını tespit etmekle kalmayıp, bu güvenlik açıklarının gerçekten var olduğuna dair kanıt sunar. 

Böylelikle Netsparker’ın size sunduğu sonuçların doğruluğunu kontrol etmeniz gerekmez.

Ilk Tarama


Bu simülasyonda test edeceğimiz web servis http://php.testsparker.com adresinde barınmaktadır. Üzerinde Netsparker koşturmadan önce adrese gidip herhangi bir login page var mı diye göz atıyorum



Bunun sebebi Netsparker'ın unauthentication ile tarama yapmasının yanı sıra authentication yaparak uygulama içerisinde ki sayfalarda da zaafiyet araştırması yapmasını istememiz.

Uygulamayı indirip kurduktan sonra resimdeki gibi bir arayüz ile karşılaşıyoruz



Öncelikle options butonuna tıklayarak seçenekleri görüntülüyoruz.


Tarama poliçesi bölümünden Netsparker'ın sağlıklı sonuçlar verebilmesi için hedef sistem hakkında bilgiler girmemiz gerekiyor.

Bu bilgiler kısaca uygulamanın barındığı sunucunun işletim sistemi uygulamanın dili kullandığı web servis vs.

Bu noktada girilen bilgiler oldukça önemli. Netsparker'ın sistem üzerinde doğru payloadları yakalaması için optimize edilmiş bir tarama poliçesine ihtiyacımız var böylelikle uygulamadan daha sağlıklı sonuçlar alabileceğiz.

Hedef sistem hakkında istenilen bilgileri "Shodan", "Nmap" ve  "Sayfa Kaynağından" elde edebilirsiniz.

Ardından bir diğer önemli nokta olan eğer uygulama üzerinde bir erişimimiz var ise "Form" sekmesinden giriş path'ini ve credentials girmemiz.



Tüm bunlardan sonra taramayı başlatıyorum. Start Scan seçeneğinden sonra Netsparker bir pencere açıp uygulama üzerinde authentication yapıp uygulama içerisinde ki sayfalarda da testlerini yapmaya başladı



3 aşamadan oluşan tarama sırasında Netsparker arka planda crawling yaparak uygulama içerisinde ki dizin ve scriptleri buluyor. Bunun yanı sıra kendi wordlisti ile backup dizinleride keşfediyor.


Resimde sol üst köşede tarama hızı ve yollanan request sayısı hakkında  bilgi sahibi olabiliriz orta bölümde sayfaları ve yollanan payloadları , onun hemen altında iste seviyelerine göre zaafiyetleri görebiliriz.

Netsparkeri diğer uygulama güvenliği tarayıcılarından ayıran nokta false positive uyarı vermemek için zaafiyetin türüne göre dışarıya bilgi çıkarması.

Rastgele bir zaafiyeti açarak request ve responsları inceliyorum.




Açılan pencerede Netsparker bize adresi, saldırıdan etkilenen parametreyi, PoC adresini ve payload'ı veriyor.

Netsparkerın payloadını incelediğimiz zaman

'"--></style></scRipt><scRipt>netsparker(0x000438)</scRipt>

Şeklinde bir payload kullandığını görüyoruz. Burada sadece script taglarını açarak da alert verdirebilirdi fakat yukarıdaki şekilde bir payload'ı kullanmasının sebebi eğer varsa contextlerden kaçmasıdır .

Bu çoğu zaman için iyi bir payloadtır.

Bir başka zaafiyeti incelediğimiz zaman




Boolen based tabanlı sql injection bulduğunu görüyoruz. HTTP Request ve Response sekmesinden Netsparker'ın açıklık için yolladığı isteği ve dönen cevabı görebiliyoruz.

Aynı zamanda zaafiyetin response adresini Browser view sekmesinden tarayıcı tabanlı gösterebiliyoruz.




Rakiplerini geride bırakmasında en önemli rolü false positive sonuçları çok büyük ölçüde engellemiş olması.


25 Mart 2018 Pazar

TR-EN | Acrolinx Dashboard Directory Traversal (CVE 2018-7719)





Hello everyone :)

In this article I will publish the vulnerability I found on acrolinx dashboard.

What Is Acrolinx




Acrolinx is a server-client system developed to support quality assurance during the creation of expertise texts.

This support includes the application and supervision of the writing and style rules and has the component of terminology management and terminology extraction through the Acrolinx Terminology module.

This module integrates with the quality assurance system for the extraction, management and use of erminology.

In addition, term candidates can be suggested and terms can be searched. Acrolinx supports transport formats such as OLIF, XML, MTF, TBX and CSV.

What is a Directory Traversal Attack? 

Properly controlling access to web content is crucial for running a secure web server.
Directory traversal or Path Traversal is an HTTP attack which allows attackers to access restricted directories and execute commands outside of the web server’s root directory.

Web servers provide two main levels of security mechanisms  Access Control Lists (ACLs) Root directory An Access Control List is used in the authorization process.

It is a list which the web server’s administrator uses to indicate which users or groups are able to access, modify or execute particular files on the server, as well as other access rights.


Proof of Concept

The acrolinx dashboard running on Windows servers is affected by directory traversal. This vulnerability applies to all versions.

I know I was running this dashboard in windows server because I did a scan with nmap in the beginning.

Firstly I did various tests with wfuzz to an input value I caught. I did not get any results. I created a wordlist for Windows servers





Link for wfuzz usage: http://www.berkdusunur.net/2017/11/web-application-penetration-testing.html

Wordlist 

a short section

..\..\..\..\..\..\..\..\..\..\boot.ini
..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\windows\win.ini
..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\boot.ini
..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\windows\win.ini request 200 made with


I am with zehra when the http request is 200 :)





I obtained a directory traversal which is accomplished when I repeat this request using the burp suite



Then report process lived...

The company has released updates for all versions.

Twitter      @berkdusunur
Telegram   @berkdusunur

eng;

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7719

https://support.acrolinx.com/hc/en-us/articles/115002980125-Acrolinx-Server-Version-5-2-including-subsequent-service-releases-

https://support.acrolinx.com/hc/en-us/articles/115005757125-Acrolinx-Server-Version-5-3-including-subsequent-service-releases-

https://hackertor.com/2018/03/25/na-cve-2018-7719-acrolinx-server-before-5-2-5-on-windows-allows/

https://www.security-database.com/detail.php?alert=CVE-2018-7719

https://infosec.cert-pa.it/cve-2018-7719.html

https://nvd.nist.gov/vuln/detail/CVE-2018-7719




SAFE DAYS :)
 :)

12 Mart 2018 Pazartesi

Izhack | Code of Duty CTF Write Up






Herkese selamlar.

Code Of Duty ekibinin düzenlediği CTF' de kendi yazdığım web ve Network sorularının çözümlerine burdan ulaşabilirsiniz

Web Çinli Hacker

Bu soruda verilen ip adresine gidildiğinde bankanın mail servisinin çinli bir hacker tarafından hacklendiğini ve yarışmacılardan vaka analizi yapmaları istenildi.


robots.txt ye bakıldığında /administrator/admin dizininin disallow olduğunu göreceklerdi

Sayfaya gittiklerinde aşağaıdaki gibi bir indexle karşılaşacaklardı.



Sayfa kaynağında yorum satırı haline getirilmiş bir değişkeni gördüklerinde bayrağı bulmak için son bir aşama kalacaktı


 Mail servisi hacklendiği için yarışmacıların öncelikle /var/log/mail.log adresine bakmaları gerekiyordu 





















flag_burda_hacker_nerde

Web Nerde Ararsın 

Web100 olarak düşündüğüm bu soruda yarışmacılar verilen ip adresine gittiklerin de bir searchbox ile karşılaşıyorlardı.


;ls şeklinde arattıklarında


index dosyası ve search.php ile karşılaşıyorlardı

;ls -a ile arattıklarında .B3kaps dizinini göreceklerdi flag bu dizin altındaki config dosyasındaydı


hekedby_alemdarorganizasyon_


Web Facebook

Bu soru hazırlarken en çok zevk aldığım soruydu soruya başlamadan önce Frontend için CodeOfDuty ekibinden ömere çok teşekkür ederim :)

Yarışmacılar verilen ip adresine gittiklerinde bir login page ile karşılaşıyorlardı


Sayfanın tittle değeri Ceo Login ve username kısmındaki value değeri mark dı

Hafiften siber istihbarat olan bu soruda markın facebook parolasını googlede arattıklarında dadada olarak bulacaklardı giriş yaptıktan sonra


Upload kısmının herhangi bir php dosyasına yollanmadığından fake olduğunu anlayıp paneli incelemeleri gerekiyordu.

logout.php dosyasına request yaptıktan sonra burp ile isteği tutup sayfa kaynağına bakmaları gerekirdi

logouta tıklandığında 0 saniye içerisinde login kısmına atıyord. İsteği tutup sayfa kaynağına baktıklarında

ulan_m4rk_n3_adams!n_yaa göreceklerdi

İsmini hatırlayamadığım Web Sorusu {Acıktın mı ?}

Bu sorunun ismini hatırlayamadığım için murat uyanınca güncelleyeceğim :)
Verilen ip adresine gittiklerinde not found ile karşılaşıyordu yarışmacılar.

Sayfa kaynağına baktıklarında iytemenu dizinini göreceklerdi dizine gittiklerinde



Linklerde biraz dolanınca contact.php nin page değişkeni ile ekrana yazıldığını göreceklerdi

Akla ilk directory traversal gelmeliydi /etc/passwd dizinine baktıklarında



daemon ve deamon diye iki adet user göreceklerdi

deamon kullanıcısının parolası rockyou içerisindeki "butterfly" dı.

deamon kullanıcısına bağlandıklarında  zamanlanmış görevler içerisinde /var/spool/cron/crontab/zmnlnms.txt 
base64 ile tutuluyordu 

ZDB5ZHVudXpfbXU/KmM0bmxhciFtXzE4

decode ettiklerinde d0ydunuz_mu?*c4nlar!m_18

Kalan bir web 2 de network sorusu için ram'im kalmadığı için murat ve ozanın bilgisayarlarında koşturduk. ova lar gelince burası güncellenecek  :)


Ellerinize Sağlık

6 Şubat 2018 Salı

Code Injection | Web For Pentester



Code Injection Nedir?

Code Injection kritik seviyeli güvenlik zafiyetlerinde listenin başında gelen güvenlik zaafiyetidir.

İstismar olarak SQL injectiona çok benzese de aralarında ki fark birinde sql sorguları çalıştırırken diğerinde ise kullanılan programlama dilinin fonksiyonlarını çalıştırmaktır

Sistemin üzerinde koşturduğu web yazılımda komut çalıştırma fonksiyonları içerisine,
kullanıcılardan veri alan değişkenlerin filtrelenmeden dahil edilmesinden kaynaklanmaktadır.

Web For Pentester CodeInjection

Web For Pentester'ı kurduktan sonra example 1'e gidiyorum.

Code Injection olan page gittik php ile yazılmış bir web uygulaması ile karşılaştık yukarda belirttiğim gibi kullanılan programlama dilinin fonksiyonlarını çalıştırabiliyoruz.


example1.php dosyasının name değişkeni ile hacker'ı ekrana bastırdığını görüyoruz. Hacker dan sonra da üç adet ünlem gelmiş özel karakterlerden biri olan çift tırnak koyarak bir hata almaya çalışıyorum.



Çift tırnaktan sonra "syntax" hatası aldık. Burdan koyduğumuz çift tırnağın söz dizimini bozduğunu,  burdanda son kullanıcıdan gelen girdi değerlerini filtrelemediğini anlayabiliriz.

Şimdi hızlı bir şekilde phpinfo dosyasını okumaya çalışalım. Burda temelde olsa PHP bilgisi çok önemli.





Başarılı bir şekilde phpinfo aldıktan sonra farklı birkaç tane daha php fonksiyonu deneyip example1.php kodumuzu açıp zaafiyet neresinde inceleyeceğiz.

"system" fonksiyonu ile birkaç kod yürütüyorum.

"uname -a"


"id"


"whoami"


Zaafiyetli Kodun İncelenmesi


Zaafiyetin gelen girdi değerlerini filtrelemediği için code Injection'a yaradığını yukarda öğrendik.

example1.php içeriği aşşağıdaki gibi 


<?php require_once("../header.php"); ?>

<?php 
$str="echo \"Hello ".$_GET['name']."!!!";";"
eval($str);
?>
<?php require_once("../footer.php"); ?>


bize burda gerekli kodlar;

<?php 
$str="echo \"Hello ".$_GET['name']."!!!";";"
eval($str);
?>

"eval" Fonksiyonu dışardan gelen bir değişkene atanan php kodlarını çalıştırır.

Örnek üzerinde anlatmamız gerekirse

$code = ' echo "Selam Hacker!";';

eval($code);


$_GET gibi dışardan alınan değerlerde eval fonksiyonu kesinlikle kullanılmamalıdır.

Çözüm

Ben çözüm olarak basit bir şekilde $str değişkenini FILTER_VAR Fonksiyonu ile filtre koydum
Kodu aşşağıdaki gibi değiştirip system fonksiyonu ile uname -a kodunu yürütmeye çalıştım.


<?php 
$str="echo \"Hello ".$_GET['name']."!!!";";"
eval(filter_var($str, FILTER_SANITIZIE_URL));
?>



Okuduğunuz için teşekkür eder, Güvenli Günler dilerim

10 Ocak 2018 Çarşamba

Local Network Discovery Studies (Lokal Ağda Keşif Çalışmaları)




Hello everyone.

Today I will write about Local Network Discovery Studies

What Is This Ifconfig?

ifconfig is a system administration utility in Unix-like operating systems for network interface configuration.

The utility is a command line interface tool and is also used in the system startup scripts of many operating systems.

It has features for configuring, controlling, and querying TCP/IP network interface parameters. Ifconfig originally appeared in 4.2BSD as part of the BSD TCP/IP suite. (Wikipedia)


What Is ARP-Ping

Arping is a computer software tool for discovering and probing hosts on a computer network.

Arping probes hosts on the attached network link by sending Link Layer frames using the Address Resolution Protocol (ARP) request method addressed to a host identified by its MAC address of the network interface.

The utility program may use ARP to resolve an IP address provided by the user.

ARP-SCAN Usage And Install

 Command 

ARCH Linux = sudo pacman -S arp-scan

debian = sudo apt-get install arp-scan

 

 

Usage  

Command 

arp-scan -I "interface" -l

 NMAP For Local Scan

My ip address 192.168.1.102

Command

nmap -T4 -Pn 192.168.1.0/24

-T4 = This paremeter is suitable for networks that you know or up 

-Pn = icmp scans for paused machines without ping 

If root user is scanning, SYN connect will be used. 
If you are not root user, the scan will be a connect scan



















Thank you for reading