LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS

рд╣реИрдХрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдореВрд▓ рдЬрд╛рдирдХрд╛рд░реА

рдЕрдЧрд░ рдЖрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢рди рдкрд╛рдпрд╛ рд╣реИ рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рддреНрд░ рди рд╣реЛ рдФрд░ session.auto_start рдСрдл рд╣реИред рдЕрдЧрд░ session.upload_progress.enabled рдСрди рд╣реИ рдФрд░ рдЖрдк PHP_SESSION_UPLOAD_PROGRESS рдХреЛ рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ POST рдбреЗрдЯрд╛ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ PHP рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рд╕рдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ред

$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'  -F 'file=@/etc/passwd'
$ ls -a /var/lib/php/sessions/
. .. sess_iamorange

In the last example the session will contain the string blahblahblah

рдиреЛрдЯ рдХрд░реЗрдВ рдХрд┐ PHP_SESSION_UPLOAD_PROGRESS рдХреЗ рд╕рд╛рде рдЖрдк рд╕рддреНрд░ рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ PHP рд╢реИрд▓рдХреЛрдб)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрдкрдХреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП session.upload_progress.cleanup рдХреЛ Off рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред PHP рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ session.upload_progress.cleanup рдЕрдм рднреА On рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рддреНрд░ рдореЗрдВ рдЕрдкрд▓реЛрдб рдкреНрд░рдЧрддрд┐ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░реЗрд╕ рдХрдВрдбреАрд╢рди рд╣реЛрдЧрд╛ред

рд╕реАрдЯреАрдПрдл

рдореВрд▓ CTF рдореЗрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рддрдХрдиреАрдХ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИ, рд╡рд╣рд╛рдВ рд░реЗрд╕ рдХрдВрдбреАрд╢рди рдХрд╛ рд╢реЛрд╖рдг рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ рдмрд▓реНрдХрд┐ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд╛рдордЧреНрд░реА рднреА @<?php рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдереАред

session.upload_progress.prefix рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг, рд╣рдорд╛рд░реА рд╕рддреНрд░ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧреА upload_progress_ рдЬреИрд╕реЗ: upload_progress_controlledcontentbyattacker

рдЖрджрд┐ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкреЗрдпрд▓реЛрдб рдХреЛ 3 рдмрд╛рд░ base64encode рдХрд░рдирд╛ рдерд╛ рдФрд░ рдлрд┐рд░ convert.base64-decode рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рдерд╛, рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рднреА base64 рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╣реЛрдЧреА рддреЛ PHP рдЕрдЬреАрдм рд╡рд░реНрдг рд╣рдЯрд╛ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП 3 рдмрд╛рд░ рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рд╣рдореЗрдВ рдЕрдЯреИрдХрд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдкреЗрдпрд▓реЛрдб рд╣реА рдмрдЪреЗрдЧрд╛ (рдФрд░ рдлрд┐рд░ рдЕрдЯреИрдХрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХреЗрдЧрд╛)ред

рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА https://blog.orange.tw/2018/10/ рдФрд░ рдЕрдВрддрд┐рдо рд╢реЛрд╖рдг https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py рдПрдХ рдФрд░ рд▓реЗрдЦ рдореЗрдВ https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/

Last updated