>  기사  >  백엔드 개발  >  PHP 취약점에 대한 전체 설명(3) - 클라이언트 스크립트 이식

PHP 취약점에 대한 전체 설명(3) - 클라이언트 스크립트 이식

黄舟
黄舟원래의
2016-12-22 09:20:251230검색

클라이언트 측 스크립트 삽입(Script Insertion)이란 양식, 그림, 애니메이션, 하이퍼링크 텍스트 등의 개체에 실행 가능한 스크립트를 삽입하는 것을 말합니다. 사용자가 이러한 개체를 열면 공격자가 이식한 스크립트가 실행되고 공격이 시작됩니다.

스크립트 이식으로 사용할 수 있는 HTML 태그에는 일반적으로 다음이 포함됩니다.

1. <script> 태그로 표시된 javascript 및 vbscript와 같은 페이지 스크립트. <script> 태그에 js 프로그램 코드를 지정하거나 src 속성 </script>

에 js 파일의 URL 경로를 지정할 수 있습니다. 2. 이러한 개체는 Java 애플릿, 멀티미디어 파일, ActiveX 컨트롤 등입니다. 일반적으로 개체의 URL 경로는 데이터 속성

에 지정됩니다. 3. 태그가 표시된 개체입니다. 이러한 개체는 swf 파일과 같은 멀티미디어 파일입니다. 일반적으로 개체의 URL 경로는 src 속성

에 지정됩니다. 4. 태그가 표시된 개체입니다. 이러한 개체는 Java 애플릿이며 개체의 URL 경로는 일반적으로 코드베이스 속성

에 지정됩니다.

일반적으로 양식 데이터를 처리하는 웹 애플리케이션의 URL 경로는

클라이언트 측 스크립트 이식 공격 단계

1. 공격자가 웹 사이트에 등록한 후 로그인합니다. 일반 사용자

2. 메시지 페이지를 열고 공격 js 코드를 삽입하세요

3. 다른 사용자(관리자 포함)가 웹사이트에 로그인하여 이 메시지의 내용을 찾아보세요

4. 메시지 내용에 숨겨져 있음 js 코드가 실행되고 공격이 성공함

PHP 취약점에 대한 전체 설명(3) - 클라이언트 스크립트 이식

Instance

Database

CREATE TABLE `postmessage` (

` id` int(11) NOT NULL auto_increment,

`subject` varchar(60) NOT NULL 기본값 ”,

`name` varchar( 40) NOT NULL 기본값 ”,

`email` varchar(25) NOT NULL 기본값 ”,

`question`mediumtext NOT NULL,

`postdate` datetime NOT NULL default '0000-00-00 00:00: 00′,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COMMENT='사용자 메시지' AUTO_INCREMENT=69 ;

// add.php 메시지 삽입

//list.php 메시지 목록

//show.php 메시지 표시

아래 메시지 제출

PHP 취약점에 대한 전체 설명(3) - 클라이언트 스크립트 이식


이 메시지를 탐색할 때 js 스크립트가 실행됩니다.

Insert<script>while(1){ windows.open();}< /script> 무한 팝업 상자 </script>

<script>location.href="http://www.php1.cn/"></script>

또는 자체 생성된 다른 js 코드 사용 공격

방지 방법

일반적으로 htmlspecialchars 함수를 사용하여 특수 문자를 HTML 인코딩으로 변환

함수 프로토타입

string htmlspecialchars (string string, int quote_style , string charset)

string은 인코딩할 문자열입니다.

quote_style은 선택 사항입니다. 기본값은 ENT_COMPAT입니다. 이는 큰따옴표만 변환되고 작은따옴표는 변환되지 않음을 의미합니다. ENT_QUOTES는 큰따옴표와 작은따옴표를 모두 변환해야 함을 나타냅니다. ENT_NOQUOTES는 큰따옴표와 작은따옴표가 변환되지 않음을 나타냅니다.

문자 집합은 선택 사항이며,

함수는 다음 특수 문자를 HTML 인코딩으로 변환합니다. >

& —-> &

" —-> "

' —-> '

> ; —-> >

show.php의 98번째 줄을

그런 다음 js가 삽입된 취약점 페이지를 확인하세요.

PHP 취약점에 대한 전체 설명(3) - 클라이언트 스크립트 이식

위 내용은 PHP 취약점(3)에 대한 완전한 솔루션입니다. 클라이언트 스크립트 이식 내용 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.