728x90

http://openeg.co.kr/ 보안교육을 듣고. 

*  공격자의 패턴

  1. 관리자에게 악성 파일 배포: 관리적 보안이 필요한 경우 
  2. 웹서버 공격


가. 보안 사고 사례 

  1. 웹어플리케이션 취약점 이용 

    : 로그인 하여 다른 고객의 번호를 조회, 방화벽에서 막아주는 반복 실행 기간보다 넓게 반복 

     → 생성 & 업데이트 & 삭제 시 권한있는 사용자인지 조회 확인필요

  2. 로그인 관리, 암호화, 파일업로드 취약점 이용

    : 현대캐피탈 사고, COMMAND 창을 사용할 수있는 환경을 만들고 컴퓨터 내부의 데이터를 뒤짐

    DB의 경우 암호화 되어 사용할 수 없었으나 로그파일을 사용함.

    →  중요데이타의 경우 로깅 데이터도 암호화 할 것.

  3. OpenSSL heartBleed 취약점

    : 오픈 라이브러리 취약점. 변수와 변수의 길이를 파라메터로 요청을 보낼 때 사용함, 이때 변수의 길이를 보내는 길이 보다 길게 주면 heap 영역에 저장된 다른 사용자의 정보도 모두 가져옴

    →  JAVA의 경우 보안의 문제점이 발견되면 해당 API 듀플리케이트 됨 참고만

    → 메모리영역에 key 값이 남지 않도록 할 것.

  4. 스마트폰 앱의 허술한 보안공약

    : 포인트 선물하기 시 문자인증 프로세스 제거. 소액의 포인트를 한 사용자에게 선물하여 고액 결재로 사용
    → 프로세스 설계시 주의

  5.  SQL인젝션 취약점을 이용한 공격

  6. 파일 업로드 취약점을 이용한 공격

  7. 정수 오버플로우를 이용한 공격

  8. 중요데이터 암호화 부재

  9. 파라메터  변조를 이용한 공공아이핀 부정발급

  10. URL 파라미터 조작 개인정보 노출(2016 yes24)

  11. 무작위 대입공격 기프트 카드 정보유출(2016 카드사)

  12. 사물인터넷 보안 위협


나. 보안 약점 / 취약점 

#보안 약점

  •  소스코드에 존재하는 잠재적 위험

#보안 취약점

  • 보안 약점 중 침해 사고로 연결되는 위험.
  • 보안약점은 취약점을 포함한다. 




다. DB 활용 

    # 보안 약점

  • CWE(Common Weakness Enumeration) 

    -  https://cwe.mitre.org/

    -  미 국토 안보부 관리

     # 보안 취약점

  • CVE(Common Vulnerabilities Exposures)

    https://cve.mitre.org/
    - "CVE-2014-0001" 보안 솔루션 소개시 사용.

  • SANS (SysAdmin, Audit, Network and Security)

    - CWE/SANS 가장 위험한 소프트웨어 에러 25개

        소프트 웨어 오류 정리 목록...구성요소간 안전하지 않은 상호작용(6개), 위험한 자원관리(8개), 허점이 많은 방어(11개)

  • CERT Secure Coding Standard

    -  안전 코딩 패턴, 2009년 10월기준 17개 카테고리, 지속적 갱신중. 

  • OWASP (The Open Web Application Security Project)
    - OWASP Top 10: 웹 프로그래밍 관련 가장 위험한 10가지 취약점. 3년에 1회 꼴로 발표.. 최근(2017년 )은 4년 걸림.



라. 2015년 상위 웹 취약점 & 약점

 

2015년 상위 웹 취약점

 

2015년 상위 보안 약점

 

1. 크로스사이트 스크립트


2. 정보누출


3. 관리자 페이지 노출


4.불충분한 인가


5. 경로추적 및 파일 다운로드


6. 악성콘텐츠


7. 위치공개


8. 크로스사이트 리퀘스트 변조


9. 데이터 평문 전송


10. SQL 인젝션

 

1. 크로스사이트 스크립트


2. 부적절한 예외 처리


3. 오류메시지를 통한 정보노출


4. 오류상황 대응 부재


5. Null Pointer 역참조


6. SQL 삽입


7. Public 메소드로 반호나된 Private배열


8. 잘못된 세션에 의한 데이터 정보 노출


9. 부적절한 지원 예제


10. Private 배열에 Public 데이터 할당





 
  


'For Real > Others' 카테고리의 다른 글

크리덴셜  (0) 2018.06.12
[2018]it+ 업무 용어  (0) 2018.04.30
유용한 사이트 모음(개발)  (0) 2017.12.13
유용한 사이트 모음 (일반)  (0) 2017.12.13
[KMU-KISIA 정보보안 아카데미] 시큐어 코딩 관련 용어 정리  (0) 2017.12.12
728x90


KMU-KISIA 정보보안 아카데미 재직자교육 -웹해킹방어를 위한 자바시큐어코딩 실무 교육을 듣고..

 1. 보안 약점과 보안 취약점의 차이는?  << 클릭


CH2 . 개발 보안 방법론

#시큐어 코딩

- "소스코드"의 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거

- 방법 : 코드검사 혹은 보안 솔루션도입.

# 소프트웨어 개발 보안

- "소프트웨어 개발 과정"에서 잠재적 보안 취약점을 제거하고 보안관련 점검 문제점 제거 하는 일련의 보안 활동

- 요구사항 분석

C(기밀성 1~3점) x I (무결성 1~3점) x A(가용성 1~3)  =1~27점 으로 등급별 관리

- 설계 

로그인 : 중요정보

관리자 페이지 : 중요정보, 별도 포트, 외부망

급여 : 경우에 따라. 공무원의 경우 이미 공개정보이기에 중요하지 않음  

- 구현

- 테스트


시큐어코딩 설명 쉬운 사이트 : http://blog.naver.com/acornzone/220689199858


#위협모델링

4단계 위협에 대한 우선순위결정

1. 예상피해

2. 재연확률 : 공격이 성공할 확률?

3. 공격 용이도 : 공격을 위해 얼마나 많은 노력이 필요한가

4. 영향을 받는 사용자

5. 발견 용이성 : 얼마나 쉽게 취약성 발견되는가?


CH3 . 웹 어플리케이션 보안을 위한 기본지식


실습 환경 구축

http://openeg.co.kr/672

접속 및 다운로드

1. SecureCoding.zip

C:\ 폴더에 압축해제

2. WindowXP_client ZIp

3. VMWareWorkstation download 설치

mySQL 이미 설치된 컴퓨터는 3306 port kill(http://blog.naver.com/ooa1769/220557706943)


파로스를 이용한 예제 실행

사용자 컴퓨터 <---> 파로스 <--->웹서버


#HTTP 와 웹 구조 이해

- HTTP(HyperText Transfer Protocol)

서버 컴퓨터와 요청(request)/응답(response) 프로토콜

- HTML head ; body 설명

- HTML body ; 실제 데이터

응답(response)은 바디부분만 준다. 


인코딩

# 인코딩 스키마

- 웹어플리케이션은 인코딩 스키마로 데이터를 안전하게 사용

- URL 인코딩: url에 글자들이 안전하게 서버 컴퓨터에 전달되도록 인코딩

                  , AJAX의 경우 내부에서 자동실행 

ex) < (url 인코딩값 : %3C)

- HTML 인코딩: HTML 문서에서 특별한 기능을 수행하는 문자들을 안전하게 브라우저에 출력

           ex) < (HTML인코딩값 : &lt;)

- BASE64 인코딩: a-z,A-Z,0-9  알파뉴메릭 64개의 문자로 안전하게 인코딩

자세한설명 : http://cocomo.tistory.com/290


크로스 사이트 스크립트

- 유일하게 클라이언트 페이지 공격함 (대부분 서버 공격)

- 사회 공학적 기법 : 사용자가 요청을 보내야 공격이 성립됨, 클라이언트 에게 응답이 되지않으면.. 공격이 성립되지 않는다. 


기법 1 : Reflective XSS  반사

클라이언트 입력 : ID "####"     <=====> 서버 출력 :  "####" 님 환영합니다. 

악성코드 받을수 있는 유알엘을 삽입하여 메일로 보냄. 서버는 (악성코드 포함한)"####" 님 환영합니다. 를 출력


기법2 : Stored XSS

id=1에 DB에 저장. DB저장된 정보가 조회 되어 실행


기법3: DOM XSS 개요

클라이언트 입력 파라메터 1: "####"     <=====>  다른 시첨에서 주어진 값을 실행할 때 문제 발생


해결방안

기법1 ==> 입력값.출력값 필터링으로 해결 (ex, SpringMVC 이용하는 경우)

==> 입력시 Fillter 에 XSS 설치시 기법1은 방어가능하나. 기법 2는 방어 한것이 아님.

==> 임의로 만든 로그인페이지 연결해서 아이디 패스워드를 얻을 수 있음


출력값

어디? Controller  (실습 fillter)

        View (실습  encoder)

어떻게? htmlEncoding

           XSSFilter를 적용  

어떤 방법? 화이트리스트 필터

            블랙리스트 필터

입력값 어디? Filter 컴포넌트, (실습 XSS Filter)

인터셉터 컴포넌트(용도가 다름... 어떤값이 들어왔을 때 계속할지 차단할지)

어떻게?  htmlEncoding

           XSSFilter를 적용  

 - 어떤 ? 화이트리스트 필

            블랙리스트 필터


칼리리눅스 ...악성코드 배포.... 공격서버 커넥션




el문 ${}


<p>${board.content}</p>

html 인코딩... p테크의 텍스트로 변경

lucy xss 는 화이트 xss

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet


크로스 사이트 필터를 또 뚫는...   <IMG SRC="javascript:alert('XSS');"> <LINK REL="stylesheet" HREF="javascript:alert('XSS');">  ....브라우저마다 다르다. 


필터는 실제로 체이닝 기능밖에 없음

Spring MVC ; HttpServletRequestWraper   ;실제데이터를 싸는 기능  head, body 값을 확인


http://openeg.co.kr/383

filter 웹 컨테이너


디스페쳐 서블릿 스프링 컨테이너

web.xml 설명

->인코딩필터 -> 멀티파트 필터 -> 크로스 사이트 필터 

멀티파트 필터 : 멀티파트 리졸빙... 


a=10&b=10,20,30 -> wraper

http://openeg.co.kr/383




# 정규식

- 자바의 정규표현식은 특정한 규칙을 가지는 문자를 표현하는데 사용하는 형식 언어이다.

- java의 기본 API

ex) 이메일 정규식 [A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}



# 캡슐화의 위배

- OOP의 특징 !! : 상속 다형성 캡슐화

- 캡슐화 : data가 외부에서 직접적으로 접근못함... public, private 의도가 깨질때

- 싱글톤일 때 배열, 콜렉션의 데이터 관리에 유의할 것!!

   :heap 에서 저장된 전역으로 사용되는 변수 값이 바뀌어 다른 쓰레드 영향받음

public class RoleTest {

public static void main(String[] args) {

Role r = Role.getInstance();

System.out.println(r.adminLists());

String[] a = r.getAdminRoles();

a[0]="홍길동";

System.out.println(r.adminLists());

}

}

해결방안 : get, set 메서드 구현시 복사하여 사용

public class Role {

    private String[] adminRoles = {"admin","root","manager"};

    private static Role role;

    private Role() {}

    

    public static Role getInstance() {

     if ( role == null ) {

     role=new Role();

     }

     return role;

    }    

public String[] getAdminRoles() {

String[] n = new String[adminRoles.length];

System.arraycopy(adminRoles,0,n,0,adminRoles.length);

return n;

}

생략


# 파인드시큐리티 버그 간단한 보안 툴 이용

- 일반 보안툴 :800개 ~1200개

- 파인드 시큐리티 버그 : 30개

정탐 , 오탐

- 보안 취약점과 보안약점은 검사하는 방법이 다름 , 최근 인공지능을 로깅으로 이용하려는 추세

- 오탐이 많아도 미탐이 적으면 사용. 미탐률이 적은게 가장중요.

findsecuritybugs

http://find-sec-bugs.github.io/download.htm

이클립스 플러그인에 저장


+ Recent posts