본문 바로가기

인프라

[ 웹 보안 ] 웹 10대 취약점 및 웹 공격에 대한것

728x90

웹 10대 취약점

 

  1. 크로스사이트 스크립팅(XSS)
    1. 설명 : 키가 되는 쿠키를 탈튀(사이트가 이동되면 자동으로 들어온다)해서 동일 사이트에 탈튀한 쿠키로 접속
    2. 검사방법 : 게시판 내용물에 <script> 태그로 alert() 명령어를 입력해 본다.
    3. 조치사항 : 서버에서 클라이언트로 전송되는 모든 데이터는 프레임워크에 의해 이스케이핑된다.
      1. 입력시 보정 : AOP등을 사용해서 아예 입력시 이스케이핑을 한 후 DB에 입력한다.
      2. 출력시 보정(추천) : 사용자 입력값을 HTML로 보여줄 떄는 프레임워크에서 지원 해주는 이스케이핑 되는 태그를 사용, 만약 안해준다면 Ajax등 공용 라이브러리에서 이스케이핑
  2. 인젝션 취약점
    1. 설명 : SQL변수를 조작해서 SQL 실행구문 변경
    2. 프레임웍이 발달한 요즘 거의 없는 현상 like문 사용시 _나 %는 막아야 할 수 있음
    3. Hibernate를 쓰면 원천적으로 봉쇄된다.(native를 사용하지 않는 한..)
  3. 악성파일 실행(디렉토리 리스팅 취약점)
    1. 설명 : 공격용 jsp등을 업로드해서 서버에서 이것을 실행하는것
    2. 조치사항
      1. WEB-INF로만 or NAS로만 or AWS S3로만 제한한다.
      2. 업/다운로드시 파일명 체크를 실시한다.
    3. 웝루트 이후로 어떠한 jsp파일도 오지 못하게 한다.(주기적인 자동체크 실행)
    4. 조치사항 : 모든요청사항을 필터링하며 서버측 실행코드는 모두 WEB-INF이상에 놓인다.
  4. 불안전한 직접객체 참조
    1. 설명 : DB의 PK등을 클라이언트 또는 URL로 접근 가능하게 저장 (의도되지 않은 접근 수행)
    2. 해결 :
      1. 모든 요청은 화이트 리스트에 의해 인증 절차를 거치는 전수검사를 수행한다.
      2. 모든 최종벨리데이션은 서버에서 한다.
      3. DB업데이트시 select/update를 사용하여 권한을 검사 후 필요한것만 업데이트한다.
  5. 크로스사이트 요청 변죠
    1. 설명 : 요청을 취약한 웹사이트로 보내게 하여 브라우저가 악의적인 수행을 하도록 함
      1. XSS와 동일 A가 악의적인 게시물@를 올리면 B가 이것을 읽을때 @에 있던 스크립트가 작동하여 B권한으로 게시물이 등록 된다.
      2. 하지만 요즘 크롬,웹웨일 등 브라우져들이 버전 업 되면서 기본 보안규칙이 수정됨에 따라 잘 발생하지 않음
    2. 해결 :
      1. XSS와 동일하게 해결
      2. 세션값 이외에 고유한 랜덤 쿠키값을 추가 생성해서 항상 히든폼에 들고 다님
        1. 세션과 히든폼의 값을 동시에 확인하여 인증을 함
        2. 공격자는 히든폼 값을 알지 못함으로 서버에 명령을 내릴 스크립트 작성하지 못함
  6. 정보 유출 및 부적절한 오류
    1. 설명 : 코딩시 내부 문제 또는 의도하지 않게 내부작업/개인정보 유출
    2. 해결 : 이건 개발자가 코딩을 개념있게 하는 수 밖에 없음
  7. 취약한 인증 및 세션관리
    1. 해결 :
      1. 간단한 or 연속된 비밀번호는 입력 불가능하도록 조치
      2. 자동 로그인 기능, 연계 로그인 기능 구현시 주의
    2. 쿠키에 민감한 자료를 저장하지 말거나 혹은 암호화 해서 저장한다.(서버 사이드에서만 쿠키를 사용할 경우에 해당)
    3. 일반적으로 세션관리가 엉터리로 될리는 거의 없기도 함
  8. 불안전한 암호화 저장
    1. 일반적으로 사용자의 id/비번/메일/주민번호/카드번호 등이 해킹의 가장 큰 수확물임
    2. 암호/주민번호 등의 해시화/암호화 저장
  9. 불안전한 통신
    1. 설명 : 사용자의 입력정보가 패킷에 그대로 노출
    2. 해결 : 로그인/계좌번호 입력 등 노출되면 안되는곳에는 반드시 SSL로 통신
  10. URL 접속 제한 실패
    1. 해결 : 기본 보안 프레임워크 사용

 

웹 공격에 대한 기본

 

  1. 네트워크 공격
    1. Snppfing : 정상인척 하는것, 포괄적인 의미로서, 다른공격들의 최종 목표는 이것
    2. Sniffing : 패킷을 가로 채는것
    3. Hijecking : 정보를 가로챈 후 변조해서 보내는것
  2. SSL을 사용한 경우 내용을 복호화 하지는 못하지만, 그대로 복사해서 전송은 가능하다
    1. IP와 인증정보를 함계 암호화 하는 방식으로 해경 가능
  3. 쿠키가 없는 딥링크를 연속적으로 전송 후 응답을 기다리지 않고 소켓 연결을 종료
    1. 상태 서버는 매 연결마다 세션을 만드느라 많은  비용을 소모함
    2. 그리고 이는 web.xml에 기록된 시간 동안 누적된다.
    3. 특히 봇이 들어오는 경우에도 동일하게 세션을 생성하는것 역시 문제
  4. 봇 관리
    1. 공인된 봇 정책을 먼저 사용한다 robots.txt등
    2. 공인된 대부분의 봇은 역방향 DNS항목을 지닌 합법적인 IP주소에서 온다. 이 IP를 차단한다.
    3. 이용약관에 개인/비상업용 목적에 의해서만 사용할 수 있다고 적은 뒤 법적인 조치를 가한다.
    4. 악질적인 봇은 쿠키를 들고다니지 않는다.
      1. 초당 세션 10개를 만드는 검색 엔진이 있을 정도
  5. DDos 방버
    1. 대부분 하나의 소스 IP에서 일분당 15개의 연결로 제한 한다. Ajax남발 금지
  6. Email 딥링크
    1. 동시 다발적으로 발송한 E-mail이 특정 서버의 참조 url을 가질때 동시에 수백만명이 메일을 열어본다면 한방에 훅간다.
    2. ex) Xbox360의 선주문 메일은 원본서버로의 막대한 이미지/자바스크립트 다운로드 요청을 하게 되어 순식간에 다운 된다.
  7. 용어
    1. 스크립트 카디 : 스스로 공격수단을 만들지는 못하지만 진짜 크래커가 만든 도구를 내려받아서 사용한다
    2. 메모리 덤프 ㅣ 메모리를 덤프 뜨면 메모리상에 들어가 있는 비밀번호가 노출 된다(근데 그럴일은 별로 없을것)

 

   관련 글

 

저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.

저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~

728x90

'인프라' 카테고리의 다른 글

[ 인프라 ] linux, CentOS의 TimeZone 변경  (0) 2020.11.28
[ Tomcat ] linux 로그 설정  (0) 2020.11.27