ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모의해킹의 여덟 번째 민감한 데이터 노출
    웹 해킹 2021. 3. 18. 22:01

    민감한 데이터에 포함되는 것들은 각종 개인정보, 로그인에 사용되는 정보, 업무상 기밀등 비공개로 관리되는 정보이다. 민감한 데이터 노출 리스크는 HTTP 프로토콜을 사용하여 전송되는 경우, 평문으로 저장되는 경우, 안전하지 않은 암호화 방식을 사용하는 경우에 발생한다.

     

    네트워크 스니핑은 네트워크의 데이터들을 모니터링하는 기술이다. 네트워크 스니핑 프로그램 중 tcpdump와 와이어샤크가 있다.

     

    tcpdump 프로그램을 이용하여 HTTP 프로토콜로 전송되는 사용자 계정 정보를 확인하겠다.

    위 명령어는 eth1 네트워크 인터페이스를 통해 전달되는 요청 메세지와 응답 메세지 중 tcp 80번 포트와 관련된 내용만 표시한다는 명령어이다.

     

    위 명령어를 실행해둔 채로 bWAPP의 clear Text HTTP 메뉴로 가서 로그인한다.

    로그인 후, tcpdump에 로그인 정보 모니터링 화면

     

    웹 스토리지 기능은 웹 애플리케이션이 사용자의 웹 브라우저에 데이터를 저장할 수 있는 기능이다.

    웹 스토리지 중 로컬 스토리지에 저장된 데이터를 읽는 실습을 하겠다.

    bWAPP의 HTML5 Web Storage(Secret) 메뉴 화면

     

    웹 스토리지에 저장된 정보는 개발자 도구 F12의 Storage 탭에 있다.

    Storage 탭 화면

     

    로컬 스토리지에 저장된 정보는 웹사이트 어딘가에 크로스 사이트 스크립팅 취약점이 존재하는 경우 접근이 가능하다.

    크로스 사이트 스크립팅 공격을 시도해보기 위해 A3의 Cross Site Scripting - Reflected 메뉴로 가겠다.

    localStorage.getItem()을 이용하여 로컬 스토리지에 저장되어 있는 내용을 읽는다.

     

    secret 키의 값을 읽었다.

     

    크로스 사이트 스크립팅 공격으로 로컬 스토리지 데이터에 접근할 수 있다는 것을 확인했다.

     

    이번에는 평문으로 된 패스워드 노출 실습을 하겠다.

    보안이 고려된 사이트의 경우 패스워드 분실 신고를 하면, 임시로 사용할 수 있는 패스워드를 발급하여 주거나, 패스워드를 초기화 할 수 있는 방법을 제공한다.

    bWAPP의 Tet Files(Accounts) 메뉴에 가겠다.

    회원가입 신청을  임의로 한다.

     

    그 후, Download file을 클릭한다.

     

    사용자의 정보를 관리하는 파일의 내용을 확인할 수 있고, 이렇게 패스워드가 평문으로 노출되고 있다.

     

    Base64 인코딩이랑 이진 데이터를 아스키 텍스트 문자열로 변환하는 방법을 말한다. 대표적으로 전자우편이나 HTTP 메세지를 전송할 때 사용하는데 파일 전송과 같이 바이너리 데이터를 전송할 때 Base64 인코딩하여 전송한다.

    V1dX 디코딩이 WWW이다.

     

    Base64 인코딩 실습을 하겠다. bWAPP에 Base64 Encoding (Secret) 메뉴에 간다.

    secret 쿠키가 저장된 화면

     

    버프 스위트에서 secret 쿠키가 표시된다.

     

     

    Base64 인코딩이 된 secret 쿠키

     

    Base64 인코딩이 된 쿠키를 디코더한다.

    %2F를 /로 변경하고 디코딩을 실행한 화면

     

    %2F는 /가 URL 인코딩이 된 것이여서 /로 변경하고 디코딩을해주면 secret 쿠키 값이 나온다.

    Base64는 암호화가 아니라 인코딩 방식이다. 암호화와 혼돈하면 안된다.

     

    민감한 데이터 노출 대응 방안에 대해 알아보겠다.

     

    -    HTTP 프로토콜로 전달되는 데이터는 공격자에게 쉽게 노출될 위험이 있기 때문에, 로그인과 같은 중요한 기능은 HTTPS 프로토콜을 이용하여 데이터가 암호화되어 전송되도록 구현해야 한다.

    (HTTP/HTTPS가 같이 사용되도록 구현된 사이트의 경우 HTTPS에서 HTTP로 전환될 때 민감한 데이터가 전송되지 않도록 주의한다.)

     

    -    민감한 데이터를 클라이언트로부터 전달받아야 하는 경우에는, 데이터를 쿠키를 통해 전달되도록 하고 해당 쿠키에 HttpOnly 플래그를 추가해야한다. 이렇게 하면 자바스크립트로 쿠키를 읽지 못한다.

     

    -    민감한 데이터를 저장할 때에는 데이터를 암호화하여 저장한다.(검증된 암호화 사용)


    위 글은 화이트 해커를 위한 웹 해킹의 기술을 참고했습니다.

    댓글

Designed by Tistory.