教材学习内容总结

  • 传统C/S架构的计算B/S架构
    “瘦”客户端:Browser (Web客户端)
    “厚”服务器:Web服务器、Web应用程序、数据库…
    通讯机制:HTTP/ HTTPS

  • web应用体系结构中的关键组件:浏览器、web服务器、web应用程序、数据库、传输协议HTTP/HTTPS

  • 手工审查web应用程序结构与源代码:静态和动态生成的页面、目录结构、辅助性文件、输入表单、查询参数字符串

  • Google Hacking是一种最高效的审查与探测方法

  • 针对web应用程序的攻击主要集中在身份验证、会话管理、数据库操作、输入数据合法、合理性检查

  • web应用安全辅助分析工具主要包括:浏览器插件、免费工具集、商业web应用安全评估系统和漏洞扫描器

  • web服务器平台中的安全漏洞主要分为:数据驱动的远程代码执行安全漏洞、服务器功能扩展模块漏洞、样本文件安全漏洞、源代码漏洞、资源解析攻击

  • 目前最薄弱的环节在web应用程序

  • 2004年发布的《WASC Web安全威胁类v2.0》将web应用程序安全威胁从攻击技术分为:针对认证机制的攻击、授权机制的攻击、客户端攻击、命令执行攻击、资源暴露、逻辑攻击

  • 代码注入是针对web应用程序的主流攻击技术之一

  • SQL注入是目前最为常见,也是比较直观的一种攻击技术。SQL注入是利用web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术

  • SQL注入攻击步骤:发现SQL注入点、判断后台数据库类型、后台数据库中管理员用户口令猜、上传ASP后门,得到默认账户权限、本地权限提升、利用数据库扩展存储过程执行shell命令

  • XSS漏洞分为持久性XSS漏洞(存储性XSS漏洞)和非持久性XSS漏洞(反射XSS漏洞)

  • 软件安全困境三要素:复杂性、可扩展性和连通性

  • 网页木马可以称得上是国内互联网上最流行的网络攻击形态之一,网页木马是从网页脚本所孕育和发展出来的,采用客户端渗透方式,攻击是被动式攻击,

课后实践

  • SQL注入实践

    • 这次的实验环境是SEED Ubuntu镜像,在这里页面中《网络攻防技术与实践》书籍中所需攻防实验环境虚拟机镜像下载的网盘中可以下载到
    • 环境配置
      实验需要三样东西,Firefox, apache, phpBB2(镜像中已有):
      ①运行Apache Server:镜像已经安装,只需运行命令%sudo service apache2 start
      ②phpBB2 web应用:镜像已经安装,通过http://www.sqllabmysqlphpbb.com访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/
      ③配置DNS:上述的URL仅仅在镜像内部可以访问,原因是修改了/etc/hosts
      文件使http://www.sqllabmysqlphpbb.com指向本机IP 127.0.0.1。如果需要在其他机器访问,应该修改hosts文件,使URL映射到phpBB2所在机器的IP。
    • 关闭对抗措施
      PHP提供了自动对抗SQL注入的机制,被称为magic quote,我们需要关闭它。
      1.找到/etc/php5/apache2/php. ini
      2.找到magic_quotes_gpc = On这一行
      3.改为magic_quotes_gpc=Off
      4.重启Apache: "sudo service apache2 restart"
    • 在PHPbb2中,使用下面的语句进行用户认证
    • 上述语句存在SQL注入漏洞,在登录进入PHPBB2时,我们就可以利用这个漏洞进行SQL注入
    • 在登录时,使用用户名ted不输入密码登录,当然登录错误,但是,使用ted'#作为用户名输入,同样不输入密码时就会正确登录,是作为ted这个用户正确登录了

    • 分析为什么以ted'#作为用户名并且不输入密码的情况下就可以正确登录呢?原因在于,当SQL语句送往数据库执行时,程序没有分清楚哪个部分是代码哪个部分是数据。
    • 当我们以ted'#作为用户名输入时,SQL语句变成了WHEREusername='ted'#'ANDuser password='md5($password)';。变化之后的语句意思是当用户名等于ted时就可以登录成功,把后面的输入密码部分用#注释掉了。同样的我们可以以ted'and '1'='1'#作为用户名正确登录
    • 在这个实验中我们手动关掉了PHP提供的功能。PHP提供了自动在单引号、双引号、反斜杠和空字符前添加反斜杠的机制,如果这个选项启用,那么所有这些从用户输入的特殊字符会被加反斜杠。启用方法为,修改/etc/php5/apache2/php.ini的magic_quotes_gpc = On,然后重启Apache。
  • XSS注入实践

    • 实验环境也是SEEDUbuntu
    • 环境配置
      实验需要三样东西,Firefox, apache, phpBB2(镜像中已有):
      ①运行Apache Server:镜像已经安装,只需运行命令%sudo service apache2 start
      ②phpBB2 web应用:镜像已经安装,通过http://www.xsslabphpbb.com访问,应用程序源代码位于/var/www/XSS/XSS LabPhpbb/
      ③配置DNS:上述的URL仅仅在镜像内部可以访问,原因是修改了/etc/hosts
      文件使http://www.xsslabphpbb.com指向本机IP 127.0.0.1。如果需要在其他机器访问,应该修改hosts文件,使URL映射到phpBB2所在机器的IP。
    • 测试漏洞
      在SQL注入漏洞测试中已经登录到了论坛,登录到论坛后发布一个帖子,帖子中包含以下内容:<script}alert('XSS');</scripts>,之后提交发布,弹出了窗口

教材中遇到的问题及解决办法

  • http://www.xsslabphpbb.com 网页在实践过程中无法访问,所以XSS注入实践暂时搁置了
  • SQL注入需要了解程序使用什么样的语句进行用户名密码的验证,否则将无法下手

视频学习内容总结

kali漏洞分析之数据库评估工具的使用

  • BBQSql
    是一个Python编写的盲注工具,当检测到可疑的注入漏洞时会很有用。同时BBQSql是一个半自动工具,允许客户自定义参数。
    在kali终端使用bbqsapl命令即可进入,根据需要选择。

  • DBPwAudit(数据库用户名密码枚举工具)
    破解SQLServer数据库:dbpwaudit -s IP -d master(数据库名) -D mssql(数据库类型) -U username(字典) -P password(字典)
    破解MySQL数据库:dbpwaudit.h -s IP -d mysql(数据库名称) -D MySQL(数据库类型) -U username(字典) -P password(字典)

  • HoxorBase
    图形化的密码破解与连接工具,开源;可以连接并控制数据库,执行一些功能
    支持MySQL、ORACLE、PostgreSQL、SQLite、SQLServer

  • jsql Injection
    Java语言写的;可以很方便的查看数据库内容;读取文件、写入文件
    是一款轻量级安全测试工具,可以检测SQL注入漏洞,跨平台(Windows、Linux、Mac OSX、Solaris)、开源且免费。
    将存在注入漏洞的URL贴进来即可进行响应的漏洞利用。

  • MDBTools
    包括MDB-Export、MDB-Dump、mdb-parsecsv、mdb-sql、mdb-tables等子工具

  • Oracle Scanner
    是一个用Java开发的Oracle评估工具,基于插件的结构,当前有两个插件可以做:Sid列举、口令测试、列举Oracle版本、列举账号角色、列举账号特权、列举账号哈希、列举审计信息、列举口令策略、列举数据库链接
    kali下集成的工具就有

  • SIDGusser
    同样是针对Oracle的SID进行暴力枚举的工具。SID为Oracle实例名,Oracle连接字符串,通过实例名+用户+密码连接

  • sqldict
    是Windows下的程序,在kali下用wine模拟的;是用户名密码的一个枚举工具

  • tnscmd10g
    允许我们向Oracle中注入命令

  • Sqlsus
    是一个开源的MySQL注入和接管工具,使用perl编写,基于命令行界面;可以获取数据库结构,注入自己的SQL语句,从服务器下载文件,爬行web站点可写目录,上传和控制后门,克隆数据库等等;最好用的两点是注射获取数据速度非常快,另外一个就是自动搜索可写目录。

    使用splsus -g test.conf生成配置文件
    使用gedit test.conf编辑配置文件,根据自己的需要填写即可

    使用sqlsus test.conf启动并测试,输入start
    获取数据库,查看全部数据库的名字get database
    设定数据库set database
    set database mysql就可以选择数据库是MySQL
    然后查看MySQL中有哪些表就可以使用get tables

  • sqlninja
    在sql注入方面sqlmap一直被尊为神器

    • 是一款Perl编写的专门针对Microsoft SQL Server 的sql注入工具,侧重于获得一个shell;可找到远程SQL服务器的标志和特征(版本、用户执行的查询、用户特权、xp_cmdshell的可用性、身份验证模式等);对sa口令进行强力攻击,一旦找到口令,就将其特权提到sa权限,可以结合msfm进一步对目标主机进行渗透;如果原始的xp_cmdshell被禁用,就创建一个xp_cmdshell;使用纯粹的ASCII GET/POST请求来上载netcat.exe程序(以及其他任何可执行的程序),因此不需要FTP连接;为了找到目标网络的防火墙所允许的端口,可以实施针对目标SQL服务器的TCP/UDP端口扫描;逃避技术,是为了使注入式代码“模糊”不清,并且混淆/绕过基于签名的IPS和应用层防火墙;利用“盲目执行”攻击模式,在其他模式失效时,可用于发布命令并执行诊断;在sqlnina生成的SQL代码上,执行的是自动化的URL编码,这使得用户可以更精细地控制漏洞利用的字符串

    • -m 指定攻击模式,有以下模式
      t/test 测试连接是否是注入点
      f/fingerprint 指纹识别,判断用户,数据库,xp_cmdshell是否能用等等
      b/bruteforce 暴力破解sa密码,可以-w指定字典,也可以不使用字典,它会自己穷举
      e/escalation 提权用,必须用-p指定sa的password,成功就会把当前数据库用户加入sa组里面
      x/resurrectxp 尝试恢复xp_cmdshell
      u/upload 使用get和post上传二进制文件,-p可以指定sa的paaword,-g表示只生成上传文件,但并不上传
      s/dirshell 获得目标主机的shell
      k/backscan查看开放的目标端口
      r/revshell 反弹回一个shell,和dirshell相反
      d/dnstunnel 指定使用DNS作为传输通道,可用-p指定sa的password,这个模式防止服务器连icmp都禁止的时候使用,得先用uplode模式上传dnstun.exe
      i/icmpshell 当dirshell和revshell 都失败的情况下,可以用这个模式把shell藏在icmp里,但是先要上传icmpsh.exe.(在uplode模式里)
      e/sqlcmd 以上方法都失败之后,可以用他执行简单的cmd命令,就是没有回显

    • -f <file> 指定配置文件,注入网址是写在配置文件里的,默认是sqlninja.conf。在-f下又有以下参数:
      0 - Database version (2000/2005) //检测当前数据库版本
      1 - Database user //当前数据库用户
      2 - Database user rights //当前数据库用户权限
      3 - Whether xp_cmdshell is working //检查xp_cmdshell是否可以用
      4 - Whether mixed or Windows-only authentication is used //是否Windows本地系统权限
      -p //sa账户密码

  • sqlmap
    开源的渗透工具,主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器,有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,还可以从数据库中提取数据, 此外还能处理潜在的文件系统以及通过带外数据连接执行系统命令等
    对于拖取数据十分人性化,会将获取的数据存储在sqlmap/output/中
    还可以绕过WAF的tamper,修改UA的random-agent等等参数
    常见的使用命令如下:
    sqlmap.py -u “注入地址” -v 1 --dbs//列举数据库
    sqlmap.py -u “注入地址” -v 1 --current-db//当前数据库
    sqlmap.py -u “注入地址” -v 1 --users//列举数据库用户
    sqlmap.py -u “注入地址” -v 1 --current-user//当前用户
    sqlmap.py -u “注入地址” -v 1 --tables -D “数据库”//列举数据库的表名
    sqlmap.py -u “注入地址” -v 1 --columns-T “表名” -D “数据库”//获取表的列名
    sqlmap.py -u “注入地址” -v 1 --dump-C “字段,字段” -T “表名” -D “数据库”//获取表中的数据,包含列
    还有一些参数如下
    sqlmap -u “” --cookie “id=xxx” --level=2
    sqlmap -r “xxx” -p 提高等级
    sqlmap -u “” --forms 检查表单
    sqlmap -u “” --data “xxx=xx&xxx=xx” 检测post的数据
    sqlmap -u “” --os-cmd=whoami 系统命令
    sqlmap -u “” --os-shell 获取系统的shell,需要masql比较高的权限
    sqlmap -u “http://xxxx/id/l*”伪静态

kali漏洞分析之Web应用代理

  • Burb Suite
    用于攻击web应用程序的集成平台。带有一个代理,通过默认端口8080运行,使用这个代理,可以截获并修改从客户端到web应用程序的数据包。
    包含了一系列burp工具,这些工具之间有大量的接口可以互相通信,是为了促进和提高整个攻击的效率。平台中所有工具共享同一robust框架,以便统一下处理HTTP请求,持久性认证,上游代理,日志记录,报警和可扩展性。
    允许攻击者结合手工和自动技术去枚举、分析、攻击web应用程序。这些不同的burp工具通过协同工作,有效地分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击
    kali下提供了这个工具,界面如下

    然后我们把浏览器上的代理信息改成Burb Suite的

    在浏览器中输入www.baidu.com得不到响应,在Burb Suite中看到

    然后我们点击forword键就可以让浏览器顺利响应请求

    之后请求www.hao123.com的界面,如果点击drop,那么这个页面就得不到响应

它包含下面的模块

  • Proxy
    提供直观有好的用户界面。它的代理服务器包含非常详细的拦截规则,并能准确的分析HTTP消息的结构与内容

  • Spide
    爬行蜘蛛工具,可用来抓取目标网络,以显示网站的内容,基本结构,和其他功能

  • Sacnner Web
    应用程序的安全漏洞进行自动发现工具。它被设计用于渗透测试,并密切与现有的技术和方法,以适应执行手动和半自动化的web应用程序渗透测试

  • Repeater
    可手动重新发送单个HTTP请求

  • Intruder
    是burp套件的优势,可以自动实施各种定制各种攻击,包括资源枚举、数据提取、模糊测试等常见漏洞等。允许组合利用个人只能与该工具的控制优点

  • Sequencer
    对会话令牌、会话标识符或其他处于安全原因需要随机产生的键值得可预测性进行分析

  • Decoder
    转化成规范的形式编码数据,或转化成各种形式的编码和散列的原始数据。能智能识别多种编码方式,使用启发式技术

  • Comparer
    执行比较数据之间的任何两个项目(一个可视化的“差异”)。在攻击一个Web应用程序的情况下,这一要求通常会出现当你想快速识别两个应用程序之间的差异(eg.入侵者攻击的过程中收到的两种反应之间,或登录失败的反应使用有效地和无效的用户名)之间,或两个应用程序请求(eg.确定不同的行为引起不同的请求参数)

  • Repeater 改包重放模块

  • Decoder 编码解码模块
    图为选择作为二进制编码

  • extender 插件模块

  • OwaspZAP
    是一款查找网页应用程序漏洞的综合类渗透测试工具,包含拦截代理、自动处理、被动处理、暴力破解、端口扫描以及蜘蛛搜索功能;Owasp ZAP为会话测试类调试工具,调试功能不会对网站发起大量请求,对服务器影响较小

  • paros
    paros proxy,是一个对web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序;支持动态地编辑/查看HTTP/HTTPS,从而改变cookies和表单字段等项目;包括一个Web通信记录程序,web圈套程序(spider),hash计算器,还有一个可以测试常见的web应用程序攻击(如SQL注入式攻击和跨站脚本攻击)的扫描器;该工具检查漏洞形式包括:SQL注入、跨站点脚本攻击、目录遍历等

  • Vega
    是一个开源的web应用程序安全测试平台,能帮助验证SQL注入、跨站脚本(XSS)、敏感信息泄露和一些其他安全漏洞,使用Java编写,由GUI,可以在Windows、Linux、MacOs上运行。

  • Webscarab
    包括HTTP代理、网络爬行、网络蜘蛛、会话ID分析、自动脚本接口、模糊测试工具、web格式的编码解码、web服务描述语言、SOAP解析器等功能模块,基于GNU协议,使用Java编写,是WebGoat中所使用的工具之一

kali漏洞分析之Fuzz工具

  • 模糊测试是漏洞挖掘过程中的重要一步。

  • Bed.pl
    是一个纯文本协议的Fuzz工具,能够检查常见的漏洞,如缓冲区溢出、格式串漏洞、整数溢出等
    使用bed -s FTP -t 172.16.1.1 -p 21 -o 5,其中,-s 使用插件,-t后面跟IP,-p端口,-o timeout的时间

  • Fuzz_ipv6
    THC出品的针对IPV6 协议的模糊测试工具

  • Ohrwurm
    迷你,针对RTP协议;主要是针对SIP的Fuzz

  • Powerfuzzer

  • Wfuzz
    针对web应用的模糊测试工具,可以进行web应用暴力破解,也支持对网站目录、登录信息、应用资源文件等的暴力破解,还可以进行get及post参数的猜解,sql注入、xss漏洞的测试等,该工具所有功能都依赖于字典
    参数中Fuzz相当于一个变量,用字典中的字段来替换它完成猜解
    登录页面口令猜解,忽略404页面wfuzz -c -z file,common.txt --hc 404 -o html http://www.baidu.com/FUZZ 2>res.html``````wfuzz -c -z file,user.txt -z file,pass.txt --hc 404 html http://www.site.com/log.asp?user=FUZZ&pass=FUZZ
    页面数目猜解```wfuzz -c -z rango,1-10 --hc==BBB http://www.site.com/FUZZ[something]

  • sfuzz

  • XSSer
    xsser --gtk打开图形化界面







视频学习中遇到的问题及解决办法

  • 学会用工具捕获信息了,但是对信息的分析还不能完全理解,甚至只是知道截获了信息,但是并不知道这些信息到底在实际攻击中起到什么作用,多大的作用,光从书面以及浅显的练习介绍中并不能很好的理解,希望随着学习的深入,能将各方面的工具,信息结合起来

学期目标

  • 入门网络攻防,能走下来流程,最终能攻破防御较差的目标机

学习进度条

教材学习 视频学习 博客量(新增/累积) 重要成长
目标 12章 20篇
第一周 《Linux基础入门》 1/1 练习Linux命令,在码云上面创建项目,学习使用博客园写博客并用Markdown编辑器规范格式
第二周 第一二章 5个kali视频 2/3 初识网络攻防,了解基本知识
第三周 第三章 5个kali视频 1/4 学习了kali linux下信息收集阶段的探测工具
第四周 第四章 5个kali视频 1/5 学习了kali linux下漏洞分析的各种工具,wireshark的使用,学习了网络嗅探与协议分析
第五周 第十一、十二章 5个kali视频 1/6 学习了kali linux下漏洞分析之数据库评估软件的使用,也学习了SQL、XSS注入方面的一些知识

参考资料

  • 《网络攻防技术与实践》诸葛建伟著
  • 《网络攻防技术与实践》诸葛建伟著,光盘中的十一章十二章的内容
posted on 2017-04-02 10:30  20169213刘晶  阅读(310)  评论(3编辑  收藏  举报