본문 바로가기

about Security58

[웹] 0. 웹 기초 # 인코딩 ex) 아스키(Ascii), 유니코드(Unicode) ... + Ascii : 7비트 데이터에 대한 인코딩 표준 : 알파벳과 특수 문자 표현 가능 + Unicode : 모든 언어의 문자를 하나의 표준에 담음. : 한 문자는 최대 32개의 비트로 표현 : 한글, 한자, 히라가나, 알파벳 그리고 이모지(emoji)까지. 모두 포함하고 있다. # 통신 프로토콜 + 프로토콜 : 규격화된 상호작용에 적용되는 약속 - 컴퓨터와 통신할 때는 엄격한 프로토콜(약속)이 필요하다. 컴퓨터가 해석의 융통성을 발휘하게 하는 것이 매우 어렵고 통신 오류가 발생할 가능성이 높아지기 때문이다. 따라서 문법(syntax)를 두고 이 문법을 벗어나는 메세지는 잘못 전송된 것으로 취급한다. - 프로토콜 ex) : TCP/IP.. 2022. 1. 14.
기타 인젝션 # iframe 인젝션 * iframe - HTML 페이지 안에서 또 다른 HTML 페이지를 보여주는 태그 - 어떤 제한 없이 다른 페이지를 해당 웹페이지 안에 불러와 삽입할 수 있다. # OS Command 인젝션 - 시스템 명령어를 쿼리문에 주입하여 취약한 변수를 통해 서버 운영체제에 접근하는 공격 # PHP Code 인젝션 # SSI 인젝션 2021. 12. 24.
HTML 인젝션 (비박스 환경을 활용한 웹 모의해킹 완벽 실습) # 인젝션 : 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 데이터베이스의 정상적인 쿼리 일부로 인식하고 실행할 때 발생하는 취약점 - 데이터를 입력받거나 데이터베이스 정보를 요청하는 곳에서 공격이 가능하다. # HTML - Hyper Text Markup Language, HTML - 웹 페이지를 만드는 데 사용하는 언어 - 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공 # HTML 인젝션 - 반사(GET) - 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격 - HTML 태그로 악의적인 사이트에 연결하거나 악성 파일을 다운로드 하도록 유도 # HTML 인젝션 - 반사(POST) .. 2021. 12. 23.
[ 웹해킹 ] 인증 결함 Broken Authentication 인증 결함 - 인증에 필요한 사용자의 계쩡 정보를 노출하는 취약점 - HTML코드, GET요청 URL에 변수 노출 - 취약한 암호 설정 - 취약한 인증 과정 인증 과정 중 결함 발생 또는 세션 관리 소홀로 인해 세션 아이디 노출 - 인증 과정의 결함과 세션 관리의 취약점으로 정상 인증 과정 없이 사용자 권한 획득, [실습] 난이도 하에서 insecure---- 빈칸위에 드래그하면 하얀 글씨로 적어놓은 아이디와 비밀번호가 있음 옛날에는 개발자들이 잊어먹을까봐 표시해놓고 배포하기전 잊어먹고 지우지 않을때가 있었음. 난이도 중 unlock_secret() 에 적혀있는 암호문을 위에 있는 문자로 해독하여 비밀번호를 알아낼 수 있다. 암호문이 해독할 수 있는 것과 함께 코드에 적혀있어서 일어나는 참사. 난이도 상.. 2021. 10. 31.
[캡슐화] Private 배열에 Public 데이터 할당 (5등급) 0. 개요 public으로 선언된 메소드의 인자가 private 선언된 배열에 저장되면, private배열을 외부에서 접근하여 배열수정과 객체 속성변경이 가능해진다. 1. 보안 대책 - public으로 선언된 메서드의 인자를 private 선언된 배열로 저장되지 않도록 한다. : 인자로 들어온 배열의 복사본을 생성하고 clone() 메소드를 통해 복사된 원소를 저장하도록 하여 private변수에 할당하여 private선언된 배열과 객체속성에 대한 의도하지 않게 수정되는 것을 방지한다. - 배열 객체의 원소가 String 타입 등과 같이 변경이 되지 않는 경우에는 인자로 들어온 배열의 복사본을 생성하여 할당한다. - 전달받은 public 배열의 레퍼런스 대신 값을 private 배열에 할당한다. 2. 진단.. 2021. 8. 10.
[캡슐화] Public 메소드부터 반환된 Private 배열 (5등급) 0. 개요 private로 선언된 배열을 public으로 선언된 메소드를 통해 반환(return)하면, 그 배열의 레퍼런스가 외부에 공개되어 외부에서 배열수정과 객체 속성변경이 가능해진다. 1. 보안 대책 - private로 선언된 배열을 public으로 선언된 메소드를 통해 반환하지 않도록 한다. : private 배열에 대한 복사본을 반환하도록 하고 배열의 원소에 대해서는 clone() 메소드를 통해 복사된 원소를 저장하도록 하여 private 선언된 배열과 객체속성에 대한 의도하지 않게 수정되는 것을 방지 한다. - 배열의 원소가 String 타입 등과 같이 변경이 되지 않는 경우에는 Private 배열의 복사본 을 만들고 이를 반환하도록 작성한다. - private 배열을 수정해야 할 경우 별도의.. 2021. 8. 10.
[캡슐화] 시스템데이터 정보 노출 (5등급) 0. 개요 시스템, 관리자, DB정보 등 시스템의 내부 데이터가 공개되면, 공격자에게 또 다른 공격의 빌미를 제공하게 된다. 1. 보안 대책 - 예외 상황이 발생할 때 시스템의 내부 정보가 화면에 출력되지 않도록 개발한다. - getMessage() 메서드의 사용을 제한한다. : Exception 발생 시 오류와 관련된 정보가 노출될 수 있기 때문. 2. 진단 방법 - 시스템 정보 출력 코드가 존재하는지 확인한다. 3. 코드 예시 # 1 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA) 예외 발생 시 getMessage()를 이용한 오류메시지를 통해 오류와 관련된 시스템 정보 등 민감한 정보가 유출될 수 있다. * e.getMessage() : 자바에서 전달한 인스턴스의 메소드 .. 2021. 8. 10.
[보안기능] 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출 (5등급) 0. 개요 대부분의 웹 응용프로그램에서 쿠키는 메모리에 상주하며, 브라우저의 실행이 종료되면 사라진다. 프로그래머가 원하는 경우, 브라우저 세션에 관계없이 지속적으로 저장되도록 설정할 수 있으며, 이것은 디스크에 기록되고, 다음 브라우저 세션이 시작되었을 때 메모리에 로드된다. 개인정보, 인증 정보 등이 이와 같은 영속적인 쿠키(Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되며, 이는 시스템을 취약하게 만든다. 1. 보안 대책 - 쿠키의 만료시간은 세션이 지속되는 시간을 고려하여 최소한으로 설정한다. - 영속적인 쿠키에는 사용자 권한 등급, 세션 ID 등 중요 정보가 포함되지 않도록 한다. 2. 진단 방법 - 쿠키를 사용하는지 확인한다. - 쿠.. 2021. 8. 10.
[에러처리] 부적절한 예외 처리 (5등급) 0. 개요 프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외 상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 야기할 수 있다. 1. 보안 대책 - 값을 반환하는 모든 함수의 결과값을 검사하여, 의도한 값을 반환하는지 확인한다. - 예외처리를 사용하는 경우 광범위한 예외 처리 대신 구체적인 예외처리를 수행한다. 2. 진단 방법 - 예외처리 로직을 확인한다. - 예외처리를 구체적으로 나누어 처리하는지 확인한다. 3. 코드 예시 소프트웨어 개발보안 가이드 (2019.11) / 행정안전부 & 한국인터넷진흥원 # 1 - 제거되지 않고 남은 디버그 코드 - 안전하지 않은 코드 예시(JAVA) # 1 + 제거되지 않고 남은 디버그 코드 - 안전한 코드 예시(JAVA) # 2 - 제.. 2021. 8. 10.