
n년전 대상들과 다르게 최근에 출시되거나 서비스 되는 웹 서비스 페이지들은 Vue.js 나 Nuxt.js 기반으로 많이 작성되긴 한다. 그러다보니 해당 프레임워크 단에서 접근되거나 호출하는 URL 이 프론트 단에서 도출되는데.... 좀만 js 파일을 까도 접근만 되어도 크리티컬한 엔드포인트가 도출된다.
이게 한 두번만 접근하면 괜찮은데, 문자열도 길고 여러개다 보니 귀찮다. _nuxt 번들 열거나 __NUXT__ 페이로드 뒤지거나, baseURL 을 따로 찾아야하거나 등등. 이게 너무 귀찮아서 "딸깍" 하나로 정리해주는 익스텐션 하나 있으면 편할거같아서 만들었다. 이름하야 Js URL List. 그냥 줍줍이라고 불러도 괜찮을거같다.
Nuxt 나 Vue 으로 만든 페이지들은 이런 정보들을 주로 내포하여 페이지를 뒤지다보면 찾아낼 수 있다.
- __NUXT__ or __NUXT_DATA__
- Vue Router path: 대부분 baseURL 이라는 이름으로 선언되어있다.
- baseURL, apiBase, apiBaseUrl
- __nuxt / *js : 해당 번들 내부엔 /api/... /v1/... 형식으로 나와있다.
이걸 하나하나 다 보고자 하면 시간이 꽤 걸린다. 컨설턴트들에게 주어진 시간은 짧고, 바로바로 결과는 나와야하니 이런 대상들이야 말고 진짜 보기좋은 그림의 떡이 아니지 않을까 한다. 뭐 LinkFinder 과 같은 툴도 많긴한데 다른 부가적인 설정이나 개발에도 시간이 꽤 걸려서 브라우저 확장으로 만들었다. 물론 이것도 대상에서 취약점 찾는 툴이니 조심히 써야한다.
GitHub - KaiHT-Ladiant/JRList: JRList - JS URL Recon List. Chrome extension to extract URLs from Nuxt.js / Vue.js pages.
JRList - JS URL Recon List. Chrome extension to extract URLs from Nuxt.js / Vue.js pages. - KaiHT-Ladiant/JRList
github.com
일단 현재 버전은 지금 보고있는 브라우저 화면 내 페이지를 스캔해서 URL 을 뽑아다 준다. 대충 지원하는 기능 목록은 다음과 같다.
- NUXT 나 Vue 시그니처 감지
- DOM 속성: href, src, action 등
- 인라인 스크립트 / HTML 주석
- same-origin / _nuxt JS 번들 파싱
- Nuxt paylaod / config walk
- baseURL 기준, 상대경로 결합
- 카테고리 분류: base, api, nuxt, auth, admin 등
- 검색 필터링과 클립보드 복사, 대상 정보 내보내기
상시로 확인되는 content 스크립트를 전 페이지에 박아두진 않았고, 아이콘 클릭해서 스캔할 때만 스크립트 넣어서 스캔되는 방식이다.
설치는 별로 안어렵고, 위에 깃헙 주소에서 받으면 된다.
크롬 익스로 올릴까 하다가 번거로워서 걍 깃헙에 올림.
(근데 크롬에서 받으면 익스 자체가 크롬에서 서명안된 익스라고 설치 안되니까 다른 브라우저 쓰던가 아니면 cli 로 받아야한다. 그게 귀찮으면 그냥 압축해제 로드 해야함.)
설치법은 다른 익스텐션들과 동일하니 여기에선 설명을 생략하겠다.
추가로 옵션으로 js 번들 스캔 켜놓으면 script[src] 를 fetch 해서 URL 패턴을 더 뽑아다 준다. CORS 가 있으면 cross-origin 번들은 못읽을 수 있으니 주의.
이게 아이디어는 좋은데, 생각 외로 쓸모가 없거나 이상한 결과가 같이 나올 때가 있었다. _payload.json 이 계속 Nuxt3 휴리스틱 때문에 계속 뜬다거나 baseURL 이 중복되어서 나온다거나... 가끔 Nuxt 페이지는 CSP 때문에 스크립트 태그 주입이 막히는 경우도 존재했다. 세개 문제는 실제 payload 참조가 있는 경우나 baseURL 내 이미 path 값이 있는 경우는 안넣게하고, Nuxt/Vue 전역 수집은 world: "MAIN" 으로 처리해서 고쳐놓긴했다.
사용 시에 주의해야할 점 몇가지가 있는데 난독화되거나 런타임으로 조합되는 URL 은 안나올 수 있고, XHR/fetch 를 실시간으로 확인하진 못한다. 그리고 AV/EDR 에서 오탐하는 경우도 있으니 주의.

'Attack Code > WEB' 카테고리의 다른 글
| XML/JSON Request Of CSRF (2) | 2025.01.23 |
|---|---|
| WebShell - Cheetsheat (asp) (0) | 2025.01.23 |
| XXE Code in XLSX (0) | 2025.01.17 |
| Web Editor Default Page Location (0) | 2023.08.24 |
| Webshell - Cheetsheat (jsp/jspx) (0) | 2023.08.22 |