一、 Web 常问( 42 )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 过于信任,没有对攻击者提供的 RUL 进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
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远程登录25 :SMTP邮件服务53 :DNS域名系统80 : HTTP 超文本传输协议443 : HTTPS 安全超文本传输协议1433 : MSSQL3306 : MYSQL3389 : windows 远程桌面服务端口7701 : weblogic8080 : 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