보안

Chapter 13. 민감한 데이터 노출

qbang 2019. 3. 4. 01:00

Chapter 13. 민감한 데이터 노출

HTTP 프로토콜에 의한 노출

 

- eth1 네트워크 인터페이스를 통해 전달되는 요청 메시지와 응답 메시지 중 tcp 80 포트와 관련된 내용만 표시

 

- bWAPP > Clear Text HTTP(Credentials)의 로그인 창에 bee/bug를 입력하면 스니핑 됨

 

웹 스토리지를 통한 노출 실습

 

- Bwapp > HTML5 Web Storage(Secret)에서 개발자 도구를 통해 웹 스토리지 접근, XSS 취약점이 있으면 알아낼 수 있음

<script>alert('secret: '+ localStorage.getItem('secret'))</script>

 

- Bwapp > XSS Reflected(GET) 메뉴를 선택하고 First name에 위 코드 입력, localStorage.getItem()을 이용하면 로컬스토리지에 저장되어 있는 내용을 읽을 수 있음

 

평문으로 된 패스워드 노출 실습

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

 

 

- Text Fils(Accounts)에 추가하고자 하는 계정을 입력하고 다운로드 링크를 누르면 사용자 정보를 관리하는 파일의 내용을 확인할 수 있음

 

Base64 인코딩

- Base64 인코딩이란 이진 데이터를 아스키 텍스트 문자열로 변환하는 방법, 전자우편이나 http 메시지를 전송할 때 사용하는데, 파일 전송과 같이 텍스트로 표현할 수 없는 바이너리 데이터를 전송할 때 사용

 

- 터미널에서 Base64 인코딩/디코딩을 할 수 있는데 -d 옵션을 붙이면 디코딩이고 빼고 실행하면 인코딩

 

 

- Bwapp > Base64 Encoding(secret) 페이지 프록시키고 새로고침하면 버프 수트에서 secret 쿠키 볼 수 있음, 디코딩 ㄱ

 

 

- 이때 문자열 맨 뒤 %2F/URL 인코딩된 것이므로 맨 뒤를 /로 변경해주고 디코딩

 

민감한 데이터 노출 대응 방안

1       HTTP 프로토콜

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

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

2       웹 스토리지 보호 대책

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

3       검증된 암호화 사용

민감한 데이터를 저장할 때에는 데이터를 암호화하여 저장

 

 

해당 포스팅은 '화이트해커를 위한 웹 해킹의 기술' 책 내용을 바탕으로 작성되었습니다.