渗透测试工程师(实习生)面试题目
参考:https://blog.csdn.net/baozhourui/article/details/88096809
笔试
主要目的
渗透测试的门槛较低,笔试目的主要考验个人的基础,基本工具的使用以及涉及的知识范围
现将面试题目总结如下(个人经验):
xss 的变形
click me(大小写变形)
<img src=’#’ οnerrοr=‘alert(/xss/)’/>(引号的引用)
<Img/sRc=’#’/Onerror=‘alert(/xss/)’ />(’ /'代替空格 )
click me!(使用tab回车键绕过)
click me!(编码绕过)
<script>z='alert'</script>
<script>z=z+'(/xss/)'</script>
<script>eval(z)</script>(拆分,多段注入)
(使用pronpt代替alert弹窗)
详情见:https://blog.csdn.net/mdp1234/article/details/107675690
nmap 扫描时候的各种参数
-sL 列表扫描,仅将指定的目标IP列举出来,不进行主机发现
-sn 和-sP一样,只利用ping扫描进行主机发现,不扫描目标主机的端口
-Pn 将所有指定的主机视为已开启状态,跳过主机发现过程
-sV 进行服务版本探测
-D 它会通过添加其他IP地址,让目标以为是多个IP在攻击
–script= 使用某个或某类脚本进行扫描;支持通配符描述
详情见:https://blog.csdn.net/qq_44108455/article/details/107459153
/tamper/apostrophemask.py(用utf8代替引号)
space2hash.py(空格替换为#号 随机字符串 以及换行符)
详情见;https://blog.csdn.net/Praifire/article/details/51924848?utm_source=blogxgwz7
sqlmap方面
参数
–dbms 指定数据库类型
-d 数据库名 --tables 表名
注入的类型
Union注入攻击(联合注入)
Boolean注入攻击(盲注)
报错注入攻击(报错注入)
时间注入攻击(延时注入)
宽字节注入
详情见:https://blog.csdn.net/BryanMelody/article/details/103744014
sql注入产生的原因
程序员对输入未进行细致地过滤,从而执行了非法的数据查询
手工注入的一些方法
判断查询的字段数,使用order by number
Union select 判断回显位
mysql版本5.0上下区别
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操作
XSS/CSRF/SSRF/XXE的区别
xss对用户输入过滤不严格,网页解析恶意代码
Server-Side Request Forgery 简称SSRF(服务端请求伪造),是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。在一般情况下,SSRF攻击目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统
csrf
定义:攻击者盗用了你的身份,以你的名义发送恶意请求
xxe
xml外部实体注入,当应用是通过用户上传的XML文件或POST请求进行数据的传输,并且应用没有禁止XML引用外部实体,也没有过滤用户提交的XML数据,那么就会产生XML外部实体注入漏洞,即XXE漏洞
session与cookie之间的区别
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了
状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
端口
443:SSL心脏滴血
512,513,514:Rsync未授权访问
873:Rsync未授权访问
2375:docker remote api漏洞
5984:CouchDB
6379:redis未授权
7001,7002:WebLogic 默认弱口令,反序列化
9200,9300:elasticsearch未授权访问
11211:memcache未授权访问
27017,27018:Mongodb 未授权访问
28017:mongodb统计页面
50000:SAP命令执行
50070,50030:hadoop默认端口未授权访问
masql默认端口(3306)
未对外开放,端口更改,站库分离
php的命令执行函数
eval()
assert()
preg_replace()
create_function()
array_map()
详情见:https://www.cnblogs.com/-qing-/p/10819069.html
php常见函数
md5()
range()
current()等
详情见:https://www.cnblogs.com/qczy/p/11074796.html
网站验证来源:
x-forward-for
常见业务逻辑漏洞
密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码
身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份
验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过
其他工具使用:
hydra 参数
-R 根据上一次进度继续破解
-S 使用SSL协议连接
-s 指定端口
-l 指定用户名
-L 指定用户名字典(文件)
-p 指定密码破解
-P 指定密码字典(文件)
-e 空密码探测和指定用户密码探测(ns)
-C 用户名可以用:分割(username:password)可以代替-l username -p password
-o 输出文件
-M 文件
asp的网站配置文件:web.config
asp的网站配置文件:config.php
google语法
site:可以限制你搜索范围的域名;
inurl:用于搜索网页上包含的URL,这个语法对寻找网页上的搜索,帮助之类的很有用;
intext: 只搜索网页部分中包含的文字(也就是忽略了标题、URL等的文字);
intitle: 查包含关键词的页面,一般用于社工别人的webshell密码;
filetype:搜索文件的后缀或者扩展名;
intitle:限制你搜索的网页标题;
利用xss维持网站后台权限
在后台登录页面插入xss语句,有人成功登录后发送cookie到指定网址
mysql注入点,用工具对目标站直接写入一句话,需要哪些条件?
root权限以及网站的绝对路径
存在注入点的利用方式
获取账号密码或者写入webshell
拿到一个待检测的站,你觉得应该先做什么?
信息收集
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内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
日志清理
总结报告及修复方案
中间件解析漏洞
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.php
Apache
上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
lighttpd
xx.jpg/xx.php
php单引号和双引号的区别
一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析.
TCP和UDP的区别
1.TCP协议在传送数据段的时候要给段标号;UDP协议不
2.TCP协议可靠;UDP协议不可靠
3.TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)