宇安 赛博朔方
前言
2017年8月至9月朔方攻城狮利用工作空闲时间发现了 NexusPHP项目存在 SQL注入、XSS跨站脚本等多个零日代码攻击漏洞(0DAY),并获得4个CVE编号。
正如TK教主所说:“喜悦主要来源漏洞本身,以及探索和挑战的过程,CVE不CVE并不会改变太多。这里小编将部分细节分享给大家,欢迎关注本号进行交流。
背景知识
关于CVE
CVE是“CommonVulnerabilities & Exposures”(通用漏洞与披露)的简称。由企业、*、学术界综合参与的非盈利国际性组织,其使命是为了更快和有效地鉴别、发现及修复安全漏洞。绝大多数安全研究人员都把自己发现的漏洞能够具有CVE编写为荣。
CVE已成为安全信息共享的“关键字”,为入驻CVE联盟成员、产品使用用户、安全防护产品厂商提供共享信息。
关于NexusPHP
NexusPHP由来自浙江大学的Nexus团队发起并开发完成。主要是提供一个完整的、有序的、重视用户信誉和知识的资源分享社区的解决方案,是一个pt(Private Tracker,即私有的Tracker服务器,是BT下载的一种)开源软件。
NexusPHP 0day漏洞简析
CVE-2017-14347
漏洞类型:XSS跨站脚本
首先接受GET传过来的id的值,这里int_check函数检测传入的数据类型。
接下来我们以GET方式传入$sure $returnto
$id $sure $returnto都是以GET方式提交,若$returnto以GET方式传过来,则被htmlspecialchars转义,否则传入被htmlspecialchars转义$_SERVER["HTTP_REFERER"]
Htmlspecialchars()函数就是把预定义的字符 "<"和 ">"转换为 HTML 实体。
而且$returnto的值 不能为NULL。漏洞触发前置条件首先是Action传入delete,其次是传入sure的值,最后传入id的值产生了XSS跨站脚本。
CVE-2017-14070
漏洞类型:XSS跨站脚本
第57行代码是漏洞触发点,主要是PHP的$_SERVER['PHP_SELF']造成的XSS跨站脚本攻击,$_SERVER['PHP_SELF'] 表示当前 PHP文件相对于网站根目录的位置地址。只是要注意该地址是不包含 URL 中请求的参数(?及后面的字串)就可以直接插入payload。从而产生XSS跨站脚本攻击。
CVE-2017-14069
漏洞类型:SQL注入
第27行代码中 $_POST[usernw]并未做过滤就将数组元素组合成的字符串带入数据库中。该漏洞触发条件:首先$_POST["nowarned"]必须等于"nowarned",其次用户需要开启UC_MODERATOR权限,并且$_POST["usernw "]传入的内容不能为空才会导致触发该漏洞。
CVE-2017-14534
漏洞类型:XSS跨站脚本
第20行代码中同样是$_SERVER['PHP_SELF'] 导致 URL 中请求的参数(?及后面的字串)可以直接插入payload,造成XSS跨站脚本。
规避方案
- 网页代码中对用户输入的数据进行严格过滤(代码层)
- 部署Web应用防火墙(设备层)
- 对数据库操作进行监控(数据库层)
- cookie中设置HttpOnly属性,使用通过js脚本无法读取到cookie信息,这样才能更有效的防止XSS攻击。
- END -