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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
droopescan — 보안 연구원이 여러 CMS(주로 Drupal 및 Silverstripe)의 문제를 식별하는 데 도움을 주는 플러그인 기반 스캐너입니다. | Kitploit
도구/GitHubGitHub/samjoan/droopescan
Vulnerability ScannersInformation GatheringWeb Security
GitHubsamjoan/droopescan

droopescan

보안 연구원이 여러 CMS(주로 Drupal 및 Silverstripe)의 문제를 식별하는 데 도움을 주는 플러그인 기반 스캐너입니다.

저장소 보기
1.4k2742년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

droopescan

Build Status PyPI version AGPL license

플러그인 기반 스캐너로, 보안 연구자가 여러 CMS의 문제를 식별하는 데 도움을 줍니다.

droopescan을 사전 상호 동의 없이 대상을 공격하는 데 사용하는 것은 불법입니다. 최종 사용자는 모든 해당 지역, 주 및 연방 법률을 준수할 책임이 있습니다. 개발자는 어떠한 책임도 지지 않으며, 이 프로그램으로 인한 오용이나 손해에 대해 책임을 지지 않습니다. droopescan이 원격 호스트에 설치된 가장 가능성 있는 CMS 버전을 출력하지만, 버전 번호와 취약점 간의 연관성은 사용자가 수동으로 수행해야 합니다.

지원되는 CMS는 다음과 같습니다:

  • SilverStripe
  • Wordpress
  • Drupal

일부 기능만 지원:

  • Joomla (버전 열거 및 흥미로운 URL만)
  • Moodle (플러그인 및 테마 매우 제한적, 주의 필요)
root@kitploit:~
computer:~/droopescan$ droopescan scan drupal -u http://example.org/ -t 32
[+] No themes found.

[+] Possible interesting urls found:
    Default changelog file - https://www.example.org/CHANGELOG.txt
    Default admin - https://www.example.org/user/login

[+] Possible version(s):
    7.34

[+] Plugins found:
    views https://www.example.org/sites/all/modules/views/
        https://www.example.org/sites/all/modules/views/README.txt
        https://www.example.org/sites/all/modules/views/LICENSE.txt
    token https://www.example.org/sites/all/modules/token/
        https://www.example.org/sites/all/modules/token/README.txt
        https://www.example.org/sites/all/modules/token/LICENSE.txt
    pathauto https://www.example.org/sites/all/modules/pathauto/
        https://www.example.org/sites/all/modules/pathauto/README.txt
        https://www.example.org/sites/all/modules/pathauto/LICENSE.txt
        https://www.example.org/sites/all/modules/pathauto/API.txt
    libraries https://www.example.org/sites/all/modules/libraries/
        https://www.example.org/sites/all/modules/libraries/CHANGELOG.txt
        https://www.example.org/sites/all/modules/libraries/README.txt
        https://www.example.org/sites/all/modules/libraries/LICENSE.txt
    entity https://www.example.org/sites/all/modules/entity/
        https://www.example.org/sites/all/modules/entity/README.txt
        https://www.example.org/sites/all/modules/entity/LICENSE.txt
    google_analytics https://www.example.org/sites/all/modules/google_analytics/
        https://www.example.org/sites/all/modules/google_analytics/README.txt
        https://www.example.org/sites/all/modules/google_analytics/LICENSE.txt
    ctools https://www.example.org/sites/all/modules/ctools/
        https://www.example.org/sites/all/modules/ctools/CHANGELOG.txt
        https://www.example.org/sites/all/modules/ctools/LICENSE.txt
        https://www.example.org/sites/all/modules/ctools/API.txt
    features https://www.example.org/sites/all/modules/features/
        https://www.example.org/sites/all/modules/features/CHANGELOG.txt
        https://www.example.org/sites/all/modules/features/README.txt
        https://www.example.org/sites/all/modules/features/LICENSE.txt
        https://www.example.org/sites/all/modules/features/API.txt
    [... snip for README ...]

[+] Scan finished (0:04:59.502427 elapsed)

다음 명령어로 전체 옵션 목록을 확인할 수 있습니다:

root@kitploit:~
droopescan --help
droopescan scan --help

다른 도구가 아닌 이유?

droopescan은 다음과 같은 장점이 있기 때문입니다:

  • 빠름
  • 안정적임
  • 최신 상태 유지
  • 여러 사이트 동시 스캔 가능
  • 100% 파이썬

설치

pip 사용 (권장)

pip을 사용하면 설치가 쉽습니다:

root@kitploit:~
apt-get install python-pip
pip install droopescan

소스에서 설치

수동 설치는 다음과 같습니다:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -r requirements.txt
./droopescan scan --help

master 브랜치는 최신 릴리스(pypi에 있는 것)에 해당합니다. development 브랜치는 안정적이지 않으며 모든 풀 리퀘스트는 development 브랜치로 제출해야 합니다.

BlackArch

BlackArch 패키지 설치 (서드파티 유지보수):

root@kitploit:~
sudo pacman -S droopescan

Docker

Docker 이미지를 빌드하고 Docker에서 droopescan을 실행할 수 있습니다:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# 도움말 표시
docker run --rm droope/droopescan
# drupal 사이트 스캔 예시
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

기능

스캔 유형

Droopescan은 기본적으로 가장 정확하면서도 과도한 동시 요청으로 대상 서버에 부하를 주지 않는 것을 목표로 합니다. 따라서 기본적으로 4개의 스레드로 많은 요청이 이루어지며, --number 및 --threads 인수를 사용하여 이러한 설정을 변경할 수 있습니다.

이 도구는 네 가지 유형의 테스트를 수행할 수 있습니다. 기본적으로 모든 테스트가 실행되지만 -e 또는 --enumerate 플래그로 다음 중 하나를 지정할 수 있습니다:

  • p -- 플러그인 검사: 수천 개의 HTTP 요청을 수행하여 대상 호스트에 설치된 모든 플러그인 목록을 반환합니다.
  • t -- 테마 검사: 위와 동일하지만 테마에 대한 것입니다.
  • v -- 버전 검사: 여러 파일을 다운로드하고 해당 파일의 체크섬을 기반으로 가능한 모든 버전 목록을 반환합니다.
  • i -- 흥미로운 URL 검사: 흥미로운 URL(관리자 패널, readme 파일 등)을 확인합니다.

대상 지정

-u 또는 --url 매개변수를 전달하여 특정 호스트를 스캔할 수 있습니다:

root@kitploit:~
    droopescan scan drupal -u example.org

drupal 인수를 생략할 수도 있습니다. 그러면 다음과 같이 "CMS 식별"이 트리거됩니다:

root@kitploit:~
    droopescan scan -u example.org

-U 또는 --url-file 매개변수를 사용하여 여러 URL을 스캔할 수 있습니다. 이 매개변수는 URL 목록이 포함된 파일의 경로로 설정해야 합니다.

root@kitploit:~
    droopescan scan drupal -U list_of_urls.txt

이 예제에서 drupal 매개변수를 생략할 수도 있습니다. 각 사이트에 대해 CMS 식별을 수행하기 위해 여러 GET 요청을 보내며, 사이트가 지원되는 CMS로 판단되면 스캔하여 출력 목록에 추가합니다. 예를 들어 조직의 모든 사이트에서 droopescan을 실행하는 데 유용할 수 있습니다.

root@kitploit:~
    droopescan scan -U list_of_urls.txt

아래 코드 블록에는 한 줄에 하나씩 URL 목록 예시가 포함되어 있습니다:

root@kitploit:~
http://localhost/drupal/6.0/
http://localhost/drupal/6.1/
http://localhost/drupal/6.10/
http://localhost/drupal/6.11/
http://localhost/drupal/6.12/

URL 파일에는 URL과 기본 호스트 헤더를 재정의할 값이 탭이나 공백으로 구분되어 있어도 괜찮습니다. 이는 넓은 범위의 호스트를 스캔할 때 불필요한 DNS 쿼리를 방지하는 데 유용합니다. 명확히 하기 위해 아래 예시를 참조하십시오:

root@kitploit:~
192.168.1.1	example.org
http://192.168.1.1/	example.org
http://192.168.1.2/drupal/	example.org

공식 사이트(예: wordpress의 경우 wordpress.org)를 스캔하여 스캐너가 특정 CMS에서 작동하는지 테스트하고 싶은 유혹이 있지만, 공식 사이트는 기본 CMS 설치를 거의 사용하지 않거나 비표준적인 방식으로 운영됩니다. 예를 들어 wordpress.org는 최신 버전의 wordpress를 사용하는데, 체크섬이 알려진 wordpress 버전과 일치하지 않아 droopescan이 전혀 wordpress로 식별하지 않습니다.

인증

애플리케이션은 .netrc 파일 및 http_proxy 환경 변수를 완벽하게 지원합니다.

기본 인증에 .netrc 파일을 사용하십시오. 예제 netrc 파일(루트 홈 디렉터리에 있는 .netrc 파일)은 다음과 같을 수 있습니다:

root@kitploit:~
machine secret.google.com
    login [email protected]
    password Winter01

http_proxy 및 https_proxy 변수를 설정할 수 있습니다. 이를 통해 상위 HTTP 프록시를 설정할 수 있으며, 더 복잡한 유형의 인증(예: Fiddler, ZAP, Burp)을 처리할 수 있습니다.

root@kitploit:~
export http_proxy='user:password@localhost:8080'
export https_proxy='user:password@localhost:8080'
droopescan scan drupal --url http://localhost/drupal

경고: 설계상, 중간 프록시를 허용하고 SSL이 잘못된 애플리케이션을 테스트하기 위해 droopescan은 자체 서명 또는 유효하지 않은 인증서를 허용합니다. ˙ ͜ʟ˙

출력

이 애플리케이션은 사람이 읽기 위한 "표준 출력"과 기계가 읽기에 더 적합한 JSON을 모두 지원합니다. 이 출력은 주요 버전 간에 안정적입니다.

--output 플래그로 제어할 수 있습니다. JSON 출력 예시는 다음과 같습니다 (과도한 공백 제외):

root@kitploit:~
{
  "themes": {
    "is_empty": true,
    "finds": [

    ]
  },
  "interesting urls": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/CHANGELOG.txt",
        "description": "Default changelog file."
      },
      {
        "url": "https:\/\/www.drupal.org\/user\/login",
        "description": "Default admin."
      }
    ]
  },
  "version": {
    "is_empty": false,
    "finds": [
      "7.29",
      "7.30",
      "7.31"
    ]
  },
  "plugins": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/sites\/all\/modules\/views\/",
        "name": "views"
      },
      [...snip...]
    ]
  }
}

스캔의 일부가 실행되지 않은 경우 JSON 객체에서 일부 속성이 누락될 수 있습니다.

다중 사이트 출력은 다음과 같습니다. 각 줄에는 위와 같은 유효한 JSON 객체가 포함됩니다.

root@kitploit:~
    $ droopescan scan drupal -U six_and_above.txt -e v
    {"host": "http://localhost/drupal-7.6/", "version": {"is_empty": false, "finds": ["7.6"]}}
    {"host": "http://localhost/drupal-7.7/", "version": {"is_empty": false, "finds": ["7.7"]}}
    {"host": "http://localhost/drupal-7.8/", "version": {"is_empty": false, "finds": ["7.8"]}}
    {"host": "http://localhost/drupal-7.9/", "version": {"is_empty": false, "finds": ["7.9"]}}
    {"host": "http://localhost/drupal-7.10/", "version": {"is_empty": false, "finds": ["7.10"]}}
    {"host": "http://localhost/drupal-7.11/", "version": {"is_empty": false, "finds": ["7.11"]}}
    {"host": "http://localhost/drupal-7.12/", "version": {"is_empty": false, "finds": ["7.12"]}}
    {"host": "http://localhost/drupal-7.13/", "version": {"is_empty": false, "finds": ["7.13"]}}
    {"host": "http://localhost/drupal-7.14/", "version": {"is_empty": false, "finds": ["7.14"]}}
    {"host": "http://localhost/drupal-7.15/", "version": {"is_empty": false, "finds": ["7.15"]}}
    {"host": "http://localhost/drupal-7.16/", "version": {"is_empty": false, "finds": ["7.16"]}}
    {"host": "http://localhost/drupal-7.17/", "version": {"is_empty": false, "finds": ["7.17"]}}
    {"host": "http://localhost/drupal-7.18/", "version": {"is_empty": false, "finds": ["7.18"]}}
    {"host": "http://localhost/drupal-7.19/", "version": {"is_empty": false, "finds": ["7.19"]}}
    {"host": "http://localhost/drupal-7.20/", "version": {"is_empty": false, "finds": ["7.20"]}}
    {"host": "http://localhost/drupal-7.21/", "version": {"is_empty": false, "finds": ["7.21"]}}
    {"host": "http://localhost/drupal-7.22/", "version": {"is_empty": false, "finds": ["7.22"]}}
    {"host": "http://localhost/drupal-7.23/", "version": {"is_empty": false, "finds": ["7.23"]}}
    {"host": "http://localhost/drupal-7.24/", "version": {"is_empty": false, "finds": ["7.24"]}}
    {"host": "http://localhost/drupal-7.25/", "version": {"is_empty": false, "finds": ["7.25"]}}
    {"host": "http://localhost/drupal-7.26/", "version": {"is_empty": false, "finds": ["7.26"]}}
    {"host": "http://localhost/drupal-7.27/", "version": {"is_empty": false, "finds": ["7.27"]}}
    {"host": "http://localhost/drupal-7.28/", "version": {"is_empty": false, "finds": ["7.28"]}}
    {"host": "http://localhost/drupal-7.29/", "version": {"is_empty": false, "finds": ["7.29"]}}
    {"host": "http://localhost/drupal-7.30/", "version": {"is_empty": false, "finds": ["7.30"]}}
    {"host": "http://localhost/drupal-7.31/", "version": {"is_empty": false, "finds": ["7.31"]}}
    {"host": "http://localhost/drupal-7.32/", "version": {"is_empty": false, "finds": ["7.32"]}}
    {"host": "http://localhost/drupal-7.33/", "version": {"is_empty": false, "finds": ["7.33"]}}
    {"host": "http://localhost/drupal-7.34/", "version": {"is_empty": false, "finds": ["7.34"]}}

디버그

원하는 대로 진행되지 않을 경우 --debug-requests 명령을 사용하여 이유를 확인할 수 있습니다.

출력 예시:

root@kitploit:~
computer:~/droopescan# droopescan scan silverstripe -u http://localhost -n 10 -e p --debug-requests
[head] http://localhost/framework/... 403
[head] http://localhost/cms/css/layout.css... 404
[head] http://localhost/framework/css/UploadField.css... 200
[head] http://localhost/misc/test/error/404/ispresent.html... 404
[head] http://localhost/widgetextensions/... 404
[head] http://localhost/orbit/... 404
[head] http://localhost/sitemap/... 404
[head] http://localhost/simplestspam/... 404
[head] http://localhost/ecommerce_modifier_example/... 404
[head] http://localhost/silverstripe-hashpath/... 404
[head] http://localhost/timeline/... 404
[head] http://localhost/silverstripe-hiddenfields/... 404
[head] http://localhost/addressable/... 404
[head] http://localhost/silverstripe-description/... 404
[+] No plugins found.

[+] Scan finished (0:00:00.058422 elapsed)

--debug 매개변수도 존재하며, 애플리케이션 내부를 디버깅하는 데 사용할 수 있습니다.

통계

다음 명령을 실행하여 스캐너 기능에 대한 최신 보고서를 얻을 수 있습니다:

root@kitploit:~
    droopescan stats

출력 예시:

root@kitploit:~
Functionality available for ‘drupal’:
- Enumerate plugins (XXXX plugins.)
- Enumerate themes (XXXX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X-alphaXX, X.XX, X.XX.)
Functionality available for ‘joomla’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version XX.X, X.X.X, X.X.XX.rcX.)
Functionality available for ‘wordpress’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X, X.X.X, X.X.X.)
Functionality available for ‘silverstripe’:
- Enumerate plugins (XXX plugins.)
- Enumerate themes (XX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.XX, X.X.XX, X.X.XX.)

CMS 설치에 사용 가능한 최신 버전이 droopescan 내에 포함되어 있는지 확인하는 것이 중요합니다. 그렇지 않으면 결과가 부정확할 수 있습니다.

기여

자신만의 플러그인 만들기

좋아하는 CMS에 대한 지원을 추가할 수 있습니다. 과정은 실제로 매우 간단하며, plugins/ 폴더의 example.py 파일을 보면 많은 정보를 얻을 수 있습니다.

이 파일은 구현의 기반으로 잘 사용됩니다.

Joomla용 플러그인을 만들고 다음과 같이 활성화할 수 있습니다:

root@kitploit:~
$ cp plugins/example.py plugins/joomla.py
$ cp plugins.d/example.conf plugins.d/joomla.conf

그런 다음 plugins/joomla.py로 이동하여 몇 가지를 변경해야 합니다:

  • 클래스 이름은 Joomla여야 합니다.
  • 플러그인 레이블(Meta.label에 위치)을 joomla로 변경해야 합니다.
  • 파일 끝에서 register 호출을 올바른 클래스 이름으로 수정해야 합니다.
  • 노출된 함수 'example'의 이름을 joomla로 변경해야 합니다.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

또한 plugins.d/joomla.conf 파일을 변경하여 다음과 같이 설정해야 합니다:

root@kitploit:~
[joomla]
enable_plugin = true

이제 다음과 같은 상태가 됩니다:

root@kitploit:~
$ droopescan scan joomla
[+] --url parameter is required.

다음 단계는 유효한 플러그인 단어 목록, 유효한 테마 단어 목록, versions.xml 파일 및 선택적으로 흥미로운 URL 목록을 생성하고, joomla.py에 있는 모든 변수를 구현에 올바른 값으로 바꾸는 것입니다.

풀 리퀘스트가 승인되려면 플러그인이 자동으로 업데이트되어야 합니다. 추후 더 자세한 문서가 제공될 수 있지만, 현재로서는 update_version_check, update_version, update_plugins_check 및 update_plugins를 구현해야 합니다. 참고로 drupal.py 파일을 검토하십시오. 플러그인을 최신 상태로 유지하기 위해 필요합니다.

이슈 및 풀 리퀘스트

새 플러그인을 만드는 풀 리퀘스트는 해당 플러그인의 유지보수가 자동으로 이루어지는 경우에 한해 환영합니다.

풀 리퀘스트는 master가 아닌 development 브랜치로 제출해 주십시오. 이슈는 GitHub의 이슈 트래커에 등록할 수 있습니다.

테스트를 실행하려면 일부 종속성을 설치해야 합니다. 다음 명령을 실행하면 종속성이 설치되고 테스트가 실행됩니다:

root@kitploit:~
    apt-get install libxslt1-dev libxml2-dev zlib1g-dev python python-pip python-dev python3 python3-pip python3-dev
    pip install -r requirements.txt -r requirements_test.txt
    pip3 install -r requirements.txt -r requirements_test.txt
    ./droopescan test

-s 플래그를 사용하여 개별 테스트를 실행할 수 있습니다.

root@kitploit:~
./droopescan test -s test_integration_drupal

라이선스

이 프로젝트는 AGPL 라이선스에 따라 라이선스가 부여됩니다. LICENSE 파일을 참조하십시오.

도구 다운로드