1.포트 80의 웹서버를 향해 디렉토리 브루트포스 공격을 날릴 때, 어떤 툴을 이용했나요? 2.디렉토리 브루트포스를 통해 파일 업로드가 가능한 페이지를 확인했는데요. 이 페이지의 이름은 뭐였을까요? 3.영상에서 리버스쉘 업로드 우회를 위해 어떤 파일 확장자를 사용했나요? 4.SUID 비트가 세팅되어 있던 파일은 뭐였나요? 그냥 바이너리 이름만 영어로 적어주세요. 5.user.txt 의 플래그는 뭔가요? 6.root.txt의 플래그는 뭔가요?
실습
처음 시작은 항상 포트스캔으로 시작하여 어떤 서비스가 있는지 확인해봅시다.
22번 SSH 서비스 포트와, 80 웹 서비스가 열려 있는것을 확인해 볼 수 있으며, PHPSESSID를 사용하는걸 보아 PHP를 기반하여 사용되어진다는 것을 알 수 있습니다.
홈페이지 접속 결과 별다른 소득은 없었으며, 해당 페이지에 대해 디렉토리 브루트포스 공격을 시도해 봅시다.
1.포트 80의 웹서버를 향해 디렉토리 브루트포스 공격을 날릴 때, 어떤 툴을 이용했나요?
→gobuster
PHP를 사용한다는 정보를 알았으니, 옵션에 php를 주고 돌렸더니 위와 같은 결과를 얻을 수 있었습니다.
- /css
- /index.php/
- /js/
- /panel/
- /uploads/
해당 디렉토리 중 파일을 업로드 해볼 수 있는 곳은 /uploads/ 경로가 유력해 보인다. 접근해본니다.
접근해보니 별다른 파일은 없고 디렉터리 리스팅이 되는것을 볼 수 있었습니다.
이곳에 파일을 올리고, 리버스 쉘을 사용하여 침투하면 될듯합니다.
2.디렉토리 브루트포스를 통해 파일 업로드가 가능한 페이지를 확인했는데요. 이 페이지의 이름은 뭐였을까요?
→/panel/
panel의 경로에 접근하니 파일을 업로드 할 수 있는 페이지였고, 칼리에서 기본적으로 제공하는 리버스 쉘을 이용해봅시다.
리버스 쉘을 사용하기위해 php파일을 접근하면 위와 같이 IP를 설정할 수 있으니, 공격자(칼리)의 IP로 수정해주고 업로드를 시도해봅니다.
업로드 시 확장자 검증을 하고 있어, PHP파일 업로드는 불가능할 것 같습니다. 확장자를 변경하여 업로드해봅시다.
3.영상에서 리버스쉘 업로드 우회를 위해 어떤 파일 확장자를 사용했나요?
→.php5
php5로 업로드를 해보니 성공적으로 업로드가 된 것을 확인해 볼 수 있습니다. 그럼 netcat을 이용하여 리버스쉘까지 연결해봅시다.
해당 명령어는 파이썬의 `pty` 모듈을 사용하여 쉘을 스폰(spawn)하는 명령어입니다. `pty`는 "pseudo terminal"의 약자로서, 프로세스 간 통신을 위해 가상 터미널 환경을 생성하는 데 사용됩니다.
`import pty; pty.spawn("/bin/bash")`는 파이썬 인터프리터에서 실행하는 명령어로, `/bin/bash` 쉘을 가상 터미널로 생성하고 현재 터미널 세션과의 상호작용을 제공합니다. 이렇게 하면 파이썬 인터프리터가 아닌 실제 쉘로 전환됩니다.
이 명령어를 사용하면 현재 실행 중인 프로세스에서 쉘 환경을 얻을 수 있습니다. 쉘을 스폰한 후에는 명령어를 실행하고 출력을 보거나 입력을 받을 수 있습니다. 이를 통해 보다 효율적으로 명령어를 실행하고 명령어 결과를 확인할 수 있습니다.
주의할 점은 이 명령어는 사용자의 권한을 따르므로, 현재 사용자가 실행하는 프로세스에 할당된 권한으로 `/bin/bash` 쉘을 실행합니다. 따라서 명령어를 실행하는 사용자의 권한에 따라 쉘의 실행 권한도 결정됩니다.
명령어에 대한 설명은 GTP에서 잘 설명되어 가져왔습니다. 간단히 말해 해당 명령어를 사용하여 bash 쉘을 실행 할 수 있습니다.
리버스쉘까지 연결되었고, 쉘을 연결했다면, 항상 최고 권한인 root로 상승해봐야 하는데, 이때 'linenum.sh'이라는 쉘 스크립트를 통해 권한 상승에 대한 정보를 수집해 줍니다.