본문 바로가기
IT/보안

[시큐어코딩]교육 총 정리

by 말도 2016. 12. 14.
728x90
반응형
1일차
0) 교육 진행 : kisa인줄 알았는데 kisia(한국정보보호산업협회)라고함. 업체 선정해서 진행함
1) 첫날 위치 찾기가 어려워서 해매다가 늦음, 이야기 들어보니 별거 없었다고함, 
2) 첫날에는 보안약점(cwe),취약점(cve)에 대해서 알려주고 보안사고 사례에 대해서 이야기 해줌
3) 갑자기 강사가 보안위협 모델링 이야기하면서 꽂혀서 시간 훅지나감, 
 -> 보안에 대해서 어떻게 고칠것인지, 우선순위에 꽂혀서 겁나 말함
4) 오후부터 실습 시작
5) PUT method를 이용해서 파일 업로드 
 - 서버 설정에서 바꿀 수 있지만, web.xml로 변경하는거 알랴줌
6) webgoat command injection 하는거 알려줌 : 개인적으로 이거 어떤식으로 진행할까 했는데, webgoat 사용해서 실망함. vitim에 녹일라고 했음..ㅎㅎ
7) XSS 공격 막기
 - html 치환 하기 : testutil.java
 - 정규식 만들기 :
패턴매칭 -> 대문자 나옴 -> 대소문자 구분하는 정규식 -> script 뒤에 공백 있으면 또 먹힘 

 

2일차
1) 어제 XSS 공격 한거 다시하기 : 
근데 정규식을 구지 만들어서 필터링 하지말자. 왜? 이미 너보다 많은 더 좋은 정규식을 만드는 사람이 많고
만들어 진것도 많음. 굳이 만들었다가 x되지 말자

코드 짜고 잘 매칭 되는지 확인

2) 인증우회 sql injection에 대해서 설명 : 공격 시나리오에 대해서 설명
강제로 참을 만들려고 하였으나, 쿼리문에서 limit 를 걸지 않는 한 인증우회가 성립이 되면 쿼리문이 2개가 나오기 때문에 
returned too many results 500 error 나오는거 확인

admin 계정이 있기때문에 admin을 이용해서 passwd만 참을 만들려고 하였으나, passwd 컬럼이 이미 참이기 때문에 안되는거 확인

그래서 주석문을이용하여 아이디 뒤에 주석처리 하는거 알려줌

error base sql injection, blind sql injection에 대해서도 알려줌 -> 개념 알려주고 판골린으로 돌리는거 보여줌

일어나는 이유? 
동적쿼리 : 명령어가 나중에 만들어지는 구조를 가지고 있음. sql injection에 취약
정적쿼리 : 명령어가 먼저 들어가고 자료형에 따라서 다르기 때문에 injection에 취약 하지 않음
-> 질문 : 새로운 취약성?? 나와바야 암
예전에 안하는 이유 : 코드가 다소 길어지고 가독이 힘듬,
지금은 필수적으로 해야함 - 중요도가 높음

직접해보니 똥빠지더라

3) 쿠키에 대한 설명 해줌. 나랑 비슷하게 하더라. ssh는 statefull 방식, http는 statless 방식
인증시 webgoat 처럼 로그인 http 기본인증에 대한설명
그리고 form기반에 대한 인증 설명

4) XSS filter를 적용해서 입력값에 대한 검증하기
안전하지 않은 값에 대한 차단 정책만 넣었을 때 리스크가 크다.
그러니 출력값도 막자

** controller에서 출력값에 대한 새니타이즈 -> XSSfilter를 적용하여 안전하게 출력하도록  lucy-xss filter 라이브러리 사용하기
C:\SecureCoding\Download\lucy-xss에서
jar파일은 webContent -> WEB-INF -> lib에 넣고
xml파일은 src에 넣는다

testcontroller.java 316 line
        XssFilter filter=XssFilter.getInstance("lucy-xss-superset.xml");
        buffer.append(filter.doFilter(data));

5) 출력값 막기
입력이 되어도 브라우저에서 실행이 안되면 장땡아닌가?
view.jsp code에 html인코딩을 걸어서 모든 태그요소에 대한 무력화 실행


6) CSRF : 글 읽으면 자동 글 작성 되게끔 하는 코드 테스트, 멀티파트 설명


3일차
1) CSRF 시큐어코딩
post 로 넘어가는 세션마다 토큰을 만드는작업 -> random uuid 적용 : 각각의 폼에 UUID를 달아서 이게 맞는지 안맞는지 적용한다
로그인폼도 post로 넘어가는거라서 로그인이 안되니 반복작업
난 그냥 안함..

2) 파일 업로드
확장자, content-type,mime-type으로 막는 방법이 있는데 쉽지 않고, 뚫릴 가능성이 더 많음.
파일 업로드 취약점은 가장 우선순위를 높혀서 막아야 할 공격이다.

3) 파일 다운로드 권한
업로드된 파일에 대한 접근제어도 이루어져야 한다.
 > 로그인한 사용자, 게시물을 읽은 사용자만 파일 접근이 가능 : 다이렉트로 업로드된 파일에 대한 접근제어
 > 디렉토리에 대한 생성 퍼미션을 제어하여 실행권한을 주지 않음
 > 파일 저장시 real name으로 저장되지 않게 하기 
 - 파일 불러오기 잘 안되니 연결시켜주는거 해야됨
 > 로그인된 사람들만 접근 허용하게 하기
 > 가능하다면 올린사람만 접근 제어 하기

4) 잘못된 기능 접근제어
 > webgoat으로 권한이 없는데 다른 계정 view, 혹은 삭제 실습
 > 비밀번호 바꾸는것 코드 변경
 - 권한이 있는지 없는지에 대해서 소스코딩한거 같음

5) 안전하지 않는 리다이렉트와 포워드
 > 피싱성 공격성에 취약하니 주의? 실습했나
 > 공격 사례만 말해준듯...

6) http 응답 분할
 > iis상에 취약점인데 패치되어있어 실습 못함
 > 마지막 개행을 reqeust / response 분류하는 개행을 삭제

7) 정수 오버 플로우
메모리 관련된 것인데 C,C++ 같이 메모리 관리를 프로그래머가 관리할 때 많이 취약
jvm의 경우메모리는 java에서 해주기 취약점 없다

8) 중요 정보 노출
인증서 쓰는 방법도 있지만 중요 정보만 감추게끔 hash방법이나 이런거 함
> hash값 쓰기 -> crack 써서 복호화 하기
> SALT 값 static하게 써서 암호화 하기 : 값 끝에 hash값 고정하여 붙이기
> hash값은 복호화가 가능할 수 있으니 AES 암/복호화 하기

9) 소스단에서 취약점 찾기 이클립스 findbugs 사용

10) null point 역참조는 안함

PS. 사이트 어디간거니...ㅠㅠ


반응형

'IT > 보안' 카테고리의 다른 글

[CVE-2016-5195]Explaining Dirty COW local root exploit  (2) 2016.12.14