## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-FRICHETTEN-CVE-2019-5736-POC
# CVE-2019-5736-PoC
CVE-2019-5736 рдХреЗ рд▓рд┐рдП PoC
рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ @singe, @_cablethief, рдФрд░ @feexd
Ubuntu 18.04, Debian 9, рдФрд░ Arch Linux рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред Docker рд╕рдВрд╕реНрдХрд░рдг 18.09.1-ce рдФрд░ 18.03.1-ceред рдпрд╣ PoC рд╡рд░реНрддрдорд╛рди рдореЗрдВ Ubuntu 16.04 рдФрд░ CentOS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
Dragon Sector (рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрдордЬреЛрд░реА рдХреА рдЦреЛрдЬ рдХреА) рд╕реЗ рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХреЛрдб рджреЗрдЦреЗрдВ рдпрд╣рд╛рдБред
### рдпрд╣ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣ CVE-2019-5736 рдХрд╛ Go рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬреЛ Docker рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдПрд╕реНрдХреЗрдк рд╣реИред рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ runc рдмрд╛рдЗрдирд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
## рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХреЗ **2** рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рд╣реИрдВред рдкрд╣рд▓рд╛ (рдЬреЛ рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИ), рдореВрд▓рддрдГ рдПрдХ рдЬрд╛рд▓ рд╣реИред рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдмрд╛рдЗрдирд░реА рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рд╕реБрдиреЗрдЧреАред рдЬрдм рдХреЛрдИ (рд╣рдорд▓рд╛рд╡рд░ рдпрд╛ рдкреАрдбрд╝рд┐рдд) рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `docker exec` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдЬреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рджреВрд╕рд░рд╛ (рдЬреЛ **рдирд╣реАрдВ** рд╣реИ рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА), рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг Docker рдЗрдореЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред рдЬрдм рд╡рд╣ рдЗрдореЗрдЬ рдЪрд▓рд╛рдИ рдЬрд╛рддреА рд╣реИ, рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрдЯреЗрдирд░ рдореЗрдВ exec рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред gif рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рд░реАрдбрдореА рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВред
### рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?
рдЗрд╕ рдХрдордЬреЛрд░реА рдХрд╛ рд╢реЛрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд░реВрдЯ (uid 0) рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
### рдХреНрдпрд╛ рдХреЛрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИрдВ?
**рд╣рд╛рдБ, рдЖрдк рдЕрдкрдиреЗ runc рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рджреЗрдВрдЧреЗ рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо Docker рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреГрдкрдпрд╛ /usr/bin/docker-runc рдпрд╛ /usr/bin/runc (рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕рд╛ рд╣реИ; /usr/sbin рднреА рдЬрд╛рдВрдЪреЗрдВ) рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдВред**
### рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдЪрд▓рд╛рдКрдВ?
рдХреЛрдб рдХреЛ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ `go build main.go` рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рдЙрд╕ рдмрд╛рдЗрдирд░реА рдХреЛ рдЙрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдмрд╛рдЗрдирд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ `/bin/sh` рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдкреЗрд▓реЛрдб рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
### рдЪрд░рдг рджрд░ рдЪрд░рдг рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рдпрд╣ PoC lxc рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЗрд╕ рдХрдорд┐рдЯ (рдФрд░ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╕рд▓рд╛рд╣) рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
> рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдмрд╛рдЗрдирд░реА /bin/bash рдерд╛, рддреЛ рдЗрд╕реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдкрде #!/proc/self/exe рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ (/proc/self/exec рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рд╣реИ рдЬреЛ рдЙрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдмрд╛рдЗрдирд░реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬрдм /bin/bash рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп /proc/self/exe рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ - рдЬреЛ рд╣реЛрд╕реНрдЯ рдкрд░ runc рдмрд╛рдЗрдирд░реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗрдЧрд╛ред
рд╣рдо рдЗрд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ `/bin/sh` рдХреЛ `#!/proc/self/exe` рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмрд╛рдЗрдирд░реА (Docker exec) рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░реЗрдЧрд╛ред

> рд╣рдорд▓рд╛рд╡рд░ рддрдм /proc/self/exe рдХреЗ рд▓рдХреНрд╖реНрдп рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣реЛрд╕реНрдЯ рдкрд░ runc рдмрд╛рдЗрдирд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдпрд╣ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдЗрд╕реЗ рддрдм рдУрд╡рд░рд░рд╛рдЗрдЯ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬрдм runC рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЗрд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп O_PATH рдлреНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ /proc/self/exe рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ /proc/self/fd/ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдЗрдирд░реА рдХреЛ O_WRONLY рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд┐рдЬреА рд▓реВрдк рдореЗрдВ рдЙрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдиреЛрдЯ: рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдХреБрдЫ рднрд╛рдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИрдВред runcinit рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ O_PATH рдлреНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдкрдХреЛ рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░рд╛рдЗрдЯ рд▓реВрдк рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо `/proc/PID/exe` рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ `runcinit` рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣рд╛рдВ рд╕реЗ, рд╣рдо рдлрд┐рд░ рдЙрд╕ рд╣реИрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ `/proc/self/fd/FILEDESCRIPTOR` рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

> рдЕрдВрддрддрдГ рдпрд╣ рддрдм рд╕рдлрд▓ рд╣реЛрдЧрд╛ рдЬрдм runC рдмрд╛рдЗрдирд░реА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж runC рдмрд╛рдЗрдирд░реА рд╕реЗ рд╕рдордЭреМрддрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдпрд╛ рд╣реЛрд╕реНрдЯ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рдкрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рддреЛ рд╣рдордиреЗ рд╣реЛрд╕реНрдЯ рдкрд░ `runc` рдмрд╛рдЗрдирд░реА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╣рдо рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдордирдорд╛рдиреЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
### рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг Docker рдЗрдореЗрдЬ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЦрддрд░рдирд╛рдХ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рдмрд╕ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЖрдкрдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдорд┐рд▓рддрд╛ рд╣реИред рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдпрд╣ рджреЗрдЦреЗрдВред
