어제 스터디에서 보게된 whireshark가 흥미로워서 HTTP, HTTPS, wireshark에 대해 검색하다가,
위키하우의 아주 단순한 해킹 매커니즘을 보게되었다.
우리가 프론트엔드에서 작성하는 거의 모든 정보는 대중에 공개되어있고, 소스보기등으로 코드를 확인할수 있다.
그리고 이용자가 해당 html을 복사하여 조작한뒤, 변조된 코드로 사이트에 접근할 수 도 있다.
만약 비밀번호 검증등의 알고리즘이 프론트엔드에서 끝나고, 사용자가 코드에 접근할 수 없는 서버측 코드에 이런 공격에 대비되어있지 않다면 아래와 같은 아주 단순한 공격에 노출되어 있는 것이다.
HTML 코드로 웹사이트 해킹하는 법: 8 단계 (이미지 포함) - wikiHow
기본적인 HTML과 자바스크립트를 배우고 나면, 웹사이트에서 비밀 번호로 보호된 내용에 접근할 수 있는 경우가 있다. 이 글에서는 간단하고 보안이 약한 웹사이트를 HTML 코드로 해킹하는 법을
ko.wikihow.com
위 링크를 보면 아주 간단한 8단계 방법으로 보안이 취약한 사이트를 해킹하는 방법을 기술해두었다.
요즘은 저런 방식으로 해킹이 가능한 사이트가 거의 없겠지만,
그래도 프론트앤드에서 작성하는 코드에 민감한 사용자 정보를 넣거나, 혹은 보안에 관련된 코드를 삽입하는것이 얼마나 위험하고 무의미한 것인지 잘 느낄수 있다. 사용자가 조작이 가능한 코드는, 언제든지 조작이 된다고 가정하고 다루어야 한다.
또다른 아주 간단한 데이터 탈취 방법이 HTTP사이트의 정보 탈취 이슈이다.
아래 사이트에서는 이 탈취가 어떤 방식으로 이루어지는지 간단하게 설명해준다.
https://zdnet.co.kr/view/?no=20201109101050
'HTTP' 웹사이트 방문자, 이렇게 계정 털린다
올해 국정감사에서는 공공기관 웹사이트의 취약한 보안이 화두에 올랐습니다.김영배 더불어민주당 의원이 이같은 문제를 지적했습니다. 당시 김 의원은 공공기관 웹사이트 1천280개...
zdnet.co.kr
사용자가 이용하는 허브, 혹은 스위치(스위칭허브등)에서 해커가 자신의 컴퓨터로 사용자 정보를 우회시키는데 성공하는 경우 해커는 이용자의 모든 정보를 wireshark같은 툴을 이용해 열어볼 수 있다. 처음부터 탈취가 안되도록 관리하는것도 중요하지만, 스위치, 허브는 사용자가 통제하지 못하는 변수인 경우도 많기 때문에(회사 네트워크가 취약한 경우, 혹은 공동주택등) 이렇게 탈취가 가능하다고 생각하고 이에 대비를 하여야 한다.
아래는 HTTP를 통해 전송되는 데이터를 wireshark로 열어본것.
그리고 아래는 HTTPS로 전송된 데이터를 열어본 것
이렇게 암호화가 되어 전송되는 사용자의 정보는 탈취되더라도 복호화가 상당히 어렵고, 모든 데이터의 암호화가 이루어지기 때문에 중요한 정보와 중요하지 않은 정보가 모두 암호화되어 섞이게 된다.
하지만 HTTPS보안은 전달되는 과정에서 탈취는 보호해주지만, 서버 자체가 털리거나, 중간자공격을 수행하는 취약점이 있는 경우 내용이 노출될 수 있으므로, 민감한 정보는 일반적으로 종단간 암호화 기술을 추가로 적용하여 보호하고 있다.
그리고 그외 대표적인 보안공격들과 그에 대비하는 정보들(아래 링크 참고) 를 읽어보면,
SQL Injection, Cross-Site Scription(XSS), Command Injection등의 공격이
사용자 입력값을 이용해 특정 스크립트를 실행시키게 된다.
여기서 사용자의 입력값을 필터링해서, 스크립트나 쉘 명령어가 실행될 수 없도록 필터링하는 과정은 필수이며,
사용자가 코드를 조작할 수 없는 서버측에서 이루어져야 한다.
Javascript Injection공격의 경우, 클라이언트 사이드에 민감한 데이터를 넣어두는게, 사용자에게 직접 노출하지 않더라도 얼마나 위험한 것인지 잘 보여주고 있다.
위와 같이 클라이언트사이드 자바스크립트에 저장된 모든 변수는 콘솔을 이용해 간단하게 출력이 가능하고, 이를 이용해 모든 정보를 가지고 올 수 있다. 클라이언트 사이드에 있는 자바스크립트 코드에는 절대로 민감한 정보를 직접 다루면 안된다. 그냥 게시하고 있는것과 다를게 없다.
https://kciter.so/posts/basic-web-hacking
웹 개발을 위해 꼭 알아야하는 보안 공격
이번 포스팅에선 아주 중요하지만 프로그래밍 교육 과정에서 크게 다루지 않는 보안 에 대해 이야기 해보려고 한다. 최근엔 프레임워크나 라이브러리 차원에서 잘 막아주기 때문에 큰 언급없이
kciter.so
https://blog.medianavi.kr/2023-01-27-javascript-secure-guide-part1/
JavaScript 보안 가이드 1편 - 입력데이터 검증 및 표현
JavaScript로 프로그램을 안전하게 개발할 수 있도록 하는 보안 가이드 입니다. 이 중에 "입력데이터 검증 및 표현" 부분을 보여줍니다.
blog.medianavi.kr
https://yozm.wishket.com/magazine/detail/1852/
안전한 웹을 위해 HTTPS 이해하기: ①HTTPS의 작동 원리 | 요즘IT
웹에서는 내가 원하는 정보를 열람하는 것뿐만 아니라, 내가 입력한 정보를 웹 사이트를 운영하는 회사의 시스템으로 전달하는 경우도 많습니다. 예를 들어, 포털 사이트에 내 계정 정보를 입력
yozm.wishket.com