openssl漏洞相关知识
-
nginx 解析php漏洞测试过nginx诸多版本,都有该漏洞。漏洞场景: nginx + php-cgi 漏洞重现:在网站根目录上传一个文件1.jpg内容为:<?php echo 111; ?>复制代码这样访问: http://yourdomain/1.jpg/123.php //这里的123随意定义,写成abc也行,关键后边是.php这样就能解析php了 结果为111这似乎很危险,如果作为系统管理员的你不知道该漏洞,那么别有用心的小人在你的网站上传了本是php内容的“图片”,毕竟你的网站是允许上传图片的。,如果他上传了木马,那么后果不堪设想。至于原理,等会再讲,先说说如何解决该漏洞。解决方法也很简单,打开php.ini 设置 cgi.fix_pathinfo=0注意,默认这个参数是注释掉的,当然默认值肯定不是0,所以有必要把注释号去掉,打开该参数。为什么会有这样的漏洞呢?这是因为:nginx的location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端
-
Linux sudo权限提升漏洞(CVE-2019-14287)目录 0x01 漏洞介绍 0x02 漏洞影响 0x03 漏洞复现 0x04 漏洞细节 0x05 参考 0x01 漏洞介绍 此漏洞可以使受限制的用户运行root命令 0x02 漏洞影响 1.8.28之前的sudo版本均会受到影响 此漏洞的利用需要使用户具有sudo的权限 0x03 漏洞复现 0x04 漏洞细节 因为需要用户拥有root权限,这也意味着用户的sudoers中的runas说明符中具有特殊值ALL 我们这里来查看一下/etc/sudoers 我们可以看到下面几个用户权限的配置信息,它们的含义是这样的 授权用户/组 主机=[(切换到哪些
-
浅谈文件包含漏洞导语:文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序。当应用程序使用攻击者控制的变量构建可执行代码的路径时,文件包含漏洞会导致攻击者任意控制运行时执行的文件。文件包含漏洞的出现及危害文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序。当应用程序使用攻击者控制的变量构建可执行代码的路径时,文件包含漏洞会导致攻击者任意控制运行时执行的文件。如果一个文件包含这个漏洞,为了方便起见,经常在开发阶段就实施。由于它经常用于程序开发阶段,所以这就为后来的攻击埋下了伏笔并导致了各种基于文件的攻击。文件包含漏洞主要是程序员把一些公用的代码写在一个单独的文件中,然后使用其他文件进行包含调用,如果需要包含的文件使用硬编码,一般是不会出现安全问题,但是有时可能不确定需要包含哪些具体文件,所以就会采用变量的形式来传递需要包含的文件,但是在使用包含文件的过程中,未对包含的变量进行检查及过滤,导致外部提交的恶意数据作为变量进入到了文件包含的过程中,从而导致提交的恶意数据被执行。文件
-
CVE-2018-8120 漏洞分析详细分析漏洞描述Microsoft Windows 7 SP1、Windows Server 2008 SP2和Windows Server 2008 R2 SP1都是美国微软(Microsoft)公司的产品。Microsoft Windows 7 SP1是一套供个人电脑使用的操作系统;Windows Server 2008 SP2是一套服务器操作系统。R2 SP1是它的升级版。Microsoft Windows中存在提权漏洞,该漏洞源于Win32k组件NtUserSetImeInfoEx函数内部SetImeInfoEx函数的没有正确的处理内存中的空指针对象。攻击者可利用该空指针漏洞在内核模式下以提升的权限执行任意代码。技术分析分配零页内存技术平时用malloc、new之类的函数会在RtlAllocateHeap已经分配好的堆中申请一块出来,内存不够的时候才会使用ZwAllocateVirualMemory,使用ZwAllocateVirualMemory分配内存的时候参数BaseAdress指定为0时系统
openssl漏洞相关课程
openssl漏洞相关教程
- 4.2 软件漏洞 系统上面安装的软件存在漏洞,被探测工具扫描到,就可能利用你这个漏洞入侵你的操作系统。
- 2. Django 中 XSS 漏洞防护 在 Django 中也提供了部分代码来帮助我们防止 XSS 漏洞,我们需要熟悉 Django 的相关代码才能使用好它。在模板文件中,Django 使用 escape 过滤器对单一变量进行转义过滤,无需转义时使用 safe 过滤器;此外 Django 默认对 HTML 自动转义,使用的标签为:{% autoescape on %},而如想停止自动转义,可以使用 off 参数关闭该标签:{% autoescape off %}。对于 Django 做的这些网页元素安全、防止 XSS 漏洞的工作的代码主要在 django/utils/html_safe.py 文件中,如果有兴趣可以深入学习下这里的代码。但是有这些代码真的就万无一失了吗?这种想法是错误的,比如我们人为的用 safe 不对变量进行转义,有时候控制不好就会造成漏洞,更多的时候,Django 给我们写好了很多安全代码,但我们需要用好这些代码,同时也要加强安全相关的知识背景,尽量减少常见的漏洞出现。
- 3.3 第三方依赖包的漏洞问题 我们代码工程里面会引入很多第三方依赖包,整个系统的安全性就像漏斗效应,一旦某个依赖包被发现漏洞,我们的整个系统也等于存在威胁边缘。例如下面常见的一些依赖包structfastjsonhttpclientapache commonsspring等等
- 3. Django 中对 SQL 注入漏洞做的工作 Django 内置的 ORM 模型某种程度上帮我们处理好了 SQL 注入问题,我们尽量使用 Django 内置 ORM 模型的 api 去对数据库中的表进行增删改查操作,它会根据我们所使用的数据库服务器的转换规则,自动转义特殊的SQL参数,从而避免出现 SQL 注入的问题。这个操作被运用到了整个 Django 的 ORM 模型的 api 中,但也有一些例外,如给 extra() 方法的 where 参数, 这个参数故意设计成可以接受原始的 SQL,并使用底层数据库API的查询。我们来看存在 SQL 注入漏洞和正确操作者两种写法:# 存在SQL注入漏洞代码name = 'Joe' # 如果first_name中有SQL特定字符就会出现漏洞User.objects.all().extra(where=["name='%s' and password='%s'" % (name, password)])# 正确方式User.objects.all().extra(where=["name='%s' and password='%s'"], params=[name, password])我们前面在 ORM 操作中建立了一个 user 表,对应的 model 类如下:# 代码位置: hello_app/models.pyclass User(models.Model): name = models.CharField('用户名', max_length=20) password = models.CharField('密码', max_length=50) email = models.EmailField('邮箱') def __str__(self): return "<%s>" % (self.name) class Meta: # 通过db_table自定义数据表名 db_table = 'user'这个表中有我们之前第16节中测试的11条数据,我们来拿这个表来完成相关 SQL 注入的实验。我们现在用两种方式来实现 SQL 注入:在 Django 中使用原生 SQL 操作 MySQL 数据库。下面是两种写法,分别对应着存在 SQL 注入漏洞和安全的操作:>>> from django.db import connection>>> cur = connection.cursor()# 存在注入漏洞,绕过了判断语句>>> cur.execute("select * from user where name='%s' and password='%s'" % ("' or 1=1 #", 'xxx'))11# 使用这种方式会避免上述问题>>> cur.execute("select * from user where name=%s and password=%s", ["' or 1=1#", 'xxx'])0>>> 在 Django 的 ORM 模型中使用 extra() 方法来构建 SQL 注入漏洞:>>> from hello_app.models import User# 实现SQL注入>>> User.objects.all().extra(where=["name='%s' and password='%s'" % ("') or 1=1 limit 1#", 'xx')])query=b"SELECT `user`.`id`, `user`.`name`, `user`.`password`, `user`.`email` FROM `user` WHERE (name='') or 1=1 limit 1#' and password='xx') LIMIT 21"<QuerySet [<User: <test>>]># 安全操作>>> User.objects.all().extra(where=["name=%s and password=%s"], params=["') or 1=1 limit 1#", 'xx'])query=b"SELECT `user`.`id`, `user`.`name`, `user`.`password`, `user`.`email` FROM `user` WHERE (name='\\') or 1=1 limit 1#' and password='xx') LIMIT 21"<QuerySet []># 正常取数据操作>>> User.objects.all().extra(where=["name=%s and password=%s"], params=["test", 'xxxxxx'])# 这个query是我为了方便在执行sql的地方加了个print语句,打印执行的sqlquery=b"SELECT `user`.`id`, `user`.`name`, `user`.`password`, `user`.`email` FROM `user` WHERE (name='test' and password='xxxxxx') LIMIT 21"<QuerySet [<User: <test>>]>注意:为什么这次注入的语句变成了"') or 1=1 limit 1#",这是因为我发现使用 extra() 方法是生成的 SQL 语句是这样的 (下面的 query 是我在源代码添加的一行 print 语句打印的):>>> User.objects.all().extra(where=["name=%s and password=%s"], params=["test", 'xxxxxx']) query=b"SELECT `user`.`id`, `user`.`name`, `user`.`password`, `user`.`email` FROM `user` WHERE (name='test' and password='xxxxxx') LIMIT 21" <QuerySet [<User: <test>>]>可以看到 extra 将 where 参数放到括号中,为了能注入正确的 SQL语句,就必须要添加 ) 去抵消 # 注释掉的原右括号,这样才能正常执行。到目前位置,我们在 Django 中对 SQL 注入漏洞进行了再现。为了避免 SQL 注入漏洞的方式也比较简单,主要遵循如下两个规则即可:尽量使用 Django 的 ORM 模型提供的方法去操作数据库;不要使用动态拼接 SQL 的方式,而是将 SQL 语句和参数分开放。
- 1. Web 安全简介 Web 安全是个大课题,面对层出不求的黑客漏洞,个人能力很有限制,所以这边介绍一个平台 国家信息安全漏洞共享平台,可以到上面注册个账号,并订阅漏洞信息报送。针对各类漏洞笔者归类了 3 个方面:1. 注入与欺骗;2. 编程代码逻辑缺陷;3. 服务器问题;
- OpenSSL OpenSSL 是一个开源的软件库,里面包含了SSL协议库、应用程序以及密码算法库。通过这个工具我们可以实现自签名证书,也可以更好的了解证书生成的过程。
openssl漏洞相关搜索
-
oauth
object
object c
objective
objective c
objective c基础教程
objective c教程
objectivec
office visio 2003
offsetof
offsetparent
offset函数
okhttp
on on
on time
onbeforeunload
onblur
onclick
oncontextmenu
online