面接の質問 - WEB関連 (1)


序文

      この記事では、Redis の不正アクセス脆弱性を悪用する方法、SSRF 脆弱性の原理、利用方法と修復計画について説明します。Java と PHP の SSRF の違い、CORS の原則と検出、XSS 永続性の実装方法、および MySQL で権限を昇格するいくつかの方法について簡単に説明します。


1. Redis の不正アクセスの脆弱性を悪用する方法

1.Redis脆弱性の原因

     1) Redis は 0.0.0.0:6379 にバインドされており、他の信頼できないソース IP アクセスやその他の関連セキュリティ ポリシーを防ぐファイアウォール ルールは追加されておらず、パブリック ネットワークに直接公開されています。
     2) パスワード認証が設定されていない場合 (通常は空)、パスワードなしで Redis サービスにリモートからログインできます。
     3) root として redis を実行します。

2.redis利用方法

     1) 再度接続でき、十分な権限がある場合は、スケジュールされたタスク実行コマンドを使用してシェルを再バインドするように crontab を記述します。
     2) ポート 22 が開かれ、権限が十分である場合は、サーバーに公開キーを書き込んでシステム権限を取得します。
     3) 物理パスと Web ディレクトリに Web シェルを書き込むための書き込み権限があることを確認します。
     4) Redis 4.x 以降、マスター/スレーブ コピー getshell。

2. SSRF脆弱性の原理、利用方法、修復計画は何ですか?JavaとPHPのSSRFの違いは何ですか?

1.SSRF脆弱性原則

     原則: イントラネット上でネットワーク リクエストを開始できるサービスを、他のサービスを攻撃するための踏み台として使用します。

2.SSRFの脆弱性箇所

     リモート画像読み込み、画像や記事の収集機能、URL共有、URLによるオンライン翻訳、トランスコーディングなどの機能。

3.SSRFの脆弱性悪用

     1) CURL はプロトコルをサポートします。
     2) ファイルプロトコルを使用してファイルを読み取ります。
     3) dict プロトコルを使用して、開いているポートを確認します。
     4) gopher プロトコルを使用してシェルをリバウンドします。

4.SSRF脆弱性エクスプロイトのバイパス

     1) @ を使用します: http://[email protected] = 10.10.10.10。
     2) IP アドレスを 10 進数と 8 進数に変換します: 127.0.0.1 = 2130706433。
     3) 短いアドレスを使用します: http://10.10.116.11 = http://t.cn/RwbLKDx。
     4) ポートバイパス: IP の後にポートを追加します。
     5) xip.io: 10.0.0.1.xip.io = 10.0.0.1。
     6) DNS 解決を使用する
     7) ピリオド (127.0.0.1) を使用する
     8) [::] を使用する (http://[::]:80/)
     9) ショート アドレスを使用する (http://dwz.cn/11SMa)
     10) プロトコル (Dict://、SFTP://、TFTP://、LDAP://、Gopher://)

5. SSRF脆弱性修復方法

     1) 返された情報をフィルタリングし、リクエストに対するリモート サーバーの応答を確認します。
     2) エラー情報を統一し、ユーザーがエラー情報からリモートサーバーのポート状態を判断できないようにします。
     3) 要求されたポートを、80、443、8080、8090 などの一般的に使用される http ポートに制限します。
     4) イントラネット IP をブラックリストに登録します。アプリケーションがイントラネット データの取得やイントラネットへの攻撃に使用されるのを防ぎます。
     5) 不要なプロトコルを無効にします。http および https リクエストのみが許可されます。
     6) 正規のルールを使用してパラメータを検証し、不正なリクエストがブラックリストをバイパスしないようにします。
     7) 30 倍ジャンプを禁止する。

6. Java と PHP の SSRF の違い

PHPがサポートするプロトコル Javaがサポートするプロトコル
file:// — ローカル ファイルシステムへのアクセス ファイル
http:// - HTTP(s) URL へのアクセス ftp
ftp:// — FTP URL へのアクセス ホリネズミ
php:// — さまざまな I/O ストリームへのアクセス http
zlib:// — 圧縮ストリーム https
data:// — データ (RFC 2397)
glob:// — パターンに一致するパス名を検索する 牛乳
phar:// — PHP アーカイブ ·ネットドキュメント
ssh2:// — セキ​​ュア シェル 2
rar:// — RAR
ogg:// — オーディオ ストリーム
Expect:// — プロセス対話ストリーム

3. CORS の原理と検出

1. CORS 脆弱性の原則

     CORS の正式名は「クロスオリジン リソース共有」です。オリジン ソースは厳密ではないため、クロスドメインの問題が発生し、ブラウザがクロスオリジン サーバーに XMLHttpRequest リクエストを発行できるようになります。

2.CORS検出

     Origin が * の場合、curl を使用して CORS をテストします。

	curl -HOrigin: https://evil.com” -I

4. XSS 永続性の実装方法

     XSS の永続性は、保存された XSS の脆弱性に依存します。保存された XSS の脆弱性が発見された場合、JS コードを挿入して Cookie を盗むことができます。フックを使用すると、より多くの操作を実行できます。たとえば、BeEF ツールがオンになっており、hook.js を使用してターゲット ホストを制御する場合、HOOK はテスト ページが閉じるまで継続します。この期間中、ブラウザ情報の取得を試みたり、ブラウザのイントラネット スキャンやその他の操作を使用したりすることができます。
ここに画像の説明を挿入します

5. MySQL で権限を昇格するにはいくつかの方法がありますので、それらについて簡単に説明します。

1. MySQL で権限を昇格するいくつかの方法

     1) シェルをoufileに書き込みます。
     2) シェルをグローバル ログ ファイルに書き込みます。
     3) UDF 権限の昇格。
     4) MOF の権利エスカレーション。
     5) スタートアップ項目の権限昇格
     6) CVE-2016-6663

2.oufile書き込みシェルへ

     1) 前提条件:

  • 現在の Web サイトへの絶対パスを知っており、書き込み権限を持っている
  • データベースの現在のユーザーは root 権限を持っています
  • load_file() がオンになっている場合、secure_file_priv は無制限です
  • PHP の magic_quotes_gpc はオフになっています。magic_quotes_gpc: がオンになっていると、'
    一重引用符がエスケープされて "\" バックスラッシュに変換され、シェル ステートメントを記述するには一重引用符が必要になるためです。

     2)番外:

  • MySQL 5.5 より前では、secure_file_priv はデフォルトで空でしたが、この場合、ファイルは任意の絶対パスに書き込むことができます。
  • MySQL 5.5 以降、secure_file_priv はデフォルトで NULL になり、この場合はファイルに書き込むことができません。

3. シェルをグローバル ログ ファイルに書き込む

     1) 前提条件:

  • Web フォルダーのアクセス許可により書き込みが許可されます
  • Windows システムの場合
  • 高い権限で MySQL または Apache を実行する

     2)番外:

  • MySQL バージョン 5.0 以降ではログ ファイルが作成され、ログのグローバル変数を変更することで getshell を実行できます。
  • general_log はデフォルトでオフになっています。これをオンにすると、ユーザーが入力したすべてのコマンドが記録され、対応するログ ファイルに保存されます。
  • ログ ファイルをカスタマイズし、ログ ファイルに内容を書き込むと、正常に getshell を実行できます。

     表示するには、次の関連コマンドを使用します。

	# 查看当前配置
	SHOW VARIABLES LIKE 'general%';
	# 更改日志文件位置
	set global general_log = "ON";
	set global general_log_file='/var/www/html/info.php';

4. UDF 権限の昇格

     1) UDF 権限昇格は、MySQL データベースの拡張機能を使用して、MySQL にカスタム関数を追加することです。この新しく追加された関数は、SQL ステートメントで呼び出すことができ、デフォルトの組み込み関数を呼び出すのと同じくらい便利です。Linux 環境での UDF 権限昇格は射撃場環境に限定されている可能性が高く、その理由: Linux の厳格なシステム権限では、mysql ユーザーまたは Web ユーザーにはプラグイン ディレクトリへの書き込み権限がありません。
     2) 利用プロセス: まず、ダイナミック リンク ライブラリ ファイルを見つけます. sqlmap ツールと Metasploit ツールには、システムに対応するダイナミック リンク ライブラリ ファイルが付属しています。sqlmap に付属するこれらのダイナミック リンク ライブラリは、誤って強制終了しないようにエンコードされているため、使用するには cloak.py ファイルをデコードし、MySQL プラグイン ディレクトリを見つけて、ダイナミック リンク ライブラリをプラグイン ディレクトリに渡す必要があります。そして、MySQL コマンドを使用してカスタム関数を作成し、このカスタム関数を通じてコマンドを実行できます。
     3) ターゲット MySQL が外部接続を許可しないが、PHP スクリプトをアップロードできる場合は、Navicat 独自のトンネル スクリプトを使用してターゲット Web サイトにアップロードし、HTTP チャネルをセットアップできます。

5. MOF 権限の昇格

     基本的に、Windows Server 2003 環境でのみ成功する可能性がありますが、これは非常にまれです。

6. スタートアップ項目の権限昇格

     この種の権限昇格は Windows 環境でも一般的です。Windows スタートアップ項目が MySQL で記述できる場合、MySQL を使用してカスタム スクリプトをスタートアップ項目にインポートできます。このスクリプトは、ユーザーのログイン時、起動時に自動的に実行されますを起動し、コンピュータをシャットダウンします。

7.CVE-2016-6663 権限昇格

     CVE-2016-6663 権限昇格は、低権限の www-data 権限を mysql 権限に昇格させることです。

おすすめ

転載: blog.csdn.net/qq_44029310/article/details/126745645