이전 포스팅에서  워드프레스 REST API 취약점에 대해 다룬적이 있다. (http://securitynote.tistory.com/35)
CVE-2017-5487 취약점에서는 위험도가 별로 높지 않아 별다른 중요성을 못느꼈는데 이번에 짚고 넘어갈 취약점은 꽤 Critical하다.
이 취약점의 경우, 워드프레스 4.7.0-4.7.1 버전에서만 가능하므로 http://securitynote.tistory.com/36 포스팅을 참고하여 설치하고 시작하면 간편하게 실습이 가능하다. 

  • 영향버전: 워드프레스 4.7.0 / 4.7.1
    • 4.7.0 버전부터 적용된 REST API의 취약점

  • 무슨 취약점인가?
    • 워드프레스 REST API의 취약점으로 권한없는 사용자가 게시글을 열람, 수정, 삭제, 생성할 수 있는 취약점이다
    • 이 포스팅에서는 권한없는 사용자가 게시글을 수정하는 실습을 진행한다.

  • 익스플로잇 과정
    1) 도메인/ wordpress/readme.html 에 접속하여 워드프레스의 버전정보를 획득한다.


       2) REST API 를 통해(도메인/wordpress/wp-json/wp/v2/posts)포스팅된 게시글의 상세정보를 확인한다.



       3) 도메인/wordpress/wp-json/wp/v2/posts 뒤에 게시글의 번호를 넣으면 특정 게시글에 해당하는 내용만 출력된다.


       4)  이제 본격적으로 익스플로잇을 하는 과정이다. 
도메인/wordpress/wp-json/wp/v2/posts/(포스팅넘버) 뒤에 ?id=(포스팅넘버)(아무알파벳) 조합으로 패킷을 보낸다.


       5) 프록시 툴을 이용하여 아래와 같이 패킷을 수정하여 전송한다.
                - GET → POST
                - Content-Type: application/json  추가
                - {        
                        "title":"원하는 제목",
                         "content":"원하는 내용"
                    }

       6) 응답값에 200 OK 뜨는 것 확인 후, 실제 웹페이지에 접속하여 변경되었는지 확인

  • 대응책
    • Wordpress 4.7.2 이상 버전으로 업그레이드
    • 업그레이드 시 Content Injection을 시도하면 마지막 과정에서 200OK가 뜨지 않고 "Bad Request" 등의 에러 메시지가 발생한다. 

+ Recent posts