용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요. 강원도 홍천 서석면에 위치해있으며 1급수 용오름계곡 바로 옆에 있습니다.홍천군 1등 마을로 마을에서 직접 관리하는 용오름캠핑장,펜션 10개를 운영하고 있으며 각종 모임이 가능하도록 식당,회의실,야외무대가 설치되어 있습니다.홍천군 1등 마을답게 캠핑장,펜션 마을 전지역 wi-fi 사용이 가능하며 매년 봄 팸투어 실시, 여름엔 마을에서 재배한 홉으로 직접만든 맥주축제,마리소리 음악축제 를 열고 있습니다.계곡의 경우 수심이 다양하여 다이빙 포인트가 2곳이 있으며 아이들이 안전하게 물놀이를 할 수 있는 곳도 여러 곳 있습니다. 홍천 용오름캠핑장 팸투어 다녀왔어요. 요즘은 농산촌체험마을에서 캠핑과 여러프로그램을 같이 하는 곳이 추세더라고요. 아미산이 둘러쌓인 청정계곡이 흐르는 아름다운 용오름체험휴양마을 에서 운영하는 홍천 용오름캠핑장 팸투어 다녀왔어요. 테크 앞 강이... 붕어빵 가족의 담너머 세상구경 https://m.blog.naver.com/1092119/220711235599 가을여행-홍천여행- 홍천 용오름 마을 첫째날 여행의 계절 가을입니다. 요즘 저희는 강원도에 꽃힌 상태인지라...카페 행복한 이티씨와 함께하는 홍천 용오름 마을 1박2일 체험에 참가를 하였답니다! 평소 체험 시간보다 조금 늦은 출발을 해서 차가 밀리지 않으려나... 귀여운 단지 https://m.blog.naver.com/sanguidan/50181593653 용오름마을 캠핑장 여름휴가의 시즌이다.. 강원도의 계곡과 시원함을 만끽하기 위해 캠핑장을 검색하다 우연히 알게 된 홍천의 용오름 캠핑장.. 성수기라 캠핑장 요금들이 사악하다 용오름캠핑장 옆엔 해미르 캠핑장이 있는데... ★살로몬의 잇츠캠핑★ https://m.blog.naver.com/freeguy9040/20163628934 맥주효모로 만든 용오름맥주마을 바쏘 맥주샴푸와 맥주마스크팩... 1988년까지 맥주 원료인...

Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축

Paypal에서 발견된 HTTP Request Smuggling - 실습 환경 구축

요즘 http request smuggling 공격에 대해 몇일간 공부 중이다. 몇달 전에 이 공격을 처음 접하게 되면서 이 공격에 대해 매우 흥미를 느꼈다. http request smuggling 공격에 대해 portswigger 라는 홈페이지에서 자료를 통해 공부를 했고 실습 환경을 만들어 공부 해보면 어떻까 라는 생각을 해서 이렇게 글로 정리를 해본다.

이 실습 환경 만든다고 개고생 했다.. 삽질한 것을 바탕으로 아래 글에 나와 있는데로 진행할 경우 성공할 것이라고 생각한다.

필자가 참고한 사이트는 아래 Reference에 있으니 참고 하길 바란다.

# 1. Setting Practice Environment

https://paper.seebug.org/1049

HTTP request smuggling 공격 환경을 만들기 위해서는 사용자와 메인 서버 사이에 proxy 서버가 필요하다.

필자는 Apache Traffic Server(ATS) 7.1.2 버전을 사용했다.

ATS 7.1.2 보다 상위 버전은 이 공격에 대해 petch가 되어 있기 때문에 7.1.2 버전을 사용해야 한다.

또한 ubuntu 18.04 이상 버전에서 ATS 7.1.2 에 버그가 있어서 ubuntu 16.04 버전을 사용해야 한다.

== Proxy Server == ubuntu 16.04 (버전 중요!) Apache Traffic Server 7.1.2 (버전 중요!)

LNMP 서버와 LAMP 서버를 세팅해야 하는데, docker를 이용해서 이 두 서버를 생성할 계획이다.

아래는 LNMP와 LAMP 서버를 구축하기 위한 정보이다.

== LNMP == docker-compose.yml web: image: fbraz3/lnmp ports: - "10000"

== LAMP == docker pull mattrayner/lamp:latest-1804 docker run -d -p 10001 [image hash]

# 1-1. ATS Install & Configuration

여기서 부터 모든 명령어를 root 또는 sudo 로 진행하는 것을 강력히 추천한다.

본인 서버에 ATS를 설치하기 위해, 아래와 같은 명령어로 필요한 것들을 설치 해야한다.

apt-get install -y autoconf automake libtool pkg-config libmodule-install-perl gcc libssl-dev libpcre3-dev libcap-dev libhwloc-dev libncurses5-dev libcurl4-openssl-dev flex tcl-dev net-tools vim curl wget

ATS source 파일을 다운 받기 위해 아래와 같은 명령어를 입력하여 ATS 7.1.2 파일을 다운 후 압축을 푼다.

$ wget https://github.com/apache/trafficserver/archive/7.1.2.tar.gz $ gzip -d [ATS 7.1.2 file name] $ tar -xvf [ATS 7.1.2 file name]

압축을 푼 폴더로 이동해서 아래와 같은 명령어를 입력한다. (모든 명령어는 root 또는 sudo 로 진행하는 것을 추천한다.) make 명령어에서 30분에서 1시간 정도 걸릴 것이다.

$ cd trafficserver-7.1.2 $ autoreconf -if $ ./configure --prefix=/opt/ts-712 $ make $ make install

여기까지가 ATS 설치이고 이후는 설정이다.

records.config 파일을 열어 몇몇 옵션을 변경해야 한다. (추가하는 것이 아니라 변경이다.)

$ vi /opt/ts-712/etc/trafficserver/records.config CONFIG proxy.config.http.cache.http INT 0 # close caching CONFIG proxy.config.reverse_proxy.enabled INT 1 # Enable reverse proxy CONFIG proxy.config.url_remap.remap_required INT 1 # Limit ATS to only access the mapped address in the map table CONFIG proxy.config.http.server_ports STRING 80 80:ipv6 # Listen local port 80

위 파일을 수정했다면, remap.config 파일을 수정해야한다.

이 파일은 어느 서버로 포워딩 할 것인지 proxy 설정 파일이라고 생각하면 된다.

$ vi /opt/ts-712/etc/trafficserver/remap.config map http://your-domain1.com/ http://[docker-lnmp-ip]:10000/ map http://your-domain2.com/ http://[docker-lamp-ip]:10001/

아직 docker로 lamp와 lnmp 를 설치 하지 않아서 localhost 라고 적어놓자.

그렇기 때문에 원래 ATS 를 재시작해야 하는데, 일단 이 상태로 둔다.

# 1-2. Docker LNMP Install & Configuration

(Docker를 찬양하라~)

혹시 본인 서버에 docker와 docker-compose가 설치 되어 있지 않다면 설치를 먼저 하자.

docker-compose.yml 파일을 생성하여 아래 내용을 복붙하자.

(port를 변경하고 싶다면 원하는 것으로 바꿔도 상관없다. 단, ATS remap.conf 파일에 적었던 port 도 바꿔줘야 할것이다.)

web: image: fbraz3/lnmp ports: - "10000"

아래 명령어로 docker container 를 생성한다.

$ docker-compose up -d

container가 생성이 되면 안으로 들어가 설정을 바꾼다.

$ docker exec -it [container ID] /bin/bash root@[container ID]: vi /etc/nginx/site-enabled/default listen 80을 listen 10000 으로 변경 root /app/~ 되어 있는 것을 root /var/www/html 로 변경

root@[container ID]: service nginx restart root@[container ID]: cd /var/www/html root@[container ID]: echo "" > index.php root@[container ID]: ls index.php

docker LNMP 의 내부 IP를 알아야 하므로 아래 명령어로 IP를 알아낸다.

필자의 LNMP 내부 IP는 172.17.0.2 이다.

root@[container ID]: apt-get update && apt-get install net-tools root@[container ID]: ifconfig eth0: flags=4163 mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 2884 bytes 21085517 (21.0 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2624 bytes 243512 (243.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

container를 빠져나와 아래와 같은 명령어로 접속이 잘 되는지 확인한다.

$ wget 172.17.0.2:10000 --2020-03-22 04:23:40-- http://172.17.0.2:10000/ Connecting to 172.17.0.2:10000... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: 'index.html' index.html [ <=> ] 332 --.-KB/s in 0s 2020-03-22 04:23:42 (8.65 MB/s) - 'index.html' saved [332] $ cat index.html test $

위에서 ATS remap.conf 파일을 수정했었는데, 다시 열어서 LNMP 서버의 IP 주소를 적는다.

$ vi /opt/ts-712/etc/trafficserver/remap.config map http://your-domain1.com/ http://172.17.0.2:10000/ # <---- 변경 부분 map http://your-domain2.com/ http://[docker-lamp-ip]:10001/

# 1-3. Docker LAMP Install & Configuration

아래 명령어를 입력하여 LAMP 이미지를 다운 받는다.

$ docker pull mattrayner/lamp:latest-1804 $ docker run -d -p 10001 [image hash]

LAMP 설치는 끝이다.(와우!)

아래는 설정 부분이다.

$ docker exec -it [container ID] /bin/bash root@[container ID]: vi /etc/apache2/port.config Listen 80 을 Listen 10001 으로 바꾸기

root@[container ID]: vi /etc/apache2/site-enabled/000-default 을 10001 으로 바꾸기 (숫자만 바꿈)

root@[container ID]: service apache2 restart root@[container ID]: cd /var/www/html root@[container ID]: rm index.php root@[container ID]: echo "" > index.php root@[container ID]: ls inde.php

이번에도 역시 wget 명령어로 잘 되는지 확인한다.

root@[container ID]: wget localhost:10001

LAMP 내부 IP를 알아야 하기 때문에 아래와 같은 명령어를 입력한다.

필자는 172.17.0.3 이다.

root@[container ID]: apt-get update && apt-get install net-tools root@[container ID]: ifconfig eth0: flags=4163 mtu 1500 inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 2884 bytes 21085517 (21.0 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2624 bytes 243512 (243.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

container에서 나와서 remap,conf 파일을 수정한다.

$ vi /opt/ts-712/etc/trafficserver/remap.config map http://your-domain1.com/ http://172.17.0.2:10000/ map http://your-domain2.com/ http://172.17.0.3:10001/ # <---- 변경 부분

# 2. Run ATS

모든 환경이 다 만들어 졌다.

우리는 ATS 7.1.2 프록시 서버와 내부 LNMP, LAMP 서버도 구축을 완료했다.

https://paper.seebug.org/1049

내부에서는 LNMP와 LAMP 웹 서버가 잘 동작한다. 하지만 ATS 서버는 설정만 했지 서비스로는 동작을 하지 않고 있기 때문에 이를 동작하게 해줘야 한다.

ATS를 다운받아 압축을 푼 경로로 이동한다.

cmd 폴더 안에는 여러개의 명령어 폴더가 존재한다. 여기서 우리가 사용할 것은 traffic_ctl과 traffic_manager 이다.

$ cd trafficserver-7.1.2/cmd $ ls Makefile Makefile.in traffic_crashlog traffic_layout traffic_top traffic_wccp Makefile.am traffic_cop traffic_ctl traffic_manager traffic_via

서버를 서비스하려면 traffic_manager 폴더로 들어가 traffic_manager 파일을 실행한다.

실행하면 2~3줄 정도 출력 될 것이다.

$ cd traffic_manager $ ./traffic_manager [ 대충 서비스가 시작된다는 내용 ]

자 이제 http://your-domain1.com 으로 웹 브라우저로 요청을 보내면 test 라는 문장이 웹 페이지에 보일 것이다.

마찬가지로 http://your-domain2.com 도 웹 바라우저로 요청을 보내면 똑같은 결과를 얻을 수 있을 것이다.

만약 ATS 설정을 바꿔야 하는 상황이 발생한다면, 설정 파일을 수정한 후, 아래 명령어를 입력한다.

$ cd trafficserver-7.1.2/cmd/traffic_ctl $ ./traffic_ctl server restart

traffic_ctl은 서버 관련해서 서버를 재시작하거나 등등의 역할을 한다.

위 명령어를 입력하면 아까 ./traffic_manager 를 실행한 터미널에서 자동으로 중지 후 재시작하는 메시지가 출력이 되었을 것이다.

더 자세한 명령어는 아래 사이트를 참고하자.

https://github.com/apache/trafficserver

https://docs.trafficserver.apache.org/

# 3. After..

ㅠㅠ 정말 http request smuggling 공격 실습하려고 x랄 을 다하면서 했는데 결국 성공했다.

ubuntu 18.04 에서 계속 하다가 이 버전에서는 ATS 7.1.2 버그가 있고 상위 버전을 쓰면 http request smuggling 공격은 패치 되서 막막... 결국 ubuntu 16.04 버전에서 진행하고.. ATS 서비스는 어떻게 시작하는지... 역시 구글링이 답이었다.

아래 Reference 를 보고 정리 목적으로 작성했기 때문에 이 이상으로 환경 및 실습을 세팅하고 싶다면

https://paper.seebug.org/1049/

사이트를 추천한다.

# 4. Reference

< http request smuggling 공격 관련 >

https://portswigger.net/web-security/request-smuggling

https://paper.seebug.org/1049/

< Apache Traffic Server 관련 >

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-traffic-server-as-a-reverse-proxy-on-ubuntu-14-04

https://github.com/apache/trafficserver

https://docs.trafficserver.apache.org/

< 실습 환경 lnmp 설치 >

https://hub.docker.com/r/fbraz3/lnmp

< 실습 환경 lamp 설치 >

https://hub.docker.com/r/fauria/lamp/

from http://lactea.kr/173 by ccl(A) rewrite - 2020-03-22 14:20:14

댓글

이 블로그의 인기 게시물

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용...

[PHP] 네이버 Cloud Outbound Mailer API 파일 첨부하기

동적 메모리 할당_현재까지 내가 이해한 내용