そのホームページ大丈夫? HTTPヘッダ・インジェクションって何? それは「悪意の要求(リクエスト)で応答(レスポンス)を改ざんする攻撃方法」です!
こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「OSコマンド・インジェクション」について記述します。
★「セキュリティ」って何?
まず「OSコマンド・インジェクション」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。
セキュリティは
「安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。
現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。
このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。
また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。
しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。
★OSコマンド・インジェクションって何?
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
現在では
●SNS
●オンライン・ショッピング
●オンライン予約
などのWebシステムがよく利用されています。
もし、このようなWebシステムを利用して
Webサーバに不正な命令を注入して実行させることができたら
Webサーバを悪の巣窟にすることができるかもしれませんね。
そうすることができれば
そのWebサイトを利用している人の
●個人情報
●クレジットカード情報
などデータベースに登録されている情報を取得したり
攻撃の踏み台にすることができ
いろいろ悪用することが可能になるかもしれませんね。
OSコマンド・インジェクションは
Webサーバを不正に操作する攻撃方法です。
インジェクションとは
注入という意味があります。
OSコマンド・インジェクションは
WebサーバのOSが実行できる命令を不正に注入することで
Webサーバを不正に操作し悪さをすることです。
Webサーバもコンピュータですので
必ずOS(Operating System)が存在し
そのOS上でプログラムが動作しています。
Webサーバの種類は
●Apache(アパッチ)
●Nginx(エンジンエックス)
●IIS(アイアイエス)
などがあり
特にApacheの利用率が非常に高くなっています。
また
Apacheを利用するOSは「Linux」がよく利用されています。
Webサーバの命令は
「シェル」というプログラム上で実行されます。
シェルをもう少し簡単に言うと
Windowsの「コマンドプロンプト」のようなものです。
Windowsユーザは
少なからずコマンドプロンプトを利用して
何らかの命令を実行したことがあるのではないでしょうか?
OSコマンド・インジェクションは
主にWebシステムがWebサーバのシェルを呼び出して
命令を実行する動作が狙われます。
攻撃の一例は下記のような手順になります。
①悪意のある攻撃者が「お問い合わせ」ページなどで個人情報を入力する。
②個人情報のメールアドレス入力部分にWebサーバに実行させたい命令を入力する。
③個人情報を送信する。
⑤メールアドレス部に入力した命令をWebサーバのOSが実行する。
普通にメールアドレスを入力しておけば
入力した個人情報をWebサーバのOSコマンドを利用して
入力したメールアドレス先に送ることができるのですが
メールアドレスでない場合には
メールアドレス部に入力した命令を
WebサーバのOSが実行してしまうこともできます。
その命令が
●重要情報を漏えいする命令
●設定ファイルを改ざんする命令
●データを改ざんする命令
●データを消去する命令
●IDとパスワード情報が格納されているファイルを送信する命令
●秘密データが格納されているファイルを送信する命令
●秘密データをデータベースなどから取得して送信する命令
●ウイルス、ワーム、ボット等への感染させる命令
●バックドアを設置する命令
●迷惑メールを送信する命令
などの不正な命令であれば大変なことになる可能性がありますね。
このようにWebシステムでOSコマンドが実行されている部分などを想定して
不正な命令を注入して実行する攻撃する手法を
「OSコマンド・インジェクション」と呼びます。
システム開発側はこのようなシステムを作ると
利用者からクレームがくるでしょうし
多額な賠償請求を迫られる可能性もあるかもしれません。
システム開発側は
必ずOSコマンド・インジェクション対策を施さなければ
利用者が安心して利用できません。
OSコマンド・インジェクション対策は
(1)OSコマンドを実行できる言語機能の利用を避ける。
(2)OSコマンドを実行させる部分のプログラムやデータをチェックする。
(3)WAFを利用する。
などの方法があります。
(1)OSコマンドを実行できる言語機能の利用を避ける。
個人情報を入力する部分でメールアドレス部には
入力した情報を入力したメールアドレスに送信するための
OSコマンドが利用されるケースもあります。
Webアプリケーションに利用されている言語によっては
シェルを起動したりOSコマンドを実行できる機能を持つものがあります。
このような機能の利用は避けてWebシステムを構築することにより
OSコマンド・インジェクションを回避することができます。
(2)OSコマンドを実行させる部分のプログラムやデータをチェックする。
個人情報を入力する部分でメールアドレス部には
メールアドレスに重要ファイル名を設定することで
Webサーバの重要ファイル情報を盗むことができたりします。
また、メールアドレスではなく
Webサーバにダメージを与えるような命令を設定しておくことで
Webサーバをダウンさせたりすることができます。
メールアドレス入力部のように
OSコマンドを絡めて実行される可能性が秘めている部分には
十分に注意しなければいけません。
メールアドレス入力部に入力された情報が
正しいメールアドレスであるかないかをチェックすることにより
OSコマンド・インジェクションを回避することができます。
(3)WAFを利用する。
「WAF」とは
「Web Application Firewall」の略語で
Webシステムの脆弱性を突いた攻撃へ対するセキュリティ対策のひとつです。
WAFはWebシステムに対する外部からの攻撃を防御します。
この攻撃の中にはOSコマンド・インジェクションなどの
コマンド攻撃も対象として含んでおり
画面への入力値などをWAFによってチェックすることができます。
不正な入力が発見された場合には
Webシステムへ入力を渡さずに処理を遮断するなど
未然に被害を防ぐことが可能です。
WAFを導入することにより
OSコマンド・インジェクションを回避することができます。
Webサイトには様々な脅威が潜んでいますので
常に最悪の事態も想定したりして
対策方法を考慮することが大切だと考えます。
Webサイトを構築する側の人は
Webサイトの利用者が安心して利用できるシステムを作成するように
心掛けなければいけません。
Webサイトを利用する側も
インターネットを利用するシステムには
様々な脅威が潜んでいることを頭に入れておかなければいけません。
ネット社会では
企業だけでなく個人にとっても脅威が潜んでいます。
セキュリティ対策は
しっかりと行う必要がありますね。
★OSコマンド・インジェクションのまとめ
OSコマンド・インジェクションって
難しいと思われている方も多々いると思いますが
Webサーバを不正に操作する攻撃方法です。
セキュリティ対策という言葉を聞いたことがある方は非常に多いと思いますし
セキュリティを意識している人も非常に多いと思います。
OSコマンド・インジェクションは
今やPCやスマートフォンでインターネットを利用する上で
潜んでいる脅威だと考えますが
明確に内容や仕組みを理解している人は少ないと思います。
ただOSコマンド・インジェクションというものは
●Webサーバを不正に操作する攻撃方法
●Webサイトの作る側も利用する側も考えなければいけないこと
ということだけでも
このコラムを通じて理解していただけましたら幸いに思います。
OSコマンド・インジェクションは
Webサーバを不正に操作する攻撃方法です。
もしOSコマンド・インジェクションに興味を持たれたら
少しずつ勉強してみてはいかがでしょうか?
ユーザとしては知る必要がありませんが
少しずつ覚えていくことで、点が線で繋がることも多々あります。
そうなると結構楽しくなるかもしれません。
これからIT業界を目指している人には
知っておいてほしい知識だと思いますが
少しずつ勉強していってほしいと思います。
★OSコマンド・インジェクションについて学ぶ方法は
OSコマンド・インジェクションについては
新入社員研修やIT・プログラミング関連の研修で
学ぶことができるようになっています。
【IT・プログラミング研修】
●「Java(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/java_training/java_web/
●「Java(Webアプリ開発 - Spring Framework -)」の詳細情報
https://itlaboj.com/courses/java_training/java_spring/
●「Python(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/python_training/python_web/
●「PHP(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/php_training/php_web/
●「C#(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/cs_training/cs_web/
●「ネットワーク基礎」の詳細情報
https://itlaboj.com/courses/it_training/network_kiso/
★「OSコマンド・インジェクション」習得に必要なもの
OSコマンド・インジェクションの内容は基本的に座学になりますが
Webアプリケーションの知識や構築方法を学んだ後に行う内容ですので
それぞれのプログラミング言語のセットアップなどが必要になります。
また、このコースは
リアルでもオンラインでも受講することが可能です。
オンラインで受講される人は
「Zoom」が利用できる環境があればいいと考えます。
このコースはシステム開発に直結する話ではあり
SEやプログラマになるための必要な内容になります。
みんなが楽しみながらWebサイトの脅威・対策方法の知識を習得してほしいと思いますし
将来のIT技術者を研修や動画コンテンツを通じて
育成していきたいと考えています。
私は日本全国に多くのIT技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。