Определите доли SMB, которые я прочитал и / или напишу

Для ряда целей (IP-адресов) идентификатор должен определить, к какому SMB-аккаунту не подключен мой аккаунт, к которому он имеет доступ для чтения и к которому он имеет доступ для чтения / записи.

В настоящее время я использую smbclient. Сначала я запускаю команду

smbclient -L [targetIP] -U [user] -p 445 

Это дает мне список акций. Например;

  Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin C$ Disk Default share IPC$ IPC Remote IPC print$ Disk Printer Drivers MySecrets Disk 

Затем я могу подключиться к файловому ресурсу с помощью этой команды

 smbclient //[target]/[name_of_share_from_list] -U [user] -p 445 

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

Это утомительно. Как мне автоматизировать это так, что для данного списка целей я получаю список всех акций и уровень доступа к моей учетной записи для них?

  • Является ли SAMBA маршрутизируемым?
  • Можно ли отключить перечисление пользователей Samba?
  • SMBFS Mount внезапно перестала работать. Ошибка CIFS
  • Использование SMB для соединения содержимого файла с локальной командой на локальной машине
  • mount -t cifs: «Операция не поддерживается», но может подключаться через smbclient
  • В midnight commander, как домен Windows указан при создании smb-соединения?
  • Как заставить Samba использовать SMB 3.0?
  • Как устранить проблему с исключительными разрешениями - Rasp Pi, HFS +, SMB, Mac
  • 2 Solutions collect form web for “Определите доли SMB, которые я прочитал и / или напишу”

    Вы уже много работали. Чтение man-страницы smbclient бы вам параметр -c <command> , который может использоваться для предоставления одной или нескольких команд напрямую, а не интерактивно.

     #!/bin/bash username="DOMAIN\\USER" # Double backslash password="PASSWORD" # For demonstration purposes only hostname="TARGET_HOST" # SMB hostname of target cd "${TMPDIR:-/tmp}" touch tmp_$$.tmp # Required locally to copy to target smbclient -L "$hostname" -g -A <( echo "username=$username"; echo "password=$password" ) 2>/dev/null | awk -F'|' '$1 == "Disk" {print $2}' | while IFS= read -r share do echo "Checking root of share '$share'" if smbclient "//$hostname/$share/" "$password" -U "$username" -c "dir" >/dev/null 2>&1 then status=READ # Try uprating to read/write if smbclient "//$hostname/$share/" "$password" -U "$username" -c "put tmp_$$.tmp ; rm tmp_$$.tmp" >/dev/null 2>&1 then status=WRITE fi else status=NONE fi case "$status" in READ) echo "Well, $username has read access" ;; WRITE) echo "Yes, $username has write access" ;; *) echo "No, $username has no access" ;; esac done rm -f tmp_$$.tmp 

    Возможно, SMBmap может помочь вам с этим tastk. Его автор разработал его именно для этой цели.

     $ python smbmap.py -H [targetIP] -u [user] -P 445 [+] Finding open SMB ports.... [+] User SMB session establishd... [+] IP: 192.168.0.4:445 Name: 192.168.0.4 Disk Permissions ---- ----------- ADMIN$ READ, WRITE C$ READ, WRITE IPC$ NO ACCESS TMPSHARE READ, WRITE 

    Вы можете использовать --host-file для передачи списка целей.

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

    Linux и Unix - лучшая ОС в мире.