赞
踩
启动问题
端口正常开放
80 http
3306 mysql
web根目录[C:\Users\dq\Documents\phpStudy-1-24\phpStudy\WWW]
什么是表单? 搜索框、登录框、文件上传、注册、留言板 =====> 需要交互
交互: 双向交流
读写执行:
读取 获取信息
写入:发出信息
写操作:
向服务器提交信息(写)
搜集用户信息
小技巧:
管理控制台
查看器
DOM 文档对象模型 树形结构
控制台:
可以执行JS 代码
网络:
页面的网络连接。
存储:
存储了页面的cookie信息。
表单本身是一个框架,表单里会有很多控件(元素)。
<form></form>
action 数据提交到服务器的url,在提交表单时执行的动作,如果为空,提交到当前页面。
method 提交方法
get:默认值,在传输过程,数据被放在请求的URL中,传送的数据量较小,不安全。
url中有显示
url长度有限制
post:无长度限制,所有操作对用户来说都是不可见的。
上传文件等等
http请求正文中
enctype:
application/x-www-form-urlencoded 默认值,特殊字符等都可以被提交
multipart/form-data 上传文件时使用
text/plain 只能将普通的数据提交(少数框架中使用)
name 定义整个表单的名称
元素定义输入域,根据不同的type属性,相应的input元素有很多形态,(name 属性:如果要正确地被提交,每个输入字段必须设置一个 name 属性。)
属性值
text 文本输入
radio 单选按钮输入(选择唯一)
submit 提交按钮(提交表单)
checkbox 复选框
password 密码输入
文本输入
定义用于文本输入的单行输入字段,实例:
单选按钮输入
定义单选按钮,有限数量的选项中选择其中之一,实例:
提交按钮
定义用于向表单处理程序(form-handler)提交表单的按钮。表单处理程序通常是包含用来处理输入数据的脚本的服务器页面。
密码输入
< input type=“password” > 定义密码字段区域,表现效果 (密码字段中的字符是隐藏的(显示为星号或圆圈))
复选框(Checkboxes)
定义了复选框. 从若干给定的选择中选取一个或若干选项。
< textarea >定义一个多行的文本输入控件,文本区域中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。
可以通过 cols 和 rows 属性来规定 textarea 的尺寸大小,不过更好的办法是使用 CSS 的 height 和 width 属性
< button > 标签定义一个按钮。在 < button > 元素内部可以放置内容,比如文本或图像。这是该元素与使用 < input > 元素创建的按钮之间的不同之处。
提示:请始终为 元素规定 type 属性。不同的浏览器对 元素的 type 属性使用不同的默认值。
< select > 元素用来创建下拉列表。< select > 元素中的 < option > 标签定义了列表中的可用选项。< select > 元素是一种表单控件,可用于在表单中接受用户输入
< fieldset > 元素组合表单中的相关数据
< legend > 元素为 < fieldset > 元素定义标题。
<form action="action_page.php">
<fieldset>
<legend>Personal information:</legend>
First name:<br>
<input type="text" name="firstname" value="Mickey">
<br>
Last name:<br>
<input type="text" name="lastname" value="Mouse">
<br><br>
<input type="submit" value="Submit"></fieldset>
</form>
datalist 元素规定输入域的选项列表。
列表是通过 datalist 内的 option 元素创建的。
如需把 datalist 绑定到输入域,请用输入域的 list 属性引用 datalist 的 id:
keygen 元素的作用是提供一种验证用户的可靠方法。
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准
output 元素用于不同类型的输出,比如计算或脚本输出。
渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用、系统或三者组合的安全状况时,不断探索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。
在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用并按照风险等级(高、中、低)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。
从被测系统环境自身触发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒起不了这样的作用。
通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。
开放式Web应用程序安全项目:OWASP(测试指南、开发指南、代码审查指南 OWASP top 10),10大安全威胁要记住并且表述清楚。
注入:sql注入
失效的身份认证:爆破
敏感数据泄露:传输、存储、浏览器的交互数据(后台管理员数据泄露、未授权访问、源码泄露)
xml外部实体(XXE):
失效的访问控制:
安全配置错误:
跨站脚本:
不安全的反序列化:
使用含有已知漏洞的组件:
不足的日志记录和监控:
通过缺陷列表,某一类漏洞编号库CWE
通用漏洞与披露,某一个漏洞编号库CVE
OpenVas是开源的网络漏洞扫描器,自从 Nessus 收费了之后,分支出来的项目。
网址:http://www.openvas.org
web端管理接口
4.9之后支持中文
[gsm-ce-5.0.10.iso]
新建虚拟机
推荐配置
推荐VirtualBox安装
系统:Linux
版本:其他Linux 64位
内存:4G
硬盘:9G
CUPS
渗透测试执行标准(Penet rat ion Testing Execution Standard,PTES)的先驱都是渗透测试行业的精英。这个标准有渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。 [http://www.pentest-standard.org/index.php/Main_Page]
[software:http://www.pentest-standard.org/index.php/PTES_Technical_Guidelines]
从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。
1) 范围界定
在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下。
2) 信息搜集
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。
他们从互联网上搜集信息的互联网渠道主要有:论坛|公告板|新闻组|媒体文章|博客|社交网络|其他商业或非商业性的网站。此外,他们也可以借助各种搜索引擎获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。
3) 目标识别
这个阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务。
4) 服务枚举
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。
5) 漏洞映射===>漏洞扫描
可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。
6) 社会工程学
如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至诱使某人出现在某个地点一这些都属于社会工程学攻击。
在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要实现研究过内的法律是否有关于社会工程学的相关条款。
7) 漏洞利用
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动。
8) 权限提升
获取目标系统的控制权是渗透成功的标识。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能偶在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统级权限。审计人员还可以以该主机为跳板,进一步攻击局域网络。
根据之前渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有可能以各种方式获得与控制系统有关的更多信息。具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限。
9)访问维护
多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如**,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。**这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。**审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。**这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。
10)文档报告
在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。并为了帮助管理人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门]撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比渗透测试前后系统目标的完整性。
当我们输入网址后
主机先查找本地缓存 ====> host文件 ====> IP/ARP ====> DNS ====> IP ====> 网关 ====> 路由 ====> 到达对方主机 ====> 访问80 443端口 ====> 3次握手 ====> 建立连接 ====> HTTP数据包 ====> HTTP响应包(如果访问的.html文件,找到后直接发过来;访问的是.php文件,则需要解析;php连接mysql,则php将数据库的运行结果返回到客户端)
以上这种,只能单向地给用户展示信息。随着Web的发展,信息要双向流动,产生了交互的需求,也就是动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。
脚本的使用让Web服务模式有了"双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,Web架构的适用面大大扩展。
这些脚本 可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在Web服务器的目录里,如.asp、.php、jsp文件等。 这样功能性的脚本越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展。
静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。
Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整"页面,最后送给用户。
HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与Web服务器之间的通信协议,将html文档从Web服务器传输到Web浏览器,是一个请求和响应的协议。HTTP协议使用可靠的 TCP 传输,默认端口80。支持浏览器/服务器模式。
浏览器向服务器提出请求时,只需要传输请求方法和请求路径。
灵活:HTTP运行传输任意类型的数据对象。【.html 纯文本;.jpg 图片;.mp3 音频】
HTTP协议是无状态的协议。
统一资源定位符(网址),用来告诉Web容器,浏览器所请求资源(文件)的路径。例如:
http://localhost/cms/show.php?id=32
schema://login:password@adress:port/path/to/resource/?query_string#fragment
port 80
login 用户名
password 密码 匿名访问时,默认没有这两个内容
fragment 锚点
@ URL编码
URL中允许出现的字符是有限制的,URL中path开始允许直接出现A-Za-z0-9
半角减号(-)、下划线句点(.)、波浪号(~)。其他字符均会被百分号编码。如下:
# %23
[ ] %20,在进行编程的时候,我们会用 + 代替空格
%23 %25%23%33
方法:GET
资源路径:/test/1.html
协议/版本:HTTP/1.1
【实验一:利用telnet模拟浏览器发送HTTP请求】 第一步:telnet 172.16.132.161 80 第二步: GET /php/test/get.php HTTP/ 1.1 HOST: 172.16.132.161 第一步:telnet wwW.baidu.com 80 第二步: GET /HTTP/1.1 HOST:www.baidu.com 【实验二:利用telnet传送GET参数】 GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1 HOST: 172. 16.132.161 【实验三:利用telnet模拟POST请求传递参数】
【从请求报文第二行开始到第一个空行为止之间的内容,其中包含很多字段。】
主要字段
【Host】主要用于指定被请求资源的Internet主机和端口号
【User-Agent】浏览器指纹
【Referer】包含一个URL,代表当前URL的上一个URL
【Cookie】记录请求者的身份认证信息
【Accept-Charset】用于指定客户端接收的字符集
【Content-Type】用于向接收方指示实体的介质类型,即数据类型
【Content-Length】用于指明实体正文的长度,以字节方式存储的十进制数字来表示
【Last-Modified】用于指示资源的最后修改时间和日期
【RESPONSE】响应报文。如下
【Get方法】 没有请求正文。
【POST方法】 可以向服务器提交参数以及表单,包括文件流等。
【HEAD方法】 与GET方法类似,但在服务器响应中只返回首部。
【PUT方法】 与GET从服务器读取文档相反,PUT方法会向服务器写入文档。
【TRACE方法】 回显浏览器的请求。
【OPTIONS方法】 OPTIONS方法请求Web服务器告知其支持的各种功能。
【DELETE方法】 DELETE方法请求服务器删除请求URL所指定的资源。
插件推荐hackbar
响应报文由状态行、响应头、响应正文三部分组成。
【状态行】 协议/版本,状态代码,描述短语 HTTP/1.1 200 0K
协议/版本:HTTP/1.1状态代码:200描述短语:0K
【状态代码】
100~199 信息性状态码
200~299 成功状态码
300~399 重定向状态码
400~499 客户端错误状态码
500~599 服务器错误状态码
【响应头】第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。
【主要字段】
Server 服务器指纹
Set-Cookie 向浏览器端设置Cookie
Last--Modified 服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length 请求正文的长度.
Location 重定向目标页面
Refresh 服务器通过Refresh头告诉浏览器定时刷新浏览器Cookie与Session机制
Cookie 与Session 机制 Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
【响应正文】
一般是返回一个网页。
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有:
从吾爱漏洞上发现一个信息搜集总结,言简意赅,有时间可以自己再重新整理一版简介的渗透测试过程 http://www.52bug.cn/hkjs/6661.html。
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。
【练手网站】
[1] 本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。