2013-06-06 2 views
1

Итак, мой сценарий позволяет людям писать контент в файл .txt и сохранять его на сервере. В настоящее время они могут писать все, что хотят. Это метод, который я использую для сохранения файла.Есть ли какие-либо уязвимости здесь? (PHP)

<?php 
$victim = $_POST['victim']; 
$user = $_POST['user']; 
$comment = $_POST['comment']; 
$IP = $_POST['IP']; 
$data = "$victim | $user | $comment | $IP\n"; 

//open the file and choose the mode 
$fh = fopen($victim.".txt", "a"); 

fwrite($fh, $data); //close the file fclose($fh); 
print "User Submitted"; 
echo "URL is mysite.com/".$victim.".txt" 
?> 

Мой вопрос: есть ли что-нибудь, что они могли бы написать, что может повредить работу моего сервера?

ответ

1

Конечно. Я могу послать эту строку в качестве аргумента victim POST:

/var/www/your_website/index.php\0 

И вы будете изменять index.php. В \0 PHP игнорирует расширение .txt. В user я мог бы отправить некоторый PHP-код и добавить его на вашу индексную страницу, что довольно плохо.

+0

+1 Хороший улов. Это серьезная проблема! –

+0

Есть ли способ записать эту строку для подозрительных символов, а если есть, отмените процесс? –

+0

@JamesPaterson: не доверяйте пользователю ввод вообще. Назначьте каждому файлу числовой идентификатор и сохраните его в папке. Кроме того, почему бы вам просто не использовать базу данных? – Blender

0

Ответ на этот вопрос невозможно, потому что существует так много возможностей. Одна вещь, которую я вижу, это то, что кто-то может загружать исполняемый код или скрипт. Если злоумышленник может заставить сервер обрабатывать сценарий каким-либо образом, это может привести к компрометации сервера. Если текстовый файл всегда обслуживается другим пользователем, у вас есть уязвимость XSS.

0

Да. В зависимости от конфигурации вашего сервера, например, люди могут предоставить URL-адрес (например, http://someotherpage/somepage?) в качестве аргумента victim и тем самым сделать PHP открытым HTTP (или каким-либо другим, возможно, вредоносным) соединением. Вы, возможно, не хотите, чтобы это произошло.

+0

Открытие URL-адреса HTTP в режиме добавления? Это невозможно. – Gumbo