Projeto Webvm – Executando uma VM Linux no seu navegador (sem VPS, sem servidor) – 51 Segurança

Projeto Webvm – Executando uma VM Linux no seu navegador (sem VPS, sem servidor) – 51 Segurança

  • nano / nós
  • LS -LA
  • Exemplos de Python3/python3/fibonacci.py
  • GCC -o Helloworld Exemplos/c/helloworld.c && ./helloworld
  • objdump -d ./helloworld | menos -m
  • Exemplos de vim/c/helloworld.c
  • Curl –Max-Time 15 Parrot.Live # Requer rede
Projeto Webvm – Executando uma VM Linux no seu navegador (sem VPS, sem servidor) – 51 Segurança

O WebVM é composto por quatro blocos de construção principais: o mecanismo de virtualização do Cheerpx, um back -end de armazenamento virtual, uma camada de rede e o dispositivo gráfico emulado.

O Cheerpx é um mecanismo de virtualização baseado em WebAssembly exclusivo para o código binário x86. Este mecanismo é baseado em um compilador just-in-time eficiente das instruções X86 na WebAssembly, além de uma camada de emulação para chamadas do sistema Linux. Essa combinação possibilita a execução de binários não modificados do Linux X86 no navegador e é robusto e escalável o suficiente para executar distribuições de Linux inteiras.

O segundo componente principal do WebVM é o back -end do disco de streaming. Um dos principais benchmarks do sucesso do WebVM é poder inicializar distribuições Linux completas e não modificadas, sem exigir a pré -carga do sistema de arquivos completo. Isso implica a capacidade de suportar sistemas de arquivos raiz de 1 GB+ e carregar blocos de disco dinamicamente com baixa latência, uma preocupação crítica para o desempenho geral da VM.

Finalmente, a imagem é concluída pela camada de rede privada, implementada via escala traseira e suporte XORG usando a API do KMS Linux. Mais sobre estes em seções posteriores.

Crie seu próprio webvm no github

Página do projeto do github do WebVM: O repositório de projeto original não foi atualizado com algumas alterações mais recentes https://github.com/leaningtech/webvm. Se você o seguiu, poderá obter um erro para construir e fazer upload nas páginas.

Meu repositório clonado e repositório atualizado: https://github.com/51sec/webvm

  • Atualizei apenas os arquivos de implantação que podem tornar todo o processo concluído sem um erro.

Demo: https://51sec.github.io/webvm/

Etapas básicas:

1 Bifurcar o repositório de https://github.com/leaningtech/webvm

2 Ativar páginas do Github nas configurações.

  • Clique em Settings.
  • Vá para o Pages seção.
  • Selecione Github Actions como fonte.
    • Se você estiver usando um domínio personalizado, garanta Enforce HTTPS está ativado.

3 Execute o fluxo de trabalho.

  • Clique em Actions.
  • Aceite o prompt. Isso é necessário apenas uma vez para ativar ações para o seu garfo.
  • Clique no fluxo de trabalho nomeado Deploy.
  • Clique Run workflow E então mais uma vez Run workflow no menu.

4 Depois de alguns segundos, um novo fluxo de trabalho de implantação será iniciado, clique nele para ver os detalhes.

5 Após a conclusão do fluxo de trabalho, o que leva alguns minutos, ele mostrará o URL abaixo do implant_to_github_pages trabalho.

Comandos Linux:

  • $ Cat /etc /OS-lançamento
  • $ lsb_release -a
  • $ hostnamectl

Use seu próprio domínio para sua página do GitHub:

Implantação local (seu próprio servidor ou VPS)

1 Clone o projeto

  • clone git https://github.com/leaningtech/webvm
  • CD Webvm
  • wget https://github.com/leaningtech/webvm/releases/download/ext2_image/debian_large_20230522_5044875331.ext2
    • Este é do repositório original do GitHub, a senha da conta SU não foi definida.
  • https://github.com/johnnynetsec/webvm/releases/download/ext2_image/debian_mini_220250206_13186456973.ext2
    • A senha do SU foi definida como senha.

3 Editar config_github_terminal.js

4 Construir webvm usando npma saída será colocada no build diretório

  • apt install npm
  • npm install
  • npm run build

5 Inicie o nginx, ele aponta automaticamente para o build diretório acabou de criar

  • apt install nginx
  • nginx -p . -c nginx.conf

Coloque o nginx no back -end para correr

apt install screen
screen -S ng
cd webvm
nginx -p . -c nginx.conf
ctrl + A + D (detach from the screen, going back to original session)


Other Screen commands

  • Install screen (Depends on the Linux Distribution if it came pre installed or not) : yum install screen or apt install screen
  • Initiate a Screen : screen or  screen -S <screen name> <command to execute>
  • Detach from the screen : "CTRL+A,D" not "CTRL+A+D"
  • List all the screen currently working : screen -ls
  • Reattach to a screen : screen -r  <session number> or screen -r <screen name>
  • Kill specific screen: screen -X -S <screen name> quit
  • Kill all screens : pkill screen
  • Reattach to screen : screen -x -r <pid>.<session name>

root@instance-webvm:~# screen -x There are several suitable screens on: 64262.ng (02/02/25 23:59:16) (Detached) 63983.pts-1.instance-webvm (02/02/25 23:46:53) (Detached) 18301.nginx (01/28/25 21:11:25) (Attached) Type "screen (-d) -r (pid.)tty.host" to resume one of them. root@instance-webvm:~# screen -x -r 64262.ng

6 Visita http://127.0.0.1:8081 e aproveite o seu webvm local

A senha raiz padrão é a senha.

user@:~$ su
Password: password
root@:/home/user# 

Command list:

  • git clone https://github.com/leaningtech/webvm
  • cd webvm
  • wget https://github.com/JohnnyNetsec/webvm/releases/download/ext2_image/debian_mini_20250206_13186456973.ext2
  • nano config_github_terminal.js
  • apt install npm
  • npm install
  • npm run build
  • screen -S nginx
  • nginx -p . -c nginx.conf
  • ctrl+A+D

Ativar https com domínio personalizado

Você pode obter uma falha no ERRO “Cheerpx inicialização: DatacloneError: falhou ao executar ‘Postmessage’ em ‘dedicatedworkerglobalscope’: a transferência de SharedArrayBuffer requer self.crosSoriginisolated”.

+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
| |
| O WebVM é um ambiente de Linux virtual em execução no navegador via WebAssembly |
| |
| O WebVM é alimentado pelo mecanismo de virtualização do Cheerpx, que permite seguro, |
| Execução do lado do cliente Sandboxed de binários x86, totalmente do lado do cliente |
| |
| O Cheerpx inclui um compilador JIT x86-to-webassembly, um bloqueio virtual |
| sistema de arquivos e um emulador de syscall linux |
| |
| (Notícias) Cheerpx 1.0 Lançado oficialmente! |
| |
| https://cheerpx.io/blog/cx-10 |
| |
| Experimente o novo webvm alpine/xorg/i3: https://webvm.io/alpine.html |
| |
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
Bem -vindo ao Webvm. Se não tiver certeza, tente estes exemplos:
Exemplos de Python3/python3/fibonacci.py
GCC -o Helloworld Exemplos/c/helloworld.c && ./helloworld
objdump -d ./helloworld | menos -m
Exemplos de vim/c/helloworld.c
Curl –Max-Time 15 Parrot.Live # Requer rede
Cheerpx não pôde começar
Espera -se que o Cheerpx trabalhe com versões de desktop recentes de Chrome, Edge, Firefox e Safari
Experimente uma versão de desktop / outro navegador!
A mensagem de erro interna do Cheerpx é:
Falha na inicialização do Cheerpx: DatacloneError: Falha ao executar ‘Postmessage’ em ‘dedicatedworkerglobalscope’: a transferência SharedArrayBuffer requer self.crossoriginisolated
.

Baseado em perguntas frequentes https://cheerpx.io/docs/faq,

Se você encontrar a seguinte mensagem de erro:

Falha na inicialização do Cheerpx Unchave: DatacloneError: dedicatedworkerglobalscope.postMessage: O objeto SharedArrayBuffer não pode ser serializado. Os cabeçalhos HTTP de políticas de origem-origem e de origem cruzada podem ser usadas para permitir isso.

Este erro ocorre porque o Cheerpx depende de SharedArrayBufferque exige que o site seja Cross-origin isolado. Para ativar o isolamento de origem cruzada, verifique se o seu site é servido com HTTPS e inclua os seguintes cabeçalhos em suas respostas:

Habilitaremos um domínio personalizado e o fará funcionar com https.

Cloudflare Adicione um registro A.

NPM Adicione um novo host proxy com HTTPS ativado.

Agora ele deve estar funcionando como mostrado abaixo.

Ativar rede de rede

Os navegadores modernos não fornecem APIs para usar diretamente o TCP ou o UDP. O WebVM fornece suporte de rede integrando com a escala TailScale, uma rede VPN que suporta o WebSockets como uma camada de transporte.

  • Abra o painel “Networking” da barra lateral
  • Clique em “Conecte -se à escala traseira” do painel
  • Faça login na escala traseira (crie uma conta se não tiver uma)
  • Clique em “Conectar” quando solicitado por escala traseira
  • Se você não estiver familiarizado com a escala traseira ou deseja informações adicionais, consulte Webvm e escala traseira.

Clique no ícone de rede sem fio no painel esquerdo para fazer o login no TailScale:

Uma vez conectado, você verá um endereço IP ter sido atribuído à VM.

Agora você pode fazer

  • Curl www.google.ca
  • Curl ip.sb
  • Curl –Max-Time 15 Parrot.Live
  • ssh

Mas sem ping, sem rastreamento

Lista de servidores SFTP online gratuitos

Web Verificar Nome do host Conecte-se Observação
web verificar test.rebex.net:22 demonstração/senha Também suporta protocolos SSH, FTP/SSL, FTP, IMAP, POP3 e Time. Somente leitura.
web verificar itcsubmit.wustl.edu:22 Apenas para teste de conexão. Nenhum nome de usuário/senha público disponível.
web n / D Demo.wftpServer.com:2222 Demo/demonstração Também suporta FTP/SSL e FTP.

ssh itcsubmit.wustl.edu

Demoção online do servidor Wing FTP

Configuramos um servidor de demonstração on -line para você explorar os novos recursos disponíveis no Wing FTP Server. Você pode explorar a administração baseada na Web e o cliente baseado na Web.

Administração segura baseada na Web:

Cliente seguro baseado na Web:

Faça login usando seu próprio cliente com protocolo FTP, FTPS e SFTP:

  • Localização: Demo.wftpServer.com
  • Nome de usuário: demonstração
  • Senha: demonstração
  • Porta FTP: 21
  • Porta FTPS: 990
  • Porta SFTP: 2222

Observação: Todas as contas de demonstração são contas somente leitura, para que você não possa alterar as configurações do servidor.

Instância gratuita do GCP

Requisitos para mecanismo de computação de camada gratuito

  • 1 não preventável e2-micro Instância da VM por mês em uma das seguintes regiões dos EUA:
    • Oregon: us-west1
    • Iowa: us-central1
    • Carolina do Sul: us-east1
  • 30 GB-Months Standard Persistnt Disk
  • 1 GB de transferência de dados de saída da América do Norte para todos os destinos da região (excluindo a China e a Austrália) por mês

Faça seu próprio arquivo de imagem

Por exemplo, vamos usar o arquivo Debian_mini como um exampe.

FROM --platform=i386 i386/debian:buster
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get clean && apt-get update && apt-get -y upgrade
RUN apt-get -y install apt-utils gcc \
python3 vim unzip ruby nodejs \
fakeroot dbus base whiptail hexedit \
patch wamerican ucf manpages \
file luajit make lua50 dialog curl \
less cowsay netcat-openbsd
RUN useradd -m user && echo "user:password" | chpasswd
COPY --chown=user:user ./examples /home/user/examples
RUN chmod -R +x /home/user/examples/lua
# We set WORKDIR, as this gets extracted by Webvm to be used as the cwd. This is optional.
WORKDIR /home/user/
# We set env, as this gets extracted by Webvm. This is optional.
ENV HOME="/home/user" TERM="xterm" USER="user" SHELL="/bin/bash" EDITOR="vim" LANG="en_US.UTF-8" LC_ALL="C"
RUN echo 'root:password' | chpasswd
CMD ( "/bin/bash" )

Lista de comandos:

  • Git clone https://github.com/leaningtech/webvm
  • CD Webvm
  • MV Dockerfiles/Debian_mini Dockerfile
  • Docker Build -t MyWebvm.
root@instance-webvm:~/webvm# mv dockerfiles/debian_mini Dockerfile
root@instance-webvm:~/webvm# docker build -t mywebvm .
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  3.584kB
Step 1/11 : FROM --platform=i386 i386/debian:buster
buster: Pulling from i386/debian

Desktop Webvm

https://webvm.io/alpine.html

Conecte -se à rede da TailScale primeiro. Certifique -se de ter um nó de saída configurado.

  • https://youtu.be/lhybu3y_0rs

Lançador – Terminal – Su

Senha é senha

Lince é o texto navegador da web. Agora, vamos instalá -lo. Outros navegadores são muito pesados ​​para esta pequena VM.

Atualização APK

APK Add Lynx

Lynx www.google.ca

Devido à limitação de recursos, o Firefox pode ser instalado com sucesso no Linux, mas não é capaz de lançar.

Vídeos

https://www.youtube.com/watch?v=-tv9Jupyl8a Solana Token Creator

Referências

  • https://the-walking-fish.com/p/webvm/
  • https://www.youtube.com/watch?v=jtkHXoxxx0
  • https://sredevops.org/en/how-to-drun–linux-desktop-in-your-browser-webvm-2-0-webassembly-s-the-answer/
  • https://www.youtube.com/watch?v=tgjqmfxw1jo

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *