ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ Ρ nginx ΠΎΡΡΠ°ΡΡΡΡ ΡΡΠ·Π²ΠΈΠΌΡ Π΄Π»Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Nginx Alias Traversal, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Blackhat Π΅ΡΡ Π² 2018 Π³ΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΠΌ Π²Π½Π΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ «alias». ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ «alias», ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° «location», ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» «/», Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ «alias» Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π½Π° «/».
Π‘ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΎΠ² Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ alias ΠΎΡΠ΄Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ, ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΌΠ°ΡΠΊΠΎΠΉ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ location ΠΈ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² ΡΡΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΡΠΈ. ΠΠ»Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΠ°ΠΉΠ» «/img../test.txt» ΠΈ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠ΄ΠΏΠ°Π΄ΡΡ ΠΏΠΎΠ΄ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² location ΠΌΠ°ΡΠΊΡ «/img», ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΡΠ°ΡΡΠΈΠΉΡΡ Ρ Π²ΠΎΡΡ «../test.txt» Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ½ ΠΊ ΠΏΡΡΠΈ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ alias «/var/images/» ΠΈ Π² ΠΈΡΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½ ΡΠ°ΠΉΠ» «/var/images/../test.txt». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°ΡΠ°ΠΊΡΡΡΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΡΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ «/var», Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π² «/var/images/», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π»ΠΎΠ³Π° nginx ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ «/img../log/nginx/access.log».
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ , Π² ΠΊΠΎΡΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ alias Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ «/» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, «alias /var/images;»), Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² /var, Π½Π°ΡΠ°Π»ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠΎΡΠΈΠ² «/img.old/test.txt» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ «var/images.old/test.txt».
ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π½Π° GitHub ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ nginx Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ»ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΎ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Bitwarden ΠΈ ΠΌΠΎΠ³Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /etc/bitwarden (Π·Π°ΠΏΡΠΎΡΡ /attachments ΠΎΡΠ΄Π°Π²Π°Π»ΠΈΡΡ ΠΈΠ· /etc/bitwarden/attachments/), Π²ΠΊΠ»ΡΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΡΠ°ΠΌ ΠΠ Ρ ΠΏΠ°ΡΠΎΠ»ΡΠΌΠΈ «vault.db», ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ Π»ΠΎΠ³ΠΈ, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ «/attachments../vault.db», «/attachments../identity.pfx», «/attachments../logs/api.log» ΠΈ Ρ.ΠΏ.
ΠΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π» Ρ Google HPC Toolkit, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΠΎΡΡ /static ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ»ΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ «../hpc-toolkit/community/front-end/website/static/». ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΠ Ρ Π·Π°ΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΈ ΡΡΡΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠ³ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ «/static../.secret_key» ΠΈ «/static../db.sqlite3».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru