虚拟机与主机连接指南-反弹shell式
时间:2023-06-30 02:12:01 | 来源:网站运营
时间:2023-06-30 02:12:01 来源:网站运营
虚拟机与主机连接指南-反弹shell式:
0x00起因
今天上午要搭建vulhub靶机需要安装docker,安装docker需要安装curl,但官方源太慢,因此Ubuntu虚拟机要换国内镜像源,需要手工编辑/etc/apt/sources.list文件,但是在Windows物理机中复制过后无法在虚拟机中直接粘贴于是就产生了这篇文章...其实并不能说是反弹shell,只不过借鉴了反弹shell的思想。(到最后换了源还是没能成功下载curl,只好用wget下载后编译安装,但编译安装需要openssl支持,于是又去安装openssl,安装openssl时出现莫名其妙的错误...我真的 了,到现在还没有解决,大概是因为电脑是六年前买的,Ubuntu版本是12.04,以及VMware是不知道从哪个地方下载下来的工地版本......不过在这个过程中实践了反弹shell,熟悉了基本Linux命令和su权限,增长了见识,这些就算是意外收获吧)
以下操作我均在root身份下进行
0x01弯路
首先尝试vmware tools,但是我的vm一直提示正在安装,失败告终。
然后尝试ssh隧道,主机和虚拟机互相可以ping通,但Ubuntu预置只有ssh client,我需要配置ssh server,但问题是,我的源不更换就无法使用apt-get install openssh,而在这种方法下要想更换源就先要安装openssh,于是乎变成了先有鸡还是现有蛋的问题...
于是我有想,可以让物理机充当ssh server,而Ubuntu充当客户端,但由于物理机是Windows,搭建openssh server比较困难,因此放弃。
0x02正轨(柳暗花明)
好在平时渗透测试相关文章看得比较多,让我很快想到了反弹shell,而这种方法在搜索“主机和虚拟机通信”时几乎没有提及(反正我是没有看到),我就想着试试看吧
首先反弹的话Ubuntu端无需额外安装软件,Windows物理机上需要安装nc,不过nc体积很小才几MB下载很快,但记得把杀软关掉!!!或者设置里把自动处理改成询问我。(我没关火绒,解压后直接给我删除,添加信任后我把nc.exe复制到system32文件夹下它又给我删除,没有管理员权限它还恢复不回去,等好不容易复制过去命令提示符里一敲nc它又给我删除我真服了)
然后就可以愉快地开始操作了
0x03掉进坑里的快乐操作
首先要知道两台机子的ip,win下敲ipconfig,Ubuntu下敲ifconfig
然后win下输入
nc -l -p 2333
这里的2333是我随便指定的监听端口,当然你也可以写其他的端口,最好不要和已在使用的冲突,一般四位数五位数的不太容易撞车,不过你非要写成80之类的我也拿你没办法,你可以试一下(我没试过)
之后在Ubuntu下输入
bash -i >& /dev/tcp/192.168.18.1/2333 0>&1
192.168.18.1是Windows端的IP
回车后即可在Windows上收到反弹回来的shell
但是......这个shell好像不能满足我的要求?
Windows端可以输入Linux命令并得到结果,就像在真正操作Ubuntu一样,但是Ubuntu屏幕上看不到任何一条消息,Ubuntu段任意输入字符后,Windows端看不到这些字符。
那怎么办?我要把国内源的网址发送给Ubuntu,然后再在Ubuntu中复制粘贴,反弹是不是太高级了?
于是我回去翻了一下反弹shell的原理......
0x04正解!
正所谓Linux一切皆文件,那么标准输入输入设备也可以看成文件咯
实验一:Ubuntu向Windows传输字符
Windows端输入
nc -l -p 2333
Ubuntu端输入
echo test > /dev/tcp/192.168.18.1/2333
于是Windows端屏幕上得到输出:test
成功!
实验二:Windows向Ubuntu端传输字符
首先Windows端输入
nc -l -p 2333
然后Ubuntu端输入
cat < /dev/tcp/198.168.18.1/2333
回车后就可以发现Windows端提示建立了连接
此时就可以在Windows端输入字符,然后就可以在Ubuntu端看到字符输出啦!
实验二是正解!
0x05反思
弯路走得不少,有点闹心,但是潜下心还是能够有所收获的
以后有时间我会写从原理上写一篇详细的反弹shell学习笔记
希望我能静下心来吧。