用户登录,输入用户名,密码'or'1'='1,如果此时使用参数构造方法,则会出现
* 来自名称 = '' 且 = '' 或 '1'='1' 的用户
不管用户名和密码是什么,查询到的用户列表都不为空,如何利用预编译来防止SQL注入攻击是必要的,但一般我们会同时从两个方面入手。
网页
1)有效性检验。
2)限制字符串输入的长度。
1)不需要连接SQL字符串。
2)使用预编译的。
3)有效性检查。(为什么服务器要做有效性检查?第一原则就是外界不可信任,防止攻击者绕过Web请求)
4)过滤掉SQL所需参数中的特殊字符,如单引号,双引号。
5. RCE 1. RCE 概述(/code)
RCE漏洞允许攻击者直接向后端服务器远程注入操作系统命令或代码,从而控制后端系统。
远程系统命令执行
该类漏洞通常是因为应用系统设计时为用户提供了指定的远程命令操作接口而产生的。
例如常见的路由器、防火墙、入侵检测设备的Web管理界面,一般都会为用户提供一个Ping操作的Web界面,用户从Web界面输入目标IP,提交后,后台会对该IP地址进行Ping测试,并返回测试结果。但如果设计者在完成该功能时没有进行严格的安全控制,可能会导致攻击者通过该界面提交“意想不到”的命令,让后台执行,从而控制整个后台服务器。
例如:127.0.0.1 &
现在很多甲方公司已经开始推行自动化运维,大量的系统操作会通过“自动化运维平台”进行。而在这个平台上,经常会出现远程系统命令执行的漏洞。不信的话,你现在就可以找到自己运维部门的系统来测试一下,会有意想不到的“收获”。
() 用于执行用户转账的命令
远程代码执行
同样的,由于需求设计,后端有时候会把用户输入当做代码的一部分来执行,这就产生了远程代码执行漏洞。无论是使用代码执行函数,还是使用不安全的反序列化等。
所以如果需要给前端用户提供可操作的API接口,一定要对接口输入的内容进行严格的判断,比如实行严格的白名单策略会是一个比较好的方法。
eval() 用于执行用户发送的代码
6. 文件包含漏洞 1. 概述
文件包含是一个功能,各种开发语言都提供了内置的文件包含功能,可以让开发者在一个代码文件中直接(导入)另一个代码文件。
例如,在 PHP 中,它提供:
(),()
(),()
除错误处理外,语法相同:
这些文件包含代码设计中经常使用的函数。
在大多数情况下,文件包含函数中包含的代码文件都是固定的,因此不会存在安全问题。但是有时候,文件中包含的代码文件被写成一个变量,而这个变量可以由前端用户传入。这种情况下,如果没有做足够的安全考虑,就可能造成文件包含漏洞。攻击者会为包含函数指定一个“意想不到的”文件来执行,从而造成恶意操作。根据配置环境的不同,文件包含漏洞分为以下两种情况:
**1.本地文件包含漏洞:**只能包含服务器上的本地文件。由于服务器上的文件不受攻击者控制,这种情况下,攻击者会更有可能包含一些固定的系统配置文件,以读取敏感的系统信息。很多情况下,本地文件包含漏洞会和一些特殊的文件上传漏洞结合起来,形成更大的威力。
保护措施:设置白名单(若使用“||”设置功能)
**2.远程文件包含漏洞:**通过URL地址包含远程文件意味着攻击者可以传入任意代码。这种情况没什么好多说的,只要做好受害的准备就行。因此在Web应用系统的功能设计上,尽量不要让前端用户直接将变量传递给包含函数。如果不得不这么做,也要实施严格的白名单策略进行过滤。
前提条件:需要php.ini配置如下
= on //默认打开
= on //默认关闭
危害:一句话木马等文件可直接传播,导致客户端被控制。
2. 预防措施
(1)在功能设计上,尽量不要将包含相应功能的文件放入整个中进行选择和操作;
(2)过滤各种.../.../,,
(3)配置php.ini配置文件
=关闭
=关闭
=on //gpc 已开启
(4)通过白名单策略,只允许包含并运行指定的文件,其它全部禁止;
7. 不安全的文件下载和上传 1. 文件下载
很多网站都提供了文件下载功能,即用户可以点击下载链接来下载该链接对应的文件。但是如果文件下载功能设置不当,可能会导致攻击者构造文件路径而永远无法获取后端服务器上的其他敏感文件(又称任意文件下载)。
防范措施
(1)严格过滤和限制传入的文件名
(2)严格限制文件下载的目录
2.文件上传
由于业务功能需要,很多网站都有文件上传接口,比如:
(1)注册时上传头像图片(如jpg、png、gif等);
(2)上传文件附件(doc、xsl等);
但由于在开发后端时,文件上传功能没有考虑安全性或者措施不完善,导致攻击者可以绕过安全措施,上传一些恶意文件(如一句话木马),然后通过访问恶意文件,实现对整个Web后端的控制。
3.文件上传漏洞测试流程
(1)按要求上传文件,并检查返回结果(路径,提示等)
(2)尝试上传不同类型的“恶意”文件,例如xx.php文件,并分析结果;
(3)检查HTML源代码,看是否通过JS在前端设置了上传限制,可以绕过;
(4)尝试使用不同的方法绕过;黑名单和白名单绕过/MIME 类型绕过/目录 0x00 截断绕过等;
(5)猜测或者结合其他漏洞(如敏感信息泄露)获取木马路径并连接测试
防范措施
(1)前端不使用js实现上传策略
(2)限制通过服务器上传文件
执行多项组合检查:如文件大小、路径、扩展名、文件类型、文件完整性,或设置文件后缀白名单。
上传的文件存储到服务器时重命名(指定合理的命名规则)
对文件上传到服务器的目录实施权限控制(如只读),以限制因剥夺权限而造成的危害。
8. 超越权限
由于缺乏对用户权限的严格判断,低权限账户(如普通用户)可以完成高权限账户(如超级管理员)范围内的操作。
1. 水平延伸
用户A与用户B属于同一级别的用户,但彼此之间不能操作对方的个人信息,如果用户A超越自己的权限操作用户B的个人信息,则称为并行越权操作。
2. 垂直延伸
用户A的权限比用户B高,用户B的权限超出用户A的情形,就称为垂直权限覆盖。
3.修复建议9.PHP反序列化1.()
序列化简单地说就是将对象变成可以传输的字符串。例如,以下是一个对象:
class S{
public $test="pikachu";
}
$s=new S(); //创建一个对象
serialize($s); //把这个对象进行序列化
序列化后得到的结果是这个样子的:O:1:"S":1{s:4:"test";s:7:"pikachu";}
O:代表object
1:代表对象名字长度为一个字符
S:对象的名称
1:代表对象里面有一个变量
s:数据类型
4:变量名称的长度
test:变量名称
s:数据类型
7:变量值的长度
pikachu:变量值
2. 反序列化()
就是将序列化后的字符串还原为一个对象,然后在下面的代码中继续使用。
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
echo $u->test; //得到的结果为pikachu
常见的几个魔法函数:
__construct()当一个对象创建时被调用
__destruct()当一个对象销毁时被调用
__toString()当一个对象被当作一个字符串使用
__sleep() 在对象在被序列化之前运行
__wakeup将在序列化之后立即被调用
漏洞举例:
class S{
var $test = "pikachu";
function __destruct(){
echo $this->test;
}
}
$s = $_GET['test'];
@$unser = unserialize($a);
payload:O:1:"S":1:{s:4:"test";s:29:"";}
10. xee漏洞 1.概述
“XML 外部实体注入漏洞”。
总结一下就是“攻击者向服务器注入指定的XML实体内容,导致服务器无法按照指定的配置执行,从而产生问题”。也就是服务器在没有进行严格的安全控制的情况下接收并解析用户发送的XML数据,从而产生XML外部实体注入。
2. 预防措施
1.使用开发语言提供的方法禁用外部实体
2. 过滤用户提交的XML数据
关键词:11.ssrf漏洞 1.概述
SSRF(-Side :服务器端请求伪造)是攻击者构造的一种安全漏洞,用于向服务器发起请求。利用有权限的服务器,攻击者可以对没有权限的服务器进行攻击。
2. 保护措施
1. 对返回信息进行过滤,如果Web应用要获取某类文件,需要先验证返回信息是否符合标准,再将返回结果展示给用户。
2、统一错误信息,避免用户根据错误信息判断远程服务器的端口状态。
3.限制请求的端口,例如80、443、8080、8090。
4. 禁用不常见的协议,只允许 http 和 https 请求。这可以防止 file:///、://、ftp:// 等引起的问题。
5.使用DNS缓存或主机白名单。
12. 目录遍历(…/…/) 1. 概述
在Web功能设计中,我们经常需要将需要访问的文件定义为变量,以使前端功能更加灵活。当用户发起前端请求时,请求的文件的值(如文件名)会传递给后端,后端再执行相应的文件。在这个过程中,如果后端对前端传入的值没有做严格的安全考虑,攻击者就有可能通过诸如“…/”之类的手段,让后端打开或者执行一些其他的文件,从而导致后端服务器上其他目录下的文件被遍历,形成目录遍历漏洞。
13. 敏感信息泄露
由于后端人员的疏忽或设计不当,一些不应该被前端用户看到的数据可以被轻易访问。
例如:
—通过访问URL下的目录,可以直接列出目录下的文件;
—输入错误的URL参数后,错误信息中包含操作系统、中间件、开发语言或其他信息的版本;
—前端源代码(html、css、js)中含有敏感信息,例如后端登录地址、内网接口信息,甚至账号密码;
在类似上述情况下,我们就泄露了敏感信息。
14. URL 重定向 1. 概述
任何进行 URL 重定向的地方都可能出现不安全的 URL 重定向,如果后端不做任何判断就将前端传入的参数(可能是用户参数,也可能是前端页面中预先嵌入的 URL 地址)作为重定向目的地,那么就可能出现“跳转到错误对象”的问题。
2. 危害
–>钓鱼,就是攻击者利用存在漏洞的一方的域名(比如知名的公司域名往往会让用户安心点击)作为掩护,但最终跳转的确实是钓鱼网站。
3. 预防措施
白名单限制
目录,可以直接列出目录中的文件;
—输入错误的URL参数后,错误信息中包含操作系统、中间件、开发语言或其他信息的版本;
—前端源代码(html、css、js)中含有敏感信息,例如后端登录地址、内网接口信息,甚至账号密码;
在类似上述情况下,我们就泄露了敏感信息。
14. URL 重定向 1. 概述
任何进行URL重定向的地方都可能出现不安全的URL重定向,如果后端不做任何判断就把前端传入的参数(可能是用户参数,也可能是前端页面中预先嵌入的URL地址)作为重定向目的地,那么就可能出现“跳转到错误对象”的问题。
2. 危害
–>钓鱼,就是攻击者利用存在漏洞的一方的域名(比如知名的公司域名往往会让用户安心点击)作为掩护,但最终跳转的确实是钓鱼网站。
3. 预防措施
白名单限制
扫一扫在手机端查看
-
Tags : web漏洞
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。