RDot

RDot (https://rdot.org/forum/index.php)
-   Web-среда/Web-applications (https://rdot.org/forum/forumdisplay.php?f=9)
-   -   Определение языка сайта (https://rdot.org/forum/showthread.php?t=2300)

12309 19.07.2012 01:13

Определение языка сайта
 
давайте соберём всю информацию, по которой можно определить, на каком языке сделан сайт.
сразу отвечая на вопрос "зачем?" - расширения скриптов (типа index.php) могут быть подделаны через AddHandler или названия скриптов вообще скрыты целиком с помощью mod_rewrite.


PHP:

- в названии кук может фигурировать "PHPSESSID"

- при подстановке строк
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
к адресу сайта можно получить некоторую информацию (easter eggs):

http://vkontakte.ru/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
http://ru.wikipedia.org/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42
http://www.liveinternet.com/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

- заголовки сервера:
X-Powered-By: PHP*

Ruby On Rails:

- на сайте может быть картинка /images/rails.png

- в исходном коде страниц могут быть таймстампы у тегов link и script, типа:
Код:

<link href="/styles/main.css?1342126740" rel="stylesheet" type="text/css" />
- в исходном коде страниц может присутствовать "csrf_token" (также см. Python)

- в исходном коде страницы 404 ошибки может быть текст "<!-- This file lives in public/404.html -->"

- сайт выдаёт ошибку 500 при подстановке в url кода
Код:

?a=a&a[]=a
https://moriz.de/?a=a&a[]=a

- в названии кук может фигурировать _name_session(иногда _name_sess), где name - имя rails проекта

- заголовки сервера:
X-Powered-By: Phusion Passenger (mod_rails/mod_rack)
X-Runtime: *
X-Rack-Cache: *

Python & Django

- в исходном коде страниц может присутствовать "csrf_token" и "csrfmiddlewaretoken"

- заголовки сервера:
не палится.

ASP.NET:

- в названии кук может фигурировать "ASP"

- в исходном страницы могут быть конструкции ViewState типа:
Код:

<input type="hidden" name="__VIEWSTATE" value="sadfasdfasdfasdfsadfsadfsadfasdf">
- шутка юмора:
Цитата:

If the HTML is a mess then you have 90% chance it's been developed in .NET
- заголовки сервера:
X-Powered-By: ASP*
Server: Microsoft-IIS*
X-AspNet-Version: *

Java:

- в названии кук может фигурировать "JSESSIONID"

- заголовки сервера:
X-Powered-By: Servlet*
X-Powered-By: JSP*

--------------------------

всё вышеуказанное может не соответствовать действительности - эти признаки могут быть лишь косвенными, т.к. легко изменяемы или отключаемы.

Spyder 19.07.2012 09:37

Java:
JSESSIONID в куках

Beched 19.07.2012 09:49

В случае PHP пасхальные яйца смысла не имеют, ибо они работают лишь при expose_php = 1, а при этой настройке в заголовке пишется полная версия PHP в X-Powered-By.

Кроме того, для ASP.NET тоже пишется в заголовок X-Powered-By + пишется версия в заголовок X-AspNet-Version. Зависимостей не знаю.

Собственно, у себя я ещё юзаю фингерпринт RoR от BlackFan'а. Выходит так:

Код:

        if (search( '(\.php[^\w])', self.args[ 'url' ].lower() ) != None) or (self.hdrs[ 'X-Powered-By' ] != None and 'PHP' in self.hdrs[ 'X-Powered-By' ]) or (self.hdrs[ 'Set-Cookie' ] != None and 'PHP' in self.hdrs[ 'Set-Cookie' ]):
            self.phptest()
        elif (search( '(\.aspx?[^\w])', self.args[ 'url' ].lower() ) != None or (self.hdrs[ 'X-Powered-By' ] != None and 'ASP.NET' in self.hdrs[ 'X-Powered-By' ]) ):
            self.aspnettest()
        elif self.makereq( self.args[ 'url' ] + '?a=a&a[]=a' )[ 1 ] == 500: print( '==========\nRuby on Rails framework possibly detected' )

А топик полезный, буду расширять коллекцию сигнатур.

Кстати здоровые сканеры кажется ещё не дожили до того, чтобы оптимизировать сканирование под конкретную технологию автоматически.
Т.е., допустим, найдётся папка /forum/, отвечающая сигнатурам PHP -- ищет php-баги, а найдётся каталог с ASP.NET (он может быть вынесен на другой серв) -- оптимизируем под дотнет скан в этом каталоге.

P.S. В DJango ещё csrfmiddlewaretoken есть.

rieux 19.07.2012 11:08

Web Technology Notifier
Displays the Web technology of the current page.
https://chrome.google.com/webstore/d...klealdhnogmlko

RoD 19.07.2012 11:16

Для этой цели использую расширение Wappalyzer для Firefox и Chrome. Очень доволен

12309 19.07.2012 14:14

спасибо, обновил первый пост

Beched 19.07.2012 14:19

Во, ещё с RoR бывает в X-Powered-By или Server заголовках инфа о наличии Phusion Passenger (mod_rails/mod_rack).

12309 19.07.2012 14:59

добавил заголовки сервера.
приз за самый палевный язык получает ruby on rails! :)

overxor 19.07.2012 18:58

RoR еще по умолчанию создает куку _name_session(иногда _name_sess). Где name - имя rails проекта.

k.v 25.07.2012 00:42

Еще немного признаков ASP.NET:

Наличие кук или скрытых полей в HTML с именами __VIEWSTATE и __EVENTVALIDATION

Наличие в HTML ссылок на css/js ресурсы с адресами /WebResource.axd?d= и /ScriptResource.axd?d=

HTTP 200, 403 или 500 в ответ на /Trace.axd

HTTP 50x на POST запрос с 1001 произвольным параметром, но не 50x на такой же запрос с 1000 параметрами

в ASP.NET ?parm1=val1&parm1=val2 склеивается в parm1=val1,val2

HTTP 50x на попытку передать в GET или POST запросе параметр с любым именем и значением "<a", но не 50x при значении "<%20"


Часовой пояс GMT +3, время: 04:40.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot