불완전한 Reflected XSS 패치로 인한 Reflected XSS 취약점 재발생

작성자 PecentZero 프로그램 수산아이앤티

WEB 종료됨 낮음 보상없음 작성일: 2021년 12월 30일 (2년 전) 마지막 업데이트일: 2022년 3월 2일 (2년 전)

취약점 유형

Reflected XSS

상세내용

개요

[취약점 제보에 대한 개요를 작성해 주세요]
다른 파라미터의 경우 " 를 ” (비슷하지만 다른문자)로 치환하여서 " 태그가 깨지는 것을 방지하였고 , reflected 취약점을 막을 수 있었지만
no parameter의 경우 " 가 "로 치환되면서 "를 다른 문자로 제대로 치환해주지 않았습니다.
이로 인해 태그가 깨지게 되었고 , 여러 필터링이 있었지만 아래와 같은 과정으로 Reflected XSS 사이트 취약점이 여전히 존재하게 됩니다.

재현 과정

[취약점 재현을 하기 위한 과정을 서술해 주세요]
1.https://www.soosanint.com/board/board_view.php?board_id=notice&no=-10%22%3E%3Cimg%20src=1%22%20onerror=alert%60XSS%60%3E

예상되는 취약점 발생 원인

[해당 취약점이 발생하는 예상 원인을 서술해 주세요]
"를 &quot나 다른 문자로 치환하지 않은 채 "로 치환되어 "가 계속 살아있게 되고 , 태그가 깨지면서 XSS 취약점을 다시 발생시킵니다.

패치 방법

[해당 취약점을 패치하기 위한 대응 방법을 서술해 주세요]
다른 파라미터 처럼 " => /" 로 바뀔때 "도 다른 문자로 치환해주세요! (다른 파라미터 조치한것과 동일한 방식으로 패치해도 됩니다!)

예상 결과 및 파급력

[해당 취약점으로 인해 예상되는 결과 및 파급력을 서술해 주세요. 시나리오가 포함되어도 좋습니다.]
이전에 제보한 위험성과 비슷합니다.

기타사항 및 레퍼런스

[그 외에 추가할 내용이 있다면 이곳에 작성해주세요.(스크린샷, 로그 등)]
XSS 우회기법은 정말 많습니다. 심지어 방화벽에서 필터링을 해도 , 뚫리는 경우가 상당합니다.
다만 reflected 취약점의 경우 case에 따라 다르지만 이번의 경우 "를 다른문자로 치환하는 것만으로도 여러 필터링 없이 XSS를 막을 수 있습니다.
현재 취약점을 " 치환이 아닌 alert 나 다른 문자열 필터링을 할 경우 , 다른 우회기법으로 다시 취약점이 발현될지도 모릅니다.

재발 상태를 막기 위해서 취약점 패치 후 , 취약점 제보자에게 검증을 요청하는 과정이 있으면 좋을 것 같습니다! (hackerone이나 네이버 등등에서도 제보자로부터의 검증과정을 거칩니다!)

타임라인

PecentZero 님이 티켓을 제출했습니다. 2021년 12월 30일 (2년 전)
Steve BUGCAMP STAFF 님이 상태를 '제출됨'에서 '처리중'으로 변경했습니다. 2022년 1월 3일 (2년 전)

안녕하세요. 수산아이앤티 버그바운티 프로그램에 제보해주셔서 감사합니다.
제출해주신 티켓 확인 결과 Reflected XSS 취약점이 발현되는 것을 확인했습니다. 해당 티켓은 담당자에게 전달하도록 하겠습니다.

Steve BUGCAMP STAFF 님이 위험도를 '중간'에서 '낮음'으로 변경했습니다. 2022년 2월 25일 (2년 전)

제보해주신 Reflected XSS 취약점 패치완료되었습니다.
해당 티켓은 핵티비티에 공개될 예정이며, 패치가 미흡한 경우 코멘트로 남겨주시면 참고하여 재패치하도록 하겠습니다.
수산아이앤티 프로그램에 유의미한 취약점을 제보해주셔서 진심으로 감사드립니다.

Steve BUGCAMP STAFF 님이 상태를 '처리중'에서 '종료됨'으로 변경했습니다. 2022년 2월 25일 (2년 전)
PecentZero 님이 댓글을 남겼습니다. 2022년 2월 25일 (2년 전)

no parameter의 입력형태를 숫자로 제한을 시켜 xss가 발생하지 않도록 패치되었음을 확인했습니다! 감사합니다.

Steve BUGCAMP STAFF 님이 공개상태를 '비공개'에서 '전체공개'로 변경했습니다. 2022년 3월 2일 (2년 전)

조치 내용 확인해주셔서 감사드립니다. 해당 티켓의 공개 상태를 전체공개로 변경하도록 하겠습니다.