web安全
安全测试
安全测试
Burpsuite/Fiddler/Charlesproxy
Httpfox/Hackbar/User Agent Switcher/Poster
Curl
Sqlmap
入侵演练
DVWA/WebGoatWebGoat
反病毒
clamAV、Rootkit Hunter
漏洞扫描
openvas、nessus、appscan、wvs、netsparker
入侵检测
AIDE/tripwire
前端漏洞
任意重定向;
点击劫持;
XSS;
CSRF;
任意重定向
Web应用程序经常将用户重定向和转发到其他网页和网站,并且利用不可信的数据去判定目的页面。
如果没有得到适当验证,攻击者可以重定向受害用户到钓鱼软件或恶意网站,或者使用转发去访问未授权的页面。
危害:钓鱼过 URL安全扫描 数据泄露
限制重定向范围(白名单)
t.cn,内部引入URL安全扫描(黑名单)
<?php
//某厂页面
header(‘location:’.$_GET[‘url’]);
<?php
$urlData = parse_url($_GET['url']);
if(substr($urlData['host'],-10) =='.baidu.com') {
header('location:'.$_GET['url']);
}
点击劫持
点击劫持,clickjacking,也被称为UI-覆盖攻击。这个词首次出现在2008年,是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼首创的。
它是通过覆盖不可见的框架误导受害者点击。
虽然受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。
劫持用户的点击行为,引诱用户做操作
示例:
<iframe src=http://weibo.com/taogogo style=opacity: 0;>
No frame
X-Frame-Options:Deny
window.confirm()
错误的:
<script>if (top!=self) top.location.href=self.location.href</script>
破解:
<script>window.onbeforeunload = function(){return “取消保平安";}</script><iframe src="http://weibo.com">
if (top.location.hostname !== self.location.hostname) { alert("您正在访问不安全的页面,即将跳转到安全页面!"); top.location.href = self.location.href; }
XSS
当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击(简称XSS)。
XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持用户会话、危害网站、或者将用户转向至恶意网站。
本质是浏览器端代码注入,恶意script代码被浏览器解析。
分类:反射、存储
script:JS、VBScript、flash、ie的css
XSS防御
转义标签(htmlspecialchars)
限制字符(preg_match)
过滤(preg_replace)
现代浏览器识别xss防御header(X-XSS-Protection)
http only
HTML Purifier(XSS消毒类库)
Twig(模板引擎)
CSRF 跨站请求伪造攻击
一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的web应用程序。
这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。
本质:劫持用户身份凭据,发送伪造请求
特殊:JSON/JavaScript Hijacking/SSRF
CSRF防御
Csrf token
Referer
验证码
重登陆
验证短信
邮件验证码
多因子值
后端漏洞
1、注入漏洞;
2、访问控制相关漏洞;
3、命令执行漏洞;
4、文件上传下载漏洞;
5、敏感信息泄露;
6、隐藏的机关
注入攻击漏洞,例如SQL,OS 以及 LDAP注入。这些攻击发生在当不可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据
本质是查询语句过滤不严导致的非法执行。
最常见的是SQL注入
分类:数字型、字符型
其他:Mongodb(execute)、Redis(config set save)
权限控制失效
泄露/丢失数据
读写文件
执行命令
严格限制数据库操作权限
白/黑名单过滤
转义
参数绑定mysqli::bind_param()/PDO::bindParam()
注意POST/GET/SERVER/COOKIE
注意编码转换的问题
5.3.6需PDO::setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
SQL注入利器sqlmap
强大的注入工具,既能防身又能砍人
支持多种数据库注入、多样的配置,可以直接脱裤、获取shell、内置Google Hack工具。
sqlmap -u
Sqlmap –h
访问控制漏洞
大多数Web应用程序在功能在UI中可见以前,验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求以在未经适当授权时访问功能。
越权
分类
假象
横向
纵向
权限控制形同虚设
越权
提权
不要障眼法
权限越严格越好
增加内网访问或ip白名单
增加系统审计日志
命令执行漏洞
由于开发人员编写源码,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端执行。命令注入攻击中WEB服务器没有过滤类似system(),eval(),exec()等函数是该漏洞攻击成功的最主要原因。
命令执行漏洞的成因
执行了不该执行的命令
分类
命令注入
解析漏洞
远程包含
命令执行漏洞的危害
合法后门
控制服务器
获取数据
修改代码
防御
过滤参数,限制输入
保证软件或框架的更新(OWASP Top 10之使用包含漏洞的软件或库)
禁用/不使用安全函数:
Escapeshellarg(针对shell)
如exec(),passthru(),proc_open(),shell_exec(),system(),popen()…
文件上传下载漏洞
一般情况下文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。文件下载漏洞是指,用户通过构造特殊请求,能够在未经许可的情况下,下载服务器的系统或应用程序文件或代码。
成因
权限控制问题
文件类型判断不严
读写文件缺陷
危害
直接拿webshell
间接拿webshell
系统数据泄露
隐私泄露
防御
分开部署
上传文件不给于可执行权限
严格限制路径、控制访问权限
敏感信息泄露
许多Web应用程序没有正确保护敏感数据,如信用卡,税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取,或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施
成因
本质是安全素质低…
分类:使用有缺陷的*、配置不当、操作不规范
示例:
Apache 列目录
.svn/entries, .git/config
PHP彩蛋
www.zip
Demo!
危害
用户数据泄露
配置与架构信息泄露
源码泄露
防御
安全配置
加密传输
加密存储
SDL
来源:https://www.cnblogs.com/weizaiyes/p/8202907.html