Nsmyslný kód ?

Nsmyslný kód ?

autor Mikuláš Gangur -
Počet odpovědí: 2

Dobrý den,

při hledání nefunkčnosti části moodle (1.6.5+) jsem narazil v lib/moodlelib.php

na kód

$param = preg_replace("/eval|system|passthru|exec|include|require_once|move_uploaded_file/i", "", $param);

ve funkcích optional_param a required_param.

Je mi jasné, proč tam je. Není mi jasné, proč je tento kód před voláním funkce clean_param, která by tyto kontroly mimo dalších měla provést (neprovádí). 

Ptám se proto, že právě tento kód je příčinou nefunkčnosti části systému.  

                                   Děkuji za radu

Počet hodnocení: -
V odpovědi na Mikuláš Gangur

Re: Nsmyslný kód ?

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři
Zkuste se podívat, jak je to řešeno v novějších verzích. Můžete podrobněji popsat, jaké problémy tento kód způsobuje?

--mudrd8mz
V odpovědi na David Mudrák

Re: Nsmyslný kód ?

autor Mikuláš Gangur -

To už jsem udělal (a nenapsal do svého dotazu). V 1.8 (nic jiného k dispozici teď nemám) ten kód vůbec není tj. je to stejné jako v 1.6.5. První, co mne napadlo, že jde o útok.

Co to způsobuje ? Některé skripty si předávají hidden parametry mezi sebou a definují tím svou další akci např. "check", "execute" apod. Zmíněny kód kontroluje, zda nejsou ve vstupních parametrech škodlivé příkazy např. exec a pokud tam jsou, tak je odstraní. (je možné, že je tím skrývá). No a když najde např. v parametru akce "execute" slovo "exec", zruší jej, z akce zbyde pouze "ute", což skript následně nerozezná a požadovanou akci neprovede.