不正アクセスログをWAFで確認する

ある程度のパフォーマンスと運用コストの安さが、レンタルサーバーの良い所です。また、セキュリティ対策と運用を任せられる部分が多いのも助かります。レンタルサーバーの利用者が実施するセキュリティ対策と運用は、Webアプリの脆弱性を無くす事だけです。ですがそれは完璧にはできませんので、ベンダー側の方でWAFを用意しています。ログをドメイン毎に一週間分保存してくれているので、週に一度ログを分析し、その有効性とWAFを無効にしプロテクトが無かった場合でも大丈夫だったかを確認しています。

一ヶ月間(2020年3月中~4月中)ログの状況を確認し、気付き二点をまとめてみました。

1.不正アクセス元は何処なのか、IPアドレスから調べてみました。世界の地域は色々でしたが共通している点がありました。IPアドレスを保有している組織は、通信事業者かアマゾンやグーグル等のクラウドベンダーでした。不正アクセスの発信者は、クラウドやレンタルサーバーを悪用しているユーザーだと言う事です。日本でも、通信事業者のデータセンターを借り、クラウドサービスを提供している一部の海外ベンダーからの不正アクセスが多いと聞きます。

2.index.htmlから別ページmap.phpを呼び出す時、以下の通りURLでデータ(住所情報)を渡しました。それ以降、不正アクセスXSSとSQLインジェクションが増えました。

呼び出し元(index.html)
<a href=”map.php/?map=住所情報” target=”_blank”>住所</a>

呼び出し先(map.php)
<?php
if(isset($_GET[‘map’])){$map=$_GET[‘map’];}

//htmlspecialcharsのショートカット
function h($string){
return htmlspecialchars($string, ENT_QUOTES);
}
?>

<html>
 省略

<iframe width=”100%” height=”100%” src=”https://www.google.com/maps/embed/v1/place?key=AI key&q=<?php echo h($map); ?>&zoom=13″></iframe>

 省略
</html>

・ログされたXSSの一例
/map.php/?map=”><script%20>alert(String.fromCharCode(88,83,83))</script>
先ずJavaScriptが実行できるか確認しています。
WAFでフィルターされましたが、入力データの無害化は必須です。

・ログされたSQLインジェクションの一例
/map.php/?map=%E5%91%89%E5%B8%82%E9%83%B7%E5%8E%9F%E7%94%BA2527-313%20and%201%3D1
=以下をデコードすると、呉市郷原町2527-313 and 1=1となります。
全部で12件のログが記録されており、select文も入っていました。
WAFでフィルターされましたが、入力データの無害化は必須です。

不正アクセスは週に数回ですので、全てログを確認しています。