김승현
그누보드 취약점 분석 xss 5.3.1.7 (분류 탭) 본문
기타 정보
실습 환경 : 5.3.1.7 (이후 버전도 가능함)
취약점 정보 : Cross Site Scripting(XSS)
간단 정리 : /adm/qa_config.php경로 내 분류에 악의적인 스크립트 삽입 이후 /bbs/qalist.php 접속시 취약점 발생
취약점 재연에 필요한 경로는 총 두 개로 adm/qa_config.php과 /bbs/qalist.php이다.
이전 글과 내용은 비슷할 것이므로 간단하게 진행하려고 한다.
이전 글 참고
https://kshind.tistory.com/126
일단 /adm/qa_config.php에 접속하면 분류를 볼 수 있다.
초기에는 회원|포인트|로 되어 있고 |를 기준으로 분류가 나뉜다. 여기는 저번에도 설명했듯 별 다른 검증이 적용되어 있지 않다.
그 다음으로는 /bbs/qalist.php로 가보자.
qalist.php를 보면 중간에 파란색 박스로 전체 회원 포인트처럼 qa_config.php에서 적어둔 분류들이 나열되어 있는 걸 볼 수 있다.
<li>태그와 <a>태그로 감싸져 있고 qa_configg.php에 적은 내용이 아마 <a>[!!여기!!]</a> 저 [!!여기!!]에 위치하는 것 같다.
저기에 일단 img를 입력해서 xss를 시도해보자.
이런 식으로 분류에 입력했다.
<img src='x' onerror="alert('xss_test')">
그렇게 되면 qalist.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>
위는 adm/qa_config.php의 내용이다.
입력값을 저장하는 부분에 별다른 검증 과정이 있지 않아 아무 값이나 입력할 수 있다.
이번엔 bbs/qalist.php로 가보자.
$category_option .= '<li><a href="'.($category_href."?sca=".urlencode($category)).'"';
if ($category==$sca) { // 현재 선택된 카테고리라면
$category_option .= ' id="bo_cate_on"';
$category_msg = '<span class="sound_only">열린 분류 </span>';
}
$category_option .= '>'.$category_msg.$category.'</a></li>';
코드에서 카테고리, 즉 분류를 출력하는 부분의 코드이다. 우리가 이용한 부분은 $category_msg.$category변수이고 젤 아랫줄에 있다. 젤 아래에서도 별 다른 검증없이 출력하기 때문에 우리가 입력한 스크립트가 그대로 노출된다.
'그누보드 : 1-day 분석' 카테고리의 다른 글
그누보드 취약점 분석 xss 5.3.1.7(투표 form) (1) | 2023.11.18 |
---|---|
그누보드 취약점 분석 xss 5.3.1.7(관리자 이메일) (0) | 2023.11.14 |
그누보드 취약점 분석 xss 5.3.1.7(분류 설정 탭) (0) | 2023.11.08 |
그누보드 취약점 분석 xss 5.4.19 (답변 및 추가 질문) (0) | 2023.11.06 |
그누보드 취약점 분석 XSS (기본 글쓰기 내용, KVE-2019-1235) (0) | 2023.11.06 |