目录
-
- web方向
- 内网
- 工具
-
- 等保
- 安全基线
- 应急响应
- 红蓝对抗
-
- 合规审计
- 安全管理
- 安全运维
https://github.com/FeeiCN/SecurityInterviewQuestions
https://github.com/zhaoweiho/web-sec-interview/blob/master/README_CN.md
https://github.com/404notf0und/My-Security-Algorithm-Architecture
https://github.com/Leezj9671/Pentest_Interview
https://github.com/tiaotiaolong/sec_interview_know_list
https://github.com/d1nfinite/sec-interview
https://github.com/Old-stan/Security-interview
- 自我介绍下个人情况、做过的项目和技能
- 观察谈吐,看思维逻辑是否有条理,沟通交流是否顺畅
- 性格类型是否合适
- 围绕做过的项目进行细节提问,提问的问题根据岗位不同可以从3.2中抽取
- 考察项目真实性、项目角色及分工
- 对项目的理解程度、掌握程度、思考等
- 遇到解决不了的问题怎么做?
- 考察学习能力和动手解决能力
- CTF、乌云、翻墙、写技术博客、技术书籍、参与GitHub开源项目、常浏览的网站、游戏、电视剧、业余时间干嘛、业内牛人
- 综合体现出其技术热度
- 算法、前端、服务器的掌握程度
- 一些基础算法,比如快速排序、冒泡排序、选择排序、插入排序
- 一些机器学习算法,CNN、RNN、Tensorflow、验证码识别等等
- 前端JavaScript、HTML、CSS掌握程度,调试工具,编码等
- 服务器常用命令、配置、文件权限、进程栈、端口占用、异常日志等
- 自认为自己比身边人的优势
- 挖掘亮点,如何客观看待自己
- 自认为的缺点
- 客观的自我评价,讲自己没有缺点的基本可以不要了
- 最有成就感的事情
- 考察价值观,尤其对于一些未授权渗透甚至黑灰产事情的态度
- 未来职业规划?
- 请否有清晰的职业规划,对自己未来有长远思考
- 和当前岗位对匹配度
- 还有什么要问我的吗?
- 了解面试者所关心的侧重点
-
介绍一下自认为有趣的挖洞经历(或CTF经历)
-
你平时用的比较多的漏洞是哪些?相关漏洞的原理?以及对应漏洞的修复方案?
-
你平时使用哪些工具?以及对应工具的特点?
-
如果遇到waf的情况下如何进行sql注入/上传Webshell怎么做?请写出曾经绕过WAF的经过(SQLi,XSS,上传漏洞选一)
参考以下三篇
-
谈一谈Windows系统与Linux系统提权的思路?
-
列举出您所知道的所有开源组件高危漏洞(十个以上)
-
描述一个你深入研究过的 CVE 或 POC。
- 客户端 syn 发送到服务端,变成 SYN_SENT 状态
- 服务端 ack=syn+1 回传syn到客户端,变成SYN_RECV状态
- 客户端 ack=syn+1, 变成ESTABLISHED状态,传输给服务端
- 服务端收到ACK后变成ESTABLISHED状态,建立连接
SYN标志位为表示请求连接,ACK表示确认
客户端=主动关闭方
- 客户端FIN->服务端
- 服务端ACK=FIN+1->客户端,服务端到客户端的连接关闭
- 服务端FIN->客户端
- 客户端ACK=FIN+1->服务端
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
MSL=最大段寿命=TTL=最大生存时间=255s
- 应用层 应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.
- 传输层 传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP). TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.
- 网际互联层 网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。 IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
- 网络接入层(即主机-网络层) 网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
- 查看浏览器缓存
- 查看系统缓存
- 查看路由器缓存
- 查找ISP DNS缓存
- 递归搜索。根据网址,发送一个DNS请求,UDP请求,端口为543,会请求一个DNS服务器,DNS服务器会不断递归查找这个网址的IP
- 跟获取到的IP建立TCP连接,在TCP连接上发送HTTP报文
物理层、数据链路层、网络层、传输层(TCP,UDP)、会话层(RPC,SQL)、表示层(定义数据格式及加密)、应用层(TELNET,HTTP,FTP)
- python参数传递是依靠值传递还是引用传递?
- 传入可变对象和传入不可变对象的结果一样吗? 为什么
- python lambda表达式
- python 闭包
- python 装饰器
- 简述Python装饰器、迭代器、生成器原理及应用场景?
- 简述Python进程、线程和协程的区别及应用场景?
- PHP的那些魔法函数造成的安全问题(当然了,你也可以说程序员不了解php的语言特性 哈哈哈哈) 我个人觉得这些魔法函数是代码审计的基础,这也是为什么代码审计都喜欢挑php来捏,语言特性太强大。(这块的东西参考一个git吧 https://github.com/bowu678/php_bugs) 包括不限于
- 弱比较==
- strops()
- intval()
- preg_replace /e问题
- extract变量覆盖
- 当然了 变量覆盖的点还有 $$ 等
- 数字开头字符串和数字比较。
- 00截断(这里我列的肯定是不全,这块我准备慢慢更新吧)截断应该在5.3之前把。
- php命令注入怎么防御
- escapeshellcmd和escapeshellargs2个函数一起使用会造成什么安全问题。
- thinkphp SQL注入的分析过程(3.2版本中的find(),delete(),select()分析一下这几个函数,跟踪一下)(我分析的一处https://tiaotiaolong.net/2019/07/19/Thinkphp3.2-SQL注入分析/)收录到我的git项目[tiaoVulenv](https://github.com/tiaotiaolong/tiaoVulenv)中
- php fpm未授权访问
- php-fpm跟nginx搭配的情况下,可以通过nginx的特殊配置造成代码执行。
- thinkphp 命令执行的分析过程(5.x的命令执行)
- php的反序列化漏洞,和序列化中的那几个魔法函数。unserialize()
- webshell变形(可以利用php的特性),那么问题来了,有什么好的检测方法或者思路可以杜绝任意的php变形webshell?行为检测?还是其他方案。
- phpinfo解读 从泄露的phpinfo中你能解读写什么东西?(以前渗透测试时候基本都忽略了,下面有篇文章 http://tiandiwuji.top/posts/23527/)
- Joomla 的反序列化 这个比较经典 涉及到了php构造对象注入。
- php伪协议
- typecho反序列化漏洞,这个算是一个老洞了,但是我觉得这个漏洞利用魔法函数触发可以说是较为经典。就算是告诉我这个漏洞点,我也找不到利用链啊。Typecho反序列化漏洞分析
- 著名java反序列化漏洞 Apache的common Collection组件里的调用链的原理和利用思路(这个文章特别多) 后续的很多软件的漏洞都是因为使用了这个apache的组件导致的。我写了一个关于我的理解(https://tiaotiaolong.net/2019/07/19/Apache-Common组件反序列化原理/)同时也收录到我自己的git项目[tiaoVulenv](https://github.com/tiaotiaolong/tiaoVulenv)里。
- 关于java反序列化一般都是怎么修复的,修复思路是什么?黑名单?
- fastjson 反序列化的问题 关于fastjson我写了一个连载,在博客里,同时也在我自己的git项目tiaoVulenv里。
- 说了fastjson 也提一下jackson,跟fastjson如出一辙,很有同感。
- shiro 认证模块反序列化漏洞 大致原理以及利用方式。shiro在自己并不是采用class.forname()的方式进行加载的,导致无法支持数组类型的装载,在调用链上有依赖性。
- shiro的密码学安全问题,PaddingOracle安全问题。
- Spring 安全 jndi注入和其他好多次的SpEL表达式注入,针对表达式注入有什么好的思路修复吗。
- Struts2 安全 我觉得和spring表达式安全问题差不多,逐渐被淘汰,可以先去理解SpEL。
- JBoss 安全
- Tomcat 安全 put类型文件上传 和 最近新出的GhostCat
- WebLogic安全 原理 利用方法 本质问题是java的xmldecode的反序列化问题。这个调试起来比较有难度!
- jenkins 安全问题
- ysoserial你真的会了吗?里面几十种调用链,光commoncollection系列目前就7个,可以好好的用idea调试一下ysoserial,你会发现ysoserial的调用链太精彩了。
- JVM学习 可以参考深入理解Java虚拟机。学习JVM主要对我们理解类加载器装载类的过程有很大帮助,对反序列化的理解的帮助是巨大的。
- java动态代理,反射,spring的IOC。
- springboot快速创建一个简单的增删改查项目,使用maven构建,有助于我们复现漏洞环境,总不能依赖于docker吧。
- SSM框架可以不会写,但是要会看懂代码之间的逻辑运行关系,会读懂每个xml文件,便于审计,开发的话可以直接使用springboot。
- 利用RMI JNDI注入来完成命令执行的模式是怎样的,了解一下RMI协议,说说rmi的调用过程。
- JDK7u21 调用链 https://tiaotiaolong.net/2020/03/15/JDK7U21调用链/
- RMI和LDAP攻击在java的高版本是有防御机制的,那如何绕过该防御机制。
- Java常见漏洞及防护
- 常见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反序列化漏洞的原理?解决方案?
- java项目安全的原理
- 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反序列化漏洞的原理?解决方案?
- 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安全要如何做?
-
- InnoDB:主流的存储引擎。支持事务、支持行锁、支持非锁定读、支持外键约束
- 为MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在 SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合
- InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文 件尺寸被限制为2GB的操作系统上
- InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键
- MyISAM:访问速度快,不支持事务,逐渐被淘汰
- MEMORY:BTREE索引或者HASH索引。将表中数据放在内存中,并发性能差。
information_schema
用的是该引擎 - MERGE、Archive等等不常用的
事务是一组原子性的SQL语句或者说是一个独立的工作单元,如果数据库引擎能够成功对数据库应用这组SQL语句,那么就执行,如果其中有任何一条语句因为崩溃或其它原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。 举个银行应用的典型例子:
假设银行的数据库有两张表:支票表和储蓄表,现在某个客户A要从其支票账户转移2000元到其储蓄账户,那么至少需求三个步骤:
a.检查A的支票账户余额高于2000元;
b.从A的支票账户余额中减去2000元;
c.在A的储蓄账户余额中增加2000元。
这三个步骤必须要打包在一个事务中,任何一个步骤失败,则必须要回滚所有的步骤,否则A作为银行的客户就可能要莫名损失2000元,就出问题了。这就是一个典型的事务,这个事务是不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,不可能只执行其中一部分,这也是事务的原子性特征。
读锁是共享的,即相互不阻塞的,多个客户在同一时刻可以读取同一资源,互不干扰。写锁是排他的,即一个写锁会阻塞其它的写锁和读锁,只有这样,才能确保给定时间内,只有一个用户能执行写入,防止其它用户读取正在写入的同一资源。写锁优先级高于读锁。
索引是帮助MySQL高效获取数据的数据结构。MYISAM和InnoDB存储引擎只支持BTree索引;MEMORY和HEAP储存引擎可以支持HASH和BTREE索引。
-
sqlserver public权限要如何提权
-
Windows、Linux、数据库的加固降权思路,任选其一
Redis主从命令执行攻击的原理。
-
挑选两到四个不同方向常见和不常见的漏洞,就漏洞原理、利用方式和修复方案进行提问,然后根据回答的情况进行详细深入的二次提问
-
XXE跟SSRF你觉得有什么关系吗,相同点跟不同点都可以说说。
-
如何绕过CDN找到真实IP,请列举五种方法 (★★★)
-
redis未授权访问如何利用,利用的前提条件是?(★★★)
-
mysql提权方式有哪些?利用条件是什么? (★)
-
windows+mysql,存在sql注入,但是机器无外网权限,可以利用吗? (★)
-
常用的信息收集手段有哪些,除去
路径扫描
,子域名爆破
等常见手段,有什么猥琐的方法收集企业信息? (★★) -
SRC挖掘
与渗透测试
的区别是什么,针对这两个不同的目标,实施过程中会有什么区别 (★★) -
存储xss在纯内网的环境中,可以怎么利用?(★★)
-
mssql中,假设为sa权限,如何不通过
xp_cmdshell
执行系统命令 (★★) -
假设某网站存在waf,不考虑正面绕过的前提下,应该如何绕过(分情况讨论 云waf/物理waf) (★)
-
利用
-
XSS持久化?
ServiceWorkers 利用https://blog.csdn.net/aixuan9365/article/details/101475447
-
XSS是什么,修复方式是?
XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
- xss的发生场景?
个人理解是对用户提交数据为进行安全的过滤然后直接输入到页面当中,造成js代码的执行。至于具体场景,有输出的地方就有可能被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漏洞?
-
-
编码防御
-
html实体编码
-
js编码
-
url编码
-
输出点在标签内部应该怎么防御?
-
输出点在标签外部应该怎么防御?
-
三种编码的关系,以及什么地方用到什么编码
-
浏览器解码的过程
-
开启httponly的情况下如何利用XSS漏洞
-
xss输出在注释里怎么利用 (换行符利用)
-
如果页面是gbXXX 如何利用宽字节进行xss利用
-
在xss利用过程中 讲 < 写成 \u003c 可以绕过安全防护 请问这个安全防护的思路是什么
-
XSS防御的7大原则
-
心伤的瘦子XSS教程
-
富文本防御XSS的思路
-
如果 ”javascript“字符串被过滤了,你的绕过思路是什么?
- 大小写
- Tab 空格 回车(%0a)
- 插入 “/**/” \0 \
- 编码
-
CSS中expression表达式可以插入xss吗
-
如果输出点在css style标签中 要注意expression表达式 import等之类
-
XSS编码方案(方案普遍性很高,具体要看业务场景)(大家自行思考为什么这么做?)
-
关于xss编码与浏览器解码的原因 这个是个硬核知识点,基本上前端的xss安全绕过问题都是基于浏览器的特性来发现的,推荐阅读研究:深入理解浏览器解析机制和XSS向量编码 这个可以解释很多标签 比如svg标签。
- 当输出点出现在HTML标签属性:
< -> < > -> > & -> & " -> " ' -> '
- 当输出点出现在<script>标签中。这种情况相当危险,不需要考虑xss触发,只需要考虑编写js即可
' -> \'; " -> \"; \ -> \\; / -> \/; (换行符) -> \n; (回车符) -> \r;
- 当输出点出现在body中
< -> < > -> > & -> & " -> " ' -> '
- 当输出点出现在js事件中(onClick="你的代码")
< -> < > -> > & -> & " -> " ' -> ' \ -> \\; / -> \/; (换行符) -> \n; (回车符) -> \r;
- 输出在URL属性中<script src="你的代码">
- URL编码
-
推荐阅读
-
-
XML文件格式
-
XXE漏洞利用的方式
-
XXE漏洞修复方案
-
XXE漏洞
-
XXE是什么?修复方案是?
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。
- 如何判断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==
提示:显然是base64编码
-
发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪种是优选?
-
注入的类型
-
普通注入(有数据库回显)
- 数字型注入
- 字符型注入
-
盲注
- 什么是盲注
- 三种类型
- 基于布尔类型的盲注
- left()
- substr()
- version()
- ascii()
- user()
- database()
- @@basedir
- 基于报错的盲注
- double数值类型超出范围
- bigint溢出
- xpath函数报错注入
- extractvalue()
- floor() rand() group by
- 基于时间延时的盲注
- sleep()
- benchmark()
- 基于布尔类型的盲注
-
堆叠注入
-
order by注入
-
宽字节注入
-
1.php?id='1%df反斜杠' (其中反斜杠为%5c,%df%5c在GBK编码下可以变成'蓮' 类似于这个字,那个字我不会打,原谅我没文化) 变成 1.php?id='1蓮'
-
将 ' 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 ,后面的 %5c 会被前面的 %5c 注释掉。
-
宽字节注入的修复方案
-
宽字节注入漏洞原理、利用方式及修复方案?
https://blog.csdn.net/zl20117/article/details/53610975
对于宽字节编码,有一种最好的修补就是:
(1)使用mysql_set_charset(GBK)指定字符集
(2)使用mysql_real_escape_string进行转义
原理是,mysql_real_escape_string与addslashes的不同之处在于其会考虑当前设置的字符集,不会出现前面e5和5c拼接为一个宽字节的问题,但是这个“当前字符集”如何确定呢?
就是使用mysql_set_charset进行指定。
上述的两个条件是“与”运算的关系,少一条都不行。
-
-
URLDecode二次注入
- 浏览器编码完之后WebServer会自动解码的,如果后端程序误用urldecode函数会造成此类情况(1.php?id=1%2527==>(WebServer)1.php?id=1%27==>(urldecode)1.php?id=1')
-
-
检查注入的思路
- 通过加单引号 双引号看看是否有报错。
- 有报错(不一定有注入):
- 通过拼接语句来进行状态判断
- and ,or
- 通过拼接语句来进行状态判断
- 没有报错(有可能是盲注):
- 如果关闭错误回显的话 基于报错注入就不可能了。
- 构造语句利用延时注入和联合注入进行攻击
- sleep benchmark extractvalue
- 有报错(不一定有注入):
- 看状态码(正常的话是200 注入的话可能会存在500 302等)
- 特殊注入需要额外观察:
- 宽字节注入
- url二次注入
- 通过加单引号 双引号看看是否有报错。
-
mysql注释
- '--'
- '#'
- /* */ 多行注释
-
掌握
-
方案(参数化查询会有问题吗?)
-
ORM
orm是什么?
orm能防止sql注入攻击吗?
-
如果检测被拦截了怎么绕过(比如sleep被waf拦了)
-
Mysql的提权都有哪些,UDF提权的原理。
通过phpmyadmin来getshell
UDF提权
MOF提权
https://www.cnblogs.com/hzk001/p/12890919.html
-
Sqlmap原理
-
在SSM框架中,Mybatis注入是什么情况造成的?#{},${}有什么区别,mybaties的预编译是如何实现的。
-
什么情况下Mybatis必须使用${},为什么只能使用${}。
CRLF注入原理?
https://www.cnblogs.com/uestc2007/p/10880338.html
CRLF是回车+换行的简称。碰得比较少,基本没挖到过这种洞,简而言之一般是可以通过提交恶意数据里面包含回车,换行来达到控制服务器响应头的效果。碰到过潜在的CRLF都是提交回车和换行之后就500了。CRLF的利用可以是XSS,恶意重定向location,还有set-cookie.
http://www.4hou.com/technology/9090.html https://blog.csdn.net/quiet_girl/article/details/50716312
文件上传漏洞总结
https://www.smi1e.top/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/
-
远程文件包含
-
本地文件包含
-
php伪协议
-
- 2.1.1. php://input
- 2.1.2. php://filter
- 2.1.3. phar://
- 2.1.4. zip://
- 2.1.5. data:URI schema
-
防御方案
- 在很多场景中都需要去包含web目录之外的文件,如果php配置了open_basedir,则会包含失败
- 做好文件的权限管理
- 对危险字符进行过滤等等
-
说一个容易出现SSRF漏洞的场景
-
如果过滤了以http开头的协议怎么绕过
-
利用DNS重绑定来绕过SSRF的原理。
-
SSRF的地方也是可以跟伪协议在一起利用的。
-
SSRF漏洞原理、利用方式及修复方案?Java和PHP的SSRF区别?
链接:https://www.nowcoder.com/questionTerminal/8ef07cf74a694ea4bffc1a2fbed9a95e 来源:牛客网
原理:由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。 SSRF漏洞一般位于远程图片加载与下载、图片或文章收藏功能、URL分享、通过URL在线翻译、转码等功能点处。 利用: 1)CURL支持协议 2)利用file协议读取文件 3)利用dict协议查看端口开放 4)利用gopher协议反弹shell 防御: 1)限制协议为HTTP、HTTPS 2)不用限制302重定向 3)设置URL白名单或者限制内网IP
URL白名单绕过?(ssrf)
- CSRF是什么?修复方式?
CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范`的页面然后嵌入Token、再次输入密码、检验Referer。
- CSRF漏洞的本质是什么?
CSRF即跨站请求伪造,以受害者的身份向服务器发送一个请求。本质上个人觉得是服务端在执行一些敏感操作时候对提交操作的用户的身份校检不到位。
- 防御CSRF都有哪些方法,JAVA是如何防御CSRF漏洞的,token一定有用么?
防御CSRF一般是加上referer和csrf_token. 具体可以参考这篇CSRF攻击的应对之道
- CSRF、SSRF和重放攻击有什么区别?
CSRF是跨站请求伪造攻击,由客户端发起
SSRF是服务器端请求伪造,由服务器发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的
- 只校验Refer可以吗
- samesite防御csrf的原理。
- token放在哪里?放在cookie里可以吗?不失效可以吗?
- 如果后端没有session,那应该怎么防御。
-
逻辑漏洞
- 说出至少三种业务逻辑漏洞,以及修复方式?
1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密码
2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到 Session 或 Cookie 即可伪造用户身份
3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改包的方法来进行绕过
-
越权访问(水平/垂直/未授权)
-
谈谈水平/垂直/未授权越权访问的区别?
-
越权问题如何检测?
-
绕过的本质是什么,是在寻找2个或者多个集合之间特性的差异。利用这些差异点进行绕过。
-
架构层绕过WAF
-
资源限制角度绕过WAF
-
协议层面绕过WAF的检测
-
规则层面的绕过
- SQL注入
- 注释符绕过
- 空白符绕过
- 函数分隔符
- 编码相关
- 文件包含
- 相对路径
- 绝对路径
- SQL注入
-
DDOS攻击的类型
-
DDOS云防御的方案
-
DDOS反射攻击基于的协议?为什么基于这个协议?
-
分布式拒绝服务攻击(DDoS)是目前黑客经常采用而难以防范的攻击手段。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。
DDOS攻击手段是在传统的DOS攻击基础之上产生的一类攻击方式。单一的DOS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DOS攻击的困难程度加大了——目标对恶意攻击包的“消化能力”加强了不少,例如你的攻击软件每秒钟可以发送3,000个攻击包,但我的主机与网络带宽每秒钟可以处理10,000个攻击包,这样一来攻击就不会产生什么效果这时侯分布式的拒绝服务攻击手段(DDOS)就应运而生了。
如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDOS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。通常,被攻击的服务器有以下症状:1、被攻击主机上有大量等待的TCP连接;2、网络中充斥着大量的无用的数据包,源地址为假;3、制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;4、利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求;5、严重时会造成系统死机
我司网站www.catroot.cn的IP 223.223.223.223 被人DDOS攻击,流量达9G,并且机房流量清洗无效,所以把223.223.223.223封停,导致网站不能访问,请作出紧急预案。
- 网络设备设施
- 拼带宽,加大带宽,但是成本太高
- 使用硬件防火墙
- 选用高性能设备
- 抗D思想和方案
- 负载均衡
- 花钱买流量清洗服务
- CDN:web层,比如cc攻击
- 分布式集群防御
- 高防:防大部分攻击,udp、大型的cc攻击
- 预防为主
- 系统漏洞
- 系统资源优化:
- 过滤不必要的服务和端口
- 限制特定流量:检查访问来源做适当限制
- 网络设备设施
-
https协议握手过程
-
burp 中间人攻击的原理
-
分别说3个对称加密 非对称加密 哈希算法
-
CSP
- CSP是什么?如何设置CSP?
CSP:Content Security Policy,内容安全策略。是繁育XSS攻击的一种安全机制,其思想是以服务器白名单的形式来配置可信的内容来源,客户端Web应用代码可以使用这些安全来源。
-
浏览器策略
- 不同浏览器之间,安全策略有哪些不同,比如chrome,firefox,IE
三种浏览器都遵循同源策略,内容安全策略(CSP), Cookie安全策略(httponly, Secure, Path)
-
除了公私钥密码加密体系还有其他可以确保传输安全的吗?
-
简述一下同源策略
-
同源策略下如何从a.baidu.com 去获取 www.baidu.com的cookie
-
网页木马的工作原理
-
同源策略下如何解决跨域请求 (分别说说原理和局限性)
- document.domain
- jsonp
- CORS
-
cookie遵守同源策略吗?(其实是不完全遵守的)。
-
jsonP安全
- 简述JSONP的业务意义,JSONP劫持利用方式及修复方案?
业务意义
JSONP(JSON with Padding),就是异步请求跨域的服务器端时,不是直接返回数据,而是返回一个js方法,把数据作为参数只是跨域传递数据那么这种方式是比较好的。字面理解就是:利用内填充的原理,将json填充到一个box中的概念。
作者:山豆山豆 链接:https://www.jianshu.com/p/dea853955e06
劫持利用方式及解决方案
关键词:跨域
jsonp是一个非官方的协议,利用script元素的开放策略,网页可以得到从其他来源动态产生的json数据,因此可以用来实现跨域。(关于JSONP可以参考我的博文:https://blog.csdn.net/yjclsx/article/details/80340901) web程序如果通过这种方式跨域之后,攻击者完全可以在自己的虚假页面中发起恶意的jsonp请求,这就引来了安全问题。比如:
其实json劫持和jsonp劫持属于CSRF( Cross-site request forgery 跨站请求伪造)的攻击范畴,所以解决的方法和解决csrf的方法一样。
1、验证 HTTP Referer 头信息; 2、在请求中添加 csrfToken 并在后端进行验证;
-
CORS的整个流程能说一下吗?
-
CORS跟CSRF之前有什么联系吗?能把这个问题想明白,前端跨域这块算是可以了。
-
HTML5
- 说说HTML5有哪些新的安全特性
H5新增了不少标签,在绕过xss防御方面多了不少选择。还有就是新增了本地存储,localstorage 和session storage,可以通过xss修改本地存储达到类似一个存储xss的效果。
``* HTML5白名单要有哪些标签 参考HTML5安全问题
- 解释一下同源策略
如果两个页面的协议,端口和域名相同,则可认为是同源。
- 同源策略,那些东西是同源可以获取到的
读取cookie, LocalStorage 和 IndexDB 读取DOM元素 发送AJAX请求
- 如果子域名和顶级域名不同源,在哪里可以设置叫他们同源
大概就是子域相同,主域不同的意思吧,可以通过在两房都设置document.domain来解决跨域。
- 如何设置可以跨域请求数据?jsonp是做什么的?
主域相同时跨域,可以像上面那样设置document.domain.
主域不同时,可以通过jsonp,websocket,在服务端设置CORS进行跨域请求。H5新增window.postMessage方法解决跨域请求。
通过<script>像服务器请求json数据,不受同源策略限制。
- jsonp的业务意义?
- Ajax是否遵循同源策略?
ajax全名是Asynchronous JavaScript and XML ,异步的javascript和XML技术。遵循同源策略,但是可以通过jsonp等进行规避。
- JSON注入如何利用?
XSS跨站攻击
-
JSON和JSONP的区别?
-
JSONP劫持利用方式及修复方案?
-
CORS是跨源资源分享(Cross-Origin Resource Sharing)的缩写。它是W3C标准,是跨源AJAX请求的根本解决方法。相比JSONP只能发GET请求,CORS允许任何类型的请求。 CORS请求大致和ajax请求,但是在头信息中加上了Origin字段表明请求来自哪个源。如果orgin是许可范围之内的话,服务器返回的响应会多出
Acess-Control-Allow-*
的字段
- 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未授权访问漏洞如何入侵利用?
-
常见中间件漏洞
常见CMS漏洞&poc
https://www.cnblogs.com/xiyanz/p/6336578.html
thinkphphttps://blog.csdn.net/Blood_Pupil/article/details/88756949
web框架漏洞总结http://www.voidcn.com/search/nvxybw
- OAUTH哪些地方容易出现安全问题
- JWT的安全点在哪里
- 项目访谈
- 信息收集:whois、网站源IP、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙、维护者信息
- 漏洞扫描:Nessus, AWVS
- 手动挖掘:逻辑漏洞
- 验证漏洞
- 修复建议
- (如果有)基线检查/复验漏洞
- 输出报告
- 概述
- 测试基本信息
- 测试范围
- 测试时间
- 测试任务
- 测试过程
- 信息安全风险综合分析
- 整体风险分析
- 风险影响分析
- 系统安全分析
- 安全漏洞列表
- 解决方案建议
- 复测报告
- 如果给你一个网站,你的渗透测试思路是什么? 在获取书面授权的前提下
- 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、二级目录可能存放着其他站点
- 越权问题如何检测?
- 黑盒如何检测XSS漏洞?
- 如何爬取更多的请求?
- 踩点都要采集哪些信息?
- DNS在渗透中的作用
- 如何绕过CDN获取目标网站真实IP,谈谈你的思路?
[绕过CDN寻找网站真实IP的方法汇总](
- psexec的底层实现原理是什么? (★)
- SSP接口中修复了哪个模块杜绝了mimikatz的恶意利用,具体是如何修复的?(★★)
- 内网KDC服务器开放在哪个端口,针对kerbores的攻击有哪些? (★★★)
- 在win10或者winserver2012中,如果需要使用mimikatz,该如何使用,修改注册表后如何在不重启机器的情况下获取NTLM? (★★)
- 域内如何查询员工对应的机器? (★)
- 如何查询域之间的信任关系? (★)
- 域控开放的常见端口有哪些?(★)
- windows内网中ntlm协议认证过程 (★★★)
- cobalt strike中上线方式有哪些,各自是什么原理,如果需要绕过监控,如何绕? (★★)
- 横向渗透中,wmic如何构造有回显的命令执行? (★★)
- windows应急响应中,需要查看哪些安全日志ID,分别对应哪些攻防场景,如果该windows主机为域控,又应该查看哪些事件日志? (★★★)
- golden ticket和sliver ticket的区别是什么? (★★★)
- 在非域主机的情况下,如何快速发现域主机? (★★)
- mimikatz的原理,哪个补丁导致了mimikatz无法利用,如何绕过? (★★)
- NTLM relay的攻击场景有哪些,使用NTLM relay会受到哪些限制? (★)
sql注入
爆破
资产搜集
自动探测
综合探测
中间件漏洞检测
木马连接
ISO27000是国际知名的信息安全管理体系标准,适用于整个企业,不仅仅是IT部门,还包括业务部门、财务、人事等部门。引入信息安全管理体系就可以协调各个方面信息管理,从而使管理更为有效。保证信息安全不是仅有一个防火墙,或找一个24小时提供信息安全服务的公司就可以达到的。它需要全面的综合管理。
PDCA(plan do check action)管理循环
《信息安全等级保护管理办法》是为规范信息安全等级保护管理,提高信息安全保障能力和水平,维护国家安全、社会稳定和公共利益,保障和促进信息化建设,根据《中华人民共和国计算机信息系统安全保护条例》等有关法律法规而制定的办法。
浅谈信息安全等级保护与ISO27000系列标准的异同 ISSN 1009-3044
等保是以国家安全、社会秩序和公共利益为出发点,构建国家的安全保障体系。27000系列是以保证组织业务的连续性,缩减业务风险,最大化投资收益为目的,保证组织的业务安全
安全基线其实是系统最低安全要求的配置,常见的安全基线配置标准有ISO270001、等级保护2.0等,也有某些企业自己的标准。
安全基线检查涉及操作系统、中间件、数据库、甚至是交换机等网络基础设备的检查,面对如此繁多的检查项,自动化的脚本可以帮助我们快速地完成基线检查的任务。一般来说基线检查基本上需要root权限,并且网上大部分的基线加固脚本都是脚本直接对系统进行操作,但是即使基线检查之前做了充分的备份和保存快照等,一旦有不可逆的操作导致生产系统的中断造成的影响是巨大的。
- php扩展门
- pwnginx后门 如果机器存在这种门,该怎么发现它?
- 自己纯手动搭建一次nginx,apache,tomcat。做到了解所有目录结构和配置文件。
- apache的扩展后门都有哪些?可以自己动手搭建一下,那这种后门的缺点是什么?
windows应急响应https://www.zybuluo.com/1kbfree/note/1477086
linux应急响应https://www.zybuluo.com/1kbfree/note/1476142
- 有哪几种后门实现方式?
- webshell检测有什么方法思路?
- Linux服务器中了木马后,请简述应急思路?
- 遇到新0day(比如Struts2)后,应该如何进行应急响应?
- 新业务上线前可以从哪些方向进行安全评估?
- 现有系统可以从哪些方向进行审计发现其中的安全风险?
- 优先提取易消失的数据
- 内存信息
free -m
`htop - 系统进程
ps top netstat ss
- 路由信息
tracert
- 内存信息
ifconfig
查看网卡流量,检查网卡的发送、接收数据情况NetHogs
实时监控带宽占用状况- 查看Linux系统日志
/var/log
ClamAV
杀毒软件
https://zhuanlan.zhihu.com/p/33440472)
- 利用openresty写一个简易版本的WAF。谈谈基于规则检测恶意流量的缺点和优点,那如果是基于算法呢?
- 利用Celery实现自己的扫描器,说说扫描器的思路。
- 如何设计一款白盒扫描器,可以定位到漏洞点和追踪数据流向。
- 如果让你设计一个简单的web框架,你如何设计。
- 针对白盒代码审计,应该如何设计一个系统,静态的可以针对有问题的变量进行自动的回溯?
- 接着上面的问题,有什么思路可以动态的回溯呢?
- 对于内控、合规、审计的理解
- 考察其对于要做的事情和岗位要求、公司环境是否匹配
- 考察其大局上考虑是否周全或是片面
- 传统行业和互联网行业的安全建设的区别及各自的优劣势
- 是否能准确的抓住核心原因
- 信息安全等级保护、网络安全法、GDPR
- 挑选一到两个问其对其的来源理解以及落地程度取舍
- 数据安全治理可以用什么思路做?
- 如何通过技术手段实现对异常操作的自动化监控?
- 如何对一个应用进行安全评估?
- 如何对一个应用进行安全审计?
- 如何理解权限分离、最小化权限?
- 考察一些CISP、CISSP的知识点
- 流程的设计
- 挑选一些较为复杂的流程,比如转岗、离职等,如何设计考虑其中的细节
- 渗透测试、安全研发、安全运营的问题可以挑选的问一些,以确保在各个方向上比较均衡
- 对于企业不同时期、不同阶段、不同体量的安全建设的方法、区别以及侧重
- 你所做过的安全架构图和所期望的安全架构
- 安全与其他团队(运维、研发、测试、GR/PR、内控、高管及三方安全公司)的关系
- 安全建设的理念/方法论理解
- 纵深防御
- 木桶原理
- 由外而内
- 先低后上
- 能口不点
- 最小权限
- 权限分离
- 白名单和黑名单
- 漏洞和误报
- 规则经验和机器学习
- 漏洞危害证明
- 技术管控与意识提升的关系
- 安全推进方法
- 自研OR外采?
- 找到总的核心目标和各个项目的主要目标
- 创新和极致
- 责任分担
- 黑天鹅和灰犀牛
- 衡量企业安全建设的水平
- 不同公司间的安全区别或差别是什么?比如腾讯和阿里,百度和京东
- 如何制定公司安全建设的三年甚至五年计划
- 未来安全行业的发展方向?
脱壳,反汇编
- 控制面板-管理工具-计划任务,在“任务计划程序库”上右键--创建基本任务
schtasks
命令 语法:schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier] [/d day] [/m month[,month...] [/i IdleTime] [/st StartTime] [/sd StartDate] [/ed EndDate] [/scomputer [/u [domain]user /p password]] [/ru {[Domain]User | "System"} [/rpPassword]] /?
每个公司有每个公司的基线规范体系,但是答题分为下列五个方面
- 检查特殊账号,是否存在空密码的账户和root权限账户
- 禁用或删除无用账号
- 添加口令策略:
/etc/login.defs
修改配置文件,设置过期时间、连续认证失败次数 - 禁止root远程登录,限制root用户直接登录。
- 检查su权限。
vi /etc/pam.d/su
添加auth required pam_wheel.so group=test
- 关闭不必要的服务
- SSH服务安全
- 不允许root账号直接登录系统,
PermitRootLogin=no
- 修改SSH使用的协议版本为2
- 修改允许密码错误次数(默认6次),
MaxAuthTries=3
- 不允许root账号直接登录系统,
- 设置umask值
vi /etc/profile
添加行umask 027
- 设置登录超时
vi /etc/profile
修改配置文件,将以TMOUT=
开头的行注释,设置为TMOUT=180
- 启用syslogd日志,配置日志目录权限,或者设置日志服务器
- 记录所有用户的登录和操作日志,通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。https://www.alibabacloud.com/help/zh/faq-detail/49809.htm
- 远程登录取消telnet采用ssh
- 设置/etc/hosts.allow和deny
- 禁止ICMP重定向
- 禁止源路由转发
- 防ssh破解,iptables(对已经建立的所有链接都放行,限制每分钟连接ssh的次数)+denyhost(添加ip拒绝访问)
- 账号
- 授权
- 日志
- session过期时间(防ddos
- 绑定监听地址
- 目录权限
- 访问外部文件
- CGI
- 非法HTTP方法(PUT DELETE)
- 服务版本号
- 重定向错误页面
- 配置文件
- 默认安装的无用文件
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
防范的措施大概有三种,第一种的思路是将专门存放上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型来执行它。第二种是匹配文件夹里的脚本类型文件,将其设置为无法读取及操作。第三种是将文件上传到一个单独的文件夹,给一个二级的域名,然后不给这个虚拟站点解析脚本的权限,听说很多网站都用这种方式。
https://blog.csdn.net/kx_nullpointer/article/details/21299873
at
batch
crontab
anacron
:检测停机期间应该执行但是没有执行的任务,将检测到的任务检测一次
网络 防火墙 配置 权限
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
- Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
举例-阿里规范 用户历史命令记录
缺点:安全性不够。使用x-pack实现安全认证及权限管理功能
- web进入->堡垒机->内部防御HIDS->内部监控,日志审计
- zabbix性能监控工具
- HIDS
- 防火墙 utm 负载均衡设备
- IPS IDS(HIDS基于主机型入侵检测系统)
- 堡垒机
- 蜜罐
- 网闸
- waf
- 扫描器
- soc(ossim开源安全信息管理系统)
- 简述Linux系统安全加固需要做哪些方面
- 你使用什么工具来判断系统是否存在后门
- Linux的Selinux是什么?如何设置Selinux?
- iptables工作在TCPIP模型中的哪层?
- 如果无法升级内核,那么如何保证系统不被已知的exp提权?
- syslog里面都有哪些日志?安装软件的日志去哪找?
- 如何查询ssh的登录日志?如何配置syslog的日志格式?
- syslog可不可以使用vi等工具直接查看?是二进制文件吗?
- 如果一台Linux服务器被入侵后,你会如何做应急响应?
- 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?
- 脱壳的原理
- 如何查壳
- smali语法
- davilk指令
- 如何防打包
- 如何防签名校验
- Android App加固原理分析(说一个加固的思路)
- 防御思路
- 对抗静态分析
- 代码混淆技术 ProGuard
- NDK保护
- 壳
- 对抗动态调试
- android:debuggable="false",让程序不可调试
- android.os.Debug.isDebuggerConnected()
- 检测模拟器
- 防止重编译
- 检查签名 Eclipse自带的调试版密钥文件生成的apk文件的hash值,与上面的函数获取的hash比较
- 检测Dex文件的Hash
- 对抗静态分析
- android 反调试原理
- 检测/proc/pid/status文件中的tracePID 如果不为0的情况,就是说明有程序正在进行反调试,该值为调试的进程的pid。一般在native层会fork一个子进程来循环的读取/proc/pid/status文件中的tracePID字段,如果不为0,直接exit
- 绕过反调试的思路
- 在JNI_ONLOAD下断点
- 修改android内核。
- android加壳
- 说一说每一代壳的主要技术和思路。
- 网络上对android壳的发展历史有着多个版本,有的是认为发展到现在经历了4代壳,有的则认为是5代壳。不过这些都不重要,相关的技术和思路都提现出来。这里我以5代为版本说一下我自己的理解。
- 一代壳最大的特点是动态加载,思路比较简单,就是在静态的情况下不让你看见整个dex文件,然后主动运行壳的入口,然后自定义类加载器进行加载,运行。这种脱壳的核心思路就是在内存中找到一个比较合适的时机,对dex文件进行dump。比如dvmDexFileOpenPartial函数下断点,这个函数是优化dex文件的函数,第一个参数就是dex文件指针。
- 二代壳主要是实现了不落地加载。这个不落地是指文件没有流入文件系统,直接在内存中动态生成,但是由于dex文件依然是成片存在于内存中的,所以核心思路还是在合适的时机dump内存即可。由于不同厂商分别不同实现了相关函数,或者对一代壳的dvmDexFileOpenPartial函数进行了相应的保护。一般二代壳在mmap(),memcpy()等下断点依旧可以dump出dex文件。
- 三代壳主要是在前2代的基础上增加了代码抽取。这样在你面前呈现出来的代码很多函数都是空的。那是因为在此之前你的dex文件中很多关于method_id部分中代码用00来填充,真正的代码隐藏在别处,在这个函数被执行之前,主动还原被填充的00 ins部分。这种壳脱壳可以借鉴dexhunter工具。
- VMP壳和Ollvm混淆 目前比较领先的加固方案。
- 网络上对android壳的发展历史有着多个版本,有的是认为发展到现在经历了4代壳,有的则认为是5代壳。不过这些都不重要,相关的技术和思路都提现出来。这里我以5代为版本说一下我自己的理解。
- dex文件的加载流程:
- 见我的另外一篇分析文章。 从android源码看脱壳。 (https://tiaotiaolong.net/2019/07/05/从android源码看脱壳/)
- 说一说每一代壳的主要技术和思路。