一、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沙箱(=微步云沙箱):检测恶意文件,分析恶意样本,收集攻击信息,生成行为报告