|
目标站点的渗透首页是一套标准的WordPress主题,版本号在源码里躺着。渗透后台地址是渗透/wp-login.php,这个路径不会因为主题变化而改变。渗透我先用wpscan扫了一遍,渗透插件列表里有三个过期的渗透,其中一个叫“Revolution Slider”,渗透版本号停留在两年前。渗透 这个插件有个老洞,渗透文件上传过滤不严。渗透我直接构造了一个POST请求,渗透往它的渗透temp_upload目录扔了一个伪装成图片的PHP文件。响应码是渗透200,文件落地的渗透路径在返回包里清清楚楚地写着。这时候我还没拿到shell,渗透但已经能往服务器上写东西了——这就像撬开了锁芯,门还没推开。 接着我用一个公开的exp,把上传的PHP文件通过插件自身的ajax接口包含执行。请求发出去,回显里出现了uid=33(www-data)。系统权限是www-data,不算高,但足够读取站点根目录下的wp-config.php了——数据库密码、认证密钥全在里面躺着。 拿到数据库密码后,我连上MySQL。WordPress的用户表是wp_users,管理员账户的密码哈希是$P$B...开头的。我没去爆破,直接UPDATE了密码字段,把admin的哈希替换成自己预先算好的值。这个过程只需要一条SQL语句,快得很。然后我重新登录后台,身份已经是管理员。 后台里更省事。外观→编辑→404模板,往里面插了一段eval(base64_decode(...))的代码。保存后访问一个不存在的路径,比如/404.php,代码就被执行了。这次我拿到的是完整的shell,可以执行任意系统命令。用id确认权限,还是www-data,但已经能读/etc/passwd,也能翻其他用户的.bash_history。 整个过程花了不到二十分钟,没碰任何0day,全靠公开漏洞和弱配置。WordPress本身的安全机制不算差,但生态太庞大了——主题、插件、第三方代码,每一层都可能成为突破口。管理员要是勤快点,插件更新勤快点,这条路根本走不通。可现实是,很多站点上线后就没再管过,插件版本停在三年前,密码还是admin123。 收尾时我把上传的临时文件删了,改了数据库密码,但没动那个404模板里的后门——留着它,下次还能进来。渗透测试和黑客攻击的区别只在于你有没有授权,手法上其实没什么两样。这活儿干多了容易麻木,但每次看到那些脆弱的配置,还是会觉得:安全这东西,真不是装个防火墙就能解决的。 |