Apache PHP 스크립트의 XSS 취약성
MOD_PHP와 함께 Apache를 실행하는 두 개의 CentOS8 서버가 있습니다. URL 끝에 슬래시를 추가하면 스크립트 내의 base-uri가 변경되어 XSS 취약성을 생성하는 것을 발견했습니다.
예를 들면http://myserver.com/Login.php/ 또는 http://myserver.com/Login.php/extra_stuff/상대 링크 및 이미지에 대한 base-uri가 올바르지 않게됩니다. extra_stuff에 javascript가 포함 된 경우 잠재적으로 페이지의 콘텐츠를 변경할 수 있습니다.
후행 슬래시가 있고 404를 반환하는 경우 Apache가 PHP 스크립트를 디렉토리처럼 처리하지 못하도록하려면 어떻게해야합니까? 태그를 추가하기 위해 모든 페이지를 편집 할 필요는 없습니다.
나를 혼란스럽게하는 것은 아래 Apache 구성이 실제로 존재하지 않을 때 PHP 스크립트를 후행 슬래시 및 관련없는 문자와 일치시키고 핸들러로 보내는 이유입니다.
FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
답변
@CBroe가 주석 에서 설명했듯이 :
어딘가에 요청 URL 경로를 적극적으로 출력하지 않는 한 이것이 어떻게 취약점을 생성하는지 알 수 없습니다. URL이 그냥 있기 때문에
http://myserver.com/Login.php/extra_stuff/
그이 암시 적으로 모든 상대 URL이에 대해 해결 얻을 것이다 기본 URL 거기 모두 실행에 자바 스크립트 코드를 의미하지 않는다. 처리 및 고려없이 문서에 URL을 삽입하면 당연히 XSS 문제가 될 수 있습니다.
AcceptPathInfo는 동작을 설명합니다. 공급 업체 코드에는 실제로 내가 수정 한 $ _Server [ "PHP_SELF"]의 비위생적 사용이 많이있었습니다.