logo资料库

Web安全复习.docx

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
Web 安全复习 题型: 选择题:10 分(10 个) 填空题:20 分(10 个) 简答题:30 分(6 个) 综合分析题:40 分(4 个) Web 应用开发基础 模型-视图-控制器模式,也称为 MVC 模式(Model View Controller)。用一种业 务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面, 在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC 被 独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户 界面的结构中。 它把软件系统分为三个基本部分: 模型(Model) :负责存储系统的中心数据。 视图(View)︰将信息显示给用户(可以定义多个视图)。 控制器(Controller):处理用户输入的信息。负责从视图读取数据,控制用户输 入,并向模型发送数据,是应用程序中处理用户交互的部分。负责管理与用户交 互交互控制。 视图和控制器共同构成了用户接口。且每个视图都有一个相关的控制器组件。控 制器接受输入,通常作为将鼠标移动、鼠标按钮的活动或键盘输入编码的时间。 时间被翻译成模型或试图的服务器请求。用户仅仅通过控制器与系统交互。 MVC 重要特点就是两种分离: 视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不 可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利 于测试。(数据库也是一种外部组件) 视图和表现逻辑(Controller)的分离:Controller 是一个表现逻辑的组件,并非 一个业 务逻辑组件。MVC 可以作为表现模式也可以作为建构模式,意味这 Controller 也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测 试。 优点:耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程
化管理。 缺点:没有明确的定义;不适合小型,中等规模的应用程序;增加系统结构和实现 的复用性;视图与控制器间的过于紧密的连接;视图对模型数据的低效率访问;一 般高级的界面工具或构造器不支持模式。 Web 信息收集 Web 信息收集(探测)即 Web 踩点,主要是掌握 Web 应用的信息,是实现 Web 渗 透入侵的前提。 Web 踩点内容包括操作系统、服务器类型、数据库类型、Web 容器、Web 语言、 域名信息、网站目录等。 Web 信息收集,按照工具和问题,可划分为:搜索引擎、网站扫描、域名遍历、 指纹识别等。 常用搜索引擎:Google Hacking、Shodan Hacking、Zoomeye Hacking。 Web 漏洞扫描 Web 漏洞扫描是在 Web 信息搜集的基础上,进行更进一步的自动化的安全评估、 漏洞挖掘、渗透测试。 Web 漏洞扫描能让我们进一步挖掘目标服务器潜在的 sal 注入、XSS 跨站脚本攻 击、csrf 跨站请求伪造等漏洞。 Web 漏扫虽然能够帮助我们快速的实现自动化漏洞渗透,但是并不是全能的,也 会出现误报,需要手工结合。未经授权对目标服务器/应用进行渗透测试,本质 上就是一种攻击行为,若对目标业务造成影响,可能会有法律职责。 国外的漏洞扫描工具: 商业漏洞扫描工具:Burp Suite、AWVS、APPScan; 开源扫描漏洞工具:ZAP(OWASP)、w3af; 国内的漏洞扫描工具: Safe3 WVS、JSKY、RASA-绿盟远程安全评估系统; Burp Suite java 环境;应用广泛,有漏洞扫描,也有利用插件;功能:代理、爬虫、扫描、 入侵等。 SQL 注入 SQL 注入就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询 字符串,最终达到欺骗服务器执行恶意的 SQL 命令。 对于 Web 应用程序而言,用户核心数据存储在数据库中,例如:MySQL、SQL Server、 Oracle 等,通过 SQL 注入攻击,可以获取、修改、删除数据库信息,并且通过 提权来控制 Web 服务器等其他操作。 SQL 注入事件:CSDN 600 万用户信息泄露、社保信息等信息泄露事件。 SQL 注入可以做什么? SQL 注入分类 以注入位置分类:GET 注入、POST 注入、Cookie 注入、搜索注入; 以参数类型分类:字符注入、数字注入; 以注入技术分类:错误注入、布尔注入、UNION 注入、时间盲注(延时注入)、 ASCII 逐字解码(折半猜解)。 查询数据库、读写文件、执行命令。
典型的注入流程 判断是否有 SQL 注入漏洞; 判断操作系统和数据库类型; 获取数据库信息:获取数据库账号信息——管理员信息、获取数据库用户信息— —拖库; 加密信息破解; 提升权限:控制服务器、Webshell 执行系统命令、后台登录; 内网渗透。 布尔注入思路:闭合 SQL 语句;构造 or 或 and 逻辑语句;注释多余的代码。 常见注入语句:’or 1=1—‘、’admin’ and 1=1—‘、’or’1’=’1。 UNION 注入:UNION 语句用于联合前面的 SELECT 查询语句,合并查询更多信息 一股通过错误和布尔注入确认注入点之后,便开始通过 UNION 语句来获取有效信 息。 常见注入语句:’union select null,null—‘。 Information scheme 是 MySQL 自带的数据库,提供了访问数据库源数据的方式。 UNION 注入查询数据库: ‘union select 1, table_name from INFORMATIONA_SCHEMA.tables--‘ UNION 注入查询表: ‘union select 1, column_name from INFORMATIONA_SCHEMA.columns where table_name=’users’- -‘ UNION 注入查询数据值: ‘union select user,password from users--‘ 时间盲注:1' and sleep(2) --‘ 自动化 SQL 注入工具:SQLmap、Havij(胡萝卜)、Pangolin(穿山甲)。 SQLmap 简介最强大的 SQL 注入渗透测试工具:效率,准确性、参数都是最好的。 基于 Python 编写,跨平台,基于命令行集成从注入探测到漏洞利用的渗透功能。 支持常用的 SQL 注入技术;支持探测 DBMS 的数据库和账号信息;支持枚举数据 库/表/列并导出;支持主流数据库:MySQL,Qracle,SQL Server,Access 等;支持 WAF/IDS/IPS 检查和绕开,采用代理实现隐藏;支持提权操作,进一步与数据库、 操作系统进行操作。 SQLmap 的常用参数-GET 方法注入为例: -u 参数:当注入页面的参数以 GET 方法发送给服务器,则直接用-u 参数,将带 有参数的 URL 发给 SQLmap 处理。 -p 参数:可以手工指定 URL 中的参数名称 -f 参数:给出操作系统和数据库信息 --users:给出当前数据库用户信息 --dbs:给出当前数据库信息
带 cookie 的注入—POST 方法注入为例 设置到带 cookie 才能访问的注入页面,可以采用 r 参数实现; 可 用 burpsuite/tamper 等 代 理 工 具 , 拦 截 POSt 请 求 内 容 , 将 内 容 保 存 到 POST.tst 文件中,并请求调用。 数据获取:拖库是如何操作的? 语法: --users:查看所有管理员账号 --privileges -U user:查看当前账号权限 --dbs:查看所有数据库 --current-db:查看当前使用的数据库 --tables -D "databse":查看当前数据库的数据表 --columns-T "fields"-D"database":查看此字段内容 --schema -batch -exclude-sysdbs:查看元数据 dump -all 保存所有数据到本地 Dump -C "username,password"-T "fields"-D "database": 保存数据表制定内容到本地 提权操作 文件读写 --file -read="/etc/passwd" --file - write="shell.php" --file -write="shell.php"-file -dest"tmp/shell.php" 与数据库交互 --sql -shell 与操作系统交互 --os cmd 原理:存储过程,或者用户自定义函数 在 MS SQL Server 中,存储过程是“xp_cmd-shell" 文件上传攻击 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了 执行服务器端命令的能力。 原理:一旦黑客拿到 Webshell,则可以拿到 Web 应用的数据,删除 Web 文件, 甚至本地提权,进一步拿下整个服务器甚至内网渗透。 SQL 注入攻击的对象是数据库服务,文件上传漏洞主要攻击 Web 服务,实际渗透 过程一般结合起来,达到对目标服务的深度控制。 上传 Webshell 假如服务器端对用户提交参数或者文件没有进行过滤或者过滤不当能够直接上 传 WebShell。如果恶意文件如 PHP、ASP 等执行文件绕过 Web 应用顺利执行,则 相当于黑客拿到了 Webshell。 上传了 webshell 可以干什么? 拿到 web 应用的数据;删除 Web 文件;本地提权,进一步拿下整个服务器甚至内 网渗透。 文件上传漏洞渗透:上传 WebShell(挂马) 小马:一句话木马也称为小马,即整个 shell 代码量只有一行,一般是系统执行 函数。通过精心的(一句话)木马构造,绕过防火墙检测("过狗"),是渗透测试 一个细分领域。
常用的 PHP 后门函数包括 exec、shell_exec、system、eval、assert 函数。 一句话木马:黑客在注册信息的电子邮箱或者个人主页等中插入类似如下代码: <%execute request("value")%> 知 道 了 URL , 就 可以 利 用 该 网 页进 行 连 接 得 到 Webshell。 基于 eval 函数的木马该函数是国产知名 shell 管理工具“中国菜刀”所使用的 基于 system 函数 基于 shell_exec 函数 基于 assert 函数 文件上传漏洞渗透:直接上传,漏洞攻击:挂马、上传大文件。 绕过客户端检测上传 WebShell,绕过前端限制有 n 多种方法,最常见的两种方 法:直接在浏览器插件通过 firebug 修改、通过 burpsuite 直接拦截修改。 服务器绕过:绕过扩展名限制 绕过服务端文件扩展名检测上传 WebShell 服务器端文件扩展名检测是利用服务器端应用程序检测用户上传文件的后缀名, 从而做出允许或者阻止的一种方法,该方法包含黑名单和白名单两种形式。 黑名单检测:一般是建立一个专门的 blacklist 文件,里面枚举常见的危险文件 后缀。 白名单检测:一般是定义一个允许或者阻止用户上传文件类型的后缀的 文件,里面枚举相应的文件后缀。 绕过黑名单检测方法 文件名大小写绕过:诸如 AsP、Aspx 之类的后缀绕过黑名单检测。 黑 名 单 列 表 绕 过 : 用 黑 名 单 里 没 有 的 后 缀 文 件 进 行 攻 击 , iis 默 认 执 行.asp、.asa、.cer,有时候黑名单过滤不全,没有过滤掉像后缀为 asa、cer 之类的文件,但这些文件可以像 asp 文件一样执行,此时可以使用这些后缀绕过 黑名单。 特 殊 文 件 名 绕 过 : 比 如 发 送 的 HTTP 包 里 把 文 件 名 改 成 test.asp. 或 test.asp_(下划线为空格),这两种命名方式在 windows 系统里是不被允许的, 所以需要在代理工具 burpsuite 进行修改,然后绕过验证后,会被 windows 系统 自动去掉后面的点和空格,但注意 Unix/Linux 系统没有此特性。 0x00 截断:在许多语言的常用字符串处理函数中,0x00 被认为是终止符,比如 应用只允许上传 jpg 图片,那么可以构造文件名为 2.asp%00.jpg,.jpg 绕过了 应用的上传文件类型判断,但对于服务器来说,此文件因为%00 字符截断的关系, 最终会以 2.asp 存入路径里。
绕过白名单检测方法 0x00 截断:基于白名单检查主要使用 0x00 截断绕过,同黑名单 0x00 截断绕过。 文件上传漏洞防御: 文件类型/大小/后缀检测 Web 前端通过 Javascript 验证:验证文件扩展名,文件大小 Web 后端检测 MIME 类型等:白名单过滤、文件重命名、文件大小 最小权限运行 Web 服务 例如用 Root 权限运行,被拿到Webshell 的同时,整个 Root 权限也直接被拿下 上传文件目录修改权限 不给执行权限,即使上传了木马文件,也无法执行;读写权限分离 安装 WAF 进入深度检测 类似图片木马,由于写到图片里,并且经过了编码,因而有些 WAF 也无法检测到 加密狗,阿里云盾,D 盾 Web 查杀,modsecurity 跨站脚本攻击(XSS) 跨站脚本攻击(Cross Site Scripting)是指攻击者利用网站程序对用户输入过 滤不足;输入可以显示在页面上对其他用户造成影响的 HTML 代码;从而盗取用 户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。 为了与层叠样式表( Cascading Style Sheets)的缩写 CSS 区分开,跨站脚本攻 击通常简写为 XSS。 XSS(Cross Site Scripting)跨站脚本攻击是基于客户端的 Web 攻击,跟 SQL 注入攻击一样稳居 OWASP 前三,危害极大。 XSS 即攻击者构造脚本(一般是 Javascript)到 Web 页面,受害者通过点击链接 即被攻击。 XSS 攻击点一般出现在网页中的评论框、留言板、搜索框等"用户输入"的地方。 XSS 漏洞形成主要是 Web 服务端没有对脚本文件如 用户访问该链接 http://172.16.70.214 用户被 HOOK 到 172.16.70.216:3000/hook.js
DOM 型 XSS 是通过修改页面 DOM 节点数据信息而形成的 XSS 跨站脚本攻击。 不同于反射型 XSS 和存储型 XSS,基于 DOM 的 XSS 跨站脚本攻击往往需要针对具 体的 Javascript DOM 代码进行分析,并根据实际情况进行 XSS 跨站脚本攻击的 利用。 查看响应页面是否包含能够操作 DOM 节点的 js 函数,常见此类函数如下: document.location:返回一个 Location 对象,包含有文档的 URL 相关的信息, 并提供了改变该 URL 和加载其他 URL 的方法。 document.URL、document.URLUnencoded、document.referrer、window.location 逐项查找响应页面中包含上述函数的代码,确定该部分代码如何处理用户可控制 数据。 手工 XSS 渗透:常用 HTML 标签 页面重定向: 弹框警告并重定向:可用于克隆网站收集账户 访问恶意代码: 巧用图片标签: 绕开过滤的脚本:大小写: document.location
其他绕过过滤的方法:大小写、特殊编码、代码混淆。 高级安全级别:安全转义函数,只输出文本。 BeEF 是目前最大的浏览器开源渗透测试框架,通过 XSS 漏洞配合 JS 脚本和 metasploit 进行渗透,基于 Ruby 编写,支持图形化界面,操作简单。 XSS 防御:Web 客户端和服务端脚本对用户输入输出字符进行安全过滤和转义; Web 服务器安装 WAF/IDS/IPS 等安全产品,拦截攻击代码;浏览器设置为高安全 级别,Cookie 属性 HttpOnly 设置为 true,防止被]JS 调用;关闭浏览器自动密 码填写功能,防止被钓鱼页面/表单窃取账号密码。 跨站请求伪造 Cookie:用户登录网站之后生成;保留在客户端;由服务器指定有效时间,在规 定时间内都可以使用。 Session:Session id 一般在用户登录网站时生成;保留在服务端;用户推出时 session 失效。 Cookie 和 session 只是基于有效时间和存储位置的不同叫法和表现方式,本质 上就是一个“会话”标识,方便 web 服务器识别客户端,不同 web 应用/服务在 处理用户身份登录信息时,采取的方式完全不同,有些结合使用,有些基于 cookie。 CSRF(Cross Site Request Forgery):即攻击者挟持用户执行非用户本意的操 作。CSRF 一般是一个网页链接,整个攻击过程就是用户点击这个链接,所以被 称为“one-click attack”。CSRF 与 XSS 是不同的,但二者可以结合。CSRF 比 XSS 更难检测和隐蔽。攻击主要集中在用户端。防御主要在服务端。 XSS+CSRF:用户访问某链接,黑客诱惑用户点击恶意链接,获取用户 cookie, session,token,诱惑用户发起转账请求。 BeFF+XSS 实现 CSRF 示例(GET 方法):密码修改页面、防止存储型 XSS 脚本、CSRF 构造、肉鸡访问密码修改链接。 跨站请求伪造的防御:Token 验证机制:若网站存在 XSS 漏洞,则不起作用;二 次认证;Refer 检测:如果网站请求不是来自于同一域,则拒绝,但不是经常其 作用。 命令执行漏洞:当应用需要调用一些外部程序去处理内容的情况下,就会用到一 些执行系统命令的函数。如 PHP 中的 system,exec,shell_exec 等。当用户可 以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命 令执行攻击。 示例: 114.114.114.114&&uname -a 114.114.114.114&&pwd 114.114.114.114&&ls -l 114.114.114.114&&cat /etc/passwd 114.114.114.114&&cat /etc/shadow 中级别过滤:黑名单过滤绕过 在操作系统中,“&、|、||"都可以作为命令连接符使用。 高级别过滤:把输入信息根据字符分为 4 个字节,判断是否整数,将 4 段数字再 凑为 IP 格式。但该方法不通用,不同环境防御措施不同。
分享到:
收藏