Try Hack Me 勉強記録 #3 - SQLインジェクション攻撃とハッシュ解析、権限昇格のテクニック
こんにちは!今回も Try Hack Me で学んだサイバーセキュリティの実践的な内容をまとめていきます。
今回は、Webエンジニアなら一度は耳にしたことがある「SQLインジェクション」の自動化手法と、OSレベルの権限昇格について深掘りしました。
---
1. SQLインジェクションと攻撃の自動化(sqlmap)
Webサイトのログインフォームなどで、データベースを不正に操作する「SQLインジェクション」。
手動で試すのも良いですが、実戦では sqlmap というツールを使って自動化するのが効率的です。
# 攻撃のステップ
1. まずログインを試みる: 'or 1=1 # などの有名なフレーズを入れてみて、反応を確めます。
2. リクエストをキャプチャ: ログインボタンを押した時のPOSTリクエストを、プロキシツールなどでキャプチャします。
3. Rawリクエストとして保存: キャプチャした内容をテキストファイル(例: request.txt)として保存します。
# sqlmapを実行する
保存したリクエストファイルを使って、一気にデータベースの中身を暴きます。
# 1. 接続先のデータベース一覧を取得
sqlmap -r request.txt -p username --dbs
# 2. 特定のデータベース(例: test)のテーブルを列挙
sqlmap -r request.txt -p username -D test --tables
# 3. 現在のユーザー情報を取得
sqlmap -r request.txt -p username --current-user> [!IMPORTANT]
> -r オプションでリクエストファイルを指定することで、ブラウザから送られる複雑なCookieやヘッダーをそのまま再現できるため、成功率が格段に上がります。---
2. ハッシュ値の解読(hashcat)
データベースからユーザー情報を盗み出すことに成功しても、パスワードは「ハッシュ化」されていることが多いです。これを解読(クラック)するために hashcat を使います。

hashcatのコマンド解説
ハッシュ値を解読する際の定石コマンド:
hashcat '$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.' /root/Tools/wordlists/rockyou.txt -m 1600- **ハッシュ値をシングルクォートで囲む**: 特殊文字が含まれることが多いため必須です。
- **ロックユー(rockyou.txt)**: 世界で最も有名な辞書ファイルです。これを使って辞書攻撃を仕掛けます。
- **-m 1600**: ハッシュのアルゴリズム(この場合はApacheのMD5)を指定するモード番号です。これを間違うと絶対に解読できません。
---
3. Linux権限昇格への足がかり
システムに一般ユーザーとして侵入した後、管理者(root)権限を奪う「権限昇格」が次の目標になります。
# コマンド置換の罠
シェルスクリプトや実行環境で、以下のような記述があったら要注意です。

コマンド実行の結果を渡す記述
command=$(ls -l)ドルマークとかっこ $(...) で囲まれた部分は、その中身がコマンドとして実行され、その結果が変数に代入されます。
もし攻撃者がこの中に自分の好きなコマンドを忍び込ませることができれば、任意のコードが実行されてしまいます。
# 覚えておきたい基本コマンド
- **.sh**: シェルスクリプトファイル。
- **chmod**: 指定したファイルに実行権限(`+x`)などを与えます。
- **sudo**: 管理者権限でコマンドを実行します。
- **tar**: 複数のファイルを一つにまとめるアーカイブ形式。解凍時にシンボリックリンクを利用した攻撃手法(Wildcard Injectionなど)も存在します。
---
まとめ
断片的な知識も、つなぎ合わせることで強力な武器になります。
SQLインジェクションでDBを抜き、ハッシュを解読してログインし、スクリプトの不備を突いてrootを奪う。この一連の流れがハッキングの醍醐味(?)ですね。
次はもっと高度な権限昇格テクニックについても勉強していきたいと思います!
この記事が参考になったら、ぜひいいねやコメントをお願いします!


