루트 사용자 크랙: 루트가 아닌 사용자의 "su"를 사용하여 자동으로 루트에 로그인

루트 사용자 크랙: 루트가 아닌 사용자의 "su"를 사용하여 자동으로 루트에 로그인

su명령 에 암호를 전달할 수 있는 스크립트를 작성하고 싶습니다 . 그 이유는 루트가 아닌 계정에서 루트에 로그인하는 프로세스를 자동화하기 위한 것입니다. 보안에 대한 기본적인 이해를 통해 나는 이 작업의 위험성을 알고 있습니다. 파일에서 비밀번호를 읽어 루트 사용자 비밀번호를 해독하려면 여전히 이 정보가 필요합니다.

상호 작용을 자동화하기 위해 이 명령을 사용한다는 이야기를 들어본 적이 있지만 이 expect명령이 어떻게 작동하는지, 이 경우에도 작동하는지 여부는 알 수 없습니다. 사용법에 대한 정보를 expect주시면 감사하겠습니다.

sudo내 사용자가 sudoer 목록에 없으므로 이는 옵션이 아닙니다.

시도한 사항 - 파이프를 사용하여 비밀번호를 전달하는 것이 잘못된 유형으로 인해 작동하지 않습니다 "su must be used from terminal". - 에코된 내용을 사용하여 비밀번호를 전달하면 echo 비밀번호를 입력한 후에만 표시됩니다.

답변1

"한 줄 스타일"을 수행하십시오.

expect -c 'spawn su - ;expect Password:;send "your-password\n";interact'

출력을 확인하여 su -비밀번호를 캡처하는 데 사용할 올바른 문구인지 확인하세요. 여기서는 Linux 번역을 사용하고 있으므로 단어는 "Password:"가 아닌 "Senha:"여야 합니다.

  • expect -c '':이 명령에 대해 다음을 실행하십시오.
  • spawn su -:이 명령을 실행
  • expect Password:비밀번호라는 단어가 뭔가를 할 것으로 예상
  • send "your-password\n": 비밀번호를 입력하고 Enter를 누르세요.
  • interact: 명령을 대화형으로 준비된 상태로 유지합니다.

답변2

expect당신은 당신을 위해 일을 수행하는 데 사용할 수 있습니다 . 다음을 파일에 저장하고 실행 가능하게 만든 후 실행합니다.

#!/usr/bin/expect
spawn su
expect "Password:"
send "YOUR_PASS\n"
interact

(물론 올바른 경로를 지정해야 합니다 expect. /usr/bin/expect이것을 예로 사용하고 있습니다.)

루트 비밀번호가 정확 하다면 YOUR_PASS이제 루트 쉘이 생겼을 것입니다. 그렇지 않은 경우 인증 실패 메시지를 받게 됩니다.

interact이 명령은 완전히 자동화된 스크립트 컨텍스트에서는 필요하지 않을 수도 있습니다. 프로세스 제어권을 사용자에게 넘기기 때문입니다. 즉, 현재 프로세스에 키 입력을 보내고 stderr 및 stderr을 반환합니다.

man expectspawn, expect, send및 기타 여러 명령 interact에 대한 자세한 설명은 참고자료를 참조하세요 .

관련 정보