集客・売上採用業務効率化制作実績会社概要ブログ無料相談
Webマーケ

バックアップファイルが、インターネットから誰でもダウンロードできる状態だった。893MB・データベース入り

2026年11月4日
約8分で読めます
山田 祐輔
バックアップファイルが、インターネットから誰でもダウンロードできる状態だった。893MB・データベース入り

保守先のサイトでWordPressを更新しているとき、サイトの中に「移行プラグインが残したバックアップ」が4本あるのを見つけました。合計893MB。URLを直接たたくと、ログインなしで丸ごとダウンロードできました。

結論から書きます。バックアップにはデータベースが入っています。管理者のパスワード(ハッシュ化されたもの)やメール送信の設定が含まれます。プラグインは既に消されていて、バックアップだけが残っていました。その日のうちに4本とも削除し、外から404になることを確認しました。以後、月次の点検項目に「バックアップ置き場に外からアクセスできないか」を加え、保守先7サイトで露出がないことを確認しています。

きっかけ

10月23日、SEOプラグインとWordPress本体の更新のために、サーバーにSSHで入って作業前のバックアップを取っていました。容量を見ると wp-content/ai1wm-backups/ というフォルダが異様に大きい。中に .wpress という拡張子のファイルが4本、5月30日・6月3日・6月4日・6月12日の日付で、1本あたり214〜243MBありました。

.wpress は「All-in-One WP Migration」というサイト移行プラグインが作るファイルで、サイトのファイルとデータベースを1本にまとめたものです。春にサイトを移したときの残骸でした。プラグイン自体はもう入っていません。

最初に:作業する場所を整理

  • サーバー(SSHかFTP)。フォルダの中身と、同梱の設定ファイル(.htaccess)を見る場所
  • ブラウザ、または curl。外からそのURLに本当にアクセスできるかを試す場所
  • サーバーの管理パネル。アクセスログがあればここ

用語は3つだけ

  • 公開フォルダ:サーバー上で、URLでアクセスできる範囲。WordPressの wp-content はこの中にあります
  • .htaccess:フォルダごとにアクセスの可否を決める設定ファイル
  • ディレクトリ一覧:フォルダのURLを開いたときにファイル名が並ぶ表示。これを隠すのと、ファイル自体を塞ぐのは別物です

手順0:本当に外から取れるのかを確かめる【ブラウザ・curl】

一覧を隠す設定はファイルを守らない。見つかった状態と対処

フォルダには、プラグインが置いた .htaccess が同梱されていました。中身は、拡張子の扱い・既定の表示ファイル・「ディレクトリ一覧を出さない」の3行だけ。ファイル自体へのアクセスは塞いでいません。

実際に、ファイル名を指定して外から取ってみました。

HTTP 200
Content-Length: 253,980,571

242MBのファイルが、ログインなしで返ってきます。部分取得(Range)も通るので、分割して落とすこともできます。

「ファイル名が分からなければ落とせない」も成り立ちませんでした。4本のうち2本は、ファイル名の末尾が3桁の数字でした。日付が分かれば1,000通りを試すだけです。残る2本は長いランダム文字列でしたが、ディレクトリ一覧を出さない設定だけでは、推測しやすい名前のものは守れません。

手順1:中身に何が入っているかを把握する【サーバー】

.wpress の中には、サイトのファイル一式と、データベースの全テーブルが入ります。つまり次が含まれます。

  • ユーザー一覧と、パスワードのハッシュ
  • サイトの設定(メール送信のサーバー・パスワードなど、プラグインが保存した値)
  • 問い合わせフォームの送信履歴を保存するプラグインがあれば、その中身

「古いバックアップだから中身も古い」は慰めになりません。5月時点の管理者パスワードが、いまも同じなら生きています。

手順2:削除する【サーバー】

4本とも削除しました。削除は、1本ずつ絶対パスを指定して実行しています。フォルダごと消すコマンドは、指定を間違えたときの被害が大きいので使いません。

削除後、フォルダは893MBから20KBになり、サイトは200のまま、4本のURLはすべて404になりました。

削除で足りるのは、プラグインが入っていないからです。もし移行プラグインを使い続けるなら、バックアップの置き場を公開フォルダの外にするか、.htaccess で「このフォルダのファイルは返さない」を自分で書く必要があります。プラグインの同梱設定だけでは塞がりません。

手順3:ほかのサイトを同じ目で見る【ブラウザ・curl】

移行プラグイン以外にも、バックアップを公開フォルダの中に置く仕組みはあります。保守先と自社の7サイトで、次のフォルダに外からアクセスできるかを確かめました。

  • /wp-content/ai1wm-backups/(All-in-One WP Migration)
  • /wp-content/updraft/(UpdraftPlus)
  • /wp-content/uploads/backwpup/ ほか(BackWPup はフォルダ名に乱数が付くので、設定画面で確認)

結果は、ファイルが返ってくるものはゼロでした。1サイトだけフォルダが残っていて(今回削除したサイト)、中身は空です。別のサイトでBackWPupを使っていますが、保存先フォルダは外から403で、ファイルは取れません。

手順4:月次の点検項目に入れる

先日の記事で書いた「保守先を外から点検する」仕組みに、この項目を足しました。見るのは「バックアップ置き場のURLにGETして、ファイル名が分かる・ファイルが返る、のどちらかが起きないか」です。プラグインを消してもバックアップは残る、という前提で毎月見ます。

つまずき早見表

起きたこと原因対処
バックアップが外から落とせる置き場が公開フォルダの中で、ファイルへのアクセスが塞がれていない削除するか、公開フォルダの外に移す
「一覧を出さない」設定があるから大丈夫だと思った一覧を隠すのとファイルを塞ぐのは別ファイル名を指定して外から取ってみる
ファイル名が推測できる末尾が3桁の連番推測不能な名前でも、塞ぐのが先
プラグインを消したのに残っているプラグインの削除はバックアップを消さないフォルダを自分で見る
誰かに落とされたか分からないアクセスログを見ないと分からないログの保存期間を確認。分からないなら「漏れた前提」で管理者パスワードを変える

確認方法:自分のサイトで今日できること

自分のサイトで今日できる3つ
  1. ブラウザで https://自分のドメイン/wp-content/ai1wm-backups/ と /wp-content/updraft/ を開く。ファイル名が並んだら、その場で問題です
  2. 並ばなくても安心しない。FTPかサーバーのファイルマネージャーで同じフォルダを開き、ファイルがあれば、そのファイル名をURLに付けて開いてみる。ダウンロードが始まれば、外から取れています
  3. 取れていたら、削除するか公開フォルダの外へ移し、管理者パスワードとメール送信のパスワードを変える

正直に書いておくこと

  • 5月から10月までの間に、誰かがダウンロードしたかどうかは確認していません
  • 今回の7サイトは当社の保守先に限った確認です。移行プラグインを使ったことがあるサイトは、同じ構造を持っている可能性があります
  • 「公開フォルダの外に置く」はサーバーの契約によってはできません。その場合は .htaccess で塞ぐか、取り終えたら消す運用になります

要点3行

  • 移行プラグインのバックアップは、プラグインを消しても公開フォルダに残る
  • 「一覧を出さない」設定は、ファイル自体を守らない。外からファイル名を指定して取ってみる
  • 見つけたら削除し、漏れた前提で管理者とメール送信のパスワードを変える
この記事をシェア
← 2014年製の問い合わせフォームが、2026年に突然届かなくなった理由。差出人を「お客様のアドレス」にしていた 「ホームページを補助金で作りたい」と相談されて公募要領を読み直したら、作り始められるのは早くて来年5月だった。持続化補助金とホームページの相性を、制作会社の立場で整理した記録 →
山田祐輔 山田祐輔
山田 祐輔
YUSUKE YAMADA
代表取締役 / LINE業務管理・AI業務改善・ホームページ制作
30件+
支援実績
4年
事業歴
50件+
1日の電話をLINEで管理
10日
最速で問い合わせ15件
大阪府枚方市を拠点に、中小企業・個人事業主の「業務改善」と「集客」を仕組みから支援。電話メモ・日報・予約を社員が毎日使うLINEにまとめる業務管理システムの構築と、ホームページ・ECサイトの制作から公開後の集客・運用まで、ひとつの窓口で担当。2022年の個人開業を経て2024年1月に法人化。
LINE業務管理 LINE予約システム AI業務効率化 Notion ホームページ制作 ECサイト(Shopify) LP制作 Google広告・Meta広告 MEO・SEO
お問い合わせ LINEで相談