前言

当任务目标是一个wordpress站点的时候,是否让你感到过头大?wpscan扫了半天,却没有任何有利用价值的bug,这时候就拍拍屁股走人了?
[[251259]]
遇WordPress头大?让我们从插件入手!
流行框架一般不会有什么太大的漏洞,顶多根据少有的特性接口找到一些可以利用的数据,比如用户的基础信息:ID、名称、邮箱等,为潜在的爆破登陆做轻微的贡献。
NO,这时候更应该深入,越是扫不出的地方,越有可能发现有趣的点。而最容易出现非官方,有bug的地方就是插件、自定义插件、第三方功能了。
因此,在面对大型框架时,我们的入手目标就是“一般工具扫不出、普遍站点不一定有,根据管理员目的后来添加的,但混入站点拥有一定权限和功能的”漏洞点。
也就是去寻找笔者所戏称的“后入式BUG”。
寻找plugins的蛛丝马迹
总有人说,拿到一个目标是标准化框架,让人看着就觉得没什么容易下手测试的地方。其实测试的地方是有的,大佬和小白们的方式却略有不同。
1. 工具扫描
使用工具扫描总是最轻松的,基础信息刺探、简单的资产挖掘,甚至某些心大未修复的捡漏、备份文件暴露,特殊路径挖掘等,都能靠扫描器就直接扫出来。但轻松是一方面,另一方面你应该也意识到了,使用工具拼的只是带宽和时间,你的任务入手时间,扫描持续时间,扫描完成程度,规则广泛程度,报告书写速度,都会影响“你与别人谁能拿到奖金”的结果。而初入安全行业,偷懒不进去不学习的人,都停步在了这里。
2. 手工审计
扫描捡漏之余,一般才是大牛们开始发力的真正比武场。SRC排名靠前的师傅,据我认识的就有几个已经自己写出自动化开始做项目了。你用“开源扫描器+手工复测+疯狂写报告”跟他们拼?还是歇歇吧哈哈,他们早直接用SRC的API提交了,从SCAN->TEST->POC->GETSHELL->REPORT一条龙服务。
从前我不相信这个世界有龙,直到我看到了大佬们自己写的“日站一条龙”框架……而大佬们在抢走了第一波饭菜的时候,顺手也拿起勺子开始喝汤了。
事实说话,举例说明
大型开源框架很多,能使用插件的也挺多的。比如WordPress的站点这网上一搜一大把,那我们就拿WordPress举例说明吧。
首先随便找个WordPress的网站,我们就到网上搜一个随便看看吧。
按f12挂个黑页,哦不,按f12看看站点目前引入的文件,和现在的流量情况,找找API交互的endpoint以及现在直接能体现出来的error有没有可以利用的地方。
可以看见,这个站点使用了诸多的插件,某些插接因为太小众,并没被WPScan扫出来,即便扫出来了,或许规则库里也没有统计到有可利用的漏洞,这时候我们就可以找找这几个插件的源码着手审计。而审计之前,我们也可以在权限允许的页面,顺手测试一下这些插件的功能,说不定就有直观的能黑盒测试出来的bug呢?
可以看到,这个站点的PM功能(私信功能)出现了许多奇怪的error,看类型是xhr,流量中跟随输入拼写一直在递增。貌似是查询用户的?不如直接找到这个API,尝试手工测试。
可以看到,单单是黑盒测试,就发现此处API存在一个SQL注入点。
手工复测找到完美闭合方式后,调整速率再使用sqlmap确定一下,可喜可贺,确实找到一个注入点,类型Boolean & Time based。留好截图,组织一下语言,把前后发现、复测条件、payload全附上,一篇价值2k的高危漏洞报告就出炉啦!
这里在form里调用了javascript:autosuggest()来自动补全用户信息。
再看看补全用户信息怎么实现的,我们看看源码,果不其然,在这段代码中就存在一个教科书般的SQLinjection漏洞。
站点的开发在上线时使用了插件,却没经过严格审计,而选择了信任插件,实属失误。。
在刚刚的error信息中,隐约记得还看到了innerHtml()的调用,这可是容易出现xss的地方啊!当然,修复方式建议直接了,也就不用考虑这个XSS了。。
年久失修遇见双管齐下
就在写文章的时候,看到上传图片都是直接传到CDN的图床了,直觉告诉我这里可能出现问题,那是不是图床的第三方SDK也会有洞呢?我们来找找看。
站点使用的是upyun-editor的上传代码,其中有个类似于demo的文件引起了我的注意。
这里看到代码,说不定可以造成反射XSS,那么我们直接POST到站点看看。
恩。。看来是正常解析了。但是Chrome下测试,会被xss defense的内部检查器拦截下来。。这可咋整。。
检查发现站点的返回还与源码本地测试的略有不同,并且既然有两个输入框,可不可以用组合方式绕过Chrome自带的XSS防护呢?
我们在第一个输入框填
基本
文件
流程
错误
SQL
调试
- 请求信息 : 2026-02-16 22:57:55 HTTP/1.1 GET : /article/cohhsos.html
- 运行时间 : 0.0618s ( Load:0.0033s Init:0.0005s Exec:0.0537s Template:0.0043s )
- 吞吐率 : 16.18req/s
- 内存开销 : 2,223.02 kb
- 查询信息 : 12 queries 5 writes
- 文件加载 : 36
- 缓存信息 : 0 gets 2 writes
- 配置加载 : 130
- 会话信息 : SESSION_ID=ika18dib0vtsdht0bnbprc8of0
- /home/wwwroot/jxjierui.cn/index.php ( 1.12 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/ThinkPHP.php ( 4.61 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Think.class.php ( 12.26 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Storage.class.php ( 1.37 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Storage/Driver/File.class.php ( 3.52 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Mode/common.php ( 2.82 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Common/functions.php ( 53.56 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Hook.class.php ( 4.01 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/App.class.php ( 13.49 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Dispatcher.class.php ( 14.79 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Route.class.php ( 13.36 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Controller.class.php ( 11.23 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/View.class.php ( 7.59 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/BuildLiteBehavior.class.php ( 3.68 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/ParseTemplateBehavior.class.php ( 3.88 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/ContentReplaceBehavior.class.php ( 1.91 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Conf/convention.php ( 11.15 KB )
- /home/wwwroot/jxjierui.cn/App/Common/Conf/config.php ( 2.12 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Lang/zh-cn.php ( 2.55 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Conf/debug.php ( 1.48 KB )
- /home/wwwroot/jxjierui.cn/App/Home/Conf/config.php ( 0.32 KB )
- /home/wwwroot/jxjierui.cn/App/Home/Common/function.php ( 3.33 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/ReadHtmlCacheBehavior.class.php ( 5.62 KB )
- /home/wwwroot/jxjierui.cn/App/Home/Controller/ArticleController.class.php ( 6.11 KB )
- /home/wwwroot/jxjierui.cn/App/Home/Controller/CommController.class.php ( 1.60 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Model.class.php ( 60.11 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Db.class.php ( 32.43 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Db/Driver/Pdo.class.php ( 16.74 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Cache.class.php ( 3.83 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Cache/Driver/File.class.php ( 5.87 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Template.class.php ( 28.16 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Template/TagLib/Cx.class.php ( 22.40 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Template/TagLib.class.php ( 9.16 KB )
- /home/wwwroot/jxjierui.cn/App/Runtime/Cache/Home/7540f392f42b28b481b30614275e4e55.php ( 13.96 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/WriteHtmlCacheBehavior.class.php ( 0.97 KB )
- /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Behavior/ShowPageTraceBehavior.class.php ( 5.24 KB )
- [ app_init ] --START--
- Run Behavior\BuildLiteBehavior [ RunTime:0.000004s ]
- [ app_init ] --END-- [ RunTime:0.000023s ]
- [ app_begin ] --START--
- Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000135s ]
- [ app_begin ] --END-- [ RunTime:0.000148s ]
- [ view_parse ] --START--
- [ template_filter ] --START--
- Run Behavior\ContentReplaceBehavior [ RunTime:0.000053s ]
- [ template_filter ] --END-- [ RunTime:0.000071s ]
- Run Behavior\ParseTemplateBehavior [ RunTime:0.003415s ]
- [ view_parse ] --END-- [ RunTime:0.003430s ]
- [ view_filter ] --START--
- Run Behavior\WriteHtmlCacheBehavior [ RunTime:0.000062s ]
- [ view_filter ] --END-- [ RunTime:0.000070s ]
- [ app_end ] --START--
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 1' at line 1
[ SQL语句 ] : SELECT `id`,`pid`,`navname` FROM `cx_nav` WHERE ( id= ) LIMIT 1
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 1' at line 1
[ SQL语句 ] : SELECT `id`,`navname` FROM `cx_nav` WHERE ( id= ) LIMIT 1
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
[ SQL语句 ] : SELECT `id`,`navname` FROM `cx_nav` WHERE ( pid= )
- [8] Undefined index: pid /home/wwwroot/jxjierui.cn/App/Home/Controller/ArticleController.class.php 第 47 行.
- [2] file_put_contents(./App/Runtime/Temp/3a492a10ae6694ea7f6931b47baade70.php): failed to open stream: Permission denied /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Cache/Driver/File.class.php 第 132 行.
- [8] Undefined index: db_host /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Db.class.php 第 120 行.
- [8] Undefined index: db_port /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Db.class.php 第 121 行.
- [8] Undefined index: db_name /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Db.class.php 第 122 行.
- [2] file_put_contents(./App/Runtime/Temp/5f0251b86b7422f45b8eef1217889766.php): failed to open stream: Permission denied /home/wwwroot/jxjierui.cn/ThinkPHP/Library/Think/Cache/Driver/File.class.php 第 132 行.

0.0618s
