실습교육참고: https://goo.gl/nhjiSD

설문지링크: https://goo.gl/GrNiVM


1. SecureCoding.zip 파일을 c:\ 에 압축해제한다.


2. Window_XP_client.zip 파일을 c:\VM\ 에 압축해제 (C:\VM 디렉토리 생성후)


3. cmd 실행
c:\> netstat -ano 
3306(MySQL), 8080(Tomcat) 포트가 오픈되어 있는지 확인한다.
만약 2개의 포트가 사용중이면, 해당 프로세스를 종료한다.

taskkill /pid 1234   <-- 1234는 프로세스 ID 이며, 

                               netstat 실행결과의 마지막 컬럼에 표시된다.

 
5. VMWarePlayer  또는 VMWare Workstation 이 설치되어 있는지 확인한 뒤, 없으면 VMware-player-x.x.x-xxxxx.exe를 실행하여 설치한다.


== 웹 서버 실행하기 == 


6. c:\SecureCoding 폴더로 이동하여 start_lab.bat 파일을 실행한다.

 -> 실행하게 되면 먼저 MySQL DB가 실행되며, 포트를 허용하겠는가 하는 알림창이 뜨면, 허용한다. 다음 이클립스가 구동되며 이때도 java 실행을 허용하겠는가 알림창이 뜨면 허용한다.


7. 이클립스 왼쪽 workspace에 있는 openeg 프로젝트를 선택하고, 오른클릭

Run As > Run on Server를 선택하여 서버를 실행한다.


8. 이클립스 왼쪽 workspace에 있는 WebGoat프로젝트를 선택하고, 오른클릭 Run As > Run on Server를 선택하여 서버를 실행한다.

로그인 알림창이 뜨면    아이디: guest    패스워드: guest  를 입력하여 시스템에 접속한다.


  

== 클라이언트 실행하기 == 

 

9,  바탕화면에 설치된 VMWare Workstation Player를 실행한다.


10. Open Virtual Machine 버튼을 클릭한다.


11. 탐색기에서 Window_XP_Client 압축이 해제된 디렉토리에서 window_professional.vmx 파일을 선택한다.


12. 가상머신이 로드되면 [ Start Virtual Machine ] 을 클릭하여 시작한다.

window 구동이 완료되면, Administration 계정의 비밀번호 "client00"을 입력하여 로그인 한다.



== 클라이언트에서 서버 접속하기 == 


13. 가사머신의 바탕화면에 있는 Paros를 실행한다.

Paros는 Local Proxy 서버로 사용되며,  IP: 127.0.0.1   PortNO: 8082 로 설정되어 있다. <-- Paros의 옵션메뉴에서 확인 한다.


14. 브라우저(explorer)를 실행한다.

브라우저에 프록시를 경유해서 서버에 연결되도록 설정한다.

설정> 고급 > 연결 > LAN설정 에서 Proxy서버 설정을 IP: 127.0.0.1   PortNO: 8082 로 설정한다.


15. 이미 구동되어 있는 서버 http://192.168.xxx.xxx:8080/openeg/ 로 연결해 본다.  <-- 정상적으로 프록시서버가 연결되어 있으면 프록시의 History탭에 오고가는 메시지를 확인할 수 있다.







실습교육참고: https://goo.gl/nhjiSD

설문지링크: https://goo.gl/GrNiVM

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

마이크로소프트사는 SDL(Secure Develop Lifecycle) 통한 소프트웨어 개발 프로세스를 개선함으로써 시스템 취약점을 획기적으로 줄일 수 있었음




Pre-SDL 단계


소프트웨어 개발팀의 구성원들이 보안의 기초와 최신 보안 동향에 대한 정보를 매년 1회 교육을 받을 수 있도록 한다.  보안 교육은  다음 내용을 포함한다.

   - 시큐어 설계

   - 위협모델링

   - 시큐어 코딩

   - 보안 테스팅

   - 프라이버시


요구사항 단계


신뢰성 있는 소프트웨어를 구축하기 위한 기본 보안 요구사항과 프라이버시 요구사항을 정의한다.  필수항목으로는

   - SDL 방법론 적용 여부 결정

   - 보안책임자(Security Advisor) 선정

   - 보안 팀(Security Champion) 선정

   - 버그 리포팅 도구 정의

   - 보안 버그 경계 (security bug bar) 정의

   - 보안 위험 평가

   - 보안 계획서 작성

   - 버그 추적 시스템 정의  


설계 단계


구현에서부터 배포에 이르는 동안 수행해야 하는 작업 계획을 수립하는 단계이다.

 

   - 보안 설계 검토

   - 방화벽 정책 준수

   - 위협 모델링

   - 위협 모델 품질 보증

   - 위협모델 검토 및 승인

   - “보안 설계서” 문서 작성

   - 보안 디폴트 인스톨 실행

   - 모든 샘플소스코드의 보안검토 수행,

   - 안전하지 않은 함수와 코딩 패턴 알림

   - 설계변화요구에 관한 보안관련 사항 문서화

   - 위협모델을 통해 찾아진 취약성을 위한 작업 목록 작성


공격표면(attack surface) 계획수립 :  공격표면이라는 개념적으로 정보 및 금융자산, 지적 재산, 또는 비즈니스 수행 역량에 존재하는 잠재적 공격 지점을 확인하는 과정을 의미한다. 위협 모델링에서 공격 표면 관리는 일종의 네트워크, 애플리케이션, 시스템등 공격자들이 데이터나 정보를 수집하는 지점을 확인하고 공격을 예방하는 것



구현 단계


보안 및 프라이버시 문제점을 발견하고 제거하기 위해 개발 best practice를 수립하고 따르도록 한다.

   - 최신버전의 빌드 도구 사용

   - 금지된 API 사용 회피

   - ‘Execute' 허가를 통한 SQL 안전하게 사용

   - 저장된 프로시저에서 SQL 사용

   - 안전하게 소프트웨어를 사용하기 위해 필요한 사용자 정보 식별

   - 사용자 중심의 보안 문서 계획

   - 보안 형상관리에 관한 정보 생성

   - 자동화된 금지 API 변환 실행

   - 프로젝트 팀 전체와 모든 모범사례와 정책에 대해 정의, 문서화, 토론등



검증 단계


코드가 이전 단계에서 설정한 보안과 프라이버시를 지키는지  보안 및 프라이버시 테스팅과 보안 푸쉬(security push), 문서 리뷰를 통해 확인한다. 보안 푸쉬는 팀 전체에 걸쳐 위협 모델 갱신, 코드 리뷰, 테스팅에 초점을 맞춘 작업이다.

   -  커널-모드 드라이버를 위한 테스팅 완료

   -  COM 객체 테스팅 수행

   - 인증된 사이트 크로스 도메인 스크립팅을 위한 테스팅

   - 애플리케이션 검증 테스트 수행

   - 파일 fuzzing 수행

   - 위협모델 검토 및 수정등

    - 보안 테스팅 계획 완료

    - 침투 테스팅 수행

    - 시큐어 코드 검토

    - 보안 푸쉬를 시작하기 전 모든 코드에 대한 우선순위 결정

    - 보안 문서 계획서 검토등


참고: https://www.microsoft.com/en-us/sdl/



[참고] 위협모델링


위협모델링은 자산에 피해를 줄 수 있는 위협위험도

계산하고, 위협을 완화하기 위한 대응 조치를 파악한다.

개발보안 방법론에 따라 분석단계,또는 설계단계에게 수행하도록 권장하고 있다.

요구사항정의서가 도출되고, 설계에 들어가기 중간단계에 수행하는 것이 적절하다.


1단계: 위협 모델링을 수행하기 위한 보안 팀 구성


2단계: 애플리케이션 분해 작업 수행


3단계: 위협도출

             Spooping Identity(신분위장)

             Tampering with data(데이터변조)

             Repudiation(부인)

             Information disclosure(정보유출)

             Denial of Service, Dos(서비스거부)

             Elevation of privilege(권한상승)


4단계: 도출된 위협에 대한 위험도 계산

           Damage potential(예상피해)

             Reproducibility(재현확률)

             Exploitability(공격용이도)

             Affected users(영향을 받는 사용자)

             Discoverability(발견용이성)


5단계: 대응기법선택

           문제점을 무시한다.

             문제점을 사용자에게 알린다.

             문제점을 제거한다.

             문제점을 고친다.


6단계: 대응기술 선택

           도출된 각 위협(STRIDE)을 제거하기 위해

             위협요소별 대응기술을 고려한다.

           S : 적절한인증,Keberos authenticationm, PKI시스템, 전자서명

           T : hash, ACLs, Message Authentication

           R : 전자서명, 감사로그

           I  : privacy-enhanced 프로토콜, 암호화, ACLs

           D : ACLs, 필터링, Throtting, QoS

           E : 최소권한으로 실행, group or role membership, input validation



소프트웨어 개발 보안 방법론을 적용하여 프로젝트를 수행  하는 경우 취약점이 대폭 감소하여 보안패치와 같은 유지보수 비용이 확연하게 감소하였다.



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

이미 운영중인 시스템에 적용하기 적당한 SW개발방법론 CLASP활동중심,

역할 기반의 프로세스로 구성된 집합체다.



개념 관점에서는 각 개발 프로세스를 계획하고 평가하는 단계에서, CLASP 프로세스 컴포넌트들의 상호작용과 취약성 관점을 통해서, 어떻게 역할기반 관점에 적용하는지를 기술한다.

역할기반 관점에서는 프로젝트팀의 각 구성원이 24개의 보안과 관련된 CLASP 활동들에 대해 각 역할을 정의한다.

활동평가 관점에서는 CLASP의 보안관련 활동들에 대해서 타당성을 평가할 수 있도록 도와줌으로써, 프로젝트 매니저와 프로세스 엔지니어링 팀의 부담을 덜어주는 것이다.

활동구현 관점에서는 활동 평가단계에서 선택한 24가지 보안관련 CLASP의 활동들을 수행한다.

취약성 관점에서는 애플리케이션 소스코드에서 보안과 관련된 취약성을 5개의 카테고리(범위 및 타입 에러, 환경 문제, 동기화 및 타이밍 에러, 프로토콜 에러, 일반 논리 에러)로 분류하고 각 카테고리별로 해당하는 취약성에 대해서 취약성의 발견시기, 취약성의 결과, 위험평가, 공격을 위한 자원, 회피와 완화방법, 침투 가능성, 영향 받는 프로그래밍 언어와 운영체제 등을 핵심적으로 설명한다.

참고: https://www.owasp.org/index.php/Category:OWASP_CLASP_Project

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

실무적으로 검증된 방법론 중 하나로 보안 강화 기법(build security in)을 지원하는 Seven-Touchpoint



SDLC 내의 개발 단계와 이와 관련된 7 개의 보안 강화 활동을 정의.

o 코드 검토 (code review)

o 아키텍처 위험 분석 (architectural risk analysis)

o 침투 테스트 (penetration testing)

o 위험기반 보안 테스트 (risk-based security tests)

o 악용 사례 (abuse cases)

o 보안 요구 (security requirement)

o 보안 운영 (security operation)

요구사항과 유즈케이스 단계

오용사례와 위험분석을 통해서 보안요구사항에 대한 정의와 명세를 하고, 오용 사례에 대한 정의 및 케이스 예를 작성한다.

구조설계 단계

공격저항 분석(Attack resistance analysis), 모호성 분석, 허점 분석 등을 통해 위험요소를 분석한다


테스트 계획 단계

공격 패턴, 위험 분석 결과, 악용 사례를 기반으로 위험기반 보안테스트를 수행한다.

코드 단계

구현 오류(implementation bug)에 중점을 두며 특히 소스코드에 존재하는 취약성을 발견할 목적으로 수행되는 코드 정적 분석에 중심을 둔다.

테스트, 테스트 결과 단계

위험 분석 및 침투 테스팅을 수행한다침투 시험을 통해 실제 작동 환경에서의 필드 소프트웨어에 대한 좋은 이해를 제공한다.

현장과의 피드백 단계

보안 운영을 통해 얻은 공격자와 공격 도구에 대한 경험과 지식은 개발자에게 다시 피드백  한다

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

암호화 키 관리

2015.05.25 20:29

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

OWASP Mobile Top 10

2015.05.12 00:55

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PMD Custom Rule

2015.05.11 18:55

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

원본: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html


TIOBE Index for March 2015

March Headline: All time high for F# at position 11

Microsoft's programming language F# is about to sneak into the top 10. It is not clear why F# is gaining popularity. Possible reasons might be the F# web-programming framework WebSharper and the promotional work of the F# Software Foundation as Tomas Petricek (author of "F# Deep Dives") stated in an interview about 2 weeks ago. Another interesting move this month: CoffeeScript enters the top 100 for the first time.

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.

The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found here.

Mar 2015Mar 2014ChangeProgramming LanguageRatingsChange
11C16.642%-0.89%
22Java15.580%-0.83%
33Objective-C6.688%-5.45%
44C++6.636%+0.32%
55C#4.923%-0.65%
66PHP3.997%+0.30%
79changeJavaScript3.629%+1.73%
88Python2.614%+0.59%
910changeVisual Basic .NET2.326%+0.46%
10-changeVisual Basic1.949%+1.95%
1112changeF#1.510%+0.29%
1213changePerl1.332%+0.18%
1315changeDelphi/Object Pascal1.154%+0.27%
1411changeTransact-SQL1.149%-0.33%
1521changePascal1.092%+0.41%
1631changeABAP1.080%+0.70%
1719changePL/SQL1.032%+0.32%
1814changeRuby1.030%+0.06%
1920changeMATLAB0.998%+0.31%
2045changeR0.951%+0.72%


Ratings (%)2002200420062008201020122014051015202530Wednesday, Dec 2, 2009● Java: 17.061%TIOBE Programming Community IndexSource: www.tiobe.com
C
Java
Objective-C
C++
C#
PHP
JavaScript
Python
Visual Basic .NET
Visual Basic

Other programming languages

The complete top 50 of programming languages is listed below. This overview is published unofficially, because it could be the case that we missed a language. If you have the impression there is a programming language lacking, please notify us at tpci@tiobe.com. Please also check the overview of all programming languages that we monitor.

PositionProgramming LanguageRatings
21SAS0.936%
22Logo0.876%
23Swift0.816%
24COBOL0.736%
25ML0.699%
26PostScript0.666%
27OpenEdge ABL0.626%
28Assembly0.620%
29Fortran0.607%
30ActionScript0.546%
31D0.504%
32Lisp0.501%
33Scratch0.472%
34Ada0.468%
35Scala0.456%
36Groovy0.413%
37Lua0.409%
38C shell0.402%
39Prolog0.377%
40Max/MSP0.355%
41Scheme0.324%
42RPG (OS/400)0.314%
43Awk0.298%
44PL/I0.283%
45Inform0.272%
46VBScript0.270%
47Go0.261%
48Z shell0.231%
49(Visual) FoxPro0.230%
50LabVIEW0.227%

The Next 50 Programming Languages

The following list of languages denotes #51 to #100. Since the differences are relatively small, the programming languages are only listed (in alphabetical order).

  • 4th Dimension/4D, Alice, Apex, Arc, Automator, Bash, bc, Bourne shell, C-Omega, cg, CL (OS/400), Clean, Clojure, CoffeeScript, cT, Dart, DiBOL, Eiffel, Erlang, Factor, Forth, Hack, Haskell, Icon, IDL, Io, Ioke, J, J#, Korn shell, Ladder Logic, M4, Magic, Mathematica, Moto, NATURAL, NXT-G, OpenCL, Oz, PILOT, PowerShell, Programming Without Coding Technology, Pure Data, Q, S, SPARK, SPSS, Standard ML, Tcl, VHDL


This Month's Changes in the Index

This month the following changes have been made to the definition of the index:

  • There are lots of mails that still need to be processed. As soon as there is more time available your mail will be answered. Please be patient.

Very Long Term History

To see the bigger picture, please find the positions of the top 10 programming languages of many years back. Please note that these are average positions for a period of 12 months.

Programming Language2015201020052000199519901985
C1211211
Java2123---
Objective-C32038----
C++44321212
C#5589---
PHP63426---
Python7662322--
JavaScript8896---
Perl9754914-
Visual Basic .NET10------
Pascal151366133155
Lisp1915138552
Ada30261516663
Fortran312314174311

Programming Language Hall of Fame

The hall of fame listing all "Programming Language of the Year" award winners is shown below. The award is given to the programming language that has the highest rise in ratings in a year. 

YearWinner
2014medal JavaScript
2013medal Transact-SQL
2012medal Objective-C
2011medal Objective-C
2010medal Python
2009medal Go
2008medal C
2007medal Python
2006medal Ruby
2005medal Java
2004medal PHP
2003medal C++


Bugs & Change Requests

This is the top 5 of most requested changes and bugs. If you have any suggestions how to improve the index don't hesitate to send an e-mail to tpci@tiobe.com.

  1. Apart from "<language> programming", also other queries such as "programming with <language>", "<language> development" and "<language> coding" should be tried out.
  2. Add queries for other natural languages (apart from English). The idea is to start with the Chinese search engine Baidu. This has been implemented partially and will be completed the next few months.
  3. Add a list of all search term requests that have been rejected. This is to minimize the number of recurring mails about Rails, JQuery, JSP, etc.
  4. Start a TIOBE index for databases, software configuration management systems and application frameworks.
  5. Some search engines allow to query pages that have been added last year. The TIOBE index should only track those recently added pages.


Frequently Asked Questions (FAQ)

  • Q: Am I allowed to show the TIOBE index in my weblog/presentation/publication?

    A: Yes, the only condition is to refer to its original source "www.tiobe.com".

  • Q: How may I nominate a new language to be added to the TIOBE index?

    A: If a language meets the criteria of being listed (i.e. it is Turing complete and has an own Wikipedia entry that indicates that it concerns a programming language) and it is sufficiently popular (more than 25,000 hits for +"<language> programming" for Google), then please write an e-mail to tpci@tiobe.com.

  • Q: I would like to have the complete data set of the TIOBE index. Is this possible?

    A: We spent a lot of effort to obtain all the data and keep the TIOBE index up to date. In order to compensate a bit for this, we ask a fee of 5,000 US$ for the complete data set. The data set runs from June 2001 till today. It started with 25 languages back in 2001, and now measures more than 150 languages once a month. The data are availabe in comma separated format. Please contactsales@tiobe.com for more information.

  • Q: Why is the maximum taken to calculate the ranking for a grouping, why not the sum?

    A: Well, you can do it either way and both are wrong. If you take the sum, then you get the intersection twice. If you take the max, then you miss the difference. Which one to choose? Suppose somebody comes up with a new search term that is 10% of the original. If you take the max, nothing changes. If you take the sum then the ratings will rise 10%. So taking the sum will be an incentive for some to come up with all kinds of obscure terms for a language. That's why we decided to take the max.

    The proper way to solve this is is of course to take the sum and subtract the intersection. This will give rise to an explosion of extra queries that must be performed. Suppose a language has a grouping of 15 terms, then you have to perform 32,768 queries (all combinations of intersections). So this seems not possible either... If somebody has a solution for this, please let us know.

  • Q: What happened to Java in April 2004? Did you change your methodology?

    A: No, we did not change our methodology at that time. Google changed its methodology. They performed a general sweep action to get rid of all kinds of web sites that had been pushed up. As a consequence, there was a huge drop for languages such as Java and C++. In order to minimize such fluctuations in the future, we added two more search engines (MSN and Yahoo) a few months after this incident.

  • Q: Why is YouTube used as a search engine for the TIOBE index?

    A: First of all, YouTube counts for less than 10% of all ratings, so it has hardly any influence on the index. YouTube has been added as an experiment. It qualified for the TIOBE index because of its high ranking on Alexa. YouTube is a young platform (so an indicator for popularity) and there are quite some lectures, presentations, programming tips and language introductions available on YouTube.


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

• http://www.aldeid.com

http://www.morningstarsecurity.com

http://www.hackingdna.com

http://zer0byte.com/2013/03/19/kali-linux-complete-tools-list-installation-screen-shots/

http://www.monkey.org/~dugsong/fragroute/

http://www.sans.org/security-resources/idfaq/fragroute.php

http://flylib.com/books/en/3.105.1.82/1/

http://www.darknet.org.uk/2008/04/cdpsnarf-cdp-packet-sniffer/

http://mateslab.weebly.com/dnmap-the-distributed-nmap.html

http://www.tuicool.com/articles/raimMz

http://backtrackwasneversoeasy.blogspot.co.uk/2012/02/terminating-internet-of-whole-network.html

http://www.ethicalhacker.net

http://nmap.org/ncat/guide/ncat-tricks.html

http://nixgeneration.com/~jaime/netdiscover/

http://csabyblog.blogspot.co.uk

http://thehackernews.com

https://code.google.com/p/wol-e/wiki/Help

http://linux.die.net/man/1/xprobe2

http://www.digininja.org/projects/twofi.php

https://code.google.com/p/intrace/wiki/intrace

https://github.com/iSECPartners/sslyze/wiki

http://www.securitytube-tools.net/index.php@title=Braa.html

http://security.radware.com


http://www.kali.org/

http://www.backtrack-linux.org

http://www.question-defense.com

http://www.vulnerabilityassessment.co.uk/torch.htm

http://myexploit.wordpress.com/network-copy-router-config-pl-merge-router-config-pl/

http://www.securitytube.net

http://www.rutschle.net/tech/sslh.shtml

http://althing.cs.dartmouth.edu/local/www.thoughtcrime.org/ie.html

http://www.thoughtcrime.org/software/sslstrip/

http://ucsniff.sourceforge.net/ace.html

http://www.phenoelit.org/irpas/docu.html

http://www.forensicswiki.org/wiki/Tcpflow

http://linux.die.net/man/1/wireshark

http://www.nta-monitor.com/tools-resources/security-tools/ike-scan

http://www.vulnerabilityassessment.co.uk/cge.htm

http://www.yersinia.net

http://www.cqure.net/wp/tools/database/dbpwaudit/

https://code.google.com/p/hexorbase/

http://sqlmap.org/

http://sqlsus.sourceforge.net/

http://www.jammed.com/~jwa/hacks/security/tnscmd/tnscmd-doc.html

http://mazzoo.de/blog/2006/08/25#ohrwurm

http://securitytools.wikidot.com


https://www.owasp.org

http://www.powerfuzzer.com

http://sipsak.org/

http://resources.infosecinstitute.com/intro-to-fuzzing/

http://www.rootkit.nl/files/lynis-documentation.html

http://www.cirt.net/nikto2

http://pentestmonkey.net/tools/audit/unix-privesc-check

http://www.openvas.org

http://blindelephant.sourceforge.net/

http://code.google.com/p/plecost

http://packetstormsecurity.com/files/94305/UA-Tester-User-Agent-Tester-1.03.html

http://portswigger.net/burp/

http://sourceforge.net/projects/websploit/

http://www.edge-security.com/wfuzz.php

https://code.google.com/p/wfuzz

http://xsser.sourceforge.net/

http://www.testingsecurity.com/paros_proxy

http://www.parosproxy.org/

http://www.edge-security.com/proxystrike.php

http://www.hackingarticles.in

http://tipstrickshack.blogspot.co.uk/2012/11/how-to-use-websploit.html

http://cutycapt.sourceforge.net/

http://dirb.sourceforge.net


http://www.skullsecurity.org/

http://deblaze-tool.appspot.com

http://www.securitytube-tools.net/index.php@title=Grabber.html

http://rgaucher.info/beta/grabber/

http://howtohack.poly.edu/wiki/Padding_Oracle_Attack

http://blog.gdssecurity.com/labs/2010/9/14/automated-padding-oracle-attacks-with-padbuster.html

https://code.google.com/p/skipfish/

http://w3af.org/

http://wapiti.sourceforge.net/

http://www.scrt.ch/en/attack/downloads/webshag

http://www.hackingdna.com/2013/01/webshag-on-backtrack-5.html

http://www.digininja.org/projects/cewl.php

http://hashcat.net

https://code.google.com/p/pyrit

http://www.securiteam.com/tools/5JP0I2KFPA.html

http://freecode.com/projects/chntpw

http://whatisgon.wordpress.com/2010/01/28/chntpw-tutorial-resetting-windows-passwords-editing-registry-linux/

http://www.cgsecurity.org/cmospwd.txt

http://adaywithtape.blogspot.co.uk/2011/05/creating-wordlists-with-crunch-v30.html

http://hashcat.net

http://ixplizit.wordpress.com/2012/04/08/hashcat-the-very-basic/

https://code.google.com/p/hash-identifier/

http://www.osix.net/modules/article/?id=455


http://cse.spsu.edu/raustin2/coursefiles/forensics/How_to_use_Volatility_v2.pdf

http://thesprawl.org/projects/pack/#maskgen

http://dev.man-online.org/man1/ophcrack-cli/

http://ophcrack.sourceforge.net/

http://manned.org

http://www.onlinehashcrack.com/how_to_crack_windows_passwords.php

http://project-rainbowcrack.com

http://www.randomstorm.com/rsmangler-security-tool.php

http://pentestn00b.wordpress.com

http://bernardodamele.blogspot.co.uk/2011/12/dump-windows-password-hashes.html

http://manpages.ubuntu.com/manpages/natty/man1/sipcrack.1.html

http://www.leidecker.info/projects/sucrack.shtml

http://santoshdudhade.blogspot.co.uk/2012/12/findmyhash-112-python-script-to-crack.html

http://www.foofus.net/jmk/medusa/medusa.html#how

http://www.irongeek.com/i.php?page=backtrack-r1-man-pages/medusa

http://nmap.org/ncrack/man.html

http://leidecker.info/projects/phrasendrescher.shtml

http://wiki.thc.org/BlueMaho

http://flylib.com/books/en/3.418.1.83/1/

http://www.hackfromacave.com

http://www.pentest.co.uk/downloads.html?cat=downloads&section=01_bluetooth

https://github.com/rezeusor/killerbee

https://code.google.com/p/nfc-tools/source/browse/trunk/mfoc/src/mfoc.c?r=977


http://nfc-tools.org

http://www.binarytides.com/hack-windows-social-engineering-toolkit-java-applet/

http://seclists.org

http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8

http://recordmydesktop.sourceforge.net/manpage.php

http://www.truecrypt.org

http://keepnote.org

http://apache.org

https://github.com/simsong/AFFLIBv3

http://www.computersecuritystudent.com/FORENSICS/VOLATILITY

http://csabyblog.blogspot.co.uk/2013/01/backtrack-forensics-volafox.html

http://www.sleuthkit.org/autopsy/desc.php

http://sysforensics.org/2012/02/sleuth-kit-part-2-mmls-and-mmstat.html

http://guymager.sourceforge.net/

http://www.myfixlog.com/fix.php?fid=33

http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html

http://www.spenneberg.org/chkrootkit-mirror/faq/

http://www.aircrack-ng.org/

https://sites.google.com/site/clickdeathsquad/Home/cds-wpacrack

http://www.willhackforsushi.com

http://www.ciscopress.com

http://openmaniak.com/kismet_platform.php

http://sid.rstack.org/static/


http://www.digininja.org

http://thesprawl.org/projects/dnschef/

http://hackingrelated.wordpress.com

http://r00tsec.blogspot.co.uk/2011/07/hacking-with-evilgrade-on-backtrack5.html

https://github.com/vecna/sniffjoke

http://tcpreplay.synfin.net

http://dallachiesa.com/code/rtpbreak/doc/rtpbreak_en.html

http://tomeko.net/other/sipp/sipp_cheatsheet.php?lang=pl

http://sipp.sourceforge.net/

https://code.google.com/p/sipvicious/wiki/GettingStarted

http://voiphopper.sourceforge.net/

http://ohdae.github.io/Intersect-2.5/#Intro

http://obscuresecurity.blogspot.co.uk/2013/03/powersploit-metasploit-shells.html

http://dev.kryo.se/iodine/wiki/HowtoSetup

http://proxychains.sourceforge.net/

http://man.cx/ptunnel(8)

http://www.sumitgupta.net/pwnat-example/

https://github.com/

http://www.dest-unreach.org/socat/doc/README

https://bechtsoudis.com/webacoo/

http://inundator.sourceforge.net/

http://vinetto.sourceforge.net/

http://www.elithecomputerguy.com/classes/hacking/



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

(1) 실습화면: openeg 사이트 > 보안코딩 테스트 > 오픈리다이렉트

 

(2) 실습파일: kr.co.openeg.test.controller.TestController.java

 

(3) 취약점 동적진단:

 

    요청URL 값을 변조하여 허용되지 않은 사이트로 요청을 이동하도록 테스트 한다.   

 

(4) 시큐어코딩기법 :  

 

    리다이렉트를 허용할 URL 목록을 하드코딩하여, 사용자의 요청에 따라 지정된 URL을 이용하도록 제약을 준다.





protected void doGet(HttpServletRequest request, HttpServletResponse response)  

     throws ServletException, IOException {

 

    // 다른 페이지 이동하는 URL 리스트를 만든다.

    String allowURL[] = { "http://url1.com", "http://url2.com", "http://url3.com" };

    // 입력받는 url은 미리 정해진 URL order로 받는다.

    String nurl = request.getParameter("nurl");

 

    try {

        Integer n = Integer.parseInt(nurl);

            if ( n >= 0 && n < 3)

                response.sendRedirect(allowURL[n]);

    } catch (NumberFormatException nfe) {

                             //  입력 값이 숫자가 아닐 경우 적절히 에러를 처리한다.

    }

}


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

사용자로 부터 수신한 작업 요청이 해당 세션의 사용자가 실행권한을 가지고 있는지 체크하여 권한이 있는 사용자로 부터의 요청인 경우에만 작업을 수행할 수 있도록 한다. 예제에서는 delete 작업 요청한 사용자가 로그인 세션의 userid와 동일한자, 해당 동작을 수행할 수 있는 사용자인지를 체크하기 위해 checkAccessControlList 를 구현하고 호출하도록 작성하였다.



@RequestMapping(value="/test/access_control_test.do", method = RequestMethod.POST)

@ResponseBody

public String testAccessControlPost(HttpServletRequest request,HttpServletResponse response){

             StringBuffer buffer=new StringBuffer();

         String name=request.getParameter("name");

             String action=request.getParameter("action");

             if( "view".equals(action)) {

                           buffer.append("==> 사용자 정보조회<br/>");

             }else if( "modify".equals(action)) {

                           aclData[1] = name;

                           buffer.append("==> 사용자 정보수정<br/>");

             }else if ( "delete".equals(action)) {

                 if ( checkAccessControlList(name) ) {

                               aclData[0]="";

                               aclData[1]="";

                               buffer.append("==> 사용자정보삭제<br/>");

                 } else {

                     buffer.append("==> 허용되지 않은 요청입니다.<br/>");

                 }

             }else if ( "edit".equals(action)) {

                           aclData[0]=name;

                           buffer.append("==> 사용자정보생성<br/>");

             }           

                          

                           buffer.append("사용자명: "+aclData[0]+"<br/>");

                           buffer.append("   전화번호: "+aclData[1]);

                           return buffer.toString();

}

 

public boolean checkAccessControlList(String name){

     String[] allowList = {"admin". "manager","root"};

     String userid = request.getSession.getAttribute("userid");

     if ( ! userid.equals(name)) return false;

     for(String allow : allowList ) {

         if ( allow.equals(name)) return true;

     }

     return false;

}




블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹


 


PART 01. 안전한 소프트웨어 개발 방법론


CHAPTER 01. 시큐어코딩 개요


1. 침해사고 유형별 발생빈도가 가장 높은 보안 영역은?

  (3) 애프리케이션 보안


2. [   CWE    ]는 미국 국토안보부에서 관리하고 있으며, 소프트웨어의 취약점을 사전식으로 분류해 프로그래머가 쉽게 접근할 수 있도록 구성되어 있다.

 

3. [    CVE      ]는 시간에 따라 감지된 보안 취약점 또는 위험 노출을 정리한 목록이다. 기본적으로 MITRE를 주축으로 해서 각종 소프트웨어 개발 회사와 CERT/CC 같은 기관에서 감지된 보안 취약점을 보고하면, 조정위원회를 통해 목록이 관리된다.

 

4. 가장 위험한 소프트웨어 에러 25가지에 대한 목록을 제공하는 사이트는?

  (4) SANS

 

5. 2013년에 발표된 OWASP TOP 10 리스트에서 가장 많은 침해 사고가 발생한 취약점은?

  (2) 삽입(Injection)

  

6. 웹 애플리케이션 취약점 중 XSS의 비중이 큰 이유가 아닌 것은?

   (4) 에러 구문으로 정보 노출이 있기 때문이다.

  

7. 입력 값 검증 작업이 제대로 이뤄지지 않아 발생할 수 있는 취약점이 아닌 것은?

   (4) 취약한 비밀번호 허용




CHAPTER 02. 개발보안방법론


1.  [    SW개발보안방법론    ]은 안전한 애플리케이션을 개발, 운영, 유지하기 위해 소프트웨어 개발 라이프사이클(SDLC) 단계별 보안 조치를 적용하는, 보안이 강화된 소프트웨어를 개발하기 위한 방법론이다.

 

2. 소프트웨어 개발 단계별 보안 활동 중 설계 단계에서 수행하는 보안 활동은?

   (2) 위협원 도출

 

3. OWASP CLASP에 관한 설명이 아닌 것은?

   (4) 역할 기반 뷰(Role-bases View)에 따르면 보안 인식 프로그램을 운영하는 것은 보안전문가의 역할이다.

 

4. CLASP가 제공하는 5개의 뷰(View) 중 다음의 설명에 해당하는 뷰는?

애플리케이션 소스 코드에서 발생할 수 있는 보안 취약점들을 5개의 카테고리, 104개의 타입으로 정리하고 있다.

   (4) 취약점 뷰

 

5. Microsoft- SDL에 따라 도출된 위협에 대한 위험도 계산에 사용되는 항목이 아닌 것은?

   (3) 자산 피해                               

 

6. Microsoft -SDL에 따라 도출된 서비스 거부 위협에 따른 대응 기술로 적절하지 않은 것은?

   (4) 타임스탬프

 

7. 위협에 대응하는 방법 중 다음의 설명에 해당하는 대응 방법은?

문제점을 무시하고 아무런 대응도 하지 않는다. 불가피한 사유로 아무런 대응도 하지 않기로 결정했다면 위협에 관련된 기능을 기본적으로 비활성화 상태로 설치할 수 있는지 고려해야 한다.

   (4) 문제점을 무시한다.

 

8. Microsoft -SDL의 위협 모델링에서 위협 분류 타입이 아닌 것은?

   (4) 발견 용이성

 

9. Microsoft-SDL의 위협 모델링의 2단계에서 수행되는 애플리케이션 분해에서 수행하는 작업은?

(1) 분석하려는 시스템의 신뢰 구성요소와 비신뢰 구성요소의 경계를 구분한다.


10. Microsoft-SDL에서 위협 모델링의 목표는?

(1) 소프트웨어에서 발생 가능한 위협들을 모두 추출한다.



PART 02. 안전한 소프트웨어를 만드는 시큐어코딩 기법


CHAPTER 03. 웹 애플리케이션 보안을 위한 기본지식


1. 8비트 이진 데이터를 문자 코드에 영향받지 않는 공통 ASCII 영역의 문자들로만 이뤄진 일련의 문자열로 바꾸는 인코딩 방식은?

  (4) BASE64 인코딩

 

2. 브라우저에서 웹 서버로 안전하게 문자열 데이터를 전달하기 위해 사용되는 인코딩 방식은?

   (2) URL 인코딩


3. 웹 서버에서 브라우저로 안전한 문자열 데이터를 전달하기 위해 사용되는 인코딩 방식은?

   (1) HTML 인코딩                                  

 

4. XSS 취약점 제거를 위해 출력 시 활용하는 인코딩 방식은

   (2) HTML인코딩   

 

5. 다음의 정규식 설명 중 바르지 않은 것은?

   (4) ([a-z]+):(\1) abc:1에 매칭되는 정규식이다.

 

6. 다음 정규식 중 IP 주소가 바르게 입력되었는지 필터링하기 위해 사용될 수 있는 패턴은?

   (4) ([0-9]{1,3}) '. ([0-9]{1,3}) '. ([0-9]{1,3}) '. ([0-9]{1,3})

 

7. 주어진 정규식은 어떤 값을 필터링할 때 사용할 수 있나

^'d{2,3} - 'd{3,4} - 'd{4}$

  (2) 전화번호



CHAPTER 04. 보안 취약점 제거를 위한 코딩 기법


1. 다음 예제 코드에서 발생 가능한 보안 취약점은?

<select id="selectMember" parameterType="String" resultType=Member">  

      SELECT * FROM Member WHERE NAME = '${name}'

</select>

   (3) SQL 삽입(Injection)                  

 

2. 다음 중 SQL 삽입 공격을 예방하기 위해 검증해야 할 값이 아닌 것은?

  (4) 서버에서 생성, 저장된 세션 ID  

 

3. 에러 기반의 SQL 삽입 공격에 취약하지 않은 사이트를 구축하기 위한 조치로 적절하지 않은 것은?

  (2) 입력 값에 대해 < > & ; 같은 문자를 제거하는 코드를 작성한다.

 

4. 다음 예제 코드에서 발생 가능한 보안 취약점은?

String data=request.getParameter("data"); 

cmd = new String[] { "cmd.exe","/c",data };

Runtime.getRuntime().exec(cmd);

   (3) 명령어 삽입(Command Injection)              

 

5. 명령어 삽입 취약점을 제거하기 위한 보안 코딩 기법은?

   (1) 입력 값에서 ; &을 제거한다.


6. 다음 중 XPath 취약점의 존재 여부 확인에 사용되는 입력 값으로 적합한 것은?  

   (4) ' or 1=1 또는 ' or ''='

 

7. 세션 관리 취약으로 발생될 수 있는 보안 취약점이 아닌 것은?

   (4) 세션 ID 재설정

 

8. XSS 취약점의 보안 대책이 아닌 것은

   (1) 입력받은 문자 LF(%0A) CR(%OD)을 제거하고 사용한다.


9. 크로스 사이트 요청 위조 취약점의 보안 대책이 아닌 것은?

   (1) 외부에서 입력된 값은 CR, LF 등의 개행 문자를 제거하고 사용한다.

 

10. 파일 업로드 취약점을 예방하기 위한 프로그램 작성 방법으로 적절하지 않은 것은?

   (4) 파일을 저장하는 경로는 웹루트 아래 임의의 폴더여야 한다.

 

11. 다음은 대칭키를 생성하는 예제 코드다. ?에 가장 적절한 값은?

public byte[] test() throws NoSuchAlgorithmException {

   KeyGenerator keyGen = KeyGenerator.getInstance("AES");

   keyGen.init( ? );

   SecretKey key = keyGen.generateKey();

}

   (2) 128

 

11. 다음 소스 코드에서 발생할 수 있는 보안 취약점?

Protected void doGet(HttpServletRequest request, HttpServletResponse response)

                       throws ServletException, IOException {

   String query = request.getQueryString();

   if (query.contaions("url")) {

      String url = request.getParameter("url");

      response.sendRedirect(url);

   }

   (4) 안전하지 않은 리다이렉트와 포워드




CHAPTER 05. 안전하지 않은 코딩 스타일


1. 다음 중 안전하지 않은 예외 처리 유형이 아닌 것은?

   (4) 디폴트 설정 노출

 

2. 부적절한 예외 처리 취약점은 여러 종류의 예외가 발생할 경우 각각의 예외에 대응한 처리 작업을 수행하지 않고 최상위 클래스인 [    Exception    ]을 사용 전체 에러 처리를 간단하게 처리하는 상황에서 발생 수 있다.

 

3. 다음 예제 코드에서 발생할 수 있는 취약점은?

public void readFromFile(String fileName) {

  try {

     ...

     File myFile = new File(fileName);

     FileReader fr = new FileReader(myFile);

     ...

   } catch (Exception ex) {

      // 적절한 예외 처리 수행 코드

      ...

    }

}

   (1) 부적절한 예외 처리                                             

 

4. 다음 소스 코드에서 발생할 수 있는 보안 약점은?

public static int cardinality (Object obj, final Collection col) {

     int count = 0;

     Iterator it = col.iterator();

     while (it.hasNext()) {

         Object elt = it.next();

         if ((null == obj && null == elt) || obj.equals(elt)) {

             count++;

         }

     }

     return count;

 }

   (4) (null) 포인트 역참조


5. 다음 예제 코드에서 발생 가능한 보안 취약점은?

01

02

03

04

05

06

07

08

09

10

11

12

 public class U9627 {

   public synchronized void aMethod() {

       for (int i=0; i<10; i++) System.out.print(i);

   }

    ……

  }

 

 public class Foo extends U9627 {

   public void aMethod() {

         for (int i=0; i<20; i++)   System.out.print(i);

   }

 }

   (3) 동기화 부재                                     

 

6. [        동기화 처리 부재        ] 보안 약점은 자원을 사용하는 시점과 검사하는 시점이 달라서, 검사 시점에 존재하던 자원이 사용 시점에 사라지는 등 자원의 상태가 변하는 경우에 발생하며, 해당 보안 약점으로 인해 동기화 오류뿐 아니라 교착 상태 등과 같은 문제점이 발생할 수 있다.

 

7. 다음의 설명에서 빈칸에 공통으로 들어갈 ?

[       ] 데이터의 경우 getter setter 메소드를 구현할 때, getterr [         ]을  복사해 복사된 영역의 주소를 반환한다. 반대로 setter메소드로 [         ]을 세팅할 때는 전달된 배열 주소를 이용 다른 영역에 배열을 복제한  [         ] 요소가 참조되도록 설정한다.

 

   (1) private 배열                                


8. 다음 코드가 가진 취약점 제거 방법이 아닌 것은?

01

02

03

04

05

06

07

08

09

 public class A extends HttpServlet {

   private String name;

   protected void doPost(HttpServletRequest request, HttpServletResponse response)

      throws ServletException, IOException {

        name = request.getParameter("name").trim();

        ……

        out.println(name + ", thanks for visiting!");

   }

 }

  (3) 5행을 동기화 블으로 감싼다.

 

9. 다음 예제 코드가 가질 수 있는 취약점은?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

 public class ApiTest extends  HttpServlet   {

     public void doGet(HttpServletRequest req, HttpServletResponse res)

                 throws ServletException, IOException {

          boolean trusted = false;

          String ip = req.getRemoteAddr();

          InetAddress addr = InetAddress.getByName(ip);

          if (addr.getCanonicalHostName().endsWith("trustme.com") ) {

              trusted = true;

          }

          if (trusted) {

              // 신뢰하는 시스템에 허용된 기능을 수행한다.

          } else {

              // 신뢰하지 않는 시스템으로 부터의 요청을 거부하는 작업을 수행한다.

           }

       }

 }

  (4) 부적절한 API 사용

 

10. 잘못된 API 사용 취약점에 대한 설명으로 적합하지 않은 것은?

  (4) 클라이언트의 요청에 대한 신뢰 관계 DNS 룩업(Lookup)에 의존 중요한 결정을 수행하도록 구현하는 것이 바람직하다



PART 03. 소프트웨어 보안 강화 기법


CHAPTER 06. 오픈소스 보안 프레임워크 활용



1. 웹 애플리케이션 개발 과정에서 발생하는 다양한 보안 침해 사고를 해결하기 이해 OWASP에서 제작 및 배포되는 보안 라이브러리는?

   ESAPI

 

 

2. ESAPI 구성 인터페이스 중 다음과 같은 기능을 정의하고 있는 것은?

일반 사용자와 관리자 등으로 권한을 분류해 관리해주는 규격을 정의하고 있으며 로그인, 로그아웃, 로그인한 사용자 정보 설정과 같은 기능을 정의

  (4) Authenticator

 

3. 잘못된 기능 접근제어 취약점을 해결하는 데 가장 적합한 ESAPI의 구성요소는?

   (2) AccessController

 

4. 다음 ESAPI 구성요소 중 중요 데이터의 암호화 정책을 정의하기 위한 설정 파일 관리 기능을 정의하고 있는 것은?

   (4) EncryptedProperties

 

5. 쿠키에 대한 기본 설정, 헤더의 최대 크기 지정, 세션ID 이름 설정, 업로드 허용 확장자 목록, 업로드 허용 최대 파일 크기와 같은 설정 값을 사용하는 ESAPI의 구성요소는?

   (3) HTTPUtilities  



CHAPTER 07.  보안 약점 진단 도구 활용


1. 소프트웨어가 실행되지 않는 환경에서 소스 코드의 의미를 분석해 소프트웨어의 결점을 찾아내는 정적 분석 기법이 아닌것은?

   (4) 스트레스 테스트(Stress Test)

 

2. 다음 중 정적 분석의 특징이 아닌 것은?

   (4) 프로그램 개발 중 진단이 불가능하다.

 

3. 다음 중 동적 분석의 특징이 아닌 것은?

   (4) 정적 분석 기법과는 상호 배타적 기능을 수행하는 것이 바람직하다.

 

4. 다음 [   ] 안에 공통으로 들어갈 알맞은 말은?

디버깅이 바로 프로그램 [    동적    ] 분석이며 단위 테스트도 일종의 프로그램 [   동적   ] 분석에 속한다

 

5. [     정적분석   ]은 소프트웨어가 가지고 있는 보안 약점을 점검함으로써 완성된 소프트웨어에서 발생 가능한 잠재적인 취약점을 예방하기 위해 툴을 이용해 진단하는 보안 분석 기법이다.

 

6. [    동적분석     ]은 소프트웨어 실행 과정에서 다양한 입출력 데이터의 변화와 사용자 상호작용에 따른 변화를 툴을 이용해 진단하는 보안 분석 기법이다.

 

7. 행자부 보안 약점 항목의 빈칸에 적절한 취약점 명을 기술하시오.

순번

결함 ID

위험도

체커 명

8

245.511.2536

1

OPEN REDIRECT 

행자부 보안 

약점

 신뢰되지 앟는 URL 주소로 자동접속 연결

파일

D:\javaDev\workspace\openeg\src\kr\co\openeg\lab\test\controller\TestController.java

위반 라인

274

검증자 의견

 

270.    public String testForwarding(HttpServletRequest request,HttpServletResponse response){

271.           String url=request.getParameter("data");

272.           System.out.println("url: "+url);

273.           try {

274.                   response.sendRedirect(url);

275.           } catch (IOException e) {

276.                   // TODO Auto-generated catch block

277.                   return "redirect ������";

278.           }

 

8. 행자부 보안 약점 항목의 빈칸에 적절한 취약점 명을 기술하시오.

순번

결함 ID

위험도

체커 명

62

245.511.2590

2

PUBLIC DATA ASSIGNED TO PRIVATE ARRAY

행자부 보안 약점

  private 배열에 public 데이터 할당

파일

D:\javaDev\workspace\openeg\src\kr\co\openeg\lab\test\util\CapsulationTest.java

위반 라인

52

검증자 의견

 

48.            return color1;

49.     }

50.

51.     public void setColor1(String[] color1) {

52.            this.color1 = color1;

53.     }

54.

55.     public String[] getColor2() {

56.            return color2;

 

9. 행자부 보안 약점 항목의 빈칸에 적절한 취약점 명을 기술하시오.

순번

결함 ID

위험도

체커 명

2

245.511.2530

1

SQL INJECTION.iBARIS 

행자부 보안 약점

SQL 삽입

파일

D:\javaDev\workspace\openeg\src\kr\co\openeg\lab\board\dao\board.xml

위반 라인

43

검증자 의견

 

39.     <select id="getSearchTotalNum" resultClass="int">

40.            select

41.                    count(idx)

42.            from jmboard

43.            where $type$ like '%$keyword$%'

44.     </select>

45.     <select id="searchArticle" parameterClass="java.util.HashMap" resultClass="BoardModel">

46.            select

47.                    b.idx, b.writer, b.subject,




                                 

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

[작성중... ]



File API


자바스크립트를 이용하여 파일 시스템에 있는 파일의 데이터를 읽을 수 있도록 지원한다. 이 기능으로 인해 HTML5에서는 플러그인 없이도 시스템에 있는 파일을 유연하게 다룰 수 있게 되었다.


File API의 보안 위협은 현재까지는 없다. 악성 자바스크립트를 브라우저에 삽입한다 하여도 사용자가 자의적으로 파일을 선택하지 않는 이상 공격자는 아무런 공격을 수행할 수 없다. 하지만 사회 공학적 기법을 활용하여 사용자의 시스템에 있는 파일을 탈취하는것이 전혀 불가능한것은 아니다.



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

[작성중...]


Geolocation


HTML5의 Geolocation API는 브라우저 자체 기능만으로 단말의 위치 정보계산이 가능하다.  스마트 단말의 경우 GPS, 3G, 4G 네트워크 정보등을 기반으로 위치 정보가 수집된다. 


Geolocation 의 보안 위협은 Geolocation API를 사용해야 하는 경우 사용자의 동의를 받도록 설계되어 있지만 동일 도메인에서는 한번의 동의를 통해 사용자의 위치 정보를 지속적으로 수집할 수 있다. 이 경우 사용자가 위치 정보 수집을 위한 악성 링크를 클릭하는 경우 자신의 위치 정보를 공격자에게 지속적으로 전송할 수 있다.  즉 단순히 사이트 방문만으로도 사용자의 위치 정보가 노출 될 수 있개 때문에 위험성이 크다. 

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바