1.SoapClient反序列化SSRF
SoapClient反序列化SSRF
标题:深入探讨SoapClient反序列化SSRF机制与利用
原创:daolgts合天智汇
在代码审计中,识别反序列化点但缺乏明确的pop链时,可利用PHP内置类进行反序列化操作。序列化中的魔术方法如construct()、destruct()等,为PHP程序提供了强大的nginx源码学习运行时特性。在SOAP协议中,采用HTTP作为通讯底层,XML作为数据格式,显著地简化了对象间的远程访问过程。PHP内置类SoapClient的__call方法,用于处理调用不存在的函数,此时会触发该方法进行预设的腾讯工蜂源码调用逻辑。
在测试过程中,观察到在正常情况下,SoapClient类调用一个不存在的函数时,会自动调用__call方法。利用这一点,通过构造特定的90后源码CRLF(Carriage Return Line Feed)序列,可以构造出任意POST请求。例如,将CRLF注入到SOAPAction字段,可控制该字段的值,进而控制POST请求的header,包括Content-Type。zlggui源码下载同样地,通过在User-Agent字段中注入CRLF,同样可以实现对Content-Type的控制。
在具体的CTF题目中,例如n1ctf easy_harder_php中,反序列化与__call方法结合SoapClient,迪士尼游戏源码再利用CRLF漏洞,可以生成任意POST请求,实现SSRF(Server Side Request Forgery)攻击。通过注入特定的序列化对象,引发反序列化漏洞,调用不存在的getcountry方法,间接实现对远程服务器的访问。利用生成的PHPSESSID,可以绕过安全认证,实现对目标服务器的admin登陆。
此外,在SUCTF upload-lab2题目中,通过上传特定文件并触发Ad类的check方法,可以间接实现SSRF攻击,获取flag。文件处理类File的getMIME方法通过finfo_file函数调用,存在利用phar反序列化的可能。利用反射调用__wakeup方法,将类名修改为SoapClient,再触发check方法调用__call方法,实现了SSRF攻击。
综上所述,利用SoapClient的反序列化特性,结合特定的CRLF注入,能够构建出灵活的SSRF攻击链,实现对目标服务器的任意请求控制,对系统安全构成威胁。