Python Internal Read Gadgets

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ณ  ์‹ค์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE) GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ณ  ์‹ค์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

Python Format Strings ๋˜๋Š” Class Pollution๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ทจ์•ฝ์ ์€ ํŒŒ์ด์ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฝ”๋“œ ์‹คํ–‰์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํŽœํ…Œ์Šคํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ๋ฏผ๊ฐํ•œ ๊ถŒํ•œ์„ ํš๋“คํ•˜๊ณ  ์ทจ์•ฝ์ ์„ ์Šน๊ฒฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Flask - ์‹œํฌ๋ฆฟ ํ‚ค ์ฝ๊ธฐ

Flask ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€์—๋Š” ์•„๋งˆ๋„ app ๊ธ€๋กœ๋ฒŒ ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ฉฐ, ์—ฌ๊ธฐ์— ์‹œํฌ๋ฆฟ์ด ๊ตฌ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'

์ด ๊ฒฝ์šฐ Python ์ƒŒ๋“œ๋ฐ•์Šค ์šฐํšŒ ํŽ˜์ด์ง€์—์„œ ์ „์—ญ ๊ฐ์ฒด์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฐ€์ ฏ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์ด ๋‹ค๋ฅธ Python ํŒŒ์ผ์— ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฃผ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฐ€์ ฏ์ด ํ•„์š”ํ•˜๋ฉฐ Flask ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ด ํ‚ค๋ฅผ ์•Œ๊ณ  ๊ถŒํ•œ ์ƒ์Šนํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด writeup์—์„œ ์ด์™€ ์œ ์‚ฌํ•œ ํŽ˜์ด๋กœ๋“œ:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

์ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ app.secret_key๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์€ ํ”Œ๋ผ์Šคํฌ ์ฟ ํ‚ค๋ฅผ ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Werkzeug - machine_id ๋ฐ node uuid

์ด ๋ฌธ์„œ์—์„œ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด machine_id ๋ฐ uuid ๋…ธ๋“œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” Werkzeug ํ•€์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฃผ์š” ๋น„๋ฐ€์ž…๋‹ˆ๋‹ค. ์ด ํ•€์„ ์‚ฌ์šฉํ•˜์—ฌ /console์—์„œ ํŒŒ์ด์ฌ ์ฝ˜์†”์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ:

{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}

**app.py**์— ๋Œ€ํ•œ ์„œ๋ฒ„ ๋กœ์ปฌ ๊ฒฝ๋กœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๊ฒฝ๋กœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ทจ์•ฝ์ ์ด ๋‹ค๋ฅธ ํŒŒ์ด์ฌ ํŒŒ์ผ์— ์žˆ๋‹ค๋ฉด, ์ฃผ์š” ํŒŒ์ด์ฌ ํŒŒ์ผ์—์„œ ๊ฐ์ฒด์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ์ด์ „ Flask ํŠธ๋ฆญ์„ ํ™•์ธํ•˜์„ธ์š”.

AWS ํ•ดํ‚น ํ•™์Šต ๋ฐ ์‹ค์Šต:HackTricks Training AWS Red Team Expert (ARTE) GCP ํ•ดํ‚น ํ•™์Šต ๋ฐ ์‹ค์Šต: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks ์ง€์›

Last updated