安全测试--基础安全测试概念认知

软件的安全不容忽视,轻则部分权限被盗取,重则直接导致软件崩溃,数据大幅丢失,对于很多软件系统而言,就会造成极大的财产损失。获取了这一项技能,用于不当的途径,就容易在法律的边缘徘徊。

      所以说,白帽子和黑客之间还是有区别的,白帽子旨在发现这些系统漏洞并进行修补,黑客旨在利用这些漏洞进行利益获取。

    说回安全测试相关的话题,当前web安全性主要关注三个要素: **机密性、完整性、可用性。 **

     **机密性: **机密性要求保护数据不能泄露,一般都会用加密的形式去保证。比如说在使用账号密码登录时,密码不能用明文,数据库不能轻易的暴露在黑客手下等等。

      **完整性: ** 完整性要求数据不能被轻易篡改,常见保持一致的方式是使用数字签名。

     **可用性: **可用性需要保证数据跟随着需要使用而获取。比如停车场有100个车位,黑客用石头占用了这100个车位,导致车场系统无法使用等。

安全评估

     安全评估一般会分为四个阶段: **资产等级划分 **、 **威胁分析 **、 **风险分析 **、 **确认解决方案 **。
  看下微软提出的威胁模型:

 

    同样,看看微软提出的风险等级:

 

攻击类型:

跨站脚本攻击(XSS)

跨站点请求伪造(CSRF)

注入(SQL注入、XML注入、代码注入 )

1.跨站脚本攻击(XSS)

  XSS攻击一般指的是黑客通过html的注入篡改了原来的网页,插入恶意脚本,当用户在浏览网页时候通过控制用户浏览器的一种攻击手段。

示例:

<input type="text" value="<%= getParameter("keyword") %>"> 

您要搜索的内容为:<%= getParameter("keyword") %>

我们做个特殊的请求,请求内容为: http://xxx/search?keyword=">

这个时候,服务端的请求返回内容会变成一个警告弹出框,原有功能变得不可用。

这种攻击类型叫做反射型XSS攻击,旨在诱导用户点击恶意链接进行破坏。

还有一种攻击类型叫做存储型XSS攻击,比如说写一个恶意javascirpts页面,别人只要访问了这个页面,就会把对应的恶意程序存储在服务器中。

跨站脚本攻击模拟工具:目前github上已经有一些比较流行适用的XSS攻击模拟工具,比如XSS漏洞自动化攻击工具XSSer,比如整理出来的XSS payload,在此先mark下,日后进行探索学习。

2.跨站点请求伪造(CSRF)

   跨站点请求伪造的原理为诱导用户进入第三方网站 ,向被攻击网站发起跨站请求,诱导用户在第三方网站进行账号密码登录等操作,进行权限盗取。

    对于这个攻击本人深有体会,以前中学时代,经常会在一些注册网站上访问a.com就跳转到了页面一模一样的b.com上,信息一提交,这些个人资料信息就全部被盗取了。

    不仅如此,黑客也可以通过这种方式进行其他的操作误导,比如说你点击了个提交页面,伪造请求将你的提交按钮链接到了原有网站上的删除功能,

这样一不小心一个点击,自己的资料就莫名其妙的被自己删除了。

攻击流程

受害者登录a.com,并保留了登录凭证(Cookie)。

攻击者引诱受害者访问了b.com。

b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。

a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。

a.com以受害者的名义执行了act=xx。

攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。

CSRF攻击成功的原因:重要操作的参数都可以被攻击者猜测的到。

防御方案:验证码、token加密等

3.注入攻击

    注入攻击为现在测试的重点,也是目前在安全领域最常见的方式。黑客通过SQL注入,最直接的,通过恶意的SQL查询对数据库进行攻击,

甚至可以猜测的到数据库名称、表名称等,甚至可以把整个数据库备份下来,盗取或者篡改重要信息,对用户造成重大的损失。

    SQL注入案例:

   假设后台登录的验证代码为:

    select * from user where username = '$name' and password = '$pwd'"

    正常的查询:输入账号密码都为“123”,此时为:

    select * from user where username = '123' and password = '123'"登录成功



    异常的输入:输入信息为123’ or 1=1 #,密码也一样输入,此时也是可以登录成功的,

sql语句为:select * from users where username='123' or 1=1 #' and password='123' or 1=1 #'

    此时sql语句等同于select * from users where username='123' or 1=1



    再做个修改:select * from users where username='123' or '1'='1' and password='123' or '1'='1`

以上都能登录成功,也即是说,如果没做安全设置的情况下,就可以绕过用户密码了。

SQL注入的工具有很多,入sqlmap、wvs等,以后也需要慢慢的继续研究。

 
posted @ 2025-05-14 13:55  寻虫测试  阅读(10)  评论(0)    收藏  举报