- 해당 페이지는 message를 클릭하면 test가 출력된다.
- URL 확인 시 message 파라미터의 값을 출력하는 형식이며, 이를 통해 GET 메소드를 이용한 방식이란 것을 알 수 있다.
- message 파라미터의 값을 다른 값으로 변경하여 실행할 경우, 변경된 값이 출력되는 것을 확인할 수 있다.
- PHP에는 eval()이나 exec() 함수를 사용한 경우 세미콜론(;)을 사용해 다른 함수를 실행할 수 있는 취약점이 있다.
exec() | 외부프로그램을 실행시켜주는 함수로 쉘 명령어들을 사용할 수 있게 해준다. |
eval() | 문자열을 PHP 코드로 실행해 준다. |
system() | 문자열 형태의 명령어를 인자값으로 입력받아 실행시켜 준다. |
shell_exec() | 문자열 형태의 명령어를 인자값으로 입력받아 실행시켜 준다. |
- 해당 페이지에 php 취약점이 존재하는지 유무를 판별하기 위해 세미콜론(;)을 사용해 system()함수를 실행시켜 본다.
- 실행 결과 ls -al 명령어의 결과로 파일 목록과 내용을 확인할 수 있다.
- 사용자 계정 정보를 담고있는 파일인 /etc/passwd의 내용 역시 볼 수 있다.
- /etc/shadow 파일의 내용은 출력되지 않는 것으로 보아 현재 웹 권한만 가지고 있고, 상위 권한의 사용자만 접근 가능한 파일의 경우 출력되지 않는 것을 알 수 있다.
- nc 명령을 이용해 공격자의 PC로 연결도 가능하다..
-n 옵션 | 호스트 네임과 포트를 숫자로 출력 |
-l 옵션 | Listen 모드로 Port 오픈 |
-v 옵션 | 더 많은 정보를 볼 수 있음 |
-p 옵션 | 포트를 지정 |
① 먼저 공격자가 NC 명령을 이용해 리스닝 포트를 오픈 후 대기한다.
-e 옵션 | 연결 생성 뒤 실행 프로그램 지정 |
② Bee-Box에서 해당 명령을 실행한다.
③ Bee-Box에서 Kali로 연결이 생성 및 공격자의 shell을 획득.
'취약점 > RCE' 카테고리의 다른 글
iControl REST unauthenticated RCE(CVE-2021-22986) (1) | 2022.09.25 |
---|---|
vBulletin Pre-Auth RCE(CVE-2019-16759) (0) | 2022.09.20 |
Bash Shell Shock(CVE-2014-6271) (2) | 2022.09.13 |
PHPUnit 원격코드 실행 취약점 (CVE-2017-9841) (0) | 2022.07.29 |
ThinkPHP 원격 코드 실행 취약점(CVE-2018-20062) (0) | 2022.07.19 |