개발 Q&A

제목 표준프레임워크에서 제공하는 디렉터리 및 파일 노출 취약점에 대한 코드상에서 조치방법
카테고리 PHP
글쓴이 정수리 작성시각 2025/05/09 13:48:00
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 6186   RSS

웹취약점조치 관련하여 메일이 왔는데

 

웹취약점 보고서를 확인해보니

 

'표준프레임워크에서 제공하는 디렉터리 및 파일 노출 취약점 -1' 이라는 항목으로  취약점이 잡혔더라구요

 

점검 경로가 http://웹사이트주소/#/auth/login 이길래 접속해보니

 

웹사이트 메인페이지로 접속이 되었습니다. 프로그램 소스 코드경로상에 auth같은 폴더나 파일은 없습니다.

 

구글링을 통해 '위치공개' 취약점 관련해서 코드상에서 처리하는 방법에 대한 자료는 없더라구요.

 

혹시나해서 CI코드상에서 위치 공개 취약점에 대한 조치 방법에 대해 아시는 선배님들이 계실까해서 글 올렸습니다.

 

프로그램 CI버전은 코드이그나이터3입니다.

 다음글 ci에 스트리밍 기술 접목 방법 (1)
 이전글 ci4 (4.6) 설치했는데 동작을 안합니다. (2)

댓글

변종원(웅파) / 2025/05/12 12:32:39 / 추천 0

어떻게 설정하신지 모르겠지만 Auth 컨트롤러가 없으면 에러가 나야 정상입니다.

라우터 파일이던 설정파일인던 어디선가 처리를 해주고 있을 겁니다.

정수리 / 2025/05/20 11:09:58 / 추천 0

@웅파

답변감사합니다. 이제 확인했네요

말씀하신것 처럼 url에   http://웹사이트주소/auth/login 입력하면 정상적으로 없는 페이지라고 에러페이지 출력이 됩니다.

문제는 중간에 http://웹사이트주소/#/auth/login  샵을 넣었을때는 메인페이지 출력이 됩니다.

그상태에서 다시 url에 엔터를 입력하면 화면 변화도 없는 상태입니다. 코드상에서 할수 있는 거로는 라우터 파일에서 

$route['404_override'] = 'errors';

$route['translate_uri_dashes'] = FALSE;

//$route['index'] = 'main';
$route['wingsp'] = 'member';
$route['userchk/login\.form\.php'] = 'member';
$route['goURL\.html'] = 'bid/goUrl';
$route['privacy\.html'] = 'main/privacy';
$route['menu_01_list\.html'] = 'orderplan/lists';
$route['menu_02\.html'] = 'bid';
$route['menu_03\.html'] = 'bid/rslt';
$route['menu_04_list\.html'] = 'contract/lists';

if($_SERVER['REQUEST_URI'] == '/menu_04_list.html?type=4'){
    $route['menu_04_list\.html'] = 'negotiation/lists';
}else if($_SERVER['REQUEST_URI']== '/menu_04_list.html?type=5'){
    $route['menu_04_list\.html'] = 'subcontract/lists';
}else{
    $route['menu_04_list\.html'] = 'contract/lists';
}

$route['menu_05_list\.html'] = 'contract/lists/pv';
$route['menu_06_list\.html'] = 'legislation/lists';
$route['menu_08_list\.html'] = 'payment/lists';
$route['menu_09_list\.html'] = 'notice/lists';

위의 라우터파일 설정이 끝입니다.

라우터 파일외에 다른 확인해봐야할 사항이 있을까요?

경력 전환 new / 2026/03/09 14:57:18 / 추천 0

안녕하세요.

웹취약점 보고서의 ‘표준프레임워크에서 제공하는 디렉터리 및 파일 노출 취약점 -1’ 항목에 대해 확인한 결과,
보고서에 기재된 점검 경로인 http://도메인/#/auth/login 은 실제 서버 경로가 아니라 프런트엔드 해시(fragment) 라우팅 경로로 판단됩니다.

# 이하의 URL fragment 값은 브라우저 측에서만 처리되며, 일반적으로 서버로 전달되지 않습니다.
실제 접속 시에도 해당 경로는 별도 디렉터리/파일로 연결되지 않고 메인 페이지로 라우팅되고 있으며,
서버 내 배포 소스 기준으로도 auth 라는 실제 디렉터리 또는 파일은 확인되지 않았습니다.

또한 현재 시스템은 CodeIgniter 3 기반으로 운영 중이며,
프레임워크 핵심 디렉터리 노출 여부 및 디렉터리 인덱싱(목록 조회) 가능 여부를 추가 점검할 예정입니다.
CodeIgniter 공식 가이드상 system, application 디렉터리는 웹 루트 외부에 두는 것이 권장되며,
디렉터리 목록 노출은 웹서버 설정(Apache/Nginx)에서 차단하는 방식으로 관리하는 항목입니다.

현재까지 확인한 바로는, 보고서에 기재된 #/auth/login 경로만으로는
실제 디렉터리/파일 노출 취약점이 재현되지 않아 오탐 가능성이 있어 보입니다.

가능하시다면 아래 자료를 포함하여 재점검 또는 상세 근거를 공유 부탁드립니다.

실제 서버로 요청된 URL 경로

노출되었다고 판단한 디렉터리/파일명

응답 화면 캡처 또는 응답 본문

HTTP 응답코드 및 재현 절차

근거 자료를 확인한 후 필요한 조치를 추가로 진행하겠습니다.

감사합니다.