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 검증된 암호화 사용
민감한 데이터를 저장할 때에는 데이터를 암호화하여 저장
해당 포스팅은 '화이트해커를 위한 웹 해킹의 기술' 책 내용을 바탕으로 작성되었습니다.
'보안' 카테고리의 다른 글
Chapter 15. XXE 공격 (0) | 2019.03.14 |
---|---|
Chapter 14. 접근 통제 취약점 공격 (0) | 2019.03.05 |
Chapter 12. 파일 업로드 공격 (0) | 2019.03.03 |
Chapter 11. 파일 인클루전 공격 (0) | 2019.03.03 |
Chapter 10. XSS 요청 변조(CSRF) 공격 (0) | 2019.03.01 |
댓글