扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2007年3月2日
关键字:
我还喜欢做这样一种测试:以管理员的身份合法登录,打开任何管理页面(例如,“添加新用户页”),然后注销登录。当会话终止(通过打开一个浏览器来确认)后,点击这个书签。令人吃惊的是,应用程序往往自动授以我管理员权限。
另一个技术就是查看以及被注释掉但还没有从基线(baseline)中删除的死代码。在这种情况下,我会以客户(或者任何权力有限的用户)身份登录,并尝试浏览死代码。重复一次,许多死代码依然保存在基线中。
开发者常常会在开发阶段建立一个起始页面(这个页面不会被配置)——它略去了登录过程并建立起一个测试环境。在发布系统的时候,网络程序员一般会把注释掉这个初始调用,或者把这个测试页面重命名后依然把它留在Webroot目录下。
我会检查这些代码来判定是否存在多个登录也就是启动页面,并看看其中是否有一个可以让我以管理员身份访问系统而无需提供任何凭证。我还会尝试在controls外围登录,特别是在开发者提供导航指南的情况下。如果不清除Internet临时文件的话,它们就提供了有用信息。如果应用程序清楚的希望我往右走,我就试着往左走,看看它是否有防止用户背道而驰的机制。
总的来说,开发者不需要为访问权限设置错误负责——除非应用程序构建在访问权限基础上。例如,如果一个网络应用程序要求有一个可以进行全局可写的特定的目录(更糟糕的情况是这个目录的权限设置为所有人都是可读、可写和可执行),这样应用程序提供一个极好的可以隐藏(也有可能是触发)恶意逻辑的场所。
许多应用程序都有存储临时报告的目录。我常常会修改URL来浏览该目录,这样我就知道了该目录的权限设置。如果应用程序提供了ad hoc查询功能(为了存储查询结果,这些目录一般是全局可写的),我就会尝试传送一个可执行文件到该目录,然后通过浏览器来调用它,看看它是否执行。
如果应用程序提供了任何上载功能,我就会检查执行权限。应该很少人有网络目录下文件的执行权限;用户也不应该获得服务器上可运行程序的执行权限。如果我能在应用程序外shell(这种情况常常发生),那么任何产生的过程都属于某个优先帐号(例如“oracle”、“root”或者“system”)并拥有它所属帐号的权限。如应用程序应当适当控制对上载数据的访问,否则就会潜在产生问题。另一个常见错误就是对上载目录的权限设置太弱。
尽管我列举的清单没有包含所有情况,但它包含开发者在构建基于网络的应用程序的过程中的常见错误。网络上有许多非常棒的资源,开发者和测试者可以从中获得关于常见漏洞的更多信息。我强烈建议所有的开发者都阅读OWASP2004报告。你也应该读读SANS的TOP20列表。尽管它并没有针对网络应用,但它会教给开发者防范漏洞的意识。在这些知识的武装下,你应该能够避免绝大部分常见的陷阱。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者