나의 독학은

11장 - 웹 공격 기술 본문

학습/그림으로 배우는 Http & Network Basic

11장 - 웹 공격 기술

안종혁 2023. 9. 18. 16:59

11.1 웹 애플리케이션에 대한 공격 패턴

능동적 공격 : 공격자가 웹 애플리케이션에 액세스해서 공격 코드를 보냄

ex) SQL인젝션, OS 커맨드 인젝션 

 

수동적 공격 : 함정을 이용해서 유저가 공격 코드를 실행시키는 공격

ex) 크로스 사이트 스크립팅(XSS), 크로스 사이트 리퀘스트(CSRF)

11.2 출력 값의 이스케이프 미비로 인한 취약성

이스케이프 : 특정 문자나 문자열을 일반 텍스트로 해석하지 않고 특별한 용도로 사용하기 위해 특수한 문자로 처리하는 것

ex) 역슬래시(\)를 사용하여 특수한 문자를 나타냄. \n (줄 바꿈 문자) , \t (탭 문자) , \\ (역슬래시 자체)

 

✅ 크로스 사이트 스크립팅

- 동적으로 HTML을 생성하는 부분에서 취약성이 발생

- 아이디와 패스워드를 적는 폼에 취약성 발생

- 스크립트를 추가하여 유저의 쿠키를 도난함

 

SQL 인젝션(삽입)

- 개발자의 의도에 맞지 않는 SQL문을 삽입하여 데이터베이스의 정보를 열람하거나 변조시킴

 

OS 커맨드 인젝션

- 웹 애플리케이션에서 외부 OS명령어를 사용할 때, 발생할 수 있다.

*외부 OS명령어 : 윈도우(dir, ipconfig, netstat), Linux/Unix(ls, pwd)...

 

HTTP 헤더 인젝션

- 리스폰스 헤더 필드에 개행 문자등을 삽입하는 수동적 공격

ex) 유저가 카테고리를 선택하여 각 카테고리 페이지로 리다이렉트할 때, 공격자가 지정한 임의의 쿠키를 헤더 필드에 세팅

 

HTTP 리스폰스 분할 공격

- 리스폰스 바디에 개행 문자를 삽입 하는 수동적 공격

 

메일 헤더 인젝션

- 웹 애플리케이션의 메일 송신 기능에 공격자가 To 및 Subject와 같은 메일 헤더를 추가하여 공격

 

디렉토리 접근 공격

- 패스 트래버설(Path Traversal)이라 부르기도 함

- 파일 이름을 외부에서 지정하는 처리가 취약할 경우, 상대 경로나 절대 경로를 지정함으로써 서버 상의 파일이 열람되거나 변조

11.3 웹 서버의 설정이나 설계 미비로 인한 취약성

강제 브라우징

- 웹 서버의 파일 중 공개 의도가 없는 파일이 열람되는 것

ex) "종혁의 일기"는 SNS에서 친구 관계인 유저만 액세스할 수 있지만, "일기"의 내용 중 이미지의 URL 알 수 있다면 이미지를 조회할 수 있게 됨.

✅ 부적절한 에러 메시지 처리

- 메일을 이용한 로그인 기능에서 메일의 유무에 따라 메시지가 다르게 출력된다면 계정의 존재를 유추하게 됨

- 검색을 잘못 했더니, 에러 메시지로 데이터베이스에 관한 메시지가 출력되어 SQL 인젝션을 하기 위한 힌트를 줄 경우

 

✅ 오픈 리다이렉트

- 유저가 신뢰하는 웹 사이트에 오픈 리다이렉트의 기능이 있으면 공격자는 이것을 이용하여 임의의 URL로 리다이렉트 시킴

11.4 세션 관리 미비로 인한 취약성

세션 : 유저의 상태를 관리하는 기능으로 관리가 취약하면 공격자가 유저로 위장할 수 있다.

✅ 세션 하이잭

- 공격자가 함정을 설치하여 유저의 세션ID 및 쿠키를 입수하고 유저로 위장

 

✅ 세션 픽세이션

- 하이잭은 세션ID를 뺏는 것이라면 픽세이션은 공격자가 지정한 세션ID를 유저에게 사용하게 하는 수동적 공격

 

✅ 크로스 사이트 리퀘스트 포저리

- 인증된 유저가 의도하지 않은 개인정보 나 행동을 공격자의 함정을 통해 강제로 실행되는 것인 수동적 공격

ex) 인증된 유저의 권한으로 개인정보 갱신, 상품을 구입, 게시판에 글 작성

11.5 기타 

✅ 패스워드 트래킹

- 패스워드를 훔쳐서 인증을 돌파하는 공격

- 이것을 막기 위해 웹 애플리케이션으로 패스워드를 보존할 경우, 해시함수를 이용하여 패스워드를 암호화함

ex) 해시함수로 패스워드 변환 과정 : abc → 해시함수 → 900150983cd...

 

클릭 재킹

- 투명한 버튼이나 링크를 웹 페이지에 심어두고, 유저가 링크를 클릭하게 함으로써 의도치 않는 콘텐츠에 액세스 시키는 공격

 

✅ Dos 공격

- 서비스 제공을 정지 상태로 만드는 공격

- 액세스를 집중시켜 리소스를 다 소비하게 만듬

 

그림으로 배우는 Http & Network Basic

출처

- 그림으로 배우는 Http & Network Basic

 

끝으로..

이 책을 공부하는 동시에 객사오란 책도 읽었었다. 그러나, 나는 객체지향 코드를 한 번도 작성하지 않았던 터라 책이 이해만 갈뿐, 내 코드에 적용해 볼 수가 없는 것이 아쉬웠다.

이 책 역시 공부한 내용을 어떻게 적용시킬 수 있을까를 고민해보니 토이 프로젝트를 해야겠다는 결론이 내려졌다.

토이 프로젝트에 객체지향 코드와 이 책에서 배운 내용을 적용시킬 수 있지 않을까?

다음은 토이프로젝트를 위해 spring을 공부해보자