김승현

그누보드 취약점 분석 xss 5.3.1.7(분류 설정 탭) 본문

그누보드 : 1-day 분석

그누보드 취약점 분석 xss 5.3.1.7(분류 설정 탭)

kshind 2023. 11. 8. 10:02

기타 정보

더보기
닫기

실습 환경 : 5.3.1.7             (이후 버전도 가능함)

취약점 정보 : Cross Site Scripting(XSS)

간단 정리 : /adm/qa_config.php경로 내 분류에 악의적인 스크립트 삽입

취약점 재연에 필요한 경로 adm/qa_config.php이다.

 

일단 adm/qalist.php로 가보자.

 

/adm/qa_config.php는 1:1문의 설정 페이지인데 여긴 문의의 분류의 종류를 정의할 수 있는 게 있다. 여기 ">를 입력해보자.

입력시 이렇게 원래 분류 탭에 있던 속성값들이 출력되는 걸 볼 수 있다.

원래 input 내용
분류에 ">를 추가한 후의 코드

이런 식으로 우리가 강제로 태그를 닫아서 다른 코드를 삽입할 수 있을 것으로 보인다.

"> <img src='x' onmouseover="alert('xss_test')">

위의 코드를 입력해보자.

에러난 이미지에 마우스를 올리면 이렇게 경고창이 뜬다. onmouseover 속성 대신 onerror 입력시 페이지에 접근시 바로 출력된다.

 

/adm/00qa_config.php의 코드를 확인해보자.

 

 

            <td>
                <?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])') ?>
                <input type="text" name="qa_category" value="<?php echo $qaconfig['qa_category'] ?>" id="qa_category" required class="required frm_input" size="70">
            </td>

위의 내용이 qa_config.php 중 분류를 입력하는 곳을 작성한 코드이다.

 

value 속성에 저장되는 값인 $qaconfig['qa_category']부분에 별다른 입력값 검증이 있지 않을 걸 볼 수 있다. 그렇기 때문에 여기서 ">를 통해 input태그를 강제로 닫을 수 있으며 우리가 원하는 스크립트를 삽입할 수 있게 되는 것이다.