
대량의 고위협 PoC/EXP를 활용해 신속하게 대상 권한을 획득하며, 침투 테스트 및 레드팀의 빠른 공격 초기 진입(打点)에 사용됩니다.
🦄 POC bomber는 취약점 탐지/공격 도구로, 다수의 고위험 취약점 POC/EXP를 활용해 대상 서버 권한을 신속하게 획득하는 것을 목표로 합니다
이 프로젝트는 인터넷에서 RCE, 임의 파일 업로드, 역직렬화, SQL 인젝션 등 위험성이 높고 서버의 핵심 권한을 획득할 수 있는 취약점 POC/EXP를 수집하여 POC bomber 무기고에 통합합니다. 다수의 고위험 POC로 단일 또는 여러 대상에 퍼징을 수행하여 대량의 자산에서 취약한 대상을 신속하게 발견하고 대상 서버 권한을 획득합니다. 적용 시나리오는 다음과 같지만 이에 국한되지는 않습니다:
POC bomber의 POC는 weblogic, tomcat, apache, jboss, nginx, struct2, thinkphp2x3x5x, spring, redis, jenkins, PHP 언어 취약점, shiro, 泛微 OA, 致远 OA, 通达 OA 등 공격을 받기 쉬운 구성 요소의 취약점 탐지를 지원하며, dnslog 플랫폼을 호출하여 응답이 없는 RCE(log4j2 탐지 포함)를 탐지할 수 있습니다. 단일 대상 탐지와 배치 탐지를 지원하고, 프로그램은 고동시성 스레드 풀을 사용하며, 사용자 정의 POC/EXP 가져오기를 지원하고 취약점 보고서를 생성할 수 있습니다.
POC bomber는 기본적으로 검증 모드를 사용하여 POC를 검증합니다. 반환 결과에서 attack 값이 True인 경우 --attack 매개변수를 추가하여 공격 모드로 전환하고 EXP를 직접 호출하여 공격할 수 있습니다(POC 파일 이름을 지정해야 합니다). 원클릭 getshell이 가능합니다.
POC-bomber의 v3.0.0 버전으로, 더 빠른 스캔 효율성을 제공하고 단일 POC로 인한 멈춤 문제와 여러 버그를 수정했으며, 컬러 출력과 진행률 표시를 추가하고 POC 디렉터리를 지정할 수 있습니다. hvv의 빠른 진행 속도에 적합하며 2022년에 공개된 일부 취약점 POC도 추가되었습니다. 자체 dnslog 서버 구축을 지원하며, 자신의 도메인을 구성한 후 pocbomber를 사용해 VPS에 dnslog 플랫폼을 열어 일부 취약점의 DNS OOB 탐지를 수행할 수 있습니다.
python3 pocbomber.py -u http://xxx.xxx
image image

python3 pocbomber.py -u http://xxx.xxx --poc="thinkphp2_rce.py" --attack


git clone https://github.com/tr0uble-mAker/POC-bomber.git
cd POC-bomber
pip install -r requirements.txt
사용법 확인: python3 pocbomber.py
모드:
poc/exp 정보 확인: python3 pocbomber.py --show
단일 대상 탐지: python3 pocbomber.py -u http://xxx.xxx.xx
배치 탐지: python3 pocbomber.py -f url.txt -o report.txt
지정 poc 탐지: python3 pocbomber.py -f url.txt --poc="thinkphp2_rce.py"
exp 공격 모드: python3 pocbomber.py -u 대상 URL --poc="지정 poc 파일" --attack
옵션:
-u --url 대상 URL
-f --file 대상 URL 파일 지정
-o --output 보고서가 생성될 파일 지정(기본값: 보고서 생성 안 함)
-p --poc 단일 또는 여러 poc를 지정하여 탐지, poc 파일 이름을 직접 전달, 여러 poc는 (,)로 구분
-t --thread 스레드 풀 최대 동시 실행 수 지정(기본값: 30)
--show poc/exp 상세 정보 표시
--attack poc 파일의 exp를 사용하여 공격
--dnslog 응답 없는 취약점 탐지에 dnslog 플랫폼 사용(기본적으로 dnslog 비활성화, 구성 파일에서 활성화 가능)
/inc/config.py
+--------- poc_bomber.py (POC-bomber 실행)
|
+--------- inc(POC-bomber 프레임워크 실행을 지원하는 핵심 파일 저장)
|
\--------- pocs(POC 저장 목록)----------- framework(프레임워크 취약점 POC 저장)
|
|------ middleware(미들웨어 취약점 POC 저장)
|
|------ ports(일반적인 포트 취약점, 호스트 서비스 취약점 POC 저장)
|
\----- webs(일반적인 웹 페이지 취약점 POC 저장)
POC bomber는 POC를 직접 작성할 수 있도록 지원합니다.
POC는 모두 python3로 작성해야 하며, verify와 attack(필수 아님) 두 함수로 각각 검증과 공격을 수행합니다.
함수 이름은 verify이고, 매개변수로 대상 URL을 받습니다.
함수의 반환 결과는 딕셔너리 형태로 반환되며 name과 vulnerable 두 개의 키를 가집니다. name은 취약점 이름을 설명하고, vulnerable은 True/False 상태로 취약점 존재 여부를 나타냅니다.
취약점이 존재하면 반환된 딕셔너리의 vulnerable 값을 True로 설정하고 대상 URL, 취약점 이용 관련 웹 페이지 등의 정보를 추가합니다.
try로 검증을 시도하고, request 등을 사용해 데이터 패킷을 보낼 때 타임아웃을 설정하여 POC가 멈추지 않도록 합니다.
def verify(url):
relsult = {
'name': 'Thinkphp5 5.0.22/5.1.29 Remote Code Execution Vulnerability',
'vulnerable': False,
'attack': False, # exp가 attack 모드를 지원하면 attack 값을 True로 설정
}
try:
......
(아무 방법으로 취약점 탐지)
......
if 취약점 존재:
relsult['vulnerable'] = True # relsult의 vulnerable 값을 True로 설정
relsult['url'] = url # 검증된 url 반환
relust['xxxxx'] = 'xxxxx' # 해당 취약점 관련 출처 정보 등을 추가할 수 있음
......
return relsult # vulnerable 값이 True인 relsult 반환
else: # 취약점 없음
return relsult # 취약점이 없으면 vulnerable 값이 False인 relsult 반환
execpt:
return relsult
EXP가 있다면 attack 함수를 EXP 공격 함수로 작성할 수 있습니다.
함수 이름은 attack이고, 매개변수로 대상 URL을 받습니다.
그리고 try 안에서 EXP 코드를 작성하여 공격합니다. 사용자와 상호작용하여 입력할 수도 있습니다.
작성 완료 후 해당 취약점의 verify 함수가 반환하는 딕셔너리의 attack 값을 True로 설정합니다.
공격에 성공하면 True를 반환하고, 다른 이유로 실패하면 False를 반환하면 됩니다.
def attack(url):
try:
........................................
공격 코드(명령 실행 또는 리버스 셸·트로이 목마 업로드 등)
........................................
return True
except:
return False
작성이 완료된 POC는 /pocs 디렉터리 안 임의의 위치에 넣으면 재귀적으로 호출됩니다!
프로젝트는 계속 업데이트 중입니다. 보안 전문가 여러분의 POC 기여로 함께 사이버 보안을 지켜주세요!
문제가 있으면 issues에 남겨주세요: https://github.com/tr0uble-mAker/POC-bomber/issues
연락처: [email protected]
이 도구는 법적으로 승인된 기업 보안 구축 행위만을 대상으로 합니다. 도구의 사용 가능성을 테스트하려면 직접 타깃 머신 환경을 구축하십시오. 이 도구를 사용하여 탐지를 수행할 때 해당 행위가 현지 법규를 준수하고 충분한 승인을 받았는지 확인해야 합니다. 승인되지 않은 대상을 스캔하지 마십시오. 이 도구를 사용하는 과정에서 어떠한 불법 행위가 있을 경우 그에 따른 결과는 사용자가 부담해야 하며, 당사는 어떤 법적 책임 및 연대 책임도 지지 않습니다.