ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

毎度のことながら悪用厳禁。といっても説明用ではないので他人が見ても訳が分からん可能性が大。あくまで自分のメモ用だし。残るはセッションID推測だがこれはさすがに無理っぽい。

SQLインジェクション(補足)

実は以前書いていた方法だと誤検知する場合がある。どういった場合かというと、SQL構文的にエラーとなる文字列が既にデータとして格納されている場合である。
入力したデータが検索キーだったりするとSQLの結果が表示され、アウトプットがSQL構文的にエラーとならない文字列の結果と異なってしまうのである。従って、脆弱性はないのに脆弱性があると認識されることが考えられる。
まあ、この手法を使って検査する場合そんな変なデータが格納されていなければ問題がないので大きな問題とはならないだろうけど(最も攻撃しようとしてるやつが間違って脆弱性があると認識しても知ったことか)。
ということで、問題なさげ。

権限上昇

昨日難しそうだと書いたけど、ふとよさげな方法が思い浮かんだのでメモ。

  1. 権限の異なるアカウントA,Bを2つ用意する。
  2. アカウントAでログインし、そこで使用されているHiddenフィールド、Cookieの値を全て保存する。
  3. アカウントBでログインし、先ほど記憶していたHiddenフィールド、CookieとアカウントBでログインした後のHiddenフィールド、Cookieを比較し、同じ名前かつ値がことなるものを抽出する(これをCとする)。
  4. アカウントBでログインした状態で、Cの1つの値をアカウントAでログインしたときの値に書き換えてアカウントAで特徴的な操作(つまりアカウントAでは出来てアカウントBでは出来ないこと)をおこなう。

これが可能であれば権限上昇が可能であるといえる。

実際に検出するには4で実行した結果とアカウントAで実行した結果を比較して同じだったら権限上昇可能ということになる。

この仕様だと他の検査方法と思いっきりやり方が異なるので別ツールとしないと難しいだろうなぁ。