11.1 Web应用程序体系结构及其安全威胁
Web应用程序是一种使用浏览器在互联网或企业内部网上进行访问操作的应用软件形态,通常以浏览器支持的语言(如JavaScript等脚本语言及HTML等渲染标记语言)所编写,或能够在浏览器控制的环境中运行,依赖于浏览器来对应用程序进行渲染和执行
Web应用安全威胁:
- 针对浏览器和终端用户的Web浏览安全威胁。如网页木马,网站钓鱼
- 针对传输网络的网络协议安全威胁,如明文传输监听,拒绝服务攻击等
- 系统层安全威胁,web站点的宿主操作系统,存在着远程渗透攻击和本地渗透攻击威胁
- Web服务器软件安全威胁。如IIS和Apache的漏洞
- Web应用程序安全威胁,编程实现Web应用程序时,由于缺乏安全意识或者有着不良的编程习惯,导致Web应用程序出现安全漏洞。如SQL注入攻击,XSS跨站脚本攻击等
- Web数据安全威胁,web后台存储的数据,存在被窃取,篡改及输入不良信息等威胁。
11.2 Web应用安全攻防技术概述
针对Web应用程序的探测和漏洞发现有以下技术:
- 手工审查Web应用程序结构与源代码。这个技术就是通过手工浏览Web应用的各个页面,菜单,目录,来查看关键页面的源代码
- 自动下载与镜像Web站点页面。在不同操作系统上通过不同的工具软件对目标Web站点指定URL所对应的页面,或符合镜像设置的页面列表进行下载,并查看,搜索与分析本地保存的页面源代码
- 使用Google hacking技术审查与探测Web应用程序。通过google的高级搜索与挖掘技巧,来寻找一些关注的信息
- Web应用程序安全评估与漏洞探测。透彻理解目标应用程序的体系结构和设计思路,找出可能存在的薄弱环节,最后再循序渐进的总结出针对这个Web应用程序的详细攻击步骤。
Web服务器平台中的安全漏洞主要分为以下几大类。
- 数据驱动的远程代码执行安全漏洞
- 服务器功能扩展模块漏洞
- 样本文件安全漏洞
- 源代码泄露
- 资源解析攻击
Web应用程序安全威胁:
- 针对认证机制的攻击
- 授权机制的攻击
- 客户端攻击
- 命令执行攻击
- 信息暴露
- 逻辑攻击
Web站点除了通过服务器软件和应用程序中存在安全漏洞和弱点遭受攻击之外,还面临着针对敏感数据内容的攻击威胁,具体包括安全敏感数据泄露,网站内容遭受篡改,以及不良信息内容上传。
Web应用安全防范措施:
- Web站点网络传输安全设防措施
1.尽量使用HTTPS
2.通过加密的连接通道来管理Web站点
3.对关键的Web服务器,设置静态绑定MAC-IP映射 - Web站点操作系统及服务安全设防措施
1.及时打补丁
2.提前对存在的漏洞进行发现和修补
3.关闭一些可能存在漏洞的服务 - Web应用程序安全设防措施
1.谨慎采用动态页面技术
2.使用具有良好安全声誉及稳定技术支持力量的Web应用软件包
3.在必要时候自主或外包开发Web应用程序,在开发和部署过程中重视安全变成,持续性的安全测试与维护
4.使用Web服务器软件提供的日志功能,对Web应用程序的所有访问请求进行日志记录与安全审计 - Web站点数据安全设防措施
1.提高网站维护人员的安全意识
2.对数据进行日常监测与防护
11.3 SQL注入
攻击原理:SQL注入是利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术,这类被攻击的漏洞被称为SQL注入漏洞,是由于用户输入没有被正确地过滤以消除SQL语言中的字符串转义字符,如引号(’)等。向Web应用程序提供的用户输入接口输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。
SQL注入攻击步骤和过程
1.发现SQL注入点
2.判断后台数据库类型
3.后台数据库中管理员用户口令字猜测
4.上传ASP后门,得到默认账号权限
5.本地权限提升
6.利用数据库扩展存储过程执行Shell命令
SQL注入攻击工具
Wposion:能够在动态Web文档中找出SQL注入漏洞
wieliekoek.pl:能够进行SQL注入漏洞探测
SPIKE PROXY:允许使用者对待注入的字符串进行定制,并执行自动化的SQL注入测试
SQL注入攻击防范措施
1.使用类型安全的参数编码机制。注意参数的类型安全
2.凡是来自外部的用户输入,必须进行完备检查
3.将动态SQL语句替换为存储过程,预编译SQL或ADO命令对象
4.加强SQL数据库服务器的配置和连接
11.4 XSS跨站脚本攻击
XSS(Cross Site Scripting)跨站脚本攻击的最终目标不是提供服务的Web应用程序,而是使用Web应用程序的用户。XSS跨站脚本漏洞存在于Web应用程序中,使得攻击者可以在Web页面中插入恶意的HTML或JavaScript代码,当用户浏览该网页时,客户端浏览器就会解析和执行这些插入的代码,从而造成获取用户敏感信息,客户端渗透攻击等危害后果。这种攻击最终的受害者是访问这些Web服务器的其他用户
XSS攻击类型
安全业界普遍将其分为两种主要的XSS漏洞类型,即持久性XSS漏洞和非持久性XSS漏洞。利用这两类漏洞的攻击也被称为持久性XSS攻击与非持久性XSS攻击。
持久性XSS漏洞通常出现在一些可以将用户输入持久性地保存在Web服务器端,并在一些正常页面中持续性地显示,从而能够影响所有访问这些页面的其他用户,这种漏洞通常出现在留言本,BBS论坛,博客等Web应用程序中,
非持久性XSS漏洞,当Web浏览器在HTTP请求参数或HTML提交表单中提供的数据,被立即由服务器端脚本使用产生一个提供给该用户的结果页面,而缺乏恰当的请求数据安全验证与过滤,那么就很可能存在着非持久性的XSS漏洞
XSS攻击防范措施
服务器端防范措施:
- 输入验证
- 输出净化
- 消除危险的输入点
客户端防范措施
提升浏览器的安全设置,提高浏览器访问非受信网站时的安全等级,关闭Cookie功能或设置Cookie只读,此外也可以用一些非主流的安全浏览器来降低风险。
我们已经创建了一个Web应用程序,并将其托管在www.SEEDLabSQLInjection.com。 该Web应用程序是一个简单>的员工管理应用程序。 员工可以通过此Web应用程序查看和更新数据库中的个人信息。 此Web应用程序主要有两>个角色:管理员是特权角色,可以管理每个员工的个人资料信息。 员工是一般角色,可以查看或更新自己的个人>资料信息。 完成以下任务。
任务四:SQL对抗,修复上述SQL注入攻击漏洞
这个任务我给个思路吧,关键就是预编译好sql语句,不在代码中组合sql语句。然后用户输入的参数不会对sql语句造成影响。我觉得可以通过格式化字符串来实现。就是完全把用户输入的用户名密码当做参数,不让他与查询语句有联系。
为了演示攻击者可以利用XSS漏洞做什么,我们在预先构建的Ubuntu VM映像中设置了一个名为Elgg的Web应用程序。在本实验中,学生需要利用此漏洞对经过修改的Elgg发起XSS攻击,攻击的最终目的是在用户之间传播XSS蠕虫,这样,无论是谁查看的受感染用户个人资料都将被感染。
任务五:修改受害者的信息:
任务六:编写XSS蠕虫
1.我们开始编写代码,我们的目的就是这段代码能够复制到其他用户那里,那么我们的蠕虫目标就是完成了的,所以我们使用DOM来查看和使用HTML代码,innerHTML方法是开始和结束标签之间的HTML。。我们将下面的程序放在Alice的about me中。
代码如下:
这次实验总体难度还是有的。实验任务量有点繁多,当然,实验原理也是浅显易懂的。总体来说,这次实验暴露了自己很多方面的不足,数据库,JavaScript等等。还需要深入学习
问题1:一直下载不了seed 16.04
换了个源下载成功了,不过也是挺耗时的
问题2:不会用http header Liver
咨询了孙启龙同学,得到了解决方案