上一篇文章介绍了通过PowerShell批量扫描IP段和端口,在PSNet程序集中添加了Invoke-ScanIPPort函数,这里尽管扫描到了指定IP端中监听的端口,但是未对端口和相应的程序进行对应,正如我们所知一些常用的应用程序使用的默认端口是固定的,通过收集对应关系会便于实现批量对IP范围中存在的业务进行确认,这个功能我们将会在后续的文章中进行介绍。
在扫描到某些特定端口之后,我们接下来就需要寻找到这个端口对应业务的弱密码和常见密码,通过对默认密码的扫描,如果尝试出了正确的密码,很多时候我们能找到渗透测试时的重要突破口。对可以作为渗透测试时的弱密码攻击的方向通常有ftp、mysql、sqlserver、oracle、telnet、ssh、Tomcat、Weblogic等等,如果能在扫描到此类服务后,快速通过统一的方法扫描到弱密码将会大大加快对敏感信息和权限提升的进度。本文和后续的文章将会试图通过PowerShell实现对上述潜在攻击点的弱密码尝试,本文首先针对ftp的密码 尝试。
在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建名为Invoke-FtpLogin.ps1的脚本用于在传入指定ftp地址、用户名和密码后返回是否登录成功。
同时在$env:PSSpace/PSNet/PSNet.psm1中添加对Invoke-FtpLogin.ps1程序文件的应用,便于在PowerShell初始化时同时初始化此函数 :
. $env:PSSpace/PSNet/TCPOp/Invoke-FtpLogin.ps1
下面说明此函数中相关参数的作用:
-Site用于传入ftp服务器的地址,格式如ftp://localhost ,可以使用域名或IP地址,此参数必选 -User用于传入要验证的ftp服务器的用户名,默认值为Anonymous,可选 -Pass用于传入要验证的ftp服务器的密码,默认值为hello@world ,可选(注:ftp协议中匿名用户的密码可以使用任何带有@符号的字符串来代替) -Port用于要验证的ftp服务器的端口号,默认值为21,可选(暂时未使用,后续文章将用于扩展) -TimeOut用于指定验证密码时ftp服务器的超时时间,默认值为3000ms,可选(暂时未使用,后续文章将用于扩展) -ReadWriteTimeOut用于指定ftp服务器的默认读写超时时间,默认值为10000ms,可选(暂时未使用,后续文章将用于扩展)
此脚本的调用方式:
Invoke-FtpLogin -Site ftp://localhost -User test -Pass abcd1234
执行效果如下:
能看到存在匿名用户的情况下输入ftp主机地址即可登录,而输入ftp对应的密码则只有输入正确值才会显示正常。
代码如下:
=====文件名:Invoke-FtpLogin.ps1===== Function Invoke-FtpLogin{ Param( [parameter(Mandatory = $true)] [string]$Site = "ftp://localhost", [string]$User = "Anonymous", [string]$Pass = "hello@world", [int]$Port=21, [int]$TimeOut=3000, [int]$ReadWriteTimeout=10000 )Write-Host "Get FTP site dir listing..."
# Do directory listing $FTPreq = [System.Net.FtpWebRequest]::Create($Site) $FTPreq.Timeout = $TimeOut # msec (default is infinite) $FTPreq.ReadWriteTimeout = $ReadWriteTimeout # msec (default is 300,000 - 5 mins) $FTPreq.KeepAlive = $false # (default is enabled) $FTPreq.Credentials = New-Object System.Net.NetworkCredential($User,$Pass) $FTPreq.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
try { $FTPres = $FTPreq.GetResponse() Write-Host "$User _ $Pass OK" $success = $true
#Write-Host $FTPres.StatusCode -nonewline #Write-Host $FTPres.StatusDescription $FTPres.Close() } catch { Write-Host "FAILED: $_" $success = $false } }
本文向大家介绍PowerShell脚本开发尝试登录SQL Server,包括了PowerShell脚本开发尝试登录SQL Server的使用技巧和注意事项,需要的朋友参考一下 前三篇文章中创建了PSNet程序集,其中包含了对指定IP进行端口扫描,收发TCP消息包和收发UDP消息包的相关功能,作为这是最基本的对网络情况的最基本检测,后续的文章将会对此程序集进行不断的扩充使其包含更全面的功能。但是光有
本文向大家介绍PowerShell小技巧之尝试ssh登录,包括了PowerShell小技巧之尝试ssh登录的使用技巧和注意事项,需要的朋友参考一下 在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建Invoke-SSHLogin.ps1脚本用于在传入指定ssh地址、用户名和密码后返回是否登录成功。 在$env:PSSpace/PSNet/下创建Lib目录用
我正在使用selenium打开并登录google帐户,这是我的第一步。我已成功打开并填写了电子邮件回复,但在提交后,我收到了以下错误 “此浏览器或应用程序可能不安全。了解更多尝试使用不同的浏览器。如果您已经在使用受支持的浏览器,您可以刷新屏幕并重试登录。”来自谷歌。 有什么办法可以绕过这个问题吗?下面是我的代码。
本文向大家介绍PowerShell脚本开发之收发TCP消息包,包括了PowerShell脚本开发之收发TCP消息包的使用技巧和注意事项,需要的朋友参考一下 在上篇文章中,我们在PSNet包中创建了Test-TCPPort函数用于探测指定IP的指定端口是否开放,检测端口之后大多数人想到的可能就是需要通过PowerShell收发TCP消息包了,这篇文章里将会描述如何在PSNet包中创建针对TCP消息包
本文向大家介绍PowerShell脚本开发之收发UDP消息包,包括了PowerShell脚本开发之收发UDP消息包的使用技巧和注意事项,需要的朋友参考一下 在上篇文章中,在PSNet工具集中创建了Send-TCPMessage和Receive-TCPMessage两个函数实现了通过PowerShell收发TCP消息包的功能,有了TCP包的发送和接收,自然少不了UDP消息包的发送和接收,本文将会介绍
本文向大家介绍PowerShell脚本开发之批量扫描IP和端口,包括了PowerShell脚本开发之批量扫描IP和端口的使用技巧和注意事项,需要的朋友参考一下 前面的文章中曾经发布了对指定IP进行批量端口扫描的方法和脚本,过PowerShell收发TCP和UDP消息包的方法以及通过PowerShell尝试登录SQLServer服务的方法,这构成了PSNet程序集用于通过PowerShell对网络状