Web渗透的基础知识
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攻击者
/login.jsp
SQL注入防护
无论什么脚本语言:asp、.net、php还是jsp… …都 必须对参数进行过滤: 数字型必须int转换; 字符型必须过滤或者转义单引号;
SQL注入的检测简单流程
Sql语句一样,查询方法也一 样
获取源码
Asp/Php
Jsp/
反编译
>999是不可能符合的条件 ,这样union的结果就只 剩第二句sql查询的内容 Union暴库是常 Union语法要求前后两句SQL 中Select的数据项类型和数 量一致;
SQL 注入演示(一)
程序员考虑的场景:
Username: admin Password: p@$$w0rd 管理员 SELECT COUNT(*) FROM Users WHERE username='admin' and password='p@$$w0rd'
SQL 注入演示(一)
程序员考虑的场景:
age: 20 管理员
SELECT name, age, location FROM Users WHERE age>20
Fact:
大多数程序员都注意到了’的问题,他们 用’’来代替用户输入的’,从而防止字 符串SQL注入; 但很多人缺忽略了同样严重的数字注入问 题。其防范方法是检查用户输入的数字是 否合法。
分类 持久型XSS(Persistent),与非持久型XSS相反,它是指通过提交 恶意数据到服务器,通过Web应用程序输出恶意数据输出到页面,持 久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常 页面(比如BBS的某篇帖子中可能就含有恶意代码) 非持久型XSS(Non-persistent),即反射型,它是指那些浏览器每次 都要在参数中提交恶意数据才能触发的跨站脚本漏洞。
持久XSS攻击实验
Step 2.以admin用户登录培训论坛浏览刚才那个新帖子。
学员练习 3Min
恶意代码 执行!
反射XSS-攻击简介(Reflected XSS)
攻击者
恶意代码 隐藏在链 接中
2
3
Web服务器
1 1
“reflected” 4 代码 恶意代码
正常访问
From: 攻击者 To: 用户 免费赠送Q 币!!! CLICK HERE Outlook
程序员未预料到的结果„„
age: 1000000 union select name, age, password from users SELECT name, age, location 见的注入方法 FROM Users WHERE age>999 union select name, age, password from users
验证不充分之文件包含漏洞定义
文件包含漏洞,如果允许客户端用户输入控制 动态包含在服务器端的文件,会导致恶意代码的执 行及敏感信息泄露,主要包括本地文件包含和远程 文件包含两种形式
验证不充分之文件包含漏洞演示(一)
if ($_GET[page]) { include $_GET[page]; } else { include "home.php"; } 上面这段代码的使用格式可能是这样的: /php/index.php?page=main.php或者http: ///php/index.php?page=downloads.php ,结合上面代码,简 单说下怎么运作的: 1.提交上面这个URL,在index.php中就取得这个page的值($_GET[page])。 2.判断$_GET[page]是不是空,若不空(这里是main.php)就用include来包 含这个文件。 3.若$_GET[page]空的话就执行else,来include home.php 这个文件。
Php中SQL注入的预防(一)
确认GPC开启,若没开启则用addslashes 函数 过滤之,如下代码。
if (!get_magic_quotes_gpc()) { $lastname = addslashes($_POST['lastname']); } else { $lastname = $_POST['lastname']; }
`
管理员
/login.asp
登录成功!
SQL 注入演示(二)
程序员未预料到的结果„„
Username: admin' OR 1=1 -Password: 1 SELECT COUNT(*) FROM Users WHERE username='admin' OR 1=1 -- 'and password='1'
持久XSS-攻击简介(Persistent XSS)
攻击者
2
Web服务器
在论坛发帖子: 免费获取Q币!!! <script>恶意代码 </script>
1
重要通知 Re:沙发!! Re:地板? Re:地下室沙发„„ Re: 地下室地板 -_-!! Re :免费获取Q 币!!!
内容: <script>恶意代码 </script>
‘是SQL字符串 变量的定界符 --是MS SQL的 注释符
攻击关键 通过定界符成功地 将攻击者的意图注 入到SQL语句中! 通过注释保证SQL语 句正确!
ORACLE: 用户名字段中输入:‘ or ’1‘=’1‘ or ’1‘=’1 或是在密码字段中输入: 1' or '1'='1
`
登录成功!
LOGO
Web渗透的基础知识培训
目录
1. 为什么要重视Web安全?
2. Web渗透的常用手法
3. Web渗透带来的危害
为什么要重视Web安全?
现在很多企业,政府,学校都在互联网上建立自己的平台,比如 企业的进销存,OA系统还有邮件系统;政府的电子政务,学校有 教务系统等。
包括现在很多的运营商也是对web安全越来越重视,他们会把
允许上传可执行文件 使用客户端JS验证上传文件类型 使用黑名单限制上传文件类型 文件名/存储目录名可自定义 文件名中特殊字符处理不当
验证不充分之上传漏洞实例
Public Function GetFileExt(FullPath)’提取文件后缀 If FullPath <> "" Then response.write FullPath GetFileExt = LCase(Mid(FullPath,InStrRev(FullPath, ".")+1)) Else GetFileExt = "" End If End function 上面这段代码是获取上传文件后缀 upfile.NoAllowExt = “asp;exe;htm;asa;cer;php;jsp;html;aspx;cs;vb;js;” ‘设置上传类型的黑名单 这是设置了不能上传的文件类型 注:InStrRev:返回某字符串在另一个字符串中最后出现的位置
扫出的漏洞纳入到考核扣分。而在现实世界中,针对网站的攻击愈 演愈烈,频频得手。
为什么要重视Web安全? 国家互联网应急中心截图
为什么要重视Web安全?
Web攻击趋于简单化工具化
Web渗透的常用手法
1 2 3 4 5 6 Sql注入的介绍与演示 XSS的原理与演示 验证不充分漏洞
遍历目录漏洞
弱口令、社会工程学 第三方系统的漏洞 Webshell介绍
对于数字型参数可使用intval 或floatval 强制 转换为数字型。 注意mysql的版本以及默认字符集, Mysql>4.1 字符集连接字符串:
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary;");
7
常见Web攻击方法
Web漏洞扫描 构造恶意输入(SQL注入攻击、命令注入攻击、跨站脚本攻击) 网页爬行 暴力猜解、弱口令 社会工程学 错误信息利用 根据系统现有版本寻找现有的攻击代码 利用服务器配置漏洞 文件上传下载 逻辑缺陷 .........................
跨站脚本漏洞(XSS)
定义 它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览 该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意 用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用, 所以许多人常忽略其危害性。
XSS本质是在于执行脚本[javascript/html等],攻击者的js能力越强攻 击效果越惊人!
搜索sql查询语句存在变量语句 Select/update/insert/delete
查找变量来源/是否过滤
过滤函数是否安全
存在注入与否
Asp中SQL注入的预防
对于用户端输入的任意字符,包括GET提交,POST 提交,Cookie提交,SERVER提交的都需要做严格过 滤。 对于数字型参数判断是否为数字:可用函数isNumeric 来判断,返回值为true和false。 对于字符型参数过滤单引号,使其无法闭合当前sql语 句的单引号。
1. 正常服务器信息 2. 服务器存储恶意代码
3
4
Re:谁又发垃圾广告啦?
3. 用户浏览网页
4. 服务器将恶意代码返回给用户 5. 客户端浏览器执行恶意代码
5
恶意代码 执行!
普通用户客户端
持久XSS攻击实验(一)
Step 1.以test用户登录培训论坛发表新帖子,内容如下: <script>alert(‘hello’)</script>
反射式XSS:恶意代码不保留在服务器上,而是通过其他形式实时通过服务器反射 给普通用户。
XSS漏洞可利用的标志就是“Hello!”,一旦示意代码可以在用户的浏览器中执 行,其后可实现的攻击行为与来源是持久还是反射无关。可以利用XSS发起C介绍
导致该漏洞的原因在于代码作者没有对访客提交的 数据进行检验或者过滤不严,可以直接提交修改过 的数据绕过扩展名的检验。
5
普通合法会话 恶意代码 执行! 安全上下文: 目标站点 浏览器 安全上下文: 目标站点 浏览器
普通用户客户端
反射XSS攻击实验(一)
Step 1.以test用户登录培训论坛发表新帖子,在浏览器网址处修改 Forum_Title参数,观察结果:
学员练习 3Min
URL中的字符通过服务器 “反射”到浏览器中
反射XSS攻击实验(二)
学员练习 3Min
Step 1. 把Forum_Title修改为:<script>alert(‘hello’)</script>
URL中的字符通过服务器 “反射”到浏览器中
恶意代码 执行!
XSS:两种类型总结
XSS包括两种类型:
持久式XSS:恶意代码持久保存在服务器上。即Persistent。
Sql注入原理介绍
定义: 由于程序中对用户输入检查不严格,用户可以提交一段 数据库查询代码,根据程序返回的结果,获得某些他想 得知的数据,这就是所谓的SQL Injection,即SQL注入。
原因分析 其本质是对于输入检查不充分,导致SQL语句将用户提 交的非法数据当作语句的一部分来执行。
Jsp中SQL注入预防
采用jdbc的prepareStatement查询数据库, 并且sql语句中不出现参数,如:
sqlStr = “select id from info where city=? and open=? order by id desc”; stmt = conn.prepareStatement(sqlStr); stmt.setString(1,city); stmt.setString(2,var1);
中SQL注入预防
使用的参数化查询。
strSQL = "SELECT * FROM Orders WHERE CustomerID = @CustomerID"; SqlCommand cmd = new SqlCommand(strSQL, cn);//创 建一个sqlcommand对象。 //创建新参数,参数绑定 cmd.Parameters.AddWithValue("@CustomerID", "ALFKI");