* Download manager security patch *

Door Cynthia Fridsma, 22 jaar geleden, 6.636x bekeken

Hallo iedereen...

Voor QCMS (het content management systeem die ik op dit moment aan het ontwerpen ben) had ik een download manager gemaakt welke ik graag met jullie wil delen....

Het script bestaat uit twee onderdelen en ik heb het iewat aangepast, maar de basis en de werking blijft hetzelfde ;-)

edit :
Een nieuwe security patch en nog bedankt voor jullie feedback!!!!



edit :

* security update!

Het oorspronkelijke script bevatte een security hole, deze heb ik met de functie ereg in files.php verholpen:

-- toegevoegd :
# het download path moet terugkomen in
# new_url, indien niet dan probeert gebruiker verder te
# kijken, hetgeen we natuurlijk niet willen...

# Dit lossen we op met de functie ereg.
$patt = $path;

if(ereg($patt,$new_url)) :

--- tevens toegevoegd :
else:
// Gebruiker wil in een directory kijken waar hij/zij niets te
// zoeken heeft ..
echo "<br><hr>U krijgt geen toestemming om hier te komen...<br>";
endif;

edit :
* extra routines toegevoegd om het script 'waterdicht' te krijgen.

-- toegevoegd :
# voorkom dat de gebruiker via een omweg inbreekt,
# dit doen we met str_replace

$new_url=str_replace("../", "", $new_url);
$new_url=str_replace("./", "", $new_url);
$new_url=str_replace("/..", "", $new_url);
$new_url=str_replace("/../", "", $new_url);
$new_url=str_replace(".", "", $new_url);
$new_url=str_replace(chr(92), "", $new_url);
$new_url=str_replace("?", "", $new_url);

-- tevens toegevoegd :

$test = "/" . $path;

if (ereg($test, $new_url)):
$new_url=str_replace($test, $path, $new_url);
endif;

-- en als laatse de routine :
// test of de directory bestaat
if (is_dir($new_url)):

als deze niet bestaat dan krijgt men te zien :

else:
// $new_url heeft een ongeldige waarde opgeleverd ( zie regel nr 101 )
echo "<br><hr>U krijgt geen toestemming om hier te komen...<br>";
endif;

De wijzigingen heb ik inmiddels in files.php toegepast en je nu weet ik voor bijna 100% dat het waterdicht is en dat je het met een gerust hart kunt gebruiken ;-)

Voorbeeld: http://qcms.heathernova.us/download.php

Gesponsorde koppelingen

PHP script bestanden

  1. -download-manager-security-patch-

 

Er zijn 18 reacties op ' download manager security patch '

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Emile Verbunt
Emile Verbunt
22 jaar geleden
 
0 +1 -0 -1
mooi script ga ik zeker gebruiken.
misschien een idee voor 1.1 dat je info kan zien ;)
Gerben G
Gerben G
22 jaar geleden
 
0 +1 -0 -1
ziet er erg goed uit

ik gebruik hem vast nog wel een keer
Legolas
Legolas
22 jaar geleden
 
0 +1 -0 -1
Ik zou nog even naar de veiligheid kijken... =P
Cynthia Fridsma
cynthia Fridsma
22 jaar geleden
 
0 +1 -0 -1
Bedankt voor de tip, Legolas m.b.t. de veiligheid. Ik heb hier inmiddels een beveiligings patch voor gemaakt...
Cynthia Fridsma
cynthia Fridsma
22 jaar geleden
 
0 +1 -0 -1
Nog een paar laatste wijzigingen aangebracht en nu is hij volgens mij 'waterdicht'.
Jelle Posthuma
Jelle Posthuma
22 jaar geleden
 
0 +1 -0 -1
Zal zo ook eens kijken.
Tom Sebrechts
Tom Sebrechts
22 jaar geleden
 
0 +1 -0 -1
Het is wat je waterdicht noemt he...
Ik ben nog nooit iets tegen gekomen dat op Fort Knox lijkt...
Maar dit script is inderdaad wel zeer leuk.
Tijn
Tijn
21 jaar geleden
 
0 +1 -0 -1
Er zit wel leipe bug in je script..
Als je bijvoorbeeld dit doet:

http://qcms.heathernova.us/lib/functions/download.php?start=../../index.php

of andere dingen dan kan je de voledige source code leze van je website.
Maar wel mooi script verder:)
alleen ik snap niet precies wat je bedoelt met binary modus uploade?, ik run men server gewoon op men eige computer ennee.. et wil nietzo lukken mette, rar en exe enzo.. Mp3 doet et wel weer maarja, heb het momenteel verder niet echt nodig daarnietvan:)
Wim Mari
Wim Mari
21 jaar geleden
 
0 +1 -0 -1
$test = "/" . $path;

mss beter:
$test = ((substr($path, 1) == '/') ? $path : '/'.$path);
Tijn
Tijn
21 jaar geleden
 
0 +1 -0 -1
ohh ik snap et al :) lama
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
als ik het goed begrijp is dit een script is dat op dit soort site's wel vaker gebruikt in om onderandere scripts met te dowloaden! en ik heb het ook al uitgeprobeerd.
ik heb een map aangemaakt met de naam downloads en daarin een map kalender daarin geplaatst. en als ik get.php open krijg ik dat download progamma ook, maar als ik dat open krijg ik:
get[1] kladblok met de text: no such file
en in files.php en ik krijg dit in beeld:

Dir . open this directory
File kalender bytes

ik zou echt niet weten waar ik wat moet invullen.

kun je op de plaats waar wat in gevuld moet worden, dat invullen (wat je wel vaker ziet) met "http://www. jou url.nl" of iets dergelijks
Cynthia Fridsma
cynthia Fridsma
21 jaar geleden
 
0 +1 -0 -1
Het script is nu aangepast en zal nu gewoon werken....

Ik wil iedereen nog even bedanken voor de feedback.

Groetjes,
Cynthia
Cynthia Fridsma
cynthia Fridsma
21 jaar geleden
 
0 +1 -0 -1
p.s. TIJN,

Dankzij jou heb ik de security patch gemaakt... nu wordt de gebruiker gewoon door gestuurd naar de index page.

Overigens: ik werk niet meer aan QCMS omdat ik besloten had dat een CMS systeem veiliger & beter te beheersen is met een MySQL database.

Het systeem heet nu HN QCMS en het wordt open source. Alle scripts die ik hier op het forum heb gepubliceerd heb ik in het systeem verwerkt dus ik hoop dat jullie kritisch blijven kijken naar mijn scripts want daar leer ik weer een hoop van. Verleden jaar wist ik bijna niets van PHP (had het in een maandje tijd geleerd) en heb nu heel veel bij geleerd, mede dankzij jullie kritische blik.
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
nou ik heb het opnieuw gekoppiƫerd, maar snap er nog steeds de bal van, ik heb al alles wat er van tussen " " ingevuld met http://www.mijn url.nl/download manager/en hier get of files geprobeerd maar krijg het nu helemaal niet meer en als ik alles leeg laat krijg ik wel in files.php deze linken die ik kan openen.
Dir . open this directory
Dir kalgenda open this directory
Maar in get.php krijg ik nu 404
met de vorige get.php kreeg ik teminste nog dat download programmaatje in beeld.
Wat moet ik doen?
Cynthia Fridsma
cynthia Fridsma
21 jaar geleden
 
0 +1 -0 -1
Beste Niek,

Wat jij wilt kan niet. Je kan alleen naar een directory verwijzen, niet naar een url. Waar jij http://www.mij url.nl/download/ hebt staan, moet staan :
download/, geen URL aanduiding dus.

Als het script in een sub directory staat, bijvoorbeeld :

-- (root)
|--- scripts/files.php
|----download/

dan moet je verwijzen naar :
"../download/"

Niet naar de URL : http://www.mijn url.nl/download want dat zal dus nooit werken omdat het script een directory probeert te openen met behulp van de php opdracht :

$dh = opendir($path);

De opdracht opendir geeft al impliciet aan dat het een directory moet zijn, dus zonder de aanduiding http://www.mijn url.nl

Ik hoop dat het je een beetje duidelijk is?

Groetjes,
Cynthia
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
ik denk dat ik het snap naar aanleiding van de link in de reactie!
Tenminste dat denk ik, want zeker ben ik er niet van.
Maar ik moet (bijvoorbeeld hier) dus gewoon de link plaatsen naar het bestand get.php dat ik heb opgeslagen in de map "download manager" waarin ook files.php en de map downloads staan, en dat weer is opgeslagen in mijn hoofdmap ofwel de root zoals je dat noemt, en dat uploaden naar mijn server.
en dan dit hier plaatsen: mijn url.nl/hoofdmap/download_manager/get.php/
ik doe het ff zonder http, anders krijg ik een lege link
Niek Kasius
Niek Kasius
21 jaar geleden
 
0 +1 -0 -1
als ik het doe zoals ik in de vorige reactie aangaf, ik krijg het volgende in beeld:
Dir . open this directory
File kalgenda.rar 13873 bytes

en geeft Dir . open this directory als resulaat dit er boven: downloads/./
maar kan ik kalgenda.rar wel openen. maar dat is niet de bedoeling van het script neem ik aan. want daarvoor heb ik dat script niet nodig, want dat kan ook met: http://www.mijn url.nl/rootmap/downloalds/kalgenda.rar
heb het ff uit geprobeerd zo en dat werkt, alleen moet je dan alles wat je aanbied eerst inpakken met WinRaR.
PAS OP. dit is niet als kritiek bedoeld.
Maar ik weet niet wat ik moet veranderen om het werkend te krijgen,
en zoals ik al eerder schreef, kreeg ik met de vorige get.php wel dat programmaatje in beeld en kon ik er iets me downloaden, alleen was dat een leeg bestand. maar als deze get.php open krijg ik fout 404.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Steven de la fosse
Steven de la fosse
20 jaar geleden
 
0 +1 -0 -1
Ik heb even gekeken maar als ik dus daadwerkelijk ene zip toevoeg er aan en ik klik heb in de download pagina aan dan krijg ik dus een pagina vol met codes te zien.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. -download-manager-security-patch-

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.