HW蓝军礼包-针对冰蝎客户端的XSS攻击
2020-09-13 19:08:08 Author: wiki.ioin.in(查看原文) 阅读量:326 收藏

冰蝎的客户端连接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

测试一下hook效果

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

所以base64编码一下再输出

冰蝎获取信息成功

XSS平台获取到数据

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

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

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


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


文章来源: https://wiki.ioin.in/url/gdKM
如有侵权请联系:admin#unsafe.sh