对当前进程进行提升权限

对于进程提升权限主要用到下面三个API      

           OpenProcessToken();        打开权限令牌 
           LookupPrivilegeValue();      检索一个唯一的本地标识符  LUID
            AdjustTokenPrivileges();   调整令牌特权

          BOOL OpenProcessToken(

   HANDLE ProcessHandle, //要修改访问权限的进程句柄
  DWORD DesiredAccess, //指定你要进行的操作类型
   PHANDLE TokenHandle //返回的访问令牌指针
  );            
 

  
      BOOL LookupPrivilegevalue(

  LPCTSTR lpSystemName, //
表示所要查看的系统,本地系统直接用NULL
  LPCTSTR lpName, //
表示所要查看的特权信息的名称
  PLUID lpLuid //接收所返回的制定特权名称的信息
  );      
  

 

    LUID是用来填充如下结构体的

typedef struct _TOKEN_PRIVILEGES {  

DWORD
PrivilegeCount;     //令牌属性的个数

  LUID_AND_ATTRIBUTES
Privileges[];  //LUID和属性数组

 } TOKEN_PRIVILEGES, *PTOKEN

              
BOOL AdjustTokenPrivileges(
  HANDLE
TokenHandle, //包含特权的句柄
  BOOL DisableAllPrivileges,//禁用所有权限标志
  PTOKEN_PRIVILEGESNewState,//新特权信息的指针(结构体)
  DWORD BufferLength, //缓冲数据大小,以字节为单位的PreviousState的缓存区(sizeof)
  PTOKEN_PRIVILEGES PreviousState,//接收被改变特权当前状态的Buffer
  PDWORD ReturnLength //接收PreviousState缓存区要求的大小
  );

看代码:

 

  1. HANDLE TokenHandle;
  2.         if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &TokenHandle))
  3.         {
  4.                 return ;
  5.         }
  6.         TOKEN_PRIVILEGES t_privileges = {0};
  7.         if(!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &t_privileges.Privileges[0].Luid))
  8.         {
  9.                 return ;
  10.         }
  11.         t_privileges.PrivilegeCount = 1;
  12.         t_privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  13.         if(!AdjustTokenPrivileges(TokenHandle, FALSE, &t_privileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL))
  14.         {
  15.                 CloseHandle(TokenHandle);
  16.                 return ;
  17.         }
时间: 2024-10-11 06:55:22

对当前进程进行提升权限的相关文章

Docker 安全:通过 Docker 提升权限

本文讲的是Docker 安全:通过 Docker 提升权限,[编者的话]本文的目的在于提醒大家注意 Docker 的安全性.本文中所有的内容总结成一句话:某个用户被加入了 docker 用户组,那么这个用户相当于直接获得了宿主机免认证的 root 权限.本文中的情况出现的情况比较苛刻,所以大家可以把这篇文章当做一个 warning 问不是 error. 文章太长不要看,一句话,不要用 docker 用户组. 如果你对 Docker 不熟悉的话,简单来说,Docker 是一个轻量级的应用容器.和常

sql注入-SQL注入,,绕过登陆,提升权限

问题描述 SQL注入,,绕过登陆,提升权限 通过找到的sql注入的确可以读取数据库内某些信息,通过模拟黑客入侵最终得到一账号,但是该账号无查看后台订单权限.想尝试登录后台系统并进行抓包,并尝试绕过登录或者提升权限.账号为admin密码为password ,该账号为user权限,需要提升为admin后才可查看flag.(提示:key的提交形式为flag:{xxxx}) 地址:http://218.2.197.250/TestOne/login.html 解决方案 路过水一贴,O(∩_∩)O.

NT/2000提升权限的方法小结 《转》

Windows NT/2000通用的提升方法      攻击者在获得系统一定的访问权限后通常要把自己的权限提升到管理员组,这样攻击者就控制了该计算机系统.这主要有以下几种方法:1. 获得管理员密码,下次就可以用该密码进入系统: 2. 先新建一个用户,然后把这个普通添加到管理员组,或者干脆直接把一个不起眼的用户如guest添加到管理员组: 3. 安装后门.     本文简要介绍在 Windows NT4 和 Windows 2000 里攻击者常用的提升权限的方法.下面是具体方法: 方法1:下载系统

Android需要提升权限的操作方法_Android

权限提升方法:一种方法:1.在AndroidManifest.xml中的manifest节点中添加 android:sharedUserId="android.uid.system".2.添加后程序在虚拟机上是不可以直接用的.但可以用eclipse编译成apk.3.(这一步经验证不执行即可)编译成apk后用压缩工具打开apk,把META-INF目录中的CERT.SF.CERT.RSA 两个文件删除.4.使用android自带的签名工具signapk.jar 以及源码中的platform

Android需要提升权限的操作方法

权限提升方法:一种方法:1.在AndroidManifest.xml中的manifest节点中添加 android:sharedUserId="android.uid.system".2.添加后程序在虚拟机上是不可以直接用的.但可以用eclipse编译成apk.3.(这一步经验证不执行即可)编译成apk后用压缩工具打开apk,把META-INF目录中的CERT.SF.CERT.RSA 两个文件删除.4.使用android自带的签名工具signapk.jar 以及源码中的platform

Webshell是如何绕过防火墙提升权限的?

本文讲的重点是webshell权限的提升和绕过防火墙,高手勿笑. 废话少说,咱们进入正题. 首先确定一下目标:http://www.sun***.com ,常见的虚拟主机.利用Upfile的漏洞相信大家获得webshell不难.我们这次获得这个webshell,不是DVBBS,而是自由动力3.6的软件上传过滤不严.网站http://www.sun***.com/lemon/Index.asp是自由动力3.6文章系统.Xr运用WinHex.exe和WSockExpert.exe上传一个网页木马ne

Serv-U FTP Server远程/本地提升权限缺陷

server|serv-u Serv-U FTP Server为RhinoSoft出品的一款Ftp Sserver软件,目前在全世界广为使用.经我研究发现,Serv-U FTP Server的配置文件存贮于Serv-U FTP Server文件目录下的ServUDaemon.ini文件中.如果本地受限用户或者远程拥有普通权限的攻击者能接触到该文件并精心构造ServUDaemon.ini文件中的内容就能利用Ftp进程在系统上以SYSTEM权限执行任意命令. 四.缺陷分析: Serv-U FTP S

WEBSHELL提升权限又一招_漏洞研究

      Serv提权方式人人都会用了,搞得现在的主机都配置得非常安全,看来攻击手法的层出不穷也是造成中国网络安全进步的一大原因之一,还有其他的pcanywhere获取密码,替换服务,等等.但是现在也没这么好搞了,随着安全意识的提高,之前的方式估计不怎么管用,现在我给大家介绍一下一种新的提权方式,看过古典LM做的那动画的朋友都知道吧?利用MYSQLl弱口令拿到系统权限,在WEBSHEL上也可实现,不过有个前提,就是目标主机装有MYSQL,而你又知道MYSQL的用户和密码,才可以进行提权.WEB

c#如何让管理员权限的进程创建一个普通进程

问题描述 c#如何让管理员权限的进程创建一个普通进程 如题,现在用c#写了一个控制台程序并以administrator身份运行,如何让它创建一个当前用户(普通用户)身份的普通权限进程. 解决方案 权限提升很复杂,资料也很少,最好的方法是构建一个服务来完成高权限的工作.见我的另一个提问http://ask.csdn.net/questions/162747 解决方案二: 用Process.Start调用runas命令可以做到. 解决方案三: CreateProcessAsUser() 解决方案四: