보안 강좌를 위한 익스플로잇 작업을 진행 중입니다. 목표는 Linux 가상 머신에서 루트 쉘을 얻는 것입니다. 지금까지는 /etc/passwd에 쓰고 루트의 비밀번호를 임의의 문자열로 변경할 수 있습니다.
이제 su를 사용하여 루트 쉘을 얻고 싶습니다. 내 익스플로잇은 자동화되어야 하기 때문에 비밀번호를 묻는 메시지를 표시할 수 없으며 VM은 설치를 기대하지 않습니다. su 명령에 비밀번호를 전달하는 방법을 아는 사람이 있습니까? 아니면 더 좋은 방법이 있나요?
답변1
이러한 유형의 입력을 자동화하는 가장 좋은 방법은 expect
or better 를 사용하는 것입니다 pexpect
. 대부분의 서버에는 최소한 최신 배포판과 함께 Python이 함께 제공됩니다.
먼저 VM이 expect
설치되지 않았다고 말씀하셨나요? 그게 왜 중요한지 잘 모르겠습니다. 로컬 계정으로 무언가를 설치/실행할 수 없는 이유가 있습니까?
passwd
다음 고려사항으로, 왜 ???를 사용해야 할까요 ? 에 지정된 해시를 대체하여 비밀번호를 변경할 수도 있습니다 /etc/shadow
. 먼저 해시를 올바르게 사전 생성해야 하지만 지원되는 해시를 사용하는 한 예상대로 작동해야 합니다. 이제 이러한 작업을 스크립트로 작성하는 방법은 연습 문제입니다.
또한 언급하고 싶은 것은 passwd
STDIN의 입력을 읽지 않는다는 것입니다. 내가 착각하지 않았다면 tty에서 읽습니다. 따라서 just echo
와 의 멋진 콤보는 sleep
작동하지 않습니다. 그러나 HEREDOC을 사용하는 것은 가능하지만 시스템이 충분히 반응한다고 가정합니다. 분할하거나 sleep
전체 간에 분할할 수도 있습니다 . 방금 테스트했는데 Ubuntu 워크스테이션에서 작동했습니다.
#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF
답변2
귀하의 익스플로잇은 그룹 파일에 기록하여 현재 사용자를 'wheel' 그룹(또는 sudo
oa 비밀번호로 명령을 실행할 수 있는 그룹)의 일부로 만들 수도 있습니다. 그러면 sudo su root
비밀번호 없이 (또는 다른 사용자) 비밀번호를 사용할 수 있습니다 .
달리는 것은 visudo
기계의 '바퀴' 그룹 설정에 대한 방향을 알려줄 것입니다.
명확히 하면 사용자가 휠 그룹의 일부가 되면 비밀번호 없이 sudo 명령을 실행할 수 있습니다.