这是一篇长期更新的随笔,如有更好的面试经验 / 题目分享,欢迎联系我~
Web安全方面(TOP10)
该部分主要收集关于Web安全方面(TOP10)的面试经验,
推荐配合靶场练习更容易理解。
1. SQL注入的原理是什么?
SQL注入主要是由于意料之外的拼接和解析SQL语句造成。
当服务端使用语句拼接的方式构建SQL语句并带入后台查询时,
如果用户构造恶意的SQL语句并与服务端SQL语句拼接,
就会造成SQL注入攻击。
2. SQL注入绕过WAF的方式有哪些?
包括但不限于:编码伪装(如URL编码,Unicode编码),转义字符伪装,大小写伪装,双写伪装,内联注释伪装。
3. 如何利用SQL注入写入Shell?
利用into outfile函数即可写入Shell,或利用sqlmap的--os-shell功能。
4. 如何防止SQL注入攻击?
使用预编译语句或者参数化查询,或最小化数据库权限,安全配置数据库参数,使用WAF检测等。
5. SQL注入除了可以在网页构造注入点,还有哪些地方可以成为注入点?
还可以在HTTP请求的头信息进行SQL注入,包括但不限于:User-Agent,Referer,Cookie,X-Forwarded-For,Host等。
6. SQL注入的报错函数有哪些?请举例。
updatexml(),extractvalue(),floor(),ST_LatFromGeoHash(),ST_LongFromGeoHash(),
GTID_SUBSET(),GTID_SUBTRACT(),ST_Pointfromgeohash()
(一般只用到前三个)
7. 关于SQL盲注,你能简单说一下吗?
好的,盲注是在有回显SQL注入的基础上,依然将SQL语句代入执行,但并无直观的回显,这种类型的SQL注入叫做SQL盲注。
盲注大致分两种类型:布尔盲注 / 时间盲注。
布尔盲注是有且只有True / False 两种情况的直观回显。
时间盲注是并无任何直观回显,我们需要利用if(),sleep()等函数构造时间差来使回显直观化。
8. sqlmap你有使用过吗?简单说一下一个sqlmap攻击流程?
有用过,sqlmap主要是先用--dbs探测能否注入出来数据库,然后再用--tables来注入出来数据表,
随后--columns注入出列(字段),最后--dump注入出数据。
同时也可以--os-shell直接写入Shell。
9. MySQL5.0以下和5.0以上注入有什么区别?
5.0以下没有information_schema这个内置表,只能利用类似盲注的方式暴力跑库。
5.0以上可以用information_schema来直观注入。
10. SQL注入如果空格被过滤了,那么应该怎么替代空格?
%0a,%0b,%a0,/**/等。
11. XSS的原理是什么?
XSS全称为跨站脚本攻击,其漏洞主要是恶意攻击者在Web页面里插入恶意HTML语句,
当用户浏览该页面时,嵌套在Web页面中的恶意HTML语句被触发,从而达到恶意目的。
12. XSS的几种类型可以说一下吗?
好的,XSS一共有三种类型,分别是:反射型,存储型,DOM型。
反射型XSS一般通过用户的不自觉输入恶意参数触发,一般在URL上构造参数,直接反射到页面上。
存储型XSS直接将恶意脚本语句保存在目标服务器中,当其它用户访问该网页时不附带任何参数即可直接触发。
DOM型XSS是通过客户端脚本来修改DOM的方式实现的,不涉及服务器端的脚本处理。
13. XSS攻击能用来做什么?
XSS攻击可以利用的目的包括但不限于:窃取用户Cookie,会话劫持,钓鱼攻击,篡改网页等。
14. 如果你被XSS攻击了,你该怎么最快速度判断你受的是何种XSS攻击?
这个需要具体情况具体分析:
反射型XSS的判断方式是:再次发送一遍带有XSS代码的请求,只能在第一次返回的数据包中发现XSS代码。
存储型XSS的判断方式是:再次发送一遍带有XSS代码的请求,返回包里还存在XSS代码。
DOM型XSS的判断方式是:再次发送一遍带有XSS代码的请求,你在返回包中看不到XSS代码。
15. XSS绕过方式简单说一下?
包括但不限于:编码绕过(例如URL编码,HTML实体编码,多次编码),双写绕过,无意义字符绕过,事件属性绕过等。
16. 请简单说一下CSRF的原理是什么?
好的,CSRF全称为跨站请求伪造,原理是用户的身份被攻击者恶意盗用,以用户的身份对服务器发送恶意请求,
对于服务器来说认为这个请求是完全合法合规的,于是完成了攻击者的意图。
17. CSRF的危害有哪些呢?
CSRF的具体使用场景有很多,包括但不限于:
在不经意见接管账户,
传播CSRF蠕虫,
利用CSRF获取敏感信息等。
18. 关于CSRF漏洞的防护思路,请简述一下。
CSRF的防御方式包括但不限于:
尽量使用POST传参,这样能规避参数直接在URL中被传递出去。
利用Token进行校验。
19. SSRF漏洞是什么?
SSRF是服务器端请求伪造,与CSRF相似,但利用方式从客户机变成了服务器。通过服务器对外部系统进行意外的请求。
20. SSRF漏洞应该怎么事先防御?
SSRF的防护方式包括但不限于:
输入验证(即常见的黑白名单),
网络访问控制(ACL),
身份验证和授权(如请求权限校验,API密钥和OAuth进行身份校验)等。
21. XXE的攻击原理是什么?
XXE的攻击原理是XML 允许定义外部实体(External Entities),这些实体可以是系统文件、远程文件或其他资源。
在解析 XML 时,处理器会替换这些实体的内容。
攻击者可以通过在 XML 文档中嵌入恶意实体,诱使解析器加载或执行这些实体,从而达到攻击目的。
22. XXE修复建议能简述一下吗?
XXE的修复建议包括但不限于如下几点:
禁用外部实体解析。
输入验证,对SYSTEM,PUBLIC等关键词进行严格的过滤。
利用WAF配置安全策略等。
23. 文件上传漏洞的原因可能有哪些?
文件上传漏洞的原因包括但不限于:
文件类型验证不严。(如没有检查Content-Type字段,没有检查文件后缀名等)
文件名验证不严。(如添加空格,字符串等文件名绕过)
文件内容验证不严。(对含有恶意代码的文件校验不严)
24. 关于文件上传的防御措施你知道哪些?
文件上传的防御措施包括但不限于:
文件类型白名单。(只允许特定类型的文件上传)
文件名及路径回显处理。(避免直接使用文件名本身上传,上传的文件路径非必要不回显)
文件内容的检查。(检查文件内容是否含有恶意代码)
访问控制。(限制文件上传路径的访问控制使其不可通过URL直接访问)
25. 文件包含漏洞知道吗?利用方式有哪些?
文件包含漏洞的利用方式主要有以下几种:
读取敏感信息。(如Linux中的/etc/passwd等)
文件上传/注入代码利用。(上传图片马或将恶意语句注入到某些日志中,利用文件包含漏洞触发恶意代码)
利用VPS进行远程执行恶意脚本等。
Web安全方面(Shell的利用与流量)
该部分主要收集关于Web安全方面(Shell的利用与流量)的面试经验,
配合一些WebShell管理工具,抓取木马的流量配合理解会更容易。
1. 常见的一句话木马有哪些种类?
常见的一句话木马有PHP,ASP,JSP,Python等
2. 关于一句话木马绕过WAF(免杀马),你了解多少?
一句话木马绕过WAF和免杀包括但不限于如下手段:
字符串混淆。(将恶意代码的关键字符串进行分割再拼接)
编码和解码。(对一句话木马的关键内容进行编码,使用时再进行解码)
使用非标准函数或赋值拼接。(利用不常见的函数或者利用变量赋值再拼接来构造木马)
隐写。(将恶意代码隐藏在可操作文件内,再通过另外脚本读取后执行)
3. 内存马了解过吗?简单说一下什么是内存马。
内存马的原理是攻击者再目标系统的内存中植入的恶意代码,
这个恶意代码可以常驻在内存中并且可以执行。
从而在不增加文件的基础上达到写入Shell的目的,增强潜伏和隐蔽性。
4. 如果你发现已经被传WebShell了,你该怎么做?
如果服务器被传了WebShell,那么:
首先我会立即隔离该服务器,以防止攻击者的进一步行动。如果可能,尽快停止服务以阻断WebShell的执行。
其次马上收集关于该WbebShell的信息,比如创建时间,修改时间等,确定大致入侵的时间。
然后会针对整个服务器及其旁站进行搜查可疑文件,查看日志信息,确定WebShell的影响范围。
最后我会分析WebShell的功能和影响,了解漏洞所在点和触发情况后,对系统中的WebShell进行彻底清除。
5. 对于一个服务器,你怎么提前防御可能的传马行为?
对于一个服务器防御传马行为,我会做如下几件事:
严格控制文件上传。(利用白名单,WAF设备等方式严格控制可能的上传点)
加强权限管理。(对账户做权限分级,设置敏感目录等)
使用最新的应用和系统版本。(规避风险)
6. 你用过哪些Shell的连接工具?
用过的WebShell工具有:菜刀,蚁剑,冰蝎,哥斯拉(说这四个就够了,菜刀不算很常用了)。
7. 你能说一下蚁剑的流量特征吗?
蚁剑的主要流量特征如下:
UA:默认UA是AntSword XXX,可以修改。
Content-Type:一般是"application/x-www-form-urlencoded"或"multipart/form-data"。
参数名大多都是"_0x"打头。
8. 冰蝎2的流量特征?
冰蝎2的主要流量特征如下:
通信协议:冰蝎2主要使用HTTP协议进行连接,Base64编码进行传输。
UA每次请求变换一个(可以修改)。
Content-Length: 16。
加密方式:对称密钥加密。
9. 冰蝎3的流量特征?
冰蝎3的主要流量特征如下:
UA每次请求变换一个(可以修改)。
jsp连接时Content-Type: application/octer-stream。
动态密钥获取变更为静态密钥获取,默认密钥是WebShell密码的md5前16位(默认密码rebeyond加密后是密钥就是e45e329feb5d925b)。
10. 冰蝎4的流量特征?
冰蝎4的主要流量特征如下:
UA每次请求变换一个(可以修改)。
Accept: application/json, text/javascript, /; q=0.01。
Content-Type: application/x-www-form-urlencoded。
11. 哥斯拉流量特征?
哥斯拉的主要流量特征如下:
UA暴露JDK版本信息。
Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2。
Cookie后面带";"号。
12. 内存马怎么排查?
优先检查Web日志(如果有大量URL请求路径相同但参数不同,或访问页面不存在但返回包是200 OK的)。
Web日志如果没有问题,那就检查框架日志(常用框架一般具有error.log日志,查看是否有可疑报错)。
还可以根据WebShell管理工具的流量特征去查URL请求和流量信息。
Web安全方面(中间件漏洞)
该部分主要收集关于Web安全方面(中间件漏洞)的面试经验,
建议自己搭建靶场去实际操作一番会更容易理解。(当然中间件漏洞的原理比较难以理解)
1. Struts2框架漏洞原理能否简述一下?
Struts2是一个基于Java开发的Web应用程序,其使用的OGNL表达式存在二次解析而形成的OGNL表达式注入漏洞
原理是:当OGNL表达式处理View层数据字符串到controller层转换为Java对象时调用了getValue()方法,
导致语句可以被当作Java语句进行执行,从而构成了远程代码执行漏洞。
2. WebLogic框架漏洞原理能否简述一下?
WebLogic是Oracle出品的一个Web应用程序,关于WebLogic的漏洞有比较多的类型。
以下是一些WebLogic的漏洞原理:
CVE-2018-2628(反序列化)漏洞:
WebLogic中的RMI通信使用T3协议在其它Java程序之间传递数据,
而攻击者可以利用T3协议构造恶意的反序列化语句触发WebLogic Server WLS Core Components中的反序列化漏洞,
以此实现反序列化引起的远程代码执行漏洞。
CVE-2019-2618(任意文件读取【弱口令】+文件上传)漏洞:
hello目录下的file.jsp可实现任意文件读取,
由于WebLogic密码使用AES-3DES对称加密,读取security目录下的SerializedSystemIni.dat文件即可获取密钥,
然后读取config目录下的config.xml即可获取加密管理员密码
通过特定工具即可解密管理员密码,登录后使用冰蝎生成war木马将其部署到WebLogic服务器上即可GetShell
CVE-2020-14882与CVE-2020-14883组合(权限绕过+远程RCE)漏洞:
WebLogic存在控制台(console)页面,此页面可以利用14882未授权进行登录,但权限较低。
接管控制台页面后,可以利用14883来进行远程任意代码执行。
长期更新,未完待续......