SlideShare a Scribd company logo
1 of 54
OWASP
Kknock S5 권혁규
목차
• OWASP?
• OWASP!
OWASP?
• “오픈소스 웹 애플리케이션 보안 프로젝트”
10대 웹 애플리케이션의 취약점인
OWASP TOP 10을 발표하기도 한다.
가장 최근 발표는 2013년.
OWASP TOP 10?
OWASP TOP 10
• A1 – 인젝션
• A2 – 인증/세션 관리 취약점
• A3 – XSS
• A4 – 취약한 직접객체 참조
• A5 – 보안 설정 오류
• A6 – 민감 데이터 노출
• A7 – 기능 수준의 접근통제 누락
• A8 – CSRF
• A9 – 알려진 취약점이 있는
컴포넌트 사용
• A10 – 검증되지 않은 리다이렉트
및 포워드
A1 - 인젝션
• Injection :: 주사, 삽입.
• 특정 입력폼에 SQL문을 삽입하여
비정상적인 입력을 하는 것.
A1 - 인젝션
• 인젝션의 목표는 대부분 DB를 건드리는 것이 주.
• SQL 인젝션의 유형
– 일반적인 SQL Injection
– Blind SQL Injection
A1 – 인젝션
• 원래는 다음과같이 쿼리를 날리는 코드.
• 근데, ID에 admin’ -- 라는 입력을 한다면??
• 쿼리는
• select * from members where id='admin' -- AND pass='‘
• 이라고 날아갈 것 이다.
A1 – 인젝션
Dㅔ모
A1 - 인젝션
A1 - 인젝션
• 장님처럼 더듬거리듯이 정보를
알아내는 방법
• 쿼리가 참일 때, 거짓일 때 나오
는 서버의 반응으로 데이터수집
• 많은 비교과정이 필요하므로..
대부분 자동화함
A1 - 인젝션
• Blind SQL Injection에서 필요한 함수들..
• SubStr  문자열 자르기…
SubStr(“문자열”,시작 인덱스, 개수)
• Ascii  아스키코드로 변환해줌…
ascii(문자)
A1 - 인젝션
• 특정 DB명을 알아내고싶다!!
• Information_schema DB에 있는 SCHEMATA
테이블에는 존재하는 모든 DB 이름이 존재한다.
• 여기서, SCHEMA_NAME 컬럼에 있는 모든 값들
을 가져온 후 특정 DB명을 알아내면 됨.
A1 – 인젝션
• 특정 DB명을 알았다. 테이블명도 알아보자.
• Information_schema DB에 있는
TABLE_CONSTRAINTS 테이블에는 DB명에 맞는
테이블명이 존재한다.
A1 - 인젝션
• 우선 SCHEMA_NAME부터 가져와보자.
• 다음과 같은 쿼리를 날리면, information_schema가 뜬다
– select schema_name from information_schema.SCHEMATA limit 0,1
A1 - 인젝션
• 가져온 값은 information_schema 이다.
이 값을 한방에 바로 맞추면 최소 독심술사;
• 여기서 substr을 이용해 앞에 하나를 잘라준다.
select substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1);
• 이러면 “i”가 나온다.
• 근데 i는 숫자가 아님.숫자로 바꿔주자.
A1 - 인젝션
• 문자를 숫자로 표현할 땐 대표적으로 ascii코드를 쓴다.
• 그래서 ascii 함수를 씀.
select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1))
• 그럼 다음과 같이 i가 숫자인 105로 나오는데,
• 이걸 105인줄 모르는 상태에서 맞추려면 술게임인 업다운을 해야함
A1 - 인젝션
• 우선 대부분 문자는 65 ~ 122까지 A-z임.
• 97부터 소문자 a가 시작되므로 97부터
시도해 보는 게 좋음.
• select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) => 쿼리 결과값
• 쿼리 결과값 > 97 => True
• 쿼리 결과값 > 110 => False
• 쿼리 결과값 > 104 => False
• 쿼리 결과값 > 107 => False
• 쿼리 결과값 > 106 => False
• 쿼리 결과값 = 105 => True
┐
<┘
┐계속 반씩 나눠서 계
<┘산해줌.
┐
<┘
A1 - 인젝션
• 그럼 이제 information_schema.SCHEMATA에
있는 첫번째 테이블의 첫번째 값의 첫번째 알파
벳을 알아낼 수 있음. 굳
A1 - 인젝션
• 그럼 이제 이걸 코드를 짜보면,
admin' and (select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) > ???);
• 가 된다. 이걸 로그인 창의 ID에 치면 된다.
A1 - 인젝션
• 이런 식으로 하나하나씩 맞춰가면
information_schema를 알 수 있고, 좀 더하면
• 전체를 알 수 있다.
• 근데 수동으로 하기엔 고행급이라 자동화해서함.
A1 – 인젝션
데M
ㅗ
A1 - 인젝션
A1 - 인젝션
<세상이 혼란하면 커지는 혼세마왕>
A1 - 인젝션
• Php.ini 파일의 magic_quotes_gpc 옵션을 On으로 변경해준다.
• “ ’<>=,() ”등과 같은 특수문자 사용을 막는다.
• 등등…
• 근데 사실 완벽한 보안은 없어서 무조건 뚫린다.
A2 – 인증 및 세션관리 취약점
세션
하이재킹
(납치)
A2 – 인증 및 세션관리 취약점
• 세션은 다음과같이 생겼다.
A2 – 인증 및 세션관리 취약점
• 세션 :: 각 클라이언트마다 고유값을 주고,
그 값으로 클라이언트들을 구분함.
• 그 값이 PHP에선 바로 PHPSESSID
A2 – 인증 및 세션관리 취약점
• 이 세션중, 관리자의 세션을 뺏어온 이후
그 세션으로 인증을 한다면?
=> 관리자가 되어 뭐든지 할 수 있다.
A2 – 인증 및 세션관리 취약점
• XSS를 통하여 세션을 얻은 후, 그 세션을
저장하는 스크립트를 작성한다.
• down.php ->
A2 – 인증 및 세션관리 취약점
• 그럼 이제 sess.txt 파일을 받으면 세션 정
보가 들어있을 것이다.
• 쿠키는 클라이언트에 저장 되어있는 것 이
므로 클라이언트가 수정할 수 있다.
• 따라서 자신의 세션을 관리자 세션으로 변
경하면 끝.
A2 – 인증 및 세션관리 취약점
데MO
A2 – 인증 및 세션관리 취약점
<세상이 혼란하면 커지는 혼세마왕>
A2 – 인증 및 세션관리 취약점
• 매 페이지마다 세션을 바꿔준다.
• 타임아웃 기능을 넣어서 아무것도 안하는 사용
자는 일정 시간이 지나면 로그아웃 되게끔.
• 일정 회수 이상 인증 실패시 사용자 잠금.
A3 – XSS
• Cross-Site Script 라서
CSS이어야 하는데
CSS는 이미 있는 단어라
XSS가 됨..
• 글 내용과 같이 입력한 뒤 볼 수 있는 곳에 쓰며,
내용을 볼 때 스크립트를 작동 시키게 함.
A3 - XSS
• 대부분 경고 창을 띄우게 하여 XSS 가능여
부를 확인함.
<script>alert(‘XSS’)</script>
• 필터링이 되있다면 한번 꼬아도 된다.
<sc<script>ript>alert(‘XSS’)</sc<script>ript>
A3 - XSS
<script>alert(document.cookie)</script>
A3 - XSS
DE모
A3 – XSS
<세상이 혼란하면 커지는 혼세마왕>
A3 - XSS
• Htmlspecialchars와 같은 함수를 써서 막는다.
• 특수문자나, 스크립트 명령어들을 작성이 될 때
막는다.
A4 – 취약한 직접객체 참조
• 이전에 있던 Editor에서 글 수정을 할 경우
타인의 글도 수정할 수 있던 현상 같은 것.
• 참조를 할 때, 참조의 주소를 꼬아놓는 것
• 등등과 같은 참조와 관련한 문제를 이용.
A4 – 취약한 직접객체 참조
• 세션을 통하여 매 페이지마다 세션검증을
하도록 함.
• 인가되지 않은 파일이 다운로드 되지 않도
록 막는다.
A5 – 보안 설정 오류
• 대부분 Php.ini에서 문제가 발생됨.
• 3가지만 해놓아도 절반이상은 막는다.
• Register_globals = Off
• magic_quotes_gpc = On
• allow_url_fopen = Off
A5 – 보안 설정 오류
• Register_globals = Off
• 저걸 안하면 변수가 SESSION인지, GET인
지, POST인지가 필요하지 않음.
• 따라서 $_SESSION[‘chmod’]=0 인데 URL
뒤에 ?chmod=1을 넣는다면 권한상승.
A5 – 보안 설정 오류
• magic_quotes_gpc = On
• Sql injection이나, 혹은 싱글쿼터(‘)나 더블
쿼터(“)가 들어가는 공격을 막아준다.
• ‘ -> ’
• “ -> ”
A5 – 보안 설정 오류
• allow_url_fopen = Off
• Fopen과 같은 파일 관련 함수에서 URL로
파일을 읽어오는 것이 불가능해짐.
A6 – 민감 데이터 노출
• 비밀번호와 같은 민감한 데이터들이 노출
될 것을 우려하여, 암호화를 하는 등의 일.
• SSL과 같은 암호화에 대한 내용들임.
• 혁보드는 현재 비밀번호를 MD5라는 해쉬
방법을 사용하여 저장한다.
A7 – 기능 수준의 접근통제 누락
일반 사용자는
http://203.249.25.64:8080/test/phpinfo.php
이런걸 못보게 해야한다.
혹은 관리자페이지와 같은것들..
A8 - CSRF
• 사이트가 신뢰하는 사용자를 통해 공격자
가 원하는 명령을 사이트로 전송함.
• 가령 editor.php?title=“저는 바보입니다 ㅋ
ㅋ”&contents=“이거 리얼임” ….
• 등으로 되어있는 링크를 클릭하면 저런
내용의 글이 작성될 것임..
A9 – 알려진 취약점이 있는 컴포넌트 사용
A9 – 알려진 취약점이 있는 컴포넌트 사용
• 컴포넌트를 사용하되, 보안패치가 나오면
꼭 주기적으로 해준다.
• http://203.249.25.64:8080/index.php
• 에서는 현재 그누보드 5버전을 사용중…
A10 – 검증되지 않은 리다이렉트 및 포워드
• 가장 쉬운 방법은 리다이렉트 혹은 포워드
를 사용하지 않는 것이다.
• 서버 관리자보단, 유저들이 조심해야
하는 부분..
QnA
질의응답
질문과답변
감사합니다

More Related Content

Viewers also liked

Why javaScript?
Why javaScript?Why javaScript?
Why javaScript?Kim Hunmin
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupJude Kim
 
BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3Chan Lee
 
미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) 미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) seung-hyun Park
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web PerformanceJonathan Jeon
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조seung-hyun Park
 
Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축선진 장
 
OWASP TOP 10 - 2013 (정다운)
OWASP TOP 10 - 2013 (정다운)OWASP TOP 10 - 2013 (정다운)
OWASP TOP 10 - 2013 (정다운)다운 정
 
(130105) #fitalk trends in d forensics (dec, 2012)
(130105) #fitalk   trends in d forensics (dec, 2012)(130105) #fitalk   trends in d forensics (dec, 2012)
(130105) #fitalk trends in d forensics (dec, 2012)INSIGHT FORENSIC
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayseung-hyun Park
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차희동 강
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5NAVER D2
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차희동 강
 

Viewers also liked (20)

Why javaScript?
Why javaScript?Why javaScript?
Why javaScript?
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3BeLAUNCH2014 x HACKATHON week 3
BeLAUNCH2014 x HACKATHON week 3
 
미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor ) 미티어 리엑티비티 ( reactivity of meteor )
미티어 리엑티비티 ( reactivity of meteor )
 
Javascript and Web Performance
Javascript and Web PerformanceJavascript and Web Performance
Javascript and Web Performance
 
3. collection
3. collection3. collection
3. collection
 
1. 미티어의 폴더구조
1. 미티어의 폴더구조1. 미티어의 폴더구조
1. 미티어의 폴더구조
 
Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축Google Apps를 활용한 Smart Work 구축
Google Apps를 활용한 Smart Work 구축
 
5.router
5.router5.router
5.router
 
6.accounts
6.accounts6.accounts
6.accounts
 
OWASP TOP 10 - 2013 (정다운)
OWASP TOP 10 - 2013 (정다운)OWASP TOP 10 - 2013 (정다운)
OWASP TOP 10 - 2013 (정다운)
 
Korean Word Network
Korean Word NetworkKorean Word Network
Korean Word Network
 
(130105) #fitalk trends in d forensics (dec, 2012)
(130105) #fitalk   trends in d forensics (dec, 2012)(130105) #fitalk   trends in d forensics (dec, 2012)
(130105) #fitalk trends in d forensics (dec, 2012)
 
Db활용가이드
Db활용가이드Db활용가이드
Db활용가이드
 
Sdn and Security
Sdn and SecuritySdn and Security
Sdn and Security
 
Meteor Korea DEV School 1st day
Meteor Korea DEV School 1st dayMeteor Korea DEV School 1st day
Meteor Korea DEV School 1st day
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
4. publish / subscribe
4. publish / subscribe4. publish / subscribe
4. publish / subscribe
 
142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5142 리눅스와 모바일 day1-track4_2_v1.5
142 리눅스와 모바일 day1-track4_2_v1.5
 
효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차효율적인Sql작성방법 2주차
효율적인Sql작성방법 2주차
 

Similar to Owasp에 대하여

무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례Taehyun Kim
 
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017Amazon Web Services Korea
 
암호화 기초
암호화 기초암호화 기초
암호화 기초학섭 오
 
Mysql insert-speed-150830063629-lva1-app6891
Mysql insert-speed-150830063629-lva1-app6891Mysql insert-speed-150830063629-lva1-app6891
Mysql insert-speed-150830063629-lva1-app6891Jungsu Heo
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
Spring Security
Spring SecuritySpring Security
Spring SecurityDataUs
 
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018Amazon Web Services Korea
 
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...Amazon Web Services Korea
 
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육NAVER D2 STARTUP FACTORY
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기NAVER D2
 
AWS inspector_이해
AWS inspector_이해AWS inspector_이해
AWS inspector_이해ASome Cloud
 
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017Amazon Web Services Korea
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트Amazon Web Services Korea
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Platform
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집Amazon Web Services Korea
 

Similar to Owasp에 대하여 (20)

OWASP TOP 10 in 2007
OWASP TOP 10 in 2007OWASP TOP 10 in 2007
OWASP TOP 10 in 2007
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
컴플라이언스를 위한 고급 AWS 보안 구성 방법-AWS Summit Seoul 2017
 
암호화 기초
암호화 기초암호화 기초
암호화 기초
 
Mysql insert-speed-150830063629-lva1-app6891
Mysql insert-speed-150830063629-lva1-app6891Mysql insert-speed-150830063629-lva1-app6891
Mysql insert-speed-150830063629-lva1-app6891
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
 
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...
AWS Fault Injection Simulator를 통한 실전 카오스 엔지니어링 - 윤석찬 AWS 수석 테크에반젤리스트 / 김신 SW엔...
 
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
[네이버D2SF] 안전한 서비스 운영을 위한 Ncloud 보안교육
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기
[D2 campus seminar]개발자가 꼭 알아야 할 보안이야기
 
AWS inspector_이해
AWS inspector_이해AWS inspector_이해
AWS inspector_이해
 
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017
클라우드 보안 이슈 및 원격 관제 기반 대응 방안 - AWS Summit Seoul 2017
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트
[Gaming on AWS] 클라우드에 대한 오해들 - 한빛소프트
 
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBootClova Extension API 서버 개발 튜토리얼 with SpringBoot
Clova Extension API 서버 개발 튜토리얼 with SpringBoot
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
Amazed by aws 2nd session
Amazed by aws 2nd sessionAmazed by aws 2nd session
Amazed by aws 2nd session
 
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
보안 사고 예방을 위한 주요 AWS 모범 사례 – 신은수, AWS 보안 담당 솔루션즈 아키텍트:: AWS 온라인 이벤트 – 클라우드 보안 특집
 

Owasp에 대하여

  • 3. OWASP? • “오픈소스 웹 애플리케이션 보안 프로젝트” 10대 웹 애플리케이션의 취약점인 OWASP TOP 10을 발표하기도 한다. 가장 최근 발표는 2013년.
  • 5. OWASP TOP 10 • A1 – 인젝션 • A2 – 인증/세션 관리 취약점 • A3 – XSS • A4 – 취약한 직접객체 참조 • A5 – 보안 설정 오류 • A6 – 민감 데이터 노출 • A7 – 기능 수준의 접근통제 누락 • A8 – CSRF • A9 – 알려진 취약점이 있는 컴포넌트 사용 • A10 – 검증되지 않은 리다이렉트 및 포워드
  • 6. A1 - 인젝션 • Injection :: 주사, 삽입. • 특정 입력폼에 SQL문을 삽입하여 비정상적인 입력을 하는 것.
  • 7. A1 - 인젝션 • 인젝션의 목표는 대부분 DB를 건드리는 것이 주. • SQL 인젝션의 유형 – 일반적인 SQL Injection – Blind SQL Injection
  • 8. A1 – 인젝션 • 원래는 다음과같이 쿼리를 날리는 코드. • 근데, ID에 admin’ -- 라는 입력을 한다면?? • 쿼리는 • select * from members where id='admin' -- AND pass='‘ • 이라고 날아갈 것 이다.
  • 11. A1 - 인젝션 • 장님처럼 더듬거리듯이 정보를 알아내는 방법 • 쿼리가 참일 때, 거짓일 때 나오 는 서버의 반응으로 데이터수집 • 많은 비교과정이 필요하므로.. 대부분 자동화함
  • 12. A1 - 인젝션 • Blind SQL Injection에서 필요한 함수들.. • SubStr  문자열 자르기… SubStr(“문자열”,시작 인덱스, 개수) • Ascii  아스키코드로 변환해줌… ascii(문자)
  • 13. A1 - 인젝션 • 특정 DB명을 알아내고싶다!! • Information_schema DB에 있는 SCHEMATA 테이블에는 존재하는 모든 DB 이름이 존재한다. • 여기서, SCHEMA_NAME 컬럼에 있는 모든 값들 을 가져온 후 특정 DB명을 알아내면 됨.
  • 14. A1 – 인젝션 • 특정 DB명을 알았다. 테이블명도 알아보자. • Information_schema DB에 있는 TABLE_CONSTRAINTS 테이블에는 DB명에 맞는 테이블명이 존재한다.
  • 15. A1 - 인젝션 • 우선 SCHEMA_NAME부터 가져와보자. • 다음과 같은 쿼리를 날리면, information_schema가 뜬다 – select schema_name from information_schema.SCHEMATA limit 0,1
  • 16. A1 - 인젝션 • 가져온 값은 information_schema 이다. 이 값을 한방에 바로 맞추면 최소 독심술사; • 여기서 substr을 이용해 앞에 하나를 잘라준다. select substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1); • 이러면 “i”가 나온다. • 근데 i는 숫자가 아님.숫자로 바꿔주자.
  • 17. A1 - 인젝션 • 문자를 숫자로 표현할 땐 대표적으로 ascii코드를 쓴다. • 그래서 ascii 함수를 씀. select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) • 그럼 다음과 같이 i가 숫자인 105로 나오는데, • 이걸 105인줄 모르는 상태에서 맞추려면 술게임인 업다운을 해야함
  • 18. A1 - 인젝션 • 우선 대부분 문자는 65 ~ 122까지 A-z임. • 97부터 소문자 a가 시작되므로 97부터 시도해 보는 게 좋음. • select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) => 쿼리 결과값 • 쿼리 결과값 > 97 => True • 쿼리 결과값 > 110 => False • 쿼리 결과값 > 104 => False • 쿼리 결과값 > 107 => False • 쿼리 결과값 > 106 => False • 쿼리 결과값 = 105 => True ┐ <┘ ┐계속 반씩 나눠서 계 <┘산해줌. ┐ <┘
  • 19. A1 - 인젝션 • 그럼 이제 information_schema.SCHEMATA에 있는 첫번째 테이블의 첫번째 값의 첫번째 알파 벳을 알아낼 수 있음. 굳
  • 20. A1 - 인젝션 • 그럼 이제 이걸 코드를 짜보면, admin' and (select ascii(substr((select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1),1,1)) > ???); • 가 된다. 이걸 로그인 창의 ID에 치면 된다.
  • 21. A1 - 인젝션 • 이런 식으로 하나하나씩 맞춰가면 information_schema를 알 수 있고, 좀 더하면 • 전체를 알 수 있다. • 근데 수동으로 하기엔 고행급이라 자동화해서함.
  • 24. A1 - 인젝션 <세상이 혼란하면 커지는 혼세마왕>
  • 25. A1 - 인젝션 • Php.ini 파일의 magic_quotes_gpc 옵션을 On으로 변경해준다. • “ ’<>=,() ”등과 같은 특수문자 사용을 막는다. • 등등… • 근데 사실 완벽한 보안은 없어서 무조건 뚫린다.
  • 26. A2 – 인증 및 세션관리 취약점 세션 하이재킹 (납치)
  • 27. A2 – 인증 및 세션관리 취약점 • 세션은 다음과같이 생겼다.
  • 28. A2 – 인증 및 세션관리 취약점 • 세션 :: 각 클라이언트마다 고유값을 주고, 그 값으로 클라이언트들을 구분함. • 그 값이 PHP에선 바로 PHPSESSID
  • 29. A2 – 인증 및 세션관리 취약점 • 이 세션중, 관리자의 세션을 뺏어온 이후 그 세션으로 인증을 한다면? => 관리자가 되어 뭐든지 할 수 있다.
  • 30. A2 – 인증 및 세션관리 취약점 • XSS를 통하여 세션을 얻은 후, 그 세션을 저장하는 스크립트를 작성한다. • down.php ->
  • 31. A2 – 인증 및 세션관리 취약점 • 그럼 이제 sess.txt 파일을 받으면 세션 정 보가 들어있을 것이다. • 쿠키는 클라이언트에 저장 되어있는 것 이 므로 클라이언트가 수정할 수 있다. • 따라서 자신의 세션을 관리자 세션으로 변 경하면 끝.
  • 32. A2 – 인증 및 세션관리 취약점 데MO
  • 33. A2 – 인증 및 세션관리 취약점 <세상이 혼란하면 커지는 혼세마왕>
  • 34. A2 – 인증 및 세션관리 취약점 • 매 페이지마다 세션을 바꿔준다. • 타임아웃 기능을 넣어서 아무것도 안하는 사용 자는 일정 시간이 지나면 로그아웃 되게끔. • 일정 회수 이상 인증 실패시 사용자 잠금.
  • 35. A3 – XSS • Cross-Site Script 라서 CSS이어야 하는데 CSS는 이미 있는 단어라 XSS가 됨.. • 글 내용과 같이 입력한 뒤 볼 수 있는 곳에 쓰며, 내용을 볼 때 스크립트를 작동 시키게 함.
  • 36. A3 - XSS • 대부분 경고 창을 띄우게 하여 XSS 가능여 부를 확인함. <script>alert(‘XSS’)</script> • 필터링이 되있다면 한번 꼬아도 된다. <sc<script>ript>alert(‘XSS’)</sc<script>ript>
  • 39. A3 – XSS <세상이 혼란하면 커지는 혼세마왕>
  • 40. A3 - XSS • Htmlspecialchars와 같은 함수를 써서 막는다. • 특수문자나, 스크립트 명령어들을 작성이 될 때 막는다.
  • 41. A4 – 취약한 직접객체 참조 • 이전에 있던 Editor에서 글 수정을 할 경우 타인의 글도 수정할 수 있던 현상 같은 것. • 참조를 할 때, 참조의 주소를 꼬아놓는 것 • 등등과 같은 참조와 관련한 문제를 이용.
  • 42. A4 – 취약한 직접객체 참조 • 세션을 통하여 매 페이지마다 세션검증을 하도록 함. • 인가되지 않은 파일이 다운로드 되지 않도 록 막는다.
  • 43. A5 – 보안 설정 오류 • 대부분 Php.ini에서 문제가 발생됨. • 3가지만 해놓아도 절반이상은 막는다. • Register_globals = Off • magic_quotes_gpc = On • allow_url_fopen = Off
  • 44. A5 – 보안 설정 오류 • Register_globals = Off • 저걸 안하면 변수가 SESSION인지, GET인 지, POST인지가 필요하지 않음. • 따라서 $_SESSION[‘chmod’]=0 인데 URL 뒤에 ?chmod=1을 넣는다면 권한상승.
  • 45. A5 – 보안 설정 오류 • magic_quotes_gpc = On • Sql injection이나, 혹은 싱글쿼터(‘)나 더블 쿼터(“)가 들어가는 공격을 막아준다. • ‘ -> ’ • “ -> ”
  • 46. A5 – 보안 설정 오류 • allow_url_fopen = Off • Fopen과 같은 파일 관련 함수에서 URL로 파일을 읽어오는 것이 불가능해짐.
  • 47. A6 – 민감 데이터 노출 • 비밀번호와 같은 민감한 데이터들이 노출 될 것을 우려하여, 암호화를 하는 등의 일. • SSL과 같은 암호화에 대한 내용들임. • 혁보드는 현재 비밀번호를 MD5라는 해쉬 방법을 사용하여 저장한다.
  • 48. A7 – 기능 수준의 접근통제 누락 일반 사용자는 http://203.249.25.64:8080/test/phpinfo.php 이런걸 못보게 해야한다. 혹은 관리자페이지와 같은것들..
  • 49. A8 - CSRF • 사이트가 신뢰하는 사용자를 통해 공격자 가 원하는 명령을 사이트로 전송함. • 가령 editor.php?title=“저는 바보입니다 ㅋ ㅋ”&contents=“이거 리얼임” …. • 등으로 되어있는 링크를 클릭하면 저런 내용의 글이 작성될 것임..
  • 50. A9 – 알려진 취약점이 있는 컴포넌트 사용
  • 51. A9 – 알려진 취약점이 있는 컴포넌트 사용 • 컴포넌트를 사용하되, 보안패치가 나오면 꼭 주기적으로 해준다. • http://203.249.25.64:8080/index.php • 에서는 현재 그누보드 5버전을 사용중…
  • 52. A10 – 검증되지 않은 리다이렉트 및 포워드 • 가장 쉬운 방법은 리다이렉트 혹은 포워드 를 사용하지 않는 것이다. • 서버 관리자보단, 유저들이 조심해야 하는 부분..