퍼징 스케줄러 모듈 사용법 - WHS3-Fuzzk/SmartWebFuzzer GitHub Wiki
퍼징 스케쥴러 모듈은 여러 취약점 스캐너 모듈에서 보내는 퍼징(변조된) 요청 트래픽을 중앙화하여 관리하고자 한다.
동작을 위한 사전 환경 구성
- Redis 실행 중 (docker-compose up)
- 아래 명령 실행
# 프로젝트 루트 폴더에서
cd src/
celery -A fuzzing_scheduler worker --concurrency=10 --loglevel=INFO
requests
모듈을 활용해 보내는 요청은 send_fuzz_request
함수를 사용하면 된다.
send_fuzz_request
함수 사용법
from fuzzing_scheduler import send_fuzz_request
send_fuzz_request.apply_async(
args=[request_data],
link=analyze_response.s()
)
apply_async 함수를 통해 퍼징 요청(send_fuzz_request)을 보내고, 응답 분석(analyze_response)까지 하나의 작업으로 수행한다.
request_data
는 요청에 대한 딕셔너리이다. 이것을 args에 인자로 입력하고, link는 전 Task 결과를 다음 Task에 넘겨준다.
여기서는 응답 분석 함수 analyze_response가 들어간다. .s()를 통해 응답 분석 함수에 요청 함수의 return 값을 입력으로 받는다.
결과적으로, apply_async 함수를 통해 퍼징 요청과 응답 분석이 한 작업으로 이어서 수행될 수 있게 한다.
응답 분석 함수는 취약점 스캐너 모듈 별로 각각 구현한다. 아래와 같이 구현하고, 사용할 때는 위에 나온대로 send_fuzz_request.apply_async를 통해 사용한다.
import fuzzing_scheduler
@celery_app.task(name='tasks.queue')
def analyze_response(response_data):
셀레니움을 활용하는 취약점 스캐너 모듈은 퍼징 요청 함수는 일단 개별적으로 코드 작성 후, @celery_app.task
데코레이터를 함수 위에 붙인다.
추후 통합 가능하면 모듈로 분리한다.