House of Orange
Last updated
Last updated
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ:HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг AWS рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (ARTE) GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ: HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг GCP рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (GRTE)
https://github.com/shellphish/how2heap/blob/master/glibc_2.23/house_of_orange.c рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреЗрдВ
рдЗрд╕ рдкреИрдЪ рдореЗрдВ рдПрдХреНрд╕рдкреНрд▓реЛрдЗрдЯреЗрд╢рди рддрдХрдиреАрдХ рдареАрдХ рдХреА рдЧрдИ рдереА (2.26 рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░рддреА рдереА)
рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг https://guyinatuxedo.github.io/43-house_of_orange/house_orange_exp/index.html рдореЗрдВ
malloc_printerr
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдКрдкрд░реА рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░реЗрдВ
Libc рдФрд░ рд╣реАрдк рд▓реАрдХреНрд╕
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рдкреГрд╖реНрдарднреВрдорд┐:
рдмрд╛рдд рдпрд╣ рд╣реИ, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ libc рдореЗрдВ, рдЬрдм malloc_printerr
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддреЛ рдпрд╣ _IO_list_all
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд _IO_FILE
рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддрд╛ рдерд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рдерд╛ред
рдпрд╣ рд╣рдорд▓рд╛ рдПрдХ рдЬрд╛рд▓реА _IO_FILE
рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо _IO_list_all
рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ malloc_printerr
рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛ред
рдлрд┐рд░ рдпрд╣ _IO_FILE
рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЬрдВрдк рдЯреЗрдмрд▓ рдореЗрдВ рдЬреЛ рдХреЛрдИ рдкрддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╣рдо рдХреЛрдб рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ
рд╣рдорд▓рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдореЗрдВ рдЯреЙрдк рдЪрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ mmap
рдЖрд╡рдВрдЯрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ mmp_.mmap_threshold
(рдбрд┐рдлрд╝реЙрд▓реНрдЯ 128K рд╣реИ) рд╕реЗ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде malloc
рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рднреА рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖ рдЪрдВрдХ + рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдкреЗрдЬ-рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛ рдФрд░ рдкрд┐рдЫрд▓рд╛_рдЗрдиреНрдпреВрдЬрд╝ рдмрд┐рдЯ рд╣рдореЗрд╢рд╛ рд╕реЗрдЯ рд░рд╣реЗред
рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдореЗрдВ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реАрд░реНрд╖ рдЪрдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ (рдЖрд╡рдВрдЯрд┐рдд рдЪрдВрдХ рдореЗрдВ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде) рддрд╛рдХрд┐ рд╢реАрд░реНрд╖ рдЪрдВрдХ + рдЖрдХрд╛рд░ рдкреЗрдЬ-рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛ рдФрд░ рдкрд┐рдЫрд▓рд╛_рдЗрдиреНрдпреВрдЬрд╝ рдмрд┐рдЯ рд╕реЗрдЯ рд╣реЛред рдлрд┐рд░ рдирдП рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХреЛ рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдореБрдХреНрдд
рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреБрд░рд╛рдирд╛ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдЕрдм рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдореЗрдВ рд╣реИред рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕рдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдкрдирд╛ рдЬрд┐рд╕рдиреЗ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХрд╛ рдХрд╛рд░рдг рднреА рдерд╛), рддреЛ рдЙрд╕рд╕реЗ libc рдкрддреЛрдВ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ _IO_list_all рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рд╣рдорд▓рд╛ рдПрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ topChunk->bk->fwd = _IO_list_all - 0x10
рд▓рд┐рдЦрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдПрдХ рдирдпрд╛ рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреБрд░рд╛рдирд╛ рд╢реАрд░реНрд╖ рдЪрдВрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ _IO_list_all
рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓рд╛ рдХрджрдо рдкреБрд░рд╛рдиреЗ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рдЫреЛрдЯрд╛ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдЫреЛрдЯреЗ рдмрд┐рди рдореЗрдВ рдлрд┐рдЯ рд╣реЛ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░ 0x61 рд╕реЗрдЯ рдХрд░рдирд╛ред рдЗрд╕рдХреЗ рджреЛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИрдВ:
рдЫреЛрдЯреЗ рдмрд┐рди 4 рдореЗрдВ рдЗрдиреНрд╕рд░реНрд╢рди: рдЬрдм malloc
рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЪрдВрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдЫреЛрдЯреЗ рдмрд┐рди 4 рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░рдг рдЗрд╕рдХреЗ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред рдпрд╣ рдЪрдВрдХ рдЫреЛрдЯреЗ рдмрд┐рди 4 рдХреА рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ _IO_list_all
рдХреЗ рдЪрдВрдХ рдХреЗ FD рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рд╕реНрдерд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрдирд╕реЙрд░реНрдЯреЗрдб рдмрд┐рди рд╣рдорд▓реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ _IO_list_all
рдореЗрдВ рдПрдХ рдХреНрд▓реЛрдЬ рдкрддрд╛ рд▓рд┐рдЦрд╛ рдерд╛ред
рдореИрд▓реЛрдХ рдЪреЗрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛: рдпрд╣ рдЪрдВрдХ рдЖрдХрд╛рд░ рдорд╛рдирд┐рдкреБрд▓реЗрд╢рди malloc
рдХреЛ рдЖрдВрддрд░рд┐рдХ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдг рдмрдирд╛рдПрдЧрд╛ред рдЬрдм рдпрд╣ рдЭреВрдареА рдлреЙрд░рд╡рд░реНрдб рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ, рдЬреЛ рд╢реВрдиреНрдп рд╣реЛрдЧрд╛, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдФрд░ malloc_printerr
рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рдЫреЛрдЯреЗ рдмрд┐рди рдХрд╛ рдорд╛рдирд┐рдкреБрд▓реЗрд╢рди рдЖрдкрдХреЛ рдЪрдВрдХ рдХреЗ рдлреЙрд░рд╡рд░реНрдб рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред _IO_list_all рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдЬрд╛рд▓реА _IO_FILE рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ _IO_write_base
рдФрд░ _IO_write_ptr
рдЬреИрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝реАрд▓реНрдбреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдЬреЛ libc рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдиреНрдпрддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдХ рдЬрдВрдк рдЯреЗрдмрд▓ рдЬрд╛рд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рднреАрддрд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдкрддреЗ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, system
рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддрдХрдиреАрдХ рдХреЗ рд╢реЗрд╖ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
рдкреБрд░рд╛рдиреЗ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░реЗрдВ: рдкреБрд░рд╛рдиреЗ рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЫреЛрдЯреЗ рдмрд┐рди рдореЗрдВ рдлрд┐рдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ:HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг AWS рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (ARTE) GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ: HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг GCP рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (GRTE)