Requests: ์ •๊ทœํ™” URL ๋ฌด์‹œ

์— ๋งŒ๋“  2019๋…„ 12์›” 10์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: psf/requests

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Path Traversal ์ทจ์•ฝ์ ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋Œ€์ƒ URL์€ ์ผ๋ฐ˜์ ์œผ๋กœ https://example.com/../../path ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์— GET ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น URL์ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ •๊ทœํ™”๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๊ฒƒ์€ ํ…Œ์ŠคํŠธ์—์„œ ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

r = requests.get('https://example.com/../../path')
print(r.url)
# https://example.com/path

curl ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •๊ทœํ™”๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. --path-as-is . ๊ทธ๋ ‡๋‹ค๋ฉด requests ๋Œ€ํ•ด ๋™๋“ฑํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ค€๋น„๋œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค

url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)

๋ชจ๋“  4 ๋Œ“๊ธ€

@EDjur ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ค€๋น„๋œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค

url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)

@akmalhisyam ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ์ž‘๋™ํ•œ๋‹ค.

@akmalhisyam ์ด ์—ฌ๊ธฐ์— ๋งž์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ PreparedRequests ์›Œํฌํ”Œ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰