정보보안 스터디 1주차 - 웹 서버의 구조
웹 개발을 직접 해보면 웹 서버에 대한 이해가 아주 쉽습니다!
*html에 관하여
인터넷이 나온 초기를 생각해 봤을 때,
원래는 글밖에 없는 문서를 주고 받았습니다.
하지만 이 글밖에 없는 문서(Document)'를 html이라는 글을 이쁘게 꾸며주는 코드로 씌우면서,
비로소 우리에게 익숙한 사진, 폰트를 포함한 내용이 되는 것입니다.
*동적 페이지의 탄생 배경
예를 들어
네이버는 메인 페이지 틀안에서 사용자의 로그인 정보만 달라지는데
처음에는 정적인 페이지 하나하나로 구성되어 있었습니다.
회원1 로그인
회원2 로그인
회원3 로그인
...
회원10만 로그인
회원 수가 많아질수록 이 파일들이 모이게 되면 서버의 용량만 차지할 뿐입니다.
그래서 틀은 그대로하고 회원정보만 바꾸자! 라는 것이
동적인 페이지가 나온 배경이 되겠습니다.
웹 서버
*웹 서버의 구조
Web Server(정적인 페이지 제공) ----------- WAS (동적 페이지 제공) ----------- DB
*웹 서버의 동작 과정
전체적으로 봤을 때
웹이란 파일을 요청하고 응답받는 것인데,
우리가 naver.com/index.html 파일을 달라고 했을 때, 내부의 서버는 html 파일을 줍니다. 그것을 크롬이라는 웹브라우저가 html코드를 실행시켜줍니다. 쉽게 생각해서 코드에 대한 그림을 그려주는 것입니다.
그래서 페이지 소스 보기를 하면, html 코드 원본을 볼 수 있습니다.
여기서 html 코드를 수정하고서 네이버 해킹 했다고 할 수 있는데,
사실 html같은 경우는 front-end로 응답을 받아온 값을 클라이언트 측에서만 수정하는 것이기 때문에 의미가 없어지는 것 입니다.
페이지 소스에는 php라는 동적 코드는 나오지 않습니다.
그 이유는 php코드는 back-end(내부 서버)가 읽어서 응답을 줄 때는 html 페이지 소스만 출력해주기 때문에 보이지 않는 것입니다.
php가 노출 되면 우리는 웹사이트가 돌아가는 메커니즘을 꿰뚫어보고, 너무나 쉽게 해킹해버릴 수 있을 것입니다.
*웹 서버 구축 실습
우리는 대표적으로 많이 쓰는
APM으로 웹 서버를 구축할 것입니다.
1) Apache - Web server
2) Php - WAS
3) MySQL - DB
docker라고 종합적으로 구축을 해주는 프로그램을 이용하겠습니다.
친절하게도 normaltic님이 docker을 실행시킬 수 있도록 환경을 제공해주셨습니다.
먼저
segfault_webDev를 NAT 네트워크로 실행 시킵니다.
더 원활한 진행을 위해 저는 putty로 실행하겠습니다.(IP: localhost /Port: 15022)
반딧 워게임을 하듯이 WEB폴더안에 들어가주면~
APM을 한번에 실행시키기 위해, 도커를 실행시켜줍니다.
sudo docker ps -a
sudo docker rm -f 3b
./dockerCMD &
ON!
그리고 webApp이라는 폴더안에 아무것도 없지만,
우리가 웹 파일(html, php 파일)을 만들어서 실행 및 개발 할 수 있습니다.
일단 vi test를 통해 페이지를 만들어보겠습니다.
다음 시간에는 '글밖에 없는 페이지'를 html로 꾸며 보겠습니다.
*Web Proxy Tool: 서버에 html 등을 요청할 때 대신해서 수행하는 툴
주요 목적은 해킹할 때 오고가는 패킷을 분석하고 나아가 조작, 변조하기 위함입니다.
대표적으로 Burp Suite가 있습니다.
주요 이용 기능
1) History
네이버 한 페이지만 가도 100개가 넘는 패킷 요청이 오고갑니다. ㄷㄷ
주고 받았던 요청(패킷 데이터)을 분석할 때 사용합니다.
2) Intercept
말그대로 가로 막는 것입니다.
목적은 패킷 데이터를 변조하기 위함입니다.
클라이언트가 서버로 요청할 때 막고, 로딩 중으로 응답은 받아오지 못합니다.
데이터를 변조하고 Foward를 눌르면 응답을 받아올 수 있습니다.
3) Repeater
반복하여 보내다(?)
Request 요청부분
첫번째 줄은
[Method]:GET - 그냥 파일 주세요. / POST - 로그인정보 같이 숨길만한 정보가 있을 때
[경로]
[프로토콜 버전]
두번째 줄 부터는
[헤더]: 클라이언트 정보가 주렁주렁 달립니다. (언어, 브라우저 버전 등)
Response 응답부분
[버전]
[상태 코드]
200 >> OK!
3XX >> Redirect 우리없으니 다른데로 방향바꿀게
4XX >> 클라이언트 에러: 요청 잘못 보냈어
404 Not Found >> 없는 파일 요청
5XX >> 서버 에러(WAS) ex) php코드 문제
... [헤더]
4) Decoder
Hello <==base64==> SGVsbG8g
이런식으로 디코딩, 인코딩할때 쓰일 듯한 보조툴입니다.