Successfully reported this slideshow.
Your SlideShare is downloading. ×

컴퓨터보안.pptx

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
NLP2.pptx
NLP2.pptx
Loading in …3
×

Check these out next

1 of 19 Ad

More Related Content

Recently uploaded (20)

Advertisement

컴퓨터보안.pptx

  1. 1. Web Security 20160683 이종민
  2. 2. 목차(주요 웹 보안 위협) • 웹 보안의 중요성 • SQL Injection • SQL Injection의 종류와 대처 방법 • XSS 공격 방식의 종류와 대처 방법 • File Upload Vulnerability
  3. 3. 1. 웹 보안 • 2020년 하반기 전체 공격의 50% 이상이 정보 유출을 목적으로 발생함 출처: Penta Security 웹 공격 동향 보고서
  4. 4. 1. 웹 보안 출처: Penta Security 웹 공격 동향 보고서 • SQL Injection이 20%로 공격이 가장 많았음 • Request Header Filtering은 웹 브라우저에서 보내는 HTTP Request 요청문을 이용한 공격, 해커가 요청문 헤더 필수요소를 수정하여 웹 서버에 피해를 입힘 • Extension Filtering은 웹에서 일반적으로 사용하는 확장 형식이 아닌 취약성이 존재 하는 설정파일에 대한 접속 시도를 의미, 일반 사용자에 게 접속 허용 시 웹 서버의 동작과 서비스에 직접적인 영향을 미치는 위험한 공격 텍스트를 입력하십시오 2020년 하반기 WAPPLES,Cloudbric WAF 분석
  5. 5. 2. SQL Injection 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL 문을 주입하고 실행하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 OWASP TOP 10에서 가장 많은 비율을 갖고 있는 공격 유형인 Injection
  6. 6. 2. SQL Injection 종류 https://222tistory.tistory.com/91 • 사용자 인증을 위한 쿼리문의 조건을 임의로 조작하여 인증을 우회하는 기법 • 쿼리문의 조건절(where절)이 항상 참이 되도록 쿼리문 조작 • 에러 메시지가 발생한다면 입력한 값이 데이터베이스 서버까지 전달되어 처리 중 오류가 발생한 것을 알게 됨 DB에 입력된 값과 출력값
  7. 7. 2. SQL Injection 종류 논리적 에러를 이용한 SQL Injection • DB 쿼리에 대한 에러 값을 기반으로 한 단계씩 점진적으로 DB정보를 흭득할 수 있는 방법 • Users 테이블에 있는 모든 정보를 조회하게 됨으로써 가장 먼저 만들어진 계정으로 로그인에 성공, 관리자 계정을 탈취한 악의적인 사용자는 관리자의 권한을 이용해 또 다른 2차피해를 발생시킬 수 있음 Union 명령어를 이용한 SQL Injection • union select 구문을 사용해 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법이다. • UNION을 이용하여 mismatch를 발생시켜 Select 구문에 사용된 Field의 개수를 알아낼 수 있고 문자열 데이터의 경우 그 데이터를 알아낼 수 있다. • 위의 구문에서 인젝션 성공시, 개인정보가 게시글과 함께 나옴 https://noirstar.tistory.com/264, https://peemangit.tistory.com/308
  8. 8. 2. SQL Injection 종류 Blind SQL Injection • DB 쿼리에 대한 오류 메시지를 반환하지 않을 경우 쿼리의 참과 거짓을 통해 의도하지 않은 SQL문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법 • 로그인 폼에 SQL Injection이 가능하다고 가정 했을 때, 서버가 응답하는 로그인 성공과 로그인 실패 메시지를 이용하여, DB의 테이블 정보 등을 추출해 낼 수 있음 Time based SQL • 서버로부터 특정한 응답 대신에 참 혹은 거짓의 응답을 통해서 데이터베이스의 정보를 유추하는 기법 • 사용되는 함수는 MySQL 기준으로 SLEEP 과 BENCHMARK • 위의 그림은 Time based SQL Injection을 사용하여 현재 사용 하고 있는 데이터베이스의 길이를 알아내는 방법 https://noirstar.tistory.com/264, https://peemangit.tistory.com/308
  9. 9. 2. SQL Injection 대응 방법 • 입력 값에 대한 검증 > 서버 단에서 화이트 리스트 기반 검증 (블랙리스트 검증시 수많은 차단리스트를 등록함과 동시에 하나라도 빠지면 공격이 성공됨) 공백 대신 공격 키워드와 의미 없는 단어로 치환 • Prepared Statement 구문사용 > 입력 값이 데이터베이스의 파라미터로 들어가기 전 DBMS가 미리 컴파일 하여 실행하지 않고 대기함. 그 후 사용자의 입력 값을 문자열로 인식하게 하여 공격 쿼리가 들어가더라도 단순 문자열이기 때문에 공격자의 의도대로 작동하지 않음 • Error Message 노출 금지 > 공격자가 SQL Injection을 수행하기 위해서는 데이터베이스의 정보가 필요함. 데이터베이스 에러 발생 시 따로 처리하지 않으면 에러 발생 쿼리와 함께 에러 내용을 반환함 • 웹 방화벽 사용 > 웹 방화벽은 소프트웨어, 하드웨어, 프록시 형 세가지 종류가 있는데 웹 공격 방어에 특화된 우웹 방화벽을 사용하는 것도 하나의 방법임 https://noirstar.tistory.com/264, https://peemangit.tistory.com/308
  10. 10. 3. XSS 종류 https://4rgos.tistory.com/1 Reflected XSS 공격 방식 • 공격자가 미리 XSS 공격에 취약한 웹 사이트 탐색 후 XSS 공격을 위한 스크립트를 포함한 URL을 사용자에게 노출 • 사용자가 해당 URL 클릭시 취약한 웹 사이트의 서버에 스크립트가 포함된 URL을 통해 Request 전송, 웹 서버는 해당 스크립트를 포함한 Response를 전송 • 즉 사용자가 서버로 입력 한 값을, 서버는 요청한 사용자 의 브라우저로 악성스크립트를 반사시킨다. Reflected XSS 공격은 이메일 메세지 또는 다른 웹 사이트와 같이 다양한 경로로 피해자 시스템에 전달된다.
  11. 11. 3. XSS 종류 https://4rgos.tistory.com/1 • Stored XSS는 Reflected XSS와는 달리 웹 사이트의 게시판에 스크립트를 삽입하는 공격 방식 • 공격자는 게시판에 스크립트를 삽입한 후 공격 대상자가 해당 게시글을 클릭하도록 유도 • 웹 애플리케이션 취약점이 있는 웹 서버에 악성 스크립트를 영구 저장해놓는 방법 • 게시판,사용자 프로필 및 기타 필드 등에 악성 스크립트를 삽입해 놓으면, 사용자가 사이트를 방문하여 저장되어 있는 페이지를 요청할 때, 서버는 악성 스크립트를 사용자에게 전달하여 사용자 브라우저에서 스크립트가 실행되며 공격하게 됨 Stored XSS 공격 방식
  12. 12. 3. XSS 종류 https://berr-my.tistory.com/entry/XSS- %EA%B3%B5%EA%B2%A9 • 피해자의 브라우저가 HTML 페이지를 구문 분석할 때마다 공격 스크립트가 DOM 생성의 일부로 실행되면서 공격 • 페이지 자체는 변하지 않으나, 페이지에 포함되어 있는 브라우저 측 코드가 DOM 환경에서 악성코드로 실행 • Stored XSS 및 Reflected XSS 공격의 악성 페이로드가 서버 측 애플리케이션 취약점으로인해, 응답 페이지에 악성 스크립트가 포함되어 브라우저로 전달되면서 공격하는 것이 반면, DOM Based XSS는 서버와 관계없이 브라우저에서 발생하는 것이 차이점임 DOM based XSS 공격 방식
  13. 13. 3. XSS 위험성 https://berr-my.tistory.com/entry/XSS- %EA%B3%B5%EA%B2%A9 • 거짓 페이지 노출 > XSS 공격에 취약한 페이지의 경우 <script> 태그 뿐만 아니라 <img>와 같은 그림을 표시하는 태그를 사용해 원래 페이지와 전혀 관련이 없는 페이지를 표시할 수 있다. 이를 이용해 거짓 페이지를 노출시켜 개인정보 유출 등의 위험이 있다. • 시스템 관리자 권한 획득 > 취약점이 있는 웹 서버에 다양한 악성 데이터 포함 후, 사용자 브라우저가 악성 데이터를 실행하게 할 수 있음. 공격자는 아직 패치되지 않은 취약점에 대한 공격 코드 실행을 통해 사용자의 시스템을 통제 가능하다. • 악성코드 다운로드 > XSS 공격은 악성 스크립트 자체로 악성 프로그램을 다운로드 할 수는 없다. 하지만 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도해 악성 프로그램을 다운받는 사이트로 리다이렉트하거나 트로이 목마 프로그램을 다운받도록 유도 할 수 있다. • 쿠키 정보 및 세션 ID 획득 > 공격자는 취약 페이지 및 게시판에 공격을 수행함으로써 해당 페이지 이용자의 쿠키 정보나 세션 ID를 획득 할 수 있다.
  14. 14. 3. XSS 방지 http://blog.plura.io/?p=7614 • 대응방안 > XSS 취약점을 근본적으로 제거하기 위해서는 스크립트 등 해킹에 사용될 수 있는 코딩에 사용되는 입력 및 출력 값에 대해서 검증하고 무효화시켜야 한다. 입력 값에 대한 유효성 검사는 데이터가 입력되기 전에 가능하면, 입력 데이터에 대한 길이, 문자, 형식 및 사업적 규칙 유효성을 검사해야 한다. • 스크립트 영역에 출력 자제 > 이벤트 핸들러 영역에 스크립트가 삽입되는 경우 보호기법들을 우회할 수 있기때문에 사용자의 입력을 출력하는 것을 최대한 자제, 필요한 경우 대응방안과 함께 사용해야 한다. • 입력 값 치환 > 악성 스크립트는 많은 HTML 태그안에 포함을 할 수 있으므로 표에 있는 위험문자의 경우 출력 값을 이스케이핑 해야 한다. • 입력 값 제한 > 사용자의 입력값을 제한해 스크립트를 삽입하지 못 하도록 해야함.
  15. 15. 4. File Upload 취약점 https://hack-cracker.tistory.com/255, https://owin2828.github.io/devlog/2020/01/09/etc-2.html • 주로 게시판 등에서 파일 업로드 기능을 악용하여 시스템 권한을 획득할 수 있는 취약점을 의미 • 악성 스크립트가 업로드 된 후, 서버상에서 스크립트를 실행하여 쉘을 획득하는 등의 행위로 서버 를 장악할 수 있다. • 웹 서버에서 실행 가능한 확장자 목록
  16. 16. 4. File Upload 공격 방식 https://hack-cracker.tistory.com/255, https://owin2828.github.io/devlog/2020/01/09/etc-2.html • 취약점 점검 1. 파일 업로드시에 확장자 제한이 없는지 확인 2. 업로드된 파일에 접근 및 실행이 가능한지 확인하여 공격 • Proxy 툴을 이용해 확장자 검사 우회 파일 업로드 • 파일타입 변조등의 우회공격을 통해 확장자 검사를 피하는 것을 의미 • 업로드 시 파일의유형 정보를 알려주는 헤더중, Content-type 속성을 프록시를 이용해 우회하여 공격 • Null을 이용한 파일 업로드 > 널(%00)문자가 문자의 끝을 의미하기 때문에 특정 확장자를 숨기기 위한 목적으로 사용될 수 있다. 널바이트(%00)와 .jpeg확장자를 함께 접목하여 업로 드하면 %00 다음의 문자열은 무시하게 된다. • SQL Injection을 이용한 파일 업로드 • MySQL의 into outfile() 함수를 이용하여 웹서버에 파일을 생성 • MSSQL의 저장 프로시저(xp_cmdshell)을 이용하여 echo와 » (파이프) 명령어를 통해 특정 파일에 삽입
  17. 17. 4. File Upload 대응 방안 - 점검 https://hack-cracker.tistory.com/255, https://owin2828.github.io/devlog/2020/01/09/etc-2.html 1. 검증된 웹쉘 올리기 2. 웹쉘 취약점 점검 이후 업로드 했던 웹쉘 반드시 삭제 3. 업로드 기능이 불필요한 경우 개발단계에서 완전히 제거, 소스코드단에서 편의를 위해 주석처리 등 지양 4. 파일 업로드 기능이 필요한 경우 서버측에서 파일명 검사 1. 파일 이름은 전체 검사를 원칙 2. 확장자 분리시(.) 조건문자 마지막 확장자 검사 3. 시스템에서 대소문자 구분 소문자 치환 후 검사 (허용하는 확장자 규정 후 이외 확장자 모두 차단) 4. 업로드 가능한 파일명,확장자인 경우 업로드 전용 폴더에 저장 => 정상 파일 다운로드시 데이터베이스 연동을 통해 원본 파일명으로 변환 5. 업로드 전용 폴더의 실행권한 제거
  18. 18. 4. File Upload 대응 방안 - 설계 https://hack-cracker.tistory.com/255, https://owin2828.github.io/devlog/2020/01/09/etc-2.html 1. 업로드되어 저장되는 파일의 타입, 크기, 개수, 실행권한 제한 1. 업로드 파일 크기 제한 2. 파일 타입 제한 3. 업로드되어 저장되는 파일 실행권한 제거 2. 업로드되어 저장되는 파일은 외부 식별 불가능 1. 업로드 파일의 저장경로는 외부에서 직접 접근이 불가능한 경로 사용 2. 업로드되어 저장되는 파일의 파일명은 랜덤하게 생성하여 사용
  19. 19. 참고자료 - 바닥글 링크 감사합니다.

×