Windows Token九种权限的利用分别是怎么样的
- 行业动态
- 2023-12-28
- 1
Windows Token九种权限的利用分别是:1. 普通用户(或者LocalService用户)的特殊Token有哪些可利用方法;2. 能否提权;3. 如何判断;4. 利用思路;5. 实现代码。
Windows Token九种权限的利用分别是怎么样的
在Windows操作系统中,Token是一种用于表示访问权限的对象,Token权限可以分为两类:对象权限(如读取、写入、修改等)和系统权限(如管理员、用户等),本文将详细介绍Windows Token的九种权限及其利用方法。
创建访问令牌
1、生成凭据
要使用Token权限,首先需要创建一个访问令牌,访问令牌是由用户名和密码生成的一组安全凭据,可以使用以下命令生成凭据:
net user <用户名> <密码> /add
2、导入证书
为了提高安全性,可以使用数字签名证书对访问令牌进行加密,需要从证书颁发机构(CA)购买一个数字签名证书,并将其导入到用户的计算机上,导入证书的命令如下:
certutil -addstore -f "<证书存储路径>" "<证书文件路径>"
3、生成访问令牌
使用以下命令生成访问令牌:
runas /user:<用户名> "%ProgramFiles%Windows Kits10binNETFX 4.6.1 Toolsx86fxgentoken.exe" /grant:<用户名>:<密码> /out:<访问令牌文件路径> /tbn:<访问令牌名称> /tr=<请求协议> /ru=<请求URL> /rl=<请求资源> /rn=<返回资源> /rp=<返回路径> /rd=<返回数据> /rf=<返回格式> /rq=<请求查询字符串> /rm=<请求消息正文> /rt=<返回时间> /rue=<返回编码> /rce=<返回压缩编码> /rcv=<返回验证码> /rct=<返回内容类型> /rdc=<返回数据编码> /rdb=<返回数据二进制格式> /rdf=<返回数据格式> /rdp=<返回数据指针> /rdl=<返回数据长度> /rds=<返回数据大小> /rdw=<返回数据宽度]"
利用Token权限
1、ShellExecuteEx函数
ShellExecuteEx函数可以用于执行一个程序或打开一个文档,通过设置SHELLEXECUTEINFO结构体的dwFlags参数,可以将Token权限传递给ShellExecuteEx函数,以下代码演示了如何使用ShellExecuteEx函数打开一个包含Token权限的文档:
include <windows.h> include <iostream> int main() { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); // 创建一个包含Token权限的文档模板字符串 wchar_t* documentTemplate = L"%%windir%%system32\calc.exe"; wchar_t commandLine[MAX_PATH]; swprintf(commandLine, MAX_PATH, L""%s"", documentTemplate); // 将Token权限传递给ShellExecuteEx函数 BOOL result = ShellExecuteExW(&si, L"open", commandLine, NULL, NULL, SW_SHOWNORMAL, NULL); if (result) { std::cout << "成功打开文档" << std::endl; } else { std::cout << "打开文档失败,错误代码:" << GetLastError() << std::endl; } return 0; }
2、Windows API函数
除了使用C++标准库中的ShellExecuteEx函数外,还可以使用Windows API函数来执行具有Token权限的操作,以下代码演示了如何使用ShellExecuteA函数打开一个包含Token权限的文档:
include <windows.h> include <iostream> include <string> include <vector> include <shlobj.h> // ShellExecuteExA函数所在的头文件 pragma comment(lib, "shell32.lib") // 需要链接shell32.lib库文件以使用ShellExecuteExA函数 pragma comment(lib, "ole32.lib") // 需要链接ole32.lib库文件以使用CoTaskMemFree函数和IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用IStream接口类库文件以使用我
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/341823.html