[php-upload] possible file upload attack

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
ik heb dit scriptje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* de database actie voor de file upload functie */
$uploaddir = '/var/www/upload/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
   print "File is valid, and was successfully uploaded. ";
   print "Here's some more debugging info:\n";
   print_r($_FILES);
} else {
   print "Possible file upload attack!  Here's some debugging info:\n";
   print_r($_FILES);
}
print "</pre>";


en als ik een bepaalde foto erheen stuur dan krijg ik deze debug info:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Possible file upload attack!  Here's some debugging info:
Array
(
    [userfile] => Array
        (
            [name] => badkamer.jpg
            [type] => 
            [tmp_name] => 
            [error] => 2
            [size] => 0
        )

)


terwijl het echt wel een plaatje is!
sommige bestanden doen het wel, maar dan is het type enzo wel ingevuld... echt raar!
hoe kan dit?

[ Voor 10% gewijzigd door hobbeldebobbel op 21-01-2004 14:41 ]

hier zou een slimme opmerking kunnen staan
maar die staat er niet


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Dit is basic PHP kennis. Zoek eens in de handleiding op PHP.net wat de returnwaarde is van move_uploaded_file onder verschillende omstandigheden.... Dan begrijp je ook waarom hij naar de else springt.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
dat had ik dus al gedaan met dit als resultaat:
If filename is not a valid upload file, then no action will occur, and move_uploaded_file() will return FALSE.

If filename is a valid upload file, but cannot be moved for some reason, no action will occur, and move_uploaded_file() will return FALSE. Additionally, a warning will be issued.
raar is dan dat sommige het wel doen en andere niet.... of?

het enige wat anders is, is de eroor code: das nu een 2.... waar kan je die opzoeken?

[ Voor 13% gewijzigd door hobbeldebobbel op 21-01-2004 14:51 ]

hier zou een slimme opmerking kunnen staan
maar die staat er niet


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Het is inderdaad raar dat dit random zou zijn...
$_FILES['userfile']['type']

The mime type of the file, if the browser provided this information. An example would be "image/gif"
Dat het mimetype niet wordt ingevuld komt dus door je browser. Doen bepaalde bestanden het nooit en anderen altijd? Heb je dit probleem in meerdere browsers? Kan het zijn dat niet geaccepteerde bestanden quotes oid bevatten?

[ Voor 10% gewijzigd door Spider.007 op 21-01-2004 14:51 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
ze bevatten geen quotes of iets dergelijks

hmmmm volgens mij is het dit:
<input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
heb er nu twee nullen bij gezet en ze doen het wel ...... dus die max_file_size zorgt ervoor dat de browser geen mime_type doorgeeft...
als ik dat stukje zelfs helemaal weg haal dan doet ie het altijd.....

wel raar dat je browser dan geen mimetype doorgeeft..... strange not?

[ Voor 12% gewijzigd door hobbeldebobbel op 21-01-2004 14:56 ]

hier zou een slimme opmerking kunnen staan
maar die staat er niet


Acties:
  • 0 Henk 'm!

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
hobbeldebobbel schreef op 21 januari 2004 @ 14:56:
ze bevatten geen quotes of iets dergelijks

hmmmm volgens mij is het dit:
<input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
heb er nu twee nullen bij gezet en ze doen het wel ...... dus die max_file_size zorgt ervoor dat de browser geen mime_type doorgeeft...
als ik dat stukje zelfs helemaal weg haal dan doet ie het altijd.....

wel raar dat je browser dan geen mimetype doorgeeft..... strange not?
lees je eigenlijk wel wat daar staat en wat je eerder zelf gequote hebt :? lijkt me dat je een bestand probeerde te uppen wat groter was dan de waarde die in je max_file_size stond, en dan geeft het component ook FALSE terug... (staat in 2e regel van je eigen quote)...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Acties:
  • 0 Henk 'm!

  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 24-06 09:47

4VAlien

Intarweb!

Eh die max file size moet dus NIET in de html zo kan elke halve zool die een http request kan maken bij jouw ff een DVDtje a 4GB uploaden. Die check moet je in de php code uitvoeren!

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Zie trouwens ook:
UPLOAD_ERR_FORM_SIZE

Waarde: 2; De grootte van het bestand is groter dan de in html gegeven MAX_FILE_SIZE.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
4VAlien schreef op 21 januari 2004 @ 15:12:
Eh die max file size moet dus NIET in de html zo kan elke halve zool die een http request kan maken bij jouw ff een DVDtje a 4GB uploaden. Die check moet je in de php code uitvoeren!
Stel maar gewoon een maximale post grootte in hoor, dat lijkt mij verstandiger...

Acties:
  • 0 Henk 'm!

  • hobbeldebobbel
  • Registratie: Februari 2001
  • Laatst online: 15-02-2023
FvKnijff schreef op 21 januari 2004 @ 15:09:
[...]


lees je eigenlijk wel wat daar staat en wat je eerder zelf gequote hebt :? lijkt me dat je een bestand probeerde te uppen wat groter was dan de waarde die in je max_file_size stond, en dan geeft het component ook FALSE terug... (staat in 2e regel van je eigen quote)...
eeeuh jah... dat bedoel ik daarmee ook te zeggen... maar als ie dus te groot is dan stuurt ie geen mimetype door, enkel de naam...... want de naam neemt ie wel mee, dat bedoelde ik daarmee!

hier zou een slimme opmerking kunnen staan
maar die staat er niet

Pagina: 1