본문 바로가기
  • 시 쓰는 개발자
CS 개념/컴퓨터 보안

컴퓨터 보안 (9) - Web Security

by poetDeveloper 2024. 6. 7.

시험공부하며 러프하게 정리한 내용이니, 가볍게 참고만 하시길

 

🥕8장 Web security

>> HTTP
- stateless 프로토콜임 (중요!)
- TCP/IP 사용

>> HTML
- 브라우저 창 내에서 랜더링 된다.
- 정적 문서 설명 언어이고, 다른 페이지 링크/참조이미지 같은 embedding을 지원함.
- html 확장자
플러그인으로 PDF, 동영상 등 미디어 지원 가능
JS, java같은 곳에 임베드 하면 인터렉티브하게 사용자 인터페이스 수정하여 클라이언트 컴퓨터에 동적컨텐츠 제공

>> Phishing 피싱 : 민감정보 얻으려고 만든 위조된 웹페이지
- URL Obfuscation(난독화) : 철자 비슷하게 교묘하게 해놓은 url 이런거
유니코드 공격으로써 라틴어 a를 끼워넣기도 함. 유니코드 등록된거라 조작가능
- Removed or forged address bar : 주소창 제거하거나 위조함
- 얼핏보면 같은 url이니까 맞는것같은데 실제로는 전혀 다른 ip로 설정되어 있어서 정보 빼감

>> IE image crash : 엄청 크고 단순한 이미지 만들어서 서비스 마비시킴.
- 가로세로 100까지만 허용되는데 갑자기 9999짜리 이미지를 넣으면 이걸 다운로드 하려다가 마비되는 것.

>> Mobile code : 리소스 큰 걸 서버가 아닌 사용자에게 부담지게 하는 것.
- 실행 프로그램이고, 사용자의 리소스 사용함.
ex) JS, Active X, Java 플러그인 등 (JS 기본 기능으로 페이지 조작)

>> Active X : binary code를 브라우저 대신 실행 (사용자 부담)
- 윈도우 전용 기술
- 사용자 파일에 접근 가능
- 서명된 코드를 지원
- "~~~의 콘텐츠를 항상 신뢰" 클릭하면, 사용자와 동일한 권한으로 실행됨.

>> 신뢰할 수 있는 ActiveX control
- window 레지스트리에 저장된 list는 신뢰가능. 단, 공격자가 이 레지스트리(테이블 리스트) 수정해서 해커의 key 저장해두면 해커도 신뢰하게 됨.
- 신뢰하면 이후 신뢰할거냐고 메세지 표시 안하고 실행가능
- 만약 서명되지 않은 control이 있으면 서명 안됐다고 메세지 뜨고, 수락 거부 옵션 뜸. control 거부하면 실행되진 않지만 이미 다운받았으므로 제거된 것도 아닌 상태임.

>> Java Applet : Java code를 브라우저 내에서 실행 (사용자 부담 없음)
- 플랫폼 독립적인 자바 플러그인이다.
- 샌드박스내에서 실행됨 (외부와 차단된 안전한 공간)
- 사용자가 신뢰한다고 하면 샌드박스 벗어나서 실행될 수 있음.
----------------------------------------------------------------------------------------
>> 쿠키 : 웹사이트 정보 저장해놓은 데이터
- 사이트 재방문할 때 쿠키가 서버로 다시 전송돼서 속도 빠름
- 세션동안 상태정보 효과적으로 보관함
- pw, ssn, 신용카드 등 민감한 정보도 저장할 수 있음 (중요!)
- 사용자의 컴퓨터에 저장돼서 ActiveX가 악용할 수도 있음.

>> XSS 크로스 사이트 스크립팅 : 스크립트 코드를 웹페이지에 주입함.
- 악성 코드 주입해서 피싱, 쿠키 도용 등 공격함
ex) 링크 누르면 악의적인 사이트 접속 & 쿠키 넘기게 설정해두기
ex) 이미지 불러오기처럼 해놓고 악의적인 사이트 접속
- 클라이언트 입장에서 해결법
페이지 실행 전 인코딩 해보기
http 트레픽 분석
특수 html 문자 찾기
잘못된 요청 차단
코드 실행해서 분석하기 (Auditing System 감사시스템)

>> SQL Injection : 사용자의 "입력"을 받을 때 입력 위치에 악성 SQL문 배치하는 공격
ex) password = 'M' or '1=1'
- 해결책 - 악의적인 문자들 변경 : escape sequence 써서 따옴표를 하나의 문자처럼 만들어줌.
ex) username = escape('M'; drop table user;')

>> Risk on the Web
1) 웹서버를 무단 액세스로부터 보호 (인가 안된 접근으로부터 위험)
ex) BOF 같이 서버측 보호

2) 악의적 사이트에 들어갔어도 컴퓨터가 멀웨어에 감염되면 안됨.
공격자가 맘대로 파일 못바꾸게 해야함.
Sandboxing써서 안전한 환경에서 코드 실행하고 관찰 분석하는 보안 관행 실천하기

3) 공격자가 사용자 계정으로 Read나 물건구매같은거 못하게 해야함.
웹브라우저는 웹사이트가 관련없는 다른 웹사이트에 액세스 하는 걸 방지함.
same-origin policy 사용해서 두 사이트가 URL의 protocol, domain, port가 일치해야 동일한 출처라고 간주함.