Directory Traversal probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .Net Developer

Dit ga je doen Het bouwen van Api's; Nieuwe oplossingen bouwen met C# .Net; De huidige software uitbouwen met C# .Net; Meewerken in projecten; Meedenken aan de toekomstplannen en verbeteringen; Onderdeel van het Scrum Team. Hier ga je werken Onze klant is een dienstverlenende organisatie voor diverse soorten organisaties in Nederland. Ze zijn van oorsprong een familiebedrijf en er is een open cultuur. Ze zijn vooruitstrevend op IT gebied en hebben een eigen inhouse development team van circa 11 man. Je komt hier te werken in het subteam .Net Core. Hier werken ze volgens scrum met de nieuwste technieken en

Bekijk vacature »

Programmeur

Ben jij technisch ingesteld en help jij graag met de voorbereiding van installaties? Ben jij gemotiveerd en neem je graag verantwoordelijkheid? Dan is de functie van Programmeur misschien wel wat voor jou! Nu al enthousiast? Lees dan snel verder! Wat bieden wij jou Goede werksfeer Flexibiliteit in de werktijden Uitzicht op een vast contract Programmeur Automatisering Nodige opleidingen en ondersteuning Marktconform salaris Wie ben jij Je bent positief ingesteld en heel erg gemotiveerd. Je neemt graag de verantwoordelijkheid en zorgt altijd dat je werk op tijd af is. Kunnen werken in teamverband is voor jou geen probleem, en zelfstandig functioneren

Bekijk vacature »

Android (mobile) Developer met JAVA in de regio Al

Bedrijfsomschrijving Mobile Development en Ops Engineering gaan hand in hand bij deze organisatie dat een hoog verantwoordelijkheidsgevoel draagt. Als organisatie ontwikkelt zij dan ook veelal mobiele applicaties ter inspiratie en ondersteuning van belangrijke sectoren in Nederland. Met het technische team van gepassioneerde developers en engineers voeren ze dagelijks veelal diverse, inspirerende en complexe werkzaamheden uit. Door gebruik van innovatieve software en de nieuwste platformen binnen de sector is deze klant dan ook zeker als vooruitstrevend te betitelen waar zijn enorm veel waarde aan hecht. De organisatie is momenteel zeer succesvol en zet mooie stappen richting de toekomst en daarom kunnen

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Data Warehouse / Power BI Developer

Great opportunity in an international Automotive company A variating and challenging role focused on the BI landscape Over onze klant Working for the client means working for a high-end brand with talented employees and managers. The organisation is an ambitious company that strives for excellence in all areas of its business. Active in the Benelux market, the client is a leading player in the automotive leasing and financing market. We are among the best companies in the segment and offer leasing, financing and insurance products for all brands of the the client. Functieomschrijving As a "Data Warehouse & Power BI

Bekijk vacature »

Medior .NET Ontwikkelaar

In het kort Als .NET ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging graag met

Bekijk vacature »

Front-end Developer

As a Front-end Developer you are responsible for website development and improving customer experience based on data analyze. Do you want to join our inhouse development team? Get moving and strengthen Nederlandse Loterij as a Front-end Developer. Result oriented and joyfull. Thanks to your efforts the inhouse development team can work together on the development of new systems and applications. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Front-end Developer you score by: Front-end: Website development. Adding new functionality and improving customer experience based on data analyze, customer feedback. All in close corporation

Bekijk vacature »

backend developer

Do you want to work with the latest technologies? And are you a back-end or a front-end developer? Get moving and strengthen Nederlandse Loterij as a part of the inhouse development team. Result oriented and transparent. Thanks to your efforts, the Inhouse Development team can work together on the development of new systems and applications. The team is responsible for the development and operations of our lottery websites, including several back-end components focusing on the online channels for Staatsloterij, Lotto and Miljoenenspel. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a part of the

Bekijk vacature »

Medior/Senior Back-end developer

Dit ga je doen Bouwen en onderhouden van voorzieningen zoals een dataplatform of componenten bibliotheek; Automatiseren van basistaken van de organisatie; Data gedreven oplossingen ontwikkelen; Door ontwikkelen en beheren van applicaties voor klanten. Hier ga je werken Onze opdrachtgever uit de regio Amsterdam is grote maatschappelijk betrokken organisatie. Zij hebben als doel een fijne, veilige en aantrekkelijke leefomgeving te creëren waarin iedereen zich welkom voelt. Als back-end developer werk je hier aan verschillende applicaties die bijdragen aan een datagedreven Amsterdam. Binnen een Agile/Scrum team werk je nauw samen met de product owner en ondersteun je bij het adviseren op het

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Medior Frontend developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA GEOS werken onze consultants als Frontend Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Frontend Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam je kijkt verder dan je eigen rol. Eventueel begeleid je ook andere ontwikkelaars in het softwareontwikkelproces. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit

Bekijk vacature »

Social Media Expert (Utrecht)

Ben jij een expert op het gebied van social media? Zoek je een allround functie waarbij volop ruimte is om jouw kennis en creativiteit in te zetten? Ga jij zelfstandige te werk en wil je echt impact maken? Dan hebben wij de vacature voor jou! Jouw verantwoordelijkheden Als social media specialist ben je verantwoordelijk voor het vergroten van onze zichtbaarheid online en het vergoten van ons netwerk. Je creëert en manage de dagelijkse content op onze sociale kanalen i.s.m. marketing, communicatie en HR. Ons doel is meer zichtbaarheid als kennispartner binnen ons vakgebied. Maar ook ondersteun je bij onze branding,

Bekijk vacature »

Functioneel beheerder/data- en applicatiebeheerder

Meer mens, minder patiënt. Dat is waar Patiëntenfederatie Nederland voor staat. Met onze leden komen we op voor mensen die zorg nodig hebben, nu en in de toekomst. Zodat mensen de zorg die het beste bij hen past kunnen kiezen en krijgen. We maken beleid en beïnvloeden dat van andere organisaties en beslissers. Wij vragen hoe mensen de zorg ervaren. En laten op basis daarvan hun stem horen in de spreekkamer, de politiek en in het nieuws. Daar draag jij direct aan bij. Patiëntenfederatie Nederland vertegenwoordigt ruim 200 patiëntenorganisaties. Bij onze organisatie in Utrecht werken ongeveer 75 mensen. De Patiëntenfederatie

Bekijk vacature »

Senior developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »
Cocotj bos

cocotj bos

05/05/2022 16:30:32
Quote Anchor link
Hoi!,

Ik ben bezig met een klein nieuw projectje waar ik een week geleden aan begonnen ben.
Het is cloudsoftware voor op het web geprogrammeerd in PHP. En ik ben dus bezig met de File Manager.
Iedere user krijgt een specifiek mapje op de cloud. Dat is de bedoeling, maar het is niet de bedoeling
dat ze verder uit hun eigen mapje om zo helemaal door het systeem heen te snuffelen. Ik heb al geprobeerd
om realpath() functie te gebruiken, maar hij gaat nogsteeds het user mapje uit. Heel irritant dus. Hier
de code van hoe het er nu uitziet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$root_path
= $_SERVER['DOCUMENT_ROOT']."/cloudsoftware/users/tim/";
$realbase = realpath($root_path);

function
test()
{

  GLOBAL $realbase;

  if(isset($_GET['p']))
  {

    $_SESSION['dir'] = $_GET['p'];
    echo "<script>window.location = '?';</script>";
  }

  if(empty($_SESSION['dir']))
  {

    $realbase = str_replace('\\', '/', $realbase);
  }
else {
    $realbase = $_SESSION['dir'];
  }


  $exp = explode("/", $realbase);
  foreach($exp as $x=>$dirx)
  {

    if(empty($dirx))
    {

      continue;
    }

    $do = "<a href='?p='>";
    for($i=0;$i<=$x;$i++)
    {

      $do .= $exp[$i]."/";
    }

    $do .= "$dirx</a></li>\n";
  }

  chdir($realbase);


}


test();
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function get_root_dir()
{

  // include dir
  GLOBAL $realbase;

  $folder_list = "";
  $file_list  = "";

  $files = scandir($realbase);
  foreach($files as $file)
  {

    if(($file != '.'))
    {

      if(is_dir($realbase.'/'.$file))
      {

        $folder_list .= "<tr>
        <td><hr><a href='?p="
.$realbase.'/'.$file."' style='text-decoration: none; color: #333; font-size: 17px;'><i class='fa-solid fa-folder' style='color:  #2dacff; font-size: 25px;'></i> $file</a></td>
        <td><hr>"
.sizeFormat(filesize($realbase.'/'.$file))."</td>
        <td><hr>"
.date ("F d Y H:i:s.", filemtime($realbase.'/'.$file))."</td>
        <td><hr>ddd</td>
        </tr>"
;

        if(empty(is_dir($realbase.'/'.$file)))
        {

          echo 'go back';
        }
      }
elseif(is_file($realbase.'/'.$file)) {
        $file_list .= "<tr>
        <td><hr><a href='?p="
.$realbase.'/'.$file."' style='text-decoration: none; color: #333; font-size: 17px;'><i class='fa-solid fa-file' style='color: #2dacff; font-size: 27px;'></i> $file</a></td>
        <td><hr>"
.sizeFormat(filesize($realbase.'/'.$file))."</td>
        <td><hr>"
.date ("F d Y H:i:s.", filemtime($realbase.'/'.$file))."</td>
        <td><hr>Delete</td>
        </tr>"
;
      }
    }
  }


  print $folder_list;
  print $file_list;
}


// declare function
get_root_dir();
?>


Heeft iemand een idee wat ik hier precies fout doe? Kan het even niet zo 1..2...3 zien :P

Gr Cocotj
Gewijzigd op 05/05/2022 18:23:40 door Cocotj bos
 
PHP hulp

PHP hulp

29/11/2022 11:31:04
 
- Ariën  -
Beheerder

- Ariën -

05/05/2022 17:53:02
Quote Anchor link
Kan je jouw code tussen code-tags plaatsen? Zie ook de Veelgestelde Vragen.
Gewijzigd op 05/05/2022 17:53:35 door - Ariën -
 
Cocotj bos

cocotj bos

05/05/2022 18:08:44
Quote Anchor link
- Ariën - op 05/05/2022 17:53:02:
Kan je jouw code tussen code-tags plaatsen? Zie ook de Veelgestelde Vragen.


Hier tussen code tags:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
$root_path
= $_SERVER['DOCUMENT_ROOT']."/cloudsoftware/users/tim/";
$realbase = realpath($root_path);

function
test()
{

  GLOBAL $realbase;

  if(isset($_GET['p']))
  {

    $_SESSION['dir'] = $_GET['p'];
    echo "<script>window.location = '?';</script>";
  }

  if(empty($_SESSION['dir']))
  {

    $realbase = str_replace('\\', '/', $realbase);
  }
else {
    $realbase = $_SESSION['dir'];
  }


  $exp = explode("/", $realbase);
  foreach($exp as $x=>$dirx)
  {

    if(empty($dirx))
    {

      continue;
    }

    $do = "<a href='?p='>";
    for($i=0;$i<=$x;$i++)
    {

      $do .= $exp[$i]."/";
    }

    $do .= "$dirx</a></li>\n";
  }

  chdir($realbase);


}


test();
?>


dit zorgt ervoor dat er een sessie word aangemaakt als je in je File Manager zit,
En dat je beweegbaar door de bestanden heen kan. Maar je kan dus ook uit je usermap en dat is niet de bedoeling.

Hier een stuk code van hoe de bestanden worden gelist:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function get_root_dir()
{

  // include dir
  GLOBAL $realbase;

  $folder_list = "";
  $file_list  = "";

  $files = scandir($realbase);
  foreach($files as $file)
  {

    if(($file != '.'))
    {

      if(is_dir($realbase.'/'.$file))
      {

        $folder_list .= "<tr>
        <td><hr><a href='?p="
.$realbase.'/'.$file."' style='text-decoration: none; color: #333; font-size: 17px;'><i class='fa-solid fa-folder' style='color:  #2dacff; font-size: 25px;'></i> $file</a></td>
        <td><hr>"
.sizeFormat(filesize($realbase.'/'.$file))."</td>
        <td><hr>"
.date ("F d Y H:i:s.", filemtime($realbase.'/'.$file))."</td>
        <td><hr>ddd</td>
        </tr>"
;

        if(empty(is_dir($realbase.'/'.$file)))
        {

          echo 'go back';
        }
      }
elseif(is_file($realbase.'/'.$file)) {
        $file_list .= "<tr>
        <td><hr><a href='?p="
.$realbase.'/'.$file."' style='text-decoration: none; color: #333; font-size: 17px;'><i class='fa-solid fa-file' style='color: #2dacff; font-size: 27px;'></i> $file</a></td>
        <td><hr>"
.sizeFormat(filesize($realbase.'/'.$file))."</td>
        <td><hr>"
.date ("F d Y H:i:s.", filemtime($realbase.'/'.$file))."</td>
        <td><hr>Delete</td>
        </tr>"
;
      }
    }
  }


  print $folder_list;
  print $file_list;
}


// declare function
get_root_dir();
?>
Gewijzigd op 05/05/2022 18:09:19 door cocotj bos
 
Ward van der Put
Moderator

Ward van der Put

06/05/2022 12:21:00
Quote Anchor link
Je gebruikt wel '.' voor de huidige directory maar controleert niet op '..' voor een bovenliggende directory. Dat laatste maakt path traversal mogelijk, bijvoorbeeld ook met '../' in de vorm '/foo/../bar/' ergens tussenin.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.