[Phpmyadmin-devel] file_echo.php

Tyron Madlener tyronx at gmail.com
Thu Aug 4 15:47:58 CEST 2011


Forgot again to write to pma-dev list

On Thu, Aug 4, 2011 at 4:17 PM, Michal Čihař <michal at cihar.com> wrote:
> Hi
>
> Dne Thu, 4 Aug 2011 15:47:59 +0300
> Tyron Madlener <tyronx at gmail.com> napsal(a):
>
>> From what I can see, the token is being checked independent of what
>> value PMA_MINUMUM_COMMON  is set to. Looking at the other parts of
>> common.inc.php I also cannot see any security related functions not
>> being executed if PMA_MINUMUM_COMMON is set. Also defining
>> PMA_MINUMUM_COMMON I had added in the very first version of the file
>> (when it was named chart_export.php), and from what I remember you
>> overlooked that file there too.
>>
>> And I just tested that on the gsoc-tyron demo. It returns 'Invalid
>> request' if no valid token is set.
>>
>> Apart from that, please elaborate, how can an attacker do harm to a
>> user with my changes? And how is the user protected with
>> PMA_MINUMUM_COMMON removed? Looking at common.inc.php, I fail to find
>> any possible attack vector.
>
> Defining PMA_MINUMUM_COMMON skips MySQL authentication, so it might be
> easier to exploit any possible issue, but you seem to be right that
> token is checked.

Do you have an example how the skipping of the MySQL authentication
could be abused?

>
>> My added file echo for the monitor config forces the file name
>> 'monitor.cfg', so even if the token is not checked, and an attacker is
>> be able to trick a user to download a file no harm can be made, since
>> .cfg Files are not executable or viewable by standard programs.
>
> This one looks pretty safe.
>
>> And the import-echo I added uses $_FILES which can only be set with an
>> actual file upload. I wouldn't know how that could be exploited by an
>> attacker.
>
> This one definitely allows XSS (though still protected by token, so
> pretty harmless unless there is some other issue).

The only way I could see how this can be used for an XSS attack
(whether protected by token or not) is when the user himself uploads a
malicious chart config file.

We could counteract this by adding a notice "Do not use chart config
files from untrusted sources!" at the chart config import dialog.

And/Or I verify if the file really is pure json on the server side,
before echoing it back. I guess doing 'echo
json_encode(json_decode(file_get_contents(...)))' should do the trick.

[Edit:] Actually verify the json wont help. One could still hide html
code within a string.

>Is the echo service for HTML really needed?
>

It is used for the chart config import part of the monitor. There you
can upload a config file, which is within an iframe. Once submitted
and echo'd back my js code reads the config and applies it to the
monitor.

It might be possible to read local files with a HTML5 feature, or
maybe flash, but certainly will not work in all cases.

>
> --
>        Michal Čihař | http://cihar.com | http://blog.cihar.com
>




More information about the Developers mailing list