
네트워크에서 취약하고 악용 가능한 타사 웹 애플리케이션을 스캔하는 Ruby 스크립트
Yasuo는 취약한 타사 웹 애플리케이션을 스캔하는 Ruby 스크립트입니다.
네트워크 보안 평가(내부, 외부, 레드팀 작업 등)를 하다 보면 공개된 취약점을 악용하여 원격 서버를 손상시킬 수 있는 취약한 타사 웹 애플리케이션이나 웹 프론트엔드를 자주 발견하게 됩니다. 일반적이고 인기 있는 애플리케이션으로는 Apache Tomcat 관리 인터페이스, JBoss jmx-console, Hudson Jenkins 등이 있습니다.
Exploit-db을 검색해보면 수많은 웹 애플리케이션/프론트엔드에 존재하는 10,000개 이상의 원격 악용 가능한 취약점이 있으며, 이를 통해 공격자가 백엔드 서버를 완전히 손상시킬 수 있습니다. 이러한 취약점은 RCE, 악성 파일 업로드, SQL 인젝션, RFI/LFI 등 다양합니다.
Yasuo는 이러한 취약한 애플리케이션을 네트워크에서 신속하게 스캔하여 공격 가능한 대상을 쉽게 제공하도록 설계되었습니다.
다음 gem을 설치해야 합니다:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo는 다음과 같은 명령줄 옵션을 제공합니다:
-r :: Yasuo가 포트 스캔을 수행하도록 하려면 이 스위치를 사용하여 IP 주소 또는 IP 범위를 제공합니다.
-l :: Yasuo가 포트 스캔을 수행하도록 하려면 이 스위치를 사용하여 IP 주소가 줄바꿈으로 구분된 입력 파일을 제공합니다. nmap의 -iL 옵션과 유사합니다.
-s :: 사용자 지정 서명 파일을 제공합니다. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [기본값 - signatures.yaml]
-f :: Yasuo가 포트 스캔을 수행하지 않고 이미 nmap 출력을 xml 형식으로 가지고 있는 경우, 이 스위치를 사용하여 nmap 출력을 제공합니다.
-u :: 이전 Yasuo 실행에서 저장된 URL이 줄바꿈으로 구분된 파일을 사용합니다. 자세한 내용은 아래를 참조하세요.
-n :: 포트 스캔 중 호스트에 ping을 보내지 않도록 Yasuo에 지시합니다. 표준 nmap 옵션입니다.
-p :: 이 스위치를 사용하여 포트 번호/범위를 제공합니다.
-A :: 이 스위치를 사용하여 65535개 포트를 모두 스캔합니다. 표준 nmap 옵션입니다.
-b [all/form/basic] :: 발견된 애플리케이션이 인증을 구현하는 경우, 이 스위치를 사용하여 인증을 무차별 대입합니다. "all"은 양식 및 HTTP 기본 인증을 모두 무차별 대입합니다. "form"은 양식 기반 인증만 무차별 대입합니다. "basic"은 HTTP 기본 인증만 무차별 대입합니다.
-t :: 최대 스레드 수를 지정합니다.
-h :: 음, 추측해보세요
Yasuo가 실행되면 취약한 애플리케이션 열거를 시작하기 전에 여러 단계를 수행합니다. IP 주소나 범위를 제공하면 제공된 대상에 대해 포트 스크캔을 수행합니다. Yasuo에 nmap xml 출력 파일을 제공하면 해당 파일을 구문 분석하고 웹 포트가 열린 호스트를 열거합니다. 그런 다음 열거된 각 host:ip에 대해 가짜(존재하지 않는) 파일 및 디렉터리를 요청합니다. 오탐을 줄이기 위해 가짜 파일 및 디렉터리 요청에 HTTP 200 Ok로 응답하는 모든 ip:port를 폐기합니다. 이 전체 과정이 끝나면 "좋은 URL" 목록을 얻게 됩니다. 이 좋은 URL은 취약한 애플리케이션을 열거하는 데 사용됩니다.
어떤 이유로 동일한 대상에 대해 Yasuo를 다시 실행해야 하는 경우, 이전 버전의 Yasuo는 이 전체 과정을 다시 거칩니다. 이는 전혀 효율적이지 않습니다. 저는 대부분 멍청하고 느리게 배우지만 계속 진화하고 있습니다. 어쨌든 동일한 대상에 대해 Yasuo를 다시 실행하는 좋은 이유는 다른(또는 사용자 지정) 서명 파일을 사용하기 위해서일 수 있습니다.
이 최신 버전의 Yasuo는 실행되는 동일한 폴더에 savedURLstateXXXXX.out 파일을 자동으로 저장합니다. 이 파일에는 모든 "좋은 URL"이 포함됩니다. 동일한 대상에 대해 Yasuo를 다시 실행하려면 -f 또는 -r 옵션 없이 이 파일을 Yasuo에 제공하기만 하면 됩니다.
예: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo는 이 파일을 구문 분석하고 나열된 "좋은 URL"에 대해 취약한 애플리케이션 열거를 시작합니다. 짜잔.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
위 명령은 127.0.0.1에 대해 포트 80, 8080, 443, 8443에서 포트 스캔을 수행하고 양식 기반 인증을 구현하는 모든 애플리케이션에 대해 로그인을 무차별 대입합니다.
./yasuo -l /project/hosts -p 80,8080,443,8443
위 명령은 /project/hosts 파일에 있는 호스트에 대해 포트 80, 8080, 443, 8443에서 포트 스캔을 수행하고 발견된 애플리케이션에 대해 무차별 대입 작업을 수행하지 않습니다.
./yasuo -f my_nmap_output.xml -b all
위 명령은 nmap 출력 파일 "my_nmap_output.xml"을 구문 분석하고 양식 기반 및 HTTP 기본 인증을 구현하는 모든 애플리케이션에 대해 로그인을 무차별 대입합니다.
