Directory Traversal probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Back end Node.js developer

Functie Het ontwikkelteam bestaat momenteel uit 5 (back-end) Developers, 2 systeembeheerders, 1 DevOps engineer, 1 Tech Lead en 2 Scrum Masters. Samen wordt er doorontwikkeld aan twee SaaS-platformen die in een hoog tempo doorontwikkeld moeten worden. Omdat innovatie een belangrijk speerpunt binnen de organisatie is, wordt er ook continu naar snellere en slimmere oplossingen te bedenken en realiseren. Als Back-end Developer hou jij je dagelijks bezig met vraagstukken zoals: API-development, high volume datastromen, het ontwikkelen van Bots aan de hand van A.I. Daarnaast denk en werk jij mee aan de onlineapplicaties voor klanten. Er wordt zelfstandig en in teamverband gewerkt

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »

Airport Developer / System engineer

De functie Als onze nieuwe Airport Developer / System Engineer is je doel om uit nieuwbouw- en onderhoudsprojecten maximale waarde te creëren voor Schiphol Group en haar stakeholders. Vanuit je visie en expertise, maar ook (technologische) ontwikkelingen, wetgeving en beleid vertaal je klantwensen naar een gedegen programma van eisen. In de planontwikkelingsfase werk je nauw samen met Plan Ontwikkelaars om je kennis in te brengen ten behoeve van de kwaliteit van het investeringsvoorstel. Je overlegt met diverse partijen, stelt de vraag achter de vraag en verbindt zo de belangen van de luchthaven, proceseigenaar en asseteigenaar om tot een gedragen ontwikkelopgave

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

PHP developer (Symfony, Doctrine)

Functie Als PHP developer wordt er een hoge mate van zelfstandigheid verwacht, maar ook dat je goed opereert in een team waar kennis wordt gedeeld en dingen als codereviews erg veel voorkomen. Kwaliteit staat voorop, mede hierom werken ze bijvoorbeeld zonder echte deadlines in hun sprints. De SaaS-applicatie wordt volledig ontwikkeld in PHP en Symfony. De module bestaat uit een stuk informatie verrijking en intelligentie wat resulteert in een medische check. De logica wordt daarom in de code geïntrigeerd. Je bent onder andere bezig met complexe databases waar meer dan 80.000 medicijnen op verschillende niveaus in staan, die maandelijks worden

Bekijk vacature »

Medior Java developer

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 »

Randstad - Freelance Backend Developer/ Data Engin

Starting date: 10.05.2023 Salary range: €67,00 - €77,00 Duration: 6 months Hours: 40 Working model: Hybrid* MUST be NL based Job description: Our vision is to have a consistent and data driven experience for all sales across all our operating companies. Our mission is to enable our salespeople to be able to reach out to the right company at the right time. We do this by creating data driven micro services and solutions. We mainly focus on implementation in the Google Cloud but also integrate with local systems and other cloud solutions. A typical day: As a back-end developer you

Bekijk vacature »

Full Stack Developer

Ben jij een kei van een full-stack developer? Heb je ambitie om te groeien en jezelf te ontwikkelen binnen een ambitieus bedrijf? Gaat jouw hart sneller kloppen van transpilers of frameworks zoals Angular, Vue of React? Dan ben jij de persoon die wij zoeken! Voor onze opdrachtgever zijn wij op zoek naar een full-stack developer om onderdeel te zijn van een team dat bestaat uit gedreven developers. Ieders met hun eigen specialiteiten en kennis van de projecten en behoeften vanuit de product owners. We zoeken iemand die met zijn/haar huidige competenties en domeinen dit team wil begeleiden, stimuleren en tevens

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

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

14/05/2024 05:59:26
 
- 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.