1、软件源代码漏洞及缺陷扫描技术如何参考自动化审核报告对源代码进行加固12 Seay工具报告分析1 PHP下代码SQL注入产生和代码加固2456目录56 渗透测试3 结束4软件源代码漏洞及缺陷扫描技术l渗透测试l渗透测试相关概念l渗透测试相关概念3渗透测试相关概念渗透测试相关概念5点击此处添加脚注信息渗透测试,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。如果你早已做到了这些,为什么还要请外方进行审查或渗透测试呢?因为,渗透测试能够独立地检查你的网络策略,换句话说,就是给你的系统
2、安了一双眼睛。而且,进行这类测试的,都是寻找网络系统安全漏洞的专业人士。渗透测试相关概念6点击此处添加脚注信息渗透测试(penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。渗透测试还具有的两个显著特点是:渗透测试是一个渐进的并且逐步深入的过程。渗透测试是选择不影响业务系统正常运行的攻击方法进行的测试。作为网络安全防范的一种新技术,对于网络
3、安全组织具有实际应用价值。但要找到一家合适的公司实施渗透测试并不容易。渗透测试相关概念7点击此处添加脚注信息渗透测试的保护目标机密性机密性要求信息免受非授权的披露。它涉及到对计算机数据和程序文件读取的控制,即谁能够访问那些数据。它和隐私、敏感性和秘密有关。例如它保护包括个人(健康)数据、市场计划、产品配方以及生产和开发技术等信息。完整性完整性要求信息必须是正确和完全的,而且能够免受非授权、意料之外或无意的更改。完整性还要求计算机程序的更改要在特定的和授权的状态下进行。普遍认同的完整性目标有:确保计算机系统内的数据的一致性。在系统失败事件发生后能够恢复到已知的一致状态。确保无论是系统还是用户进行
4、的修改都必须通过授权的方式进行。渗透测试相关概念8点击此处添加脚注信息可用性可用性要求信息在需要时能够及时获得以满足业务需求。它确保系统用户不受干扰地获得诸如数据、程序和设备之类的系统信息和资源。不同的应用有不同的可用性要求。注意:不同的应用系统对于这三项安全目标有不同的侧重,例如:国防系统这样高度敏感的系统对保密信息的机密性的要求很高;电子金融汇兑系统或医疗系统对信息完整性的要求很高;自动柜员机系统对三者都由很高的要求,如客户个人识别码需要保密,客户帐号和交易数据需要准确,柜员机应能够提供24小时不间断服务。渗透测试相关概念9点击此处添加脚注信息渗透测试旨在证明,网络防御机制的运行与你认为的
5、一样良好。往往系统和网络管理员视审查人员或渗透人员为敌人,但实际上他们却是朋友。到位的渗透测试可以证明你的防御确实有效,或者查出问题,帮助你阻挡未来攻击。出钱请自己知道的人来发现网络中的漏洞,总比让自己不知道的人发现漏洞好得多。渗透测试相关概念10点击此处添加脚注信息渗透测试的敌人飞客(Phreaker)最的黑客。这些人利用各种电子装置,做到不付钱打电话,酷爱探索电话系统的奥秘。近年来,电话网络的机械部件越来越多地被计算机所取代这些飞客们也大多转为“电脑捣乱分子”。飞客的行为包括窃取电话卡、访问通信服务、改写通信设备程序、盗取访问设备的用户名和口令等。脚本点击小于(Script/click K
6、iddies)这个术语用于描述一些攻击新手,他们只会使用各种免费的漏洞评估工具和攻击工具。这类攻击者通常不会编写程序,也没有经过系统的攻击训练,通过适宜的安全控制和风险转移策略,就可以对付他们。渗透测试相关概念11点击此处添加脚注信息闹情绪的员工因某些事件情绪低落或没有得到老板重视的员工。他们有可能比脚本小子的知识多一些,也可能少一些。很多时候,愤怒让人失去理智。将这部分人归类为潜在的高危因素的原因在于他们位T单位的内部,有可能具有某些权限。维客(Whacker)通常是些新手,将他们有限的技能和能力集中在攻击无限局域网上。渗透测试相关概念12点击此处添加脚注信息软件骇客,黑客(Software
7、 Cracker/Hacker)这些人具备反向软件工程的技能,能够破解软件的注册码。很多人都在热切地分享他们的服务,但是,理论上说,下载带有破解注册码的程序的任何人都已经违反了法律,他们可能会面临一些重大的风险,有可能受到恶意代码和恶意软件的攻击(这些代码可能在软件骇客破解程序时已经注入到软件中)。渗透测试相关概念13点击此处添加脚注信息网络恐怖主义,网络犯罪(Cyber-Terrorists/Cyber-Criminals)这是一个日益增加的威胁,用于描述拥有资金支持、以非法方式针对政府、企业及个人进行隐秘活动或间谍活动的个人或组织。这类人通常热衷于破坏活动,如发起Dos/DDoS攻击、窃取
8、身份、窃取金融和经济信息、侵入国家的关键基础设施(如核电厂、电厂、自来水厂)等。系统骇客,黑客(System Cracker/Hacker)这类人是黑客精英,他们具备攻击网络和系统漏洞的专业知识,是媒体和公众关注的重点,他们往往会制造具有广泛影响的病毒、蠕虫、木马。这些精英持续地进行漏洞搜索和分析,并提出和实现网络操作系统和协议中的安全缺陷和漏洞。渗透测试相关概念14点击此处添加脚注信息渗透测试涉及的知识与完成其他所有工作一样,渗透测试人员为了更好地完成任务,也应该具备一定的专业素养和知识,虽然我们无法掌握一切,但应该成为这个领域的专家。渗透测试通常由一个小组完成,小组中的每一个人,都应该掌握
9、相关领域的核心知识,并具备熟练的动手能力。这些知识和技能包括:路由器掌握路由器、路由协议及访问控制列表的知识。Windows操作系统这是使用最广泛的操作系统,应该掌握这些操作系统的使用、配置以及管理,同时熟练掌握它的各种工具和命令。Linux对Linux/UNIX操作系统有比较深入的了解,包括安全设置、配置及所提供的服务,如Apache。防火墙防火墙配置知识和入侵检测系统与入侵预防系统的操作。渗透测试相关概念15点击此处添加脚注信息网络协议现在绝大多数网络都是支持TCP/IP的网络,深入掌握网络协议的知识和运行方式对于渗透测试十分重要。人文知识渗透测试本质上还是在与人打交道,对人性的深入理解及
10、心理的理解对于渗透测试十分重要。社会工程知识一社会工程是渗透测试获取信息的一个重要手段。搜索工具这是收集信息的一个重要渠道,Google在渗透测试方面的能力不可低估。项目管理测试小组应该有一位领导进行组织管理工作,这个人应该具备前面列出的所有知识,并且具有良好的项目管理能力。渗透测试相关概念16点击此处添加脚注信息黑客(hacker)这个术语的现代意义,起源于1960年的麻省理工学院(MIT)技术模型铁路俱乐部。这个俱乐部设计比例较大、细节逼真的火车模型。“黑客”被用来称呼那些发现了聪明技巧或问题的绕行措施的俱乐部成员。从那以后,“黑客”这个术语就被用来描述从计算机迷到具有天赋的编程人员之类的
11、人士。多数黑客的共同之处是他们对计算机系统和网络的自发的探索之心。开源软件开发者经常认为自己和他们的同事是黑客,并且把这个称谓当作一种尊称。渗透测试相关概念17点击此处添加脚注信息 寻找和利用系统和网络弱点的人被区分成不同种类。这种类别是按照他们在进行安全弱点调查时所“戴”的帽子颜色来区分的。帽子的颜色代表了他们的企图。下面是黑客的分类:(l)白帽黑客(White Hat Hacker):测试网络和系统的性能来判定它们能够承受入侵的强弱程度。通常,白帽黑客攻击他们自己的系统,或被聘请来攻击客户的系统以便进行安全审查。学术研究人员和专职安全顾问就属于白帽黑客。白帽黑客也称为有道德的黑客(Ethi
12、cal Hacker)。(2)黑帽黑客(Black Hat Hacker):是骇客的同义词。通常来说,骇客并不注重于入侵系统的编程或学术方面。他们经常为了个人利益而依靠现成的攻击程序和著名的系统漏洞弱点来发现保密信息,或破坏目标系统和网络。渗透测试相关概念18点击此处添加脚注信息(3)灰帽黑客(Grey Hat Hacker):在多数情况下都具备白帽黑客的技术和意图,但是偶尔也使用这种知识来进行不太光明正大的行径。灰帽黑客可以被认为是偶尔会为个人企图而戴着黑帽的白帽黑客。典型的灰帽黑客会遵循另一种黑客道德。他认为闯入系统是无可非议的,只要不进行盗窃或破坏保密信息行为就可以。不过,某些人可能会说
13、,闯入系统本身就是不道德的。渗透测试相关概念19点击此处添加脚注信息 公司不应该仅仅执行一次渗透测试。测试应该在一年中重复进行,如每个季度进行一次。而且,公司不应该仅仅依靠一家测试单位,而应该至少由两家测试单位轮流进行。很多公司使用三家测试单位:一家做开始时的前期测试,另外两家按季度轮流测试,用于确保符合行业规范。为了降低成本,一些公司每年进行一次彻底的渗透测试,而在其他三个季度中,每季度进行一次回归测试,此时仅仅检查已报告漏洞。只要系统发生了变化,如在网络中添加了一台新的服务器,就可以使用回归测试。回归测试并不能够提供最精确的结果,但它削减了测试费用。一个简单的渗透测试实例一个简单的渗透测试
14、实例21点击此处添加脚注信息Web网站渗透流程:1、探测信息2、利用漏洞得到管理账号密码3、找到后台4、登录后台取得web权限一个简单的渗透测试实例22点击此处添加脚注信息Web网站渗透流程:1、探测信息2、利用漏洞得到管理账号密码3、找到后台4、登录后台取得web权限一个简单的渗透测试实例23点击此处添加脚注信息在实施第一步骤的时候,我们要得到一些基本信息:1、server服务器的系统大概是什么?2、Web环境是什么情况?3、当前网站的域名ip的什么?一个简单的渗透测试实例24点击此处添加脚注信息通过ping 命令行,得到的结果如图所示:得到当前web ip为:193.168.20.223一
15、个简单的渗透测试实例25点击此处添加脚注信息接下来查看当前服务器运行的服务,在linux终端下输入命令:nmap-sV 193.168.20.223,得到的结果如下:PORT STATE SERVICE VERSION80/tcp open http Microsoft IIS httpd 6.0135/tcp open msrpc Microsoft Windows RPC139/tcp open netbios-ssn443/tcp open ssl/http Microsoft IIS httpd 6.0445/tcp open microsoft-ds Microsoft Window
16、s 2003 or 2008 microsoft-ds1027/tcp open msrpc Microsoft Windows RPC3306/tcp open mysql MySQL(unauthorized)3389/tcp open microsoft-rdp Microsoft Terminal Service一个简单的渗透测试实例26点击此处添加脚注信息然后再来查看当前的操作系统,在linux终端下输入命令:nmap-O 193.168.20.223,得到如下的结果:一个简单的渗透测试实例27点击此处添加脚注信息然后继续查看当前的web环境是用什么搭建的,通过在linux终端输入命
17、令curl-I ,得到如下反馈结果:一个简单的渗透测试实例28点击此处添加脚注信息第二步就是需要得到管理员账号、密码,才能进一步地实施渗透测试。现在我们需要得到一个漏洞能获取到账号密码,通过上一期内容我们知道,注入可以得到所需的内容通过测试,发现http:/193.168.20.223/news.asp?id=50确实存在sql注入漏洞,如图所示:一个简单的渗透测试实例29点击此处添加脚注信息经过测试我们知道,http:/193.168.20.223/news.asp?id=50%20order%20by%2013 显示错误,如图所示:一个简单的渗透测试实例30点击此处添加脚注信息http:/
18、193.168.20.223/news.asp?id=50%20order%20by%2012则显示正确,如图所示:一个简单的渗透测试实例31点击此处添加脚注信息因此,我们得知一共有12个字段。接下来继续猜测账号、密码字段一个简单的渗透测试实例32点击此处添加脚注信息通过猜测一些常见的字段并没有猜到想要的结果,似乎遇到了瓶颈,此时就需要换种思路,去找找后台。之所以要找后台是因为有些网站的程序在后台登录的源码里有账号密码的字段内容,这个字段内容可能和数据库里面是字段信息是一样的,因为整套程序可能出自一个程序员,为了方便,他可能统一字段,此处利用的正是这个心理。根据以往的经验,后台一般是网站后面跟
19、着/admin、/manage等常见的后台目录,这里测试了几个都没有找到一个简单的渗透测试实例33点击此处添加脚注信息发现了后台地址,打开看看一个简单的渗透测试实例34点击此处添加脚注信息那么问题回到刚才,我们没有猜到正确的账号、密码,那么可以查看后台源代码的管理员和密码对应的源码来试试运气,很多次都是可以成功的一个简单的渗透测试实例35点击此处添加脚注信息在这里发现了字段gmadmin,现在我们再回到前头猜出了正确的表段,我们通过变换gmadmin等,最终得到了gmpass字段,猜出了正确的内容一个简单的渗透测试实例36点击此处添加脚注信息账号:admin密码:E00CF25AD42683B
20、3DF678C61F42C6BDA (md5密文)通过查询得到明文密码是admin1一个简单的渗透测试实例37点击此处添加脚注信息看了后台以后发现并没有什么特殊的地方,都是一些文章,没有常见的拿shell方法,比如数据库备份的功能,但是我们找到了一款熟悉的文章编辑器,因为这个后台程序过于单调,没法直接的方式拿到网站权限,所以尝试通过其他方式得到权限一个简单的渗透测试实例38点击此处添加脚注信息这款编辑器叫做ewebeditor,根据以往经验,ewebeditor有个独立的后台程序,但是要找到路径才可以登录,尝试查看了一下源码发现了好东西。在源代码里面写着:src=ewebeditor/eweb
21、editor.asp,这个意思就是ewebeditor就在当前目录的路径下面,完整url路径就是 http:/193.168.20.223/howadmin/ewebeditor/一个简单的渗透测试实例39点击此处添加脚注信息Ewebeditor虽然是个独立的后台程序,但是我们知道,找到后台必须有账号密码才能登录,当然也可以尝试默认的账号密码如admin、admin888、123456等弱口令。这里发现admin_login.asp下面还有一个DB的文件夹,打开一看是这个程序的数据库,非常棒,把它下载下来,从数据库里得到了账号密码一个简单的渗透测试实例40点击此处添加脚注信息由于数据库是mdb
22、结尾的,可以通过一些数据库查看器来查看内容,通过查看发现数据库的内容也是md5加密把内容继续拿到解密,得到了账号和密码的明文,随后便登录后台了一个简单的渗透测试实例41点击此处添加脚注信息一个简单的渗透测试实例42点击此处添加脚注信息在这里直接添加一个asp的样式,因为这个样式表只允许jpg或者bmp结尾的文件上传,所以需要添加一个asp的后缀,然后才能上传asp类型的文件,随后继续提交就更改成功了。返回到样式管理点击下样式预览,点击红色点头的那个按钮,可以传asp的程序了一个简单的渗透测试实例43点击此处添加脚注信息渗透测试44点击此处添加脚注信息小结:本节介绍了渗透测试的相关概念,介绍了一个简单的渗透测试的流程。谢谢收看45