安全测试分享文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如http://www.test.com/test.php?id=12这个url后加上单引号’, 而后台逻辑在获取到url参数id时,直接拼装sql语句并执行, 此时会导致sql语句出现这种情况:select ……where id = 12’, sql执行时会发生错误,若代码中未对异常显示页面另加处理, 很可能用户就会获知数据库类型等信息。
例子
一个登录模块,让你输入用户名密码。我们一般都会老老实实的输入 我们的用户名和密码。但如果我们刻意的去绕过登录认证呢?猜想下面这 个SQL语句,单说用户名,开发人员很可能会这样去数据库里对比: Select * from sys_user where username=‘XXX’ 当然可能更复杂,假如我们在输入框里输入下面一句特殊的字符会如 何?’or‘1=1这是段神奇的字符,因为这样这个sql就变成: Select * from sys_user where username=‘’or‘1=1’ 这样我们就跳过了用户名的验证,实现了入侵,是不是很简单,看到 这里大家不妨动手尝试一下吧。
几种SQL注入的特征
1.3 尝试大小写不同的输入,尝试特殊字符对应ASCII码
有些程序中会过滤select等关键词,但是忘记区分大小写,此时可以用 selecT等尝试进行注入。或者尝试ASCII码来绕过程序中对特殊字符的 过滤,也可以达到测试的目的。 SQL注入利用的是程序过滤不严格, 或者某个参数忘记检查所导致的,在做安全测试时需要对引起该漏洞 的代码片段有一定认知,能快速准确的发现问题所在。
更安全的传输方式比如https
做好安全性测试的建议
黑客攻击手段 服务器知识 测试工具 安全漏洞 数据库技术 网络技术 掌握编程
虚心学习
路还很长
坚持
方向
方法
当上总经理,出任CEO,赢取白富美,走上人生巅峰!想想还有点小激动啊……
The end ! thank you !
几种SQL注入的特征
1.2 输入中增加; and 1 = 1或; and 1 = 2
如上例中的url,id参数输入id = 12 and 1 = 1 或者 id = 12 and 1 = 2 这是较常见的1=1, 1=2测试方法,如果程序不可以进行SQL注入, 对于一个整型参数,这两类输入一般都会有程序定义的错误提示或 者类型转换错误提示,或直接跳转到错误url页面。 若可以进行SQL注入,1=1输入与正常输入id=12的显示应无差异, 而1=2可能会导致提示无记录,页面显示为空的情况。
非对称加密
常见的软件安全性缺陷和漏洞有哪些?
数据传输安全:
1. 客户端请求动态密钥(DynamicKey),客户端向服务器端请求动态密钥 (DKey)。服务器端生成动态密钥发送给客户端。动态密钥内容格式根据 需要自己设计,例如双方支持的加密算法(MD5)、随机码和密钥有效期等, 并且在服务器保存该动态密钥,保持形式可以是Session(推荐)、数据库或 文件等,例如动态密钥格式为(MD5 + 123456 + 2010/9/23/12:00:00),最简 单的形式只有一个随机码。 2. 客户端提交数据, 客户端获得动态密钥后,用动态密钥中的加密算法加 密需要发送到服务器的数据(如:帐号和密码)和随机码,客户端把加密好 的数据发送给服务器: 3. 服务器验证应答, 服务器把收到的加密好的客户端数据,和服务器端用 动态密钥中的加密算法对服务器端数据(如保证在数据库的密码)和随机码 进行加密,生成加密好的服务器端数据(Server encrypted data)进行比较, 相等则认证成功, 服务器删除动态密钥(DKey)。一个完整的数据安全传 输结束。
安 全 测 试 分 享
目前企业安全测试方法
静态的代码安全测试 动态的渗透测试 程序数据扫描
常见的软件安全性缺陷和漏洞有哪些?
SQL注入:攻击者把SQL命令插入到Web
表单的输入域或页面请求的查询字符串, 欺骗服务器执行恶意的SQL命令。
XSS和它有什么不一样?
几种SQL注入的特征
1.1 输入中或url参数中加单引号’
常见的软件安全性缺陷和漏洞有哪些?
修改提交数据:曾经某公司做过一个关于在线支
付的商城,在安全性测试过程中,发现通过抓包抓到的 提交价格(如使用火狐插件:live http headers,fiddler),
经过修改再发包可以通过。简单来说就是本来100块钱买
的东西,抓包修改为1块就能成功购买。
常见的软件安全性缺陷和漏洞有哪些?
常见的软件安全性缺陷和漏洞有哪些?
加密弱点:这几种加密弱点是不安全的:
①使用不安全的加密算法。加密算法强度不够,一些加密算法 甚至可以用穷举法破解。 ②加密数据时密码是由伪随机算法产生的,而产生伪随机数的 方法存在缺陷,使密码很容易被破解。 ③身份验证算法存在缺陷。(验证身份方式) ④客户机和服务器时钟未同步,给攻击者足够的时间来破解密 码或修改数据。(说好的10分钟超时呢!) ⑤未对加密数据进行签名(用对好的口令或者密文进行签名, 这样的请求数据我才会觉得是自己人。),导致攻击者可以篡改数 据。所以,对于加密进行测试时,必须针对这些可能存在的加密弱 点进行测试。
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
嵌入的JavaScript代码将会被执行 或者用户输入的是: "onfocus="alert(document.cookie) 那么就会变成
SELECT * FROM Users WHERE(( Username='1'or '1'='1'))/*')AND (Password=MD5('$password')))
那么看看URL请求就变为:
http://www.example.com/index.php?username=1'%20or%20'1'%20=%20'1'))/*&password=foo
<input type="text" name="address1" value=""onfocus="alert(document.cookie)">
来自百度文库
事件被触发的时候嵌入的JavaScript代码将会被执行。
常见的软件安全性缺陷和漏洞有哪些?
缓冲区溢出:缓冲区溢出已成为软件安全的头号公敌,许
多实际中的安全问题都与它有关。造成缓冲区溢出问题通常有以下 两种原因。①设计空间的转换规则的校验问题。即缺乏对可测数据 的校验,导致非法数据没有在外部输入层被检查出来并丢弃。非法 数据进入接口层和实现层后,由于它超出了接口层和实现层的对应 测试空间或设计空间的范围,从而引起溢出。②局部测试空间和设 计空间不足。当合法数据进入后,由于程序实现层内对应的测试空 间或设计空间不足,导致程序处理时出现溢出。
跨站脚本攻击:XSS又叫CSS,英文缩写为Cross Site Script,
中文意思为跨站脚本攻击,具体内容指的是恶意攻击者往Web页面里插入恶 意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行, 从而达到恶意用户的特殊目的。为了和页面样式的CSS做区分,命名为 XSS。 XSS漏洞会导致的后果是说让不支持富文本的区域支持了富文本的执行,简 单说在编辑内容时,文本部分不支持富文本,但由于对输入没有做处理,导 致可以在文本中嵌入变颜色、加粗等HTML代码,当然攻击者可以嵌入恶意 javascript,获取cookie等隐私信息。
另外一个查询的例子
SELECT * FROM Users WHERE((Username='$username')AND(Password=MD5('$password')))
在这个例子中,存在两个问题,一个是括号的用法,还有一个是MD5 哈希函数的用法。对于第一个问题,我们很容找出缺少的右括号解决,对 于第二个问题,我们可以想办法使第二个条件失效。我们在查询语句的最 后加上一个注释符以表示后面的都是注释,常见的注释起始符是/*(在Or acle中是--),也就是说,我们用如下的用户名和密码:$username =1' or '1‘ ='1'))/* $password = foo 那么整条SQL语句就变为:
盗取cookie后果很严重啊!!!
XSS是如何发生的呢?
假如有下面一个textbox: <input type="text" name="address1" value="value1from"> value后面的值是来自用户的输入,如果用户输入 "/><script>alert(document.cookie)</script><!那么就会变成