본문 바로가기

etc

웹페이지가 어떤언어로 구성되어있는지 분석해보기

@마크다운


나는 웹페이지가 어떤언어로 구성되어있는지 찾아보는걸 상당히 좋아한다.


궁금한 웹페이지가 생기면 가장먼저 입력해보는것이 domain path에 admin,robots.txt,sw.js를 가장먼저 입력해보는것이 습관이 되었다.


나오는 데이터들을 통하여 가장 기초적인 분석을 시작해본다.


# 에러가 나오면

커스텀된 에러인지 백엔드에서 디폴트 에러페이지로 설정되어있는것인지 확인한다.

디폴트 에러페이지로 의심된다면 에러메시지로 나오는 문장을 구글에다 입력하면 유사한 이미지들을 확인할 수 있는데,

그 이미지를 확인하면 어떤 언어로 만들어졌는지 알 수 있다.


# 개발자도구 sources

일단 웹은 클라이언트에서 소스를 받아서 실행하는 것이기에 파일을 숨긴다는것은 불가능하다.

다만 난독화가 되어있거나 성능향상을위해 공백과 엔터들을 모두 줄여서 min파일을 보통 추가하는데,

개발자 도구의 sources 탭에가면 파일들을 확인할 수 있다.

그 코드들을 [beautifier](http://jsbeautifier.org/)

여기에 코드를 입력해주면 자동으로 보기 좋게 바꿔준다.

그 후 import되어있는 js파일들을 확인해보고

무엇을 쓰고 있는지 확인 해본다.

아까 위에서 말했듯이 소스를 숨기는건 불가능 하기에 개발자들이 작성한 주석들도 볼 수 있는데, 주석에서 힌트를 얻는 경우도 꽤나있다.



# 개발자도구 network

다음으로 network탭에서 파일들의 URL들을 확인하여 storage에서 파일들을 가지고오는지를 확인하여 어떤 클라우드 서비스를 사용하는지 분석할 수 있다.

그리고 가장 최근에 알게된건 network에서 제일 위에 있는파일(루트도메인)을 눌러서 헤더정보를 뜯어보면

웹서버에 대한 정보가 나오고

 set-cookie에 변수값을 유추하여 백엔드 언어와 프레임워크를 유추해낼 수 있다는것이다.

위의 정보는 cmd 에서 curl 명령어로도 알아낼 수 있다.

curl -I URL을 입력하면 동일한 정보를 받아낼 수 있다. (다른경우도 있다!)

> -I 옵션은 request의 head데이터만 보여주는 옵션이다.


# 크롬 확장도구

프론트 프레임워크별 dev tools를 확장프로그램에 추가하여 프레임워크를 체크를 할 수도 있으며,

wappalyzer 라는 확장프로그램을 추가하면 js파일들의 정보부터 웹서버 백엔드 언어까지 유추하여 알려준다. (충격쇼크)

shodan 이라는 확장프로그램도 있는데 서버의 ip에서 열려있는 포트들도 알려준다.


# 주의

서비스를 제공하는 업체들이 보통은 알려줄 필요가 없는 정보들을 유추해내는 것이기에 정보가 완벽하다고 할 수 없으며,

일부러 허점을 노출시켜 (ex. 파일 확장자를 실제 서비스 언어와 다른걸 일부러 적는다거나..) 해커들을 헛고생을 시키는 방법도 있다고 한다.

나 또한 웹을 공부하는 사람으로써 알려줄 필요가 없는 정보들이라 생각하며, 나는 반드시 숨겨야 겠다(ㅋㅋㅋㅋㅋㅋㅋ)는 생각을 했다.