web应用攻实验.docx
- 文档编号:4164336
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:18
- 大小:1.78MB
web应用攻实验.docx
《web应用攻实验.docx》由会员分享,可在线阅读,更多相关《web应用攻实验.docx(18页珍藏版)》请在冰豆网上搜索。
web应用攻实验
Web攻击实验实践
实验十web应用攻击
1、实验目的
通过该实验,使学生认识到web应用攻击的原理和危害,通过该实验,了解web应用攻击的原理,掌握web应用攻击的方法和对策。
2、实验类型
验证型,2学时,必选实验
3、实验要求
要求了解web应用攻击的原理,掌握web应用攻击的方法和对策等。
4、预备知识
目前Web技术在客户和服务端的广泛利用,导致黑客们越来越倾向于使用各种攻击手法来进行Web应用攻击,即绕过了防火墙等常规防护手段,也使得攻击手段更加简便和多样化,令人防不胜防。
黑客们普遍使用Web进行攻击的做法是有原因的:
Web应用攻击1.服务器漏洞
由于存在漏洞和服务器管理配置错误,InternetInformationServer(IIS)和Apache网络服务器经常被黑客用来攻击。
Web应用攻击2.Web服务器虚拟托管
同时托管几个甚至数千个网站的服务器也是恶意攻击的目标。
Web应用攻击3.显性/开放式代理
被黑客控制的计算机可以被设置为代理服务器,躲避URL过滤对通信的控制,进行匿名上网或者充当非法网站数据流的中间人。
Web应用攻击4.HTML可以从网页内完全不同的服务器嵌入对象
用户可以从特定网站请求浏览网页,只自动地从Google分析服务器等合法网站下载对象;广告服务器;恶意软件下载网站;或者被重新导向至恶意软件网站。
Web应用攻击5.普通客户机可能是黑客的试水石
InternetExplorer、Firefox等各种浏览区以及Windows操作系统中包含了很多可以被黑客利用的漏洞,特别是在用户经常不及时安装补丁的情况下。
黑客会利用这些漏洞在不经用户同意的情况下自动下载恶意软件代码——也称作隐藏式下载。
因此他们可能经常变成被黑客控制的傀儡,在访问您网站的同时,给您的Web应用带来风险。
Web应用攻击6.各种移动代码、跨站脚本在网站上被广泛使用
在浏览器中禁用JavaScript、Javaapplets、.NET应用、Flash或ActiveX似乎是个好主意,因为它们都会在您的计算机上自动执行脚本或代码,但是如果禁用这些功能,很多网站可能无法浏览。
这为编码糟糕的Web应用开启了大门,它们接受用户输入并使用Cookies,就像在跨站点脚本(XSS)中一样。
在这种情况下,某些需要访问与其他开放页面的数据(Cookies)Web应用会出现混乱。
任何接受用户输入的Web应用(博客、Wikis、评论部分)可能会在无意中接受恶意代码,而这些恶意代码可以被返回给其他用户,除非用户的输入被检查确认为恶意代码。
Web应用攻击7.对HTTP和HTTPS的普遍访问
访问互联网必须使用Web,所有计算机都可以通过防火墙访问HTTP和HTTPS(TCP端口80和443)。
可以假定所有计算机都能够访问外部网络。
很多程序都通过HTTP访问互联网,例如IM和P2P软件。
此外,这些被劫持的软件打开了发送僵尸网络命令的通道。
Web应用攻击8.在邮件中采用嵌入式HTML
由于SMTP电子邮件网关会在一定程度上限制可以邮件的发送,黑客已经不经常在电子邮件中发送恶意代码。
相反,电子邮件中的HTML被用于从Web上获取恶意软件代码,而用户可能根本不知道已经向可以网站发送了请求。
从上面这些黑客常用的攻击方向中我们可以看到,为了避免使我们成为以上这些黑客关注的对象,我们需要一种专门针对Web应用进行全面防护的设备,部署一个立体防护的层次,使其能自动智能化地对黑客的这些攻击手段进行判别和防护。
而非使用一个或多个传统的只有固定策略或固定攻击特征库的被动防护网关来解决。
WEB应用防火墙的出现就是为了专门解决这方面难题的,应用防火墙通过执行应用会话内部的请求来处理应用层,它专门保护Web应用通信流和所有相关的应用资源免受利用Web协议或应用程序漏洞发动的攻击。
应用防火墙可以阻止将应用行为用于恶意目的的浏览器和HTTP攻击,一些强大的应用防火墙甚至能够模拟代理成为网站服务器接受应用交付,形象的来说相当于给原网站加上了一个安全的绝缘外壳。
其中代码注入是针对web应用程序主流攻击技术之一,在OWASP公布的top10攻击中一直排在前几位。
代码注入攻击通过利用web应用程序的输入验证不完善的漏洞是web应用程序执行由攻击者所注入的恶意指令和代码,造成名信息泄漏、权限提升或对系统的未授权访问等危害。
代码注入根据攻击目标的不同分为:
●恶意读取、修改与操纵数据库的SQL注入工具;
●在web服务器端安装执行webshell等恶意脚本的PHP注入或ASP注入;
●在web服务器端恶意执行操作系统命令的Shell注入工具;
●其他多种多样的注入攻击,如LDAP注入、邮件命令注入、空字节注入、SSI注入、XPath注入、XML注入、XQuery注入。
在这些注入攻击中,SQL注入是最常见的,也是较为只管的一种攻击技术。
SQL注入
原理:
向web应用程序提供的用户输入接口(如一个动态页面的输入参数、表单的输入框)输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。
示例:
如在一个登录页面,有输入用户名和密码的表单,当我们填写好信息提交后,后台数据库会执行查询语句:
Select*fromaccountswhereusername=‘guojing’andpasswd=‘123’;
但是如果我们在输入框中分别输入“huangrong’or‘1’=‘1”时,sql语句就会变为:
Select*fromaccountswhereusername=‘huangrong’or‘1’=‘1’andpasswd=‘huangrong’or‘1’=‘1’;
在1=1的控制下,where语句永真,会登录没有做输入验证的web应用。
当然,如果支持同时执行多条语句,我们可以在输入框中构造多条sql语句,包括删除任意数据表。
大家考虑一下多条语句的注入怎么写。
另一类常见的SQL注入漏洞是由于不正确的类型处理,没有对用户输入参数进行类型约束的检测,比如一个在sql语句中使用整型字段用户输入,而恶意用户则输入了一个非整型类型的字符串,就有可能导致最终的SQL语句按照用户的攻击目的执行注入指令代码。
示例:
一个要求整型输入的输入框提交后,后台会生成:
Select*fromuserinfowhereid=123;
恶意用户可能把整数换位:
Select*fromuserinfowhereid=123;droptableaccounts;
SQL注入的攻击步骤和过程:
●发现注入点;
●判断后台数据库服务器类型;
●后台数据库中管理员用户口令字猜解;
●上传ASP后门,得到默认账户权限;
●本地权限提升。
XSS(跨站)脚本攻击
与代码注入不同,XSS的最终目标不是提供web应用程序,而是使用web应用程序的用户。
XSS漏洞存在于web应用程序中,使得攻击者可以在web页面中插入恶意的HTML或js代码,当用户浏览该网页时,客户端浏览器就会解析和执行这些插入的代码,从而造成获取用户名信息、客户端渗透攻击等危害后果。
原理:
攻击者利用web应用程序中的安全漏洞,在服务端网页中插入一些的客户端脚本代码,在web服务器上产生出一些恶意攻击页面。
当其他用户访问这些页面时,他们使用的客户端浏览器就会下载并执行这些网页中的恶意客户端脚本,进行解析与执行,从而遭受攻击。
攻击方式包括绕过客户端安全策略访问敏感信息,窃取或修改回话cookie、进行客户端渗透攻击获取访问权限。
大家可以想象一下,如果将用户输入内容替换为“”,则弹出对话框中将显示当前用户在该web站点上的回话cookie,其中可能包含了回话ID、甚至登录口令等敏感信息;而如果攻击者需要窃取所有访问留言页面用户的cookie,则只需要先建立一个自己的网站:
steal_cookie_,然后将输入内容替换为:
“”的方式来完成客户端渗透攻击页面的隐蔽植入。
5、实验环境、工具:
HacmeBank,这个简易的银行系统实现了银行的一些基本业务,包括:
转账、贷款、查看账户等功能。
5.1环境配置:
●安装.net1.1即文件中的dotnetfx.exe。
●安装MicrosoftIIS,文件中有IIS的安装过程,完成后执行下面命令:
c:
\windows\\framework\v1.1.4322\aspnet_regiis-i。
●解压MSDE2000A后在ini文件中设置sa密码即在optiong下面添加两行:
SECURITYMODE=SQL
SAPWD=123,然后安装(sapwd是sa密码),安装结束后启动sql服务。
●安装FoundstoneHacmeBankWebServiceSetupv2.0,安装过程中数据库设置trustedconnection。
●安装FoundstoneHacmeBankWebsiteSetupv2.0
●打开HacmeBankWebSitev2.0即可查看安装是否成功。
5.1实验内容:
HacmeBank三个帐号
通过以下方式可以进入管理后台。
5.2.1Sql注入
1.按照说明配置HacmeBank
2.打开登录界面http:
//localhost/HacmeBank_v2_Website
3.用户名处输入'OR1=1--
4.登录
测试2:
检测各个字段类型
1.用户名处输入'HAVING1=1--
2.登录
从红色提示可以得出:
表名为fsb_users,它有个列为user_id
3.输入'UNIONSELECT*FROMFSB_USERSWHEREUSER_ID='JV'GROUPBYUSER_IDHAVING1=1;--
4.输入'UNIONSELECTSUM(USER_NAME)FROMFSB_USERSHAVING1=1--
测试3:
检测numeric类型字段是否自增
1.输入jv'and1in(selecttop1CONVERT(int,CONVERT(varchar,id)+'__[ThrowAnConvertError]__')fromFoundStone_Bank..sysobjectswhere((name='fsb_users')))--
得到了该tableid。
2.输入jv'and1in(selecttop1CONVERT(int,CONVERT(varchar,colstat)+'__[ThrowAnConvertError]__')fromFoundStone_Bank..syscolumnswhere((name='user_id')and(id=2057058364)))--
Colstat是1说明设置了自增,否则不是自增。
由上图可以看出,当我们想要进行插入操作时,不能设置user_id的值
测试4:
插入语句的注入
1.输入';INSERTINTOFSB_USERS(user_name,login_id,password,creation_date)VALUES('qq','qq','qq789',GETDATE());--
2.使用该用户登录
同样我们可以使用';UPDATEFSB_USERSSETPASSWORD='TEST123'WHERELOGIN_ID='JV'--修改某用户密码,同学自己尝试。
实验:
InsufficientDataValidation
1.登录系统,进入TransferFunds选项。
2.选择外部账户,例如jm的5204320422040004
3.设置代理,IE—>工具-->internet选项-->连接-->局域网设置 。
4.打开parosparos并开启trap。
5.点击Transfer并切换到parosparos。
6.切换到Tabularview修改100为-100,然后点击continue.
8分别登录jc、jm检查两者账户变化。
jc:
jm:
跨站脚本攻击
1.在消息里面填写后提交数据库,然后刷新。
篡改Cookie
浏览器开启代理转发,paros设置捕获response。
输入一个错误密码会显示密码失败的次数,有些网站会对此做限制,因此我们可以修改它。
当下次在熟人错误密码时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 应用 实验