라벨이 web보안인 게시물 표시

Proxy ( Forward proxy, Reverse proxy )와 Client-Proxy MitM(Man-in-the-middle)

Proxy = 대신/대리 네트워크에서 proxy는 client나 server를 대신하여/대리하여 요청을 전달한다. 물리적인 위치는 사용자의 컴퓨터일 수도 있고 사용자의 컴퓨터 - 목적지 중간의 한 지점일 수 있다. 왜 대신하는가? 캐싱 자주 요청되는 리소스 or 자주 변하지 않는 리소스의 경우 proxy 서버에 리소스를 저장할 수 있다. - (본 목적지까지 전달했던) network hop을 줄일 수 있다. - 리소스가 캐싱된 스토리지에 따라 더 빠른 응답 시간를 얻을 수 있다. 보안 내부망과 인터넷이 소통하는 지점인 게이트웨이로서 작동. 로그 물리적인 서버, 또는 로컬 컴퓨터에 쌓인 기록을 바탕으로 보안 정책을 구성할 수 있음. 우회 보안과 공통적인 면이 있다. 자신의 실제 IP가 아닌 프록시가 대신 요청을 수행하고 응답을 대신 받아서 본인에게로 전송해준다. 목적 리소스가 있는 컴퓨터에서는 프록시가 요청을 수행한 것으로 인식하고 프록시에게 응답을 돌려준다. Forward proxy 대 Reverse proxy Forward proxy(= gateway, proxy) 1. 클라이언트, 클라이언트 풀에서 나가는 요청 에 대한 제어 수행. 클라이언트는 요청의 출발지 주소를 프록시 주소로 대신 사용함으로서 클라이언트의 원 정보를 숨길 수 있으며 우회 기능을 사용할 수 있음. ex) Tor의 여러 프록시 서버 노드를 경유하는 proxy chaining 요청에 대한 들어오는 응답 에 대한 제어 또한 수행하며 클라이언트 풀의 각각의 클라이언트에게 응답을 돌려준다. 2. HTTP 터널링을 통한 암호화 프록시 서버가 클라이언트 대신 인터넷을 연결한다. TLS를 지원하는 웹 서버에 proxy 서버를 사용하여 연결한다. (http1.1부터 connect method로 TLS tunnel을 사용할 수 있음) connect method가 평문 형태의 http proxy를  ssl 암호화된 요청을 tcp/ip 터널로 전환한다. - client가 http proxy 서버에게 t...

IP 카메라 보안 위협 요소와 해킹 피해를 최소화하는 조치들

펌웨어 소프트웨어 결함 TP-LINK 2021년 3월경, TP-LINK TAPO C200 카메라의 펌웨어 버전 1.1.15에서 공격자들이 root권한으로 uhttpd 바이너리를 실행시킬 수 있는 결함을 발견함. 해당 결함은 공격자에게 카메라의 모든 기능을 원격 조작할 수 있는 권한을 줌. 2020년 7월경, Heartbleed 취약점 발견. 카메라의 API에 인가되지 않은 접근을 통해 API call로 카메라의 모터를 움직이거나, 외부 저장소의 데이터 삭제, 카메라의 Live 영상에 접근하기 위해 유저를 생성함. CACAGOO CACAGOO cloud 저장소 지능형 카메라 TV-288ZD-2MP의 펌웨어 3.4.2.0919는 패스워드 없이 RTSP 서비스에 접근할 수 있음. 동종 펌웨어 3.4.2.0919는 약한 TELNET 인증 방식을 뚫고 password 요구없이 루트 권한 기능을 쓸 수 있음. uhttpd 임베디드 시스템에서 주로 사용되는 경량 웹서버. http/https를 지원하면서 적은 메모리와 CPU 자원을 사용하기 때문에 IoT 제품이나 라우터 제품에 사용하기 적합하다. Nginx나 Apache보다 더 기능이 제한적이다. Heartbleed 취약점 버퍼 오버플로우 취약점이다. 사용자가 무작위 데이터를 담은 하트비트 패킷을 웹서버에 보낼 때 얼마만큼의 데이터를 보내는 것인지 명시한다.  서버는 패킷을 전송받은 후 정확히 같은 양의 데이터를 돌려보내면서  '사용자와 서버가 연결이 되어 있음'을 확인한다. 사용자의 컴퓨터가 얼마만큼의 데이터를 보냈는지 거짓으로 명시 할 경우 서버는 메모리에 저장된 다른 정보까지 끌어와 패킷을 채운 후 사용자에게 재전송해 준다. 해커는 이 결함을 이용해 반복적인 전송과 응답을 받는 과정에서 정보를 축적할 수 있게 되고 그 중에서 유의미한 자료를 건져내면  그걸 토대로 보안을 뚫는 것이 가능해진다. heartbleed 공격에 대한 조치 방법은 이스트소프트 알약 블로그에 잘 정리되어 있다. ...

CSRF와 django의 csrf middleware에 대하여

CSRF CSRF(Cross Site Request Forgery), 사이트 간 요청 위조 사용자의 의지와 무관하게 공격자가 사용자로 하여금 특정 웹사이트에 공격자가 의도한 행위를 요청하게 하는 공격. CSRF가 요청을 위조하는 방법 참여자들 일반 사용자/ 공격자 / 타겟 서버 전제 상태 1. 사용자는 서버에 성공적으로 로그인을 하여 서버는 사용자를 확인할 수 있는 문자열을 포함하여 사용자에게 응답한 상태이고 2. 서버 영역에서는 세션 정보가 생성된 상태. 3. 사용자는 정상적인 응답을 받았으므로 session ID가 사용자의 브라우저 쿠키 영역에 저장됨. 이 때, 공격자가 서버를 공격하기 위한 요청 패턴에 대해 미리 알고 있다면 필요한 정보는 사용자 브라우저의 쿠키 영역에 저장된 session ID 뿐임. 이것을 헤더에 실어서 임의를 패킷을 만드는 것은 쉬운 일. 공격자는 어떻게 쿠키 영역의 정보를 탈취할까? 쿠키 영역 정보 탈취 1. 공격자는 악성 스크립트 페이지를 누르도록 유도한다. 서버가 직접적으로 해킹당하지 않았더라도 정상적인 게시글에 악성 스크립트를 실행시키는 클릭 유도 낚시 링크를 달면 유저가 클릭하게 되고 유저의 정보가 악성 스크립트가 의도대로 행동하게된다. 2. 서버는 쿠키에 담긴 session ID를 해석해서 정상적인 요청이라고 인지한다.(사용자의 session ID는 훼손된 것이 아니므로) 3. 서버는 인가된 사용자임을 인지하고 요청을 처리한다.    (하지만 정상 사용자는 이 요청을 의도하고 보내지 않았다.) CSRF 방어법 사용자 의심되는 URL, 신뢰할 수 없는 사이트의 URL, 출처가 명확하지 않은 곳으로부터 온 메일의 URL 등을 클릭하지 않도록 한다. 서버 개발자/운영자 - CSRF토큰 검사   세션에 임의의 값을 저장한 뒤 사용자에게 return하여,   모든 요청마다 해당 값이 있는지 검사함. - Header의 referer 필드 값 검사   referer 필드는 현재 요청을 보낸 ...

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code 완주, 독후감

Blogger 커스터마이징 : CSS 수정 (sticky-header)