这是我参与更文挑战的第4天,活动详情查看:更文挑战
上个月校园招聘投了一个深信服安服的岗位,做了一些小小的准备,记录了一些题目如下。 说实话。。。笔试的时候都没用上🤣后来笔试60分勉勉强强过了,在面试的时候要求我自己做好职业规划。叫我先想好是做开发还是安服再去,全年都招人,随时可以再来。也不错,也算一个offer🤣
一下题目来自网上各种面经,做了一些自己总结和回答。
笔试:渗透、测试、网络安全
1.OSI七层模型和http的几种请求方式
**OSI**:应用层-表示层-会话层-传输层-网络层-数据链路层-物理层
**五层协议**:应用层-传输层-网络层-数据链路层-物理层
**http** : get,post,put,delete,head,trace,options
2.网络故障的排查流程,以及如果QQ,微信能用但是打不开网页是哪里除了问题?
1. ping 127.0.0.1,排查本机 TCP/IP 协议是否正常;
2. ping 本机IP 排查网卡或网卡驱动是否正常;
3. ping 同网段IP,排查交换机端口工作模式、vlan划分
4. ping 通网段网关;排查主机到本地网络是否正常;
5. ping 公网IP 排查路由是否正常;
6. ping 公网某个域名 ,排查DNS服务配置是否正常
QQ,微信能用但是打不开网页一般是DNS出了问题(比如在win,mac上的话,把系统自动生成的关于DNS生成文件删除一般就能解决)
3,XSS漏洞和防范
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖[XSS蠕虫](https://baike.baidu.com/item/XSS蠕虫/22777013),甚至破坏网站、修改路由器配置信息等。
原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,<title>与</title>之间的字符是页面的标题等等。当**动态页面**中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
类型
从攻击代码的工作方式可以分为三个类型:
**反射型**XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码
**存储型**XSS:<持久化> 代码是存储在服务器中的,每当有用户访问该页面的时候都会触发代码执行。
**DOM**型XSS:通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。
防范方法:过滤关键词和符号,对<>等进行转义,对重要cookei实行httponly等
给你一个用户登录框如何进行渗透测试
1. 先尝试万能密码,
2. 看有没sql注入漏洞,弱密码,
3. 观察有没有用户注册或者忘记密码,如果有可以测试有没有重置密码,或者注册后改包用户名登录等逻辑漏洞,(部分网站也可以考虑xss)如果什么发现都没有尝试暴力破解,总之思路是
4. 先挖掘web和逻辑漏洞,最后再暴力破解。
5,列举常见的逻辑漏洞:
就用户而言,
1. 登录爆破,
2. 任意账号注册,密码重置,
黑客只需要抓取Response数据包便知道验证码是多少。
1. 水平越权和垂直越权等
2. 未进行登陆凭证验证
3. 商场或者交易:修改购买金额,单价,数量等
6,爬虫中经常用到的几个库
requests ; BeautifulSoup ; lxml ;selenium 爬虫框架 Scrapy
7,CTF中遇到的相关知识
8,经常看的公众号和论坛网站,以及看过的书籍
9,一般网站的测试流程
1、信息收集
a、服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
b、网站指纹识别(包括,cms,cdn,证书等),dns记录
c、whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
e、子域名收集,旁站,C段等
f、google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等
g、扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
h、传输协议,通用漏洞,exp,github源码等
2、漏洞挖掘
a、浏览网站,看看网站规模,功能,特点等
b、端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
c、XSS,SQL注入,上传,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
3、漏洞利用&权限提升
a、mysql提权,serv-u提权,oracle提权
b、windows 溢出提权
c、linux脏牛,内核漏洞提权e
4、清除测试数据&输出报告
日志、测试数据的清理
总结,输出渗透测试报告,附修复方案
5、复测
验证并发现是否有新漏洞,输出报告,归档
10,内网渗透
1. 信息收集
首先,对服务器资产信息进行收集,了解哪些ip是存活的,存活的ip开放了哪些端口,以及端口所对应的服务。
推荐工具:F-NAScan
2. 弱口令检测
在这些服务器开放的端口服务中,主要服务由为系统服务、数据库服务、web服务。对常见的端口服务进行弱口令检测是非常有必要的。
常见系统服务弱口令:
1、IPC$、SSH、Telnet等弱口令,基本上等于拿到了系统权限了
2、MSSQL数据库SA弱口令可直接调用存储过程执行系统命令
3、mysql数据库root弱口令,可尝试udf直接提权,mysql5.1以上版本关键的第一步是否能创建plugin目录,默认一般是不存在的。
弱口令--提权--读取缓存密码
常见Web常见应用端口服务:
1、WebLogic 默认端口:7001 弱口令,console后台部署webshell Java反序列化
2、Tomcat 默认端口:8080 弱口令,manager后台部署war包上传
3、jboss 默认端口:8080 弱口令,未授权访问,java反序列化
以某系统开放的Tomcat服务为例,其IP地址为192.1.33.133:8080。通过iscan的弱口令检测,发现Tomcat存在弱口令,直接使用弱口令可以成功登录Tomcat控制台,如图所示。
2,NAT协议的用途
NAT协议:在私有地址和全局地址之间转换的协议。
3,APR协议和ARP欺诈的原理
ARP地址解析协议,目的是实现IP地址到MAC地址的转换。 ARP攻击是指攻击者利用ARP协议的缺陷,发送ARP响应报文,把网关对应的MAC地址变成欺骗的MAC地址,从而导致网络中断或数据劫持的目的。
4 ,TCP和UDP的区别和利用场景
1.基于连接与无连接; 2.对系统资源的要求(TCP较多,UDP少); 3.UDP程序结构较简单; 4.流模式与数据报模式 ; 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
5,DNS协议和解析流程
DNS 是一个应用层协议,域名系统 (DNS) 的作用是将人类可读的域名 (如,www.example.com) 转换为机器可读的 IP 地址。 解析流程就是 递归和迭代两种方式(不详细描述了,百度就能搜到)
6,IPV6
16*8位 0比特表示法
7,常用的几个安全工具和模块
就是 sqlmap burpsuite namp 中国蚁剑,msf,cs 的用法和参数
8,反序列化漏洞
php反序列化的时候,反序列化的内容是用户可控,那么恶意用户就可以构造特定序列化内容的代码,通过unserialize()函数进行特定的反序列化操作,并且程序的某处存在一些敏感操作是写在类中的,那么就可以通过这段恶意代码,达到执行攻击者想要的操作。 然后深得也不太懂,,大家自己百度哈
8,MYSQL的常用语句和危险函数
当时只懂mysql的我是一脸懵逼的,常用的不就是增删改查吗,,, 问题可能描述的不太恰当,面试官原话应该是你觉得这些操作哪个最危险, 我当时回答的是只要权限不当,所有由用户可控的语句都很危险,常规的sql注入,outfile写入shell,堆叠注入,等会用到增删改查中的所有语句,所有都很危险 ,,哈哈 像是没回答一样
10,LINUX下用户密码存放在哪里
/etc/passwd和/etc/shadow
11,曾经处理过的应急响应流程
我觉得挺全面的一篇文章,比我回答的全面多了,,, www.freebuf.com/articles/te… 12,JAVA 面试官问我会不会JAVA,我当时一脸懵逼,我说我会python,哈哈。 面试官就语重心长的告诉我,Java很重要,一定要会java emmmmmm,啥都不说 ,下周就开始学JAVA
2、反序列化漏洞的原理是什么以及怎么利用的
解:很巧的是前一天我刚好看了一下反序列化。还顺便复习了一下serialize和unserialize的发音。我就把学院里教的反序列化给他老人家讲了一遍,从对象序列化到字符串格式反序列化,再到靶场的做法。。。。。。当然靶场被我说成了某站点。。然后穿插着unserialize的英文。面试官也是有点一愣一愣的。最后说他听懂了。然后他问到weblogic的反序列化有研究过吗,我只能如实说并没有的,但已经排上了日程,下周就会去做这部分的研究,但是我说我修复weblogic反序列化贼厉害啊,每个版本的反序列化我从运维的角度上都会修复,然后这个问题就没继续深入了
3、如何看待web前端安全,简述前端安全存在的风险有哪些,并用具体例子说明
解:我理解的web前端指的是客户端,也可以说是浏览器端。前端安全是一个很大的分支,如cookie安全,flash安全,dom渲染(dom型xss),字符集,跨站(csrf),钓鱼,信任等。Cookie安全方面,如果过分相信cookie且没有进行其他处理,那么可能造成csrf。字符集可能造成宽字节问题,如逃逸特殊符号
信任方面,实际上安全的攻防都是以信任为基础,如同源策略,实际利用中有:1. A站防护很高,但同服务器同文件系统下的B站因安全问题被入侵,那么如果文件权限没有配置好,则A站也会被成功拿下,因A与B过分信任,没有做好分离。2. A网站嵌入和B网站的javascript脚本,方式是以<script>标签引用,实际也等于建立了信任关系,那么如果此脚本被黑客动了手脚,那么A站也会被危及。另外,我认为社会工程学也应说一下,通过google hacking,SNS垂直搜索(人人网,Facebook等)和其他各种信息收集方式,这使得攻防的过程变成了一个斗智斗勇的过程,在成功的入侵中,社工可能扮演着非常重要的角色。
总结起来主要分为三大类:XSS/CSRF/界面操作劫持Xss:现在xss漏洞被人认为是没有什么危害的漏洞,包括大部分src已经不收反射型xss漏洞了(利用困难,chrome等浏览器也会拦截掉),但谈论前端安全,xss就是个很大的问题,如果是一个半年一年不更新的站点,盗取管理员cookie当然概率很低。所以我把xss漏洞单独拿出来说,是因为他必须结合相应的场景。在对html,js脚本使用不规范(html有容错机制,即忘记写一个标签或者一个符号,也能正常运行),或者没有做好过滤的情况下,可能造成xss漏洞的产生,如留言板页面,提交js代码,没有过滤或者转义特殊字符,导致提交成功,数据被存入了数据库csrf :跨站点的请求,且请求是伪造的。A用户在登录A站的情况下登录了危险网站B,B站中有构造的请求A站的恶意代码,那么A用户在不知情的情况下就操作了网站A。在防御方面:
1.验证referer。2.使用验证码。3.加入token。4.限制session生命周期。但弊端也很明显。有些请求可能就不带referer,那么没有办法验证。验证码会降低用户体验。Token随机性如果不够好可能会被猜解,或者token本身因某种方式泄露,此外,在大型的服务中需要一台token生成及校验的专用服务器,需要更改所有表单添加的字段,时间和复杂度也是个重要的问题。当然限制session生命周期也是缓解的方式,不能有效解决csrf。某位大佬提出了下面这样的方法:原理与token差不多:当表单提交时,用JavaScript在本域添加一个临时的Cookie字段,并将过期时间设为1秒之后在提交,服务端校验有这个字段即放行,没有则认为是CSRF攻击。
界面操作劫持:点击劫持、拖放劫持、触屏劫持。点击大体是在用户可见可操作的界面上,覆盖一个不可见的框,即某控件之上覆盖一个iframe,且该iframe透明度为0,例子就比较多了...大多不可描述的网站中,点击某个按钮或者选项会调至另一个网站..这是个非常可怕的操作触屏劫持也很可怕,试想一下,用户想查询某个超市离自己多远,点击查询后,实际上进行了一次网银交易操作...移动设备上的web网页设计大体理论与PC上相通,又说到了某些不可描述的网站,用户在浏览的过程中,点击后并没有跳转至想去的页面,而是弹出或者直接跳转至另一个站点。
4、列举一些渗透测试的常用工具,并简述其应用场景,和使用案例
解:
Burpsuite:针对请求进行抓包改包等操作,可以对前端参数进行进一步测试,如测试逻辑漏洞,爆破弱口令,寻找页面传参点等
Sqlmap:可以检测或者注入后台数据库为关系型数据库的站点,还可以访问文件系统,使用-file-read “xxx.txt”来读取目标目录下xxx.txt文件,更可以使用-os-cmd执行操作系统命令,-os-shell使用交互的操作系统shell,功能十分强大,其丰富的tamper也为绕过一些waf提供了很大的帮助。当然大部分情况下还是要手动判断waf规则的。
御剑:很优秀的目标扫描工具,在一次真实的场景中,我通过御剑扫描得到了对方的数据库文件,看到了数据库ip,port及账号口令,直接连接数据库后,所有我想要的已经呈现在我面前了。
Mimikatz:抓取当前系统中所有用户的明文密码。在提权的时候可能会使用Owasp Zap/AWVS:漏洞扫描工具,我个人是不怎么喜欢用漏扫的,在不摸清楚对方情况的条件上直接使用漏扫,很可能导致ip被ban,而且参加过一些众测的项目,很多白帽子使用漏扫对目标展开疯狂的扫描,导致目标连正常访问都有问题,有点反感这些操作。但漏扫工具在一定程度上也会让我们大概了解目标的信息,如路径,可能存在的漏洞等,以免我们遗漏了某些点
Namp/masscan:目标开放服务扫描,弱点端口扫描,操作系统辨识,属于信息收集。如-p指定端口,-sV识别服务版本,-O识别操作系统,-sS(不建立三次握手的隐式扫描),sT(TCP扫描,信息相对准确),对于禁ping的站点可以用-Pn等,另外nmap强大的脚本也可以提供多种方式,如dos(可能造成拒绝服务),exploit(检测安全漏洞)。相比较来说,masscan在扫描上速度更快,效果更好一些(个人认为),所以可以两者配合使用,masscan快速扫出端口,nmap通过这些端口再去识别服务。
5、sql注入如何getshell
解:比如mysql的select into dumpfile,比如sqlserver的xp_cmdshell之类的。这个问题面试官没有深入问,但是可以作为我面试结束后的一个深入了解方向
6、针对内网渗透,说出自己的见解
解:内网渗透的本质就是信息收集,内网的防御措施相对于外网来说较低,将更多的精力放在管理员密码使用习惯以及弱口令的探测上,万不得已的情况下使用嗅探。另外还有端口反弹,寻找域控服务器等方式。通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。域渗透过程如果发现域管理员的密码已经修改,可尝试利用krbtgt用户的历史hash来进行票据传递攻击,krbtgt用户的密码一般不会有人去修改之类的云云~
工具利用msf等。可以用arp -a去查看附近存活主机,本机是否有以管理员身份运行的服务,如果有,可以用mimikatz获取管理员密码。很多域内都是多台主机使用相同的密码,而且管理员安装多台机器的时候可能使用一个镜像,补丁方面也可能都没有打。可以看看内网是否有OA之类的系统,去做测试。内网某些ftp工具,某些登录的邮箱之类的,是不是设置了保存密码,是否有没打补丁的漏洞可以利用。
然后linux及windows的命令要熟悉。最好要会点shell和bat,python等一些语言,因为有可能对方的内网环境根本没有可利用的工具或者功能,但linux下shell和python一般都是有的,可以利用这个自己做一个工具。反正把我自己能想到的都说出来了。
7、问:了解http协议吗?有什么字段?
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
主要特点
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有**GET、HEAD、POST**。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。
答:host,referer,orgin,content-type,accept-lnguage,accept-encoding,connection,if-modified-since,cookie,xff,user-agent,请求方法。。。
问:xff和referer的区别是什么?
答:referer是你想要访问的url,xff是你从哪里来,显示ip地址,referer也是显示从哪里来,显示url。
xff是告诉服务器当前请求者的最终ip的http请求头字段
通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip
referer就是告诉服务器当前访问者是从哪个url地址跳转到自己的,跟xff一样,referer也可直接修改
8、问:了解过xxe吗?
答:嗯,就是服务器开启了xml传输的函数,在POST表单页面可以构造playload进行绕过,进而造成命令执行,源码读取,文件信息泄露等。
9、问:实际上有过渗透的经历吗?
答:有的,学校老师让我拿下学校XX服务器,,,,
问:在这个过程你都用了什么方法?
答:信息搜集,搜集目标的一切信息,然后上网搜相应漏洞的payload和exp等,web端再用工具扫,手工查看web端各个页面的功能,找找逻辑漏洞等。。。
问:你觉得这次渗透的难点是什么?
答:信息搜集查找网上相应漏洞的exp。。。。
11、问:宽字节注入的原理是什么?
答:
PHP - mysql GBK ASCII
就是**编码格式的逃逸**,利用不同编码格式占用的字节宽度不同,**构造payload使得单引号或其他符号的逃逸**,导致语句的闭合,然后就可以构造payload查询数据库的数据了。