이것이 워드프레스 역사상 최악의 해킹일까?

BBetter Stack
AI/미래기술경제 뉴스컴퓨터/소프트웨어

Transcript

00:00:00워드프레스에서 최근 일련의 취약점이 발견되었는데, 특히 최신 취약점은 매우 심각해서
00:00:04해커가 관리자 패널의 완전한 제어권을 탈취할 수 있습니다. SQL 인젝션부터 셸 명령
00:00:09실행까지 가능한 꽤 심각한 수준이죠. 워드프레스에 관심이 없을 수도 있지만, 전 세계 웹사이트의 44% 이상이
00:00:14워드프레스로 구동되므로 여러분이 이용하고 데이터를 입력하는 상당수 웹사이트가
00:00:19이 취약한 버전의 워드프레스로 작동 중일 가능성이 높습니다. 작동 방식은 기본적으로 이렇습니다.
00:00:25제 로컬 환경에 순정 버전의 워드프레스를 설치해 두었는데요,
00:00:29첫 번째 스크립트를 실행해 취약점이 존재하는지 확인해 보면,
00:00:34HTTP 207 응답을 받는 것을 볼 수 있습니다. 즉 실제로 취약점이 존재한다는 뜻이며, 이제 두 번째 검사를 실행할 수 있습니다.
00:00:41바로 인터랙티브 셸에 진입하는 것이죠. 사이트에 SQL 인젝션을 실행해 새로운 관리자 계정을 생성하고
00:00:47악성 플러그인을 업로드하여 이 웹사이트의 모든 파일과 상호작용할 수 있게 만듭니다.
00:00:52그럼 문제의 내부로 들어가 정확히 어떻게 작동하는지 알아보겠습니다.
00:00:58지금 보고 계신 이 리포지토리는 취약한 워드프레스 사이트에 SQL 인젝션을 수행하는 방법을 정확히 보여줍니다.
00:01:066.90~6.94 또는 7.00~7.01 사이의 모든 사이트가 대상이죠. 공격은 인증되지 않은
00:01:14엔드포인트인 batch v1을 호출하는 것으로 시작하며, 이를 통해 유효성 검사 및 권한 확인을 거치는
00:01:20다른 요청들을 일괄적으로 번들 처리할 수 있습니다. 배치 핸들러에는 동기화 상태를 유지해야 하는 두 개의 병렬 배열인 validation과 matches가 있지만,
00:01:26버그로 인해 wp pass URL 파일 함수가 잘못된 경로로 인해 실패할 때 validation만 업데이트되었습니다.
00:01:33그래서 두 배열을 조회하는 데 동일한 인덱스를 사용할 때 결과가 불일치하게 됩니다. POC는 이 점을 악용합니다.
00:01:41단 하나의 요청, 즉 자체적으로 요청 본문을 가진 v2 post 엔드포인트로의 POST 요청만 포함된 배치를 전송합니다.
00:01:48부모 요청이 POST 요청으로 정상 검증되었기 때문에, 요청 본문 내부의 모든 요청은 메서드 허용 목록 검사를 우회하게 되어
00:01:56GET 요청을 보낼 수 있게 됩니다. 그 내부 배치 안에는 존재하지 않는 포스트에 대한 GET 요청이 들어 있어
00:02:02앞서 언급한 동기화 오류를 유발하고, 워드프레스가 get items라는 함수 하에서 동일한 요청을 디스패치하게 만듭니다. 여기서 author
00:02:10exclude 필드가 author not in에 매핑되며, 취약한 빌드는 이를 SQL에 문자열로 보간합니다. 기본적으로 이 모든 과정이 실행되면서
00:02:18SQL이 이스케이프 처리되지 않는 것이죠. POC는 일련의 요청을 사용하여 최종적으로 v2 users로의 POST 요청을 통해
00:02:25새로운 관리자 계정을 생성할 수 있게 합니다. 리포지토리는 이 모든 단계를 상세히 다루고 있습니다. 처음 5단계는 인증 전 단계로 버그를 악용하지만, 6단계는 인증된 사용자의
00:02:35일반적인 워드프레스 동작인 악성 패키지 업로드입니다. 앞서 말씀드렸듯이 이것은 순정 버전의 워드프레스일 뿐이며, 악성 플러그인을 통해 취약점에 접근하는 것이 아닙니다.
00:02:46기본 워드프레스를 설치하면 됩니다. 먼저 취약점이 실행 가능한지
00:02:52검증하는 이 체크 스크립트를 실행한 다음, 예를 들어 read 명령을 실행하면
00:02:57데이터베이스 사용자 이름과 데이터베이스 이름 등을 알려줍니다. 이제 웹사이트에 대해 SQL을 실행할 수도 있으므로
00:03:03데이터베이스가 실제로 어떤 버전으로 실행 중인지 등을 알아낼 수 있습니다. 하지만 사실 이건 심각한 부분이 아닙니다. 정말 심각한 건
00:03:07악성 플러그인을 업로드할 수 있는 권한을 가진 관리자 계정을 실제로 생성하는 이 부분입니다.
00:03:15이 경우 web shell이라고 불리는데, 이를 통해 웹사이트의 셸에 접근할 수 있게 되어 이 웹사이트의
00:03:22모든 파일에 접근할 수 있습니다. 이 공격은 영상 앞부분에서 설명해 드린 것과 같은 방식으로 이루어집니다.
00:03:27관리자가 생성된 후 플러그인이 업로드되고, 마지막으로 해당 사용자는 삭제됩니다. 따라서 플러그인의 존재와
00:03:34발생한 일이 더욱 은밀해집니다. 이것이 얼마나 심각한지 시연하기 위해 별도의 스크립트를 작성했습니다.
00:03:38관리자를 생성한 뒤 시스템에 계속 유지시키는 스크립트죠.
00:03:40여기 사용자 이름과 비밀번호가 있습니다. 다시 웹사이트로 돌아가 wp-login 경로로 이동한 뒤 해당
00:03:47사용자 이름과 비밀번호를 입력하고 로그인 버튼을 누르면, 이제 관리자 패널에 대한 전체 접근 권한을 갖게 됩니다. 이 내용이 혼란스럽더라도 걱정하지 마세요.
00:03:54저 역시 파악하는 데 오랜 시간이 걸렸습니다. 알려진 바에 따르면, 그 결과 만들어진 익스플로잇 체인은 터무니없이
00:04:00복잡해서 보안 연구원이 스스로 발견하고 조합하려면 수주, 길게는 수개월이 걸렸을 것이라고 합니다.
00:04:05어떤 보안 연구원도 AI 없이는 10시간 만에 이 익스플로잇 체인을
00:04:10찾아내서 완성할 수 없었을 것입니다. 이는 상당히 무서운 일입니다. 악의적인 공격자들이 봇을 이용해 리포지토리를 스캔하고
00:04:17URL을 확인하면서 취약점이 나타나기만을 기다렸다가 AI를 사용해 기록적인 속도로 악용할 수 있기 때문이죠.
00:04:23Reddit의 한 사용자는 취약점이 발견된 지 단 이틀 만에 자신의 사이트가 침해당했다고 말했습니다.
00:04:27주말에만 업그레이드를 진행했기 때문에, 취약점이 있는 동안 공격자가 새 관리자를 생성하고 로그인할 수 있었던 것이죠.
00:04:33이 익스플로잇은 7.0.2 버전에서 수정되었으니 해당 버전으로 업그레이드하시면 됩니다. 정말 엄청난 사건이네요.
00:04:40POC 실행에 사용한 리포지토리와 기사는 댓글에서 확인하실 수 있습니다. 그리고 심심하신 분들은
00:04:46Better Stack을 구독하여 최신 기술 소식을 받아보세요. 유용한 정보였기를 바라며,
00:04:50언제나 그렇듯 다음 영상에서 뵙겠습니다.

Key Takeaway

워드프레스 6.90~7.01 버전의 SQL 인젝션 취약점은 AI를 통해 10시간 만에 공격 체인으로 개발되었으며, 시스템 점령을 막으려면 7.0.2 버전으로 즉시 업데이트해야 한다.

Highlights

  • 전 세계 웹사이트의 44% 이상을 구동하는 워드프레스에서 관리자 권한을 완전히 탈취할 수 있는 취약점이 발견되었다.

  • 워드프레스 6.90~6.94 및 7.00~7.01 버전은 인증되지 않은 batch v1 엔드포인트를 호출하는 방식으로 SQL 인젝션 공격에 노출된다.

  • 보안 연구원이 수개월 걸릴 복잡한 익스플로잇 체인을 AI가 단 10시간 만에 찾아내어 공격 코드를 완성했다.

  • 공격자는 악성 플러그인 업로드 후 생성한 관리자 계정을 즉시 삭제하여 침투 흔적을 은폐한다.

  • 해당 보안 취약점은 워드프레스 7.0.2 버전 패치를 통해 해결되었다.

Timeline

워드프레스 취약점의 영향력 및 기본 동작 원리

  • 전 세계 웹사이트 44% 이상에 영향을 주는 워드프레스 관리자 제어권 탈취 취약점이 발생했다.
  • 순정 버전 워드프레스 환경에서 HTTP 207 응답을 반환받으면 해당 취약점이 존재하는 상태이다.
  • SQL 인젝션을 실행해 관리자 계정을 생성하고 악성 플러그인을 업로드할 수 있다.

웹사이트 44% 이상이 워드프레스로 작동하므로 다수의 웹 서버가 위험에 노출된다. 외부 플러그인을 설치하지 않은 순정 워드프레스 상태에서도 취약점이 작동한다. 검사 스크립트 전송 시 HTTP 207 응답이 반환되면 인터랙티브 셸 진입이 가능해지며 파일 시스템 전체를 조작할 수 있다.

배치 요청 동기화 오류와 SQL 인젝션 메커니즘

  • 공격 대상은 워드프레스 6.90~6.94 및 7.00~7.01 버전이다.
  • 인증되지 않은 batch v1 엔드포인트 호출 시 배열 동기화 오류가 발생하여 권한 검사를 우회한다.
  • author_exclude 필드가 이스케이프 처리 없이 SQL 문자열로 직접 보간된다.

배치 핸들러 내부의 validation 및 matches 배열은 동일한 인덱스로 조회된다. URL 처리 함수 실패 시 validation 배열만 업데이트되어 두 배열 간 인덱스 불일치가 생긴다. 부모 요청을 POST로 보낸 뒤 내부에서 GET 요청을 전달하면 권한 검사를 우회한다. 이 과정에서 이스케이프되지 않은 쿼리가 실행되며 v2 users 엔드포인트를 통해 새 관리자 계정이 생성된다.

웹셸 설치 및 관리자 계정을 통한 은폐 공작

  • SQL 인젝션으로 데이터베이스 이름 및 사용자 정보를 탈취한다.
  • 웹셸 플러그인을 업로드하여 서버 내부 파일 전체에 접근할 수 있다.
  • 관리자 계정 생성 후 악성 플러그인을 설치하고 계정을 즉시 삭제하여 침투를 은폐한다.

체크 스크립트를 실행하면 데이터베이스 이름과 사용자 정보가 노출된다. 관리자 권한으로 로그인한 뒤 웹셸 악성 플러그인을 업로드하면 시스템 서버 셸 제어권을 얻는다. 공격을 마친 뒤 생성했던 관리자 계정을 삭제하여 로그 탐지를 우회하고 은밀하게 제어권을 유지한다.

AI 기반 공격 체인 생성 및 버전 업데이트 대책

  • 수주일 이상 소요될 익스플로잇 체인 완성을 AI가 10시간 만에 처리했다.
  • 자동화 봇과 AI의 결합으로 취약점 공개 이틀 만에 실제 웹사이트 침해가 발생했다.
  • 워드프레스 7.0.2 버전을 적용하면 해당 취약점이 차단된다.

사람 연구원이 수주 혹은 수개월 동안 조합해야 할 복잡한 익스플로잇 체인이 AI를 통해 단 10시간 만에 만들어졌다. 공격자들은 자동화 봇으로 리포지토리와 URL을 감시하다가 AI로 신속하게 공격 코드를 생성해 유포한다. 실제 주말 동안 업데이트를 미룬 사이트들이 침해당했으며, 7.0.2 버전 패치로 이 문제를 해결한다.

Community Posts

View all posts