์น ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํ ๋ฒ์ฏค ์ด๋ฐ ๊ฒฝํ์ ํ๋ค.
ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ ํ๋ ์ค์นํด๋จ๋๋ ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ๋ง๋ค "React 18 ยท Node.js ยท Nginx ยท Cloudflare"๋ผ๊ณ ์ฒ์ฒ ์๋ ค์ค๋ค. ์ด๋ป๊ฒ ์๋ ๊ฑธ๊น?
๋ณด์ ์ชฝ ์ผ์ ํ๋ค ๋ณด๋ ์ด ์ง๋ฌธ์ด ๋จ์ํ ํธ๊ธฐ์ฌ์ ๋์ด์๊ฒ ๋๋ค. ์ด ๊ธฐ์ ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๋ฉด, ๋ด ์๋น์ค๊ฐ ์ธ๋ถ์ ์ด๋ค ์ ๋ณด๋ฅผ ๋ ธ์ถํ๊ณ ์๋์ง, ๊ทธ๊ฒ ์ด๋ค ๋ณด์ ๋ฆฌ์คํฌ๋ก ์ฐ๊ฒฐ๋๋์ง๊น์ง ๋ณด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๊ธ์์๋ Wappalyzer์ ๋์ ์๋ฆฌ๋ฅผ ๋ถํดํด์ ์ดํด๋ณด๊ณ , ๊ฐ๋ฐ์ ๊ด์ ๊ณผ ๋ณด์ ๊ด์ ์์ ๊ฐ๊ฐ ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ๋์ง ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค.
Wappalyzer๊ฐ ๋ญ๊ฐ?
Wappalyzer๋ ์น์ฌ์ดํธ์์ ์ฌ์ฉ ์ค์ธ ๊ธฐ์ ์คํ์ ์๋์ผ๋ก ์๋ณํ๋ ์คํ์์ค ๋๊ตฌ๋ค.1
๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ, CLI ๋๊ตฌ, API ํํ๋ก ์ ๊ณต๋๋ฉฐ, ์น์ฌ์ดํธ ๋ฐฉ๋ฌธ ์ ์ด๋ค CMS, ํ๋ ์์ํฌ, ์๋ฒ, ๋ถ์ ๋๊ตฌ๋ฅผ ์ฐ๋์ง ์ค์๊ฐ์ผ๋ก ํ์ ํ๋ค.
์ง์ ์ ์ธ ํ์ฉ ์ฌ๋ก๋ ๋ค์ํ๋ค:
- ๊ฒฝ์์ฌ ๋ถ์: ๊ฒฝ์์ฌ ์ฌ์ดํธ๊ฐ ์ด๋ค ๊ธฐ์ ์ ์ฐ๋์ง ํ์
- ์์ /๋ง์ผํ : ํน์ ๊ธฐ์ ์คํ์ ์ฐ๋ ๊ธฐ์ ๋ฆฌ์คํธ ์ถ์ถ
- ๋ณด์ ๋ถ์: ์ทจ์ฝํ ๋ฒ์ ์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋ ๋์ ์๋ณ
- ๊ฐ๋ฐ ์ฐธ๊ณ : ์ ๋ง๋ ์ฌ์ดํธ์ ๊ธฐ์ ์คํ ๋ฒค์น๋งํน
๊ทธ๋ฐ๋ฐ ๋ง์ง๋ง ํญ๋ชฉ โ ๋ณด์ ๋ถ์ โ ์ด ๋ถ๋ถ์ด ํต์ฌ์ด๋ค. ๊ณต๊ฒฉ์ ์ ์ฅ์์๋ ๋๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ด๋ป๊ฒ ํ์งํ๋๊ฐ โ ํ๊ฑฐํ๋ฆฐํ ์ ์๋ฆฌ
Wappalyzer๋ ์ฌ๋ฌ ์ข ๋ฅ์ **ํ๊ฑฐํ๋ฆฐํธ(Fingerprint)**๋ฅผ ์กฐํฉํด์ ๊ธฐ์ ์ ์๋ณํ๋ค.
ํ๊ฑฐํ๋ฆฐํธ๋ ํน์ ๊ธฐ์ ์ด ๋จ๊ธฐ๋ ๊ณ ์ ํ ํ์ ์ด๋ค. ์ฌ๋์ ์ง๋ฌธ์ฒ๋ผ, ์ํํธ์จ์ด๋ HTTP ์๋ต, HTML ๊ตฌ์กฐ, ์ฟ ํค, JavaScript ๋ณ์ ๋ฑ ๊ณณ๊ณณ์ ์์ ๋ง์ ํ์ ์ ๋จ๊ธด๋ค.
๊ฐ ํ์ง ๋ฒกํฐ๋ฅผ ํ๋์ฉ ์ดํด๋ณด์.
ํ์ง ๋ฒกํฐ 1: HTTP ํค๋
๊ฐ์ฅ ์ง์ ์ ์ธ ์ ๋ณด ์์ค๋ค. ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ผ ๋ ํฌํจํ๋ HTTP ํค๋์๋ ์๊ฐ๋ณด๋ค ๋ง์ ์ ๋ณด๊ฐ ๋ด๊ธด๋ค.
HTTP/1.1 200 OK
Server: nginx/1.24.0
X-Powered-By: PHP/8.1.27
X-Generator: WordPress 6.4.3
Set-Cookie: PHPSESSID=abc123; Path=/์ด ์๋ต ํ๋๋ง์ผ๋ก Wappalyzer๋ Nginx, PHP, WordPress ๋ฒ์ ๊น์ง ํ์ ํ๋ค.
Wappalyzer์ ๊ท์น ํ์ผ์ ์ด๋ฐ ์์ผ๋ก ์ ์๋๋ค:
{
"Nginx": {
"headers": {
"Server": "nginx(?:/([\\d.]+))?\\;version:\\1"
}
},
"PHP": {
"headers": {
"X-Powered-By": "php(?:/([\\d.]+))?\\;version:\\1"
}
}
}\;version:\1์ Wappalyzer ์ ์ฉ ๋ฌธ๋ฒ์ผ๋ก, ์ ๊ท์ ์บก์ฒ ๊ทธ๋ฃน์ผ๋ก ๋ฒ์ ๋ฒํธ๋ฅผ ์ถ์ถํ๋ผ๋ ์๋ฏธ๋ค.
๊ฐ๋ฐ์ ์
์ฅ์์: Server, X-Powered-By, X-Generator ๊ฐ์ ํค๋๋ ์ค์ ๊ธฐ๋ฅ์ ํ์ํ์ง ์๋ค. ์ด ํค๋๋ค์ ์ ๊ฑฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฒ์ ์ ๋ณด ๋
ธ์ถ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
ํ์ง ๋ฒกํฐ 2: HTML ๋ฉํ ํ๊ทธ์ ์์ค ์ฝ๋
HTML ์์ค์๋ ๊ธฐ์ ํ์ ์ด ๋จ๋๋ค.
<meta name="generator" content="WordPress 6.4.3" />
<link rel="stylesheet" href="/wp-content/themes/twentytwentythree/style.css" />
<script src="/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>URL ๊ฒฝ๋ก ํจํด(/wp-content/, /wp-includes/)๋ง์ผ๋ก๋ WordPress ์๋ณ์ด ๊ฐ๋ฅํ๋ค. ๋ฒ์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ(?ver=3.7.1)๊น์ง ์์ผ๋ฉด ๋ฒ์ ๋ ํน์ ๋๋ค.
Wappalyzer ๊ท์น ์์:
{
"WordPress": {
"html": "<link[^>]+/wp-content/",
"meta": {
"generator": "WordPress(?:/([\\d.]+))?\\;version:\\1"
},
"scripts": "wp-content"
}
}์ ์ HTML๋ง์ผ๋ก ์๋นํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์, ์ด ๋ฒกํฐ๋ headless ๋ธ๋ผ์ฐ์ ์์ด๋ ๋์ํ๋ค.
ํ์ง ๋ฒกํฐ 3: JavaScript ์ ์ญ ๋ณ์
ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ JavaScript ๋ฐํ์์ ์ ์ญ ๋ณ์๋ ๊ฐ์ฒด๋ฅผ ๋จ๊ธด๋ค. ์ด๊ฑด HTTP ์๋ต์ด๋ HTML ๋ถ์๋ง์ผ๋ก๋ ์ก๊ธฐ ์ด๋ ต๊ณ , ์ค์ ๋ก JavaScript๋ฅผ ์คํํด์ผ ๋ณด์ธ๋ค.
// React๊ฐ ์์ผ๋ฉด window.__REACT_DEVTOOLS_GLOBAL_HOOK__ ์กด์ฌ
// Vue.js๊ฐ ์์ผ๋ฉด window.Vue ์กด์ฌ
// Next.js๊ฐ ์์ผ๋ฉด window.__NEXT_DATA__ ์กด์ฌ
if (window.__NEXT_DATA__) {
// Next.js ํ์ธ
const version = window.__NEXT_DATA__.buildId; // ๋น๋ ์ ๋ณด ํฌํจ
}Wappalyzer ๊ท์น:
{
"Next.js": {
"js": {
"__NEXT_DATA__": ""
}
},
"Vue.js": {
"js": {
"Vue.version": "([\\d.]+)\\;version:\\1"
}
}
}์ด ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ํ์ฅ ๋ฒ์ ์ Wappalyzer๋ CLI ๋ฒ์ ๋ณด๋ค ํจ์ฌ ๋ง์ ๊ธฐ์ ์ ํ์งํ๋ค. CLI๋ ์ ์ HTML๋ง ๋ถ์ํ์ง๋ง, ํ์ฅ์ JavaScript๊น์ง ์คํํ๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง ๋ฒกํฐ 4: DOM ๊ตฌ์กฐ
DOM ์์์ ํด๋์ค๋ช , ์์ฑ, ๊ตฌ์กฐ๋ ํน์ ํ๋ ์์ํฌ๋ฅผ ๋๋ฌ๋ธ๋ค.
์๋ฅผ ๋ค์ด:
- Angular:
<app-root>,ng-version์์ฑ - Vue:
data-v-์ ๋์ฌ ์์ฑ (SFC scoped CSS) - Bootstrap:
class="container-fluid",class="navbar navbar-expand-lg"
{
"Angular": {
"dom": {
"head > meta[name=viewport]": {
"attributes": {
"ng-version": "([\\d.]+)\\;version:\\1"
}
}
}
}
}ํ์ง ๋ฒกํฐ 5: ์ฟ ํค
์ฟ ํค ์ด๋ฆ๋ ํ๋ ์์ํฌ์ ์๋ฒ ๊ธฐ์ ์ ๋๋ฌ๋ธ๋ค.
| ์ฟ ํค๋ช | ์๋ฏธ |
|---|---|
PHPSESSID |
PHP ์ธ์ |
JSESSIONID |
Java (Spring, Tomcat ๋ฑ) |
_ga, _gid |
Google Analytics |
connect.sid |
Express.js (Node.js) |
wp-settings-* |
WordPress ๋ก๊ทธ์ธ ์ธ์ |
laravel_session |
Laravel (PHP) |
{
"Laravel": {
"cookies": {
"laravel_session": ""
}
}
}๊ฐ๋ฐ ํ๋ ์์ํฌ ๊ธฐ๋ณธ๊ฐ ์ฟ ํค๋ช ์ ๊ทธ๋๋ก ์ฐ๋ฉด ๊ธฐ์ ์คํ์ด ๋ฐ๋ก ๋ ธ์ถ๋๋ค.
ํ์ง ๋ฒกํฐ 6: ์ธ๋ถ ์คํฌ๋ฆฝํธ URL
CDN์์ ๋ถ๋ฌ์ค๋ ์ธ๋ถ ์คํฌ๋ฆฝํธ URL๋ ๊ฐ๋ ฅํ ํ์ง ํฌ์ธํธ๋ค.
<script src="https://cdn.jsdelivr.net/npm/vue@3.3.4/dist/vue.global.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>URL ํจํด ์์ฒด๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ์ง์ ์๋ ค์ค๋ค.
์ปค๋ฒ๋ฆฌ์ง: ์ ์ ํ์ง vs ๋์ ํ์ง
ํฅ๋ฏธ๋ก์ด ์ง์ ์ด ์๋ค. headless ๋ธ๋ผ์ฐ์ ์์ด HTML๋ง์ผ๋ก ์ผ๋ง๋ ํ์งํ ์ ์์๊น?
Wappalyzer ๊ท์น ํ์ผ์ ๊ธฐ์ค์ผ๋ก ๋ถ์ํ๋ฉด, ํ์ง ๋ฒกํฐ๋ณ ์ปค๋ฒ๋ฆฌ์ง๋ ๋๋ต ์ด๋ ๋ค:
| ๋ฐฉ๋ฒ | ํ์ง ๊ฐ๋ฅ ๋ฒ์ | ๋น๊ณ |
|---|---|---|
| HTTP ํค๋ ๋ถ์ | ~60% | curl ์์ค์ผ๋ก ๊ฐ๋ฅ |
| HTML ์ ์ ํ์ฑ | ~75% | <meta>, <script src>, ๊ฒฝ๋ก ํจํด |
| HTML + script inline ๋ถ์ | ~85% | <script> ๋ด๋ถ ์ ์ธ ํฌํจ |
| JavaScript ์คํ | ~97% | ์ ์ญ ๋ณ์, DOM ์์ฑ ์์ ์ปค๋ฒ |
ํค๋ + HTML ์ ์ ๋ถ์๋ง์ผ๋ก๋ ์ ์ฒด์ 70~80%๋ฅผ ์ปค๋ฒํ ์ ์๋ค๋ ์๋ฏธ๋ค. ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ง ์์๋, ์คํฌ๋ํผ๊ฐ ์ฌ์ดํธ๋ฅผ ํ ๋ฒ ๊ธ๋ ๊ฒ๋ง์ผ๋ก ์๋นํ ๊ธฐ์ ์ ๋ณด๊ฐ ๋ ธ์ถ๋๋ค.
๋ณด์ ๊ด์ : CPE์ CVE ์ฐ๊ฒฐ
์ฌ๊ธฐ์๋ถํฐ ๊ฐ๋ฐ์๋ณด๋ค๋ ๋ณด์ ๋ด๋น์ ์๊ฐ์ด ํ์ํ๋ค.
Wappalyzer๊ฐ ํ์งํ ๊ธฐ์ ์ ๋ณด๋ **CPE(Common Platform Enumeration)**๋ผ๋ ํ์ค ํ์์ผ๋ก ๋ณํํ ์ ์๋ค.
CPE๋ ์ํํธ์จ์ด ์ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ํ์ค ๋ช ๋ช ์ฒด๊ณ๋ค:
cpe:2.3:a:nginx:nginx:1.24.0:*:*:*:*:*:*:*
cpe:2.3:a:wordpress:wordpress:6.4.3:*:*:*:*:*:*:*
cpe:2.3:a:php:php:8.1.27:*:*:*:*:*:*:*๊ทธ๋ฆฌ๊ณ CVE(Common Vulnerabilities and Exposures) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด CPE๋ฅผ ๊ธฐ์ค์ผ๋ก ์ทจ์ฝ์ ์ ๋งคํํ๋ค.
์ฆ, ํ๋ฆ์ด ์ด๋ ๊ฒ ๋๋ค:
๊ณต๊ฒฉ์ ์ ์ฅ์์๋ Wappalyzer๋ก ๊ธฐ์ ์คํ์ ํ์ ํ๊ณ , ํด๋น ๋ฒ์ ์ CVE๋ฅผ ์กฐํํ๊ณ , ํจ์น๋์ง ์์ ๋ฒ์ ์ด๋ฉด ์ทจ์ฝ์ ๊ณต๊ฒฉ์ ์๋ํ๋ ํ๋ฆ์ด ์๋ํ๋ ์ ์๋ค.
์ค์ ๋ก Wappalyzer์์ ํ์งํ ์ ์๋ ๊ธฐ์ ์ค CPE๊ฐ ๋งคํ๋์ด ์๋ ๊ฒ๋ง ํด๋ ์๋ฐฑ ๊ฐ๊ฐ ๋๊ณ , ๊ฐ ๊ธฐ์ ๋ง๋ค ์์ญ์์ ์๋ฐฑ ๊ฐ์ CVE๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค. ํนํ PHP, WordPress, Joomla, Drupal ๊ฐ์ CMS ๊ณ์ด๊ณผ OpenSSL, Tomcat, Jenkins ๊ฐ์ ์๋ฒ ์ํํธ์จ์ด๋ CVE ์ฐ๊ด๋๊ฐ ๋๋ค.2
ํ์ง ๊ท์น DB๋ ์คํ์์ค๋ค
Wappalyzer์ ๊ธฐ์ ํ์ง ๊ท์น์ ๋ชจ๋ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์๋ค.3
์๋์ Wappalyzer ํ๋ก์ ํธ๋ 2023๋ ์์ ํ๋ก ๋ฐฉํฅ์ ์ ํํ์ง๋ง, enthec(๊ตฌ wappalyzergo)์ ๊ฐ์ ์ปค๋ฎค๋ํฐ ํฌํฌ๋ค์ด ์คํ์์ค ๋ฒ์ ์ ์ ์งํ๊ณ ์๋ค.4
๊ท์น DB ๊ตฌ์กฐ๋ JSON ํ์ผ ํํ๋ก, ํ์ง ๋์ ๊ธฐ์ ๋ณ๋ก ํ๊ฑฐํ๋ฆฐํธ ํจํด์ด ์ ์๋์ด ์๋ค:
{
"React": {
"cats": [12],
"description": "React is an open-source JavaScript library...",
"dom": {
"[data-reactroot]": { "exists": "" },
"[data-reactid]": { "exists": "" }
},
"js": {
"React.version": "([\\d.]+)\\;version:\\1",
"react.version": "([\\d.]+)\\;version:\\1"
},
"scriptSrc": "react(?:\\.min)?\\.js",
"website": "https://reactjs.org"
}
}์ด JSON ํ๋๊ฐ React๋ฅผ ์๋ณํ๋ ๋ชจ๋ ๊ท์น์ ๋ด๊ณ ์๋ค. DOM ์์ฑ, JavaScript ์ ์ญ ๋ณ์, ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก๊น์ง ๋ณต์์ ๋ฒกํฐ๋ฅผ ์กฐํฉํด์ ํ์ ๋๋ฅผ ๋์ด๋ ๋ฐฉ์์ด๋ค.
๊ฐ๋ฐ์ ๊ด์ : ๋ด ์ฌ์ดํธ๋ ๋ฌด์์ ๋ ธ์ถํ๊ณ ์๋?
์ง๊ธ ์ด์ ์ค์ด๊ฑฐ๋ ๊ฐ๋ฐ ์ค์ธ ์๋น์ค๊ฐ ์ธ๋ถ์ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ์ง์ ํ์ธํด๋ณผ ์ ์๋ค.
๋น ๋ฅธ ํ์ธ ๋ฐฉ๋ฒ
# ํค๋ ํ์ธ
curl -I https://yourdomain.com
# ์๋ต ํค๋ + ์ฒซ ๋ฒ์งธ HTML ํ์ธ
curl -s https://yourdomain.com | head -50๋๋ Wappalyzer ์น์ฌ์ดํธ์์ URL ์ ๋ ฅ๋ง์ผ๋ก๋ ๊ธฐ์ ์คํ์ ๋ถ์ํด๋ณผ ์ ์๋ค.
๋ ธ์ถ ์ค์ด๊ธฐ โ ์ค์ฉ์ ์ธ ์ค์
Nginx์์ ๋ฒ์ ์จ๊ธฐ๊ธฐ:
server_tokens off;
# ๋๋ ๋ ์ธ๋ฐํ๊ฒ
more_clear_headers Server;Apache์์ ๋ฒ์ ์จ๊ธฐ๊ธฐ:
ServerTokens Prod
ServerSignature OffPHP X-Powered-By ์ ๊ฑฐ:
# php.ini
expose_php = OffExpress.js์์ X-Powered-By ์ ๊ฑฐ:
app.disable('x-powered-by');
// ๋๋ ํฌ๋ฉง ์ฌ์ฉ (๊ถ์ฅ)
import helmet from 'helmet';
app.use(helmet());WordPress generator ๋ฉํํ๊ทธ ์ ๊ฑฐ (functions.php):
remove_action('wp_head', 'wp_generator');ํ๊ณ์ ์คํ ๊ฐ๋ฅ์ฑ
Wappalyzer๊ฐ ํญ์ ์ ํํ ๊ฑด ์๋๋ค.
์คํ์ด ์๊ธฐ๋ ์ด์ :
- ์ฌ๋ฌ ๊ธฐ์ ์ด ๋น์ทํ ํจํด์ ๊ณต์ ํ๋ ๊ฒฝ์ฐ (์: jQuery๋ฅผ ์ฐ๋ ์๋ง์ ํ๋ ์์ํฌ)
- ๋ฒ์ ์ด ๋๋ ํ๋๊ฑฐ๋ ๋น๋ ํด์๋ก ๋์ฒด๋ ๊ฒฝ์ฐ (Webpack, Vite ๋ฑ ๋ฒ๋ค๋ฌ ์ฌ์ฉ ์)
- CDN ๊ฒฝ์ ๋ก ์๋ต ํค๋๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ:
- ์๋ฒ์ฌ์ด๋์์๋ง ๋์ํ๋ ๊ธฐ์ (DB, ์บ์ ์๋ฒ ๋ฑ)
- ์๋ต์ ํ์ ์ ๋จ๊ธฐ์ง ์๋ ๋ฏธ๋ค์จ์ด
- ์ปค์คํ ๋น๋๋ก ๋ํดํธ ํจํด์ ์ ๊ฑฐํ ๊ฒฝ์ฐ
๊ฒฐ๊ตญ ํ์ง ํํผ๋ "๊ณต๊ฒฉ ํ๋ฉด(Attack Surface)์ ์ค์ด๋ ๊ฒ"์ด๊ณ , ์๋ฒฝํ ์๋๋ณด๋ค๋ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๋ ๊ฒ ํ์ค์ ์ด๋ค.
์ ๋ฆฌํ๋ฉฐ
Wappalyzer ๊ฐ์ ๊ธฐ์ ํ๊ฑฐํ๋ฆฐํ ๋๊ตฌ๊ฐ ์ค์ํ ์ด์ ๋ ๊ณต๊ฒฉ์๋ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์น ๊ฐ๋ฐ์ ์ ์ฅ์์ ์ด ๊ธ์ ํต์ฌ์ ์ด๋ ๋ค:
- ์๋ฒ ํค๋์์ ๋ฒ์ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๋ผ โ
Server:,X-Powered-By:๋ฑ - ๊ธฐ๋ณธ ์ฟ ํค๋ช
์ ๋ฐ๊ฟ๋ผ โ
JSESSIONID,PHPSESSID๋ฑ - ๋ฒ๋ค๋ฌ๋ฅผ ์ฐ๋ฉด JS ์ ์ญ ๋
ธ์ถ์ด ์ค์ด๋ ๋ค โ React, Vue๋ฅผ ๋ฒ๋ค๋งํ๋ฉด
window.Vue๊ฐ์ ๊ธ๋ก๋ฒ ๋ณ์๊ฐ ๋ ธ์ถ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค - ํจ์น๋ฅผ ๋ฏธ๋ฃจ์ง ๋ง๋ผ โ ๋ฒ์ ์ด ๋ ธ์ถ๋๋ ์ ๋๋ , ํจ์น๋์ง ์์ ์ํํธ์จ์ด๋ ๋ฆฌ์คํฌ๋ค
ํ์ง ์์ฒด๋ฅผ ๋ง๋ ๊ฑด ์ด๋ ต๋ค. ํ์ง๋ง ํ์ง๋๋๋ผ๋ ์ต์ ํจ์น ์ํ๋ฅผ ์ ์งํ๋ฉด, CVE ์กฐํ์์ ํด๋น ๋ฒ์ ์ ์๋ ค์ง ์ทจ์ฝ์ ์ด ์๋ค๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๋ณด์์ ์ํ๊ฐ ์๋๋ผ ๊ด๋ฆฌ๋ค.
์ฐธ๊ณ ๋ฌธํ
- Wappalyzer. "About Wappalyzer." https://www.wappalyzer.com/aboutโฉ
- NVD (National Vulnerability Database). "CVE Search." NIST. https://nvd.nist.gov/vuln/searchโฉ
- Wappalyzer GitHub. "Technologies Database." https://github.com/enthec/webappanalyzer/tree/main/src/technologiesโฉ
- enthec. "webappanalyzer โ Open-source Wappalyzer fork." GitHub. https://github.com/enthec/webappanalyzerโฉ
