개발자 도구 · Chmod 계산기
find -perm을 사용하여 누구나 쓰기 가능한 파일 및 setuid 바이너리 찾기
· 그것이 중요한 이유
chmod 유닉스 액세스 제어
많은 실제 사건을 설명하는 두 가지 권한 패턴은 누구나 변경할 수 있는 파일과 루트로 실행되는 프로그램입니다. 이 게시물에서는 find -perm을 사용하여 두 가지를 모두 찾는 방법과 그에 대해 수행할 작업을 보여줍니다.
검토자가 귀하에게 없는 목록(모든 사용자가 수정할 수 있는 파일 및 실행 시 권한을 승격시키는 프로그램)을 요청합니다.
권한 검토는 종종 다른 곳에서 이미 수집된 모드(예: 0002, 4000, 2000 또는 4755와 같은 전체 값)로 시작됩니다. 계산기는 해당 숫자를 소유자, 그룹 및 세 가지 특수 비트를 포함한 기타 권한으로 디코딩할 수 있습니다. 디렉터리를 검색하거나 바이너리를 검사하거나 경로 목록을 생성하지 않습니다.
제공된 모든 모드를 파일에 대한 판정이 아닌 비트에 대한 설명으로 취급합니다. 이를 입력하고 8진수 필드를 기호 디스플레이 및 체크박스 행렬과 비교한 다음 변경된 내용을 기록합니다. 경로를 사용하는 모든 프로세스의 소유권, ACL 항목, 기능 및 ID는 실제 환경에서 수집되는 사실로 남아 있습니다.
World-writable은 다른 클래스에 w(8진수 패턴 0002)가 있고 -perm -0002이 다른 비트에 관계없이 이를 찾는 이유를 의미합니다.
0002 값은 기타 쓰기 비트를 격리합니다. 일반적인 3개 클래스 레이아웃에서 마지막 숫자는 소유자 및 그룹 클래스 외부의 모든 사람에게 속하며 해당 쓰기 구성 요소의 가중치는 2입니다. 따라서 해당 비트를 포함하는 완전한 모드는 다른 클래스에 w를 표시하지만 계산기는 해당 모드 자체를 찾지 않습니다.
특정 찾기 표현식이 정확한 일치, 모든 비트 일치 또는 모든 비트 일치를 의미하는지 여부는 이 변환기가 아닌 찾기 문서에 속합니다. 대신 결과 모드를 제공하십시오. 예를 들어, 0666은 rw-rw-rw-가 되고, 0644은 rw-r--r--가 됩니다. 두 모드 중 하나가 특정 경로에 적합하다는 것을 의미하지 않고 그룹 및 기타 쓰기 위치에서 차이점을 볼 수 있습니다.
0002는 other-write 비트를 노출합니다. 일치하는 의미가 외부에 있음을 찾습니다.
선행 특수 비트 숫자는 setuid에 4을 사용하고 setgid에 2을 사용합니다. 따라서 4755는 setuid를 일반 755 권한과 결합하고, 2755는 setgid를 동일한 후행 비트와 결합합니다. 계산기는 해당 마스크를 별도로 노출하고 전체 모드를 렌더링할 때 소유자 또는 그룹 실행 위치에 기호 문자를 배치합니다.
사건에는 유용한 증거가 포함되어 있습니다. setuid가 소유자 실행과 함께 제공되면 소유자 실행 위치에 s가 표시됩니다. 실행하지 않으면 S가 표시됩니다. Setgid는 그룹 위치에서 동일한 규칙을 따릅니다. 이러한 출력은 제공된 정수를 디코딩하지만 프로그램을 검사하거나 소유자를 결정하거나 실행하거나 특수 비트가 정당화되는지 여부를 결정하지는 않습니다.
4000 및 2000는 바이너리 감사 없이 setuid 및 setgid로 디코딩됩니다.
권한 검색 구문은 권한 산술과 별도로 유지되어야 합니다. 계산기는 8진수 또는 9자리 기호 모드를 허용하고 하나의 12비트 값을 반환합니다. 검색 연산자, 경로 조건자 또는 일치 규칙에 대한 표현이 없으므로 이 인터페이스 내에서는 정확한 모드 쿼리와 모든 필수 비트 쿼리를 구별할 수 없습니다.
검색 표현식을 붙여넣는 대신 각 외부 검색 결과에서 모드를 디코딩합니다. 세 개의 일반 숫자는 소유자, 그룹 및 기타에 매핑되는 반면 선택적 선행 숫자는 setuid, setgid 및 고정에 매핑됩니다. 이 워크플로는 보고된 비트를 확인하지만 검색 범위와 일치하는 의미 체계는 목록을 생성한 도구에 맡깁니다.
정확한, 모든 비트 및 모든 비트 찾기 모드에는 찾기 문서가 필요합니다.
다른 곳에서 수행된 감사가 0666 및 4755을 보고한다고 가정합니다. 0666를 입력하면 rw-rw-rw-가 생성되어 마지막 트리플에 other-write가 표시됩니다. 4755을 입력하면 rwsr-xr-x가 생성됩니다. 소유자는 읽기, 쓰기 및 실행을 수행하며, 실행 비트가 있으므로 setuid는 소유자 실행 문자를 소문자 s로 바꿉니다.
4644와 같은 두 번째 히트는 기호 형식이 중요한 이유를 보여줍니다. rwSr--r--를 렌더링하며 대문자 S는 소유자 실행이 없는 동안 setuid를 표시합니다. 계산기는 이러한 불일치를 눈에 띄게 만들 수 있습니다. 여전히 경로를 식별할 수 없고, 소유자를 설정하거나, 내용을 검사하거나, 비트 제거를 권장할 수 없습니다.
작업 예: 경로를 스캔하지 않고 제공된 감사 적중을 디코딩합니다.
모든 비정상적인 모드를 자동으로 복구하지 마십시오. 모드는 대상, 소유자, 그룹 및 필수 작업에 따라 결정되는 하나의 입력일 뿐입니다. 페이지는 의도적으로 해당 컨텍스트를 전혀 수신하지 않습니다. 해당 명령 미리보기는 비활성 텍스트이며 올바르게 인용된 경로라도 브라우저에서 열리거나 확인되지 않습니다.
보고된 모드를 변경하기 전에 현재 값과 제안된 값을 한 번에 한 비트씩 비교하십시오. 0666에서 other-write를 제거하면 0664이 생성됩니다. 4755에서 setuid를 제거하면 0755이 생성됩니다. 이러한 산술적 사실은 재현 가능하지만 두 변경 사항 중 작업 부하가 유지되는지 여부는 계산기 및 501 문서의 일반 비트 연습을 넘어서는 로컬 증거가 필요합니다.
예외 및 수정에는 로컬 소유권 및 워크로드 증거가 필요합니다.
여러 관련 감사 차원이 없습니다. 경로는 ACL 항목, 파일 기능, 소유권, 쓰기 가능한 경로 구성 요소, 마운트 동작 또는 필수 정책을 쿼리하지 않습니다. 또한 찾기를 실행하거나 PATH를 검사하거나 저장소를 탐색하지 않습니다. 따라서 깔끔한 변환은 제공된 숫자와 표시된 문자가 일치한다는 것만 의미합니다.
모든 보고서에서 이러한 경계를 눈에 띄게 유지하세요. 디코딩된 모드 옆에 경로 및 수집 방법을 기록한 다음 적절한 외부 도구를 사용하여 ID 및 추가 액세스 메커니즘을 조사합니다. 계산기는 잘못된 8진수를 거부하고 특수 비트를 표시하므로 표기법 확인에 유용합니다. 이는 파일 시스템 스캐너나 교정 엔진이 아닙니다.
요점: 쓰기 가능 파일과 권한 있는 파일을 파악하고 의심스러운 모드를 변경하기 전에 Chmod 계산기를 사용하여 각각의 모드를 변환하세요.
유용한 권한 감사는 발견과 해석을 분리합니다. 외부의 문서화된 프로세스가 후보 경로를 수집하도록 한 다음 계산기를 사용하여 반환된 각 모드를 명시적인 클래스 권한으로 변환합니다. 0755, 2755 및 4755는 일반 권한을 공유하지만 서로 다른 12비트 값을 설명하므로 선택적 특수 비트 숫자를 후행 3개만큼 주의 깊게 확인하세요.
제공된 모드에 포함된 소유자, 그룹, 기타 및 특수 비트 등 좁은 결론으로 마무리합니다. 해당 산술을 노출이나 필수 정책에 대한 근거 없는 주장으로 바꾸지 마십시오. 계산기는 검토자가 의심스러운 모드를 정확하게 읽는 데 도움이 됩니다. 라이브 시스템은 누군가가 변경하기 전에 소유권, 작업 부하 및 시행 증거를 제공해야 합니다.