2023年安服、渗透面试常见问题

话不多说,直接上干货。

自我介绍

面试官你好,我是xxx,来自xxx,本科毕业于xxxxxxxx;从事网络安全行业已经有将近三年的工作经验,上一份工作是在xxxxxxxxxxx;负责项目漏洞扫描、渗透测试、基线检查及安全加固然后协助客户进行风险评估、安全监控和日志分析。

1.SQL注入产生的原因

答:接收了相关参数没有去处理,直接带入数据库查询,一般出现在登陆,注册,留言板,等会和数据库有交互的情况都会可能出现SQL注入的漏洞。

分为字符型和数字型,五大查询手法,联合查询,报错2查询,堆叠查询,布尔盲注入,延迟查询

get提交,post提交,cookie提交

防范:在代码层面上对函数进行过滤,或者pdoe处理,下载一些相关的防注入文件,通过include包含放在网站的配置文件里 

2.显注和盲注的区别 

- 显注是一种利用UNION操作符的注入技术。攻击者通过构造恶意的SQL语句,在查询中使用UNION操作符将恶意数据与正常查询结果合并返回。
- 显注的特点是可以直接获取数据库的返回结果,因此攻击者能够快速确认注入是否成功,并且可以通过不断尝试和调整注入语句来获取更多的敏感信息

- 盲注是一种无法直接获取数据库返回结果的注入技术。攻击者无法直接通过页面显示的方式获知注入是否成功,需要通过布尔型盲注或时间延迟盲注等方法进行测试和验证。
- 盲注的特点是攻击者无法直接确认注入是否成功,需要根据应用程序对于不同情况的响应来进行判断。这通常需要比较多的时间和精力来进行试错和推测


防范:
1. 输入验证和过滤:
   - 对于用户输入的数据进行严格的验证和过滤,确保只接受符合预期格式和类型的数据。
   - 使用输入验证规则、正则表达式或白名单来限制输入数据的内容,排除潜在的恶意代码或特殊字符。
2. 参数化查询
   - 使用参数化查询或预编译语句来执行SQL查询,而不是直接拼接用户输入的数据到SQL语句中。
   - 参数化查询能够将用户提供的数据作为参数传递给查询,数据库会对这些参数进行正确的转义和处理,从而防止注入攻击。
3. 最小权限原则:
   - 为数据库用户分配最小的权限,仅赋予其所需的操作权限,避免使用具有高级权限的账户进行应用程序连接。
   - 避免使用具有DDL(数据定义语言)操作权限的账户,限制只使用DML(数据操作语言)操作权限。
4. 消息过滤与隐藏错误信息:
   - 在生产环境下,不要向用户显示详细的错误信息或调试信息,以免暴露敏感信息给攻击者。
   - 将错误信息记录在日志中,以便后续的审计和分析。

3.注入MySQL数据库是通过什么手段先获得表名的?

information_schema

MySQL中的一个特殊数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息,包括数据库名、表名、表栏的数据类型与访问权限。

4.报错注入的几种函数

15种报错函数:

      floor()                  multipolygon()

      updatexml()                linestring()

      extractvalue()              ST_LatFromGeoHash()

      exp()                   ST_LongFromGeoHash()

      GeometryCollection()          GTID_SUBSET()

      polygon()                 GTID_SUBTRACT()

      mutipoint()                ST_PointFromGenHash()

      multionlinestring() 

5.文件上传漏洞

漏洞描述:攻击者可以利用文件上传功能,上传恶意文件,包括木马后门文件,对服务器造成危害。
漏洞原理:Web 开放了文件上传功能.对文件上传功能没有做限制或限制不足.任意文件上传,从而导致获取webshell,任意文件读取,任意命令执行,控制网站,控制服务器
防御:
1.设置黑名单,限制上传文件的后缀名
2.上传文件重命名,尽量少的从客户端获取信息
3.文件内容检测
4.进行二次渲染,过滤掉图片中的恶意代码
5.避免文件包含漏洞
6.检测token值,防止数据包重放

6.文件上传利用方式

1.上传WebShell文件,攻击者可通过这些网页后门执行命令并控制服务器。
2.上传文件是钓鱼图片或者包含了脚本的图片时,图片中的脚本,在某些版本的浏览器上会被作为脚本执行,从而被利用于钓鱼或者欺诈
3.上传病毒、木马文件,用于诱骗用户和管理员下载执行或者直接自动运行。
4.上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击。

防御:
检查文件上传路径 ( 避免 0x00 截断、 IIS6.0 文件夹解析漏洞、目录遍历 )
文件扩展名检测,验证文件扩展名,黑名单和白名单文件 MIME验证、图片二次渲染 、文件重命名、隐藏上传路径、文件内容检测

7.ssrf

漏洞描述:服务器替用户发送URL 请求。攻击者在此场景下,利用这个功能,可以精心构造URL 请求,以服务器的身份或以服务器的角度发起攻击。

漏洞原理:服务器接收用户侧URL 地址时,没有做限制或限制不足,服务器直接返回URL 请求的结果,让攻击者可以知道更多细节。

漏洞防御:
过滤输入:限制协议,仅允许http 或https 协议;
限制IP,避免应用被用来获取内网数据,攻击内网,
限制端口,限制请求端口为常用端口。
过滤输出:过滤返回信息,只要不符合要求的,全部过滤;
统一错误信息,让攻击无法对内网信息进行判断

8.文件包含

漏洞描述:攻击者可以利用任意文件包含漏洞,读取文件,执行代码,对服务器造成危害;
漏洞原理:当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数include(),利用URL去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行
漏洞危害:读取文件,执行PHP代码,直接获取网站后门,控制网站,控制服务器
漏洞防御:设置文件黑名单,过滤协议、目录字符、禁用动态包含

9.xss(跨站请求脚本)

漏洞描述:攻击者利用该漏洞,在网页中注入恶意代码,等待受害者访问被注入恶意代码的网页。网页中的恶意代码会浏览器识别,并执行。恶意代码通常是JavaScript脚本,由于JS代码的灵活性,导致XSS攻击面比较大
漏洞原理:恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入其中Web里面的JS代码会被执行,从而达到恶意的特殊目的,比如可以利用xss盲打网站后台管理员获取cookie
防御:输入验证和数据消毒
分为存储型,反射型,dom型

10.CSRF(跨站请求伪造)

漏洞描述:攻击者盗用了你的身份,以你的名义向服务器发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
漏洞原理:攻击者可以伪造当前已经登录用户的身份访问正常的网站,执行非本意的操作。正常的网站,没有对来源请求进行严格的验证和过滤,导致攻击者可以伪造正常用户的请求,达到攻击目的。
防御:验证http referer字段、在请求地址中添加token并验证、在http头中自定义属性并验证

11.未授权访问

漏洞描述:在不需要请求授权的情况下对需要授权的功能进行访问执行,通常是由于认证页面存在缺陷,安全配置不当。
漏洞原理:未授权访问是系统对用户的限制不全,或者无限制,可以让用户或者限制访问的用户,访问到内部的敏感信息,执行权限之外的功能
分为水平越权和垂直越权两种
会导致泄露用户信息,系统信息;执行系统命令,操作系统文件,导致系统整体安全遭到破坏
常见的未授权访问漏洞:
Redis、Jenkins、docker、weblogic等

12.反序列化漏洞

反序列化漏洞就是在反序列执行的过程中存在一个函数利用链,一条完整的利用链中可能是某个函数在调用的过程中,触发了该函数的危险命令执行,所以会存在反序列化的漏洞,但是该漏洞只能在白盒测试中发现,因为它需要从源代码中观察出利用链中有没有漏洞。
PHP的反序列化漏洞更容易被攻击者利用,因为它的反序列化函数较为脆弱;而Java的反序列化漏洞虽然存在,但攻击难度较大。
JAVA反序列化漏洞是由于开发者重写了readObject方法,该readObject方法方法调用了别的方法,最终执行到了例ransfrom方法的危险方法

常见的魔术方法:
__construct   当一个对象创建时被调用,
__destruct   当一个对象销毁时被调用,
__toString   当一个对象被当作一个字符串被调用。
__wakeup()   使用unserialize时触发
__sleep()    使用serialize时触发
__destruct()    对象被销毁时触发
__call()    在对象上下文中调用不可访问的方法时触发
__callStatic()    在静态上下文中调用不可访问的方法时触发
__get()    用于从不可访问的属性读取数据
__set()    用于将数据写入不可访问的属性
__isset()    在不可访问的属性上调用isset()或empty()触发
__unset()     在不可访问的属性上使用unset()时触发
__toString()    把类当作字符串使用时触发,返回值需要为字符串
__invoke()   当脚本尝试将对象调用为函数时触发

13.免杀

免杀就是反病毒技术,它指的是一种使病毒木马免于被杀软查杀的技术,由于免杀技术的涉猎范围非常广,其中包含反汇编、逆向工程、系统漏洞等和壳技术,所以难度很高,其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

14.延时注入

原理:利用sleep()或benchmark()等函数让mysql执行时间变长,并结合判断条件if(expr1,expr2,expr3),然后通过页面的响应时间长短来判断语句返回的值是TRUE还是False,从而猜解一些未知的字段

函数sleep(duration):
睡眠(暂停)时间为duration参数给定的秒数,然后返回0。若sleep()被中断,它会返回1

BENCHMARK(): 这个函数可以重复执行指定的SQL语句多次,用于测试某个查询的执行时间。例如,使用SELECT BENCHMARK(1000000, MD5('A'))会执行100万次MD5哈希运算,并返回执行时间。

WAITFOR DELAY: 这个函数主要用于Microsoft SQL Server中,可以使数据库等待指定的时间后再继续执行。例如,使用WAITFOR DELAY '00:00:05'会使数据库等待5秒钟。

pg_sleep(): 这个函数主要用于PostgreSQL数据库中,与SLEEP()函数类似,可以使数据库进程休眠一段时间。例如,使用SELECT pg_sleep(5)可以让数据库等待5秒钟后再返回结果。

15.获取webshell方式

1.条件1: 配置文件中secure file_priv变量非NULL,表示支持数据导入导出
2.条件2: 用户拥有root权限
3.条件3:知道当前网站的绝对路径

16.命令执行的函数

攻击者可以通过在受攻击的应用程序中注入恶意的系统命令来执行任意操作。

常用的命令执行函数:
exec():编程语言和操作系统中都有exec()函数,用于执行外部系统命令。攻击者可能会注入恶意命令作为exec()函数的参数,导致执行恶意命令。

system():system()也用于执行外部系统命令。攻击者可以将恶意命令作为system()函数的参数进行注入,从而执行恶意操作。

passthru(): 这个函数通常用于直接将命令输出发送到浏览器。攻击者可以通过注入恶意命令作为passthru()的参数,将命令执行结果直接显示在页面上。

防御:采用参数化查询、输入验证和信任的白名单等安全措施,以防止命令执行漏洞的利用。同时,及时更新和修补已知的安全漏洞

17.文件包含的函数

通过在应用程序中控制文件路径或参数来包含恶意文件。

常见的与文件包含漏洞相关的函数:
include(): 用于包含并执行指定的文件。如果应用程序未正确验证和过滤用户输入,攻击者可以通过注入恶意文件路径来包含恶意文件。

include_once():但只会包含文件一次。同样,如果应用程序未正确处理用户输入,攻击者可能通过注入恶意文件路径进行攻击

require():也用于包含文件。如果应用程序未正确验证和过滤用户输入,攻击者可以通过注入恶意文件路径来包含恶意文件。

require_once():也只会包含文件一次。同样需要谨慎防范恶意文件包含漏洞。

防御:对用户输入进行充分的验证和过滤,确保只包含可信任的文件,并限制文件路径的访问范围。白名单、及时更新和修补已知的安全漏洞也是非常重要的。

18.CSRF漏洞与xss有什么区别

(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃
取用户信息等攻击。
修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取
Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。

(2)CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于
没有在关键操作执行时进行是否由用户自愿发起的确认。
修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检
验 Referer

19.逻辑漏洞

(1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码
(2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到Session 或 Cookie 即可伪造用户身份
(3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过

20.怎么做的安全检查

检查一下它的账户安全、口令安全、文件权限管理、端口和服务、系统日志审计和设备网络控制等几个方面来检查,加固的话就是从这些角度去加固:

1.账户安全
windows
设置登录时不显示上次登录的用户名,防止弱口令爆破。
设置账户锁定,登录行为限制次数,达到次数后锁定多长时间。

linux
禁用root之外的超级用户 使用password -l <用户名>命令来锁定用户 -u解锁
限制普通用户使用sudo提权,或者说限制提权的权限大小
锁定系统中多余的自建账号
设置账户锁定登录失败锁定次数,锁定时间 faillog -u <用户名>命令来解锁用户

2.口令安全
windows
设置密码必须符合复杂性要求,比如设置时数字,大写字母,小写字母,特殊字符都要具备
设置最小密码长度不能为0,设置不能使用历史密码

linux
检查shadow中空口令账号,修改口令复杂度,设置密码有效期

3.文件权限管理
linux上重要文件设置不可修改权限

4.系统日志审计
linux上设置系统日志策略配置文件
系统日志 /var/log/message
cron日志/var/log/cron
安全日志/var/log/secure

5.设备和网络控制
比如在涉密计算机上禁止访问外网,为了避免用户绕过策略可以禁止用户修改IP
删除默认路由配置,避免利用默认路由探测网络
禁止使用USB设备比如U盘
禁止ping命令,即禁用ICMP协议访问,不让外部ping通服务器

6.服务与端口收敛
关闭或者限制常见的高危端口,比如说22端口(SSH),23端口(Telnet),3389端口(RDP)
compmgmt.msc排查计划任务
linux上iptables封禁IP或者限制端口

21.Windows怎么做应急

系统账户排查:net user
检查异常端口:netstat -ano
检查可疑进程和服务:tasklist
可疑启动项排查:msconfig
查看登录日志:eventvwr.msc
看内存占用率

22.linux怎么做应急

查看用户账户信息:cat/etc/passwd
查看历史命令:history
查看异常端口:netstat -tunlp 进程:ps aux 杀死:kill -9 pid号
查看是否有异常任务编写进来:crontab -l
查看日志信息:/var/log

23.溯源

1.收集攻击事件相关的日志,网络流量(ads/ips的警报,网络流量捕获的文件)
2.通过分析收集到的证据,确定攻击的类型时间,可能的攻击源
3.追踪攻击来源,ip地址,域名,网络路径
4.联系相关方
5.采取响应的防御和应对措施

24.目前已知哪些版本的容器有解析漏洞

<br class="Apple-interchange-newline"><div></div>

解析漏洞主要是说一些特殊文件被一些web容器在特殊情况下被解释成脚本文件格式IIS 6.0
IIS 7.0/7.5   默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析nginx:版本小于等于 0.8.37,利用方法和 IIS 7.0/7.5 一样,Fast-CGI 关闭情况下也可利用。Apache:上传的文件命名为:test.php.x1.x2.x3,Apache 是从右往左判断后缀

25.态势感知

一般情况,真实攻击不可能只持续一次,它一定是长时间、周期性、多IP的进行攻击;先查看报文,分析报文里和host和网站目录路径,查看是否可疑,或者使用wireshark对数据包深度分析一下流量;
1.比如说弱口令的话在流量中就会存在admin、123456,或者root之类的,那我们验证这个ip是不是自己人,弱口令一般都是被爆破的情况比较多,那我们就看看它的日志是否存在被爆破的状态。
2.SQL注入的话流量中就会有select,updatexml等有关数据库操作的关键词,还是看它的ip,观察它是正常的查询还是恶意的注入(or 1=1)这样的,也可能会存在SQLmap这样的数据,也会是被攻击的情况。
3.xss中查看有没有包含的恶意js代码

26.等保测评的流程

1. 等保测评准备:明确测评范围和目标,准备测评资料和环境。
2. 测评申报:申报测评项目,并提交相关材料。
3. 测评评估:评估人员对测评对象进行评估,包括现场检查、文件审核、访谈调查等方式。
4. 测评报告:评估人员编写测评报告,对评估结果进行说明和分析。
5. 测评反馈:对评估结果进行反馈,并提出整改建议。
6. 整改复查:对整改情况进行复查,并确认整改是否合格。
7. 测评结果:根据评估结果和等级判定,颁发等级证书。

27.内网渗透流程

1.信息收集:收集有关目标网络的信息,包括 IP 地址范围、操作系统、网络拓扑结构、开放端口和服务等。
2.漏洞分析:分析目标网络中存在的漏洞,并找出可以利用的漏洞进行攻击。
3.攻击尝试:尝试利用找到的漏洞进行攻击,获取对目标网络的访问权限。
4.权限提升:在获得访问权限后,尝试通过各种手段提升自己在目标网络中的权限。
5.持久化访问:确保在目标网络中的访问权限能够持久保留,以便在之后的操作中使用。
6.清除痕迹:在完成渗透测试后,应当清除在目标网络中留下的任何痕迹,以免被发现

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值