HW蓝军礼包-针对冰蝎客户端的XSS攻击

  • A+
所属分类:安全文章


HW蓝军礼包-针对冰蝎客户端的XSS攻击


冰蝎的客户端连接PHP的webshell以后,默认会执行phpinfo函数,然后把信息显示出来。


一般来说phpinfo的内容是安全可信的,但是没有什么是绝对安全的。


runkit扩展库是pecl的php扩展的一部分。runkit提供了一套函数,能让你动态的修改任意类和函数的定义。根据php提供的反射机制,得到所有用户定义的类和函数,你可以把他们重命名然后再用原来的函数名/方法名重新添加一个方法/函数,重新添加的函数的函数体,你可以任意定义。


我们可以通过runkit来hook phpinfo这个函数,然后返回一段JS代码来实现对冰蝎客户端的xss攻击。


首先我们来安装一下这个扩展


mac或者Linux通过pecl来安装


php7使用

pecl install channel://pecl.php.net/runkit7-3.1.0a1


php5使用

pecl install runkit


Windows 通过下方网址自行寻找DLL文件安装

https://pecl.php.net/package-search.php?pkg_name=runkit&pkg_maintainer=&pkg_category=&released_on_year=&released_on_month=&released_on_day=&released_before_year=&released_before_month=&released_before_day=&released_since_year=&released_since_month=&released_since_day=



php.ini中启用激活runkit

HW蓝军礼包-针对冰蝎客户端的XSS攻击


测试一下hook效果


我们使用runkit_function_redefine函数来重写phpinfo函数,echo 中放入base64编码后的XSS代码,一些特殊字符会导致runkit出问题,

所以base64编码一下再输出

HW蓝军礼包-针对冰蝎客户端的XSS攻击


冰蝎获取信息成功

HW蓝军礼包-针对冰蝎客户端的XSS攻击

XSS平台获取到数据

HW蓝军礼包-针对冰蝎客户端的XSS攻击

但是,我们不可能手动在冰蝎webshell上加上我们的hook代码,这样就没什么意义了。

runkit_function_redefine('phpinfo','','echo base64_decode("xxxxxx=");');


我们可以通过把代码写到一个php文件中找到auto_prepend_file = 然后把文件路径填进去,php解释器会在解析php文件之前,先执行我们的代码。这样攻击者就算通过0day漏洞,上传了冰蝎的webshell,但是只要他一连接,我们就能马上获取到攻击者的ip和连接时间等等信息,方便溯源。


最后,runkit是一个不太稳定的扩展,不太适合在生产环境中使用。本文只探讨思路上的可行性。如果想要实际使用,建议自己编写php扩展,hook内置phpinfo函数,这样会更稳定,而且会减少不必要的性能损失。



HW蓝军礼包-针对冰蝎客户端的XSS攻击


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: