1年前に見たクイズに質問がありました。この問題を解決しようとしていました。他のすべてはプログラミングに関連していますが、これはUnixファイルの権限に関連しています。以下はシナリオです。
SSHサーバーのログイン名とパスワードが提供されます。ssh your-username@server-addr
あなたの使命は、名前付きファイルを探して/home/abc/chekme
コンテンツを検索することです。
SSHリモートサーバーにログインすると、そのls -l
ログインに権限がないことを示す0つのファイルが表示されますが、ls -l
上記のファイルを実行すると、rootユーザー、グループ、および名前に読み取り権限が付与されていることがわかります。グループのメンバーはですchekme
。
権限がなく、グループのメンバーではないため、ファイルを読み取ることができません。ファイルの閲覧中に/etc/group
名前付きグループがあり、chekme
そのグループに1人のユーザーだけが追加されたことがわかりました。ユーザー名はguest
ここで私のGUIDをグループのGUIDに変更し、グループに自分自身を追加し、ユーザーsu
として実行しようとしguest
ましたが、最初の2つはroot
アクセスが必要で、su
ゲストはユーザーパスワードを実行するため、これらのいずれも機能しませんでした.
今どうすればいいですか?
ログイン資格情報の実際の問題:
ファイル:/home/hacker-weekly/そろばん
したがって、「/home/hacker-weekly/abacus」ファイルを読み、そこにファイルの内容をコミットする必要があります。
まだログイン資格情報を取得していない場合は、以下の「ログイン資格情報を取得」ボタンをクリックして取得してください。その後、次のコマンドを実行してマシンにログインできます。
ssh "ユーザー名"@"サーバーアドレス"
ヒント:UNIXベースのシステムのファイル権限について慎重に考えてください。
ログイン資格情報サーバー: ec2-175-41-164-254.ap-southeast-1.compute.amazonaws.com ユーザー名: ashwinscongo パスワード: ab12d6H
グループ名はabacusで、このグループのユーザーはguestです。 /etc/passwrdを試しましたが、何も見つけられませんでした。
答え1
方法:
$ ls -l /home/hacker-weekly/abacus
-r--r----- 1 root abacus 373 Nov 12 2012 /home/hacker-weekly/abacus
$ id
uid=1554(gilles) gid=1555(gilles) groups=1555(gilles)
abacus
したがって、root権限を取得するか、グループ権限を取得する必要があります。しかし、どのように?
ヒント(ステップ1):権限を高める方法は?
完全なソリューション(ステップ1):
存在してはいけないsetuidまたはsetgid実行可能ファイルを見つける:
find / -xdev -perm /4000 -ls 2> / dev / null
2つの可能な候補があります:/usr/local/abacusと/usr/bin/hacker-weekly - abacus 。後者を実行すると、SSH 秘密鍵が印刷されます。
ヒント(ステップ2):このファイルを使用する最も確実な方法は、別のアカウントにログインすることです。どのアカウント?
完全なソリューション(ステップ2):
/etc/passwdを見て、どのアカウントがあるかを確認します(システムアカウントと参加者を除く)。 abacus グループのメンバーを見つけるには、/etc/passwd および /etc/group を確認してください。ついにゲストがいました。
そのため、秘密鍵を ~/.ssh/id_rsa にコピーし、権限を正しく設定してから ssh guest@localhost を使用してください。ビンゴ。
<広告>
この種のコンテンツが好きなら、旗をつかむゲームとしてsec.se (セキュリティスタック交換) CTFチーム(組織の詳細についてはメタポストを参照してください)が、UNIXよりも多くのネットワーキング、リバースエンジニアリング、および暗号化が関連しています。
答え2
元の問題の説明はここにあります。http://www.hackerearth.com/problem/algorithm/hack-unix/。
考えてみると、権限でファイルにアクセスできる方法はないようです。ログイン後:
$ cd /home/hacker-weekly/
$ ls -la
total 28
drwxr-xr-x 2 hacker-weekly hacker-weekly 4096 Nov 12 2012 .
drwxr-xr-x 556 root root 20480 Sep 20 19:30 ..
-r--r----- 1 root abacus 373 Nov 12 2012 abacus
権限(Unix)とファイルシステムについて私が知っているのは、これらの権限によってファイルに直接アクセスする方法はありません。これらの権限は、(1)rootとしてアクセス権を取得する必要があること、または(2)グループにアクセスできるアカウントにアクセスする必要があることを示しますabacus
。
グループの視点を見る
グループの閲覧中/etc/passwd
およびファイル/etc/group
で次のものが見つかりました。
/etc/パスワード
$ grep -E "ashwinscongo|guest|abacus" /etc/passwd
guest:x:1001:1001::/home/guest:/bin/sh
.guest:x:1436:1437::/home/.guest:/bin/bash
ashwinscongo:x:1544:1545::/home/ashwinscongo:/bin/bash
/etc/グループ
$ grep -E "ashwinscongo|guest|abacus" /etc/group
guest:x:1001:
abacus:x:1004:guest
.guest:x:1437:
ashwinscongo:x:1545:
guest
したがって、そのアカウントへのアクセス権を取得する必要があるようです。
すど?
sudo 権限がありません。
$ sudo -l
[sudo] password for ashwinscongo:
Sorry, user ashwinscongo may not run sudo on ip-10-144-3-172
ログインゲスト
今は正面攻撃しか思い出せず試してみた2012年に最も人気のある25のパスワード、 とともに:
- ゲスト
- そろばん
- ab12d6H
- 削除
- そろばん
これらのどれも機能しません。
別の角度?
- (1)rootとして実行するか(2)ゲストとして実行する権限を持つ実行可能ファイルを見つけます(setuid / setgidファイル)!
- ゲストアクセス権の取得
- SSHを使用する一種の信頼関係? (ssh guest@localhost)角度?
実用的なソリューション
少し時間がかかりましたが、見つけました。私のユーザー名はslmingolです。明らかにギルスもそれを得た!
ボックスで実行可能ファイルを参照すると、必要なものすべてを見つけることができます。今何をすべきか分かったので、自分で調べるのが最善です。
権限に関するヒントは、権限を取得する必要があるという意味でのみ意味があります。 Googleで見つけることができるもう一つの手がかりは、SSHを介してゲストアカウントにログインするのにも役立ちます。 @Gillesの手がかり/回答を見て欺かないでください。
あなたが本当に詰まった場合は、スポイラーなしでいくつかの追加のヒントを提供できます!