• 20189224《网络攻防实践》第五周学习总结


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

    教材学习内容总结(教材十一,十二章)

    Web应用程序安全攻防

    web应用体系结构及其安全威胁

    web应用体系结构

    “瘦”客户端:浏览器,完成数据显示与展示内容的渲染功能;
    “胖”服务器:web服务器软件、web应用程序、后端数据库。
    通过经典三层架构:表示层、业务逻辑层和数据层来组织和构建。

    传输协议HTTP/HTTPS:

    1)超文本传输协议HTTP无状态、ASCII码明文传输、运行于众所周知的TCP80端口。特点:简单、流行、易受攻击。
    2)加密传输的HTTPS协议,使用ssl/tls隧道技术,采用多种认证协议实现对用户身份的人认证与控制。

    web应用安全威胁

    1)针对浏览器和终端用户的web浏览安全威胁:以浏览器渗透攻击为核心的网页木马、网站钓鱼。
    2)针对传输网络的网络协议安全威胁:针对HTTP明文传输的敏感信息监听、假冒身份攻击、拒绝服务攻击等。
    3)系统层安全威胁:远程渗透攻击和本地渗透攻击温威胁。
    4)web服务器软件安全威胁:利用漏洞实施渗透攻击、获取敏感信息。
    5)web数据安全威胁:窃取、篡改、输入不良信息。

    Web应用程序安全攻防技术概述

    1)信息收集内容包括:
    服务器域名
    ip地址和虚拟ip地址
    web服务器端口与其他开放服务
    web站点类型和版本
    web应用程序类型和版本
    web服务器和web应用程序中存在的安全漏洞信息
    2)方式包括:
    手工审查web应用程序结构与源代码
    自动下载与镜像web站点页面:lynx、wget、teleportpro、offline explorer等web站点镜像软件。
    使用google hacking技术审查与探测web应用程序
    web应用程序安全评估与漏洞探测:浏览器插件、免费工具集、商业web应用安全评估系统和漏洞扫描器。

    Web服务器平台安全漏洞:

    1)数据驱动的远程代码执行安全漏洞
    2)服务器功能拓展模块漏洞
    3)样本文件安全漏洞
    4)源代码泄露
    5)资源解析攻击

    Web应用程序安全威胁从攻击者技术角度分为如下六类:

    1)针对认证机制攻击
    2)授权机制攻击
    3)客户端攻击
    4)命令执行攻击
    5)信息暴露
    6)逻辑攻击
    最流行的的两类Web应用程序安全漏洞及攻击技术:SQL注入和XSS跨站脚本。
    攻击Web数据内容:安全敏感数据泄露、网站内容遭到篡改以及不良信息内容上传威胁。

    Web应用安全防范措施:

    1)web站点网络传输安全防范措施
    使用HTTPS
    使用加密连接通道、对关键Web服务器设置静态绑定MAC-IP映射。
    2)Web站点操作系统及服务安全设防措施
    及时的补丁更新
    进行远程安全漏洞扫描
    关闭不使用的服务
    设置强口令字
    部署防火墙
    数据备份
    3)Web应用程序安全设防措施
    使用静态HTML
    使用具有良好安全声誉及稳定技术支持力量的Web应用软件包
    除非必要才使用自主或者外包Web应用程序
    使用Web服务器软件提供的日志功能。
    4)Web站点数据安全设防措施
    提高维护人员数据安全意识
    对维护网站数据安全实施日常监测和防护

    SQL注入

    利用web应用程序的输入验证不完善漏洞,使得web应用程序执行由攻击者所注入的恶意指令和代码,造成敏感信息泄露、权限提升或对系统的未授权访问等危害后果。

    SQL注入攻击步骤:

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

    SQL注入攻击工具:

    1)Wposion 能在动态web文档中找出SQL注入漏洞
    2)wieliekoek.pl 以网站镜像工具生成的输入为输出,对表单页面注入字符串修改
    3)SPIKE Proxy 对待注入的字符串进行定制
    4)SPI Toolkit工具包

    SQL注入攻击防范:

    1)使用类型安全的参数编码机制
    2)完备检查来自外部的用户输入
    3)将动态SQL语句替换为存储过程、预编译SQL或ADO命令对象
    4)加强SQL数据库服务器的配置与连接

    XSS跨站脚本攻击

    与代码注入攻击不同的是,XSS跨站脚本攻击的最终目标不是提供服务的web应用程序,而是使用web应用程序的用户。
    XSS攻击技术原理是Web应用程序对用户数输入内容的安全验证与过滤不完善。
    攻击方式:绕过客户端安全策略访问敏感信息,窃取或修改会话Cookie、进行客户端渗透攻击获取访问权。

    XSS攻击类型

    持久性XSS漏洞和非持久性XSS漏洞,利用这两类漏洞的攻击也称为持久性XSS攻击和非持久性XSS攻击。
    攻击实例:测试XSS漏洞、显示用户的会话cookie、窃取用户的会话cookie、利用cookie信息假冒其他用户发表与修改帖子、编写实现XSS蠕虫。

    XSS攻击防范措施

    服务器端:输入验证、输出净化、消除危险的输入点
    客户端:提升浏览器的安全设置,如关闭cookie或者设置cookie只读等,也可以采用非主流的安全浏览器。

    Web浏览器安全攻防

    web浏览器安全威胁

    Web浏览器软件安全困境三要素:复杂性、可扩展性、连通性。

    Web安全威胁位置

    1)传输网络的网络协议安全威胁
    2)Web浏览端系统平台的安全威胁
    3)Web浏览器软件及插件程序的渗透攻击威胁
    4)互联网用户社会工程学攻击威胁

    Web浏览端渗透攻击威胁——网页木马

    本质核心:利用脚本语言实现对web浏览端软件安全漏洞的渗透攻击,从而向客户端主机中植入恶意程序。
    防范:提升操作系统与浏览端平台软件的安全性。

    网络钓鱼(phishing)

    网络钓鱼是社会工程学在互联网中广泛实施的一种典型攻击方式。
    原理:通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出个人敏感信息。

    普遍技术流程:

    1)攻击者扫描网段,寻找存有漏洞的服务器;
    2)服务器被攻陷,并被安装一个rootkit或口令保护的后门工具;
    3)攻击者从加密的后门工具获得对服务器的访问权,并下载已经构建完毕的钓鱼网站内容,进行一些网站搭建配置与测试工作,使得钓鱼网站上线运行;
    4)攻击者下载群发电子邮件工具,并大规模散发垃圾邮件;
    5)网页浏览的流量开始到达钓鱼网站,受害者访问并给出个人敏感信息,攻击者通过后台脚本收集这些信息。

    视频学习中的问题和解决过程(视频16-20)

    数据库评估

    • bbqsql
      BBQSQL是一个Python编写的盲注工具(blind SQL injection framework),当你检测可疑的注入漏洞时会很有用。同时BBQSQL是一个半自动工具,允许客户自定义参数。BBQSQL最重要的是它不关心数据或数据库,而大多数SQL注入工具是要具体的数据库或语言建立的。



      BBQSQL特征:
      1)利用SQL盲注漏洞
      2)半自动
      3)与数据库无关
      4)多功能
      5)利用两种搜索技术(二元搜索和按频次搜索)
      6)并发的HTTP请求
      7)配置导入/导出
      8)自定义的Hooks
      9)高速
    • DBPwAudit(数据库用户名密码枚举工具)
      功能:通过挂载字典对目标数据库进行密码暴力猜解,目
      前支持的数据库包括SQLServer、MySQL、Oracle、DB2
      程序位置:/pentest/database/dbpwaudit/
      驱动位置:/pentest/database/dbpwaudit/jdbc/
    1. 破解SQLServer数据库命令实例
      ./dbpwaudit.sh -s IP -d master -D mssql -U username -P password
    2. 破解MySQL数据库命令实例
      ./dbpwaudit.sh -s IP -d mysql -D mysql -U username -P password
    • HexorBase
      有图形界面工具,它支持MySQL、Oracle、PostgreSQL、SQLite和SQL Server五大主流数据库。它允许安全人员指定用户字典和密码字典,然后实施字典攻击。同时,它还提供对应的图形界面客户端,允许安全人员使用破解出的用户名和密码,对数据库进行远程管理。
    • jSQL Injection
      jSQL injection是一款由JAVA开法的SQL自动化注入工具,它提供了数据库查询、后台爆破、文件读取、Web shell、SQL Shell、文件上传、暴力枚举、编码、批量注入测试等强大的功能,是一款非常不错的工具,也是渗透测试人员的强大助手。它支持GETPOST注入,同时也可以进行HTTP头注入(这个需要用户自动构建)。对于JSQL,用户可以通过在终端中直接输入jsql,之后会直接调用,jsql对于哪些网站搭建在Nginx上目标站点来说是一款非常不错的测试工具,当然有时候所测试出的结果也不一定正确,建议对于一些SQL注入点还是可以先手工判断,之后通过SQLmap、jsql进行测试,不同工具结果存在差异。将存在注入漏洞的URL贴进来即可进行响应的漏洞利用。
    • MDBTools
      包括MDB-Export(Export data in an MDB database table to CVS format),以及MDB-Dump,mdb-prasecvs,mdb-sql,mdb-table等子工具,具体环境具体使用。
    • oscanner
      使用Java语言编写。它可以采用字典方式,枚举Oracle服务的Sid、密码、版本号、账户角色、账户权限、账户哈希值、安全审计信息、密码策略、数据库链等内容。虽然该工具提供了一些最常用的字典值,但在实际使用中,用户还是需要自己额外添加字典值,以提高枚举的成功率。通过枚举获取信息后,就可以根据进行下一步的渗透测试。
    • SIDGusser
      针对Oracle的SID进行暴力枚举的工具。SID为Oracle连接字符串,通过实例名+用户+密码连接
    • sqldict
      是一个WIndows程序,运行时会自动调用Kali Linux内置的Wine组件。渗透测试人员只要指定目标IP地址、账户名和密码字典,就可以实施密码爆破。
    • tnscmd10g
      Oracle服务器通常都配置TNS,用来管理和配置客户端和数据库的连接。每个Oracle服务器都会运行一个TNS监听器进程tnslsnr用来处理客户端和服务器的数据传输。该接口默认工作在TCP 1521端口。由于该监听器在验证请求的身份之前,可以对部分命令进行响应,所以造成一定程度的漏洞。Kali Linux提供的tnscmd10g工具可以利用该漏洞。使用该工具,用户可以获取数据库的版本信息、服务信息、配置信息,甚至可以关闭TNS服务,导致客户端无法连接服务器。


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

      2)编辑配置文件

      3)修改 our $url_start = "":写入地址
      4)启动并且测试sqlsus test.conf
      5)获取数据库数据
      6)查看全部数据库名字
      7)sqlsus > get database
    • sqlninja
      一个专门针对Microsoft SQL Server的sql注入工具
      可找到远程SQL服务器的标志和特征(版本、用户执行的查询、用户特权、xp_cmdshell的可用性、身份验证模式等)
      “sa”口令的强力攻击
      如果找到口令后,就将特权提升到“sa”
      如果原始的xp_cmdshell被禁用后,就创建一个定制的xp_cmdshell。
      使用纯粹的ASCII GET/POST请求来上载netcat.exe程序(以及其它任何可执行的程序),因此并不需要FTP连接。
      为了找到目标网络的防火墙所允许的端口,可以实施针对目标SQL 服务器的TCP/UDP端口扫描。
      逃避技术,这是为了使注入式代码“模糊”不清,并且混淆/绕过基于签名的IPS和应用层防火墙。
      采用“盲目执行”攻击模式,在其它模式失效时,可以用于发布命令并执行诊断。
      在sqlninja生成的SQL代码上,执行的是自动化的URL编码,这使得用户可以更精细地控制漏洞利用的字符串。
      如果得到权限为sa,可以结合msf进一步对目标主机进行渗透。
      sqlninja的一些常用命令.
    ./sqlninja
           -m <mode> : Required. Available modes are:  //加载modle
             t/test - test whether the injection is working   //测试注入点是否可用
             f/fingerprint - fingerprint user, xp_cmdshell and more
             b/bruteforce - bruteforce sa account //爆破sa口令用的。。可以-w指定字典,也可以不使用字典,这样sqlninja就会自己穷举
             e/escalation - add user to sysadmin server role
             x/resurrectxp - try to recreate xp_cmdshell  //尝试创建
             u/upload - upload a .scr file   //上传
             s/dirshell - start a direct shell  //获得一个目标主机的shell
             k/backscan - look for an open outbound port  //查找目标主机允许哪些端口外连
             r/revshell - start a reverse shell  //反弹shell
             d/dnstunnel - attempt a dns tunneled shell
             c/sqlcmd - issue a 'blind' OS command //执行系统命令,如果为sa的话直接可以net user
             m/metasploit - wrapper to Metasploit stagers  //配合msf使用
           -f <file> : configuration file (default: sqlninja.conf) //配置sqlninja.conf文件
           -p <password> : sa password
           -w <wordlist> : wordlist to use in bruteforce mode (dictionary methodonly) //字典文件的路径。。爆破sa密码用的
           -v : verbose output
           -d <mode> : activate debug //调试模式
             1 - print each injected command
             2 - print each raw HTTP request
             3 - print each raw HTTP response
             all - all of the above
    

    在-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本地系统权限
       a - All of the above  //以上所有选项
       h - Print this menu   //显示当前帮助菜单
       q - exit  //退出
    

    注入连接写到配置文件中

    # GET EXAMPLE:
    --httprequest_start--
    GET http://www.xxx.com/informationdetail.aspx?id=11&titleid=%e3h;__SQL2INJECT__ HTTP/1.1
    Host: www.xxxx.com
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
    Accept:*/*
    Accept-Language: en-us,en;q=0.7,it;q=0.3
    Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
    Connection: Keep-alive
    --httprequest_end--
    #
    # POST EXAMPLE: (The Content-Length Header is automatically added by sqlninja!)
    # --httprequest_start--
    # POST https://www.victim.com/page.asp HTTP/1.0
    # Host: www.victim.com
    # User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060418 Firefox/1.0.8
    # Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*
    # Accept-Language: en-us,en;q=0.7,it;q=0.3
    # Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
    # Content-Type: application/x-www-form-urlencoded
    # Cookie: ASPSESSIONID=xxxxxxxxxxxxxxxxxxxx
    # Authorization: Basic yyyyyyyyyyyyyyyyyyyyy
    # Connection: close
    #
    # vulnerableparam=aaa';__SQL2INJECT__&otherparam=blah
    # --httprequest_end--
    #
    # HEADER-BASED EXAMPLE:
    # --httprequest_start--
    # GET http://www.victim.com/page.asp HTTP/1.0
    # Host: www.victim.com
    # User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/20060418 Firefox/1.0.8
    # Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*
    # Accept-Language: en-us,en;q=0.7,it;q=0.3
    # Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
    # Content-Type: application/x-www-form-urlencoded
    # Cookie: VulnCookie=xxx'%3B__SQL2INJECT__
    # Connection: close
    # --httprequest_end--
    #
    

    • sqlmap
      sqlmap是一个开源的渗透测试工具,它主要用于自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。Sqlmap配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,哈可以从数据库中提取数据,此外还能够处理潜在的文件系统以及通过带外数据连接执行系统命令等。
    Usage: python sqlmap [options]
    
    Options:
      -h, --help            Show basic help message and exit
      -hh                   Show advanced help message and exit
      --version             Show program's version number and exit
      -v VERBOSE            Verbosity level: 0-6 (default 1)
    
      Target:
        At least one of these options has to be provided to define the
        target(s)
    
        -u URL, --url=URL   Target URL (e.g. "http://www.site.com/vuln.php?id=1")
        -g GOOGLEDORK       Process Google dork results as target URLs
    
      Request:
        These options can be used to specify how to connect to the target URL
    
        --data=DATA         Data string to be sent through POST
        --cookie=COOKIE     HTTP Cookie header value
        --random-agent      Use randomly selected HTTP User-Agent header value
        --proxy=PROXY       Use a proxy to connect to the target URL
        --tor               Use Tor anonymity network
        --check-tor         Check to see if Tor is used properly
    
      Injection:
        These options can be used to specify which parameters to test for,
        provide custom injection payloads and optional tampering scripts
    
        -p TESTPARAMETER    Testable parameter(s)
        --dbms=DBMS         Force back-end DBMS to this value
    
      Detection:
        These options can be used to customize the detection phase
    
        --level=LEVEL       Level of tests to perform (1-5, default 1)
        --risk=RISK         Risk of tests to perform (1-3, default 1)
    
      Techniques:
        These options can be used to tweak testing of specific SQL injection
        techniques
    
        --technique=TECH    SQL injection techniques to use (default "BEUSTQ")
    
      Enumeration:
        These options can be used to enumerate the back-end database
        management system information, structure and data contained in the
        tables. Moreover you can run your own SQL statements
    
        -a, --all           Retrieve everything
        -b, --banner        Retrieve DBMS banner
        --current-user      Retrieve DBMS current user
        --current-db        Retrieve DBMS current database
        --passwords         Enumerate DBMS users password hashes
        --tables            Enumerate DBMS database tables
        --columns           Enumerate DBMS database table columns
        --schema            Enumerate DBMS schema
        --dump              Dump DBMS database table entries
        --dump-all          Dump all DBMS databases tables entries
        -D DB               DBMS database to enumerate
        -T TBL              DBMS database table(s) to enumerate
        -C COL              DBMS database table column(s) to enumerate
    
      Operating system access:
        These options can be used to access the back-end database management
        system underlying operating system
    
        --os-shell          Prompt for an interactive operating system shell
        --os-pwn            Prompt for an OOB shell, Meterpreter or VNC
    
      General:
        These options can be used to set some general working parameters
    
        --batch             Never ask for user input, use the default behaviour
        --flush-session     Flush session files for current target
    
      Miscellaneous:
        --sqlmap-shell      Prompt for an interactive sqlmap shell
        --wizard            Simple wizard interface for beginner users
    
    [!] to see full list of options run with '-hh'
    

    Web应用代理

    Web应用程序代理是YARN的一部分。默认情况下,它将作为资源管理器(RM)的一部分运行,但可以配置为以独立模式运行。使用代理的原因是减少对YARN的基于Web的攻击的可能性。

    参考资料

  • 相关阅读:
    《Dubbo》接入与调用流程
    SpringBoot自定义配置实现与解析
    Docker使用笔记记录
    Elasticsearch(一):介绍与安装
    索引的建立与使用规范
    RocketMQ(一):介绍与安装
    NETCORE使用MINIO的PRESIGNEDPUTOBJECTASYNC方法,实现通过浏览器直接上传图片到MINIO服务器
    Minio 使用.NET + Vue 实现断点续传、秒传
    VS Code中小程序与Vue常用插件合集(前端合集)
    [瞎想笔记] 浅浅浅谈期望
  • 原文地址:https://www.cnblogs.com/20189224sxy/p/10633320.html
Copyright © 2020-2023  润新知