发布于2022年11月4日2年前 2020渗透测试面试问题大全 渗透篇 1、介绍一下自认为有趣的挖洞经历挖洞也有分很多种类型,一种是以渗透、一种是以找漏洞为主,如果是前者会想各种办法获取权限继而获取想要的的东西完成渗透目标,这类跟HW类似,目标各种漏洞不算,要有Shell,服务器权限才给分,这才是最接近实战渗透,跟某部门有合作的话也是属于这种打击网络犯罪获得权限、传销数据、组织架构,服务器权限、等...... 2、你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案?SQL注入、密码组合,前者防护分为几种,CDN -> Web -> 数据库 -> 主机,设置最小权限来应对。密码组合根据个人习惯 3、php/java反序列化漏洞的原理?解决方案?php中围绕着serialize(),unserialize()这两个函数,序列化就是把一个对象变成可以传输的字符串,如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了。 O:7:"chybeta":1:{s:4:"test";s:3:"123";}这里的O代表存储的是对象(object),假如你给serialize()传入的是一个数组,那它会变成字母a。7表示对象的名称有7个字符。"chybeta"表示对象的名称。1表示有一个值。{s:4:"test";s:3:"123";}中,s表示字符串,4表示该字符串的长度,"test"为字符串的名称,之后的类似。当传给 unserialize() 的参数可控时,我们可以通过传入一个精心构造的序列化字符串,从而控制对象内部的变量甚至是函数。 JAVA Java 序列化是指把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。Java 反序列化是指把字节序列恢复为 Java 对象的过程,ObjectInputStream 类的 readObject() 方法用于反序列化。 4、如果一台服务器被入侵后,你会如何做应急响应?1.准备相关的工具,查后门等工具2.初步判断事件类型,事件等级。3.抑制范围,隔离使爱害面不继续扩大4.查找原因,封堵攻击源。5.业务恢复正常水平.6.总结,报告,并修复、监控以上是常规的回答,想知道你是否有这方面应急相关的经验,像这类问题甲方面试比较多。 5、你平时使用哪些工具?以及对应工具的特点?AWVS、Masscan、BurpSuiteAWVS常规漏洞扫描,masscan快速查找端口,burp重复提交数据包想知道是否有自己开发工具,如果没有你对每个安全工具有哪些独特的见解以及别人不知道的技巧用法。如:awvs如何批量扫描?burpsuite如何爆破401、脱库等、等等... 6、如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一)PHP上传,无法上传php、解析、后台没有办法拿到,只有一处点可以上传。通过Windows特性shell.php::$DATA,是一个项目管理系统 7、如何判断sql注入,有哪些方法提交错误语句是否有异常,除此之外这些显示的错误可以通过sleep,修眠语句执行5秒等,除此之外通过DNSlog判断是还有传回值 8、如何判断 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些?select * from news where id = '$SQL';当程序执行访问新闻等一些操作都会执行到sql语句进行调用,如果在此调用过程中,提交了不合法的数据,而数据库无法识别则会报错。也就是一切输入都是有害的。 注入类型有6种,可以参考SQLMAP,报错、盲注、联合、时间、内联、堆叠注入提交方式:GET、POST、Cookies、文件头利用方式:具体看什么数据库类型,像SQLSERVER可以命令执行,MYSQL写shell有些权限大也可以执行命令但是条件是在lINUX环境下。防范:边界,CDN -> 脚本语言过滤 -> 数据库过滤最小权限 -> 主机 9、为什么有的时候没有错误回显没有进行错误打印或者错误屏蔽 10、宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造?在mysql中使用了gbk编码,占用2个字节,而mysql的一种特性,GBK是多字节编码,它认为两个字节就代表一个汉字,所以%df时候会和转义符\ %5c进行结合,所以单引号就逃逸了出来,当第一个字节的ascii码大于128,就可以了。 11、CRLF注入的原理CRLF注入在OWASP 里面被称为HTTP拆分攻击(HTTP Splitting)CRLF是”回车 + 换行”(\r\n)的简称,在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行 12、mysql的网站注入,5.0以上和5.0以下有什么区别?5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。5.0以下是多用户单操作,5.0以上是多用户多操做。 13、php.ini可以设置哪些安全特性禁用PHP函数允许include或打开访问远程资源 14、php的%00截断的原理是什么?因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行条件:PHP<5.3.29,且GPC关闭 15、webshell检测,有哪些方法grep、关键词、关键函数安全狗、D盾 16、php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?if ($_GET['file']){ include $_GET['file'];}包含的文件设置为变量,并且无过滤导致可以调用恶意文件 还可以对远程文件包含,但需要开启allow_url_include = ON 通过测试参数的地方进行本地文件/etc/passwd等包含 如何存在漏洞而且没有回显,有可能没有显示在页面而是在网页源代码中,除些可以利用DNSlog进行获取包含的信息。从index.php文件一级级往读取 也可以利用PHP封装协议读取文件 17、说说常见的中间件解析漏洞利用方式IIS 6.0 /xx.asp/xx.jpg "xx.asp"是文件夹名IIS 7.0/7.5 默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析Nginx 版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CGI关闭情况下也可利用。空字节代码 xxx.jpg%00.phpApache 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀 18、mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式?mysql -> usersSHA1 19、Windows、Linux、数据库的加固降权思路,任选其一禁用root禁止远程访问禁止写入单独帐号禁止执行system等函数 20、你使用什么工具来判断系统是否存在后门ChkrootkitRkhunter
创建帐户或登录后发表意见