很多时候命令回显漏洞由于一些特殊原因,无法构造或不方便构造回显,上回讲到JAVA反序列化漏洞Ladon回显方法。本文针对Windows系统实现命令执行漏洞回显方法,使用系统自带certutil或Powershell命令,虽说JAVA跨平台但并不代表所有系统都预装有JAVA,实际上.NET一样是跨平台的,前提都要系统安装才可以,那么对于未安装JAVA的机器或非JAVA程序产生的命令执行漏洞,如何实现命令回显,将是本文讲述的重点。JAVA篇:http://k8gege.org/Ladon/web_javarce.html
由于是HTTP协议,可以通过浏览器访问得到Ladon回显BASE64解密结果,就是说我们只要通过命令行发送HTTP请求即可在Ladon控制台看到命令执行后的结果。getstr为发送明文,但是结果中有特殊字符或换行就无法HTTP请求了,所以我们使用BASE64加密,这个原理我们在JAVA反序列化漏洞回显中有提到过。
执行以上命令,可以在Ladon中得到回显,但是实战中,我们不可能未补先知,直接能返回结果,所以得先执行命令,获取结果转成BASE64后再发送给Ladon解密,所以我们接下来要研究,如何通过powershell执行任意命令并加密发送给Ladon
使用LadonGUI版的编码转换功能将代码转成一行CMD命令,因为命令执行漏洞一般不支持执行多行PS1脚本,经过转换后可以得到命令执行漏洞通用的一行CMD命令。测试发现可以使用Binary或hex等加密将PowerShell代码转成一条命令,以便结合漏洞使用
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'')" |