[个人心得]渗透测试的一些总结
http://www.freebuf.com/articles/3562.html
0×01 前言
师弟们经常问我如何“黑网站”,这个问题答起来不是那么难又不是那么容易,为什么这么说呢? “千里之堤,溃于蚁穴”,有时候你只需了解很小 一部分知识却能对看似强大的一个集合造成巨大的破坏.
诚然,渗透测试并不是一个简单的工作.它需要很广阔的涉猎面,和长期的经验积累.那么如何在渗透师的世界里练级打怪呢?
我相信刚接触hacker的时候,每个人都应该看的一篇经典的WIKI:《How To Become A Hacker》,你可以在http://catb.org/~esr/faqs/hacker-howto.html 获取到其最新的版本,之前ssv@sebug上有简体中文的译版,不过写这篇文章的时候,似乎已经删除了,如果需要请mail我.
我结合自己的体会总结一下:
1.黑客精神这里再不作讨论,有信仰的人自然有信仰
2.掌握一门脚本语言,我喜欢应用广泛的python,也从事着PHP的一些简单开发
3.掌握一门高级语言,掌握一门高级语言的好处很多,大多有用的文档示例伪代码都是C风格的
4.Windows与Linux的优劣,如果你还未踏上这条路之前,建议从Linux开始吧.
5.广泛的涉猎.
6.现学现卖的技能
7. ……
能补充的地方还有很多,就我个人来说,首先精通一门称手的语言是必须的,哪怕是shell编程(windows下的批处理)也能让很多工作事半功倍.
渗透工作所接触的面之广是显而易见的,人的精力有限,拿SQL Injection来说,很多时候接触的是绝大多数流行的数据库,所以必须先有一定的T-SQL基础,再依据不同的数据库的特性(在注入中尤其体现得出)来展开工作,这个时候”现学现卖”的技能绝对是拍得上用场的了.
能说的也许还有很多(暂时只想到这么一点,灵感一现的时候决定写下这篇文章的,我相信还会有更好的修订出现),前辈们也讨论的很多了,这里就不再献丑,接下来 将自己的经验稍作总结.
0×02 知己知彼
初中的时候经常看hacker类杂志,Jnc等很多前辈写文章的时候喜欢用到这个副标题,我这里也借用一下.这其中其实涵盖了两个方面:
1.从机器的角度出发,站在系统等方面的知己知彼.简单的说就是,在还未开展渗透之前,你需要了解的是,你对系统一些特性知道多少,这其中又包括了很多方面,小到文件夹路径,大到运行在系统的各个支持服务,甚至是机器所处的网络环境及其周边设备.
经常被利用的一些特性
a.windows下的解析特性
诸如 http://target.com/1.asp/darkray.jpg 在 Windows + IIS 的黄金组合中会以asp来解析.扩展开来包括不同WEB服务(版本)的解析漏洞.(可参考《浅析IIS6设计缺陷》)b.不同OS对路径的支持问题
在windows下常见的莫过于在利用包含漏洞的时候用”../”进行目录跳转,以及在CMD下用mkdir命令进行”.\”的畸形文件夹名建立文件夹.在linux中路径则有不同的表示方式,”/”与”\”的差异c.windows对空格及”.”的忽略问题
常见于在上传绕过的利用中,windows会直接忽略空格等.d.Apache的解析特性
在老的阿帕奇版本中,未进行正确配置的话,存在darkray.php.dark双扩展名解析问题,诚然如a中所提到的一样,其他web服务同样存在此类问题.e.不同OS对于大小写的支持
显而易见的Linux与Windows对于大小写的支持情况不同.Linux更加敏感.
2.从人的角度出发,站在以人(开发者,管理,运营的角度)来思考问题,这其中牵涉出了渗透过程中很重要并且必须认真对待的过程——信息的收集.
在backtrack测试方法论中(详见《backtrack利用渗透测试保证系统安全》),十大步骤中的一个就是信息的收集.总结一下:
a.对目标主体的信息收集:这里通常是你能直面的目标,可能是一个站点,一个开发单一服务的服务器等.大致包括——DNS,Whois,目标OS,开发服务,mail服务器,旁站,C段,相关服务器大致的外网分布情况等等.
b.对目标的间接信息收集:这里说得多是”社工的应用”,通过对目标主体遗留的信息,整理出目标背后的”人”,它可能包括管理员的个人信息,如经常使用的个人邮箱,电话号码,常用用户账户,可靠度高的背景资料等.
c.对目标的扩展信息收集:通常大型公司提供的一些服务都是由团队来运维的,由此可能需要对a,b步骤进行反复筛选和整理,将目标所在团队人物关系理清,甚至可以细化到某位员工所用操作系统版本(如Google的APT案例中保障那个0day的有效实施类似的前期工作).更长远的甚至是所关注的目标用户在某一个可能有漏洞的网站所留下过的足迹(那里放着他可能的密码组合).
0×03 从弱口令说开去
掌握了足够多信息就可以发散思维了,在当今internet信任机制主要以用户及密码的形式来保障的时候,密码就成为了人的软肋.这里也略微总结一下.
a.更有意义的弱口令字典
更有意义的弱口令字典是指的结合了社会工程学而制作的密码字典,根据目标的密码习惯把穷举的工作变得更有意义b.FTP弱口令的利用(21)
工具很多,我比较喜欢HScan,不多赘述,穷举,多看运气.很多时候在内网中可能存在匿名用户的FTP,共享了一些配置文档.某些FTP服务,如Serv-U甚至提供了系统命令的功能,*发挥吧.c.MSSQL弱口令的利用(1433)
这一块应该是被前辈讨论的最多的了,成功利用关键在于权限(SA,DBOWNER,PUBLIC)以及组件配置情况,利用工具一个查询分析器足以,国内幻影旅团也曾出品过比较傻瓜化的工具d.MYSQL弱口令的利用(3306)
大多少情况下,mysql都是限制外连的,而且Windows和Linux下Mysql的默认权限也不同,利用方法也不同.在Windows下最常见的方法莫过于利用Mysql导出mix.dll和udf.dll建立执行命令的函数这种了.e.Oracle弱口令的利用(1521)
成功利用需要注意Oracle的版本,比较流行的版本常见于8.0i和10.0等。10之前的版本运行远程管理,利用的工具是sqlplus.关于暴力破解的话,windows下有Orabrute,而在backtrack中提供了一整套比较完美的数据库fuzz工具.10版的通常在8080还会开发一个web管理接口,利用一些常规的web穷举工具可以达到目的.f.Tomcat弱口令的利用(8080)
常见的在8080会提供一个webapp管理部署的接口,最直接的方法是上传包含webshell的war包.穷举工具国内的open牛写过一个tomcat crack,常规的web穷举工具也可使用.g.Radmin弱口令的利用(4899)
也是红极一时的远程管理工具,屏传算法不错。其中包括了Radmin.rpb(地址文件)文件的利用,hash密码验证攻击等.h.Pcanywhere弱口令的利用(5800)
远控软件,秒之.不过会通常还会有一层Windows本身的验证在后面。CIF文件提权讲的很多,这里不多赘述了.i.VNC弱口令的利用(5900)
VNC的穷举工具也有很多了,06(具体记不清了)的验证绕过漏洞很火,现在几乎绝种,常见RealVNC.j.SSH弱口令的利用(22)
k.TELNET弱口令的利用(21)
极少会有这蛋疼的事情发生,大多数是路由,略.l.远程桌面弱口令的利用(3389)
TScrack穷举工具.m.总结
弱口令的利用大致3个方面——字典,批量扫描,实施利用.总结下常规的穷举工具,web协议的在很多web fuzz工具中都集成了,著名的如Burp,AWVS等.专门的web穷举工具还有wwwhack,webcrack等.另外还有很多多协议的穷举工具,如hydra,bruter,brutus等,远程数据库管理工具比较喜欢navicat,它其实是个数据库管理工具,对各类数据库都有很好的支持.
这里其实还是涉及了很小的一个部分,根据服务的不同,就有相应的弱口令利用措施,细化到web开源程序,wordpress有wpscan,drupal有druscan这些等等,期待更多讨论.
0×04 配置之殇
未完待续….