Documentation & Blog

워드프레스 플러그인 취약점 분석 조사

KWAKBUMJUN 2025. 10. 15. 02:53

주제에 대한 소개

워드프레스 플러그인이란 워드프레스 웹사이트의 기능을 확장하거나 개선해주는 소프트웨어이다. 많은 사람들이 자신이 만든 플러그인들을 온라인에 올릴 수 있고, 해당 플러그인들은 모두 오픈소스이기 때문에 플러그인을 다운 받아서 파일을 열어보면 코드를 확인할 수 있다. 따라서 플러그인에 대한 취약점 분석을 진행할때 화이트 박스 상태에서 분석할 수 있기에 분석에 있어서 수월하다.

본 보고서에소서는 워드프레스 플러그인 취약점 분석을 어떻게 진행하는지, 자동화 도구를 어떻게 활용할 수 있는지에 대해 조사할 예정이다.

관심 주제로 선정한 이유

해당 주제를 관심 주제로 선정한 이유는 나이츠 프론티어 미션중에 워드프레스 취약점 분석 자동화 도구를 만드는 미션이 있었기 때문에 이 주제로 보고서를 작성하면 더욱 깊게 이해가 가능하지 않을까 싶어서 선정하게 되었다.

취약점 분석 절차

WP-Plugin 다운로드

워드프레스에서는 사람들이 개발하여 올려둔 플러그인들이 엄청나게 많기 때문에 하나하나 수동으로 다운받아서 조사를 하면 효율적이지 않다. 따라서 나는 플러그인들을 자동으로 대량 설치하기 위해 자동화 도구를 만들어서 설치하였다. 파이썬의 bs4 라이브러리를 사용하여 자동화를 진행했다.

취약점 분석 방법

일단 첫 번째 방법은 다운로드 된 파일들을 하나하나 열어보면서 코드 오디팅을 하는 것이다. 하지만 이 과정은 굉장히 오래 걸린다. 그리고 wp plugin 취약점 분석 사례를 찾아보니 코드를 하나하나 분석한 사람들은 없었고, 모두 자동화 도구를 사용했다. 그렇다면 어떤 도구를 사용할까?

사례1. Semgrep

내가 찾아본 첫 번째 사례에서는 semgrep이라는 정적 분석 도구를 활용한 사례이다. semgrep을 사용하면 우리가 직접 rule이라는 것을 적용 시켜줄 수 있다. 예를 들어서 우리가 찾고자 하는 취약점이 SQL INJECTION이면, prepared statement가 쓰이지 않은 코드, 파라미터에 대한 검증이 없는 코드와 같은 취약할만한 코드의 패턴을 rule에 작성하고 semgrep으로 해당 rule을 기반으로 코드를 찾도록하면 해당 규칙에 해당되는 코드들을 뽑아준다.

사례2. 정규식 사용

이 방법은 semgrep과 비슷한 원리를 가지고 있지만 다른 방법이다. 우리가 직접 정규칙을 다음과 같이 작성한다.

method_variable = r"((?:(\\$[a-zA-Z_\\x7f-\\xff](?:[a-zA-Z0-9_\\x7f-\\xff]+)?)(?:[\\s\\t]+)=(?:[\\s\\t]+))+.*(?:\\$_GET|$_REQUEST)\\[.*\\].*(?:;)?)"
sql_query = r"\\$wpdb->(?:query|get_var|get_row|get_col|get_results|insert|update|delete)\\s*\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)"
sql_query_with_request_vars = r"(?=.*(?:\\$_GET|$_POST|$_REQUEST)\\[.*\\])" + sql_query

위와 같이 정규칙을 작성하면 semgrep과 비슷하게 코드를 한줄한줄 읽어가며 해당 정규식에 해당되는 코드들을뽑아준다.

취약점 PoC

위의 방법을 기반으로 취약코드를 뽑았다고 가정하자. 그렇게 되면 해당 플러그인이 실제로 취약할지 테스트를 해봐야 한다. 취약점을 재현하기 위해 우리는 로컬 wp 환경에 플러그인을 추가하여 직접 공격을 해볼 수 있다.

조사 후 느낀점

wp-plugin 취약점 분석도 일종의 버그 바운티라고 할 수 있다. 하지만 화이트 박스 환경이라는 점에서 다른 버그바운티랑은 다른 것 같다. 그리고 내가 실제로 취약점 분석을 해본 결과 각 플러그인 마다 취약점을 하나씩 가지고 있는 것 같다. 따라서 플러그인들이 굉장히 취약하다는 것을 알 수 있었고, 취약점을 찾더라도 해당 취약점이 어디서 터지는지 확인하기 위해서는 코드 오디팅이 필요하다. 이 과정에서 코드 분석 능력도 향상 시킬 수 있을 것 같아서 여러모로 도움이 되는 프로젝트라고 생각한다.

'Documentation & Blog' 카테고리의 다른 글

NAS 취약점 분석  (0) 2025.10.15
스타링크 역분석을 통한 무선통신 안전 검증  (0) 2025.10.15