본문 바로가기
WEB_Security

15. PHP 파일 업로드 취약점

by Jnamelight 2017. 5. 31.

예제


이번엔 파일업로드의 취약점을 공부해보도록 하자. 

파일업로드의 취약점은 파일을 서버에 저장했을때 서버측의 취약점을 공격 하는 방법이다. 

브라우저를 통해서 서버의 php 파일을 실행하여 공격하는 방식!


예제를 통해서 자세히 알아보자.



일단 시작하기 앞서 앞으로 mysql 실행은 이런식으로 한다

( 이유 :  이런식으로 실행하면 내가 실행했던 쿼리 로그를 볼수 있다!!! )

로그 데이터는 /var/lib/mysql 디렉토리에 저장



일단 설정을 하나 바꾸어주도록 하자. 위와같은 경로로 들어가서 



오버라이드를 모두 허용하도록 설정을 바꾸어 주도록하자 

( 실습환경을 만들기위해 // 만약 설정하지 않으면 로컬 설정이 먹히지 않음 )



자 이제 그럼 실습을 해보자. 일단은 아무 그림파일을 업로드시켜 그림파일의

경로가 어디로 저장되는지 알아보자.



위와같이 올린 그림파일의 이름을 클릭하게 되면.



URL 을 통해서 어떤 파일에 저장되어 있는지 분석할 수 있다.



확인을 해보도록 하자. 같은 경로의 디렉토리 검색 결과 그림파일이 저장되어있는 것을 확인.

여기서 알수 있는 사실은 웹 브라우저를 통해서 서버에 접근을 했다는 사실을 알 수있따.

그럼 php 파일을 업로드시켜 그 PHP 파일을 실행시킬수 있다면 ? -> 많은 정보를 얻을수 있다.



일단 간단하게 php 파일을 하나 만들도록하자.

위와같이 ` ` 사이에 원하는 (리눅스) 명령어를 넣으면 php 파일은 실행된

결과값을 보여줄 것이다. 



만든 php 파일을 업로드 시켜보자!



업로드 



업로드가 되지 않는다. 이건 제로보드 측에서 취약점을 막기위해서 php 파일 , html 파일을 막아놓은 것이다.

여기서 사용하는 방법이 우회기법이다.

여러가지 우회기법이 있지만 우리가 사용할 우회기법은

로컬환경을 변경시켜 줄수있는 .htaccess 파일을 이용해서 특정 파일에서는

다른 확장자도 php 파일로 인식하게끔 만들것이다.




그럼 일단 php의 환경변수를 분석해보자. 위와같은 경로로 들어가서.



결과를 확인해보면 저 두줄로 인해서 .php 가 php 확장자라는 것을 

확인시켜준다는 사실을 알 수있다. 그럼 여기서 이 두문장을 복사해와



파일을 하나 생성한다. 뒤에는 내가 원하는 확장자 (ex .xxx ) 를 추가시켜서 파일을

.htaccess 로 만들어준다.



위와같이 만들면 된다. 만들어진 파일을 일단 먼저 업로드 시키고.

(그럼 data 디렉토리의 환경은 변화됨 )



다시 공격 파일을 올리게되면



위와같이 ifconfig 명령어가 실행 되는 것을 알수있다.

여기서 중요한건 현재 우리가 리눅스환경에서 제로보드를 만들었단 사실을 알기 때문에 위와같은 명령어를 사용한것

다른 os환경에서 만들었다면 다른 명령어를 사용해주면된다.




'WEB_Security' 카테고리의 다른 글

17. 파일 다운로드 취약점 ( PHP )  (0) 2017.06.02
16. 파일 업로드 취약점 ( 원격 쉘 )  (0) 2017.05.31
14. CSRF  (0) 2017.05.30
13. GET,POST 취약점  (0) 2017.05.30
12. XSS 공격  (0) 2017.05.29

댓글