@putera_no_doon

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【機械学習】脆弱性診断ツールにおける、動的解析に関する質問

解決したいこと

機械学習で、入力されたテキストの特徴ごとにA,B,C...と分類したい。

Pythonを用いてWEBアプリの脆弱性診断ツールを作成しております。
動的解析(実際にローカル環境にSQLインジェクションのコードを送る)を行う際、WEBアプリ側で認証を行う際実行されるSQL文に対応したSQLインジェクションのコードを機械学習を用いて出力するという動作が上手く実現できず、困っています。

入力: SELECT * FROM table WHERE id='user0001'
出力: ' OR '1' = '1
入力: SELECT * FROM table WHERE id=('user0001')
出力: ') OR ('1' = '1

この二つのパターンを作りたいです。
変動するのは列名(*)、テーブル名(table)、カラム名(id)、値(user0001)です。

要するに「この傾向があったらこれを出力する」という動作を行いたいです。
ネットで調べた結果「テキスト分類」に行きつきましたが、どれもライブラリを使用していて自分のように独自でデータセットを使い、実現した例があまり見つかりませんでした。
自分は機械学習の経験がなく、pythonの経験も少ないです。

【知りたい事】
1,自作データセットの作成方法
2,具体的な実現方法(このライブラリを用いる、この関数を~など)
3,何か便利なライブラリなど
4,参考サイト

皆さんの力をお借りしたいです。

0 likes

1Answer

単にWebアプリのSQLインジェクション等の検査をしたいのであるならば
OWASP ZAP等のツールがありますので、そちらをお勧めしますが。
そういうことではなく、あくまで(勉強目的等で)コードを自作したいという前提で回答させていただきます。

1,自作データセットの作成方法
検知したいパターンにもよりますがご提示のような単純パターンだけなら100データ程あれば十分かと思います。
しかし、実際にはご提示のパターンではなくSQLの構文が許す限りの文章となると思うので、1000件ほどのパターンと後述する構文解析のためのSQL文のサンプルセットが必要になるかと思います。

2,具体的な実現方法(このライブラリを用いる、この関数を~など)
コード自作するという前提ならばtensorflow(及びそのwrapperであるkeras)がデファクトスタンダードかと思います。
しかし、その内容は行いたいことによって大きく変わります。

ご提示のパターンのみを分類したいだけであるならば、おそらくチュートリアルレベルのコードでも動作すると思います。
つまり構文を理解させずに指定文字列でパターン分けする形です。
勉強目的であれば一旦はこれで構わないと思いますが、
しかし実用に耐えうるためにはSQLの構文を解析し、あらゆるSQL文を解析したいということかと思いますので
RNN(LSTM等), Bert, word2vec等のあたりのキーワードをもとに勉強していただく形になると思います。

3,何か便利なライブラリなど
4,参考サイト
kerasチュートリアル
https://keras.io/ja/getting-started/sequential-model-guide/

keras RNN
https://keras.io/ja/layers/recurrent/

keras-bert
https://github.com/CyberZHG/keras-bert

1Like

Your answer might help someone💌