WebHacking - PHP File Upload 취약점, 웹 서버 글로벌 설정 파일

Hansoo1018 2017.02.20 13:31

 

 

해킹의 공격은 서버측에서의 악성코드 실행으로 이루어 질 수도 있다.
쉽게 말하면
악성코드, 파일을 만들어서 서버에 저장하고 서버에서 실행을 하여 공격하는 것이다.

이게 말이 될까?
어떻게 서버에 내가 파일을 저장하지?
사실 우리는 아주 흔하게 그런 일을 하고 있다.
바로 업로드 기능이다.
게시판 혹은 웹 상에 우리의 사진 혹은 파일을 올려본 적이 있을 것이다.
이렇게 되면 우리가 올린 파일이 서버에 저장이 되고
다른 사람들이 그 파일을 받는 것이다.

나쁜 해커들은 바로 이런 순수한 기능을 이용해 공격을 한다.
바로 악성 PHP파일을 업로드 시키고 그 파일을 실행시키는 것이다.
이러한 공격이 이루어 질 수 있는 조건이 있다.
1. PHP파일이 웹 서버에 존재한다.(업로드 가능, 혹은 어떤 방법으로든)
2. 그 PHP파일을 웹브라우저에서 접근할 수 있다.(직접참조 가능하다.)

이렇게 되면 나쁜 해커는 웹 브라우저에서 PHP파일을 접근하여 실행시키는 것이다.

이러한 공격과정을 살펴보기 위해 업로드 기능을 이해해보자.

우리는 먼저 PHP파일이 아닌 일반적인 사진 jpg 파일을 업로드 해볼 것이다.

 

 

 

 

(업로드 할 사진)

 

 

 

우리가 만든 제로보드에 보노보노를 업로드 해본다 :)

 

 

 

(보노보노 업로드)

 

 

 

(업로드 된 화면)

 

 

보노보노가 게시판에 업로드 되었다.

그렇다면 이 사진파일은 웹 서버 어디에 존재하는 걸까?

F12 키를 눌러 코드를 볼 수 있는데 여기에 이미지의 경로가 나온다.
바로 data/ 폴더에 있다는 것을 알 수 있다. :)

 

 

 

(파일 경로)

 

 

 

제로보드 폴더의 /data 폴더에 들어가보니
보노보노가 있다 :)

 

 

 

(파일 존재)

 

 

 

그렇다면 두 번째 조건인 웹브라우저에서 직접 참조가 가능할까?
웹브라우저에 파일의 경로로 접근해 보았다.

 

 

 

 

(파일 접근)

 

 

 

(실행 화면)

 

 

 

보노보노 사진에 직접 접근이 가능하였고
실행까지 된 모습이다.

즉, 두 조건이 성립하고 나쁜해커가 존재한다면 공격을 할 수 있는 부분이다.

나쁜 해커처럼 우리도 PHP 파일을 올려볼 것이다.
단순히 화면에 run php haha 문자가 출력되는 php 파일이다.

 

 

 

 

(php 파일 작성)

 

 

 

우리가 만든 php 파일을 게시판에 올려볼 것이다.

 

 

 

 

(php 업로드)

 

 

 

파일을 올리려 클릭을 해보니...

 

 

 

(업로드 제한)

 

 

 

PHP 파일은 올릴 수 없다고 뜬다.

게시판에서 조건을 걸어둔 것이다.
write_ok.php 파일을 열어서 확인해 보겠다.

 

 

 

(write_ok.php 파일 확인)

 

 

 

(php 파일 제한)

 

 

 

207번 라인을 보니 HTML , PHP 파일을 올리지 못하게 필터링 해두었다.

아주아주 기본적인 취약점을 막아놓은 것이다.
이 것은 유명한 공격이므로 이렇게 해놓는 것이 당연하다.

그렇다면 과연 나쁜 해커는 여기서 좌절할까?
머리를 굴리기 시작한다.

꼭 확장자가 php파일이어야할까?
확장자를 txt 파일로 변경해서 올려 보았다.

 

 

 

 

(txt 확장자)

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

 

 

 

 

(업로드)

 

 

 

(업로드 된 모습)

 

 

 

php파일이 아니므로 필터링에 걸리지 않고
txt 파일이 업로드 되었다.

여기서 이제 txt 파일을 직접 접근해보겠다.

 

 

 

(실행)

 

 

 

실행해보니 php파일이 실행 된것이 아니라
단순히 txt 파일이 실행되었다...

왜 이런 일이 일어났을까?

이것을 이해하려면 웹에대한 이해가 필요하다.
웹 아파치 서버의 글로벌 설정파일을 이해해야한다.

이야기를 시작해보겠다.
웹 서버에서 경로
/etc/httpd/conf.d 폴더에
php.conf 파일이 있다. 바로 conf.d폴더에 있는 것들이 글로벌 설정 파일이다.
먼저 왜 php파일이 확장자 .php인 파일만 php 실행이 되는지 확인해 보겠다.
php.conf 파일을 열어본다.

 

 

 

(php.conf 파일 확인)

 

 

 

(php.conf 파일)

 

 

 

17번, 18번 라인을 확인해보면 .php 가 보이는데 바로 이것이
.php 파일확장자는 php로 실행하라는 뜻이다.
여기에 .txt를 추가해서 확인해 보겠다.

 

 

 

(php.conf 파일 수정)

 

 

 

그러고 나서 아까 우리가 txt파일로 실행됬던 attack.txt 파일을 실행해보았다.
웹에서!

 

 

 

(php 실행)

 

 

php로 실행 되었다.

그렇다면 글로벌 설정 파일은 무엇일까?
위에서 본것에 의하면 웹 서버에서의 설정파일? 정도로 이해 할 수 있다.

이번에는 /etc/httpd 폴더에 있는
httpd.conf파일을 확인해보겠다.
바로 이 파일이 정확히 말하는 글로벌 설정 파일이라고 할 수 있는데
이 파일은 웹 서버가 실행되면 이 파일을 읽어 들여서 여기에 적혀있는데로
웹 서버를 실행시키는 것이다.
그렇기 때문에 글로벌 설정 파일이라고 부른다.
이 파일을 확인해 보겠다.

 

 

 

(httpd.conf)

 

 

여기에 보면 웹 서버 설정 내용들이 있다.
쭉 내려보면 210번 라인을 볼 수 있다.

 

 

 

(210번 라인)

 

 

이 라인의 코드를 보면 conf.d 폴더안에 있는  .conf 파일을 전부 실행시키는 코드이다.

웹 서버가 실행될때 이 파일이 실행되는데
이 파일 안에 코드에 의해 confd 폴더에 있는 .conf 파일이 전부 실행되므로 여기에
있는 파일들도 글로벌 설정 파일이라고 할 수 있다.

쉽게 말하자면 웹 설정 파일이 너무 기니까 부분별로 파일을 쪼개 놓은 것이다.

이 전까지 우리가 웹 코드에서 인증을 구현했었는데
웹 서버 자체에서 인증을 구현할 수도 있다.

한번 웹서버에서 인증을 설정해보겠다.
우리가 적용시킬 웹 페이지는 /var/www/html에 있는 페이지들에 대해서
인증을 적용 시켜볼 것이다.
그러므로 <Directory "/var/www/html"> 태그 안에 입력하면 된다.

 

 

 

(설정 적용 위치)

 

 

인증 설정을 하겠다.

 

 

(인증 설정)

 

 

 

인증 설정 후 웹 서버를 다시 시작해준다.

 

 

 

(웹서버 재 실행)

 

 

재실행 후 제로보드에 아까 그대로 들어갈 수 있었는데
지금은 사용자 인증을 해야 접속을 할 수 있게 나왔다.

 

 

 

(인증 요구)

 

 

 

다음에 이어서 웹에 대한 이해를 해보겠다 :)

 


 

[출처] http://code1018.tistory.com/94

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 침투테스트(취약점검점검, 모의해킹) 문의 / 답변 졸리운_곰 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
250 WebHacking - File Upload 취약점 (우회), Web SHell(웹 쉘) file 졸리운_곰 2018.02.17 265
» 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