3

PHP支払い処理業者からのコールバックを処理するスクリプトがあります。

クエリ文字列'result'に二重ダッシュとそれに続く単一ダッシュが含まれている場合、403を取得します。

/index.php?result=A--B-  (returns 403)
/index.php?result=A-B-   (is OK)
/index.php?result=A-B--  (is OK)
/index.php?result=A--B   (is OK)
/index.php?result=A---B  (returns 403)
/index.php?result=A-B-C- (is OK)

このサイトでは、.htaccessまたはに書き換えルールはありませんapache config

ロードされたモジュールは次のとおりです。

core prefork http_core mod_so mod_auth_basic 
mod_auth_digest mod_authn_file mod_authn_alias 
mod_authn_anon mod_authn_dbm mod_authn_default 
mod_authz_host mod_authz_user mod_authz_owner 
mod_authz_groupfile 
mod_authz_dbm mod_authz_default util_ldap 
mod_authnz_ldap mod_include mod_log_config mod_logio 
mod_env mod_ext_filter mod_mime_magic mod_expires 
mod_deflate mod_headers mod_usertrack mod_setenvif 
mod_mime mod_dav mod_status mod_autoindex mod_info 
mod_dav_fs mod_vhost_alias mod_negotiation 
mod_dir mod_actions mod_speling mod_userdir mod_alias 
mod_rewrite mod_cache mod_suexec mod_disk_cache 
mod_file_cache mod_mem_cache mod_cgi mod_version 
mod_security2 mod_unique_id mod_php5 mod_ssl
4

1 に答える 1

3

もちろん、mod_securityによってブロックされています。

「-」は通常、SQLの行コメントの開始フラグです。プログラマーは、ユーザー入力($ _GET []配列など)を直接使用してSQLクエリを作成することがあります。これにより、SQLインジェクションと呼ばれる脆弱性が発生します。

したがって、mod_securityは、Cookie、クエリ文字列、および投稿されたフォームでそのような文字列をチェックします。不正な文字列が見つかると、403Forbiddenエラーが表示されます。

クエリ文字列に「-」が必要で、クエリ文字列を適切に処理していることが確実な場合(または、実際にSQLクエリを実行していない場合)、このルールをmod_securityから削除できます。

あなたはルールを見つけるかもしれません

MOD_SRCURITY_INSTALLATION_PATH / base_rules / modsecurity_crs_41_sql_injection_attacks.conf

MOD_SRCURITY_INSTALLATION_PATHは、サーバー環境によって異なります。

あなたは近くにそのような規則を見つけるかもしれません

#
# -=[ Detect SQL Comment Sequences ]=-
#

#
# -=[ PHPIDS - Converted SQLI Filters ]=-
#
# https://dev.itratos.de/projects/php-ids/repository/raw/trunk/lib/IDS/default_filter.xml
#

文字列を含むルールを検索して--変更します。それらはすべて正規表現で書かれているので、最初にそれを学ぶ必要があります。

于 2013-01-15T02:52:06.877 に答える