渗透测试有哪些类型?该如何做好渗透测试?
渗透测试可以分为: *** 渗透测试、Web应用渗透测试、移动应用渗透测试、API渗透测试和物联网渗透测试这些类型,青藤云安全的高级安全工程师,有着丰富的渗透测试经验可以全方位为企业提供安全建议。
渗透测试是什么 渗透测试有什么特点
渗透测试是什么?
渗透测试,是为了证明 *** 防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的 *** 策略,换句话说,就是给你的系统安了一双眼睛。而且,进行这类测试的,都是寻找 *** 系统安全漏洞的专业人士。
渗透测试有什么特点?
1、信息收集
信息收集分析是所有入侵攻击的前提/前奏/基础。通过对 *** 信息收集分析,可以相应地、有针对性地制定模拟黑客入侵攻击的计划,以提高入侵的成功率、减小暴露或被发现的几率。信息收集的 *** 包括主机 *** 扫描、操作类型判别、应用判别、账号扫描、配置判别等等。
2、端口扫描
通过对目标地址的TCP/UDP端口扫描,确定其所开放的服务的数量和类型,这是所有渗透测试的基础。通过端口扫描,可以基本确定一个系统的基本信息,结合测试人员的经验可以确定其可能存在,以及被利用的安全弱点,为进行深层次的渗透提供依据。
3、权限提升
通过收集信息和分析,存在两种可能性,其一是目标系统存在重大弱点:测试人员可以直接控制目标系统,然后直接调查目标系统中的弱点分布、原因,形成最终的测试报告;其二是目标系统没有远程重大弱点,但是可以获得远程普通权限,这时测试人员可以通过该普通权限进一步收集目标系统信息。接下来,尽更大努力获取本地权限,收集本地资料信息,寻求本地权限升级的机会。这些不停的信息收集分析、权限升级的结果将构成此次项目整个渗透测试过程的输出。
4、溢出测试
当测试人员无法直接利用帐户口令登陆系统时,也会采用系统溢出的 *** 直接获得系统控制权限,此 *** 有时会导致系统死机或从新启动,但不会导致系统数据丢失,如出现死机等故障,只要将系统从新启动并开启原有服务即可。一般情况下,如果未授权,将不会进行此项测试。
5、WEB应用测试
Web脚本及应用测试专门针对Web及数据库服务器进行。根据最新的统计,脚本安全弱点为当前Web系统,尤其是存在动态内容的Web系统比较严重的安全弱点之一。利用脚本相关弱点轻则可以获取系统其他目录的访问权限,重则将有可能取得系统的控制权限。因此对于含有动态页面的Web、数据库等系统,Web脚本及应用测试将是必不可少的一个环节。
6、SQL注入攻击
SQL注入常见于应用了SQL 数据库后端的网站服务器,入侵者通过提交某些特殊SQL语句,最终可能获取、篡改、控制网站服务器端数据库中的内容。此类漏洞是入侵者最常用的入侵方式之一。
7、检测页面隐藏字段
网站应用系统常采用隐藏字段存储信息。许多基于网站的电子商务应用程序用隐藏字段来存储商品价格、用户名、密码等敏感内容。恶意用户通过操作隐藏字段内容达到恶意交易和窃取信息等行为,是一种非常危险的漏洞。
8、跨站攻击
入侵者可以借助网站来攻击访问此网站的终端用户,来获得用户口令或使用站点挂马来控制客户端。
9、Cookie利用
网站应用系统常使用cookies 机制在客户端主机上保存某些信息,例如用户ID、口令、时戳等。入侵者可能通过篡改cookies 内容,获取用户的账号,导致严重的后果。
*** 安全工程师分享的6大渗透测试必备工具
租用海外服务器,不可避免就是考虑使用安全问题,其中渗透测试可模仿 *** 黑客攻击,来评估海外服务器 *** 系统安全的一种方式。互联网中,渗透测试对 *** 安全体系有着重要意义。
通过渗透工具可提高渗透测试效率。快速云作为专业的IDC服务商,在本文中为大家分享了 *** 安全工程师推荐的6种必备渗透工具,使用这6种工具后用户可实现更高效的进行渗透测试。
一、NST *** 安全工具
NST是基于Fedora的Linux发行版,属于免费的开源应用程序,在32、64平台运行。使用NST可启动LiveCD监视、分析、维护海外服务器 *** 安全性。可以用于入侵检测、 *** 浏览嗅探、 *** 数据包生成、扫描 *** /海外服务器等等。
二、NMAP
可以用于发现企业 *** 种任意类型的弱点、漏洞,也可以用于审计。原理是通过获得原始数据包渠道哪些海外服务器在 *** 特定段中有效,使用的是什么操作系统,识别正在使用的特定海外服务器的数据包防火墙/过滤器的不同版本和类型。
三、BeEF工具
BeEF工具可以通过针对web浏览器查看单源上下文的漏洞。
四、AcunetixScanner
一款可以实现手动渗透工具和内置漏洞测试,可快速抓取数千个网页,可以大量提升工作效率,而且直接可以在本地或通过云解决方案运行,检测出网站中流行安全漏洞和带外漏洞,检测率高。
五、JohntheRipper
这款工具最常见,可简单迅速的破解密码。支持大部分系统架构类型如Unix、Linux、Windows、DOS模式等,常用于破解不牢固的Unix/Linux系统密码。
六、SamuraiWeb测试框架
SamuraiWeb测试框架预先配置成 *** 测试平台。内含多款免费、开源的黑客工具,能检测出网站漏洞,不用搭建环境装平台节省大部分时间很适合新手使用。
如何进行Web渗透测试
1.SQL Injection(SQL注入)
(1)如何进行SQL注入测试?
首先找到带有参数传递的URL页面,如 搜索页面,登录页面,提交评论页面等等.
注1:对 于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在FORM 和/FORM的标签中间的每一个参数传递都有可能被利用.
form id="form_search" action="/search/" method="get"
div
input type="text" name="q" id="search_q" value="" /
input name="search" type="image" src="/media/images/site/search_btn.gif" /
a href="/search/" class="330f-da8f-3654-724b fl"Gamefinder/a
/div
/form
注 2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如
其 次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入 /INDEX.ASP?USERNAME='HI' OR 1=1
注1:根据实际情况,SQL注入请求可以使用以下语句:
' or 1=1- -
" or 1=1- -
or 1=1- -
' or 'a'='a
" or "a"="a
') or ('a'='a
注2:为什么是OR, 以及',――是特殊的字符呢?
例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password'
如 输入' or 1='1pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11'
' 与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行.
接 下来是OR查询条件,OR是一个逻辑运 算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是 说我们绕过了密码验证,我们只用用户名就可以登录.
如 输入'--pwd=11,SQL语 句会变成以下sql=select * from user where name='admin' --' and pasword='11',
'与admin前面的'组成了一个查 询条件,即username='admin',接下来的语句将按下一个查询条件来执行
接下来是"--"查询条件,“--”是忽略或注释,上 述通过连接符注释掉后面的密码验证(注:对ACCESS数据库无 效).
最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器 的相关信息;如果 能说明存在SQL安 全漏洞.
试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操 作,这样造成的后果是非常严重的.
(2)如何预防SQL注入?
从应用程序的角度来讲,我们要做以下三项工作:
转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”=!-*/()|”,和”空格”).
屏蔽出错信息:阻止攻击者知道攻击的结果
在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关键性的处理操作.
从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:
需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)
需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示.
当然在执行测试的过程中,我们也需求对上述两项内容进行测试.
2.Cross-site scritping(XSS):(跨站点脚本攻击)
(1)如何进行XSS测试?
!--[if !supportLists]--首先,找到带有参数传递的URL,如 登录页面,搜索页面,提交评论,发表留言 页面等等。
!--[if !supportLists]--其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:
scrīptalert(document.cookie)/scrīpt
最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的cookie串,这就说明该网站存在XSS漏洞。
试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被 攻击者获取。此时浏览者的帐号就很容易被攻击者掌控了。
(2)如何预防XSS漏洞?
从应用程序的角度来讲,要进行以下几项预防:
对Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等 语句或脚本进行转义.
在 服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端 拒绝进行关键性的处理操作.
从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:
在需求检查过程中对各输入项或输出项进行类型、长度以及取 值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。
执行测试过程中也应对上述项进行检查。
3.CSRF:(跨站点伪造请求)
CSRF尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。
XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
XSS也好,CSRF也好,它的目的在于窃取用户的信息,如SESSION 和 COOKIES,
(1)如何进行CSRF测试?
目前主要通过安全性测试工具来进行检查。
(2)如何预防CSRF漏洞?
请参见
4.Email Header Injection(邮件标头注入)
Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“\n”标识。
!--[if !supportLists]--!--[endif]--因为“\n”是新行,如果在subject中输入“hello\ncc:spamvictim@example.com”,可能会形成以下
Subject: hello
cc: spamvictim@example.com
!--[if !supportLists]--!--[endif]--如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用 户发送垃圾邮件。
5.Directory Traversal(目录遍历)
(1)如何进行目录遍历测试?
目录遍历产生的原因是:程序中没有过滤用户输入的“../”和“./”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
测试 *** :在URL中输入一定数量的“../”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。
(2)如何预防目录遍历?
限制Web应用在服务器上的运行
进 行严格的输入验证,控制用户输入非法路径
6.exposed error messages(错误信息)
(1)如何进行测试?
首 先找到一些错误页面,比如404,或500页面。
验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存 在”等,而并非曝露一些程序代码。
(2)如何预防?
测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息。
0条大神的评论