您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Web渗透的基础知识
LOGOWeb渗透的基础知识培训目录3.Web渗透带来的危害2.Web渗透的常用手法1.为什么要重视Web安全?为什么要重视Web安全?现在很多企业,政府,学校都在互联网上建立自己的平台,比如企业的进销存,OA系统还有邮件系统;政府的电子政务,学校有教务系统等。包括现在很多的运营商也是对web安全越来越重视,他们会把扫出的漏洞纳入到考核扣分。而在现实世界中,针对网站的攻击愈演愈烈,频频得手。为什么要重视Web安全?国家互联网应急中心截图为什么要重视Web安全?Web攻击趋于简单化工具化Web渗透的常用手法Sql注入的介绍与演示1XSS的原理与演示2验证不充分漏洞3遍历目录漏洞456弱口令、社会工程学7第三方系统的漏洞Webshell介绍常见Web攻击方法Web漏洞扫描构造恶意输入(SQL注入攻击、命令注入攻击、跨站脚本攻击)网页爬行暴力猜解、弱口令社会工程学错误信息利用根据系统现有版本寻找现有的攻击代码利用服务器配置漏洞文件上传下载逻辑缺陷.........................Sql注入原理介绍定义:由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。原因分析其本质是对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。SQL注入演示(一)管理员程序员考虑的场景:age:20SELECTname,age,locationFROMUsersWHEREage20程序员未预料到的结果……age:1000000unionselectname,age,passwordfromusersSELECTname,age,locationFROMUsersWHEREage999unionselectname,age,passwordfromusersFact:大多数程序员都注意到了’的问题,他们用’’来代替用户输入的’,从而防止字符串SQL注入;但很多人缺忽略了同样严重的数字注入问题。其防范方法是检查用户输入的数字是否合法。Union暴库是常见的注入方法Union语法要求前后两句SQL中Select的数据项类型和数量一致;999是不可能符合的条件,这样union的结果就只剩第二句sql查询的内容SQL注入演示(一)`/login.asp管理员管理员程序员考虑的场景:Username:adminPassword:p@$$w0rdSELECTCOUNT(*)FROMUsersWHEREusername='admin'andpassword='p@$$w0rd'登录成功!程序员未预料到的结果……Username:admin'OR1=1--Password:1SELECTCOUNT(*)FROMUsersWHEREusername='admin'OR1=1--'andpassword='1'SQL注入演示(二)`/login.jsp攻击者登录成功!‘是SQL字符串变量的定界符攻击关键通过定界符成功地将攻击者的意图注入到SQL语句中!通过注释保证SQL语句正确!--是MSSQL的注释符ORACLE:用户名字段中输入:‘or’1‘=’1‘or’1‘=’1或是在密码字段中输入:1'or'1'='1SQL注入防护无论什么脚本语言:asp、.net、php还是jsp……都必须对参数进行过滤:数字型必须int转换;字符型必须过滤或者转义单引号;SQL注入的检测简单流程Sql语句一样,查询方法也一样获取源码Asp/PhpJsp/asp.net反编译搜索sql查询语句存在变量语句Select/update/insert/delete查找变量来源/是否过滤过滤函数是否安全存在注入与否Asp中SQL注入的预防对于用户端输入的任意字符,包括GET提交,POST提交,Cookie提交,SERVER提交的都需要做严格过滤。对于数字型参数判断是否为数字:可用函数isNumeric来判断,返回值为true和false。对于字符型参数过滤单引号,使其无法闭合当前sql语句的单引号。Php中SQL注入的预防(一)确认GPC开启,若没开启则用addslashes函数过滤之,如下代码。if(!get_magic_quotes_gpc()){$lastname=addslashes($_POST['lastname']);}else{$lastname=$_POST['lastname'];}对于数字型参数可使用intval或floatval强制转换为数字型。注意mysql的版本以及默认字符集,Mysql4.1字符集连接字符串:mysql_query(SETcharacter_set_connection=$dbcharset,character_set_results=$dbcharset,character_set_client=binary;);Jsp中SQL注入预防采用jdbc的prepareStatement查询数据库,并且sql语句中不出现参数,如:sqlStr=“selectidfrominfowherecity=?andopen=?orderbyiddesc”;stmt=conn.prepareStatement(sqlStr);stmt.setString(1,city);stmt.setString(2,var1);Asp.net中SQL注入预防使用Ado.net的参数化查询。strSQL=SELECT*FROMOrdersWHERECustomerID=@CustomerID;SqlCommandcmd=newSqlCommand(strSQL,cn);//创建一个sqlcommand对象。//创建新参数,参数绑定cmd.Parameters.AddWithValue(@CustomerID,ALFKI);跨站脚本漏洞(XSS)定义它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。分类持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码)非持久型XSS(Non-persistent),即反射型,它是指那些浏览器每次都要在参数中提交恶意数据才能触发的跨站脚本漏洞。XSS本质是在于执行脚本[javascript/html等],攻击者的js能力越强攻击效果越惊人!持久XSS-攻击简介(PersistentXSS)1.正常服务器信息2.服务器存储恶意代码3.用户浏览网页4.服务器将恶意代码返回给用户5.客户端浏览器执行恶意代码攻击者普通用户客户端Web服务器在论坛发帖子:免费获取Q币!!!script恶意代码/script重要通知Re:沙发!!Re:地板?Re:地下室沙发……Re:地下室地板-_-!!Re:免费获取Q币!!!内容:script恶意代码/scriptRe:谁又发垃圾广告啦?恶意代码执行!21345持久XSS攻击实验(一)Step1.以test用户登录培训论坛发表新帖子,内容如下:scriptalert(‘hello’)/script持久XSS攻击实验Step2.以admin用户登录培训论坛浏览刚才那个新帖子。学员练习3Min恶意代码执行!浏览器浏览器Outlook正常访问恶意代码隐藏在链接中“reflected”代码1反射XSS-攻击简介(ReflectedXSS)From:攻击者To:用户免费赠送Q币!!!CLICKHERE恶意代码安全上下文:目标站点普通合法会话安全上下文:目标站点攻击者Web服务器普通用户客户端12345恶意代码执行!反射XSS攻击实验(一)Step1.以test用户登录培训论坛发表新帖子,在浏览器网址处修改Forum_Title参数,观察结果:学员练习3MinURL中的字符通过服务器“反射”到浏览器中反射XSS攻击实验(二)Step1.把Forum_Title修改为:scriptalert(‘hello’)/script学员练习3MinURL中的字符通过服务器“反射”到浏览器中恶意代码执行!XSS包括两种类型:持久式XSS:恶意代码持久保存在服务器上。即Persistent。反射式XSS:恶意代码不保留在服务器上,而是通过其他形式实时通过服务器反射给普通用户。XSS漏洞可利用的标志就是“Hello!”,一旦示意代码可以在用户的浏览器中执行,其后可实现的攻击行为与来源是持久还是反射无关。可以利用XSS发起CSRF攻击或盗取用户身份。XSS:两种类型总结验证不充分之上传漏洞介绍导致该漏洞的原因在于代码作者没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。允许上传可执行文件使用客户端JS验证上传文件类型使用黑名单限制上传文件类型文件名/存储目录名可自定义文件名中特殊字符处理不当验证不充分之上传漏洞实例PublicFunctionGetFileExt(FullPath)’提取文件后缀IfFullPathThenresponse.writeFullPathGetFileExt=LCase(Mid(FullPath,InStrRev(FullPath,.)+1))ElseGetFileExt=EndIfEndfunction上面这段代码是获取上传文件后缀upfile.NoAllowExt=“asp;exe;htm;asa;cer;php;jsp;html;aspx;cs;vb;js;”‘设置上传类型的黑名单这是设置了不能上传的文件类型注:InStrRev:返回某字符串在另一个字符串中最后出现的位置验证不充分之文件包含漏洞定义文件包含漏洞,如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式验证不充分之文件包含漏洞演示(一)if($_GET[page]){include$_GET[page];}else{includehome.php;}上面这段代码的使用格式可能是这样的:=main.php或者=downloads.php,结合上面代码,简单说下怎么运作的:1.提交上面这个URL,在index.php中就取得这个page的值($_GET[page])。2.判断$_GET[page]是不是空,若不空(这里是main.php)就用include来包含这个文件。3.若$_GET[page]空的话就执行else,来includehome.php这个文件。验证不充分之文件包含漏洞演示(二)if($_GET[page]){include$_GET[page];}else{includehome.php;}如果目标主机的“allow_url_fopen”是激活的(默认是激活的,没几个人会修改),我们就可以有更大的利用空间,我们可以指定其它URL上的一个包含PHP代码的webshell来直接运行。利用方式:=遍历目录漏洞1、程序问题2、服务器配置问题遍历目录演示(一)注:=1&dir=../遍历目录
本文标题:Web渗透的基础知识
链接地址:https://www.777doc.com/doc-2867174 .html