레이블이 Web인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Web인 게시물을 표시합니다. 모든 게시물 표시

2016년 9월 8일 목요일

[Web] OWASP ZAP(Zed Attack Proxy) 점검


홈페이지 취약점 점검 대상 URL이 정해지면 OWASP-ZAP을 실행한다.


http://demo.testfire.net

취약점 점검은 IBM에서 취약점 점검툴의 테스트를 위해 제공해주는 사이트를 이용할 것이다.


공격대상 URL에 취약점 점검을 진행할 URL 을 입력한 후, 공격을 클릭한다.


Spider의 URL 수집 기능이 오나료되면 OWASP-ZAP은 자동으로 "Active Scan" 기능을 수행한다. 이 단계에서는 수집한 URL에 대하여 경로 조작(Path Traversal), 원격 OS 명령 삽입(Remote OS Command Injection), 시스템 파일 다운로드, XSS(Cross-site Script), SQL문 삽입(SQL Injection) 등의 다양한 취약점을 점검한다.


취약점 점검이 완료되면 위와 같은 결과를 확인할 수 있다.


Alerts 탭에서 OWASP-ZAP이 발견한 취약점들이 항목별로 나열된다. 


나열된 취약점에 대해 자세한 정보를 확인할 수 있다.

[출처]

http://www.memozee.com/download.file.php?t=2&d=3447&o=2




[Web] OWASP ZAP(Zed Attack Proxy) 구성


[주메뉴(Top level Menu)]



주메뉴의 각 기능

  • File : OWASP-ZAP의 세션 열기, 저장 등의 조정 및 세션값 설정
  • Edit : 검색 기능 제공과 관리하고 있는 세션 추적
  • View : OWASP-ZAP을 구성하고 있는 tab의 보여주기 조정
  • Analysis menu : 스캔 정책을 조정
  • Report : 파일 형태별 결과보고서 출력 관련 조정
  • Tools menu : OWASP-ZAP 도구와 일반적인 옵션 조절
  • Online menu : 인터넷에 있는 관련자료 링크
  • Help menu : 도움말  


[툴바(Top level Toolbar)]



툴바의 각 기능

  • mode : 스캔 모드 설정
  • New Session : 신규 세션 설정
  • Open Session : 저장되어 있는 세션 읽기
  • Persist Session : 점검 중인 세션 저장
  • Snapshot Session : 현재 진행되고 있는 세션 저장
  • Session Properties : 세션 환경 값 설정
  • Options : OWASP-ZAP의 환경 값 설정
  • Show tab names and icons : 각 창에 있는 tab의 이름 및 아이콘 보이기/숨기기
  • Expand Sites Tab : 트리창(Tree Window)의 크기 확대
  • Expand Information Tabs : 정보창 (Information Window)의 크기 확대
  • Expand Full : 정보창에서 선택된 tab 크기 확장
  • Request and Response tabs side by side : 작업창(Workspace Window)에 있는 Request tab과 Response tab을 나란히 배치
  • Request show above Response : 작업창(Workspace Window)에 있는 Request panel을 Response panel 상하로 배치
  • Request and Response panels side by side : 작업창(Workspace Window)에 있는 Request panel을 Response panel 좌우로 배치
  • Set/Unset break an all requests : proxy 기능 활용 시 요청값(request)에 대한 trap 설정 및 해제
  • Set /Unset break on all responses : proxy 기능 활용 시 반환값(response)에 대한 trap 설정 및 해제
  • Step : proxy 기능 활용 시 trap이 설정된 request나 response에 대하여 순차적으로 실행
  • Continue : proxy 기능 활용 시 trap이 설정된 request나 response에 대하여 끝까지 모두 실행
  • Drop : proxy 기능 활용 시 trap이 설정된 request나 response에 대하여 실행시키지 않고 종료
  • Add a custom HTTP break point : 특정 URL에 대한 break point 설정하는 대화창 활성화
  • Force User Mode On / Off : 사용자 모드 켜기 / 끄기 

[바닥글(Footer)]

발견된 취약점 개수 및 현재 수행하고 있는 점검 개수에 대한 정보 출력


취약점 점검결과 (위험도 상, 중, 하 및 단순정보)에 대한 개수

[트리창(Tree Window)]

URL에 대한 정보를 트리형태로 출력하는 Sites tab

Site tab에서 방문했던 특정 URL을 선택한 후 마우스 오른쪽 버튼을 클릭하면 URL을 대상으로 취약점 점검 URL을 대상으로 취약점 관리 등을 수행할 수 있는 창이 열린다.


[작업창(Workspace Window)]


작업창의 각 기능
  • 빠른시작 : 취약점 점검을 쉽게 수행할 수 있도록 공격대상 URL을 입력하여 점검 시작 및 중지를  할 수 있음
  • Request Tab : 취약점 점검 또는 Proxy 기능에서 사용자 브라우저에서 점검 대상 홈페이지로 송신하는 요청값(Request)를 보임
  • Response Tab : 취약점 점검 또는 Proxy 기능에서 점검 대상 홈페이지로부터 수신되는 반환값(Responses)를 보임
  • Break Tab : 지정된 break point에 대한 request와 response 변경

[정보창(Information Window)]


정보창의 각 기능

  • Spider Tab : 홈페이지 취약점 점검 시 취약점 점검을 수행할 대상 URL에 대한 스캐닝 화면 출력 및 조정
  • Active Scan Tab : 홈페이지 취약점 점검을 수행하는 화면 출력 및 조정
  • Alerts Tab : 홈페이지 취약점 점검결과 발견된 취약점을 위험도 순으로 트리형태로 출력하며, 각 취약점에 대한 상세한 정보 제공
  • History Tab : 취약점 점검 및 Proxy 기능 활용 시 홈페이지에 송신한 요청값(Request)를 순차적으로 출력하고 필터링 기능 제공
  • Search Tab : OWASP-ZAP에서 수행된 URL, Request, Response 등 모든 결과에 대한 검색 기능
  • Break points Tab : 사용자가 설정한 중단점(Break point) 출력
  • Fuzzer Tab : Fuzzing 실행 시 결과값 출력
  • Params Tab : 홈페이지 점검 시 사용된 매개변수값 출력
  • Output Tab : 다양한 정보 메시지 출력

[출처]

http://www.memozee.com/download.file.php?t=2&d=3447&o=2

2016년 9월 7일 수요일

[Web] OWASP ZAP(Zed Attack Proxy) install

OWASP ZAP은 개발 단계에서 개발자가 손쉽게 보안 취약점을 발견하고 조치할 수 있도록 하는 오픈소스 제품이다.

오픈소스 프로젝트인 Paros Proxy라는 웹 어플리케이션 스캐너를 기반으로 다양한 기능을 추가하고 개선한 제품이다.

OWASP ZAP이 자동으로 진단 검사 할 수 있는 취약점은 접근할 수 없는 부분을 제외한 웹어플리케이션의 주요 취약점을 포괄적으로 확인할 수 있다.

OWASP ZAP은 Proxy 기반의 스캐너

OWASP ZAP의 주요 기능

  1. 프록시
    - 브라우저와 어플리케이션 간의 HTTP 통신 내용을 저장
    - 보안 진단을 위한 요청을 보내면 응답 데이터를 시각화
  2. 스파이더
    - 전체 웹 어플리케이션에 대한 정보 수집
    - 공개해서는 안되는 파일이나 디렉토리 유무 확인
  3. 정적 / 동적 검색
    - 다양한 취약점 자동 감지
  4. Fuzzer
    - 기본적인 정적/동적 스캔으로는 검출이 어려운 취약점을 수동으로 검색
  5. 애드온 Script
    - 어플리케이션 고유의 기능에 대응할 수 있는 진단 도구 작성
  6. ZAP API
    - 스파이더와 검색 등 다양한 기능을 외부에서 조작하여 진단 작업을 완벽하게 자동화

OWASP ZAP Install

아래 링크에 접속한다.

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


Downlaod ZAP을 클릭한다.


설치할 운영체제 환경을 선택한다.


Next 클릭


동의 후 Next 클릭


Next 클릭


Next 클릭


Next 클릭


Install 클릭


Finish 클릭


Java가 설치 되지 않을 경우 위와 같은 창이 나타난다. 


무료 자바 다운로드를 클릭한다.


동의 및 무료 다운로드 시작을 클릭한다.


설치 클릭


Java 설치가 완료되었다. OWASP ZAP 을 실행한다.



[출처]

http://opennaru.tistory.com/124
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

2016년 9월 5일 월요일

[Web] CSRF 공격 가능 여부

1. 개요


1.1 CSRF(Cross Site Request Forgery)이란?


- 공격자가 작성해 놓은 악성스크립트 [사이트에서 제공하는 기능을 피해자의 웹 브라우저에서 요청] 을 통해서 일어나는 악의적인 공격방식이다.
- 피해자는 공격자가 게시한 글을 읽었을 때 악성스크립트에 의한 요청이 서버로 보내지게 되고 서버는 피해자의 권한 내에서 해당 악성스크립트 요청을 처리하게 된다.

1.2 CSRF(Cross Site Request Forgery) 발생 원인

- 개별 링크와 폼이 사용자 별로 예측 가능한 토큰을 사용할 때 발생 한다. 예측 불가능한 토큰이 있다면 공격자는 요청 메시지를 변조 할 수 없지만, 예측 가능한 토큰이 있다면 공격자는 요청 메시지를 변조할 수 있다.
- 인증이나 세션, 쿠키 등 모든 웹 사이트에서 인증된 사용자가 보내는 데이터는 정상적인 경로를 통한 파라미터 요청으로 판단한다. 즉,  정상적인 요청과 비 정상적인 요청을 구분하지 못한다.

1.3 CSRF(Cross Site Request Forgery)와 XXS(Cross Site Scripting) 차이

- XSS: XSS는 웹 브라우저에 악성 스크립트를 삽입해 데이터를 수집하거나 브라우저의 특정 동작을 유발하며, 악성스크립트가 사용자 클라이언트에서 실행 된다.
- CSRF: CSRF는 인증 완료 된 사용자의 권한으로 악성 스크립트를 서버에 요청하여 공격자가 원하는 명령을 사이트로 전송한다.

1.4 CSRF(Cross Site Request Forgery) 공격 과정


  1. 공격자는 CSRF 스크립트가 포함된 게시물을 등록한다.
  2. 사용자는 CSRF 스크립트가 포함된 페이지의 게시물 열람을 요청한다.
  3. 게시물을 읽은 사용자의 권한으로 공격자가 원하는 요청이 발생한다.
  4. 공격자가 원하는 CSRF 스크립트 결과가 발생한다.

2. 시나리오


  1. 공격자는 게시판에 관리자가 관심을 가질 수 있는 제목으로 CSRF 스크립트가 포함된 게시물을 등록한다.
  2. 관리자는 확인이 필요한 게시물로 파악하여, CSRF 스크립트가 포함된 게시물을 확인한다.
  3. 게시물을 읽은 관리자는 CSRF 스크립트가 포함된 것을 알지 못한 채 게시물을 확인한다. 하지만, 관리자의 권한으로 공격자가 원하는 CSRF 스크립트 요청이 발생한다.
  4. 공격자가 원하는 CSRF 스크립트 결과가 발생하여, 관리자 및 사용자의 피해가 발생한다.

3. 실제 공격


웹 어플리케이션

1. XSS 공격 테스트를 통해 CSRF 공격 가능성을 확인



웹 사이트의 게시판에 스크립트를 삽입하여 사용자가 해당 글을 클릭하면 스크립트가 실행 되는지 확인한다.



XSS 공격 테스트를 통해 CSRF 공격 가능성을 확인 했다.

2. 프록시를 통해 웹 사이트의 게시물을 등록하는 스크립트 확인


프록시를 통해 웹 사이트의 게시물을 등록한다.



파로스 툴을 이용하여 'board/board_insert.asp' 에서 POST 방식으로 등록된 것을 확인한다.




게시물 등록 시 필요한 데이터 변수명 들을 확인한다.

3. CSRF 스크립트가 포함된 게시물 등록


<body onload="document.form.submit();">
<form METHOD ="POST" action="http://192.168.137.143:81/board/board_insert.asp" name="form" enctype="multipart/form-data">
  <input type=hidden name="cmd2" value="write">
  <input type=hidden name=info_idx value="4">
  <input type=hidden name="p_from" value="">
  <input type=hidden name="re" value="">
  <input type=hidden name="sr" value="">
  <input type=hidden name="k" value="">
  <input type=hidden name="w" value="">
  <input type=hidden name="page" value="1">
  <input type=hidden name="gubun" value="qna">
  <input type=hidden name="b_com" value="yes">
  <input type=hidden name="info_title" value="제목 입력">
  <input type=hidden name="info_name" value='작성자 입력'>
  <input type=hidden name="info_pwd" value="비밀번호 입력">
  <input type=hidden name="info_content" value="게시물 내용 입력">
</form>


파로스 툴을 이용하여 확인한 결과를 이용하여 위와 같은 스크립트가 포함된 게시물을 등록한다. 관리자는 확인이 필요한 게시물로 파악하여 게시물을 확인한다.


관리자는 CSRF 스크립트가 포함된 게시물을 확인시 위와 같이 관리자의 권한으로 게시물이 등록 되게 된다.


관리자의 권한으로 공격자가 원하는 CSRF 스크립트 요청이 발생한다.


4. 대응방안


  1. 서버에서 쿠키 이외의 다른 파라미터 값으로 추가 인증을 처리
    - 중요 action을 처리 할 때, 추가 인증 수단을 사용한다면 공격은 불가능하다.
  2. XSS 스크립트의 실행 방지
    - XSS 취약점이 존재하지 않더라도 스크립트를 실행시킬 수 있기 때문에 XSS만 막았다고 해서 CSRF를 막았다고는 할 수는 없다.
  3.  값이 매번 바뀌는 one TIME 값 사용
    - 인증 값을 알아내는것이 힘들고, 사용자 마다 매번 인증 값이 바뀐다. 쿠키가 아닌 다른 형태의 매번 바뀌는 인증 값을 사용한다.
  4. IPS나 웹 방화벽을 사용
    - CSRF 스크립트는 정상적인 HTML 스크립트 이기 때문에 보안 솔루션으로는 방어를 할 수 없고 중요 공격 로직을 파악하고 분석하여 안전한 웹 어플리케이션을 개발한다.

[출처]

http://blog.naver.com/limjongmin15/40161766681
http://blog.naver.com/axlovelee/130169545811
http://tm-csc.tistory.com/entry/7-ebHacking%EC%9B%B9%ED%95%B4%ED%82%B9-CSRF
http://cafe.naver.com/bwys/545
http://blog.daum.net/sysnet924/277

2016년 9월 4일 일요일

[Web] 웹 기반 공격 모니터링 분산 시스템 - Honerix

Honerix는 웹 기반의 공격을 저장하고 모니터링 하기 위한 분산 시스템이다. 취약한 응용프로그램을 시물레이션 하여 보여 주고 있다. 원하는 사례들을 검색하고 그 공격이 어떤 형태로 진행했는지 한눈에  볼 수 있기 때문에 학습하는데 도움이 된다.

https://www.honerix.com

위 사이트에 접속하면 아래와 같은 화면이 나타난다.



'wordpress'와 'bash' 단어를 입력하였다.


워드프레스 기반에서 제일 많은 공격이 되는 계정 무작위 대입 공격(brute Force)에 대한 사례를 볼 수 있다. 


Bash의 경우 Shellshock Exploit 공격을 볼 수 있다.

이뿐만 아니라 다양한 공격 사례들을 볼 수 있다. 학습할 때 패턴 검색이 어렵다면 이를 충분히 활용해도 좋을거 같다.

[출처]

https://brunch.co.kr/@c4u/133

2016년 2월 1일 월요일

[Web] OWASP TOP 10 2010년과 2013년 비교

OWASP TOP 10 이란?

 OWASP(The Open Web Application Security Project)는 오픈소스 웹 애플리케이션 보안 프로젝트이다. 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며, 10대 웹 애플리케이션의 취약점 (OWASP TOP 10)을 발표한다.

 OWASP TOP 10은 웹 애플리케이션 취약점 중에서 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들 10가지를 선정하여 발표하며 문서를 공개한다.

2010년과 2013년 OWASP 보안 위험 비교표

2010년과 2013년 OWASP 보안 위험 비교표

2013년 OWASP 보안 위험 신규 추가 사항

 2010년 A7 - 안전하지 않은 암호 저장(Insecure Cyyptograhic Storage)과 A9 - 불충분한 전송(Insufficient Transport Layer Protection) 항목이 통합되어, 2013년 A6 - 민감 데이터 노출(Sensitive Data Exposure)항목으로 등록되었다.
 2013년 A9 - 알려진 취약점을 사용하는 컴포넌트(Using Components with Known Vulnerabilities) 항목이 새롭게 등록되었다.
 2010년 A8 - URL 접근 제한 실패(Failure to Restrict URL Access) 항목이 A7 - 기능 레벨 접근 관리 소홀(Missing Function Level Access Control) 항목으로 확장되어 등록되었다.

2013년 OWASP 보안 위험 내용 변경 사항

 2013년 A2 - 취약한 인증과 세션 관리(Broken Authentication and Session Management)의 보안 취약점(Security Weakness) 중 알려진 정도(Prevalence)가 널리 알려짐(Widespread)으로 변경되었다. (2010년엔 보통 'common' 이었다.)
 2013년 A7 - 기능 레벨 접근 관리 소홀(Missing Function Level Access Control)의 보안 취약점(Security Weakness) 중 알려진 정도 (Prevalence)가 널리 알려짐(Widespread)으로 변경되었다. (2010년 A8 - URL 접근 제한 실패 항목에서는 알려지지않음 'Uncommon' 이었다. )

OWASP TOP 10 2013 내용

  • A1-인젝션
    SQL, 운영체제, LDAP 인젝션취약점은 신뢰할 수 없는 데이터가 명령어나 질의문의 일부분으로서 인터프리터에 보내질 때 발생한다. 공격자의 악의적인 데이터는 예기치 않은 명령실행이나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있다.
  • A2-취약한 인증과 세션관리
    인증과 세션관리와 관련된 애플리케이션 기능은 종종 공격자가 다른사용자 ID를 가장할 수 있도록 암호, 키 또는 세션토큰을 손상하거나 다른 구현결함들을 악용할 수 있는 취약점을 발생시킨다.
  • A3-크로스 사이트 스크립팅(XSS)
    XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와적절한 검증이나 제한없이 웹브라우저로 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션탈취, 웹사이트변조, 악의적인 사이트로 이동을 할 수 있다.
  • A4-안전하지 않은 직접 객체 참조
    직접객체참조는 개발자가 파일, 디렉토리, 데이터베이스키와 같은 내부구현 객체를 참조하는 것이 노출할 때 발생한다. 접근통제를 통한 확인이나 다른 보호수단이 없다면, 공격자는 노출된 참조를 조작하여 허가 받지않은 데이터에 접근할 수 있다.
  • A5-보안상 잘못된 구성
    훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션서버, 웹서버, 데이터베이스서버 및 플랫폼에 대해 보안구성이 정의되고 적용되기를 요구한다. 기본으로 제공되는 값은 종종불안하기 때문에 보안설정은 정의구현되고 유지해야 한다. 또한, 소프트웨어는 최신의 상태로 유지해야 한다.
  • A6-민감한 데이터 노출
    많은 웹애플리케이션들이 신용카드, 세금ID 및 인증정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드사기, 신분도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 수정할 수 있다. 중요 데이터가 저장 또는 전송중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호조치를 하여야 한다.
  • A7-함수 수준 접근통제 누락
    대부분의 웹애플리케이션은 UI에 해당 기능을 표시하기 전에 기능수준의 접근권한을 확인한다. 그러나 애플리케이션은 각 기능에 접근하는 서버에 동일한 접근제어 검사를 수행한다. 요청에 대해 적절히 확인하지 않을 경우 공격자는 적절한 권한없이 기능에 접근하기 위한 요청을 위조할 수 있다.
  • A8-크로스 사이트 요청 변조(CSRF)
    CSRF공격은 로그온 된 피해자의 취약한 웹애플리케이션에 피해자의 세션쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP 요청을 강제로 보내도록하는 것이다. 이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 착각하게 만드는 요청들을 생성하기 위해 피해자의 브라우저를 강제할 수 있다.
  • A9-알려진 취약점과 컴포넌트 사용
    컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어모듈은대부분 항상 전체 권한으로 실행된다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실 또는 서버탈취를 용이하게 한다. 알려진 취약점과 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어체계를 손상하거나, 공격가능한 범위를 활성화하는 등의 영향을 미친다.
  • A10-검증되지 않은 리다이렉트와 포워드
    웹애플리케이션은 종종 사용자들을 다른 페이지로 리다이렉트하거나 포워드하고, 대상 페이지를 결정하기 위해 신뢰할 수 없는 데이터를 사용한다. 적절한 검증 절차가 없으면 공격자는 피해자를 피싱 또는 악성코드사이트로 리다이렉트하거나 승인되지 않은 페이지에 접근하도록 전달할 수 있다.


[출처]

https://ko.wikipedia.org/wiki/OWASP
http://dailysecu.com/news_view.php?article_id=5022
http://spearslove.tistory.com/entry/OWASP-2010%EB%85%84%EA%B3%BC-2013%EB%85%84-%EB%B3%B4%EC%95%88-%EC%9C%84%ED%97%98-%EB%B9%84%EA%B5%90