스마트시대

Web security -1 본문

보안/kali-linux, Metasploitable

Web security -1

스마트시대 2021. 8. 19. 22:01
728x90

1. WEB 기초

  • Web client에서 Web Server까지는 정적 방식 구조인데 이 방식은 요즘 사용되지 않는다. F/W이 소위 말하는 1차 방화벽이고 그 역할은 80번 포트가 안 열려있는 경우 통과시키지 않는(필터링) 기능을 담당한다. Web F/W는 비정상 클라이언트(공격자 등)가 1차 방화벽을 우회하는 등의 패턴을 걸러주는 역할을 한다. XSS나 SQL injection등의 공격을 감지하고 필터링하는 역할을 한다. Web Apllication Server(WAS)는 물리적인 서버는 아니지만 Database, Web Server의 중간 다리 커뮤니케이션 역할을 수행한다. 마지막으로 Database가 있는데 Web Server와의 질의(SQL)을 수행한다. 이러한 일련의 과정을 동적 방식 구조라 한다.

 

  • HTTP는 비순차적인 텍스트를 제공하고, TCP의 특징을 가지고 있으며 Text형태의 프로토콜이라고 할 수 있다.

 

  • 해당 서버를 모두 설치하고 NIC를 NAT로 해준다.

 

  • Windows server의 IP주소는 상단과 같이 설정한다.



  • BT5_G_R3에서는 root로 로그인 후 startx로 GUI화면으로 이동한다.

 

  • BT5_G_R3의 IP주소는 /etc/network/interfaces에서 상단과 같이 설정한다.

 

  • network를 재시작해준다.

 

  • Windows XP는 상단과 같이 설정한다. 그리고 실습을 위해 방화벽을 사용 안 함으로 설정해둔다.

 

  • 192.168.1.20(Web서버)로 접속이 되는지 확인한다.

 

2-2. http상세 분석

 

  • HTTP에는 request와 respones구조가 있고 위에서부터 Startline, Message Header, Blank, MessageBody로 이루워져있다.

 

 

  • 먼저 get / http / 1.1에 대해서 자세히 분석해보자. 이것이 메시지 헤더이다. GET은 메소드를 나타내고 그 뒤에 있는 ‘/’는 request URL이며 /가 오면 Host: 192.168.1.20등의 정보가 오게 된다. HTTP/1.1는 버전을 나타내며 \r\n은 http에서의 한 칸 띄우기를 나타낸다. 방금 설명한 조합이 시작라인이 된다.

첫번째 줄 Accept:는 클라이언트가 지원하는 파일 형식 표시를 나타낸다.

두번째 줄 Accept:는 클라이언트가 지원하는 언어를 나타낸다.

세번째 줄 Accept:는 클라이언트가 지원하는 인코딩{ ->데이터를 안전하게(그렇다고 암호화의 의미는 아님) 전달할 목적으로 변환}을 나타내며 이해하게 편하게 변환시켜주는 것을 의미한다.

그리고 이 항목에는 메시지 BODY가 없다. 메시지 BODY는 있을수도 없을수도 있다.

 

  • 이러한 흐름을 그림으로 간단하게 나타내면 상단과 같다 switch를 통해 client와 server가 통신을 하고 있는데 attacker가 이 중간에 개입하여 정보를 확인할 수 는 없다. 여기서 arp spoofing등의 기술이 들어가야 이 패킷을 확인할 수가 있다. 이것을 session hijacking(세션 훔쳐오기)라고 부른다.

 

  • Respone의 주요 응답 코드는 상단과 같다. 그 중에서도 200, 401, 404코드는 자주 나오는 코드니 암기해두자.

 

  • http 200번 코드에 대한 내용도 분석해보자. 200(응답코드) ok(메시지)가 오고

server에 대한 정보도 확인할 수 있다. data의 시간은 GMT(세계표준시간)로 작성된다. 그리고 컨텐츠의 길이와 타입이 오고 cache-control은 캐쉬서버 사용 여부를 나타낸다. Set-Cookie는 중요한 개념이니 하단에서 설명하겠다.

 

  • http는 tcp기반에서 동작하는 프로토콜이지만 stateless 방식을 지향한다. 클라이언트가 서버로 request를 하고 서버에서 클라이언트로 reponse를 하고 나면 연결을 끊는게 http의 움직임이다. 이렇게 설정되어 있는 이유는 서버에 비해 클라이언트의 수는 거의 무제한이라고 볼 수 있다. 만약 stateful (connection oriented: 연결지속)방식을 쓰게되면 서버에 부하가 매우 클 것이다. 그러므로 http는 stateless방식을 지향하게 된다.

 

  • 하지만 실생활에서의 인터넷 사용예를 떠올려보면 네이버에서 메일을 확인하고 구글에서 자료를 찾아본 후 네이버로 다시 돌아오면 상단과 같이 로그인은 되어 있는 상태이고 바로 메일을 확인할 수 있다. 웹이 발전됨에 따라 이러한 지속 연결이 필요한 상황이 생기게 된 것이다. 그래서 cookie라는 개념이 탄생하게 된 것이다.

 

2-3. Proxy server

 

  • proxy server란 내외부에서의 중계 역할 진행하는 서버로써 캐시메모리 저장 등을 수행한다. 클라이언트 서버 사이에서 오고가는 request, response정보를 저장해둠으로써 중계 역할을 하는 것이다.

 

  • 실습을 위해 Internet Explorer의 인터넷 옵션 -> 연결 -> LAN 설정에서 프록시 서버를 로컬 주소:8080로 지정해준다.

 

 

  • 프록시 서버를 바로 설치를 하기에는 노력이 많이 요하니 Burp Suite라는 어플을 이용한다. 이 어플이 켜져 있는 상태에서 웹서버로 접근하려고 하면 접근을 바로하지는 못하는 상황이다. 여기서 등장하는 것이 Proxy이며 proxy에서 허가를 해줘야 나갈 수 있는 것이다.

 

 

  • Forward를 클릭하면 request, reponse에 대한 상세정보를 확인할 수 있으며Intercept is on을 클릭하여 off로 해주면 이러한 기능을 끌 수도 있다.

여기서 주의해야할 사항은 이러한 프록시 어플을 꼭 실행한 상태에서 실습을 진행해야한다는 점이다.

 

 

  • 그렇지 않으면 이와 같이 접근조차 할 수 없는 상태가 되어 버린다.

 

  • 또 다른 어플로는 Paros가 있다. 상단에서 진행했던 실습을 진행하려면 Trap request, Trap response에 체크를 넣고 Continue를 클릭한다. 또 다른 실습을 위해 IP설정의 DNS에서 8.8.8.8을 넣어준다.

 

 

  • Tools -> Fliter에서 response body를 수정해줌으로써 검색사이트에서 표시되는 문자열을 바꿀 수가 있다.

 

 

  • 구글 등에서 검색하면 url이 해당키워드로 바뀌어 있을 것을 확인할 수 있다. 이와 같은 방법으로 구글 로고 등을 원하는 이미지로 바꿀 수도 있다.

 

 

  • BT5_G_R3서버에서도 Proxy 서버 실습을 진행할 수 있다. paros zip파일을 root폴더에 옮겨두고 unzip으로 압축을 해동해준다.

 

  • paros 디렉토리로 이동하여 java –jar paros.jar를 실행하여 accept를 클릭한다.

 

  • firefox를 실행하여 Edit -> Preferences를 클릭하여 Advanced탭에서 상단과 같이 입력해준다.

 

2. WEB LANGUAGE

  • http의 주요 method로는 상단과 같다. 특히 GET, POST과 많이 쓰이니 잘 알아두자.

 

  • get method는 login.asp(URL)?id=nuno&pw=1234(Parameter)를 통해서 전달할 수 있다.

 

 

  • C:/intepub/webhack경로에서 상단과 같은 코드를 입력하고 test.asp로 저장한다.

 

  • winxp에서 xss팝업창이 뜨는 것을 확인한다.

 

  • Trap으로 확인해보면 body부분의 your input data = hack이라는 부분이 파라미터이고 이는 서버가 처리해서 여기도 넘겨준 것이다.

 

  • webhack폴더에서 method_test.html을 작성하고 

 

  • 역시 webhack폴더에서 method_test.asp를 작성한다.

 

  • 하지만 이런 방식은 헤드에 URL이 노출이 되어 버린다. 이와 같이 ID,PW 등 URL에 노출이 되면 안되는 정보들은 GET 방식이 유효하지 않다. 

 

  • 보통은 POST method와 같이 헤더가 아닌 메시지 body부분에 새롭게 위치시켜 전달되는 방식을 이용한다.



 

  • 이와 같이 검색 등 URL에 검색내용이 노출이 되도 되는 방식에서 GET method를 사용한다.



3. ENCODING SCHEMA

  • URL Encoding의 정의와 예제에 대해 설명하였고

 

  • 검색어 time & effort = skill을 하나하나 URL에 나타나 있는 Encoding방식으로 대입해서 비교해 보면 +는 스페이스(공백)이고, %26은 &기호이고, %3D는 =기호이다.

 

  • 중요한 개념중 하나인 HTML Encoding에 대한 설명이다.



  • 네이트에서 “<>”를 검색하여 코드 분석기를 열어 확인해보면 HTML에서 &lt, &gt로 표현하는 것을 알 수 있다.



  • win2000서버에서 testencoding.html을 작성하여 xp에서 접근을 하면 상단과 같은 글귀가 출력이 된다.



  • <>부분을 상단과 같이 수정하여도 결과값은 같게 출력이 된다.



  • 정상적인 페이지에서 상단과 같은 악의적 코드(XSS)를 삽입한다.

 

  • 다시 접근해보면 hack!이라는 팝업창이 뜨는 것을 확인할 수 있다.

 

  • <>부분을 상단과 같이 변경하면 팝업창이 뜨지 않는 것을 확인할 수 있다.

 

  • Unicode는 다양한 문자크도를 표현하기 위해 만들어진 인코딩 방식으로 UTF-8이 표준코드라고 할 수 있다.




 

  • ascii코드표와 base64코드표이다.

 

  • paros의 endocer/hash에서 각각의 Encode들을 확인할 수 있다.

 

  • 인증에 대한 방식으로 Anonymous, Form Based Authentication이 특히 중요하다.



  • Win2000서버에서 인터넷 정보 서비스의 webhack을 오른쪽 클릭 -> 등록 정보에서

 

  • 디렉터리 보안 탭에서 편집 -> 기본 인증에 체크를 한다.

 

  • Winxp에서 서버에 접근할 때 Trap의 내용을 살펴보면 401에러가 한 번 뜨고



  • Authorization에 대한 내용이 나타나고 난 뒤 페이지가 정상적으로 출력이 되는 것을 확인할 수 있다.

 

728x90
반응형

'보안 > kali-linux, Metasploitable' 카테고리의 다른 글

Web security -4  (0) 2021.08.19
Web security -3  (0) 2021.08.19
Web security -2  (0) 2021.08.19
Kali-Linux,Metasploitable  (0) 2021.06.24
Comments