渗透测试面试技巧 – 作者:我爱喝牛奶i

渗透测试工程师面试:

渗透就跟泡妹纸⼀样样的,认识妹纸–了解妹纸(信息收集)–逗妹纸开心(扫描)– 得到妹纸的肯定之后

就开始寻找时机表⽩(漏洞利⽤) — 表⽩失败(漏洞被修补或有WAF)要么死缠烂打要么就Next one,要么就⽤其他的⽅法来搞定妹纸(有WAF就是⼼存芥蒂,我们就要得到真⼼,就是要⽤真情感化),⽐如搞定她姐妹,帮她搞定她的难题,要浪漫~!

思路流程

信息收集

1.服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)

2.网站指纹识别(包括cms,cdn,证书等),dns记录

3.whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)

4.子域名手机,旁站,c段等

5.Google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等。

6.扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄露等

7.传输协议,通用漏洞,exp,GitHub源码等

漏洞挖掘

1.浏览网站,看看网站规模,功能,特点等

2.端口,弱口令,目录等扫描,对响应的端口进行漏洞探测。比如:Mysql,ftp,ssh,弱口令等

3.XSS、SQL注入,上传,命令注入,CSRF,暴力破解,任意文件上传,越权访问,未授权访问,文件包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏洞扫描工具等。(awvs,AppScan,ScanPort)

漏洞利用&权限提升

1.Mysql提权,serv-u提权,Oracle提权

2.Windows溢出提权

3.Linux脏牛,内核漏洞提权

清除测试数据&输出报告

1.日志、测试数据的清理

2.总结,输出渗透测试报告,附修复方案

复测

验证并发现是否有新漏洞,输出报告,归档

问题

1.拿到一个待检测的站,你觉得应该先做什么?

信息收集

1.获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。用邮箱做关键词丢进搜索引擎。利用搜索到的关联信息找出其他邮箱而得到常用社交账号。社工找出社交账号,里面或许会找出管理员设置密码的习惯。利用已有信息生成专用字典。

2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。

3.查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞。

4.查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如rsync,mysql,ftp,ssh,弱口令等。

5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄露,比如php探针。

6.Google hack进一步探测网站的信息,后台,敏感文件。

漏洞扫描

开始检测漏洞,如XSS,CSRF,SQL注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,文件包含,远程命令执行,弱口令,上传,暴力破解等。

漏洞利用

利用以上的方式拿到webshell,或者其他权限。

权限提升

提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如:IIS6,pr,巴西烤肉,Linux脏牛漏洞,Linux内核版本漏洞提权。

日志清理

总结报告及修复方案

2.判断出网站的CMS对渗透有什么意义?

查找网上曝光的漏洞。

如果开源,还能下载相对应的源码进行代码审计。

3.一个成熟并且相对安全的CMS,渗透时扫目录有什么意义?

敏感文件、二级目录扫描。

站长的误操作比如:网站备份的压缩文件、说明txt、二级目录可能存放着其他站点。

4.常见的网站服务器容器

IIS、Apache、nginx、Tomcat。

5.Mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?

root权限以及网站的绝对路径。

6.目前已知哪些版本的容器有解析漏洞,具体举例。

1.IIS 6.0

/xx.asp/xx.jpg “xx.asp”是文件夹名,该文件夹中的文件会被解析成.asp文件去执行

2.IIS 7.0/7.5

默认Fast-CGI开启,直接在url中的图片(图片马)地址后面输入/xx.php,会把正常图片当成php文件解析。

3.Nginx

版本小于等于0.8.37,利用方法和IIS 7.0/7.5一样,Fast-CG关闭情况下也可以利用。

4.Apache

上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀。

7.如何手工快速判断目标站是Windows还是Linux服务器?

Linux大小写敏感,Windows大小写不敏感。

8.为何一个mysql数据库的站,只有一个80端口开放?
  • 更改了端口,没有扫面出来

  • 站库分离

  • 3306端口不对外开放

9.3389无法连接的几种情况
  • 没开放3389端口

  • 端口被修改

  • 防护拦截

  • 处于内网(需进行端口转发)

10.如何突破注入时字符被转义?
  • 宽字符注入

  • Hex编码绕过(16进制编码)

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

12.拿到一个webshell发现网站根目录下有.htaccess文件(Apache容器配置文件),我们能做什么?
  • 能做的事情很多,用隐藏网马来举例子:

    插入


    <FilesMatch "xxx.jpg">SetHandler application/x-httpd-php

    .jpg文件会被解析成.php文件

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

14.安全狗会追踪变量,从而发现出是一句话木马吗?
  • 是根据特征码,但这不会是一成不变的

15.access扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?
  • 迅雷下载,直接改后缀为.mdb(mdb文件时Microsoft Access软件使用的一种存储方式)

16.提权时选择可读写目录,为何尽量不用带空格的目录?
  • 因为exp执行多半需要空格界定参数

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

18.注入时可以不使用and或or或xor,直接order by开始注入吗?
  • and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省去步骤

19.某个防注入系统,在注入时会提示:

系统检测到你有非法注入的行为,

已记录您的ip xx.xx.xx.xx

时间:2020-06-30

提交页面:test.asp?id=15

提交内容:and 1=1

如何利用这个防注入系统拿shell?
  • 在url里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了,这个时候可以尝试寻找网站的配置文件,直接上菜刀连接。

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

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

22.目标站进制注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用?
  • 先爆破用户名,再利用被爆破出来的用户名爆破密码

  • 所有和数据库有交互的地方都有可能有注入。

23.目标站发现某txt的下载地址为:http://www.test.com/down/down.php?file=/updown/1.txt,你有什么思路?
  • 这就是传说中的下载漏洞!在file=的后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。

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

25. 在有shell的情况下,如何使用XSS实现对目标站的长久控制?
  • 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。

  • 在登录后才可以访问的文件中插入XSS脚本。

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

27.目标站无防护,上传图片可以正常访问,上传脚本格式访问则为403。什么原因?
  • 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试修改后缀名绕过。

28.审查元素的值网站所使用的防护软件,你觉得怎样做到的?
  • 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部,比如护卫神就可以在名称看到内容。

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

30.sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由:
  • A. demo.jsp?id=2+1

    B. demo.jsp?id=2-1

    选B,在URL编码中+代表空格,可能会造成混淆。

31.以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路?
  • demo.do?DATA=AjAxNg==

    DATA有可能经过了base64编码再传入服务器,所以我们扼要对参数进行base64编码才能正确完成测试。

32.发现demo.jsp?uid=110注入点,你有哪几种思路获取webshell,哪种是优选?
  • 有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入webshell

  • 使用sqlmap-os-shell,原理和上面相同

  • 通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包等方法上传shell

33.CSRF和XSS和XXE有什么区别,以及修复方式?
XSS
  • 跨站脚本攻击:用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击

  • 修复方式:对字符实体进行转义、使用HTTP Only来禁止Java Script读取Cookie值、输入时校验、浏览器与web应用端采用相同的字符编码

CSRF
  • 跨站请求伪造攻击:XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认

  • 修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer

XXE
  • 外部实体注入攻击:XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取

  • 修复方式:XML解析库在调用时严格禁止对外部实体的解析

34.CSRF、SSRF和重放攻击有什么区别?
  • CSRF是跨站请求伪造攻击,由客户端发起

  • SSRF是服务器端请求伪造,由服务器发起

  • 重放攻击是将截获的数据包进行重放,达到身份认证等目的

35.说出至少三种业务逻辑漏洞,以及修复方式?
密码找回漏洞
  • 密码允许暴力破解

  • 存在通用型找回凭证

  • 可以跳过验证步骤

  • 找回凭证可以拦包获取

身份认证漏洞
  • 回话固定攻击

  • Cookie仿冒:只要得到Session或Cookie即可伪造用户身份

验证码漏洞
  • 验证码允许暴力破解

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

36.圈出下面会话中可能存在问题的项,并标注可能会存在的问题?


get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world”
HTTP/1.1Host:***.com:82
User-Agent:
Mozilla/5.0 Firefox/40Accept:text/css,/;q=0.1
Accept-Language:zhCN;zh;q=0.8;enUS;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

  • 有写入权限的地方,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样写入webshell

  • 使用sqlmap-os-shell原理和上面一种相同,来直接获得一个shell,这样效率更高

  • 通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传shell

37.给你一个网站你是如何来渗透测试的?
在获取书面授权的前提下
  • 信息收集

    1. 获取域名的whois信息,获取注册者邮箱、姓名、电话等。

    2. 查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的CMS或者其他漏洞

    3. 查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,Apache,nginx的解析漏洞

    4. 查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如rsync,mysql,ftp,ssh,弱口令等。

    5. 扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄露,比如php探针

    6. google hack进一步探测网站的信息,后台,敏感文件

  • 漏洞扫描

    开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等

  • 漏洞利用

    利用以上的方式拿到webshell,或者其他权限

  • 权限提升

    提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如:IIS6,pr,巴西烤肉,Linux脏牛漏洞,Linux内核版本漏洞提权。

  • 日志清理

  • 总结报告及修复方案

38.sqlmap怎么对一个注入点注入?
  • 如果是get型,直接sqlmap -u “注入点网址”

  • 如果是post型注入点,可以sqlmap -u “注入点网址” –data=“post的参数”

  • 如果是cookie型注入,添加参数–cookie=“值”

39.nmap扫描的几种方式
TCP/IP中端口建立连接的原则

在TCP/IP协议中,TCP协议提供可靠连接,采用三次握手建立连接,四次挥手断开连接。

  • 三次握手

    1. client发送SNY,请求建立连接

    2. server收到SNY,发送ACK确认,同时自己也发送一个SNY,即ACK+SYN

    3. client收到ACK+SYN,回复ACK,连接建立完成。

  • 四次挥手

    1. client发送FIN,请求释放连接

    2. server收到FIN,发送ACK

    3. server发送FIN,告知释放连接

    4. client收到FIN,发送ACK

  • TCP/IP实现遵循原则

    1. 发送SYN,LISTEN端口回复ACK,CLOSED端口回复RST

    2. 发送RST会被直接丢弃

    3. 发送ACK给LISTEN端口,会RST

    4. 发送FIN,LISTEN端口丢弃,CLOSED端口回复RST

![image-20200703153248311](面试.assets/image-20200703153248311.png)

![image-20200703153322782](面试.assets/image-20200703153322782.png)

40.sql注入的几种类型
  • 报错注入

  • bool注入

  • 延时注入

  • 宽字节注入

41.报错注入的函数有哪些?
  • updatexml(1,concat(0x7e,database(),0x7e),1)

  • extractvalue(1,concat(0x7e,database(),0x7e))

42.延时注入如何来判断
  • if(ascii(substr(“hello”,1,1))=104,sleep(5),1)

43.如何拿一个网站的webshell?
  • 文件上传

  • 后台编辑器模板,公开的漏洞

  • sql注入写文件

  • 命令执行

  • 代码执行

  • 已经爆出的cms漏洞,比如:dedecms后台可以直接建立脚本文件;wordpress上传插件包含脚本文件zip压缩包等

44.sql注入写文件都有哪些函数?
  • select ‘一句话’ into outfile ‘路径’

  • select ‘一句话’ into dumpfile ‘路径’

45.如何防止CSRF
  • 验证referer

  • 验证token

46.owasp漏洞有哪些?
  • sql注入

  • 失效的身份认证和会话管理

  • 跨站脚本攻击XSS

  • 直接引用不安全的对象

  • 安全配置错误

  • 敏感信息泄露

  • 缺少功能级的访问控制

  • 跨站请求伪造CSRF

  • 使用含有已知漏洞的组件

  • 未验证的重定向和转发

47.sql注入防护方法?
  • 正则过滤特殊字符,PDO预编译

  • web应用防火墙

  • 站库分离

48.代码执行,文件读取,命令执行的函数都有哪些?
代码执行
  • eval,preg_replace,assert,call_user_func_array,create_function

文件读取
  • file_get_contents(),highlight_file(),fopen(),read_file(),fread(),fgets(),parse_ini_file(),show_source(),file()等

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

49.img标签除了onerror属性外,还有其他获取管理员路径的办法吗?
  • src指定一个远程的脚本文件,获取referer

50.img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径?
  • 远程服务器修改apache配置文件,配置.jpg文件以php方式来解析



    AddType application/x-httpd-php .jpg

    <img src=http://xss.tv/1.jpg>1.jpg%3E会以PHP的方式解析

51.为什么aspx木马权限比asp大?
  • aspx使用的是.net技术。IIS中默认不支持,asp只是脚本语言而已,入侵的时候asp的木马一般是guest权限,aspx的木马一般是users权限

52.如何绕过waf?
  • 大小写转换法

  • 干扰字符 /*!*/

  • 编码

  • 复参数

53.如何向服务器写入webshell
  • 各种上传漏洞

  • mysql具有写入权限,用sql语句写入shell

  • http put方法

54.渗透测试中常见的端口
web类(web漏洞/敏感目录)
  • 80 web

  • 80-89 web

  • 8080-9090 web

数据库类(扫描弱口令)
  • Mysql:3306

  • Mssql:1433

  • Oracle:1521

  • PosttargetSQL:5432

特殊服务类(未授权/命令执行类/漏洞)
  • 443 SSL xinzang滴血

  • 873 Rsyunc 未授权

常用端口类(扫描弱口令/端口爆破)
  • 21 ftp

  • 22 SSH

  • 23 Teknet(远程登录服务的标准协议)

  • 2601,2604 zebra路由(默认密码:zebra)

  • 3389 远程桌面rdp

端口合计详情
  • ![1586503604(1)](面试.assets/1586503604(1).jpg)

    Oracle 1521 数据库端口

55.https的建立过程
  • 客户端发送请求到服务器端

  • 服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在

  • 客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端

  • 服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端

  • 客户端使用共享密钥解密数据

  • SSL加密建立

56.TCP和UDP协议的区别
  • 连接方面的区别

    1. TCP面向连接

    2. UDP无连接,即发送数据之前不需要建立连接

  • 安全方面的区别

    1. TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达

    2. UDP尽最大努力交付,即不保证可靠交付

  • 传输效率的区别

    1. TCP传输效率相对较低

    2. UDP传输效率高,使用于对高速传输和实时性有较高的通信或广播通信

  • 连接对象数量的区别

    1. TCP连接只能是点到点,一对一的

    2. UDP支持一对一,一对多,多对一和多对多的交互通信

57.wireshark简单的过滤规则
  • 过滤ip:

    过滤源IP地址:ip.src==1.1.1.1;目的IP地址:ip.dst==1.1.1.1

  • 过滤端口:

    过滤80端口:tcp.port==80;源端口:tcp.srcport==80;目的端口:tcp.dstport==80

  • 协议过滤:

    直接输入协议名即可,如http协议:http

  • http模式过滤:

    过滤get/post包:http.request.mothod==”GET/POST”

来源:freebuf.com 2021-03-06 20:22:03 by: 我爱喝牛奶i

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论