常见漏洞原理、利用方式及修复方式----SQL注入及XSS

SQL注入

A、原理:

(1)将SQL语句插入或添加到应用(用户)的输入参数中,再将这些参数传递给后台的SQL服务器加以解析并执行。
(2)刚开始接触sqli,首先我们得明白常见的web架构是怎么样的,通俗点来说,也就是所有的浏览器通过表示层来访问一个网站,其具体的工作流程是什么样的?
流程:浏览器发起一个请求,并将请求交给服务器,服务器当中运行着Apache\Nginx等中间件来解析请求,当对请求中的网站进行解析的时候,需要用到解析脚本(ASP\PHP\JSP.NET),而存储层的东西是不能直接使用的,所以就出现了逻辑层,由逻辑层来从存储层当中取东西。
在这里插入图片描述 明白了整体的web架构,那么也就很容易地理解sqli的原理操作了,就是sqli所有的操作都是在表示层,通过构造恶意的sql语句,然后对存储层的数据服务器进行恶意的操作,然后这个恶意的操作是由逻辑层来干的。

B、利用方式:

(1)Union注入
(2)盲注 //分为延时盲注和布尔盲注
(3)报错注入
(4)堆叠查询
(5)宽字节注入
(6)HTTP参数污染注入

C、常见的mysql函数
函数名称
user()用户名
system_user()系统用户名
current_user()当前用户名
database()当前数据库名字
@@datadir数据库路径
@@version_compile_os操作系统信息
length()字符串长度
substring() \ substr()截取字符
mid(m,n)需要截取的字符串,从第几位开始截取
left()需要截取的字符串,取几位
concat()无分割拼接字符串,意思就是拼接时中间不出现空格
concat_ws()含分割拼接字符串
group_concat()连接一组字符串(结果放在同一行)
ord() \ ascii()由字符推出ascii值,例如ord(‘a’)
char()由ascii码反推对应的字符
hex()十六进制形式
md5()针对字符串进行md5加密
floor()向下取整
rang()生成一个0~1之间的浮点数
hex()将字符转换成十六进制值
unhex()由十六进制值反推出字符
D、SQL注入成功条件
  1. 读文件操作:
    (1)知道文件的绝对路径
    (2)能使用union查询
    (3)web目录需要拥有写权限
  2. 写文件操作:
    (1)文件名必须绝对路径
    (2)对文件具有写权限
    (3)对单引号 ’ 未过滤
E、修复方式:
  • SQL语句预编译
  • 针对SQL输入内容进行限制、过滤 //目前使用WAF对这一块进行处理
  • 针对提交的关键数据进行转义 ,比如\select
  • 关闭错误信息输出 ,因为有些错误返回信息,会返回物理路径、数据库版本信息等
  • 数据库权限严格控制 ,不同级别的用户,只能进行相应级别权限的操作
  • 敏感信息严格加密处理

XSS

A、介绍:

跨站脚本(Cross-site Scripting,因与CSS较相像,故简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意攻击者将代码注入网页,其他用户在浏览网页时就会受到影响。恶意用户利用XSS代码攻击成功后,可能得到很高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

B、原理
  1. 反射型XSS
    反射型XSS又称为非持久型XSS,该类型的攻击方式特点是一次性的。
    攻击链:攻击者通过电子邮件、广告投送等方式将包含XSS代码的恶意链接发送到目标用户。当目标用户点击访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送到目标用户的浏览器,浏览器接收并解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞,返回攻击者想要的敏感数据。
  2. 存储型XSS
    存储型XSS又称为持久型XSS,攻击脚本只要未被发现,就会永久地保存在目标服务器的数据库或者文件当中,具有非常高的隐蔽性。
    攻击链:这种类型的攻击多常见于论坛、博客和留言板,只要是能够输入信息的地方都存在风险,攻击者在发帖子或者留言的过程中,将恶意脚本连同正常信息一起写到帖子的内容当中,随着帖子被服务器存储下来,其中的恶意脚本也永远地存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。
    例如,攻击者在留言版中拼接以下代码
i like this book<script>alert(/hello_hacker/)</script>
  • 当其他用户访问留言板时,就会在页面中弹出一个弹窗。由此而知,存储型XSS的攻击方式能够将恶意代码永久地嵌入到一个页面当中,所有成功访问这个页面的用户都将成为受害者
  • 相对来说,如果我们能够谨慎对待不明链接,那么反射型XSS攻击将不会有多大的效果,但相反,存储型XSS所形成的危害相对较大,它会注入在一些我们比较信任的页面,无论我们防范意识多强,只要一成功加载,就会遭受攻击。
  1. DOM型XSS
    DOM全称为Document Object Model,使用DOM可以使程序和脚本能够动态访问及更新文档结构、内容及样式。
    攻击链:用户请求一个经过专门设计的url,它由攻击者提交,而且其中包含XSS代码。服务器在响应中不会以任何形式包含攻击者的脚本。只有当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。
    DOM型XSS的漏洞原理,最核心的在于它是基于DOM文档对象模型的一种漏洞。
    在HTML中,其标签都是节点,而这些节点构成了DOM的整体结构——节点树。通过HTML DOM,树中的所有节点均可以通过JavaScript进行访问。其中所有的HTML元素(节点)均可被修改,也可以创建以及删除节点。
    HTML DOM树结构如下图所示:在这里插入图片描述
  • 在网站页面中有许多的元素,当浏览器接收到页面时,浏览器就会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以利用JS脚本对文档对象进行编辑,从而修改页面的元素。由此看来,客户端的脚本程序可以通过DOM动态修改页面内容,进而从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端进行交互,它只发生在客户端处理数据的阶段,就此,DOM型XSS相对来说利用的很少,甚至几乎无用。
  • 总的来说,大部分的攻击最主要都是围绕着获取目标数据库中的内容而展开的,若没有与数据库产生更多交互的攻击方式,能够用到的机会就很少。
C、利用方式
  1. 反射型XSS攻击
    反射型的XSS攻击最大的特点,就是对搜索框、登录框进行弹窗,是一种非持久性的攻击,也就是攻击了一次就结束了。模拟反射型XSS攻击的话,我们可以利用DVWA平台进行演示操作。
    下面为针对URL使用的插入语句
xxx.xxx.xxx.xxx/dvwa/vulnerabilities/xss_d/?default=English<script>alert(/xss/)</script>

这里所使用到的HTML标签是< script >,一般常用于XSS的HTML标签为

标签名称主要用途
< script >定义客户端脚本
< img >定义HTML页面中的图像
< iframe >iframe 元素会创建包含另外一个文档的内联框架(即行内框架)

在这里插入图片描述能够造成页面弹窗的原因,是因为在浏览器渲染整个页面的时候,会执行这条<script>alert(/xss/)<script>语句,其中的JS函数alert()导致浏览器进行弹窗,并显示“xss”字样。

  1. 存储型XSS攻击
    存储型XSS攻击所实现的功能是:获取用户所输入的留言信息、标题及内容,然后将输入的信息插入到数据库当中,并将数据库的留言信息输出到页面上,就此利用DVWA页面来复现XSS stored漏洞。
    漏洞利用的关键插入语句:
<img src=1 onerror=alert(/想要返回的内容/)>

(1)抓取数据包进行修改
在这里插入图片描述
(2)将POST数据包中data部分的txtName参数内容test修改为<img src=1 oneerror=alert(/test_xss_stored/)>,其目的在于利用图片报错信息来嵌入一段XSS代码,达到持久化的作用。
在这里插入图片描述
(3)再次访问页面,发现存储型XSS生效了
在这里插入图片描述

D、防御手段
  • 针对输入、URL的敏感参数进行过滤
  • 针对输出内容进行编码
  • 白名单
  • 黑名单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值