
CRLF 취약점을 스캔하는 빠른 도구 (Go로 작성됨)
설치는 간단합니다. 릴리스 페이지에서 미리 빌드된 바이너리를 다운로드하여 압축을 풀고 실행하세요! 또는 다음 명령어로:
▶ curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin
go1.13+ 컴파일러가 설치 및 구성되어 있다면:
▶ GO111MODULE=on go install github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest
도구를 업데이트하려면 go get 명령어에 -u 플래그를 사용할 수 있습니다.
▶ git clone https://github.com/dwisiswant0/crlfuzz
▶ cd crlfuzz/cmd/crlfuzz
▶ go build .
▶ mv crlfuzz /usr/local/bin
간단히, CRLFuzz는 다음과 같이 실행할 수 있습니다:
▶ crlfuzz -u "http://target"
▶ crlfuzz -h
도구의 도움말을 표시합니다. 지원되는 모든 스위치는 다음과 같습니다.
| 플래그 | 설명 |
|---|---|
| -u, --url | 펄즈할 단일 URL 지정 |
| -l, --list | 파일 내 URL 펄즈 |
| -X, --method | 사용할 요청 메서드 지정 (기본값: GET) |
| -o, --output | 결과를 저장할 파일 |
| -d, --data | 요청 데이터 정의 |
| -H, --header | 대상에 사용자 정의 헤더 전달 |
| -x, --proxy | 지정된 프록시를 사용하여 펄즈 |
| -c, --concurrent | 동시성 수준 설정 (기본값: 25) |
| -s, --silent | 무음 모드 |
| -v, --verbose | 자세한 모드 |
| -V, --version | 현재 CRLFuzz 버전 표시 |
| -h, --help | 도움말 표시 |
대상은 3가지 방법으로 정의할 수 있습니다:
▶ crlfuzz -u "http://target"
▶ crlfuzz -l /path/to/urls.txt
다른 도구와 체인으로 사용하려는 경우.
▶ subfinder -d target -silent | httpx -silent | crlfuzz
기본적으로 CRLFuzz는 GET 메서드로 요청합니다. 변경하려면 -X 플래그를 사용하세요.
▶ crlfuzz -u "http://target" -X "GET"
-o 플래그를 사용하여 펄즈 결과를 파일에 저장할 수도 있습니다.
▶ crlfuzz -l /path/to/urls.txt -o /path/to/results.txt
POST, DELETE, PATCH 또는 다른 메서드를 사용하여 데이터 요청을 보내려면 -d 플래그를 사용하면 됩니다.
▶ crlfuzz -u "http://target" -X "POST" -d "data=body"
쿠키나 다른 헤더 부분을 추가하기 위해 사용자 정의 헤더를 사용하려면:
▶ crlfuzz -u "http://target" -H "Cookie: ..." -H "User-Agent: ..."
프록시를 사용할 때, 프록시 문자열은 대체 프록시 프로토콜을 지정하기 위해 protocol:// 접두어로 지정할 수 있습니다.
▶ crlfuzz -u "http://target" -x http://127.0.0.1:8080
동시성은 동시에 펄즈를 수행하는 수입니다. CRLFuzz의 기본값은 25이며, -c 플래그로 변경할 수 있습니다.
▶ crlfuzz -l /path/to/urls.txt -c 50
-s 플래그로 무음 모드를 활성화하면 취약한 대상만 표시됩니다.
▶ crlfuzz -l /path/to/urls.txt -s | tee vuln-urls.txt
무음 모드와 달리 -v 플래그를 사용하면 오류가 발생할 경우 오류 세부 정보를 표시합니다.
▶ crlfuzz -l /path/to/urls.txt -v
-V 플래그로 현재 CRLFuzz 버전을 표시합니다.
▶ crlfuzz -V
CRLFuzz를 라이브러리로 사용할 수 있습니다.
package main
import (
"fmt"
"github.com/dwisiswant0/crlfuzz/pkg/crlfuzz"
)
func main() {
target := "http://target"
method := "GET"
// Generates a potentially CRLF vulnerable URLs
for _, url := range crlfuzz.GenerateURL(target) {
// Scan against target
vuln, err := crlfuzz.Scan(url, method, "", []string{}, "")
if err != nil {
panic(err)
}
if vuln {
fmt.Printf("VULN! %s\n", url)
}
}
}
아직 혼란스럽거나 버그를 발견했다면 이슈를 열어주세요. 모든 버그 리포트는 감사히 받겠습니다. 일부 기능은 시간 부족으로 아직 테스트되지 않았습니다.
CRLFuzz는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
현재 버전은 1.4.0이며 아직 개발 중입니다.