20169206 201620172 《网络攻防实践》 第五周学习总结

教材内容总结

第十一章 Web应用程序安全攻防

11.1 Web应用体系

由浏览器作为客户端完成数据显示和展示内容的渲染;服务器端由Web服务器软件、Web应用程序与后端数据库构成,并通过经典三层架构:表示层、业务逻辑层、数据层三层来进行组织与构建。

11.2 Web应用攻防

分为信息收集、攻击软件、攻击应用、攻击数据、安全防范五部分。

11.2.1 信息收集 在本书第三章(第三周作业的博客)中介绍过很多工具,当然也包括强大而方便的google hacking。

11.2.2 攻击web服务器软件 对于服务器上的已知漏洞,找到相关工具即可轻松攻破,然而这种情况越来越少见。漏洞类型主要有五种:数据驱动的远程代码执行安全漏洞、服务器功能拓展模块漏洞、样本文件安全漏洞、源代码泄露、资源解析攻击

11.2.3 攻击web应用程序 这是web应用中安全最薄弱的环节。其安全威胁从攻击角度可分为六类:针对认证机制、授权机制、客户端攻击、命令执行攻击、信息暴露、逻辑攻击

11.2.4 攻击web数据内容 包括安全敏感数据泄露、网站篡改、不良信息内容上传三类。

11.2.5 web应用安全防范措施 书上提到的安全措施很多都是针对已知威胁的,看起来更像是亡羊补牢,但根据目前的状况、似乎也只能这样,或许只有那种非常重要的信息系统才会在花费高昂的成本、牺牲开发速度和易用性的条件下做到很好的安全防范。

11.3 SQL注入

利用web应用程序数据层存在的输入验证不完善型安全漏洞实施的代码注入攻击技术。

11.3.1 SQL注入攻击步骤和过程:

  1. 发现SQL注入点
  2. 判断后台数据库类型
  3. 后台数据库中管理员用户口令字猜解
  4. 上传ASP后门,得到默认账户权限
  5. 本地权限提升
  6. 利用数据库扩展存储过程执行Shell命令

11.3.2 自动化SQL注入工具: 比较著名的有Wposion(能在动态web文档中找出SQL注入漏洞),wieliekoek.pl(能以网站镜像工具生成的输出作为输入进行注入),SPIKE Proxy(允许对待注入的字符串进行定制),SPI Toolkit工具包等等。

11.3.3 SQL注入防范:

  • 使用类型安全的参数编码机制
  • 完备检查来自外部的用户输入
  • 不使用动态SQL语句
  • 加强SQL数据库服务器的配置与连接

11.4 XSS跨站脚本攻击

11.4.1 XSS攻击原理: 是利用web应用程序对用户输入内容的验证不完善,攻击目标是使用web应用程序的用户。

11.4.2 XSS漏洞分类: 持久性(存储性)XSS漏洞、非持久性漏洞。

11.4.3 XSS攻击防范: 在服务器端进行输入验证、输出净化、消除危险的输入点等措施;在客户端主要是提升浏览器的安全设置

第十二章 Web浏览器安全攻防

12.1 Web浏览器的安全威胁

浏览器安全困境三要素:复杂性、可扩展性、连通性。其安全威胁位置有:网络协议、浏览器端系统平台、插件、社会工程学。

12.2 网页木马

是对web浏览端软件进行客户端渗透攻击的一类恶意移动代码。

12.2.1 网页挂马机制

  • 内嵌HTML标签
  • 恶意Script脚本
  • 内嵌对象链接
  • ARP欺骗挂马

12.3 网络钓鱼

主要是通过社会工程学手段。

教材作业实践

SQL注入实践

1.打开seed虚拟机,使用命令sudo service apache2 start启动apache,发现一条提示,意思就是不能可靠地确定域名,如图

即使右下角标着OK,但我还是不放心,但是,别人配置好的环境,不可能一上来就出问题啊!提示说用回送地址访问服务器,我就想,没域名也没关系,有ip就行了,反正发明域名的原因就是ip不好记,直接用ip皆可以了,然后,果然是可以的。

2.关闭对抗措施,建议使用sudo gedit php.ini,gedit有图形化,sudo是为了有权限保存。

SELECT语句注入

题目要求是在不知道用户名密码的情况下,利用SQL注入漏洞登录进系统。
解决思路

  1. 初步的想法: 题目中给了包含SQL语句的登录源码,利用SQL注入的基本原理(教材P446-447),用OR+永真式通过用户名认证的检测,密码认证需要先经过MD5,我就想找到一个经过MD5哈希后内容为OR+永真式的字符串。
  2. 答案的做法: 答案的是在用户名输入ted'#,密码空着就行,ted是一个已经存在的用户名,用单引号结束这个字符串,用#转义掉后面的语句。获取用户名也很容易,直接点击memberlist就可以看到用户列表。
  3. 看了的答案之后的想法: 利用SQL中的注释,将后面的语句注释掉,替代#的作用,SQL中单行注释是--,后面最好加个空格,即输入bob'-- ,bob也是一个已知的用户名,经验证也是可以的。
  4. 一个新的发现: 只在用户名出输入单引号,会使这条SQL语句错误,或者其他使这条语句错误的方法,系统会报错并返回发生错误的源码即可得到题目中给出的源码,如图,

    也就是说,可以不用任何提示,就可以得到源码,并分析出漏洞。

UPDATE语句注入

题目要求在profile里面,在不知道其他人密码的情况下修改其资料。这个题没答案,只能自己做了。
解决思路

  1. 找到注入点: ** 在可供我们填写的框中,有四类:邮箱、密码、个人资料、时间格式。系统会对邮箱进行格式验证,会对密码记性MD5处理,这两处肯定不行。个人资料会被直接存入,不构成SQL语句字段。前三处我试了下,果然都不行,只有最后一处时间格式**。
  2. 获取更新资料的SQL源码: ** 仿照SELECT注入的思路,在时间格式处输入是SQL语句产生错误的语句,等待其返回SQL语句源码,如图,

    返回的SQL语句如图,

    从这条语句可以看出,前面修改资料的各项也都是可以注入的(除了signature项),打脸了。那么就随便找个注入吧,结果发现,这些注入点
    对输入长度有限制**,只能改短注入语句。注入语句如图,6为ted的编号,可通过memberlist查到

    注意,实际的id编号是比在memberlist中大1的,ted在memberlist中编号为5,这点我是在错误语句中发现的,下图为我的memberlist截图,

    选取的注入点为Interest输入框,这样就好改前面的语句,而且该框允许输入的内容较长,填写如图,

    提示修改成功,没来的及截图,查看ted资料,修改成功,如图

XSS实验

XSS实验相对SQL简单一些,答案也全,上两个结果截图。

视频学习记录

kali漏洞分析之数据库评估(视频16、17)

bbqsql: python写的半自动sql盲注工具
DBPwAudit: 破解数据库用户名密码
HexorBase: 破解数据库密码并能简单操作数据库,具有图形界面
JSQL: java编写,针对已存在的注入漏洞的利用,有图形化界面
oscanner和sidgusser: 针对oracle的口令破解工具

sqlsus: 开源的mysql注入和接管工具,perl编写
sqlninja: perl编写,针对sqlserver

神器sqlmap

开源、Python编写

  1. 首先需要一个dvwa做靶,经男神@201690205吴乐提示,dvwa需要自己下,下一个叫metasploitable2的虚拟系统,这是下载的地址https://sourceforge.net/projects/metasploitable/?source=typ_redirect。打开虚拟机,看一下ip,在kali的浏览器中,输入这个地址,点击dvwa,就可以看到了,如下图。进去后将安全性调到低。

  2. 获取cookie,如图

  3. 然后就可以像视频那样输入命令测试了,下面简单的上个图,

kali漏洞分析之web应用代理(视频18)

burp suite

攻击web应用程序的集成平台,按照视频上说的,简单试了下代理,如图,

OWASP ZAP: 一款查找网页应用程序漏洞的综合类渗透测试工具。
VEGA: 开源的web应用程序安全测试平台,Vega能帮助验证SQL注入、跨站脚本(XSS)、敏感信息泄露和其他一些安全漏洞。Vega使用java编写,有GUI,可以在多平台下运行。Vega类似于Paros Proxy, Fiddler, Skipfish and ZAproxy。
Paros: 是一个对web应用程序的漏洞进行评估的代理程序,是一个基于Java的web代理程序,可以评估web应用程序的漏洞。

kali漏洞分析之brupsuite(视频19)

使用其中的intruder,如图,

由于我找不到字典,使用暴力破解,调一下密码长度修改一下字符集什么的,降低其运行时间,如图

但运行起来还是超级慢,看到他会慢慢的一个个试,因为是免费版,如图是运行过程,

kali漏洞分析之Fuzz工具(视频20)

bed: 是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,如缓冲溢出,格式串漏洞,整数溢出等。
Fuzz_ipv6: THC出品的针对IPV6协议的模糊测试工具。
powerfuzzer: 有gui的fuzz工具。BurpSuite等WEB代理也具有响应Fuzz能力。
Wfuzz: 针对WEB应用的模糊测试工具,主要功能都依赖于字典。参数中FUZZ相当于一个变量,用字典中的字段来替换它完成猜解,比BurpSuite更加轻量级。

学习中遇到的问题及解决

都写在前面了,前面的内容大部分都是遇到的问题和解决办法,单独放在这里会显得比较杂乱。

学习进度条

按照作业来,按时完成作业。

参考资料

《网络攻防技术与实践》(诸葛建伟编著)

原文地址:https://www.cnblogs.com/yp1692/p/6628949.html