개발자 도구 · Chmod 계산기
chmod 777이 권한 거부 오류에 대한 잘못된 수정인 이유
· 그것이 중요한 이유
chmod 유닉스 액세스 제어
777는 모든 사람에게 모든 것을 제공하여 오류를 사라지게 합니다. 이 게시물에서는 실제로 부여되는 내용, 악용 방법 및 실제 문제를 찾는 진단 단계에 대해 설명합니다.
오류는 사라지고 질문은 사라지지 않았습니다. 프로젝트 디렉토리의 chmod -R 777이 업로드 양식을 수정했는데 아무도 그 이유를 모릅니다.
777 이후 사라지는 권한 오류는 광범위한 액세스가 결과를 변경했음을 증명할 뿐입니다. 어떤 비트가 문제인지 또는 모드 비트가 오류를 일으켰는지 여부는 밝혀지지 않습니다. 계산기는 777을 rwxrwxrwx에 매핑합니다. 모든 클래스는 읽기, 쓰기 및 실행을 수신하며, 실제 의미는 일반 파일과 디렉터리에 따라 다릅니다.
유용한 증거는 원래 모드와의 비트 수준 차이입니다. 해당 모드의 클래스 트리플을 기록한 다음 성공을 진단이라고 부르지 않고 777을 비교하십시오. 계산기는 프로세스 ID, 소유자, 그룹, ACL 또는 필수 정책을 알지 못합니다. 해결 방법이 영구 설정이 되기 전에 777이 부여하는 액세스 권한의 양만 노출됩니다.
777가 일반 단어로 부여하는 것 — 시스템의 모든 사용자는 트리의 모든 항목을 읽고, 수정하고, (디렉터리의 경우) 생성 또는 삭제할 수 있습니다.
모드 777는 모든 클래스에 최대 일반 숫자를 할당합니다. 각 7은 읽기 4, 쓰기 2 및 실행 1을 결합하여 rwxrwxrwx를 생성합니다. 파일의 경우 모든 클래스가 내용을 읽고, 변경하고, 실행할 수 있습니다. 디렉토리의 경우 항목을 나열하고 수정하고 이름으로 입력할 수 있습니다. 모든 일반 확인란이 선택됩니다.
"다른 모든 사람"은 알려진 계정이 아닌 최종 권한 트리플에 구체적으로 해당합니다. ID와 소유권이 없으면 계산기는 프로세스가 소유자, 그룹 또는 기타를 사용하는지 여부를 결정할 수 없습니다. 777을 775 또는 755와 비교하면 제거된 각 쓰기 비트가 여전히 정확하게 표시되며 "open"과 같은 모호한 설명이 눈에 띄는 클래스 수준 차이로 대체됩니다.
피해 발생 방식 - 손상된 웹 프로세스, 잘못 작성된 스크립트 또는 다른 테넌트 편집 구성 또는 웹 셸 삭제
계산기는 부여된 비트를 노출하지만 공격 경로를 증명할 수는 없습니다. 누구나 쓰기 가능한 파일은 모든 계정이 해당 내용을 변경할 수 있다는 경고를 트리거합니다. 고정되지 않은 777 디렉터리는 항목이 생성되거나 삭제될 수 있음을 경고합니다. 이러한 결과는 모드 및 대상 유형에 따라 달라지며 다른 계정이 존재하거나 행동했다는 증거는 아닙니다.
관찰된 사건에서 가능한 결과를 분리합니다. 페이지는 프로세스, 테넌트, 스크립트, 구성 또는 웹 루트를 검사하지 않으며 아무것도 실행하지 않습니다. 클래스에 대해 쓰기가 활성화되어 있는지 확인하고 광범위한 검토 대상에 플래그를 지정할 수 있습니다. 손상, 삽입된 파일 또는 실제 남용에 대한 주장에는 계산기가 수집하지 않는 환경적 증거가 필요합니다.
계산기는 부여된 비트를 노출하지만 공격 경로를 보여줄 수는 없습니다.
신원 및 소유권 진단은 이 경로 외부에서 발생합니다. 일반 비트는 소유자, 그룹 및 기타로 그룹화되지만 계산기는 모드 정수 및 대상 유형만 수신합니다. 소유자 이름, 그룹 멤버십 또는 프로세스 자격 증명이 없으면 모든 트리플을 일관되게 디코딩하더라도 실패한 액세스 시도를 제어하는 트리플을 결정할 수 없습니다.
이것이 모든 클래스를 확장하는 것이 약한 진단인 이유입니다. 확인된 그룹 비트는 프로세스가 그룹 액세스를 사용해야 하는 경우 중요할 수 있습니다. 잘못된 소유권으로 인해 모드 편집이 잘못된 해결 방법이 될 수 있습니다. 매트릭스를 사용하여 후보 변경 사항을 격리한 다음 외부에서 ID와 소유권을 확인합니다. 브라우저는 승인이 아닌 표현을 결정합니다.
신원 및 소유권 진단은 이 경로 외부에서 이루어져야 합니다.
업로드 디렉토리의 경우 후보를 처방하지 않고 비교하십시오. 777 모드는 모든 클래스 디렉터리에 읽기, 쓰기 및 실행을 제공합니다. 775 모드는 그룹 쓰기를 유지하면서 기타 쓰기를 제거합니다. 755 모드는 소유자에 대한 쓰기를 예약합니다. 계산기는 이러한 차이점을 표시하지만 업로더가 어떤 클래스를 사용하는지, 어떤 작업이 필요한지는 알 수 없습니다.
후보 간의 가장 작은 비트 변화를 기록합니다. 777에서 775까지 other-write만 사라집니다. 775에서 755까지 그룹 쓰기도 사라집니다. 디렉토리 쓰기는 항목 생성, 이름 바꾸기 및 삭제를 제어하는 동시에 항목 및 이름 조회를 제어합니다. 적합성은 여전히 소유권, ID, ACL 및 계산기 외부 애플리케이션 동작에 따라 달라집니다.
작업 예: 후보 업로드 디렉토리 모드를 규정하지 않고 비교
프로그램별 거부 규칙에는 해당 프로그램의 문서와 런타임 증거가 필요합니다. chmod 소스에는 SSH 정책, 웹 서버 규칙 또는 애플리케이션 구성이 포함되어 있지 않습니다. 소프트웨어가 777을 거부하거나 755을 허용하거나 다른 값을 요구한다는 것을 증명할 수 없습니다. 계산기는 모드만 변환하고 일반적인 파일 또는 디렉터리 작업을 설명합니다.
소프트웨어가 권한을 너무 광범위하다고 보고하는 경우 관찰 모드로 들어가서 해당 그룹 및 기타 비트를 검사하십시오. 그런 다음 무엇이든 변경하기 전에 해당 프로그램에 대한 권위 있는 증거를 참조하십시오. 생성된 chmod 행은 비활성 텍스트입니다. 8진수와 기호 디스플레이의 일치는 프로그램 정책 준수 또는 향후 운영 성공이 아닌 변환 일관성을 확인합니다.
프로그램별 거부 규칙에는 해당 프로그램의 문서가 필요합니다.
필수 액세스 제어 거부는 chmod 및 계산기 외부에 있습니다. SELinux, AppArmor 또는 다른 정책 엔진을 쿼리하는 소스는 없습니다. 따라서 777 모드는 관련 없는 컨트롤이 보이지 않는 동안 완벽하게 렌더링될 수 있습니다. 페이지에서는 해당 조건을 소유권, ACL, 저장소 또는 애플리케이션 제한 사항과 구별할 수 없습니다. 모두 계산기 결과가 아닌 외부 가능성입니다.
확장 모드를 모든 인증 계층에 대한 보편적인 테스트로 취급하지 마십시오. 계산기의 증거는 소유자, 그룹 및 기타 비트와 setuid, setgid 및 고정으로 끝납니다. 작업이 실패하거나 성공한 이유가 아니라 선택된 권한을 표시합니다. 관찰된 모드를 보존하고, 정확한 비트를 비교하고, 외부 정책을 독립적으로 조사합니다.
필수 정책 거부는 chmod 및 계산기 외부에 있습니다.
모드를 확대하기 전에 각 부여를 이해하십시오. 777을 입력하면 9개의 일반 권한이 모두 명시됩니다. 그룹 및 기타 쓰기를 제거하려면 755을 비교하고, 다른 쓰기를 제거하는 동안 그룹 쓰기를 유지하려면 775를 비교하세요. 이러한 사실적 변환은 알 수 없는 소유자, 프로세스 또는 워크로드에 대한 모드를 선택하지 않고도 각 후보자의 액세스 표면을 드러냅니다.
브라우저 외부에서 ID와 소유권을 확인한 다음 의도한 비트만 확인합니다. 적절한 파일 또는 디렉터리 설명을 사용하여 8진수, 기호 텍스트, 요약 및 확인란이 일치하는지 확인하세요. 페이지는 잘못된 입력을 거부하지만 chmod를 실행하지도 않고 손상을 식별하지도 않습니다. 최종 승인 결정은 검사된 환경에 속합니다.