⽹站渗透测试原理及详细过程⽹站渗透测试原理及详细过程
渗透测试(Penetration Testing)⽬录
零、前⾔
⼀、简介
⼆、制定实施⽅案
三、具体操作过程
四、⽣成报告
五、测试过程中的风险及规避
参考资料
FAQ集
零、前⾔
渗透测试在未得到被测试⽅授权之前依据某些地区法律规定是违法⾏为。这⾥我们提供的所有渗透测试⽅法均为(假设为)合法的评估服务,也就是通常所说的道德⿊客⾏为(Ethical hacking),因此我们这⾥的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这⾥后会成为他们中的⼀员;)
这⾥,我还想对⼤家说⼀些话:渗透测试重在实践,您需要⼀颗永不⾔败的⼼和⼀个有着活跃思维的⼤脑。不是说您将这⼀份⽂档COPY到您⽹站上或者保存到本地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不⾏,您⼀定要根据⽂档⼀步⼀步练习才⾏。⽽且测试重在⽤脑,千万别拿上⼀两个本⽂中提到的⼯具⼀阵乱搞,我敢保证:互联⽹的安全不为因为这样⽽更安全。祝您好运。。。
⼀、简介
什么叫渗透测试?
渗透测试最简单直接的解释就是:完全站在攻击者⾓度对⽬标系统进⾏的安全性测试过程。
进⾏渗透测试的⽬的?
了解当前系统的安全性、了解攻击者可能利⽤的途径。它能够让管理⼈员⾮常直观的了解当前系统所⾯临的问题。为什么说叫直观呢?就像Mitnick书⾥⾯提到的那样,安全管理(在这⾥我们改⼀下,改成安
全评估⼯作)需要做到⾯⾯俱到才算成功,⽽⼀位⿊客(渗透测试)只要能通过⼀点进⼊系统进⾏破坏,他就算是很成功的了。
渗透测试是否等同于风险评估?
不是,你可以暂时理解成渗透测试属于风险评估的⼀部分。事实上,风险评估远⽐渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了⼈⼯审查以及后期的优化部分(可选)。
已经进⾏了安全审查,还需要渗透测试吗?
如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能⼒实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?
渗透测试是否就是⿊盒测试?
否,很多技术⼈员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部⿊客的⼊侵,同时,防⽌内部⼈员的有意识(⽆意识)攻击也是很有必要的。这时,安全测试⼈员可以被告之包括代码⽚段来内的有关于系统的⼀些信息。这时,它就满⾜灰盒甚⾄⽩盒测试。
渗透测试涉及哪些内容?
技术层⾯主要包括⽹络设备,主机,数据库,应⽤系统。另外可以考虑加⼊社会⼯程学(/)。
渗透测试有哪些不⾜之处?
主要是投⼊⾼,风险⾼。⽽且必须是专业的Ethical Hackers才能相信输出的最终结果。
你说的那么好,为什么渗透测试⼯作在中国开展的不是很⽕热呢?
我只能说:会的,⼀定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。⽤户不知道花了钱证明了系统有问题以后,⾃⼰的安全等级到了⼀个什么程序。但是很显然,⽤户是相信⼀个专业且经验丰富的安全团队的,这个在中国问题⽐较严重。在我接触了⼀些⼤型的安全公司进⾏的⼀些渗透测试过程来看,测试⼈员的⽔平是对不住开的那些价格的,⽽且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时⼀⽅⾯安全⼈员的技术⼒量有很⼤程度的改观,另⼀⽅⾯各企业对渗透测试会有⼀个⽐较深刻的理解,也会将其做为⼀种IT审计的⽅式加⼊到开发流程中去。渗透测试的专业化、商业化会越来越成熟。
⼆、制定实施⽅案
实施⽅案应当由测试⽅与客户之间进⾏沟通协商。⼀开始测试⽅提供⼀份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:
⽬标系统介绍、重点保护对象及特性。
是否允许数据破坏?
是否允许阻断业务正常运⾏?
测试之前是否应当知会相关部门接⼝⼈?
接⼊⽅式?外⽹和内⽹?
测试是发现问题就算成功,还是尽可能的发现多的问题?
渗透过程是否需要考虑社会⼯程?
。。。
在得到客户反馈后,由测试⽅书写实施⽅案初稿并提交给客户,由客户进⾏审核。在审核完成后,客户应当对测试⽅进⾏书⾯委托授权。这⾥,两部分⽂档分别应当包含如下内容:
实施⽅案部分:
...
书⾯委托授权部分:
...
三、具体操作过程
1、信息收集过程
⽹络信息收集:
在这⼀部还不会直接对被测⽬标进⾏扫描,应当先从⽹络上搜索⼀些相关信息,包括Google Hacking, Whois查询,
DNS等信息(如果考虑进⾏社会⼯程学的话,这⾥还可以相应从邮件列表/新闻组中获取⽬标系统中⼀些边缘信息如内
部员⼯帐号组成,⾝份识别⽅式,邮件联系地址等)。
1.使⽤whois查询⽬标域名的DNS服务器
2.nslookup
>set type=all
><domain>
>server <ns server>
>set q=all
>ls -d <domain>
涉及的⼯具包括:,,,,,,, 除此之外,我想特别提醒⼀下使⽤Googlebot/2.1绕过⼀些⽂件的获取限制。
Google hacking 中常⽤的⼀些语法描述
1.搜索指定站点关键字site。你可以搜索具体的站点如。使⽤可以搜索该域名下的
所有⼦域名的页⾯。甚⾄可以使⽤site:org来搜索中国政府部门的⽹站。
2.搜索在URL⽹址中的关键字inurl。⽐如你想搜索带参数的站点,你可以尝试⽤inurl:asp?id=
3.搜索在⽹页标题中的关键字intitle。如果你想搜索⼀些登陆后台,你可以尝试使⽤intitle:"admin login"
⽬标系统信息收集:
通过上⾯⼀步,我们应当可以简单的描绘出⽬标系统的⽹络结构,如公司⽹络所在区域,⼦公司IP地址分布,VPN接
⼊地址等。这⾥特别要注意⼀些⽐较偏门的HOST名称地址,如⼀些backup开头或者temp开关的域名很可能就是⼀台
备份服务器,其安全性很可能做的不够。
从获取的地址列表中进⾏系统判断,了解其组织架构及操作系统使⽤情况。最常⽤的⽅法的是⽬标所有IP⽹段扫描。
端⼝/服务信息收集:
这⼀部分已经可以开始直接的扫描操作,涉及的⼯具包括:,
1.我最常使⽤的参数
nmap -sS -p1-10000 -n -P0 -l --open -T5 <ip address>
应⽤信息收集:,SIPSCAN,smap
这⾥有必要将SNMP拿出来单独说⼀下,因为⽬前许多运营商、⼤型企业内部⽹络的维护台通过SNMP进⾏数据传
输,⼤部分情况是使⽤了默认⼝令的,撑死改了private⼝令。这样,攻击者可以通过它收集到很多有效信息。,,,
都是⼀些很好的资源。
2、漏洞扫描
这⼀步主要针对具体系统⽬标进⾏。如通过第⼀步的信息收集,已经得到了⽬标系统的IP地址分布及对应的域名,并
且我们已经通过⼀些分析过滤出少许的⼏个攻击⽬标,这时,我们就可以针对它们进⾏有针对性的漏洞扫描。这⾥有
⼏个⽅⾯可以进⾏:
为什么oracle网站进不去针对系统层⾯的⼯具有:ISS, , SSS, Retina, 天镜, 极光
针对WEB应⽤层⾯的⼯具有:, , ,
针对数据库的⼯具有:,
针对VOIP⽅⾯的⼯具有:(在测试中直接⽤这个⼯具轰等于死)以及, , 等。
事实上,每个渗透测试团队或多或少都会有⾃⼰的测试⼯具包,在漏洞扫描这⼀块针对具体应⽤的⼯具也⽐较个性
化。
3、漏洞利⽤
有时候,通过服务/应⽤扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利⽤。因为很多情况下我们根据⽬标服务/
应⽤的版本就可以到⼀些安全⽹站上获取针对该⽬标系统的漏洞利⽤代码,如, ,等⽹站,上⾯都对应有搜索模块。实
在没有,我们也可以尝试在GOOGLE上搜索“应⽤名称 exploit”、“应⽤名称 vulnerability”等关键字。
当然,⼤部分情况下你都可以不这么⿇烦,⽹络中有⼀些⼯具可供我们使⽤,最著名的当属了,它是⼀个开源免费的
漏洞利⽤攻击平台。其他的多说⽆益,您就看它从榜上⽆名到冲进这⼀点来说,也能⼤概了解到它的威⼒了。除此之
外,如果您(您们公司)有⾜够的moeny⽤于购买商⽤软件的话,是相当值得考虑的,虽然说价格很⾼,但是它却是
被业界公认在渗透测试⽅⾯的泰⼭北⽃,基本上测试全⾃动。如果您觉得还是接受不了,那么您可以去购买,据说有
不少0DAY,不过它跟⼀样,是需要⼿动进⾏测试的。最后还有⼀个需要提及⼀下的,它相当于⼀个漏洞利⽤代码管
理⼯具,⽅便进⾏不同语⾔,不同平台的利⽤代码收集,把它也放在这⾥是因为它本⾝也维护了⼀个exploit库,⼤家
参考着也能使⽤。
上⾯提到的是针对系统进⾏的,在针对WEB⽅⾯,注⼊⼯具有NBSI, , , , , , , , ***等等。
在针对数据库⽅⾯的⼯具有:
数据库⼯具列表 Oracle(1521端⼝): ⽬前主要存在以下⽅⾯的安全问题:
1、TNS监听程序攻击(sid信息泄露,停⽌服务等)
2、默认账号()
3、SQL INJECTION(这个与传统的意思还不太⼀样)
4、缓冲区溢出,现在⽐较少了。 , , , , , , , ,  MS Sql Server(1433、1434端⼝)  Mysql(3306端⼝)
DB2(523、50000、50001、50002、50003端⼝)  Informix(1526、1528端⼝)
在针对Web服务器⽅⾯的⼯具有:
WEB服务器⼯具列表 IIS  Tomcat 想起/admin和/manager管理⽬录了吗?另外,⽬录列表也是Tomcat服务器中最常
见的问题。⽐如5.*版本中的127.0.0.1/;index.jsp
ample/foo/"../manager/html
ample:8080/examples/servlets/servlet/CookieExample?
cookiename=HAHA&cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path ample:8080/servlets-examples/servlet/CookieExample?
cookiename=BLOCKER&cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01 examples%2Fservlet+%3B JBOSS jboss的漏洞很少,⽼版本中8083端⼝有%符号的漏洞:
GET %. HTTP/1.0可以获取物理路径信息,
GET %server.policy HTTP/1.0可以获取安全策略配置⽂档。
你也可以直接访问GET %org/xxx/lib.class来获取编译好的java程序,再使⽤⼀些反编译⼯具还原源代码。 Apache  Resin victim/C:%5C/
victim/resin-doc/viewfile/?file=index.jsp
victim/resin-doc/viewfile/?contextpath=/otherwebapp&servletpath=&file=l
victim/resin-doc/viewfile/?contextpath=/&servletpath=&file=WEB-INF/classes/com/webapp/app/target.class victim/[path]/[device].[extension]
victim/%20.."web-inf
victim/%20
victim/[path]/%20.xtp WebLogic
Web安全测试主要围绕⼏块进⾏:
Information Gathering:也就是⼀般的信息泄漏,包括异常情况下的路径泄漏、⽂件归档查等
Business logic testing:业务逻辑处理攻击,很多情况下⽤于进⾏业务绕过或者欺骗等等
Authentication Testing:有⽆验证码、有⽆次数限制等,总之就是看能不能暴⼒破解或者说容不容易通过认证,⽐较
直接的就是“默认⼝令”或者弱⼝令了
Session Management Testing:会话管理攻击在COOKIE携带认证信息时最有效
Data Validation Testing:数据验证最好理解了,就是SQL Injection和Cross Site Script等等
⽬前⽹上能够到许多能够⽤于进⾏Web测试的⼯具,根据不同的功能分主要有:
枚举(Enumeration): DirBuster, http-dir-enum, wget
基于代理测试类⼯具:paros, webscarab, Burp Suite
针对WebService测试的部分有⼀些尚不是很成熟的⼯具,如:,,,,
这⼀部分值得⼀提的是,很多渗透测试团队都有着⾃⼰的测试⼯具甚⾄是0DAY代码,最常见的是SQL注⼊⼯具,现
⽹开发的注⼊⼯具(如NBSI等)⽬前都是针对中⼩企业或者是个⼈站点/数据库进⾏的,针对⼤型⽬标系统使⽤的⼀
些相对⽐较偏门的数据库系统(如INFORMIX,DB2)等,基本上还不涉及或者说还不够深⼊。这时各渗透测试团队
就开发了满⾜⾃⾝使⽤习惯的测试⼯具。
在针对⽆线环境的攻击有:
4、权限提升
在前⾯的⼀些⼯作中,你或许已经得到了⼀些控制权限,但是对于进⼀步攻击来说却还是不够。例如:你可能很容易
的能够获取Oracle数据库的访问权限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的⼀个基本账号权限,但是当你想进
⾏进⼀步的渗透测试的时候问题就来了。你发现你没有⾜够的权限打开⼀些密码存储⽂件、你没有办法安装⼀个SNIFFER、你甚⾄没有权限执⾏⼀些很基本的命令。这时候你⾃然⽽然的就会想到权限提升这个途径了。
⽬前⼀些企业对于补丁管理是存在很⼤⼀部分问题的,他们可能压根就没有想过对⼀些服务器或者应⽤进⾏补丁更
新,或者是延时更新。这时候就是渗透测试⼈员的好机会了。经验之谈:有⼀般权限的Oracle账号或者AIX账号基本
上等于root,因为这就是现实⽣活。
5、密码破解
有时候,⽬标系统任何⽅⾯的配置都是⽆懈可击的,但是并不是说就完全没办法进⼊。最简单的说,⼀个缺少密码完
全策略的论证系统就等于你安装了⼀个不能关闭的防盗门。很多情况下,⼀些安全技术研究⼈员对此不屑⼀顾,但是
⽆数次的安全事故结果证明,往往破坏⼒最⼤的攻击起源于最⼩的弱点,例如弱⼝令、⽬录列表、SQL注⼊绕过论证
等等。所以说,对于⼀些专门的安全技术研究⼈员来说,这⼀块意义不⼤,但是对于⼀个ethical hacker来说,这⼀步
骤是有必要⽽且绝⼤部分情况下是必须的。;)
⽬前⽐较好的⽹络密码暴⼒破解⼯具有:,
& - - - -s 2121  ftp
⽬前⽹络中有⼀种资源被利⽤的很⼴泛,那就是rainbow table技术,说⽩了也就是⼀个HASH对应表,有⼀些⽹站提
供了该种服务,对外宣称存储空间⼤于多少G,像更是对外宣称其数据量已经⼤于1.3T。
针对此种⽅式对外提供在线服务的有:
⽹址描述⾥⾯对应了多种加密算法的HASH。数据量全球第⼀,如果本站⽆法破解,那么你只能去拜春哥...
当然,有些单机破解软件还是必不可少的:,(国⼈开发,赞⼀个),,L0phtCrack(破解Windows密码),(破解UNIX/LINUX)密码,当然,还少不了⼀个...
在渗透测试过程中,⼀旦有机会接触⼀些OFFICE⽂档,且被加了密的话,那么,是您马上要去的地⽅,他们提供的OFFICE密码套件能在瞬间打开OFFICE⽂档(2007中我没有试过,⼤家有机会测试的话请给我发⼀份测试结果说
明,谢谢)。看来微软有理由来个补丁什么的了。对于企业来说,您可以考虑使⽤或者RMS了。
6、⽇志清除
It is not necessary actually.
7、进⼀步渗透
攻⼊了DMZ区⼀般情况下我们也不会获取多少⽤价值的信息。为了进⼀步巩固战果,我们需要进⾏进⼀步的内⽹渗
透。到这⼀步就真的算是⽆所不⽤其及。最常⽤且最有效的⽅式就是Sniff抓包(可以加上ARP欺骗)。当然,最简单
的你可以翻翻已⼊侵机器上的⼀些⽂件,很可能就包含了你需要的⼀些连接帐号。⽐如说你⼊侵了⼀台Web服务器,
那么绝⼤部分情况下你可以在页⾯的代码或者某个配置⽂件中到连接数据库的帐号。你也可以打开⼀些⽇志⽂件看
⼀看。
除此之外,你可以直接回到第⼆步漏洞扫描来进⾏。
四、⽣成报告
报告中应当包含:
薄弱点列表清单(按照严重等级排序)
薄弱点详细描述(利⽤⽅法)
解决⽅法建议
参与⼈员/测试时间/内⽹/外⽹
五、测试过程中的风险及规避
在测试过程中⽆可避免的可能会发⽣很多可预见和不可预见的风险,测试⽅必须提供规避措施以免对系统造成重⼤的影响。以下⼀些可供参考:
1. 不执⾏任何可能引起业务中断的攻击(包括资源耗竭型DoS,畸形报⽂攻击,数据破坏)。
2. 测试验证时间放在业务量最⼩的时间进⾏。
3. 测试执⾏前确保相关数据进⾏备份。
4. 所有测试在执⾏前和维护⼈员进⾏沟通确认。
5. 在测试过程中出现异常情况时⽴即停⽌测试并及时恢复系统。
6. 对原始业务系统进⾏⼀个完全的镜像环境,在镜像环境上进⾏渗透测试。
参考资料: