HTB Driver
0x01 端口扫描
80web、135rpc、445smb、5985winrm(远程管理)
0x02 web
弱密码admin/admin登进后台,打印机固件更新中心
泄露了域信息:driver.htb,尝试host碰撞
暂时来看没什么收获
对唯一的功能点update测试:
“选择打印机型号并上传相应的固件更新到我们的文件共享。我们的测试团队将手动审查上传并很快启动测试”
0x03 smb
猜测和开放的445有关,用crackmapexec的ng版nxc(netexec)工具尝试枚举共享:
1 |
|
加上smbclient连接的结果判断无权连接
可以再加一次enum4linux-ng枚举:
1 |
|
返回测试文件上传,但因目录爆破没有结果,暂时放弃
1 |
|
0x04 scf攻击
回到页面的提示:
“选择打印机型号并上传相应的固件更新到我们的文件共享。我们的测试团队将手动审查上传并很快启动测试”
可以给smb在Web页面传文件,且管理者会检查,很容易想到scf攻击去钓鱼管理者
提取凭据
SCF(Shell 命令文件)文件可用于执行一组有限的操作,例如显示 Windows 桌面或打开 Windows 资源管理器,这并不新鲜。但是,SCF 文件可用于访问特定的 UNC (网络共享)路径,该文件将在用户打开该文件夹时自动执行。示例如下:
1 |
|
当用户浏览共享时,将自动从他的系统建立连接到 SCF 文件中包含的 UNC 路径。Windows 将尝试使用用户的用户名和密码对该共享进行身份验证。在该身份验证过程中,服务器会向客户端发送一个随机的 8 字节质询密钥,并且使用此质询密钥再次加密经过哈希处理的 NTLM/LANMAN 密码。响应程序将捕获 NTLMv2 哈希。
此时为了成为中间人我们需要responder起监听
1 |
|
上传scf文件后,拦截到NTLMv2 hash:
由于该hash和时间戳有关,同一个用户的hash也是在变化的,随便拉一个出来破解即可:
拿到用户凭据tony@liltony,之后可以即可winrm登录
1 |
|
gci递归找users中的flag:
1 |
|
附加命令执行
文章中还提到了利用msf进行中继攻击getshell的方式,尝试一下:
1 |
|
利用smbrelayx.py设置中继时执行的命令(触发反弹shell):
1 |
|
1 |
|
当用户浏览共享时,SMB 服务器将接收连接,并使用用户名和密码哈希来验证其系统,并将有效负载执行到可写共享。
很奇怪为什么会是认证失败?凭证难道不是它提供的吗?
0x05 提权
优先检索web目录:
1 |
|
看过内容后没有发现,进入自动枚举阶段
传winpeas执行,保存到log,下载到本地用less查看:
1 |
|
1 |
|
补充:winpeas可以在内存中用反射实现不落地运行
1 |
|
虽然本题可能由于winpeas太大无法直接加载进内存导致无法运行,但这种隐藏自己的思维要有
不过这个问题可以通过在cmd中强制使用64位powershell解决:
1 |
|
优先关注到spoolsv服务,结合靶机名称很容易想到打spoolsv的打印机漏洞,如Spooler、PetitPotam、PrintNightmare,优先关注到最常见的PrintNightmare
使用nxc的printnightmare模块检查:
1 |
|
两种利用模式,添加管理员用户或执行恶意dll(可以为msf反弹shell的payload)
1、添加管理员用户
得到的是administrator的shell
2、反弹shell
1 |
|
得到的是system的shell
补充:也可以用github下载的本地python脚本进行攻击
另外,该过程也可由msf完成:
0x06 总结
导入ps1模块受阻
如果在尝试导入模块时,被执行策略阻止,如上图,则可以尝试使用curl+管道符解决:
1 |
|