Avatar billede plazm Nybegynder
06. maj 2005 - 18:04 Der er 13 kommentarer og
1 løsning

PHP uploadscript bruges til at deface

Hejsa
Min kammerat har nu gentagne gange defacet min side efter at fået fat i min sourcekode pga. en fejl i min side.

Nu har jeg så forsøgt at få ændret koden men ikke med held.

Her er min side:
http://plazm.1go.dk/

og her er min kode til siderne:

index.php
<?php
$query=$_SERVER['QUERY_STRING'];
$query = explode("&", $query);
switch($query[0]) {
  case "list":
    $site="listview";
    break;
  default:
    $site="forside";
    break;
}
if($_FILES["file"]["tmp_name"]){
  move_uploaded_file($_FILES["file"]["tmp_name"], "kaninmos/".addslashes(htmlentities($_FILES["file"]["name"])));
  header("location: ?list");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>PlazMs Site</title>
  <meta http-equiv="Content-Language" content="da">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
  <link href="style.css" rel="stylesheet" type="text/css">
  <script language="javascript" type="text/javascript">
    function pop(file){
      window.open(file,"ResizeBillede","width=300,height=50,status=no");
    }
</script>
</head>
<body>
<div class=space>
</div>
<div class=ruler>
PlazMs Uploadsite
</div>
<div class=header>
- PlazM - <?php echo $site;?>
</div>
<div class=main>
<?php
switch($query[0]) {
  case "list":
    include("listview.php");
    break;
  case "download":
    include("download.php");
    break;
  default:
    include("forside.php");
    break;
}
?>
</div>
<div class=ruler>

</div>
</body>
</html>

listview.php
<center><table class=list>
<tr><th class=list-1>Filnavn: </th><th class=list-2>Size:</th></tr>
<?php
if ($handle = opendir('kaninmos/')) {
  while (false !== ($file = readdir($handle))) {
      if ($file !== "." && $file !== "..") echo '<tr><td class=list-1><a href="download.php?file='.$file.'">'.$file.'</a></td><td class=list-2>'.round(filesize( "kaninmos/" . $file ) / 1024 / 1024 ,2).' mb</td></tr>'."\r\n";
  }
  closedir($handle);
}
?>
</table>
<?php
echo "<br><a href=\"?\">Upload ny fil</a><br><br></center>";
?>


download.php
<?php
  $test = explode("/",$_GET['file']);
  $abe = $test[count($test) - 1];
  if (isset($_GET['file']) && file_exists("kaninmos/".$abe)) {
    header("Content-Type: octet/stream");
    header("Content-Disposition: attachment; filename=".str_replace(" ","_",$abe));
    echo file_get_contents("kaninmos/".$abe);
  } else {
    echo "Filen blev ikke fundet";
  }
?>


forside.php
<center><br>
<form action="?" method="post" enctype="multipart/form-data">
<input type=file class=file1 name=file><br><br>
<input type=submit class=submit value=Upload>
</form>
<br><a href="?list">Vis filer</a><br><br></center>

Hvordan kan han deface det vha. denne kode?
Avatar billede erikjacobsen Ekspert
06. maj 2005 - 19:39 #1
Han uploader vel bare en .php-fil og udfører den. Vil du kun have uploadet billeder skal du checke for at du kun tillader .jpg, .gif, .png etc.
Avatar billede ranglen Nybegynder
06. maj 2005 - 19:40 #2
Umiddelbart kan man uploade alle typer filer, herunder php-filer. Og jeg formoder kaninmos kan læses af brugere udefra?

Så er det vel blot et spørgsmål om at uploade et phpscript, som kan forvolde skade på serveren..

http://plazm.1go.dk/kaninmos/makesomefun.php
Avatar billede plazm Nybegynder
06. maj 2005 - 19:42 #3
det kan man netop ikke, har jeg sikret mig imod.
Avatar billede erikjacobsen Ekspert
06. maj 2005 - 20:07 #4
Det er ingen sag at bruge et filnavn med ".." i. Så kan man lægge filen hvorsomhelst på serveren. Der kan sikkert også være andre måder, vi kan jo kun gætte.
Avatar billede plazm Nybegynder
06. maj 2005 - 20:17 #5
hvordan kan det være muligt når tegnet / ikk er tilladt i filnavne ?
Avatar billede erikjacobsen Ekspert
06. maj 2005 - 20:33 #6
"/" er da tilladt i filnavne, da det adskiller kataloger og filer.
Avatar billede plazm Nybegynder
06. maj 2005 - 20:41 #7
så kan du jo heller ikke bugge dig igennem på den måde. eftersom jeg kun henter filnavnet. og ikk kataloglisten.
Avatar billede erikjacobsen Ekspert
06. maj 2005 - 20:47 #8
Men din hacker kan skrive hvadsomhelst, herunder "../" i filnavnet, og du bruger ukritisk hvad der står i filnavnet. Du må aldrig fristes til at tro, at noget som helst der kommer fra en bruger ikke skal checkes.
Avatar billede plazm Nybegynder
12. maj 2005 - 13:04 #9
tja, jeg prøvede en hel masse forskellige foranstaltninger for at holde ham fra det, og intet virkede og han måtte så gå til kende og sige at han havde fundet et hul hos 1go som gjorde at han kunne gøre det, dog har han sendt en email til dem om problemet så forhåbentligt er det snart lukket.
Avatar billede plazm Nybegynder
12. maj 2005 - 13:04 #10
hvis du lige gider at smide et svar Erik
Avatar billede erikjacobsen Ekspert
15. maj 2005 - 10:38 #11
Jeg samler ikke på point, tak. Men der er ganske meget man kan og skal gøre, hvis man laver sider for andet end sjov. Og det står ikke ret mange steder ... ;)
Avatar billede ranglen Nybegynder
15. maj 2005 - 19:55 #12
Mht at konstruere et filnavn med ../ så lader det til at moderne php installationer automatisk fjerner stien, så scriptet kun ser filnavnet.
Avatar billede plazm Nybegynder
17. maj 2005 - 09:13 #13
eftersom at erik ikke ville  have point lukker jeg selv.
Avatar billede plazm Nybegynder
17. maj 2005 - 09:14 #14
men jeg siger mange tak for hjælpen, trods det ik var gennem min kode han gjorde det.
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