정보보안공부

웹보안_18. php코드를 이용한 공격기법 본문

정보보안/웹보안

웹보안_18. php코드를 이용한 공격기법

Steady_sp 2018. 3. 15. 23:19

PHP

-> 앞서 살펴본 XSS, CSRF는 client script language로써 불특정 다수를 대상으로 공격을하지만, PHP언어는 server script language로써 한 곳을 대상으로 공격한다.

 

#1 php 파일 업로드 취약점

- php 소스파일이 서버에 존재하는 경우

- 웹 브라우저에서 접근이 가능해야한다. ( 웹브라우저에서 php파일을 실행 )

 

먼저 간단한 테스트를 해보자

메모장으로 확장자를 php로 설정한 attack.php코드를 작성한뒤 게시판에 첨부파일로 추가해보자

 

 

-> 게시판을 쓰려고하면 위와같이 php, html 관련파일은 업로드할 수 없다고 되어있다. 그렇다면 php코드에 이름만 확장자를 다르게해서 시도해보자.

 

 

-> attack_test.aaa 파일로 같은 코드를 입력하고 aaa확장자로 저장을 시키고나서 게시판의 글쓰기에서 첨부해보자

 

 

첨부한뒤 아래를 보면 해당 파일은 이상없이 서버로 업로드 되었다. 하지만 php코드라면 코드내용이 보이지 않아야 하지만 아래와같이 php코드를 확인할 수 있다. 이것은 단지 해당파일이 업로드만 된것이지 php코드가 실행된 것은 아니다. 이 게시판은 php확장자로된 파일을 동작하지 않도록 막고있다. 이것을 우회기법을 이용해 php코드가 동작되도록 시도해 볼 것이다.

 

-> 이제 서버에서 php코드가 수정될 수 있도록 몇가지 설정을 할 것이다.

 

#2 아파치를 통한 웹인증 방법 2가지

 

1) vi /etc/httpd/conf/httpd.conf

 

 

-> 317줄 과 352줄사이에 해당인증 권한을 입력하면 해당 웹에 접근할때 인증창이 실행되도록 4줄의 인증 코드가 실행된다.

 

 

 

2) .htaccess

 

 

-> .htaccess를 사용하기위해서 AllowOverride All로 설정을 바꾸어준다.

 

 

-> .htaccess 파일을 만든뒤 인증해주는 코드를 입력하고 웹페이지에서 접근하려하면 아래와같이 인증창이 생성된다.

 

 

-> 서버에서 설정파일 .htaccess를 이용해 php우회공격을 시도해 볼 것이다.

 

#3 아파치에서 php파일 설정확인

 

 

-> 아파치 서버에는 위와같이 설정되어있다. php.conf파일에 들어가보면 php파일은 .php확장자만 php파일로 인식한다는 의미이다. 이부분에 확장자들을 추가하면 작성된 확장자들은 모두 허용이된다. 이코드를 .htpasswd를 이용해 .htpasswd파일 안에 작성해서 서버에서 이설정이 적용되도록 작성한다. 그렇게되면 작성된 확장자들의 파일은 서버에서 php코드를 실행할 수 있을 것이다.

 

#4 php공격 우회기법

 

 

-> .htaccess 파일을 만들고 코드를 작성한다.

 

 

-> 만들어놓은 .htaccess 파일과 비밀번호를 볼 수 있도록 php코드를 작성한 attack_test.aaa 파일을 같이 첨부한다.

 

 

-> 확장자가 aaa이므로 아무이상없이 게시글이 작성되었다.

 

-> 확장자가 aaa이지만 .htaccess파일에 .aaa확장자도 php파일로 인식하도록 코드를 추가하였으므로 attack_test_aaa파일에 php코드가 정상적으로 동작하였다. 이것이 바로 우회기법이다. 게시판에서는 php코드가 실행안되도록 확장자 .php를 막아놓아서 .php확장자와 게시판에 php코드가 삽입된 다른확장자 파일은 php코드가 적용이 안되었지만 아파치의 특성을 이용해 이러한 우회기법도 있다는 것을 확인할 수 있다.

 

Comments