[bug?] img src 태그 내부의 값, 주소 관련

게시판에서 글을 작성할 때 img src 태그를 이용해서 사진을 삽입하고 있습니다.

현재 사진을 첨부할 때 "KBoard 미디어 추가" 버튼을 이용해서 사진을 업로드 하게 되면

<img src="/uploads/1/x.jpg">와 같이 사진을 업로드할 수 있는데,

이 img src 부분에 어떠한 주소든 모두 입력할 수 있습니다.

예를 들어 <img src="http://test.test.test"> 와 같은 식으로 작성하면 (공격자의) 특정 url을 항상 불러오게 됩니다.(csrf와 연결 가능)

하지만 iframe의 경우에는 whitelist를 통해서 이를 막아주고 있습니다.

또 "KBoard 미디어 추가" 기능이 있다는 것은 항상 현재 웹사이트의 하위 주소의 이미지만 불러오기를 허용하는 것으로 이해를 했는데,

혹시 이에 대해서 어떻게 생각하시는지 궁금합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    KBoard(케이보드) 게시글의 제목과 내용 부분은 HTML Purifier 를 사용해서 필터링을 하고 있습니다.

     

    말씀하신 "KBoard 미디어 추가" 기능은 게시글에 종속되는 이미지 파일을 업로드할 수 있는 기능입니다.

    관리자만 사용할 수 있는 "미디어 추가" 기능은 워드프레스 미디어에 종속되어 관리자만 사용할 수 있으며 같은 이미지 파일을 여러 게시글에 삽입해서 표시할 수 있습니다.

    "KBoard 미디어 추가" 또는 워드프레스의 "미디어 추가" 기능은 모두 파일을 업로드 하는 기능입니다.

    이미지 파일 업로드가 완료됐다면 이 것들의 역할은 끝나게 됩니다.

    더 이상 게시글 내용과는 영향이 없습니다.

     

    파일을 업로드 한 다음 실제로 게시글 내용에는 <img> 태그 형태로 삽입됩니다.

    그래서 작성자가 임의로 내용을 바꾸거나 태그의 속성을 바꿀 수 있습니다.

    혹은 "KBoard 미디어 추가" 또는 워드프레스의 "미디어 추가"로 업로드된 이미지 경로가 아니어도 태그를 입력하고 게시글 작성이 가능합니다.

    외부 서버 혹은 다른 서비스에 올려진 이미지도 게시글 내용에 삽입할 수 있어야 하기 때문에 <iframe> 태그와 같은 whitelist 필터는 존재하지 않습니다.

    따라서 버그라고 생각은 안되었는데요.

    만약의 경우를 위해서 <iframe> 태그와 비슷하게 whitelist 설정이 추가되면 좋을 듯합니다.

    이 부분은 저희가 좀 더 연구해서 업데이트를 해보겠습니다.

    고맙습니다.

  • 버그가 생길 수 있습니다.

    관리자 권한으로 로그인 한 이후에 게시판의 특정 글에 들어가면 삭제 권한이 생깁니다.

    이상태에서 삭제 버튼을 누르기만 하면 삭제가 됩니다.

    제 게시판에서는 글 삭제 링크가 <a href="/%ea%b2%8c%ec%8b%9c%ed%8c%90/qa/?mod=remove&amp;pageid=1&amp;uid=139&amp;kboard-content-remove-nonce=15722c21a0"> 로 뜹니다.

    만약 이 주소를 특정 글에서 정확히 img src로 불러오게 되면 관리자가 그 글을 읽었을 때 글이 삭제될 것입니다.

    다음과 같이 <img src="/%ea%b2%8c%ec%8b%9c%ed%8c%90/qa/?mod=remove&amp;pageid=1&amp;uid=139&amp;kboard-content-remove-nonce=15722c21a0">를 넣은 후 관리자 계정으로 게시판에 접속하니 글이 삭제되는 것을 확인할 수 있습니다.

    이 문제는 GET parameter로 제공하는 kboard-content-remove-nonce 변수값과도 연관되는데요,

    원래 remove-nonce값은 페이지를 로드할 때마다 바뀌어야하는데 게시판에서 바뀌지 않는 것을 알 수 있습니다.

    일단 이부분에 관해서 업데이트가 필요할 것으로 추측됩니다.

    또 알려지지 않은 관련된 버그가 많이 생길 수 있으므로 img src로 검증되지 않은 외부 서버의 값을 바로 가져오기보다는 내부에서 먼저 검증을 거친 이후에 img src 태그를 이용할 수 있도록 해야할 것입니다.

  • 버그가 생길 수 있습니다.

    관리자 권한으로 로그인 한 이후에 게시판의 특정 글에 들어가면 삭제 권한이 생깁니다.

    이상태에서 삭제 버튼을 누르기만 하면 삭제가 됩니다.

    제 게시판에서는 글 삭제 링크가 <a href="/%ea%b2%8c%ec%8b%9c%ed%8c%90/qa/?mod=remove&amp;pageid=1&amp;uid=139&amp;kboard-content-remove-nonce=15722c21a0"> 로 뜹니다.

    만약 이 주소를 특정 글에서 정확히 img src로 불러오게 되면 관리자가 그 글을 읽었을 때 글이 삭제될 것입니다.

    다음과 같이 <img src="/%ea%b2%8c%ec%8b%9c%ed%8c%90/qa/?mod=remove&amp;pageid=1&amp;uid=139&amp;kboard-content-remove-nonce=15722c21a0">를 넣은 후 관리자 계정으로 게시판에 접속하니 글이 삭제되는 것을 확인할 수 있습니다.

    이 문제는 GET parameter로 제공하는 kboard-content-remove-nonce 변수값과도 연관되는데요,

    원래 remove-nonce값은 페이지를 로드할 때마다 바뀌어야하는데 게시판에서 바뀌지 않는 것을 알 수 있습니다.

    일단 이부분에 관해서 업데이트가 필요할 것으로 추측됩니다.

    또 관련된 버그가 많이 생길 수 있으므로 img src로 검증되지 않은 외부 서버의 값을 바로 가져오기보다는 내부에서 먼저 검증을 거친 이후에 img src 태그를 이용할 수 있도록 해야할 것입니다.

  • 안녕하세요.

    kboard-content-remove-nonce 값은

    워드프레스의 wp_create_nonce() 함수를 사용합니다.

    삭제 권한이 있는 사용자와 삭제 권한이 없는 사용자의

    remove-nonce 값은 다르게 표시됩니다.

    실제 테스트해보신 코드 중에서 15722c21a0 부분은

    삭제 권한이 없는 사용자로 확인했을 땐 다르게 표시됩니다.

    따라서 실제 삭제 시 필요한 kboard-content-remove-nonce 값을

    관리자나 글 작성자 이외에는 확인할 수 없습니다.

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기