微信群里有小伙伴问web渗透应该咋入门?web代码审计应该咋入门?是不是学渗透主要是掌握扫描工具能验证漏洞就可以了?
其实呢套哥认为,渗透和代码审计虽然是两个方向,但是对于做安全的小伙伴是一回事。
殊途同归
两条途径最终结果是一样的:
只有看得懂代码了解漏洞原理才能随机应变在复杂的环境下做好渗透测试,也只有具备了一定黑盒渗透测试经验才能更快更准确的发现问题点并能在代码审计后写出完美的poc把漏洞利用的淋漓尽致。
所以说学好web安全就一定要渗透测试方法和代码原理都要学习。
那到底web安全该怎么入门呢,套哥的建议是:
1、先了解一个web系统是怎么运行的,比如一个新闻发布系统(cms)、在线商城系统、网络办公系统是如何搭建并运行起来的。
2、然后了解这些系统都有哪些功能和业务逻辑,这些功能和业务逻辑的大概实现原理。
3、对常见web系统漏洞要熟知其原理、成因、危害、测试方法等(如:网络设备、操作系统、中间件、数据库、web程序、业务逻辑)
4、结合具体系统的各个功能和环节匹配可能存在的漏洞,并进行测试,最终形成测试报告或技术总结
其中呢:1、2属于基础,3、4需要积累。
套哥先给小白说说基础哈,后面的有机会咱们坐下来慢慢来掰扯掰扯。
有的小伙伴可能会说我是要做web安全的,了解“网络设备、操作系统、中间件、数据库”这些有必要么?
咱们先不说答案,先来看看一个web系统是咱们运行的。
首先呢,这个web系统得有他的功能,也就是有他的业务逻辑,比如是一个新闻发布系统还是一个商城系统……
其次呢,要实现这个业务逻辑就必须要靠编写web脚本程序的应用代码来实现,光有代码还是不够的,必要的时候还要有数据库来存放业务数据,比如,你用php实现了一个留言本系统,那么用户的留言信息就可以存放在mysql数据库中。
第三呢,web程序要运行起来必须有运行环境,不管是iis,还是Apache,还是tomcat得有一个web中间件来运行web脚本。
第四呢,不管是什么中间件或者数据库要运行起来就不能没有操作系统环境,比如你在windows上搭建iis+SQL Server的web环境,或者在centos上搭建Apache+php+mysql的web环境,都要有操作系统作为基础。第五呢,有个操作系统搭建好了web系统,那么要联网运行,就必须通过网络设备接入到互联网中,所以呢,网络设备及环境是必不可少的。
看了上面这些,我不说你也知道答案了,web系统安全在广义上是比较全面的。因为任何一个环节出了问题,都会影响整个系统的安全。
所以说,“殊途同归”不管你现在是在做黑盒渗透测试的,还是在做代码审计的,只要我们的目标是做WEB安全,那么上面说的这些就都需要掌握。
第一部分:基础环境的安全
网络设备、操作系统、中间件、数据库这几个基础环境比较相似,可能存在的问题主要是弱口令和低版本漏洞,存在的风险就是基础环境被控制,相比web脚本的漏洞,这部分的危害是更为严重的,比如,操作系统存在管理员账号弱口令或者存在远程缓冲区溢出漏洞可以命令执行,攻击者就可以对服务器进行控制了,如果权限配置不当被攻击者拿到了系统管理员权限,那这个服务器上的web系统就面临着任人宰割的风险了,因为所有代码、数据都跑在服务器上,一旦拿到服务器操作系统的最高权限,代码、数据就都可以任意读取或更改了。
那么像这样的安全隐患需要怎么检测呢,之前在《我是工具党!我骄傲!》一文中提到了一些检测工具,比如NESSUS、NMAP、OpenVAS等,都可以对这部分的基础环境进行安全扫描。
可以发现这部分的漏洞有如下特点:
1、“挖掘难度大”,对于小白来说基本上是望而却步的,所以刚入坑的小伙伴可以先掌握检测和验证的方法。
2、“验证风险大”,对于弱口令还好说,如果是漏洞,如缓冲区溢出漏洞等漏洞,在验证的时候很可能会对目标系统造成一些破坏,因此验证的时候要格外小心,对于小白来说要多收集一些常用的可靠的漏洞验证及利用poc。
基于以上特点,入坑的小白需要数量掌握常规漏洞扫描器的使用,及漏洞验证及利用工具的使用。
扫描器:系统扫描至少要熟练掌握:NESSUS、NMAP、OpenVAS等
漏洞利用:至少要熟练掌握:Metasploit等
并且也要收集和积累常用漏洞验证的poc代码,有的小伙伴可能要问了
“常见的基础环境的漏洞基本都可以用Metasploit来验证和利用啊,为什么还要再收集一份呢?”
呃……这个是对的,Metasploit确实很强大,但对于一些漏洞在利用方面,当选择不同参数或者不同payload及shellcode的时候很可能会让目标系统崩溃,所以还是建议积累一些常见漏洞的稳定利用代码比较好。
总结一下:入坑小白要做到“用得了扫描,验得了漏洞”。
第二部分:web程序脚本安全
web程序漏洞主要可以参考owasp top 10,每隔几年owasp都会更新top 10漏洞的排名,截止2017排名如下:
插图1
详细可参考http://www.owasp.org.cn/owasp-project/OWASPTop102017RC2.pdf
这个文档里都有详细的说明,套哥就不多说了,这部分与基础环境的漏洞还是有区别的,基础环境漏洞的检测及验证方法比较固定,但web程序脚本漏洞的检测就比较多样了,因为不同的程序代码的实现方法各不相同,导致同一个漏洞可能存在不同的表现形式,比如sql注入漏洞,存在漏洞的参数可能在http数据包的get请求中,也可能在post请求中、还可能在cookies以及其他字段中,这个参数可能未经处理直接拼接成sql语句进行数据操作,也可能经过编码或者过滤后再拼接成sql语句进行数据操作……这每一种情况下对于漏洞检测来说需要构造的验证代码都不大一致,因此有些扫描器就有可能漏报或者误报,那么及需要我们进行手工测试了。
总结一下:入坑小白要做到
1、对常见web应用程序漏洞owasp top 10的原理要深入了解
2、见web扫描器要数量使用
3、对http协议各个字段及参数要数量掌握
4、对于常见web漏洞要能结合不同测试环境进行手工测试及验证
5、收集并分析常见web应用程序(cms、shop、oa等)的漏洞利用poc并掌握其原理
第三部分:业务逻辑安全
业务逻辑就要结合具体业务系统来说了,当然也能总结出一些通用的部分,比如:
1、用户登录逻辑
2、密码找回逻辑
3、用户越权逻辑
4、验证码机制逻辑等等
这部分的漏洞也是有一定特点的:
1、与业务功能结合紧密
2、扫描器基本无能为力,需要手工测试
比如用户越权来说,当a用户正常登陆之后,会生成a的用户标识,在用户a向系统请求数据的时候,会带上用户标识以便系统找到是谁在请求数据(比如用户a的标识是“user=a”),然后web系统接收到请求后会判断用户标识字段发现是a的请求,就会把a的数据反馈给用户。那么如果系统并没有对用户a发来的请求做进一步的身份验证,当用户a将标识改为“user=b”的时候想web系统发送数据请求的时候,系统就很有可能将b的数据反馈给a。如果使用脚本对所有用户进行遍历提交,就可能获得系统中所有用户的数据。
常用的手工测试工具有:Burp Suite、Fiddler等,其中Burp Suite功能比较全面,推荐使用。
这部分测试的时候通常关注http数据包的发送、返回包中的各个字段变化,再结合业务逻辑进行更改发包测试。
从这几部分的漏洞特点也可以看出,扫描器的作用是越来越少的,需要手工测试的越来越多。
这也就需要入坑小白要做到:
1、对系统的业务逻辑要梳理清楚
2、掌握可能存在逻辑漏洞的功能点
3、熟练使用Burp Suite等工具更改发包及回包数据
4、发现漏洞后可推测其代码编写的逻辑问题
说这些也只是套哥我个人的一点经验,希望能帮到刚入坑的小白,后面我会继续和大家分享常见漏洞的一些具体见检测方法和利用技巧,希望大家支持。
关注我们:请关注一下我们的微信公众号: NiudunX
温馨提示:文章内容系作者个人观点,不代表牛盾网络Newdun.com®对观点赞同或支持。
版权声明:本文为转载文章,来源于 安全圈套 ,版权归原作者所有,欢迎分享本文,转载请保留出处!