태그 – 문자 인코딩 및 문서 요약 정보 태그에 대해 알아보도록 하겠습니다. 태그는 태그 안에서 쓰이는 태그로서 화면에 글자를 표시하는 문자 인코딩 방법을 비롯해 웹 문서 키워드 등을 지정할 수 있습니다. 이것은 웹 문서 정보를 검색 엔진에게 전달해 주는데 매우 유용하게 사용됩니다. 태그에서 가장 중요한 부분은 문자 인코딩을 지정하는 것입니다. 문자 인코딩 웹 서버는 영어를 기본으로 하기 때문에 웹 문서에서 한글을 표시하려면 한글을 화면에 나타내기 위한 문자 세트를 지정해야 합니다. 이것을 문자 인코딩 이라고 하는데 HTML5에서는 한글과 영문을 비롯해 모든 언어를 표시할 수 있는 utf-8 방식을 사용 합니다. DOCTYPE html> Example 문서 정보 태그를 이용하면 문서에 대한 간단한 설명을..
HTML의 기본 구조를 살펴보도록 하겠습니다. HTML 문서는 일반 문서와 달리 정해진 형식이 있습니다. 소스가 아무리 짧더라도, 또는 아무리 길더라도 , , - 웹 브라우저가 웹 문서를 해석하기 위해 필요한 정보들을 입력하는 부분. 문서에서 사용할 외부 파일들도 이곳에서 링크. 여기에 있는 정보는 실제 문서 내용은 아님. 스타일 및 스크립트 등이 포함되기도 함. 4) ~ - 실제로 브라우저 화면에 나타날 내용. 대부분의 태그가 이 태그 안에 들어감. HTML 문서 예제
HTML(HyperText Markup Language) HTML이란 HyperText Markup Language의 줄임말입니다. 문자 그대로 접근해보면 하이퍼텍스트를 마크업하는 언어라는 말인데 그럼 ‘하이퍼텍스트’는 무엇일까요? 이 하이퍼텍스트는 웹 사이트에서 링크를 클릭해 다른 문서나 사이트로 즉시 이동할 수 있는 기능을 말합니다. ‘마크업’은 태그(tag)를 사용해 문서에서 어느 부분이 제목이고 본문인지, 어느 부분이 사진이고 링크인지 표시하는 것으로 ,, 을 이용해 나타냅니다. 즉, 웹에서 자유롭게 오갈 수 있는 웹 문서를 만드는 언어가 HTML입니다. 컴퓨터에서 사용하는 모든 파일에는 각각 고유의 형식이 있습니다. Ex) 엑셀 -> *.xlsx, 한글 -> *.hwp 웹의 경우도 마찬가지로 웹..
■ 0번 ~ 1023번 : 잘 알려진 포트 (well-known port) ■ 1024번 ~ 49151번 : 등록된 포트 (registered port) ■ 49152번 ~ 65535번 : 동적 포트 (dynamic port) 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP포트 번호의 일부로 강제적으로 지정된 것은 아니며, IANA의 권고안일 뿐이다. 가끔 각 포트 번호를 그대로 사용하지 않고 다른 용도로 사용하기도 하는데 이 경우, 트로이 목마와 같은 프로그램들이 악의적인 목적으로 포트를 변경하여 사용하는 경우도 있다. ● 20 - FTP(파일 전송 프로토콜) ● 21 - FTP 제어(Passive) ● 22 - SSH(Secure shell..
DVWA의 Security Level을 Low 단계로 설정하고 Insecure CAPTCHA 메뉴로 들어간다. 우선 CAPTCHA 기능이 어떻게 동작하는지 살펴보기 위해 Burp Suite의 Proxy history를 살펴 보자. password는 'normal'로 입력하고 CAPTCHA 부분은 그림에 나온대로 입력한다. 다 입력한 후 change 버튼을 누른다. 이 때 http history에서 요청을 살펴 보자. 첫 번째 요청을 보면 step 이라는 파라미터에 1이라는 값이 설정 돼있고 우리가 비밀번호로 입력 했던 normal 값이 두 번 나온다. 그리고 recaptcha_challenge_field라는 것이 있는데 이것은 captcha를 확인할 때 매 번 랜덤하게 생성되는 값이 다. recaptch..
CAPTCHA 라는 것은 컴퓨터는 알 수 없는 흘려쓴 글씨나 그림을 이용하여 이를 제대로 인식한다면 사람이라고 판단하는 것이다. 회원가입 이나 비밀번호 변경 등과 같이 사람이 직접 하지 않으면 심각한 문제가 될 수 있을 때 사용 할 수 있다. 또 Brute Force 공격 처럼 프로그램을 이용한 공격에 대응 할 때 아주 효과적이다. 하지만 이를 제대로 구현하지 않게 되면 해커는 이것을 우회하여 공격 할 수 있다. 비밀번호 변경을 예로 다음 그림을 보자. 비밀번호 변경이 두 단계로 진행된다. 첫 번째 단계에서 CAPTCHA를 이용하여 정말 사람인지 확인한다. 확인이 되고나면 두 번째 단계에서 비밀번호를 변경한다. 그런데 이 과정이 제대로 구현되어 있지 않은 경우 밑의 그림과 같이 해커가 CAPTCHA를 확..
파일 인클루젼 공격은 주로 PHP 어플리케이션에서 발생한다. 그 이유는 PHP에는 include라는 함수가 있는데 이 함수를 이용하여 다른 파일을 소스코드에 직접 포함시킬 수 있기 때문이다. 이 때, include 할 파일을 웹 요청을 통해서 지정할 수 있는 경우 해커가 그 값을 조작하여 원하는 파일을 처리 할 수 있도록 만들 수 있다. 파일 인클루전 공격은 크게 로컬 파일 인클루젼(LFI)과 리모트 파일 인클루젼(RFI)으로 구분할 수 있다. · 로컬 파일 인클루젼(LFI) - 웹 서버 시스템에 원래 존재하는 파일을 include. · 리모트 파일 인클루젼(RFI) - 원격으로 외부에 있는 파일 까지 include 할 수 있다. 정상적인 상황일 때는 웹 애플리케이션은 file.php를 include하고..
CSRF는 Cross Site Request Forgery의 약자로 사이트 간 요청 위조 라고 번역 할 수 있다. 이 공격 방법은 해커들이 사용자들로 하여금 어떤 링크를 누르게 한 후, 링크를 누르면 사용자 모르게 어떤 특정 기능이 실행 되도록 하는 것이다. 주로 피싱을 활용해 사용자 패스워드를 변경하는 데에 사용된다. 이 공격은 2008년에 1080만명의 개인정보가 유출되었던 옥션 해킹 사건에서 사용된 기법중 하나이다. CSRF 공격은 다음과 같은 과정으로 진행된다. 1. 사용자가 먼저 사이트에 정상적으로 접속하여 로그인 한다. 2. 사용자가 사이트에 접속해 있는 동안 해커가 이메일을 보내서 어떤 링크를 클릭하도록 피싱한다. 이 그림에선 해커가 은행 직원으로 가장한 것이다. 3. 해커가 요구한 링크 클..
Burp Suite의 Intercept가 혹시 켜져 있으면 끈 다음 DVWA Security를 High로 설정한다. 파일 업로드 페이지로 가서 소스코드를 보고 어떻게 대응하고 있는지 확인하자. High단계는 클라이언트에서 자동으로 설정되는 업로드 타입을 보는 것이 아니라 실제 파일 이름의 확장자가 jpg인지 jpeg인지 png인지를 검사하고 있다. 또한 getimagesize라는 함수를 통해 실제로 파일의 내용이 이미지 인지를 검사 하고 있다. medium 단계 보다는 확실히 대응이 강화 되었다. 이 루틴은 어떻게 우회 할 수 있을까? 다시 웹쉘을 업로드 한 후 burp suite로 intercept 해보자. 여기서 이번에는 Content-type 이 아니라 filename 부분을 수정해 준다. 파일 이..
DVWA Security를 Medium으로 설정하고 Low 단계에서 처럼 webshell을 파일업로드 해보자. 이번에는 업로드가 실패했고 jpeg나 png 이미지 파일만 받을 수 있다는 메시지가 출력 된다. burp suite를 준비하여 파일이 업로드 될 때의 요청을 intercept 해보자. 다음과 같이 Burp Suite의 Proxy -> Intercept에서 Intercept On 으로 바꿔 준다. 다시 웹셀을 업로드 해보자. 업로드 요청이 인터셉트 된다. php 부분이 우리가 업로드한 파일의 내용이 전달되는 부분이다. Content-Type을 보면 Application/x-php 라고 설정되어 있는데 우리가 php파일을 업로드 했기 때문에 자동으로 php 타입으로 설정되는 것이다. 이 Conten..
파일 업로드 공격을 실습해보자. 먼저, DVWA에서 DVWA Security 단계를 Low로 설정하고 File Upload를 선택한다. File Upload에 들어가 보면 이전 시간에 보았던 것처럼 이미지 파일을 업로드 하는 부분이 있다. 여기에 이미지 파일 대신 웹쉘 파일을 업로드를 한다. 우린 여기서 다음과 같은 웹쉘 php 파일을 사용할 것이다. 이제 이 파일을 업로드 한다. 이미지 파일을 업로드 하라고 했지만 무시하고 웹쉘 파일을 업로드 한다. Browse 버튼을 눌러 webshell.php 파일을 선택, Upload버튼을 누른다. 결과를 보면 upload가 성공적으로 되었다고 나온다. 경로가 표시되었는데 '../ ' 가 두 번있어서 상위 디렉토리로 두 번 이동한 것을 알 수 있다. 아래와 같은 ..
파일 업로드 공격은 파일을 업로드 할 수 있는 페이지(게시판, SNS 등)에 악성 파일(웹쉘)을 업로드 하는 기법이다. 주로 웹쉘 이라고 하는 악성 파일을 업로드 하게 되는데 웹쉘이라는 것은 커맨드 인젝션 공격과 유사하게 웹을 통해 시스템 명령어를 실행할 수 있는 웹페이지이다. 다음 그림을 보자. 이미지를 업로드 하는 페이지가 있다. 해커는 이 때, 이미지 파일 대신에 웹쉘을 업로드 한다. 이를 막기 위해 웹 애플리케이션은 업로드 된 파일이 이미지 파일인지 검사해야 하는데 이를 제대로 하지 않으면 저장을 하게 된다. 이후 해커가 웹쉘에 접근하게 되면 웹쉘이 실행 된다. 이제 웹쉘을 통해 해커가 원하는 대로 시스템 명령어를 실행 할 수 있다.