ํฐ์คํ ๋ฆฌ ๋ทฐ
XST ๊ฐ์
" Cross Site Tracing " ์ฝ์๋ก 2002 ๋ 10 ์, Microsoft๋ XSS๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด "HTTPonly" ์ฆ HTTP ํต์ ์์๋ง ์ด ์ฟ ํค๋ฅผ ์ฌ์ฉํ๊ฒ ํจ์ผ๋ก์จ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐํ ํด๋ผ์ด์ธํธ ์ธก ํ๋ก๊ทธ๋จ์ด ํด๋น ์ฟ ํค๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ์ฐจ๋จํ๋ ๋ฐฉ๋ฒ์ ๋ฐํํ์ต๋๋ค. ํ์ง๋ง 2003 ๋ ์ XSS์ ๋ฐฉ์ด์๋จ์ธ HTTPonly ๊ธฐ๋ฅ์ TRACE ๋ฉ์๋๋ฅผ ํตํด ์ฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก Cross Site Tracing์ ํตํด ์ธ์ ์ ํ์ทจํ ์ ์๋ ๋ฌธ์ ๊ฐ ์กด์ฌํฉ๋๋ค.
TRACE ๋ฉ์๋๋
์น ์๋ฒ์๊ฒ ์ ์กํ ์์ฒญ ๋ฉ์์ง์ ๋ณต์ฌ๋ณธ์ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋๋ก. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก TRACE ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ์์ฒญ๋ฐ์ ๋ฉ์์ง๋ฅผ ๊ทธ๋๋ก ๋ฐํํด์ฃผ๋ ํํ์ ๋๋ค. ํ ์คํธ ์ฉ๋๋ก ์ฌ์ฉํ๋ ํธ์ด๊ธด ํ์ง๋ง ๋ณต์ฌ๋ณธ ์์๋ ๋ก๊ทธ์ธ์ ํ์ํ ์ ๋ณด๋ ํฌํจ๋์ด์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
<!-- Attack Code -->
<script type="text/javascript">
if( navigator.appName.indexOf("Microsoft")!=-1)
{
var xmlHttp = newActiveXObject("Microsoft.XMLHTTP"); --> ๋๋ XMLDOM
xmlHttp.open("TRACE", "./", false);
xmlHttp.send();
str1=xmlHttp.responseText;
alert(str1);
}
</script>
TRACE ๋ฉ์๋ ์ ๋ฌด ํ์ธ
nikto๋ผ๋ ์น์๋ฒ ์ค์บ๋ ๋๊ตฌ๋ฅผ ํตํด ํ์ฉํ๊ณ ์๋ ๋ฉ์๋ ํญ๋ชฉ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ธ์๋ ๋ค์ํ ๋ฌธ์ ์ ์ด ์กด์ฌํ ๊ฒฝ์ฐ ํจ๊ป ์ถ๋ ฅ๋ฉ๋๋ค.
curl -v -X OPTIONS 192.168.0.131
-v : ์์ธํ ์ถ๋ ฅ
-X : ์ฌ์ฉํ ๋ฐฉ์์ ๋ฉ์๋
OPTIONS : ์ด๋ค Method ๊ธฐ๋ฅ์ ์ ๊ณตํ๋์ง ํ์ธ
< ์ด์ธ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋กํ ์ฝ >
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP
curl (Client URL) ์ ๋์ ์น ์๋ฒ์ ํต์ ํ ์ ์๋ ์ปค๋งจ๋ ๊ธฐ๋ฐ ๋ช
๋ น์ด ํ๋ก๊ทธ๋จ์ผ๋ก. curl๊ณผ OPTIONS๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฉํ๊ณ ์๋ ๋ฉ์๋ ์ข
๋ฅ๊ฐ ์๋ต ํค๋์ ํฌํจ๋จ
msf5 > use auxiliary/scanner/http/options
Metasploit์ msfconsole์ ์ฌ์ฉํ์ฌ ํ์ธํ ์๋ ์์ต๋๋ค. set RHOSTS์ ํ๊น ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ 80๋ฒ ํฌํธ๋ก ํ์ธ
๋ง์ง๋ง์ผ๋ก nmap์ --scritp http-methods๋ฅผ ํตํด ์ด๋ฆฐ ํฌํธ์ ํ์ฉ์ค์ธ ๋ฉ์๋ ๋ฆฌ์คํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. TRACE ๋ฉ์๋๊ฐ ์กด์ฌํ๋ ์น ํ๋ก์ ๋๊ตฌ๋ก ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํด์ ์๋ต๊ฐ์ ํ์ธํ๋ฉด ๋ฉ๋๋ค.
์ทจ์ฝํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์์ผ๋ก ์งํํด๋ณด์์ต๋๋ค.
HTTP ๋ฉ์๋์ธ GET ๋ฐฉ์์ TRACE๋ก ๋ฐ๊ฟ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋์ ํ์ด์ง์ php ํ์ผ์ด ์๋์ผ๋ก ๋ค์ด๋ก๋๋ ๊ฒ์ด๋ ํ๋ฒ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
TRACE ๋ฉ์๋๋ก ์ธํด ๋ค์ด๋ก๋๋ sm_xst.php ํ์ผ์ ์ด์ด๋ณด๋ฉด ์์ฒญ ๋จ๊ณ์ ์กด์ฌํ๋ ๋ชจ๋ ๊ฐ๋ค์ด ๊ทธ๋๋ก ์ ์ฅ๋์ด ๋ฐ์ฌ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ค์ ๋ก Cross Site Scripting์์ ๊ฐ์ฅ ์์ฃผ ๋ฐ์ํ๋ ๊ณต๊ฒฉ ํจํด ์ค ํ๋๋ document.cookie ๊ฐ์ฒด์ ์ก์ธ์ค ํ์ฌ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ โโ์น ์๋ฒ๋ก ๋ณด๋ด์ด ํผํด์ ์ธ์ ์ ๊ฐ๋ก์ฑ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
HTTPonly๋ก ์ฟ ํค์ ํ๊ทธ๋ฅผ ์ง์ ํ๋ฉด JavaScript๊ฐ ์ก์ธ์ค ํ์ง ๋ชปํ๋ฏ๋ก ๊ณต๊ฒฉ์์๊ฒ ์ ์ก๋์ง ์์ต๋๋ค.
ํ์ง๋ง TRACE ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ๊ณต๊ฒฉ์ ์๋ํด๋ณผ ๋งํฉ๋๋ค.
TRACE ๋ฉ์๋๋ฅผ ํ์ฉํ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ
SERVER: XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ TRACE ์์ฒญ์ ํฌํจํ๋ ์ ์์ ์ธ Javascript ๋ฅผinjection ํ๋ ๋ฐฉ๋ฒ
CLIENT: ์์ ์ ์น ์๋ฒ์ TRACE ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์
์์ ์ธ ํ์ผ์ ์ฌ์ด๋๊ณ XSS ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ Javascript ์ฝ๋๊ฐ ํด๋น ์ฝ๋๋ฅผ ์ง์ํ๋ ์ฌ์ดํธ์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ
๋์๋ฐฉ์
< TOMCAT > --> web.xml ๊ฒฝ๋ก
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted methods</web-resource-name>
<url-pattern>/*</url-pattern> <-- ๋ชจ๋ ์์ฒญ
<http-method>TRACE</http-method> <-- TRACE ์ถ๊ฐํจ์ผ๋ก์จ ๋นํ์ฑํ
<web-resource-collection>
<auth-constraint />
</security-constraint>
<Apache 2.4.x> --> httpd.conf ๊ฒฝ๋ก
<Directory />
<LimitExcept GET POST> --> GET,POST ์ด์ธ์ ๋ชจ๋ ๋นํ์ฑํ
Order allow,deny
deny from all
</LimitExcept>
</Directory>
<limit trace> --> ํด๋น ๋ถ๋ถ์ถ๊ฐ
TraceEnable Off
<Directory /home>
<Limit PUT DELETE OPTIONS TRACE> --> ๋นํ์ฑํ ํ Method ์ง์
Order allow,deny
Allow from all
</Limit>
</Directory>
TRACE ๋ฉ์๋ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํด๋ผ์ด์ธํธ์ ์น ์๋ฒ ์ฌ์ด์ ํ๋ก์ ์๋ฒ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ TRACE ์์ฒญ์ ๊ฐ์ ๋ก ์๋ตํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์๋ ์ฝ๊ฒ ์ ์ถํ ์ ์์ต๋๋ค.
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ShellShock(CVE-2014-6271) ์ทจ์ฝ์ (0) | 2020.10.23 |
---|---|
SNMP ์ทจ์ฝ์ ๊ณต๊ฒฉ (0) | 2020.10.22 |
SSL Strip ์ทจ์ฝ์ (0) | 2020.10.21 |
๋ก์ปฌ ๊ถํ ์์น ์ทจ์ฝ์ (udev) (0) | 2020.10.20 |
Open Redirect(์คํ ๋ฆฌ๋ค์ด๋ ํธ) ์ทจ์ฝ์ (0) | 2020.10.09 |