2017. 7. 27.

[웹 취약점] 취약점 점검을 도와줄 크롬 확장 프로그램 (플러그인)

크롬 환경에서 웹 취약점 점검을 수행 할 때 장점은 크롬 '앱'을 마음껏 활용 할 수 있다는 것이다.

1. EditThisCookie : 쿠키 확인 및 변경
2. HTTP Headers : 웹 페이지 헤더 확인
3. shodan : 웹사이트에 열려있는 서비스 포트 확인
4. Proxy SwitchySharp 크롬에서 프록시 사용
5. jsonview : json  파일 형식을 보기좋게 정렬해준다.
6. j3corder
7. Set Character Encoding : 인코딩 메뉴 (크롬 자체에서 인코딩 메뉴가 사라짐)
기타 ( 시간이 여유있을 때 기능을 숙지하면 좋을 나머지 앱들)

  • simple Rest Client (브라우저에서 GET 메소드가 아닌 POST, Options 등 다양한 메소드를 테스트 할 수 있다.) -- https://code.i-harness.com/ko/q/49345e
  • Yet Another REST Client
  • CHROME UA SPOOFER


Continue reading

2017. 7. 26.

[웹의 이해] Windows 에서 PHP 설치 및 사용

회사의 점검 노트북이나 집의 개인노트북에서 간단하게 PHP 웹서버를 구축하여 테스트 해보고 싶어졌다. APM이 Apache, PHP, MySQL 의 약자인 만큼, PHP는 Apache와 궁합이 잘 맞다.  그러나 main OS인 Windows 7 에서 편리하게 테스트하고 싶었다. 늘 그럿듯이 오랜 삽질 끝에 성공했다.

1. CGI 설치

프로그램 및 기능 - > Windows 기능/사용 안함 -> CGI 활성화



2. PHP 다운로드 

윈도우 용 PHP 파일을 다운받는다. (http://windows.php.net/download)
운영체제 버전(64/32) 확인한 후, Non Thread safe 버전을 다운받는다.


** 중요한점은 windows 파일에서 php 를 구동하려면, Microsoft Visual C++ 이 설치되어있어야 한다. 위의 경우는 VC 11 이라고 설치되어 있으니 Visual C++ 2012 를 설치하는게 안전할 것이다. (2011 을 설치해도 될 것 같긴한데 테스트 해보지는 않았다.)
Visual C++ 2015 다운 로드 경로 : https://www.microsoft.com/ko-KR/download/details.aspx?id=52685

다운을 받고 C:\PHP 폴더에 압축을 푼다. '폴더명' 안에 파일이 떨어지는데 폴더는 남겨두고 파일은 C:\PHP 아래에 다이렉트로 넣어둔다.

3. 환경변수 추가

시작 -> 프로그램 및 파일 검색 -> 환경변수 -> 계정 or 시스템 환경 변수 편집

시스템 변수 ->  PATH 부분을 편집 -> C:\PHP\; 추가

4. 모듈 맵핑 추가
IIS 관리자 실행 -> 처리기 매핑 -> 모듈 매핑 추가


5. php.ini 수정

다운받은 php 파일내에 php.ini-production 파일을 php.ini 으로 변경하고 C:Windows\ 폴더로 복사한다. (참고로 필자는 따로 복사하지 않았는데도 되었다..)

http://flexsdk.tistory.com/23 블로그에 나와 있는대로 보안 설정을 해준다.


6. 웹 사이트 추가

IIS 관리자 -> 웹 사이트 추가 -> '사이트 이름'과 '실제 경로'까지만 지정

7. 기본문서 설정

아래와 같이 기본문서를 지정하면 서버에 접속했을 때 자동으로 기본문서(Index.php)를 찾아서 실행시켜준다. 만약 원하는 확장자의 파일이 없으면 index.php 와 같이 추가시켜준다.


http://localhost 에 접속하여 확인해 본다.


참고
  • http://studyforus.tistory.com/13
  • http://blog.daum.net/jungsangun/7691268
  • http://flexsdk.tistory.com/23 (php ini 설정 잘 설명되어 있음)
  • https://msdn.microsoft.com/ko-kr/library/hh994592(v=ws.11).aspx
  • http://j07051.tistory.com/610

Continue reading

2017. 7. 25.

[웹의 이해] 정적 페이지, 동적 페이지

웹 취약점 진단을 하기전 웹과 관련하여 반드시 이해해야 하는 항목이 있다. 금번 포스팅은 정적 페이지와 동적 페이지에 대한 이해와 차이점에 대해 정리하였다.

정적 페이지와 동적 페이지

1) 정적 웹 페이지
사용자가 URL을 통해 서버에 웹 페이지를 요청하였을 때, 서버 안에 이미 만들어져 있는 HTML 문서를 사용자에게 보내주는 경우 이를 정적 웹페이지라고 한다.
웹 피이지의 내용이 요청하는 사용자가 달라질 필요가 없는 정적인 정보인 경우 사용되며, 모든 사용자는 같은 결과의 웹페이지를 서버에 요청하고 응답받는다.
EX) 회사소개, 음식메뉴


2) 동적 웹 페이지
사용자(혹은 클라이언트)가 URL 을 통해 서버에 웹 페이지를 요청했을 때, 서버는 사용자에 맞는 HTML 문서를 생성하여 사용자에게 응답하게 된다. 이를 동적 웹 페이지라고 한다.


인터넷을 이용하면서 보게되는 웹 페이지는 크게 두가지로 나뉘어진다. 하나는 정적 웹 페이지이고 다른 하나는 동적 웹 페이지이다. 정적 웹 페이지는 마치 컴퓨터에서 저장된 텍스트 파일을 메모장으로 열어보듯이 저장된 그대로 보는 것이며, 동적 웹 페이지는 그런 내용들이 다른 변수들에 의해서 변경되어 보여진다. 가장 큰 차이는 사용자가 받아보는 웹 페이지가 동적으로 변하는가 아닌가에 있다.

우리가 보는 대부분의 웹 페이지는 동적 웹 페이지라고 할 수 있다. 단순 소개 페이지가 아닌 뉴스 사이트에서 뉴스를 본다거나 웹툰을 본다거나 할 때에도 동적으로 변환된 페이지가 사용자에게 전달될 것이다.

사용자 입장에서는 서버에서 처리된 웹 페이지를 전달받기 때문에 정적 웹 페이지와 동적 웹 페이지를 구분지을 필요가 없다. 어차피 전달받는 웹 페이지는 HTML로 이루어진 웹 페이지기 때문이다. (Javascript 를 이용하여 동적으로 변하긴 하지만, 이는 Client Side Script 에 해당하며 동적이라기 보다 정적 페이지로 분류된다.)

참고

  • http://titus94.tistory.com/4
  • http://seohs.tistory.com/327

Continue reading

2017. 7. 23.

[웹 취약점] 개발자 도구를 이용한 웹 취약점 점검

보안인닷컴 사이트에서 stegano 님이 개발자 도구로 웹 취약점 점검을 한다는 내용을 보게 되었다. 글이 굉장히 유용하고 업무에도 활용하면 좋겠다고 판단하여 해당 내용을 보기 편하게 정리하기로 했다.

웹 취약점 점검을 할 때 자동 점검 툴로 스캔을 하는 것 외에 프록시 툴을 이용하여 동적 진단을 하는 경우도 많다. Burp suite 나 Paros 가 가장 널리 사용되는 프록시 툴이다. 장단점이 있겠지만 프록시 툴을 이용하면 매번 패킷을 인터럽트 해야 해서 번거로울 수도 있다.

본 포스팅에서는 프록시 툴이 아닌 웹 개발자 도구를 이용하여 웹 취약점을 수행하는 기법에 대해 정리하려고 한다.

크롬에서는 ctrl+Shift+C 이고, 익스프롤러에서는 F12 를 누름으로써 개발자도구를 실행 할 수 있다.

1. 유효성 검사 우회

크롬 개발자 도구의 inspect (Ctrl+Shift+C) 기능을 활용하여 유효성 검사 우회 점검을 할 수 있다. 이 기능을 활용하면 마우스로 웹 브라우저를 선택함으로써 해당 부분의 소스코드를 확인 할 수 있다. 또는 ctrl + F 로 특정 함수 (onSubmit 또는 onClick) 를 검색해서 소스를 보면 이후 호출되는 함수를 확인 할 수 있다.














만약 함수명이 fregister_submit(this); 이라면, console 탭에서 해당 함수를 Overwriting 하여 유효성 검사하는 로직을 없애 버릴 수도 있다.


2. 파일 업/다운로드 취약점

1) 파일마다 서버와 통신한결과를 보여준다. 어떤 파라미터를 넣어서 요청했고 응답이 왔는지 볼 수 있다. 주로 파일 업/다운로드 취약점, 서버정보 취약점을 발견할 때 사용된다.


3. 자바스크립트 코드를 이용한 웹 페이지 소스 분석
자바스크립트를 이용하여 필요한 부분의 객체를 찾아내거나 페이지내에서 중요한 정보를 찾아내는 스크립트를 작성하여 사용 할 수 있다.



리스트업 된 값을 변조 할 수 있다. console 창에서 WSS.setv("key", "value");
즉 예를 들면

위 사진과 같이 입력하면, 히든 필드 sm의 값이 HI 로 변경된 것을 알 수 있다.


참고 - < button과 submit의 차이점 >
<input type="button" value="회원가입" />
<input type="submit" value="회원가입" />

button인 경우에는 onClick="함수()"이 이벤트가 실행되고, submit인 경우에는 onClick="함수()"과 더불어 onSubmit="return 함수()" 가 실행된다.

Continue reading

2017. 7. 22.

[웹 취약점] 취약점 점검 관련 사이트

침투테스트 가상환경을 샌드박스 형태로 제공하여, 온라인상에서 모의해킹을 해볼수 있는 사이트
https://hack.me/

OWASP에서 웹 취약점 테스트를 위해 제공하는 VM웨어용 가상이미지 파일 다운로드 및 프로젝트 페이지
http://sourceforge.net/projects/owaspbwa/files/

온라인상으로 프로그래밍언어를 실행하고 컴파일할 수 있는 사이트
http://compileonline.com/

취약한 웹 어플리케이션 소스를 제공하는 사이트
http://www.dvwa.co.uk/

온라인 모의해킹 사이트
http://hack-me.org/index.php?p=home

OWASP 취약점을 바탕으로한 취약점 테스팅 가상환경
http://sourceforge.net/projects/vicnum/

리눅스, 아파치, PHP, MySQL의 보안을 학습하기 위한 가상환경을 제공
http://sourceforge.net/projects/lampsecurity/

웹취약점 테스트를 하기 위해 제작된 가상이미지
http://sourceforge.net/projects/websecuritydojo/

다양한 환경에서 악의적인 코드를 분석할 수 있는 가상머신
http://bruteforce.gr/honeydrive

웹취약점 테스트 환경을 제공하는 사이트
https://www.pentesterlab.com/exercises

웹해킹 전문가가 만든 침투테스트를 위한 가상 이미지
https://bechtsoudis.com/work-stuff/challenges/drunk-admin-web-hacking-challenge/

다양한 모의 해킹를 실습하고 트레이닝할 수 있는 기능을 제공하는 툴
http://sourceforge.net/projects/null-gameover/

SQL 인젝션을 테스트하고 실험해 볼 수 있는 환경(소스)를 제공하는 사이트
https://github.com/Audi-1/sqli-labs

침투테스트 환경을 제공(DVL)
http://sourceforge.jp/projects/sfnet_virtualhacking/downloads/os/dvl/DVL_1.5_Infectious_Disease.iso/

모의해킹 연습 사이트 링크 모음
http://chogar.blog.me/80130034776

모의해킹 관련 정보를 제공하는 사이트
http://www.amanhardikar.com/mindmaps/PracticewithURLs.html


출처

  • http://kyaru.blog.me/130156837353



Continue reading

2017. 7. 19.

[웹 취약점] 로그인 창에서 응답 값 변조를 통한 로그인

프록시를 이용해 로그인 페이지 점검을 할 때 쿠키 변조를 통해 아주 간단히 권한을 상승 할 수 있다. 전제는 쿠키를 사용하며, 쿠키의 유효성을 브라우저에서만 점검하고 서버단에서 점검하지 않을 경우이다.

예를 들어, 로그인 성공했을때 response 값이 "Wrong data" 이고, 실패 했을때 reponse 값이 "Right data" 이라고 가정하자.

사용자는 패스워드가 틀린 정보를 입력하고도 reponse 값을 Wrong data 에서 Right data로 변조하면 로그인이 될 것이다. 위에서 말했듯이 브라우저에서만 쿠키의 유효성을 확인하기 때문에 가능한 취약점이다.

Continue reading

[웹 취약점] HTTP 보안 헤더 모음

APP SCAN 점검 결과 보고서에서 간혹  Content-Security-Policy 미포함 에러가 포함되어 출력된다. 이번 기회에 HTTP 에서 보안을 강화하는 헤더에 대해 조사해보도록 하였다.
HTTP 헤더값에는 다양한 내용이 포함되어 있다. 

1. Content-Security-Policy

XSS과 연관된 공격의 피해를 최소화 할 수 있으며, 스크립트를 허용할 url(신뢰할 수 있는 url)을 헤더에 설정하는 옵션

사용 예는 다음과 같다.
  • Content-Security-Policy: script-src https://test.com

2. X-Frame-Options

clickjacking(사용자의 클릭을 훔쳐 엉뚱한 곳을 클릭하게 만드는 공격 기법)  방지 기능 포함
사용 방법은 다음과 같이 3가지가 있다.

  • X-Frame-Options : DENY (모두 표시 거부)
  • X-Frame-Options : SAMEORIGIN (같은 origin 일 경우에만 허용)
  • X-Frame-Options : ALLOW FROM http://sample.com (지정한 orgin에 한하여 허용)

3. X-Content-Type-Options

jpg 확장자로 js 파일을 올려 우회를 한 후에 script 태그에 src로 넣는 수법을 방지하는 헤더
이 헤더를 넣으면 MIMETYPE과 다르게 사용하지 못하게 한다. nosciff 를 넣어주면 활성화된다.

사용 예는 다음과 같다.
  • X-Content-Type-Options: nosniff

4. (HTTP) Strict-Transport-Security (HSTS)

해당 해더를 받게 되면 브라우저는 다음에 사이트에 접속할 때  https:// 를 붙이지 않더라도 웹브라우저가 https 로 접속하는 기능이다. 이와 같은 방법으로 SSL http, SSL strip 공격을 피할 수 있게된다. 
사용방법은 아래와 같다. includeSubDomains 를 넣어주면 서브도메인들에도 적용이된다. 
  • Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

5. Cashe control

악의적인 사용자가 브라우저 히스토리를 악용 할 수 있기 때문에 브라우저가 웹페이지 컨텐츠를 캐싱하지 않도록 설정한다.
사용 예는 다음과 같다.
  • Cache-Control: no-cache

6. X-XSS-Protection

웹 브라우저의 내장 XSS Filter를 사용하도록 하는 옵션
사용 예는 다음과 같다.

  • X-XSS-Protection;  1; mode=block

참고
  • https://jaewoongmoon.wordpress.com/2016/07/08/http-%EC%9D%91%EB%8B%B5-%EB%B3%B4%EC%95%88-%ED%97%A4%EB%8D%94%EC%99%80-%EC%8A%A4%ED%94%84%EB%A7%81-security-%EC%84%A4%EC%A0%95/
  • https://www.kjwon15.net/wordpress/articles/computer/security/288

Continue reading

Popular Posts

Recent Posts

Powered by Blogger.