一、站点搭建
描述:将下载好的cms放到搭建的站点目录下直接访问emlog目录下按照步骤即可完成安装。
二、黑盒测试
2.1、漏洞1:暴力破解风险
位置:admin地址下,没有有效的多因子认证,以及过于明显的提示。
2.2、漏洞2:敏感信息泄露(站点物理路径)
发现addslashes()函数;它的作用是在预定义字符前添加反斜杠,这些预定义字符包括单引号(')、双引号(")、反斜杠(\)以及 NUL(NULL 字符)。该函数可用于在将字符串插入数据库之前对其进行转义,以防止 SQL 注入攻击。另外,当字符串中包含可能引起解析错误的特殊字符时,addslashes()函数也可以对其进行转义,确保字符串被正确地处理
2.3、漏洞3:密码明文传输
2.4、漏洞4:反射型XSS—保存后存储型XSS
位置:写文章的所有输入框进行尝试;是2弹窗了,说明存在xss的是标题这个位置,发布回到首页刷新发现刚才3的位置持续弹窗,说明该漏洞属于存储型XSS
保存后位置2弹窗
发布后退出登录刷新3持续弹窗
2.5、漏洞5:应用程序未容错
暴露数据库信息;我们可以发现该位置在单引号和双引号前加了反斜杠进行转义,那么这几个框框就基本不存在sql注入
2.6、漏洞6:存储型XSS
位置:侧边栏添加组件支持html同漏洞2
三、白盒测试
描述:这里我们使用seay进行代码审计(我们需要注意当使用源码审计系统我们就要明白大多数的审计为误报)
3.1、漏洞1:sql注入
位置:admin/comment.php变量$ip,追踪delCommentByIn,没有发现相关过滤和预编译尝试利用
构造请求payload:comment.php?action=delbyip&ip=127.0.0.1%27or+extractvalue(0x7e,user())+%23&token=15bd667ade86f2f037211590936cf1ba
3.2、漏洞2:sql注入
描述:这里的sql注入发生在deleteTag这里,我们查看一下这个function;发现这里并没有对tagid做过滤,我们看到它引用了getBlogIdsFromTagId这个方法,也没有进行过滤只是进行了sql查询,我们回过头查看路由路径
查看路由路径后构造payload:
3.3、漏洞3:任意文件删除
描述:这里没有进行chacktoken的操作加上我们看到unlink这个函数直接可以利用一波任意文件删除。(这里我们可知任何没有进行check token的地方同时都存在CSRF的)
四、分析总结
描述:在做一个产品安全测试时,最想的就是尽可能的找出所有的问题,不让产品带着问题发布,尽管目前在国家的倡导下站点都要进行相关的安全产品的部署,但产品本身存在问题,就会给攻击者攻击降低了门槛,除了开发产品种代码引起的安全问题,我们还要关注各种组件安全问题,在公布相关问题后及时更新官方版本。最后代码审计还是需要耐心的去看参数的引用情况,这方面还要共勉进行学习。
整体文章应该还要加入一个漏扫工具使用和漏洞验证的。这里就不进行漏扫了。