LoginSignup
27
25

More than 5 years have passed since last update.

SQLインジェクションしようとしたアクセスを弾く

Last updated at Posted at 2016-09-22

(プログラム側で入力値チェックやエスケープしているものとする)

QUERY_STRINGに不正な文字が来たらサーバーのリソースを使わせるのはもったいないため
即座に終了させる。(毎分延々とアクセス来たりするため)
海外のサーバー50台からアクセス来てた。

必要に応じてブロックしたい文字を追加すること
// (, by ,' が来たらdie()
if(preg_match('/(\(|%28|%20[Bb][Yy]%20|\'|%27)/',$_SERVER['QUERY_STRING'])){
    header("HTTP/1.0 404 Access denied.");
    die("your access has been blocked.");
}
  • %20 : 半角スペース
  • %28 : (
  • %27 : '

不正アクセス例

不正アクセス例
?hoge=fuga'
?hoge=fuga' AND BENCHMARK(2999999,MD5(NOW())) GrOup BY 20&
?hoge=fuga' And sLEEp(3)) #&
?hoge=fuga%27%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45),CHAR(45,120,49,48,45,81,45),CHAR(45,120,49,49,45,81,45),CHAR(45,120,49,50,45,81,45),CHAR(45,120,49,51,45,81,45),CHAR(45,120,49,52,45,81,45),CHAR(45,120,49,53,45,81,45),CHAR(45,120,49,54,45,81,45),CHAR(45,120,49,55,45,81,45),CHAR(45,120,49,56,45,81,45),CHAR(45,120,49,57,45,81,45),CHAR(45,120,50,48,45,81,45),CHAR(45,120,50,49,45,81,45),CHAR(45,120,50,50,45,81,45),CHAR(45,120,50,51,45,81,45),CHAR(45,120,50,52,45,81,45),CHAR(45,120,50,53,45,81,45)%20--%20/*%20order%20by%20%27as%20/*
?hoge=fuga%22%20or%20(1,2)=(select*from(select%20name_const(CHAR(111,108,111,108,111,115,104,101,114),1),name_const(CHAR(111,108,111,108,111,115,104,101,114),1))a)%20--%20%22x%22=%22x

アクセス数多い順にIP表示

cat /var/log/httpd/access_log | awk -F " " '{print $1}' | sort | uniq -c | sort -n -r | head

ブラックリスト化

blacklist.php
<?php
$ip_blacklist = array(
    // 2016-09-22 (Thu) SQL injection access.
    '89.146.221.7',
    '134.213.119.7',
    '23.91.70.7',
    //
);

if(in_array($_SERVER['REMOTE_ADDR'], $ip_blacklist)) {
    die("blacklisted.");
}
unset($ip_blacklist);
?>
27
25
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
25