워드프레스를 VM에 올리고 호스트 PC에서 접속을 하려니까 자꾸 아래의 화면처럼 깨졌다.




분명 VM에서 로컬호스트로 접속하면 멀쩡히 나오는 테마가 저렇게 되니까 뭔가 보기도 별로고 뭐가뭔지 모르겠어서 해결방법을 찾아보았다.


그랬더니 VM에서 127.0.0.1/wordpress/wp-admin/options-general.php에 접속해서 Wordpress Address(URL) 부분을 외부에서 접속하는 주소로 변경하라고 했다...


뭐때문에 깨짐현상이 없어지는지는 잘 이해가 가지 않지만 일단 해보자.

(Dashboard > Settings > General  > WordPress Address(URL)  수정)




이렇게 하고 접속하면 아래와 같이!! 정상적으로 테마가 나타난다! 짠!





하지만 이 과정 중, 수정 후에 Server Internal Error 어쩌구 하면서 phpMyAdmin 등 모든 페이지에 접속이 불가능해지면

워드프레스 홈루트에 .htaccess 파일이 생겼는지 확인하고 삭제하자. (있으나 없으나 별 문제 없음...!)

이때 AutoSet, WordPress등을 모두 재설치해도 똑같은 문제가 생기니, 믿고 한번 해보장..


안에 내용을 확인해보지 못해서 왜 삭제하면 접속이 가능해지는지 알수 없으나, 아마 홈루트로 접근하는 것을 차단해버리는 설정이 생기는 것 같다.!


이전 포스팅에서  워드프레스 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" 등의 에러 메시지가 발생한다. 

지난번에 올린  CVE-2017-5487 워드프레스  REST API  취약점을 테스트하는데 필요한  Wordpress를 설치해보자.
아래와 비슷한 방법으로 4.7.0 버전을 다운받아 설치를 진행하였지만 설치 도중 버전업이 되어 결론적으로 4.7.9가 되는 문제가 생겼다. 
따라서, 버전업이 되지 않도록 주의해서 진행해보자.. 
(야매로 다운그레이드를 하는 방법들이 인터넷에 존재하지만, 나는 하다가 아예 워드프레스 실행이 안되는 상황이 발생해서 다시 설치한다..)


워드프레스 홈페이지에서 이전 버전 파일을 모두 제공하므로 쉽게 다운로드가 가능하다.

1. 아래의 링크에서 원하는 버전을 다운받는다. (여기서는 4.7.0 버전을 다운받는다.)
2. Wordpress를 쉽게 설치하기 위해서 컴퓨터의 bit에 맞는 Autoset을 다운받는다.
3. 다운받은 오토셋 설치
    1) 오토셋 설치파일 실행
    2) 설치 언어 선택


    3) [다음] 클릭


    4) '사용자 계약에 동의합니다' 선택 후 [다음] 클릭

   


    5) 설치 위치 선택 후 [다음] 클릭

    6) [다음] 클릭

    7) [다음] 클릭   

    8) [설치] 클릭

    9) 정보 확인 후 [다음] 클릭


    10) [완료] 클릭


    11) 오토셋 매니저 실행 시, [웹서버 시작], [MySQL 시작] 버튼 클릭하여 서버 시작하기

   
 12) 서버 정상 동작 확인 (127.0.0.1 접속)


 
4. 설치 시 자동 버전업을 막기 위해 인터넷 연결을 차단한다.

5. 다운로드 받은 Wordpress 파일을 AutoSet 홈디렉터리로 이동시킨다.
        **  AutoSet의 홈디렉터리는 아래와 같이 실행이 가능하며, 일반적으로  c:\AutoSet9으로 생성된다)

6. Wordpress 설치
    1)  phpMyAdmin접속 후, root/autoset 으로 로그인




    2) 데이터베이스 생성


    3)  User 생성 및 패스워드 변경



   

    4) 127.0.0.1/wordpress  접속 (→ 127.0.0.1/wordpress/wp-admin/setup-config.php로 이동함}


    5) Step 3에서 생성한  User 정보로 로그인 

    6) [Run the install] 버튼 클릭


    7) Wordpress 계정 정보 입력 후, [Install Wordpress] 버튼 클릭

    8) 설치 완료 후, 메인페이지 접속



7) 설치가 모두 완료되었다면  Wordpress 자동 업데이트를 해제한다.
    - wp-config.php 에 코드 추가
        define('AUTOMATIC_UPDATER_DISABLED',true);  




+ Recent posts