Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보ECShop user.php SQL Injection 취약점 분석
작성일 2018-09-14 조회 358

 

 

ECSHOP은 무료 일반 전자 상거래 플랫폼 구축 소프트웨어로서 온라인 상점을 쉽게 열고 온라인으로 사업을 시작할 수 있는 오픈소스 플랫폼입니다.

 

 

2018년 9월 1일 ECShop 2.X version 3.0 vesion에서 공격자가 HTTP Referer의 값을 조작하여 HTTP Request를 전달하였을 때 이를 적절하게 검증하지 못하여 SQL Injection 공격이 가능한 취약점이 공개 되었습니다.

 

 

2018년 9월 14일 ZoomEye를 통해 검색해본 결과 인터넷에 노출되어 있는 취약한 사이트는 미국을 중심으로 10,000개 이상 있습니다.

 

 

[그림1. Zoomeye]

 

 

ECShop user.php SQL Injection 공격의 영향을 알아보기 위해서 다음과 같이 TEST 환경을 구축하여 공격을 진행하였습니다.

victim = Window 7 SP1 64bit, APMSETUP, Ecshop 2.7.3

 

 

 

[그림2]과 같이 HTTP Request 를 조작하여 서버에 전달을 하게 될 경우 취약점이 트리거 됩니다. 

 

 

[그림2. ECShop user.php SQL Injection PoC]

 

 

PoC에서 각각의 부분을 살펴보면 user.php의 act 파라미터에 login 값을 전달할 경우 referer에 있는 값이 전달됩니다. 554fcae493e564ee0dc75bdf2ebf94ca는 문자열을 자르기 위한 hash 값으로, 이후 lib_insert.php의 insert_ads() 함수를 호출하기 위해 사용됩니다. 

 

|a:2:{s:3:"num";s:110:"*/는 배열을 임의의 값으로 채우고 주석처리하는 역할, 이후 UNION SELECT 구문을 사용하여 SQL Injection을 진행합니다. 

 

UNION 구문안에 존재하는 값 중 3,9 컬럼을 제외한 나머지 컬럼은 컬럼의 수를 맞추기 위해 임의의 값을 입력하고 3번째 컬럼의 0x27202f2a는 ' /* 문자열주석처리를 하기 위해서 사용합니다. 

 

9번째 컬럼의 0x7b24616263275d3b6563686f20706870696e666f2f2a2a2f28293b2f2f7d는 {$abc'];echo phpinfo/**/();//} 문자열phpinfo()를 실행시키기 위해서 사용하는 구문입니다.

 

 

공격이 성공적으로 이루어지면

[그림3]과 같이 서버는 phpinfo()를 실행한 결과를 반환합니다.

 

 

[그림3. ECShop user.php SQL Injection 공격 결과]

 

 

Sniper 제품군 대응 방안

당사 Sniper 장비에서는 아래와 같은 패턴으로 대응이 가능합니다.

 

[4459] ECShop user.php SQL Injection

 

 

 

 

첨부파일 첨부파일이 없습니다.
태그   ECShop  sniper