护网蓝队面试

一、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/exe或file/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扫描内网,端口6379是redis,然后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官方也给出了警告

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");?>

exec — 执行一个外部程序
exec()执行 command 参数所指定的命令
举个例子
<?php echo exec("whoami");?>

shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字 符串的方式返回。
<?php echo shell_exec("whoami");?>
passthru — 执行外部程序并且显示原始输出
<?php passthru("whoami");?>
引发文件包含的危险函数
主要作用为包含并运行指定文件。
- include():代码执行到此函数时才将文件包含进来,发⽣错误时只警告并继续执行
- include_once():功能和前者一样,区别在于调用同一文件时,程序只调用一次
- require():立即调用此函数包含文件,发⽣错误时,会输出错误信息 并⽴即终⽌程序
- 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是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进⾏重放,达到身份认证等⽬的
常见对应端口及服务

设备
安全设备
奇安信天眼
设备类型:全流量
大致使用方法
天眼首页截图:
左边监测控制台,打开,有告警信息:
分析时觉得IP有问题可以在攻击IP中搜索
打开告警列表(奇安信网神?):
点击详情,显示如下内容:
微步tdp/tip
TDP的
主页面:
主要点击外部攻击的外部攻击项
告警主机项,上面可以查询IP:
内网渗透分析,被攻陷后可以看网络拓扑:
优势项:自动识别一些恶意IP,即答:tdp威胁情报发现有利于溯源分析
青藤云HIDS
设备类型:全流量
大致使用方法
主页面,主机资产,安全台账功能,将可疑IP放到里面点击主机详情,看是不是内部IP:
点击入侵事件,查看告警,点击告警的漏洞名称,可以跳到类似于天眼的详情信息页面
可以查日志,筛选IP/域名/进程进行查询
优势项:可以直接发现暴力破解,不需要人工添加规则
明御安全网关
总结优势
HIDS:对全网信息捕捉
微步:
攻击发现,会显示攻击者画像 方便溯源分析
威胁情报发现,发现恶意IP
亚信:ei拦截的恶意文件会自动在an中运行检测生成报告
ddei邮件网关,过滤垃圾邮件,对恶意文件隔离
ddan沙箱(=微步云沙箱):检测恶意文件,分析恶意样本,收集攻击信息,生成行为报告
相关文章:
护网蓝队面试
一、sql注入分类 **原理:**没有对用户输入项进行验证和处理直接拼接到查询语句中 查询语句中插⼊恶意SQL代码传递后台sql服务器分析执行 **从注入参数类型分:**数字型注入、字符型注入 **从注入效果分:**报错注入、布尔注入、延时注入、联…...
【高考志愿】金融学
目录 一、金融学类专业概述 二、主要课程 三、就业前景与方向 四、适合人群 五、金融学学科排名 六、总结 高考志愿选择金融学,无疑是一个既充满挑战又极具前景的决策。金融学,作为经济学门类下的重要分支,不仅涵盖了广泛的金融领域知识…...
返利App的用户行为分析与数据驱动决策
返利App的用户行为分析与数据驱动决策 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨返利App中的用户行为分析与数据驱动决策的技术细节和实…...
python基础:高级数据类型:集合
1、集合的定义 集合是一个无序且无重复元素的列表。其定义与数学定义一致。其无序和不重复和字典特征类似,但是无“值”。 2、集合的创建 集合一般由列表创建,在初始化列表时保证其元素唯一性,即为集合。 创建方法:x set(list…...
idk17配置
只需要把zip包解压,然后配置环境变量: bin目录路径粘到path里面就好了 然后打开cmd窗口分别输入 java javac java -version 验证...
Java实现日志全链路追踪.精确到一次请求的全部流程
广大程序员在排除线上问题时,会经常遇见各种BUG.处理这些BUG的时候日志就格外的重要.只有完善的日志才能快速有效的定位问题.为了提高BUG处理效率.我决定在日志上面优化.实现每次请求有统一的id.通过id能获取当前接口的全链路流程走向. 实现效果如下: 一次查询即可找到所有关…...
你敢相信吗,AI绘画正在逐渐取代你的工作!
前言 在当今信息技术高速发展的时代,AI绘画技术的崛起已引起了广泛关注和讨论。许多人开始担心AI技术是否会逐渐取代传统绘画师的工作。人类无疑是感性的动物,创作出来的艺术作品常常带有浓郁的个人风格和情感。但AI绘画在某些方面的突破,使…...
博途PLC轴工艺对象随动误差监视功能
S7-1200PLC和V90总线伺服通过工艺对象实现定位控制时在组态工艺对象里有这样的随动误差监视功能介绍,关于这个功能,今天我们解读下,工艺对象组态编程可以参考下面文章链接: S7-1200PLC和V90总线伺服通过工艺对象实现定位控制(标准报文3应用)_v90工艺对象3号报文-CSDN博客文…...
《昇思25天学习打卡营第24天 | 昇思MindSporeResNet50图像分类》
24天 本节学习了使用ResNet50网络对CIFAR-10数据集进行分类。 步骤: 1.数据集准备与加载 2.构建网络 残差网络结构(Residual Network)是ResNet网络的主要亮点,ResNet使用残差网络结构后可有效地减轻退化问题,实现更深的网络结构设计&#x…...
糟糕的管理者都有这几个特征
在我们的职业生涯中,我们都期望能遇到一位英明睿智、引领团队走向辉煌的管理者。然而,现实往往并非总是如此美好,总会有一些管理能力差的人混迹其中,给团队带来诸多困扰。今天,我们就来看看糟糕的管理者身上都有哪些特…...
Python (Ansbile)脚本高效批量管理服务器和安全
1、简介 在现代 IT 基础设施中,管理大量服务器是一项复杂而繁琐的任务。特别是在检查服务器的存活状态以及 SSH 登录等任务上,手动操作非常耗时且容易出错。本文将介绍如何使用 Python 脚本实现对多台服务器的批量检查和管理,包括检查服务器…...
《数字图像处理与机器视觉》案例三 (基于数字图像处理的物料堆积角快速测量)
一、前言 物料堆积角是反映物料特性的重要参数,传统的测量方法将物料自然堆积,测量物料形成的圆锥表面与水平面的夹角即可,该方法检测效率低。随着数字成像设备的推广和应用,应用数字图像处理可以更准确更迅速地进行堆积角测量。 …...
Postman接口测试工具的原理及应用详解(四)
本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景…...
扛鼎中国AI搜索,天工凭什么?
人类的创作不会没有瓶颈,但AI的热度可不会消停。 大模型之战依旧精彩,OpenAI选择在Google前一天举行发布会,两家AI企业之间的拉扯赚足了热度。 反观国内,百模大战激发了大家对于科技变革的热切期盼,而如今行业已逐渐…...
【Ant Design Vue的更新日志】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...
Elasticsearch环境搭建|ES单机|ES单节点模式启动|ES集群搭建|ES集群环境搭建
文章目录 版本选择单机ES安装与配置创建非root用户导入安装包安装包解压配置JDK环境变量配置single-node配置JVM参数后台启动|启动日志查看启动成功,访问终端访问浏览器访问 Kibana安装修改配置后台启动|启动日志查看浏览器访问 ES三节点集群搭建停止es服务域名配置…...
System.currentTimeMillis() JAVA 转C#
JAVA中的System.currentTimeMillis() ,指获取当前时间与1970年1月1日00:00:00 GMT之间所差的毫秒数的方法。 这个方法返回的是一个long类型的值,表示从某个固定时间点(通常是UNIX纪元,即1970年1月1日00:00:00 GMT)到…...
人机交互新维度|硕博电子发布双编码器操作面板、无线操作面板等新品
6月15日,硕博电子召开了一场新品发布会,向业界展示了多项前沿技术成果,其中备受瞩目的当属SPM-KEYP-D08双编码器操作面板、SPM-KEYP-D16W无线操作面板、SPR-HT-XK12A无线手持发射端以及SPQ-WT-B01洒水车专用控制面板。这些创新产品的亮相&…...
简单shell
目录 预备知识 fork 进程等待 wait waitpid 环境变量 概念 分类 常见的环境变量及其用途 环境变量的查看与设置 exec系列 函数解释 命名理解 简单shell 预备知识 fork fork 是 Linux 和许多其他类 Unix 系统中的一个重要系统调用,它用于创建一个新的…...
Spring Boot + FreeMarker 实现动态Word文档导出
Spring Boot FreeMarker 实现动态Word文档导出 在现代企业应用中,文档自动化生成是一项提升工作效率的重要功能。Spring Boot与FreeMarker的组合,为开发者提供了一个强大的平台,可以轻松实现动态Word文档的导出。本文将指导你如何使用Sprin…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
