Java のセキュリティ脆弱性: Druid の不正アクセス
序文
多くの友人が、サーバー セキュリティ スキャン中にDruid の不正アクセスの低リスク脆弱性プロンプトに遭遇したと思います。この記事では、最初に Druid の不正アクセスの脆弱性を紹介して分析し、最後に参考のために 2 つの解決策を示します。
1.Druidの不正アクセス原因の分析
脆弱性の説明: Druid は、監視用のデータベース接続プールである Alibaba Database によって生成され、Druid は、監視、SQL 実行時間の監視、Web URI リクエストの監視、セッション監視などの機能を提供することができ、広く使用されています。
明確にする必要があります: Druid 自体には抜け穴はありません. Druid の不正アクセスは、開発者の構成が十分に包括的ではないためであり、攻撃者はip/druid/index.htmlを入力して Druid 監視インターフェイスに直接ログインします. これはそのためです. - 不正アクセスと呼ばれる.アクセスを許可された.
具体例を図に示します。
二、解決策
1.ログインユーザー名とパスワードを追加
不正アクセスの一般的な理由:
(1) 攻撃者は、アカウントのパスワードを入力せずに管理ページにアクセスできます
(2) または、攻撃者は、アカウント: root、パスワード: 123456 などの機密性の低い一般的なアカウント パスワードを入力します。管理ページにアクセスするためのアカウントパスワード。
上記の 2 つの状況は、複雑なログイン アカウント パスワードを追加することで解決できます。アカウントのパスワードをマスターしない限り、不正アクセスの問題は大幅に回避できます。
利点:
(1) Druid の監視および管理機能を引き続き使用できる
(2) ユーザーの習慣への影響が少ない
短所:
(1) リスクをできるだけ軽減するには、アカウントのパスワードを定期的に変更する必要があり、パスワードの難易度を高く設定する必要があります (2) 理論的には、まだ可能性があり
ます攻撃されている
具体的な解決策 (1 つ選択):
(1) druidConfig で構成できます。
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(new StatViewServlet());
servletRegistrationBean.addUrlMappings("/druid/*");
Map<String, String> initParameters = new HashMap<>();
initParameters.put("resetEnable", "false"); //禁用HTML页面上的“Rest All”功能
initParameters.put("allow", "10.8.9.115"); //ip白名单(没有配置或者为空,则允许所有访问)
initParameters.put("loginUsername", "admin"); //++监控页面登录用户名
initParameters.put("loginPassword", "123.admin"); //++监控页面登录用户密码
initParameters.put("deny", ""); //ip黑名单
//如果某个ip同时存在,deny优先于allow
servletRegistrationBean.setInitParameters(initParameters);
return servletRegistrationBean;
}
(2) web.xmlでも設定可能
<!-- 配置 Druid 监控信息显示页面 -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<!-- 允许清空统计数据 -->
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 用户名 -->
<param-name>loginUsername</param-name>
<param-value>druid</param-value>
</init-param>
<init-param>
<!-- 密码 -->
<param-name>loginPassword</param-name>
<param-value>druid</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
2.Druid監視ページ機能を無効にする
不正アクセスのリスクを完全に回避するために、Druid の監視機能を使用する必要がない、またはほとんど使用しない場合は、Druid の監視ページを完全に無効にすることを試みることができます.この方法は比較的単純で失礼であり、長所と短所があります.
メリット:
(1) 不正アクセスのリスクを完全に回避
(2) 設定が簡単で、無効化後のパスワードクラッキングの問題を気にする必要がない
デメリット:
(1)完全に無効化した後は、Druidの監視ページ機能が使えなくなります
(2)利用習慣に影響を与えたり、作品の展開に影響を与えたり、Druid管理の利便性を低下させたりする可能性があります
次のコード行を application.properties 構成ファイルに追加します。
#是否启用StatViewServlet(监控页面),默认true-启动,false-不启动
spring.datasource.druid.stat-view-servlet.enabled=false
要約する
この記事では、Druid の不正アクセスの脆弱性を紹介および分析し、ニーズに応じて選択できる 2 つの一般的な解決策を示します。
個人的な提案: Druid の監視ページ管理機能を使用しない場合は、完全にオフにすることを検討してください。
米国にとって良いことを願っています!
参照リンク:
Spring Boot druid 監視ページにログイン アクセス権 (ユーザー名 + パスワード) を追加して、
Druid 監視のアクセス権を構成します (監視情報にアクセスするためのユーザーとパスワードを構成します)。