跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码

上传人:F****n 文档编号:99771617 上传时间:2019-09-20 格式:DOC 页数:20 大小:109KB
返回 下载 相关 举报
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码_第1页
第1页 / 共20页
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码_第2页
第2页 / 共20页
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码_第3页
第3页 / 共20页
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码_第4页
第4页 / 共20页
跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码》由会员分享,可在线阅读,更多相关《跨站脚本攻击-sql注入-web脚本攻击-网页挂马-详细过程及主要代码(20页珍藏版)》请在金锄头文库上搜索。

1、Web安全目录一、什么是Web安全 二、Web安全威胁日趋严重的原因 三、常见的WEB安全攻击种类 四、WEB应用防火墙 五、梭子鱼WEB应用防火墙技术一览 1. 1、全面的Web站点防护 2. 2、领先的流量管理及加速技术一、什么是Web安全 二、Web安全威胁日趋严重的原因 三、常见的WEB安全攻击种类 1. 1、全面的Web站点防护 2. 2、领先的流量管理及加速技术展开一、什么是Web安全随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵

2、而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这也使得越来越多的用户关注应用层的安全问题,对Web应用安全的关注度也逐渐升温。 二、Web安全威胁日趋严重的原因目前很多业务都依赖于互联网,例如说网上银行、网络购物、网游等,很多恶意攻击者出于不良的目的对Web 服务器进行攻击,想方设法通过各种手段获取他人的个人账户信息谋取利益。正是因为这样,Web业务平台最容易遭受攻击。同时,对Web服务器的攻击也可以说是形形色色、种类繁多

3、,常见的有挂马、SQL注入、缓冲区溢出、嗅探、利用IIS等针对Webserver漏洞进行攻击。 一方面,由于TCP/IP的设计是没有考虑安全问题的,这使得在网络上传输的数据是没有任何安全防护的。攻击者可以利用系统漏洞造成系统进程缓冲区溢出,攻击者可能获得或者提升自己在有漏洞的系统上的用户权限来运行任意程序,甚至安装和运行恶意代码,窃取机密数据。而应用层面的软件在开发过程中也没有过多考虑到安全的问题,这使得程序本身存在很多漏洞,诸如缓冲区溢出、SQL注入等等流行的应用层攻击,这些均属于在软件研发过程中疏忽了对安全的考虑所致。 另一方面,用户对某些隐秘的东西带有强烈的好奇心,一些利用木马或病毒程序

4、进行攻击的攻击者,往往就利用了用户的这种好奇心理,将木马或病毒程序捆绑在一些艳丽的图片、音视频及免费软件等文件中,然后把这些文件置于某些网站当中,再引诱用户去单击或下载运行。或者通过电子邮件附件和QQ、MSN等即时聊天软件,将这些捆绑了木马或病毒的文件发送给用户,利用用户的好奇心理引诱用户打开或运行这些文件。 三、常见的WEB安全攻击种类1、SQL注入:即通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。 2、跨站脚

5、本攻击(也称为XSS):指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。 3、网页挂马:把一个木马程序上传到一个网站里面然后用木马生成器生一个网马,再上到空间里面,再加代码使得木马在打开网页里运行。 sql注入所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击目录sql注入 1.

6、什么时候最易受到sql注入攻击 2. 如何防止SQL注入注入大致方法: 1. 方法1 2. 方法2 3. 方法3 4. 小结常用sql注入语句sql注入 1. 什么时候最易受到sql注入攻击 2. 如何防止SQL注入注入大致方法: 1. 方法1 2. 方法2 3. 方法3 4. 小结常用sql注入语句sql注入什么时候最易受到sql注入攻击当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通

7、过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。 如何防止SQL注入归纳一下,主要有以下几点: 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双-进

8、行转换等。 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装 6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。 注入大致方法:方法1先猜表名 And (Select count(*) from 表名)0 猜列名 And (Sel

9、ect count(列名) from 表名)0 或者也可以这样 and exists (select * from 表名) and exists (select 列名 from 表名) 返回正确的,那么写的表名或列名就是正确 这里要注意的是,exists这个不能应用于猜内容上,例如and exists (select len(user) from admin)3 这样是不行的 现在很多人都是喜欢查询里面的内容,一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容 获得数据库连接用户名:;and user0 方法2后台身份验证绕过漏洞 验证绕过漏洞就是or=or后台绕过漏洞,

10、利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误 例如管理员的账号密码都是admin,那么再比如后台的数据库查询语句是 user=request(user) passwd=request(passwd) sql=select admin from adminbate where user=&user& and passwd=&passwd& 那么我使用or a=a来做用户名密码的话,那么查询就变成了 select admin from adminbate where user=or a=a and passwd=or a=a 这样的话,根据运算规则,这里一共有4个查询语句,那么查询

11、结果就是 假or真and假or真,先算and 再算or,最终结果为真,这样就可以进到后台了 这种漏洞存在必须要有2个条件,第一个:在后台验证代码上,账号密码的查询是要同一条查询语句,也就是类似 sql=select * from admin where username=&username&passwd=&passwd& 如果一旦账号密码是分开查询的,先查帐号,再查密码,这样的话就没有办法了。 第二就是要看密码加不加密,一旦被MD5加密或者其他加密方式加密的,那就要看第一种条件有没有可以,没有达到第一种条件的话,那就没有戏了 方法3防御方法 对于怎么防御SQL注入呢,这个网上很多,我这里讲几个

12、 如果自己编写防注代码,一般是先定义一个函数,再在里面写入要过滤的关键词,如select ; “”;form;等,这些关键词都是查询语句最常用的词语,一旦过滤了,那么用户自己构造提交的数据就不会完整地参与数据库的操作。 当然如果你的网站提交的数据全部都是数字的,可以使用小竹提供的方法 Function SafeRequest(ParaName,ParaType) - 传入参数 - ParaName:参数名称-字符型 ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符) Dim ParaValue ParaValue=Request(ParaName) If Para

13、Type=1 then If not isNumeric(ParaValue) then Response.write 参数 & ParaName & 必须为数字型! Response.end End if Else ParaValue=replace(ParaValue,) End if SafeRequest=ParaValue End function 然后就用SafeRequest()来过滤参数 ,检查参数是否为数字,不是数字的就不能通过。 小结SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与

14、“菜鸟”的根本区别。常用sql注入语句1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等. and 0(select count(*) from *) and 0(select count(*) from admin) -判断是否存在admin这张表 3.猜帐号数目 如果遇到0 返回正确页面 1返回错误页面说明帐号数目就是1个 and 0(select count(*) from admin) and 10)- and 1=(select count(*) from admin where len(用户字段名称name)0) and 1=(select count(*) from admin where len(密码字段名称password)0) 5.猜解各个字段的长度 猜解长度就是把0变换 直到返回正确页面为止 and 1=(select count(*) from admin where len(*)0) and 1=(select

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号