<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord cha HackenProof**](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 kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
Teknolojia ya mashambulizi inayojulikana kama XPATH Injection hutumiwa kuchukua faida ya programu ambazo hujenga maswali ya XPath (XML Path Language) kulingana na mchango wa mtumiaji ili kuuliza au kupitia hati za XML.
- **bookstore**: Nodes zote zenye jina "bookstore" zinachaguliwa.
- **/bookstore**: Elementi ya msingi ya bookstore inachaguliwa. Inafahamika kuwa njia kamili ya kufikia elementi ni kwa njia ya kuanza na kashiri (/).
- **bookstore/book**: Elements zote za kitabu ambazo ni watoto wa bookstore zinachaguliwa.
- **//book**: Elements zote za kitabu katika hati zinachaguliwa, bila kujali eneo lao.
- **bookstore//book**: Elements zote za kitabu ambazo ni wazao wa elementi ya bookstore zinachaguliwa, bila kujali nafasi yao chini ya elementi ya bookstore.
- **//@lang**: Vipengele vyote vyenye jina la lang vinachaguliwa.
- **/bookstore/book[1]**: Elementi ya kwanza ya kitabu ambayo ni mtoto wa elementi ya bookstore inachaguliwa. Njia mbadala kwa toleo la IE 5 hadi 9, ambalo linaindeksi node ya kwanza kama [0], ni kuweka SelectionLanguage kuwa XPath kupitia JavaScript.
- **/bookstore/book[last()]**: Elementi ya mwisho ya kitabu ambayo ni mtoto wa elementi ya bookstore inachaguliwa.
- **/bookstore/book[last()-1]**: Elementi ya mwisho kabla ya mwisho ya kitabu ambayo ni mtoto wa elementi ya bookstore inachaguliwa.
XPath Injection ni mbinu ya kudukua ambapo mtu anaweza kuingiza kanuni ya XPath iliyobadilishwa kwenye maombi ya wavuti ambayo hutumia XPath kutekeleza utaftaji wa data. Kwa kufanya hivyo, mtu anaweza kupata ufikiaji usioidhinishwa kwa habari ambayo haipaswi kuwa inapatikana.
Kwa kawaida, XPath Injection hufanyika kwa kuingiza kanuni ya XPath iliyoundwa vibaya katika maeneo ya utaftaji wa maombi ya wavuti. Hii inaweza kufanyika kupitia vigezo vya URL, fomu za maingiliano, au hata vitambulisho vya maombi ya wavuti.
Kwa mfano, ikiwa maombi ya wavuti yanatumia XPath kuunda utaftaji wa data kulingana na jina la mtumiaji uliyoingia, mtu anaweza kuingiza kanuni ya XPath iliyobadilishwa kwenye uwanja wa jina la mtumiaji ili kupata habari zisizoidhinishwa. Kwa mfano, kwa kuingiza `' or '1'='1` kama jina la mtumiaji, mtu anaweza kubadilisha utaftaji wa XPath ili kuonyesha habari zote katika hifadhidata badala ya habari ya mtumiaji maalum.
Kwa kufanikiwa kutekeleza XPath Injection, mtu anaweza kupata habari nyeti kama majina ya mtumiaji, nywila, habari ya kifedha, na zaidi. Hii inaweza kuwa na athari mbaya kwa usalama wa maombi ya wavuti na faragha ya watumiaji.
Kwa hiyo, ni muhimu kwa watengenezaji wa maombi ya wavuti kuhakikisha kuwa wanazuia mashambulizi ya XPath Injection kwa kusafisha na kuchanganua kwa usahihi data iliyopokelewa kutoka kwa watumiaji kabla ya kuitumia katika utaftaji wa XPath.
XPath injection inaweza kutumiwa kuchunguza na kuiba mpangilio wa data katika mfumo wa tovuti. Kwa kufanya hivyo, tunaweza kupata habari muhimu kuhusu muundo wa database na jinsi data imepangwa.
Kwa kuanza, tunaweza kujaribu kuingiza maandishi ya XPath ambayo yatachunguza mpangilio wa data. Kwa mfano, tunaweza kutumia maandishi ya XPath kama `1' or '1'='1` ili kuona ikiwa tunapata matokeo yoyote.
Ikiwa tunaona matokeo, hii inamaanisha kuwa tunaweza kuingiza maandishi ya XPath kwa usahihi. Kwa hivyo, tunaweza kuanza kuchunguza mpangilio wa data kwa kutumia maandishi ya XPath kama `1' order by 1-- -` na kuendelea kuongeza idadi hadi tupate mpangilio sahihi.
Kwa mfano, ikiwa tunapata matokeo ya kosa kwa maandishi ya XPath `1' order by 3-- -`, tunajua kuwa kuna vitengo viwili vya mpangilio. Tunaweza kuendelea kwa njia hii hadi tupate mpangilio kamili wa data.
Baada ya kupata mpangilio wa data, tunaweza kuanza kuiba habari muhimu. Tunaweza kutumia maandishi ya XPath kama `1' union select null,username,null,null from users-- -` ili kupata majina ya watumiaji kutoka kwenye meza ya watumiaji.
Kwa njia hii, tunaweza kutumia XPath injection kuchunguza na kuiba mpangilio wa data katika mfumo wa tovuti. Hii inaweza kutusaidia kupata habari muhimu na kufanya uchambuzi wa kina wa mfumo.
Null injection is a technique used to exploit vulnerabilities in applications that use XPath queries to retrieve data from XML databases. By injecting a null character into the XPath query, an attacker can manipulate the query to bypass security measures and retrieve unauthorized data.
Uvamizi wa null ni mbinu inayotumika kudukua udhaifu katika programu ambazo hutumia maswali ya XPath kuipata data kutoka kwenye maktaba za XML. Kwa kuingiza herufi ya null katika swali la XPath, mshambuliaji anaweza kubadilisha swali hilo ili kuepuka hatua za usalama na kupata data ambayo hana ruhusa nayo.
Boolean-based blind XPath injection is a technique used to exploit vulnerabilities in applications that use XPath queries to retrieve data from XML databases. By injecting boolean expressions into the XPath query, an attacker can manipulate the query to extract sensitive information from the database.
Kudukua udhaifu wa boolean-based blind XPath injection ni mbinu inayotumika kudukua udhaifu katika programu ambazo hutumia maswali ya XPath kuipata data kutoka kwenye maktaba za XML. Kwa kuingiza maelezo ya boolean katika swali la XPath, mshambuliaji anaweza kubadilisha swali hilo ili kuvuta taarifa nyeti kutoka kwenye maktaba ya data.
### **Exploiting error-based XPath injection**
Error-based XPath injection is a technique used to exploit vulnerabilities in applications that use XPath queries to retrieve data from XML databases. By injecting malicious input into the XPath query, an attacker can cause the application to generate error messages that reveal sensitive information about the database.
Kudukua udhaifu wa error-based XPath injection ni mbinu inayotumika kudukua udhaifu katika programu ambazo hutumia maswali ya XPath kuipata data kutoka kwenye maktaba za XML. Kwa kuingiza maelezo mabaya katika swali la XPath, mshambuliaji anaweza kusababisha programu hiyo kutoa ujumbe wa makosa ambao unafichua taarifa nyeti kuhusu maktaba ya data.
### **Exploiting union-based XPath injection**
Union-based XPath injection is a technique used to exploit vulnerabilities in applications that use XPath queries to retrieve data from XML databases. By injecting union queries into the XPath query, an attacker can manipulate the query to extract data from multiple tables in the database, even if they are not directly accessible.
Kudukua udhaifu wa union-based XPath injection ni mbinu inayotumika kudukua udhaifu katika programu ambazo hutumia maswali ya XPath kuipata data kutoka kwenye maktaba za XML. Kwa kuingiza maswali ya union katika swali la XPath, mshambuliaji anaweza kubadilisha swali hilo ili kuvuta data kutoka kwenye meza nyingi katika maktaba ya data, hata kama hazipatikani moja kwa moja.
Time-based blind XPath injection is a technique used to exploit vulnerabilities in applications that use XPath queries to retrieve data from XML databases. By injecting time delays into the XPath query, an attacker can manipulate the query to extract sensitive information from the database.
Kudukua udhaifu wa time-based blind XPath injection ni mbinu inayotumika kudukua udhaifu katika programu ambazo hutumia maswali ya XPath kuipata data kutoka kwenye maktaba za XML. Kwa kuingiza kuchelewesha kwa muda katika swali la XPath, mshambuliaji anaweza kubadilisha swali hilo ili kuvuta taarifa nyeti kutoka kwenye maktaba ya data.
In this example, we have a function `get_user_password` that takes a `username` as input. The function constructs a URL with the `username` parameter and a payload for a XPath injection attack.
The payload `' or '1'='1` is appended to the `password` parameter in the URL. This payload is designed to bypass the authentication mechanism by making the injected XPath expression always evaluate to true.
The function then sends a GET request to the constructed URL using the `requests` library. If the response contains the string "Welcome", it means that the XPath injection was successful and the function returns "Success". Otherwise, it returns "Failure".
By using this technique, an attacker can potentially bypass authentication and gain unauthorized access to the system. It is important for developers to sanitize user inputs and use parameterized queries to prevent XPath injection attacks.
XPath Injection inaruhusu mtu kuingiza maagizo ya XPath kwenye maombi ya wavuti ambayo hutumia XPath kuchuja na kuonyesha data kutoka kwa hifadhidata. Kwa kufanya hivyo, mtu anaweza kusoma faili zilizopo kwenye mfumo na kupata habari nyeti.
Kwa kawaida, mtu anaweza kuingiza maagizo ya XPath kwenye sehemu ya maombi ya wavuti ambayo inatumia data ya mtumiaji bila kuihakiki kwa usahihi. Hii inaweza kutokea katika maeneo kama vile sanduku la utaftaji au vigezo vya URL.
Kwa mfano, ikiwa maombi ya wavuti inatumia XPath kuunda swali la kutafuta data kutoka kwa hifadhidata, mtu anaweza kuingiza maagizo ya XPath ambayo itasababisha maombi kusoma faili zilizopo kwenye mfumo badala ya data inayotarajiwa.
Kwa kufanya hivyo, mtu anaweza kutumia maagizo ya XPath kama vile `document()` na `document-uri()` kusoma faili zilizopo kwenye mfumo. Kwa mfano, mtu anaweza kuingiza maagizo ya XPath kama `document('/etc/passwd')` ili kusoma faili ya `/etc/passwd` kwenye mfumo.
Kwa kuzingatia hatari ya XPath Injection, ni muhimu kwa watengenezaji wa wavuti kuhakikisha kuwa data ya mtumiaji inahakikiwa kwa usahihi kabla ya kutumika katika maagizo ya XPath. Hii inaweza kufanywa kwa kuchuja na kusafisha data ya mtumiaji ili kuondoa maagizo ya XPath yasiyotarajiwa.
Utekaji wa OOB (Out-of-Band) ni mbinu ya kudukua ambapo mshambuliaji anatumia njia mbadala ya mawasiliano ili kupata taarifa kutoka kwa mfumo uliolengwa. Katika muktadha wa XPath Injection, OOB utekaji unahusisha kutumia XPath queries ili kusababisha mfumo kutuma taarifa nje ya mfumo wa lengo, ambapo mshambuliaji anaweza kuzipata.
Kuna njia kadhaa za kutekeleza OOB utekaji katika muktadha wa XPath Injection. Hapa kuna baadhi ya mbinu zinazotumiwa mara kwa mara:
#### 1. OOB DNS Lookup
Katika mbinu hii, mshambuliaji anatumia XPath queries ili kusababisha mfumo kutuma ombi la DNS lookup kwa seva ya mshambuliaji. Kwa kufanya hivyo, mshambuliaji anaweza kuchambua ombi la DNS na kupata taarifa muhimu.
#### 2. OOB HTTP Request
Katika mbinu hii, mshambuliaji anatumia XPath queries ili kusababisha mfumo kutuma ombi la HTTP kwa seva ya mshambuliaji. Kwa kufanya hivyo, mshambuliaji anaweza kuchambua ombi la HTTP na kupata taarifa muhimu.
#### 3. OOB SMTP Request
Katika mbinu hii, mshambuliaji anatumia XPath queries ili kusababisha mfumo kutuma ombi la SMTP kwa seva ya mshambuliaji. Kwa kufanya hivyo, mshambuliaji anaweza kuchambua ombi la SMTP na kupata taarifa muhimu.
### Matumizi ya OOB Utekaji
OOB utekaji unaweza kutumiwa kwa njia mbalimbali katika muktadha wa XPath Injection. Baadhi ya matumizi muhimu ni pamoja na:
- Kupata taarifa nyeti kutoka kwa mfumo uliolengwa, kama vile majina ya mtumiaji, nywila, na data nyingine muhimu.
- Kufanya uchunguzi wa kina wa mfumo uliolengwa kwa kutuma ombi la OOB na kuchambua majibu yake.
- Kusababisha mfumo uliolengwa kufanya vitendo fulani, kama vile kutuma barua pepe au kufanya ombi la HTTP.
### Kujikinga dhidi ya OOB Utekaji
Kujikinga dhidi ya OOB utekaji ni muhimu ili kulinda mfumo wako kutokana na mashambulizi. Hapa kuna baadhi ya hatua unazoweza kuchukua:
- Tumia vifaa vya usalama kama vile firewall na IPS ili kuzuia ombi la OOB kutoka kwa mfumo uliolengwa.
- Sanidi mfumo wako vizuri ili kuzuia uwezekano wa kutekelezwa kwa OOB utekaji.
- Fanya ukaguzi wa usalama mara kwa mara ili kugundua na kurekebisha mapungufu yoyote yanayoweza kusababisha OOB utekaji.
Jiunge na seva ya [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako ina tangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za 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 kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.