Sousteni prikazu pres MySQL

HackForum

Sousteni prikazu pres MySQL#
Dobry den, zajimalo by me, zda jdou spoustet systemove prikazy pres mysql. Napriklad ze bych si v php napsal aplikaci, ktera vola mysql prikaz ktery napriklad spusti "ls -l" a pak mi skript vypise obsah slozky.
(odpovědět)
Michal Maly | 194.58.31.*26.1.2009 15:04
re: Sousteni prikazu pres MySQL#
mozne to je, a sice pres UDF.
(odpovědět)
Emkei | E-mail | Website | PGP26.1.2009 16:55
re: Sousteni prikazu pres MySQL#
Jako ten filesystem? Muzete to prosim trochu upresnit?
(odpovědět)
Michal Maly | 75.102.25.*26.1.2009 17:31
re: Sousteni prikazu pres MySQL#
Tak uz mi doslo, ze to budou spise user-defined functions:) Mohl byste mi prosim naznacit, jak by vypadala takova UDF pro prikaz "ls -l"?
(odpovědět)
Michal Maly | 75.102.25.*26.1.2009 17:41
re: Sousteni prikazu pres MySQL#
viz [link]
(odpovědět)
Emkei | E-mail | Website | PGP26.1.2009 17:46
re: Sousteni prikazu pres MySQL#
To vypada moc pekne. Jenze tu je jeden problem. Na dany stroj se mohu prihlasit jako root do mysql. Nemohu se vsak na nej prihlasil pres ssh, tudis danou knihovnu nemohu na system nijak dopravit. Nebo vas napada nejaka moznost?
(odpovědět)
Michal Maly | 75.102.25.*26.1.2009 18:05
re: Sousteni prikazu pres MySQL#
Tak mam na tu masinu i ftp pristup, kam bych musel pripadne umistit ten zkompilovany modul, aby ho mysql vzalo?
(odpovědět)
Michal Maly | 75.102.25.*26.1.2009 19:53
re: Sousteni prikazu pres MySQL#
zalezi na verzi MySQL, do 5.1 je to jedno, od verze 5.1 tam, kam ukazuje promenna plugin_dir (pouzivej google).
(odpovědět)
Emkei | E-mail | Website | PGP26.1.2009 20:38
re: Sousteni prikazu pres MySQL#
Mate pravdu, toto jsem opravdu mohl najit v manualu, omlouvam se. Nakonec jsem tedy sdilenou knihovnu (.so) zkompiloval a umistil na server do adresare /tmp. Potom jsem spustil tento mysql prikaz:

CREATE FUNCTION sys_eval RETURNS STRING SONAME '/tmp/lib.so'

nacez mi server odpovedel:

#1124 - No paths allowed for shared library

Bezi tam MySQL verze 5.0.67. Do /lib/ bohuzel nemam jako ftpuser pravo zapisu. Zkousel jsem tam tedy zapsat pres mysql pres kontrukci SELECT INTO OUTFILE, ale to take nebylo povoleno.

Googlil jsem ten error 1124, ale vetsina vysledku se tyka jen nejakeho stareho exploitu na MySQL4, ktery uz pochopitelne nefunguje.

Je tedy jeste nejaka sance, kam a jak knihovnu umistit, abych z ni konecne mohl vytahnout onu funkci?

(odpovědět)
Michal Maly | 205.209.140.*26.1.2009 23:54
re: Sousteni prikazu pres MySQL#
musis ten zaznam pridat do databaze 'mysql' rucne (pres insert into), zmeny se tak ale projevi teprve po restartovani mysql demona (pouzij DDoS na db server nebo si pockej).
(odpovědět)
Emkei | E-mail | Website | PGP27.1.2009 0:44
re: Sousteni prikazu pres MySQL#
njn, to je vyborny napad. Pochopil jsem to dobre, ze zaznam je treba vlozit do tabulky func v databazi mysql a zaznam vypada takto:

name (char(64)) sys_exec
ret tinyint(1) 0 (tady jsem neprisel jak nastavit aby vracela retezec)
dl char(128) /tmp/knihovna.so
type enum function

Je to tak ok?
(odpovědět)
Michal Maly | 205.209.140.*27.1.2009 11:22
re: Sousteni prikazu pres MySQL#
presne tak (btw trefil jsi se, 0 reprezentuje navratovou hodnotu typu string).
(odpovědět)
Emkei | E-mail | Website | PGP27.1.2009 13:14
re: Sousteni prikazu pres MySQL#
Ted jsem si uvodmil, ze jmeno te funkce ma byt sys_eval - to je ta co vraci retezec s outputem prikazu. sys_exec vraci integer. Nazev jsem tedy zmenil na sys_eval. Jen jsem se chtel zeptat, zda je nejaka moznost, jak zjistim jestli se mysql daemon jiz restartoval? Zkusil jsem pouzit tento exploit: [link] a po poslednim prikazu, me to opravdu vyhodilo z administrace, jen si nejsem jisty zda to opravdu restartovalo daemona, protoze SQL prikaz

SELECT sys_eval('id');

mi stale pise:

#1305 - FUNCTION mysql.sys_eval does not exist
(odpovědět)
Michal Maly | 205.209.140.*27.1.2009 14:24
re: Sousteni prikazu pres MySQL#
pouze te to odpoji, databazi to ale nerestartuje (po restartu ti dana funkce zacne fungovat, tak to poznas).
(odpovědět)
Emkei | E-mail | Website | PGP27.1.2009 15:07
re: Sousteni prikazu pres MySQL#
Tak snad posledni otazka. Nikde jsem nenasel jake cislo v sloupci ret reprezentuje, ze funkce vraci integer (tak jako 0 znaci string).

Jak casto podle svych zkusenosti myslis ze asi dochazi na hostingovem serveru k restartu mysql daemona?
(odpovědět)
Michal Maly | 205.209.140.*27.1.2009 15:41
re: Sousteni prikazu pres MySQL#
integer reprezentuje cislo 2.

k restartu dochazi pouze obcas (i kdyz dost zalezi na hostingu), protoze k tomu jednoduse nebyva zas tak casto duvod. muze to byt tedy v radu nekolika dnu, ale i tydnu.
(odpovědět)
Emkei | E-mail | Website | PGP27.1.2009 16:05
re: Sousteni prikazu pres MySQL#
jen pro prehlednost a doplneni:
mysql.func [ret column]:
string = 0 (default)
real = 1
integer = 2
(odpovědět)
Emkei | E-mail | Website | PGP27.1.2009 23:13
re: Sousteni prikazu pres MySQL#
Diky moc...
(odpovědět)
Michal Maly | 205.209.140.*27.1.2009 23:50

Zpět
 
 
 

 
BBCode