IDOR - 권한이 없는 사용자는 다른 사용자의 비밀 게시글에 엑세스하여 댓글을 남길 수 있습니다.

Writer what_web Program wargame.kr

WEB Informative Low No Reward Created: Jul 20, 2021 (3 years ago) Last Updated: Jul 17, 2022 (2 years ago)

Weakness

IDOR

Description

요약

http://wargame.kr/board/write 페이지에는 publicsecret 기능이 존재합니다. public 기능은 게시글을 작성할 때 해당 게시글을 전체 커뮤니티 사람들이 볼 수 있으며 , secret 기능을 통해 게시글을 생성하면 모든 사용자는 해당 게시글을 확인할 수 없으며 자신만 해당 글을 볼 수 있습니다.

그러나 공격자는 권한이 없는 게시글에 대한 엑세스 권한을 획득하여 게시글에 댓글을 작성할 수 있습니다.

재현단계

  1. http://wargame.kr/board/write 페이지에서 secret 기능을 통해 게시글을 생성합니다.
  2. 이제 자신을 제외한 다른 사람은 해당 게시글을 방문할 수 없습니다.
  3. 생성한 게시글을 방문하고 Burp Suite 를 통해 댓글을 작성합니다.
  4. 댓글 작성 시 다음과 같은 요청이 전송됩니다.
POST /board/write_reply/1816 HTTP/1.1
Host: wargame.kr
Content-Length: 27
...

contents=test
  1. 위 요청에서 board/write_reply/18161816 숫자를 다른 사용자의 게시글 번호로 변경합니다.
  2. 이후 요청을 전송하십시오.
  3. 권한이 없는 사용자는 다른 사용자의 비밀 게시글에 댓글을 남길 수 있습니다.
  4. 1816 숫자는 게시글을 생성할 때 부여되는 고유 번호입니다. 따라서 쉽게 파악이 가능하며 예측이 가능합니다.
  • IDOR
  • 권환이 없는 사용자는 다른 사용자의 비밀 게시글에 엑세스할 수 있습니다.

Timeline

what_web submitted ticket. July 20, 2021 (3 years ago)
what_web posted a comment. July 20, 2021 (3 years ago)

안녕하세요 테스트 결과 추가 정보를 발견하였습니다.

다른 사용자의 비밀 게시글에 대한 고유 숫자는 비밀 게시글을 방문할 때 추가로 확인할 수 있습니다.

감사합니다.

4e6c6258 MANAGER posted a comment. October 26, 2021 (2 years ago)

비밀 게시글에 댓글을 남길수 있다는 제보 감사드립니다.
하지만 본 취약점으로 해당 비밀글의 내용을 확인할 수는 없다는 점에서 기존에 말씀주셨던 CSRF와 유사한 공격으로 판단됩니다. 타 공격으로 활용 가능한 영향도가 미비하여 비밀글에 대한 댓글 작성 시 작성 가능여부를 판단하는 코드 적용 후 티켓 Close 하겠습니다. 감사합니다.

4e6c6258 MANAGER changed the severity from 'Medium' to 'Low'. October 26, 2021 (2 years ago)
4e6c6258 MANAGER changed the status from 'Submitted' to 'Informative'. October 26, 2021 (2 years ago)
4e6c6258 MANAGER changed the disclosure from 'Closed' to 'Disclosed (Full)'. October 26, 2021 (2 years ago)
what_web posted a comment. December 14, 2021 (2 years ago)

안녕하세요 이 보고서에 대한 업데이트가 있는지 궁금합니다.

이 보고서는 현상금을 받을 수 있는 자격에 해당 하나요?

감사합니다.

4e6c6258 MANAGER posted a comment. December 14, 2021 (2 years ago)

아니요 현상금을 받을수 있는 자격에 해당하지 않습니다.

위 댓글 내용대로 “본 취약점으로 해당 비밀글의 내용을 확인할 수는 없다는 점” 부분에서 만약 내용확인이 가능한 취약점이라면 현상금을 받을 수 있는 자격에 해당하겠지만 본 내용으로 댓글 다는것으로는 활용도가 미비하기때문에 자격에 해당하지 않습니다.


7월말 경 뇌에서 내려가는 혈관이 막혀 마비가 오고 죽다 살아나서 업데이트가 늦어진 부분에 있어서는 죄송하다는 말씀 드립니다.

INFO : 본 취약점을 포함한 모든 티켓은 이미 스테이터스가 “종료됨” 으로 변경되어 있으며 이는 더이상 업데이트가 없을것이라는 이야기입니다.
제보해주신 다른 취약점들 역시 취약점의 크리티컬함을 판단했을때 모두 바운티 지급요건에 해당하지 않는다고 판단했고 그 상태로 모든 티켓은 종료되었으니 참고해주시면 감사하겠습니다.

what_web posted a comment. December 15, 2021 (2 years ago)

안녕하세요. 회신해주셔서 감사합니다.

그러나 위 댓글 내용대로 “본 취약점으로 해당 비밀글의 내용을 확인할 수는 없다는 점” 부분에서 만약 내용확인이 가능한 취약점이라면 현상금을 받을 수 있는 자격에 해당하겠지만 본 내용으로 댓글 다는것으로는 활용도가 미비하기때문에 자격에 해당하지 않습니다." 내용에 동의하지 않습니다.

Description

그 이유로써 이 취약점은 비인가 사용자가 비밀 게시글에 댓글을 작성할 수 있는 버그로 본 정책에 따라

  1. 평가 기준 사항의 공격 성공 시 비즈니스 영향도 (e.g 정보유출, 게시물 삭제 및 변조, 비인가 페이지 접근 등) 게시물 삭제 및 변조
  2. Sever Side 취약점 기준 사항의 권한이 없는 콘텐츠 접근 및 변경, 삭제 권한이 없는 콘텐츠 접근 및 변경, 삭제
  3. 보상에서 제외되는 경우 기준 사항의 서비스에 영향(무결성, 가용성 침해) 무결성(데이터 수정이 가능하나 수정 결과에 대해 공격자가 통제할 수 없거나 수정량이 제한됨. 데이터 수정은 영향을 받는 구성 요소에 직접적이고 심각한 영향을 미치지 않습니다.)

위 기준을 모두 총족하기 때문에 이 취약점은 “현상금을 받을수 있는 자격에 해당하지 않습니다.” 라는 의견에 동의하지 않습니다.

또한 이 취약점은 “본 취약점으로 해당 비밀글의 내용을 확인할 수는 없다는 점”다른 사람의 비밀글의 내용을 확인하는 것이 아닌 “비인가 사용자가 비밀 게시글에 댓글을 작성” 할 수 있는 버그로써 비슷해 보이지만 서로 다른 본질의 유형 입니다. 따라서 언급해주신 다른 사용자의 비밀 게시글의 내용을 확인하는 버그가 아닙니다.

즉 이 취약점으로 인해 API의 제어가 깨져 공격자가 피해자의 비밀 게시글의 데이터를 업데이트할 수 있으며 서버는 비밀글에 대한 권한이 있는 사용자만이 해당 댓글을 업데이트할 수 있도록 검증하는 로직을 구현하여 API를 제한해야 합니다.

마지막으로 이 보고서외 다른 제출한 보고서 모두 현상금 자격에 해당되지 않기 때문에 “유익한” 로 보고서가 모두 종결되었습니다. 일반적으로 대부분의 버그바운티 플랫폼에서는 악용 소지가 낮거나 활용 가능성이 없어 미비한 취약점들의 경우 “유익한” 로 보고서를 종결합니다. 이러한 유형의 취약점들은 수정사항을 구현하지 않으며 알려진 취약점 또는 제외항목으로 취급됩니다.

그런데 왜 “유익한” 로 종결된 보고서 모두 수정 코드를 구현하고 문제를 해결하는 이유가 무엇인가요? (제출한 일부 취약점은 이미 문제를 해결하였으며 “유익한” 로 종결됨)

타 공격으로 활용 가능한 영향도가 미비하여 비밀글에 대한 댓글 작성 시 작성 가능여부를 판단하는 코드 적용 후 티켓 Close 하겠습니다. 감사합니다.

버그캠프의 버그바운티 플랫폼에는 심각도에 따라 없음 낮음 중간 높음 매우높음 등의 옵션이 있습니다. 프로그램 관리자 또는 사용자는 심각도에 대한 옵션을 설정할 수 있으며 “악용 소지가 낮거나 보안상 영향이 미비한 취약점의 경우 심각도 없음” 에 따라 분류하고 해결된 보고서에는 그에 따른 현상금을 지급하는 것이 공정하다고 생각합니다.

감사합니다.

4e6c6258 MANAGER posted a comment. December 15, 2021 (2 years ago)

인용또한 이 취약점은 “본 취약점으로 해당 비밀글의 내용을 확인할 수는 없다는 점” 의 다른 사람의 비밀글의 내용을 확인하는 것이 아닌 “비인가 사용자가 비밀 게시글에 댓글을 작성” 할 수 있는 버그로써 비슷해 보이지만 서로 다른 본질의 유형 입니다. 따라서 언급해주신 다른 사용자의 비밀 게시글의 내용을 확인하는 버그가 아닙니다.

우선 위의 말씀대로 다른 본질의 유형이기 때문에 해당하지 않다고 말씀드린거였습니다.
A - 비밀 게시글에 댓글을 작성 가능한 버그 - 바운티에 해당하지 않음
B - 비밀 게시글을 확인하거나 삭제 등을 일으키는 버그 - 바운티에 해당함

만약 A의 상태일 때, 타 비밀글에 댓글을 달 경우 아이디 변조 등의 방식을 통해 마치 관리자가 댓글을 단것처럼 속일수 있다거나 하는 방식이 가능했다면 바운티에 해당한다고 판단했을겁니다.


그런데 왜 “유익한” 로 종결된 보고서 모두 수정 코드를 구현하고 문제를 해결하는 이유가 무엇인가요? (제출한 일부 취약점은 이미 문제를 해결하였으며 “유익한” 로 종결됨)

그리고 이부분은 결론부터 말씀드리자면 코드는 수정되지 않았습니다.
물론 그와는 별개로 “수정후 티켓 클로즈 하겠습니다” 라는 내용으로 얘기를 한것은 제 잘못임을 인정합니다. 다만, 저 이후 실제 사이트 운영상에 문제를 일으키는 취약점이 아니었기때문에 “영향도가 미비” 하다고 판단했고, 실제 사이트 닫을때까지도 전혀 패치를 하지 않은 상태였습니다.

이와 포함하여 당시 게시판을 보셨으면 아시겠지만 애초에 게시판에 브루트포싱을 포함한 퍼징 등 온갖글로 도배가 되어있는 상태였고 이는 운영상에 이슈를 초래하지 않는 상황으로 삭제처리 등도 진행하지 않았습니다.


위 스크린샷 캡쳐해주신 빨간 박스 세개에대해 좀더 얘기해보자면

  1. 게시물 삭제, 변조
  • 비밀글에 대한 내용수정 또는 삭제처리는 운영상의 이슈를 초래한다고 판단하겠지만, 댓글을 다는것으로는 이슈를 초래하지 않는다고 판단하였습니다.
  1. 권한이 없는 콘텐츠 접근 및 변경
  • 권한이 없는 콘텐츠 접근 : 비밀글의 내용을 확인할수 있음
  • 권한이 없는 콘텐츠 변경 : 해당 비밀글을 변조하거나 삭제할 수 있음
  1. 서비스에 영향(무결성, 가용성 침해)을 주지 않는 경우 :: 보상에서 제외
  • 위와 같습니다.

결국 다 같은 얘기인데 예를 들자면 다음과 같습니다.

상황 : 사용자가 관리자에게 비밀글로 본인의 연락처를 남김
이때 의도한 바는 관리자만이 연락처를 받아 연락하는것으로 이때 무결성, 가용성 침해 또는 의미를 가지기 위해선 다음과 같은 경우가 있습니다.

  1. 타인이 해당 연락처를 훔쳐볼 수 있음
  2. 해당 글을 변조하여 연락처를 삭제처리함

단, 해당 게시글에 댓글로 전혀 엉뚱한 타인이 “아닙니다 제 연락처는 뭐입니다” 라고 하든 댓글에 뭔가의 내용을 추가로 작성하든 뭘하든 해당 댓글의 글쓴이가 표시되기 때문에 아는 활용도 미비로 판단하고 "서비스에 영향(무결성, 가용성 침해)을 주지않는 취약점"으로 판단하여 보상에서 제외되는 경우로 판단하였습니다.


결론적으로 취약점들은 보상에서 제외되는 것으로 판단하였습니다.

하지만 이와는 별개로

  1. 응답이 늦은점
  2. 취약점은 패치하지 않았으나, “패치하고 클로즈 하겠습니다.” 라고 잘못된 내용을 전달해 드린점.

이에 대해 운영상의 문제가 있었기때문에, 제보된 취약점에 대해서는 바운티를 드릴수 없으나 별개로 위로금은 전달해드릴 용의가 있으니 이에대해서는 버그캠프쪽 운영진을 통해서 연락드리도록 하겠습니다.