Vtiger CRMのいくつかのSQL注入の抜け穴の分析、テストエンジニアは参考にすることができます
この記事はクラウド+コミュニティから発表されました
0 x 00はじめに
ドライホワイトボックスの監査は半年も経っていないが、大部分は業務上のコードであり、論理的な複雑さと機能モジュールの構造は比較的簡単で、長く働いても収穫は普通で、成熟した製品(vtiger CRM)に接触してホワイトボックスの監査を行う機会があり、監査の技術的難易度から言えば、会社内の業務よりずっと複雑で、本当に自分の技術レベルを高めなければならない.もっと見るべきもこれらのコードです.
vtiger CRMは顧客関係管理システムです.
0 x 01解析全体構造ホーム下のvtigerversion.phpは現在のバージョンを表示できます. 全体コードディレクトリ その中で主な機能実装はmodulesディレクトリの中にあり、私たちが重点的に監査している場所でもあります.librariesディレクトリはサードパーティ製のものであり、includesディレクトリはルーティングロードであり、システム関数をカプセル化する場所である.
システム全体のコード量は確かに多く、本当に監査を終えて10日半もしないとだめだと推定し、1週間見て、いくつかの問題しか発見されませんでした.
0x02 modules/Calender/actions/feed.php SQL注入分析
成熟した製品で、監査の難点は様々なクラス、オブジェクトのパッケージと継承、A呼び出しB、B呼び出しC、C呼び出しD......
Vtiger_BasicAjax_Actionというオブジェクトは、modulesの下のvtigerディレクトリにあり、vtigerもコアのmoduleです.
戻ってきてphpは、脆弱性のあるコードを直接位置決めし、103行後.
私が落札したのも、注入点の位置です.
$fieldNameパラメータはカンマで配列に分割され、分割された配列値が2の場合は論理に入り、パラメータはSQL文に入力されます.システム全体でPDOのクエリ方式が採用されているが,SQL文が直接つなぎ合わせると注入のリスクがある.
ここでpayloadはカンマを使用することはできません.(select user()a joinの方法で迂回することができます.
下に行くと、SQL注入の抜け穴は数え切れないほど多い.もう見る必要もない.
0x03/modules/Documents/models/ListView.php SQL注入
脆弱性コードを直接見る
sortorderパラメータが直接接合されていることがわかります.ここではorder by後の注入であり,時間ベースのブラインド注入しか使用できない.
SQLmapに直接行きましょうが、sqlmapのpayloadは使用します>、カッコはxss防御のため、フィルタリングされているのでスクリプトを迂回する必要があります.
poc:
0 x 04は最後に書く
時間のせいで、前のいくつかのモジュールしか見ていませんが、まだ見ていないところがたくさんあります.
脆弱性はすべて簡単で、本当に時間を費やしたのは論理を通じて、脆弱性を検証して、絶えず関数呼び出しを見て、各種類のオブジェクトの継承をジャンプします.これもホワイトボックス監査の頭の痛いところで、開発を見て飛び回るのを我慢しなければならないので、どこが間違っているのか分からない.ちょっとつらくて、まだgetshellの場所が見つからない.
この文章はすでに作者がテンセントクラウド+コミュニティに授権して発表した.
0 x 00はじめに
ドライホワイトボックスの監査は半年も経っていないが、大部分は業務上のコードであり、論理的な複雑さと機能モジュールの構造は比較的簡単で、長く働いても収穫は普通で、成熟した製品(vtiger CRM)に接触してホワイトボックスの監査を行う機会があり、監査の技術的難易度から言えば、会社内の業務よりずっと複雑で、本当に自分の技術レベルを高めなければならない.もっと見るべきもこれらのコードです.
vtiger CRMは顧客関係管理システムです.
0 x 01解析全体構造
https://www.vtiger.com/open-source-crm/download-open-source/
コードをダウンロードし、ローカルに構築します.phpstormを使用して監査を行います.システム全体のコード量は確かに多く、本当に監査を終えて10日半もしないとだめだと推定し、1週間見て、いくつかの問題しか発見されませんでした.
0x02 modules/Calender/actions/feed.php SQL注入分析
成熟した製品で、監査の難点は様々なクラス、オブジェクトのパッケージと継承、A呼び出しB、B呼び出しC、C呼び出しD......
Vtiger_BasicAjax_Actionというオブジェクトは、modulesの下のvtigerディレクトリにあり、vtigerもコアのmoduleです.
戻ってきてphpは、脆弱性のあるコードを直接位置決めし、103行後.
私が落札したのも、注入点の位置です.
$fieldNameパラメータはカンマで配列に分割され、分割された配列値が2の場合は論理に入り、パラメータはSQL文に入力されます.システム全体でPDOのクエリ方式が採用されているが,SQL文が直接つなぎ合わせると注入のリスクがある.
ここでpayloadはカンマを使用することはできません.(select user()a joinの方法で迂回することができます.
下に行くと、SQL注入の抜け穴は数え切れないほど多い.もう見る必要もない.
0x03/modules/Documents/models/ListView.php SQL注入
脆弱性コードを直接見る
sortorderパラメータが直接接合されていることがわかります.ここではorder by後の注入であり,時間ベースのブラインド注入しか使用できない.
SQLmapに直接行きましょうが、sqlmapのpayloadは使用します>、カッコはxss防御のため、フィルタリングされているのでスクリプトを迂回する必要があります.
--tamper greatest
を迂回します.poc:
index.php?module=Documents&parent=&page=1&view=List&viewname=22&orderby=filename&sortorder=and/**/sleep(5)&app=MARKETING&search_params=[]&tag_params=[]&nolistcache=0&list_headers=[%22notes_title%22,%22filename%22,%22modifiedtime%22,%22assigned_user_id%22,%22filelocationtype%22,%22filestatus%22]&tag=
0 x 04は最後に書く
時間のせいで、前のいくつかのモジュールしか見ていませんが、まだ見ていないところがたくさんあります.
脆弱性はすべて簡単で、本当に時間を費やしたのは論理を通じて、脆弱性を検証して、絶えず関数呼び出しを見て、各種類のオブジェクトの継承をジャンプします.これもホワイトボックス監査の頭の痛いところで、開発を見て飛び回るのを我慢しなければならないので、どこが間違っているのか分からない.ちょっとつらくて、まだgetshellの場所が見つからない.
この文章はすでに作者がテンセントクラウド+コミュニティに授権して発表した.