PowerShell尝试ssh登录推荐

上篇文章介绍了通过PowerShell尝试登录ftp,本文中将会向大家介绍如何通过PowerShell尝试Linux SSH登录。由于Linux登录大多是通过SSH的模式进行登录的,渗透测试时扫描到22端口监听有SSH,可以通过社工收集管理员相关信息编制字典,如果能有脚本可以基于字典对Linux进行用户名和密码的尝试,将会在渗透测试时起到很重要的作用。

在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建Invoke-SSHLogin.ps1脚本用于在传入指定ssh地址、用户名和密码后返回是否登录成功。

在$env:PSSpace/PSNet/下创建Lib目录用于存放在脚本中需要使用的第三方库,由于在本文中需要引用Renci.SshNet.dll用户可以从http://sshnet.codeplex.com/releases/view/72214中下载程序,解压后将文件放置在$env:PSSpace/PSNet/Lib中用于后续的调用。

在$env:PSSpace/PSNet/PSNet.psm1添加对刚下载的程序集的引用,并添加对Invoke-SSHLogin.ps1脚本的引用,在PowerShell启动时同时加载并初始化函数。

[void][reflection.assembly]::LoadFrom((Resolve-Path $env:PSSpace/PSNet/Lib/Renci.SshNet.dll )) . $env:PSSpace/PSNet/TCPOp/Invoke-SSHLogin.ps1

上述两条语句,第一条用于获取Dll文件的绝对位置,并将dll文件 引用到当前session中。

接下来定义此函数中的相关参数:

-Site参数用于指定要尝试密码的SSH主机域名或IP,此参数必须 -User参数用于指定登录时使用的用户名,此参数必须 -Pass参数用于指定登录时使用的密码,此参数必须

此脚本文件加载后的调用方式如下:

Invoke-SSHLogin -Site localhost -User fuhj -Pass P@ssWorD

执行效果图如下:

能看到例子中,选择了正确的主机名,用户名和密码后登录成功了,而输入错误的用户名和密码以及输出不存在监听的主机名时均报错了.为了保证服务器和用户名密码的安全,对于存在的主机已经通过处理抹去了主机名用户名和密码了.

源代码如下:

 =====文件名:Invoke-SSHLogin.ps1=====Function Invoke-SSHLogin{Param( [parameter(Mandatory = $true)] [string]$Site = localhost , [parameter(Mandatory = $true)] [string]$User = Anonymous , [parameter(Mandatory = $true)] [string]$Pass = hello@world , [int]$Port=22Write-Host Try to Login ssh... # Do directory listing$SSHreq = New-Object Renci.SshNet.SshClient($Site,$Port,$User,$Pass) $SSHreq.Connect() if ($SSHreq.IsConnected) { $cmd = $SSHreq.RunCommand( ps aux ) $output = $cmd.Result.Split( `n ) $success = $true Write-Host Login Succed -BackgroundColor green -ForegroundColor yellow$cmd.Dispose()$SSHreq.Disconnect()$SSHreq.Dispose()catch Write-Host FAILED: $_ -BackgroundColor red -ForegroundColor black $success = $false}

作者: 付海军 出处:http://fuhj02.blog.51cto.com 版权:本文版权归作者和51cto共有 转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢 要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接且保证内容完整!否则必究法律责任! 个人网站: http://txj.shell.tor.hu/

先知三日,富贵十年。

PowerShell尝试ssh登录推荐

相关文章:

你感兴趣的文章:

标签云: