web编程常见漏洞与检测67305

上传人:t****d 文档编号:243017155 上传时间:2024-09-13 格式:PPT 页数:33 大小:163KB
返回 下载 相关 举报
web编程常见漏洞与检测67305_第1页
第1页 / 共33页
web编程常见漏洞与检测67305_第2页
第2页 / 共33页
web编程常见漏洞与检测67305_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Web编程常见漏洞与检测,1,Web漏洞检测,白盒检测,对检测者的要求:,能读懂用此语言写的程序,明白漏洞成因,漏洞挖掘经验,常用的web脚本语言:Asp/Php/Jsp/,2,常见的web漏洞,sql注入,文件上传,cookie欺骗,XSS攻击,文件包含,其他,3,Sql注入及其危害,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。,分为字符型注入和数字型的注入,由于编程语言不同,所存在的注入类型也不同。,危害:,-非法查询其他数据库资源,如管理员帐号。,-执行系统命令,-获取服务器root权限,4,Sql注入原理,Test.asp文件,代码片段:,sqlStr = “select * from,n_user,where,username,=,”,&username&,”, and password=“&password&”,rs,= conn.,execute,(sqlStr),正常的查询:test.asp?username=test&password=123,sqlStr = “select * from,n_user,where,username,=,test and password=123“,使password=123 or 1=1:,Sql语句到数据库后:,sqlStr = “select * from,n_user,where,username,=,test and password=123 or 1=1“,Or 1=1始终成立。,5,Asp表现,存在数字型和字符型注入。,(A) 数字型 字段=51,Select * from 表名 where 字段=51,构造参数:ID=49 And 查询条件,生成语句:,Select * from 表名 where 字段=49 And 查询条件,(B)字符型的另一种形式,搜索语句:Select * from 表名 where 字段like %关键字%,构造参数:keyword= and 查询条件 and %25=,生成语句:,Select * from 表名 where字段like % and 查询条件 and %=%,6,Asp注入的预防,对于用户端输入的任意字符,包括GET提交,POST提交,Cookie提交,SERVER提交的都需要做严格过滤。,对于数字型参数判断是否为数字:可用函数isNumeric来判断,返回值为true和false。,对于字符型参数过滤单引号,使其无法闭合当前sql语句的单引号。,例外:base64编码,Sql通用防注入,7,Php中的表现,Php的魔术引号(magic_quotes_gpc ) 。,php.ini-dist 默认是开启此功能。如果安装php时使用此文件,将不会产生字符型注入,主要是数字型注入。,数字型注入:,select * from guess where id=“.$id.”,select * from guess where id=$id,8,GPC不起作用的情况,数组,$userid=$_POSTuserid;,for($i=0;$i4.1,字符集连接字符串:,mysql_query(SET character_set_connection=$dbcharset,character_set_results=$dbcharset, character_set_client=binary;);,10,Php注入的预防(二),Php5以上版本Mysqli扩展预防,参数化查询,$city = Amersfoort;/* create a prepared statement */$stmt = $mysqli-prepare(SELECT District FROM City WHERE Name=,?,),$stmt-bind_param(,s,$city,);$stmt-execute();$stmt-bind_result($district);$stmt-fetch();printf(%s is in district %sn, $city, $district);$stmt-close();,11,Jsp 表现,由于java语言是强类型语言,所有变量定义前必须声明其类型,因而仅存在字符型的注入。,字符型注入实例:,String sql = select * from tb_name where name= +varname+ and passwd=+varpasswd+;,stmt = conn.prepareStatement(sql);,构造参数varpasswd值为: or 1 = 1,Sql语句经过解析后将是:,select * from tb_name = 随意 and passwd = or 1 = 1;,12,Jsp预防,采用jdbc的,prepareStatement查询数据库,并且sql语句中不出现参数,如:,sqlStr = “select id from info where city=? and open=? order by id desc”;,stmt = conn.prepare,Statement,(sqlStr);,stmt.setString(1,city);,stmt.setString(2,var1);,13,A表现,开发语言常用的有:和C#,都属于强类型语言,因而只存在字符型注入。,注入原理,与asp的字符型注入一样。,14,A注入预防,使用A的参数化查询。,strSQL = SELECT * FROM Orders WHERE CustomerID = CustomerID;,SqlCommand cmd = new SqlCommand(strSQL, cn);/创建一个sqlcommand对象。,/创建新参数,参数绑定,cmd.Parameters.AddWithValue(CustomerID, ALFKI);,15,sql注入的检测简单流程,Sql语句一样,查询方法也一样。,16,文件上传漏洞,利用当前系统已有的上传功能,比如文件上传,图像上传等的漏洞来上传任意文件或者webshell。,危害:直接上传webshell到服务器,甚至获取服务器root权限。,各种语言表现大同小异。,17,Asp上传漏洞表现,经典的”0”上传任意后缀文件 。,假设:c:nc.exe .bmp, Check the,if right(tFile,4) “.bmp” then exit sub,t &.bmp,Set FSO = Server.CreateObject(Scripting.),Set FSOFile=,FSO.CreateText(Path, tFile),N,C,.,E,X,E,(Nul),.,B,M,P,4E,43,2E,45,58,45,00,2E,42,4D,50,18,Asp上传漏洞预防/检测,检查文件名是否包含0字符。,采用白名单方式允许上传文件类型。,检测关键字:Scripting.,19,Php上传漏洞表现,$imageinfo = getimagesize($_FILESuserfiletmp_name);,if($imageinfomime != image/gif & $imageinfomime != image/jpeg) ,if($_FILESuserfiletype != image/gif) ,echo “仅允许上传GIF和JPEG图片n; exit;,$uploaddir = uploads/;,$uploadfile = $uploaddir . basename($_FILESuserfilename);,if (move_uploaded_file,($_FILESuserfiletmp_name,$uploadfile) ,echo “文件上传成功.n;, else ,echo “上传失败.n;,20,Php上传漏洞预防/检测,检查上传文件名中是否存在.php字符。,采用白名单,仅允许安全的类型,如gif/jpg/rar等,禁止用户自定义文件后缀。,检测关键字:,move_uploaded_,21,Jsp文件上传漏洞/预防/检测,后缀检查不严引起的上传任意文件,主要为jsp和war后缀文件。,采用白名单严格限制上传类型。,检测方法:,(常用的一个jsp开源上传组件),至/WEB-INF/lib/目录下查看相关upload字样的类库,作为关键字搜索。,22,A 文件上传漏洞/预防/检测,A自身提供有上传组件,但默认上传任意后缀文件。,IIS默认解析的后缀名都是不安全的,采用白名单方式上传文件。,检查关键字:,Posted,23,Cookie 欺骗攻击,Cookie:Web服务器存放在客户端计算机的一些信息,主要用来客户端识别或身份识别等。Session,保存在服务器端的。,Cookie欺骗攻击:攻击者通过修改存放在客户端的cookie来达到欺骗服务器认证目的。,修改工具:IECookiesView,24,Cookie攻击原理,If(“登录验证过程”),setcookie(isadmin”,1,time()+3600*24*30);,/登录成功,写入cookie,一个月后失效,用于下次登录。,$admin= $_COOKIE“isadmin;,if($admin),echo “已经登录”;,else echo “请重新登陆”;,/没对cookie有效性进行验证,导致cookie欺骗产生。,25,Cookie欺骗预防,禁用cookie,采用session。一般适合web系统安全性要求比较高的情况下,后台管理等。,增加多参数验证cookie有效性。,如验证访问者ip是否与上次IP一样等。,26,Cookie欺骗检测,关键字检测,Asp:,Response.Cookies/Request.Cookies,Php:,Setcookie/$_COOKIE/,$HTTP_COOKIE_VARS,Jsp:,response.addCookie /request.getCookies,A:,response.Cookies/request.Cookies,27,XSS(跨站脚本攻击),跨站脚本攻击(通常简写为XSS)是指攻者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。,危害:,盗取用户cookie,Xss蠕虫,挂马,结合xss蠕虫,危害巨大。,28,Xss防范,对用户输入数据编码:,Asp:server.htmlencode函数,Php:htmlspecialchars函数,:HttpContext.Current.Server.HtmlEncode,jsp:默认没有提供过滤方法,需要自写方法。,过滤危险的html关键字符:,比如:script/iframe等。,29,XSS检测,搜索关键字。,Asp:request/,Php:$_GET/$_POST/$_COOKIE/,$_SERVER,Jsp:request.getParameter/ request.getCookies,A:Request.QueryString/Form/Cookies/SeverVaiables/,30,Php 文件包含漏洞,Php:include/require / include_once /require_once函数使用时参数没有限制导致可以包含远程文件或者本地文件。,Php4存在远程&本地,php5仅存在本地包含。,检测: include/require/include_once /require_once,其他语言表现。,31,其他漏洞检测,信息泄露,权限验证不严,仅仅罗列了一些常见的漏洞情况,实际上检测难度将比这个代码复杂的多了,这就要求我们对程序有足够的了解。,32,End,Thank you,!,33,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!