Shiro/Spring权限绕过
MVC框架
MVC:Model-View-Controller,即控制器(Controller),模型(Model),视图(View)
使用MVC模式的好处是,Controller专注于业务处理,它的处理结果就是Model。Model可以是一个JavaBean,也可以是一个包含多个对象的Map,Controller只负责把Model传递给View,View只负责把Model给“渲染”出来,这样,三者职责明确,且开发更简单,因为开发Controller时无需关注页面,开发View时无需关心如何创建Model
ServletServlet 是一个实现了特定接口的 Web 组件,由 Servlet 容器去加载并运行。容器 本身并不一定是 Web 服务器,但容器需要至少支持 HTTP 请求,并将请求的内容封装成 Servlet 接口的参数;因此容器通常与 Web 服务器集成或者作为其拓展而存在。目前常见的 Servlet 容器如 Tomcat、GlassFish、JBoss 等,同样也具备 Web 服务器的功能
Servlet:能处理HTTP请求并将HTTP响应返回
JSP:一种嵌套Jav ...
app渗透测试
无校验直接抓:
burp + wifi改手动代理/shadowrocket(clash)charles + burpstream直接抓包(IOS)
https如果有些https,在设置了好各种证书和配置后,看到的:要么是unknown,要么是加密的乱码,要么是报错无法抓包。无法看到希望的明文数据,最大可能是,对方用了https的SSL pinning
注:接口显示: Method: CONNECTCONNECT 含义: HTTP 8种Method中的一种作用:HTTP /1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于 SSL 加密服务器的链接(经由非加密的 HTTP 代理服务器,并非所有的 http 隧道支持 connect 方法Http 隧道分为两种:不使用 CONNECT 的隧道 和 使用 CONNECT 的隧道Http CONNECT 相当于客户端和服务器之间建立的一个隧道,而通过这个隧道的请求是加密的,所以 CONNECT 方式的请求使用抓包是抓不到,是无法查看 https 的原文,明文的信息的
SSL pinningSSL pinn ...
ARP攻击
定义ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址解析物理地址的一个TCP/IP协议。主机将包含目标IP地址信息的ARP请求广播到网络中的所有主机,并接收返回消息,以此确定目标IP地址的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,以便下次请求时直接查询ARP缓存以节约资源
攻击原理ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击
ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障
ARP欺骗是通过冒充网关或其他主机使得到达网关或主机的流量通过攻击手段进行转发。从而控制流量或得到机密信息。ARP欺骗不是真正使网络无法正常通信,而是ARP欺骗发送虚假信息给局域网中其他的主机,这些信息中 ...
WiFi攻击
说到WiFi安全,就不能不说校验过程中涉及到的四路握手。四路握手的目的是为了安全地验证和交换秘钥,验证对端合法性,防止中间人攻击
WiFi攻击包括WiFi中断攻击,WiFi密码爆破,WiFi干扰、WiFi钓鱼等
WiFi中断攻击WiFi中断攻击是指通过发送取消认证报文让客户端以为路由器需要让自己断开连接从而断开WiFi,伪造路由器向客户端发送取消认证报文,使客户端主动断开WiFi连接。WiFi中断后有可能注入钓鱼,轻则泄露密码,重则攻击主机,需要用户注意安全防护
WiFi密码爆破通过监听wifi的数据包 ,然后当有人连接wifi的时候,记录握手过程,然后通过字典进行对比,匹配出密码,当这个wifi已经有人连接的时候,没有办法抓到握手包,而现在的WiFi设备为了提供更好的用户体验都会再WiFi断线后尝试自动连接。在自动连接的过程中,手机等设备会重新向路由器发送加密过后的WiFi密码,当路由器接收到这些信息后会将这些信息同自己内部存储的WiFi密码经过相同加密方式后的数据进行对比, 比对成功就算认证通过,那么可以尝试将已经连接的用户踢下线,让他重新连接,当被踢下线的用户重新连接就能进行监听 ...
正向代理与反向代理
代理协议:
Socks
HTTP
正向代理当客户端主动使用代理服务器时,此时的代理叫正向代理。比如:一些网络代理工具(加速器/VPN…)
正向代理时,由客户端发送对某一个目标服务器的请求,代理服务器在中间将请求转发给该目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。使用正向代理时,客户端是需要配置代理服务的地址、端口、账号密码(如有)等才可使用的
反向代理服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在
反向代理整个流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端
反向代理的适用场景
负载均衡
如果服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援。 可以有效降低服务器压力,增加服务器稳定性
提升服务器安全性
可以对客户端隐藏服务器的IP地址
...
逻辑漏洞测试
逻辑漏洞测试账户相关逻辑漏洞覆盖注册漏洞原理:
一个手机号/邮箱/用户名已经注册了账号,但是由于漏洞,导致可以再利用该手机号进行注册,并且会将之前注册的记录覆盖
挖掘方法:
用已注册的账号再注册,提示该账号已经存在,抓包修改回传参数,把true修改为false,达到重复注册的目的
如果是低版本MySQL数据库,可以尝试往用户名/手机/邮箱后面加N个空格
登录认证绕过漏洞原理:一般来说用户在登录界面成功登陆后会跳转到主页面,但是如果缺乏正确的校验方式,攻击者可以通过多种手段绕过登录认证过程
挖掘方法:
直接访问登陆后的界面,一般登录成功后会跳转到主页面,如从login.jsp跳转到index.jsp。如果没有对跳转过程进行会话校验,可以通过直接访问index.jsp主页面绕过登录认证过程
有时候登录状态是通过前端验证返回包的登录状态码进行判断的,可以通过修改登录状态码进行登录。如对response包的body部分进行修改:{"state":0} 修改为{"state":1& ...
防溯源
对于安服测试类工作,尤其是攻防演练/护网攻击,攻击者需尽可能的隐藏好自己,不让防守方溯源到相关信息,防止扣分/体现专业性,主要有以下一些事项需要注意:
0、禁止使用公司出口IP攻击1、禁止在payload或exp中带入ID等相关个人信息2、使用无痕模式/多浏览器模式来进行测试,不用常用浏览器访问目标,防止Jsonp劫持等获取个人信息3、使用临时的VPS进行测试,避免防守方利用VPS的历史信息溯源4、谨慎运行从目标获取的可执行文件,可疑文件在虚拟机中运行,虚拟机建议使用随机用户名;从开源平台下载的exp也需要谨慎鉴别更新时间/来源/是否恶意等5、所有操作流量通过代理出网,UDP/TCP协议都走代理,防止暴露真实IP6、木马或工具的编译过程去除Debug信息,和其他带有个人特点的信息(如用户名、常用IP等)7、使用无漏洞版本客户端,防止被利用客户端漏洞溯源(如低版本浏览器溢出、Mysql客户端任意文件读取等)8、禁止本机直接连接Mysql/ssh/smb文件共享等,尝试连接时默认会带过去用户名等本机信息;禁止本 ...
内存马检测与排查
内存马检测与排查源码检测在java中,只有被JVM加载后的类才能被调用,或者在需要时通过反射通知JVM加载。所以特征都在内存中,表现形式为被加载的class。需要通过某种方法获取到JVM的运行时内存中已加载的类, Java本身提供了Instrumentation类来实现运行时注入代码并执行,因此产生一个检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测这样检测比较消耗性能,我们可以缩小需要进行源码检测的类的范围,通过如下的筛选条件组合使用筛选类进行检测:①新增的或修改的②没有对应class文件的③xml配置中没注册的④冰蝎等常见工具使用的⑤filterchain中排第一的filter类
还有一些比较弱的特征可以用来辅助检测,比如类名称中包含shell或者为随机名,使用不常见的classloader加载的类等等
另外,有一些工具可以辅助检测内存马,如java-memshell-scanner是通过jsp扫描应用中所有的filter和servlet,然后通过名称、对应的class是否存在来判断是否是内存马
内 ...
Spring内存马
控制器、拦截器、管道上一篇分析了 Servlet API 中提供的能够利用实现内存马的一些点。总结来说:
Servlet:在用户请求路径与处理类映射之处,添加一个指定路径的指定处理类
Filter:在用户处理类之前的,用来对请求进行额外处理提供额外功能的类
Listener:在 Filter 之外的监听进程
那么除了 Servlet API ,其实在常用的框架、组件、中间件的实现中,只要采用了类似的设计思想和设计模式的位置,都可以被发掘出来作为内存马的相关实现
Spring内存马什么是SpringSpring是一个轻量级的Java开源框架,用于配置、管理和维护Bean(组件) 的一种框架,其核心理念就是IoC(Inversion of Control, 控制反转)和 AOP(AspectOrientedProgramming, 面向切面编程)。如今Spring全家桶已是一个庞大的家族
Spring的出现大大简化了JavaEE的开发流程,减少了Java开发时各种繁琐的配置
Spring框架的核心之一就是分层,其由许多大大小小的组件构成,每种组件都实现不同功能
Spri ...
Tomcat内存马
Java内存马简介内存马又名无文件马,指无文件落地的webshell。传统的webshell需要写入文件,难以逃避防篡改监控。为了与传统的防御手段对抗,衍生出一种新型的内存WebShell技术,其核心思想用一句话概括:利用类加载或Agent机制在JavaEE、框架或中间件的API中动态注册一个可访问的后门
目前内存马主要分为以下几种方式:
动态注册 servlet/filter/listener(使用 servlet-api 的具体实现)
动态注册 interceptor/controller(使用框架如 spring/struts2)
动态注册使用职责链设计模式的中间件、框架的实现(例如 Tomcat 的 Pipeline & Valve,Grizzly 的 FilterChain & Filter 等)
使用 java agent 技术写入字节码
JSP先来简单了解一下JSP技术
JSP(Java Server Pages),是Java的一种动态网页技术。在早期Java的开发技术中,Java程序员如果想要向浏览器输出一 ...
FastJson反序列化
FastJson的使用简介FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象。分别通过 toJSONString 和 parseObject/parse 来实现序列化和反序列化
导入依赖
1234567<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version> </dependency></dependencies>
将类转为 json最常用的方法就是 JSON.toJSONString() ,该方法有若干重载方法,带有不同的参数,其中常用的包括以下几个:
序列化特性:com.alibaba ...
JNDI注入
什么是JNDIJNDI(Java Naming and Directory Interface)即Java命名和目录接口。调用JNDI的API可以定位资源和其他程序对象
Naming Service 命名服务命名服务将名称和对象进行关联,提供通过名称找到对象的操作。其中值得一提的名称服务为LDAP,全称为Lightweight Directory Access Protocol,即轻量级目录访问协议
Bindings: 表示一个名称和对应对象的绑定关系,如在文件系统中文件名绑定到对应的文件,在 DNS 中域名绑定到对应的 IPContext: 上下文,一个上下文中对应着一组名称到对象的绑定关系,可以在指定上下文中查找名称对应的对象。如在文件系统中,一个目录就是一个上下文,可以在该目录中查找文件,其中子目录也可以称为子上下文 (subcontext)References: 在一个实际的名称服务中,有些对象可能无法直接存储在系统内,这时它们便以引用的形式进行存储,可以理解为 C/C++ 中的指针。引用中包含了获取实际对象所需的信息,甚至对象的实际状态。比如文件系统中实际根据名称打开的文件是 ...
红日靶场五
环境搭建
12win7: sun\Administrator dc123.com sun\leo 123.comDC: sun\admin 2020.com
win7打开phpstudy
网站渗透
使用工具检测thinkPHP框架漏洞
上传一句话木马,蚁剑连接
内网渗透信息收集横向移动psexecMS17-010登录远程桌面权限维持DSRM后门
DSRM是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账号(也就是DSRM账号)。DSRM的用途是:允许管理员在域环境出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行 ntdsutil 命令。在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。每个DC都有本地管理员(administrator)账号和密码(与域管理员账号密码不同)。DSRM账号可以作为每个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控 ...
红日靶场四
环境搭建创建仅主机模式子网网卡vmnet1
1vmnet1:192.168.183.0(内) vmnet0:192.168.157.0(外)
WEB主机网卡设置
WIN7主机网卡、DC主机网卡同下设置
123web: ubuntu:ubuntu 192.168. 192.168.157.0win7: douser:Dotest123DC: administrator:Test2008
WEB主机(Ubuntu)上启动环境
1sudo docker start ec 17 09 bb da 3d ab ad
网站渗透扫主机
1nmap -sP -T4 192.168.157.0/24
扫描端口开放情况
1nmap -sS -p 1-65535 -A 192.168.157.0
22端口开放SSH服务;2001使用了Struts2中间件;2002使用了Apache Tomcat中间件;2003为Apache、PhpMyadmin、mysql
Struts2访问2001端口,是一个struts2的框架 ...
红日靶场三
本环境为黑盒测试,在不提供虚拟机帐号密码的情况下进行黑盒测试拿到域控里面的flag。涉及敏感信息泄露、暴力破解、脏牛提权、内网穿透、端口转发、以及域渗透等多种知识点
环境搭建
新建一个VMnet2
本次测试为黑盒测试,所以所有主机都为挂起状态,且账号都默认已经登录。已知出网主机为centos主机,将centos出网网卡和kali攻击机网卡都设置为NAT模式,其它网卡都默认vmnet2模式
开启centos,第一次运行,需重新获取桥接模式网卡ip,service network restart。查看ip发现两个网段192.168.48.0/24(出网ip)和192.168.93.0/24(内网ip)
在kali上ping一下出网主机,看能否连通。开启所有主机,靶场搭建完毕
服务器渗透因为是黑盒测试,所以我们现在并不知道出网主机的ip。使用nmap扫描整个网段,探测存活主机
1nmap -sP -T4 192.168.1.0/24
端口扫描
1nmap -sS -p 1-65535 -A 192.168.1.110
dirsearch进行目录扫描,发现 ...
红日靶场二
环境搭建NAT模式修改为111网段(DCHP也要设置)
添加一个仅主机模式网卡,分配10.10.10.0(DCHP也要设置)
PC
DC
WEB
此虚拟机需要恢复快照,登陆时切换用户为: WEB\de1ay 密码: 1qaz@WSX 进入,还得重新设置下上面的网络适配器
登陆后修改密码为admin@123,随后按要求重启计算机,登录mssql用户
用前面登录的账号密码(.\de1ay admin@123)启动360
到这个目录下启动右键startWeblogic以管理员身份启动weblogic
在物理机访问192.168.111.80:7001,完成搭建环节
主机
网卡1(内)
网卡2(外)
kali
\
192.168.111.128
WEB
10.10.10.80
192.168.111.80
PC
10.10.10.201
192.168.111.201
DC
10.10.10.10
\
外网打点
发现了1433端口判断是sql server,另外一个特征端口就是7001端口,判断为weblogic端口 ...
ctfshow——RealWorld渗透赛
ssh连接
cd /tmp,上传fscan开扫
SSH端口转发123ssh -L 主机A端口X:主机C:主机C端口Z username@hostname# 简单理解为:将对A:X的访问转变成对C:Z的访问#ssh -L 23333:172.2.162.5:80 ctfshow@pwn.challenge.ctf.show -p 28112
也可以用termius的Local Forwarding
Dynamic Forwarding
1ssh -D 23333:172.2.155.5 ctfshow@pwn.challenge.ctf.show -p 28112
sql注入
sql注入得到账号密码(我用burp才能看到回显)
12username=1&email='/**/union/**/select/**/password/**/from/**/user%23@q.c#账号:ctfshow 密码:ctfshase????
登录后台文件管理系统
反序列化继续审计前面源码,发现反序列化入口
1234567891011 ...
红日靶场一
环境搭建三台虚拟机:Win7、Win2003、Win2008 ,默认密码均为hongrisec@2009(若win7重启后密码不对,试试Qwer1234)
kali一个nat网卡,模拟外网攻击机 192.168.52.128
win7一个nat网卡,一个VMnet 1网卡,模拟web服务器 192.168.52.143
win2003一个VMnet 1网卡,模拟内网域成员主机 192.168.52.141
win2008一个VMnet 1网卡,模拟内网域控主机 192.168.52.138
拓扑图
设置完毕后VM1、VM2、VM3就在同一内网中了,只有VM1 web服务器能够访问内网,所以要想访问win2008和win2003服务器必须要先拿下win7服务器,用它做跳板进内网进行横向渗透
win server2008、win2k3密码需更改,改为admin@123
外网渗透信息搜集nmap扫端口服务(启用了防火墙,无法ping)
目录扫描
phpmyadminroot/root成功进入后台
12SHOW GLOBAL VARIABLES L ...
ctfshow终极考核
web640-654打开页面 flag_640=ctfshow{060ae7a27d203604baeb125f939570ef}
刷新抓包 ,返回包 flag_641=ctfshow{affac61c787a82cc396585bea8ecf2dc}
发现奇怪路径,访问
存在跳转,抓包得到flag_642
扫目录
robots.txt —> source.txt
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485include 'init.php';function addUser($data,$username,$password){ $ret = array( 'code'=>0, 'messag ...
内网渗透体系建设——Kerberos攻击专题
Kerberos攻击专题Kerberos认证基础在内网渗透中,Kerberos认证协议是基于票据的一种认证方式,简单理解可以分为三部分:用户(Client)、服务器(Server)和KDC(Key Distribution Center, 密钥分发中心)。KDC包含AS(Authentication Server, 认证服务器)和TGS(Ticket Granting Server, 票据授权服务器)
Kerberos基础认证流程
①AS_REQ。Client向AS发起AS_REQ,请求内容为通过Client的哈希加密的时间戳、ClientID等内容②AS_REP。AS使用Client密码哈希值进行解密,如果解密正确,就返回用krbtgt的NTLM-hash加密的TGT(Ticket Granting Ticket, 票据授权凭证)票据。TGT包含PAC(Privilege Attribute Certificate, 特权属证书),PAC包含Client的相关权限信息,如SID及所在的组。简单理解,PAC就是用于验证用户权限,只有KDC能制作和查看PAC③TGS_REQ。Clien ...