更多大厂面试经验的视频经验分享看主页
所面试的公司:深蓝,360,长亭,深信服(问的问题都差不多,所以我混合起来总结了一下)
面试职位:蓝队初级
面试官的问题:
基础漏洞
SQL注入
原理(口头语言):用户的输入嵌入到SQL语句中,然后被当做代码执行
成因:未对用户输入的数据做验证或者处理(预编译)
防御:预编译(能够防止SQL注入,但是不能处理%和_特殊字符)
黑名单:对特殊字符进行转义过滤替换或者删除、
白名单:对用户输入进行限制(正则表达式限制)、
规范编码和字符集(编码不同可能会导致宽字节注入)、
参数化查询(原理):不会把参数的内容当做sql语句执行,完成编译后套用参数运行
分类:
-
头注入:UA(useragent),Referer,cookie
-
联合查询注入
-
报错注入 需要用到的函数:updataxml()
rand():产生一个0-1之间随机数,rand(0),随机产生一个0-1的随机数,运行多次产生的结果一样
floor():向下取整,floor(rand()*2),随机产生0和1两个数
group by:分组排列
count():统计数量
concat():将字符串连接起来 -
布尔盲注
-
堆叠:1;select··
-
时间盲注:需要用到的函数
if(condition,A,B) --如果条件成立返回A,否则返回B;用啥语句替代if???????
sleep(num) --表示延迟几秒
left(m,n) --从左向右截取字符串 m 返回其前 n 位
substr(m,1,1) --取字符串 m 的左边第一位起,1字长的字符串
ascii(m) --返回字符 m 的 ASCII 码
length(m) --返回字符串 m 的长度
count(column_name) --返回指定列的值的数目 -
宽字节注入:
PHP utf-8编码 数据库GBK编码
PHP防御函数:magic_quotes_gpc()
**成因:**PHP发送请求到mysql时经过一次gbk编码,PHP会将获取到的数据进行魔术引号的处理,因为GBK是双字节编码,所以我们提交的%df这个字符和转译的反斜杠组成了新的汉字,然后数据库处理的时候是根据GBK去处理的,然后单引号就逃逸了出来。
原理:在数据库中使用宽字符集,在web中没有考虑这个问题。由于0XDF27在web中是两个字符,在php中会对0x27进行转义,把0XDF27变成0XDF5c27
常问问题:
-
被过滤怎么办
(1)过滤关键字 使用大小写绕过,双写绕过,URL编码绕过
(2)过滤特殊字符,空格 使用URL编码绕过
(4)过滤注释 使用添加一个闭合方式绕过,逻辑运算绕过
(5)过滤单引号 使用宽字符绕过(前提PHP使用GBK编码)
(6)过滤明码数据 使用burpsuite加密发送数据绕过 -
代替空格:/**/、、%0a、%0b、%a0
-
如何写shell:利用日志写shell:
root权限,GPC关闭,知道文件路径 的前提
日志路径:var/log/mysqld.sql
select '一句话' into outfile '路径'
select '一句话' into dumpfile '路径' -
如果你拿到了sql的权限,你怎么获取系统权限
Mysql_UDF 提权 利用了root高权限,创建一个可以调用 cmd 的函数的 udf.dll 动态链接库, 导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd
限制条件: 1-MySQL 数据库没有开启安全模式(确认secure_file_priv=''是否为空) 2-已知的数据库账号具有对MySQL数据库insert和delete的权限,最好是root最高权限。 3-shell有写入到数据库安装目录的权限。
-
MOF提权:基本上在Windows Server 2003的环境下才可以成功。
原理 是C:/Windows/system32/wbem/mof/目录下的mof文件每隔几秒就会被系统执行一次,因为这个 MOF 里面有一部分是 VBS脚本,所以可以利用这个VBS脚本 来调用CMD来执行系统命令
如果 MySQL有权限操作 mof 目录的话,就可以来执行任意命令了。
- mysql5.0以上和5.0以下有什么区别:
5.0以下没有系统表(information_schema),只能暴力跑表;
-
为何一个mysql数据库的站,只有一个80端口开放:
1、更改了数据库端口,没有扫描出来。2、站库分离。3、3306 端口不对外开放
XSS跨站脚本攻击
原理: 通过拼接恶意的html代码,利用js语句来执行攻击,实现对用户浏览器的攻击
类型:
- 反射型:攻击代码在url里,输出在http响应中
- 存储型:把用户输入的数据存储在服务器上
- DOM型:通过修改页面的DOM结点形成xss
反射和dom的区别: DOM-XSS是javascript处理输出, 而反射性xss是后台程序处理
XSS绕过:
1.大小写
2.js伪协议
3.没有分号
4.Flash
5.Html5新标签
6.Fuzz进行测试
7.双层标签绕过
修复防御:
1.对输出内容实体化编码,对JavaScript的事件进行过滤
2.对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。
3.csp防范xss
常问问题:
- xss蠕虫产生条件:用户之间产生交互行为的页面都可能造成xss蠕虫,不一定需要存储型xss
- 有shell的情况下如何长久控制:
后台登录处加一段记录登录账号密码的js,判断是否登录成功,
如果登录成功,就把账号密码记录到一个生僻的路径的文件中或者直接发到自己的网站文件中。在登录后才可以访问的文件中插入XSS脚本
CSRF跨站请求伪造攻击/客户端请求伪造
原理:用户访问恶意网站时运行恶意网站上加载的JS,然后攻击者就可以利用受害者的身份 对已经登陆的正常网站发送数据包,达到篡改信息、修改配置等功能
成因:Cookie不过期,没有进行进一步的验证用户信息,没有安全意识访问了恶意站点
利用:受害者必须依次完成两个步骤,登陆受信任网站A,并在本地生成cookie,在不登出A的情况下,访问危险网站B
防御:加token或者验证码;尽量使用POST,限制GET;
SSRF服务端请求伪造
**原理:**利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。
常出现在:1.能够对外发起网络请求的地方 2.请求远程服务器资源的地方 3.数据库内置功能 4.邮件系统 5.文件处理 6.在线处理工具
协议:
file:在有回显的情况下,利用 file 协议可以读取任意内容
dict:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher:gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
http/s:探测内网主机存活
引发ssrf漏洞的PHP函数
file_get_contents:文件写入字符串,当url是内网文件的时候,会先去把这个文件的内容读出来再写入,导致了文件读取。
fsockopen(主机名称,端口号码,错误号的接受变量,错误提示的接受变量,超时时间)
curl_exec():执行一个curl会话
绕过:
利用@:http://example<span class="label label-primary">@127.0.0.1。例如</span>:http://www.baidu.com<span class="label label-primary">@10.10.10.10与http</span>://10.10.10.10 请求是相同的
添加端口号:http://127.0.0.1:8080
利用短地址:http://dwz.cn/11SMa
ip 地址进制转换
DNS解析 http://127.0.0.1.xip.io/可以指向任意ip的域名:xip.io
利用:利用伪协议对内网信息进行探测
- 具体利用的方式:file协议查看文件、dict协议探测端口、ophergopher协议 支持GET&POST请求,同时在攻击内网ftp、redis、telnet、Memcache上有极大作用。利用 gopher协议访问redis反弹shell
**防御:**禁止跳转;禁用不需要的协议;黑名单内网ip
补充xss、csrf、ssrf区别:
xss与csrf区别
XSS:跨站脚本攻击;利用站点内的信任用户盗取cookie
CSRF:跨站请求伪造攻击;通过伪装成信任用户请求信任的网站
CSRF与SSRF区别
CSRF(跨站/客户端请求伪造) => 浏览器因为JS偷偷发送数据包
SSRF(服务器端请求伪造)=> 服务器因为你传的参数偷偷发送数据包
C or S => C客户端(client)s服务端(server)
文件上传
原理(官方语言):由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件,并通过此脚本文件获得了执行服务端命令的能力。
服务器解析漏洞
apache:
绕过程序检测:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。
在上传文件时,判断文件名是否是PHP,ASP,ASPX,ASA,CER等脚本扩展名,如果是,则不允许上传,这是可以构造类似1.php.rar等扩展名绕过程序检测,并配合解析漏洞获取webshell
iis
当建*.asa ,*.asp,*.cer格式的文件夹时,其目录下的任何扩展名的文件都将被IIS当做asp文件进行解析
当文件为*.asp;1.jpg时,IIS会以asp脚本来执行
nginx
原理:Nginx实际上是PHP CGI解析漏洞,在PHP配置文件中有一个关键选项cgi.fi:x_pathinfo,一般是默认开启的,
所以**解析到不存在的文件时,PHP会向前递归解析,于是造成了解析漏洞。**
攻击者可以上传木马文件,然后在URL后面加上xxx.php(可随便命名),就可以获得网站的webshell。比如访问http://www.xxx.com/1.jpg/1.php,此时1.jpg会被当做php脚本来解析,这里的1.php是不存在的。
绕过方法
1.黑名单
a.后缀名不完整 .php5 .phtml等
b. .htacess
c.大小写
d.在数据包中 后文件缀名前加空格
e.后缀名前加
f.加上::$DATA
g.未循环验证,可以使用x.php..类似的方法
2.白名单:%00截断,图片马,条件竞争
防御:
1.后端验证:采用服务端验证模式 2.后缀验证:基于白名单,黑名单过滤 3.MIME验证:基于上传自带类型艰检测 4.内容检测:文件头,完整性检测 5.自带函数过滤 6.WAF防护软件:宝塔、云盾等
将上传文件与web服务隔离
白名单过滤、限制上传文件类型
文件上传路径设置为不可执行权限
检查文件上传路径
自带函数检测
自定义函数检测
图片渲染
对上传文件重命名
对文件内容压缩,重新生成文件内容
检查文件内容
文件包含
原理:程序员开发的时候没有对包含的文件进行严格的过滤,攻击者可以构造自己的图片木马文件当做PHP执行
常见包含函数:
include():找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once():找不到被包含的文件时只会产生警告,脚本将继续运行。如果该文件中的代码已经被包含,则不会再次包含,即程序只调用一次。
require():找不到被包含的文件时会产生致命错误,并停止脚本运行。
require_once():找不到被包含的文件时会产生致命错误,并停止脚本运行。如果该文件中的代码已经被包含,则不会再次包含,即程序只调用一次。
PHP封装协议:
file:// --- 访问本地文件系统http:// --- 访问 HTTP(s) 网址ftp:// --- 访问 FTP(s) URLsphp:// --- 访问各个输入/输出流(I/O streams)zlib:// --- 压缩流data:// --- 数据(RFC 2397)glob:// --- 查找匹配的文件路径模式phar:// --- PHP 归档ssh2:// --- Secure Shell 2rar:// --- RARogg:// --- 音频流expect:// --- 处理交互式的流
利用:
利用../ 目录遍历
利用解析漏洞结合文件上传 绕过waf获取webshell
利用PHP封装协议 读取php文件源码
防御
PHP中使用open_basedir限制访问在指定的目录区域
过滤 点 . 反斜杠 / \,防止跨目录
禁止服务器远程文件包含
尽量不要使用动态包含,可以在需要包含的页面固定写好
**危害:**敏感信息泄露(任何文件读取);PHP伪协议,文件包含读源码,命令执行;配合图片马获取webshell
PHP序列化与反序列化
原理:(在变量可控并且进行了unserialize操作的地方注入序列化对象,实现代码执行)未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在反序列化的过程中自动融发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
序列化函数 :serialize():将对象转换成字符串
反序列化函数:unserialize():将字符串转换成对象
魔术方法(文件中存在可利用的类,类中有魔术方法
__wakeup() //使用unserialize时触发
__sleep() //使用serialize时触发
__construct() //创建对象时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当脚本尝试将对象调用为函数时触发
绕过wakeup的要点是:成员属性数目大于实际数目时可绕过
流量分析(PCAP 文件)
1、大量的404请求:目录扫描
2、大量select *** from:SQL注入
3、连续一个IP的多端口请求或多个IP的几个相同端口:端口扫描
4、爆破账号密码:ip.addr219.239.105.18 and http.request.uri matches "edit|uoload|modify"
5、用菜刀链接的包,post请求 ip.addr219.239.105.18 and htpp.request.method==POST
高危端口
21 FTP 可以爆破,FTP匿名登录,anonymous/anonymous
22 SSH
23 telnet
80 web
81 web
139/445 IPC,网络共享(MS17-010)
1433 mssql
1521 oracle
3306 mysql
3389 rdp
6379 redis?? Redis未授权访问,因为没有密码导致谁都能进,能造成信息泄露,反弹shell,向服务器写入ssh公钥,直接用私钥连接
7001/7002 weblogic,各种漏洞
8080 Tomcat,PUT上传webshell,但是JSP是被过滤的,可以使用1.jsp%00;后台部署war包;幽灵猫命令执行
8888
50050 cobalt strike的默认开放端口
log4j反序列化
核心原理为,在正常的log处理过程中对**${**这两个紧邻的字符做了检测,一旦匹配到类似 于表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内容,而不 是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行 。
漏洞成因、特征:在打印日志的时候,如果日志内容中包含关键词 ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行。
安全工具
nmap
1 .-Pn,禁ping扫描,nmap在对主机执行扫描动作之前,会发送一个ICMP包,去探测远程主机是否存活,如果对方有返回的话,nmap才认为这个扫描任务执行是有意义的,并且开始扫描。如果没有返回包,则不执行扫描。如果对方主机设置了禁ping,在不加-Pn的情况下,是不会返回扫描结果的。 2 .-sP,此命令的意义在于是令nmap去用ping命令去探测对方主机的存活情况。如果对方的机器能ping通的话,就告诉我们host is up。不绝对准确,因为可能对方主机设置了禁ping。 3 .-sS,半开放扫描。在TCP协议的三次握手的过程当中。会由客户端向服务端发送SYN包,如果服务器的端口是开放的,服务器则会返回一个SYN包+一个ACK,第三部再由客户端验证服务器的ACK是否正确,如若正确,则发送ACK包到服务器以便完成TCP连接的建立。这种扫描的原理就是客户端只执行第一步,服务端执行第二步,第三步不做了。这种方法的好处是可以规避日志的记录。 4 .-sT,TCP协议三次完全扫描。 5 .-PR,使用ARP协议,进行局域网内主机扫描,这种扫描会令速度更快,并且结果更加准确。 6 .-O,用于探测对方主机的操作系统的。 7 .-p,计算机的端口是有65535个的。如果扫描全端口,则写作-p 1-65535 8 .-T4,默认情况是3。 9 .-P0,用于在禁ping时探测主机存活。
sqlmap获取webshell的参数
sqlmap的--os-shell参数取得shell 本质:写入两个 php 文件,其中的一个可以让我们用来执行命令,而另外一个可以让我们可以上传文件。 执行条件有三个(1)网站必须是root权限(2)攻击者需要知道网站的绝对路径(3)GPC为off,php主动转义的功能关闭
渗透思路
goby,扫描工具
可以根据情形定制一些常见端口扫描
不仅可以扫IP ,还可以扫域名
扫描的时候也可以加上 想测试是否存在的 漏洞的 POC
可以自定义暴破字典
最后报告还可以导入导出
渗透测试流程:如果给你一个网站,你的渗透测试思路是什么?/拿到一个待检测的站,你觉得应该先做什么?
搜索引擎
信息收集 a、服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等) b、网站指纹识别(包括,cms,cdn,证书等),dns记录 c、whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等) e、子域名收集,旁站,C段等 f、google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等 g、扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等 h、传输协议,通用漏洞,exp,github源码等 漏洞挖掘 a、浏览网站,看看网站规模,功能,特点等 b、端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。 c、XSS,SQL注入,上传,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等 漏洞扫描 开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等 漏洞利用 利用msf,nc一些工具拿shell,或者其他权限 权限提升 a、mysql提权,udf提权,mof提权,serv-u提权,oracle提权 b、windows 溢出提权 c、linux脏牛,内核漏洞提权 日志清理 总结报告及修复方案
-
fofa语法
查询指定cms的管理系统:app="cms" domain= 搜索根域名带有xx的网站。例:domain="baidu.com" host=从url中搜索网站注意搜索要用host作为名称。例:host= ".edu.cn" port= 查找对应443端口的资产。例:port=3389 protocol= 搜索制定协议类型(在开启端口扫描的情况下有效)。例:protocol=ssh cert=搜索证书(https或者imaps等)中带有域名的资产。例:cert=baidu.com banner= 搜索协议中带有账户文本的资产。例:banner=users && protocol=ftp type=搜索所有协议资产,支持subdomain和service两种。例:type=servicce server== 搜索服务器、中间件名称。例:server=apache 高级语法需要用管道符连接如:'|| ' '&&',如下: body="后台"&&domain="xxx.com" 查询指定域名的后台 Header="Hikvision" 找摄像头
-
谷歌语法
| intext 寻找正文中含有关键字的网页 | intitle 寻找标题中含有关键字的网页 | allintitle 用法和intitle类似,只不过可以指定多个词 | inurl 将返回url中含有关键词的网页 | allinurl 用法和inurl类似,只不过可以指定多个词,// 所有关键词必须出现在在文本中 | site 指定访问的站点 | filetype 指定访问的文件类型 | cache 显示页面的缓存版本
-
shodan、夸克
-
钟馗之眼(zoomeye),侧重于web容器,指纹的搜索。
指纹搜索:例如:php app:dedecms var:5.7。 app:组件名称,例如:app:apache。 ver:组件版本,例如:ver:2.0。 OS:操作系统,例如:os:window。 Service:服务名称,例如:service:vpn。 Cidr:网段,例如:cidr:192.168.1.1/24。 Devic:设备名,例如:devic:router。 keyword:关键字查询,例如:keyword:technology。 尝试弱口令:例如:php app:phpmyadmin。 搜索摄像设备:1.DVRDVS-Webs,2.JAWS等等。
wireshark简单过滤规则
过滤 ip: 过滤源 ip 地址:ip.src==1.1.1.1;,目的 ip 地址:ip.dst==1.1.1.1; 过滤端口: 过滤 80 端口:tcp.port==80,源端口:tcp.srcport==80,目的端 口:tcp.dstport==80 协议过滤: 直接输入协议名即可,如 http 协议 http http 模式过滤: 过滤 get/post 包 http.request.mothod=="GET/POST
菜刀、蚁剑、冰蝎流量特征
菜刀特征
使用了base64的方式加密了发送给"菜刀马"的指令,其中的两个关键payload z1和z2,这 个名字是可变的
蚁剑特征
默认的USER-agent请求头 是 antsword xxx,但是 可以通过修 改:/modules/request.js 文件中 请求UA绕过 其中流量最中明显的特征为<span class="label label-primary">@ini_set(</span>"display_errors","0");这段代码基本是所有 WebShell客户端链接PHP类WebShell都有的一种代码 蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以"_0x......="这种形式(下划 线可替换),所以以_0x开头的参数名也很可能就是恶意流量
冰蝎看包没有发现什么特征,但是可以发现它是POST请求的
1、Accept头有application/xhtml+xmlapplication/xmlapplication/signed- exchange属于弱特征(UA头的浏览器版本很老)
2、特征分析Content-Type: application/octet-stream 这是一个强特征查阅资料可 知octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的 话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组);很少使用
冰蝎2特征:
默认Accept字段的值很特殊,而且每个阶段都一样冰蝎内置了十余种UserAgent ,每次连接 shell 会随机选择一个进行使用。但都是比较老的,r容易被检测到,但是可以在burp中修改 ua头。Content-Length: 16, 16就是冰蝎2连接的特征
冰蝎3特征:
冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态 密 钥获取;
php抓包看包没有发现什么特征,但是可以发现它是POST请求的 1)Accept头application/xhtml+xmlapplication/xmlapplication/signed- exchange属于弱特征 2)ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较 老。
现实生活中很少有人使用,所以这个也可以作为waf规则特征 jsp抓包特征分析Content-Type: application/octet-stream 这是一个强特征查阅 资料可知 octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交 文件的话,只能提交 一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组);很少使用。
应急响应
网站被挂马如何应急
1.取证,登录服务器,备份,检查服务器敏感目录,查毒(搜索后门文件-注意文件的时间, 用户,后缀等属性),调取日志(系统,中间件日志,WAF日志等);
2.处理,恢复备份(快照回滚最近一次),确定入侵方法(漏洞检测并进行修复)
3.溯源,查入侵IP,入侵手法(网路攻击事件)的确定等
4.记录,归档--------预防-事件检测-抑制-根除-恢复-跟踪-记录通用漏洞的应对等其他 安全应急事件
入侵排查具体流程
1、检查系统账号安全查看服务器是否有弱口令,远程管理端口是否公开查看服务器是否有可疑账号:cmd输入lusrmgr.msc命令查看服务器是否存在隐藏账号、克隆账号结合日志,查看管理员登录时间,用户名是否存在异常
2、检查异常端口、进程 检查端口连接情况,是否有远程连接、可疑连接:a、netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHEDb、根据netstat 定位出的pid,再通过tasklist命令进行进程定位 tasklist | findstr "PID"
3、检查启动项、计划任务、服务win+r:输入msconfig,查看异常启动项win+r:输入regedit,打开注册表,查看开机启动项
4、检查系统相关信息win+r:输入systeminfo查看系统信息
5、日志分析win+r:输入eventvwr.msc,打开事件查看器导出应用程序日志,安全日志,系统日志,利用log parser分析
如何判断一条威胁情报是否有误
分析流量数据包,可以用wireshark,分析流量是不是正常的业务操作
怎么判断自己被getshell了:用D盾查杀
webshell:
查web日志,分析攻击流量
扫webshell
排查网站目录,查看最近更改的文件
shell:
查看未知端口,未知进程
排查恶意流量,锁定感染进程
有安全设备就看安全设备
如果一台服务器被入侵后,你会如何做应急响应?》》》查日志,查服务,查进程,查看是否有可疑登陆,新增账号
内网报警了怎么办?(可能问的方式不一样)
首先就要是地位到具体的那一台机器,既然报警那就说明知道了具体的漏洞类型,加相应的补丁打上,以linux为主(一般都会问linux的),查看/var/log/secure系统日志,查看登录失败的记录,还有Linux历史命令-->home目录的bash_histor,查看执行过的命令。在利用webshell或者是shell查杀工具查杀,查看tmp目录下是非有带有免杀的木马。彻底清除。再到全流量分析的机子上看,是非有经过其他的机器。拿到攻击ip之后到线上的一些网站查看主机类型,比如360或者微步上,查看是非是傀儡机,vps跳板,或者是国内个人云主机。如果是个人云主机,就可以通过whois查看是非有最近绑定的域名,或者绑定者的邮箱。知道邮箱之后就可以反查询出qq号说多少,再利用社工查询到手机号,到一个知名的网站上查询这个手机号有没有注册过什么网站,可以去这些网站通过撞库的方法登入,这样就可以拿到这个攻击者的身份证,学校,地址这些了。
(思路是应急响应->加固->溯源)
被攻击后,日志文件以及木马文件被删除怎样排查
lsof恢复被删除的文件,然后查日志,查服务,查进程,查看是否有新增的账号
安全设备出现报警信息,怎么看是误报还是攻击行为
对报警的数据进行分析,看是不是内部人员的操作,还是真实的攻击
怎么从流量分析是不是误报
分析流量数据包,可以用wireshark,分析流量是不是正常的业务操作
服务中了webshell怎样从日志找webshell位置,被拿shell后怎么应急,怎样快速定位shell
从日志 流量 文件开始,先定位位置 查看敏感目录 tmp usr/sbin etc/ssh ,对新创建文件,修改文件等进行查看,找特殊权限文件 比如777 。流量的话 从ua和playload去分析。比如菜刀连jsp木马:第一个参数是a-q,这个是不会变的,第二个是编码,第三个是 playload。日志的话从找到的shell时间点去关联分析,可以还原攻击手法
快速定位 就是看进程和内存 看占用时间长和占用率高的
设备报警,SQL注入的报警,能看到攻击时间,攻击ip,payload,如何判断是误报还是真是攻击,如果是真实攻击,怎么判断他攻击是否成功,如果成功怎么处理
先看ip,如果ip是公司内部的再看内部人员有没有相关操作,如果不是公司人员业务的操作那就是攻击了,
然后分析payload,分析它写的payload安全设备能否它进行过滤拦截,如果它确实能绕过,那就应该攻击成功了,
成功的话赶紧上报,做应急响应,做出相应处理,添加过滤规则,修改数据库中能修改的数据比如管理员账号密码啥的
安全设备部署
WAF
我在自己的服务器上开通过防火墙,使用cname接入的,在控制台添加要防护的网站域名,然后修改dns解析设置把流量解析到waf。
ufw(简单防火墙Uncomplicated FireWall)
检查防火墙的状态(默认 inactive) # ufw status
防火墙版本 # ufw version
启动ufw防火墙 # ufw enable
关闭ufw防火墙 # ufw disable
默认禁止访问所有 # ufw default deny
开放22/TCP端口 # ufw allow 22/tcp
开放53端口(tcp/udp) # ufw allow 53
禁止外部访问 # ufw deny 3306
删除已经添加过的规则 # ufw delete allow 22
允许此IP访问所有的本机端口 # ufw allow from 192.168.1.100
删除上面的规则 # ufw delete allow from 192.168.1.100
查看规则,显示行号 # ufw status numbered
删除第三条规则 # ufw delete 3
关闭ufw # ufw disable
禁止对8888端口的访问 # ufw deny 8888
打开来自192.168.0.1的tcp请求的22端口 # ufw allow proto tcp from 192.168.0.1 to any port 22
**蜜罐:**就是一台全是漏洞的靶机,吸引黑客来进攻蜜罐系统,然后掌握黑客的信息
问的问题:
- 您刚刚说,您对蜜罐有所了解,您能讲讲你了解的蜜罐是什么?你是否真正参与过蜜罐的部署。答:搭过微步的Hfish蜜罐 - 那么如果叫你部署一个蜜罐,你会开放哪些端口,为什么//你认为企业的主机哪些端口存在风险//你认为企业应该注意哪些地方的加固21端口:FTP文件传输协议端口,用来捕获黑客的FTP爆破行为22端口:SSH端口 链接Linux主机SSH服务的端口,用来捕获黑客的SSH爆破行为23端口:Telnet服务,命令执行服务,用来探测黑客对于telnet的爆破80端口/443端口:WEB服务的端口,用来捕获黑客的WEB攻击行为特征1521:oracle数据库开放端口,捕获黑客的oracle爆破行为,UDF命令执行等行为3306:MYSQL端口,用来捕获黑客对于mysql数据库的爆破行为,UDF命令执行等行为3389:Windows远程桌面端口,用来捕获黑客的爆破行为···········下面的说不说都行···········································6379端口:REDIS端口,捕获黑客REDIS未授权访问的攻击,黑客利用redis写ssh秘钥,写webshell,执行计划任务等的攻击445端口:SMB服务端口-黑客利用永恒之蓝Enternalblue的攻击行为,黑客的SMB账号爆破(通俗简单理解,爆破windows账号密码)1433端口:Microsoft SQLserver端口,用来捕获黑客爆破1433端口的行为,并且查看黑客利用sqlserver xp_cmdshell,sp_cmdshell等组件命令执行的操作,存储过程的利用 135、139端口:捕获黑客的利用RPC共享的攻击(当蜜罐部署在内网)比如在8080端口,部署一个假的vpn页面,吸引黑客攻击
内网渗透
内 网渗透流程:
拿到跳板后,先探测一波内网存活主机,用net user /domian命令查看跳板机是否在域内,探测存活主机、提权、提取hash、进行横向移动,定位dc位置,查看是否有能直接提权域管的漏洞,拿到dc控制权后进行提权,然后制作黄金票据做好维权,清理一路过来的日志擦擦脚印
信息收集
主机信息收集
1.网络配置 ipconfig /all
2.操作系统 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
3.软件信息 systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
4.服务信息 wmic /namespace:\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
5.用户列表 net user
6.本地管理员信息 net localgroup administrators
7.端口信息 netstat --ano
8.补丁信息 wmic qfe get Caption,Description,HotFixID,InstalledOn
9.查防火墙 netsh firewall show config
域内信息收集
是否有域 使用ipconfig /all命令可以查看网关IP地址、DNS的IP地址以及判断当前主机 是否在域内:通过反 向解析查询命令nslookup来解析域名的IP地址,使用解析出来的IP地 址进行对比,判断域控制器和 DNS服务器是否在同一台服务器上
登录域信息 net config workstation 域内信息收集
ICMP探测内网 for /L %I in (1,1,254) DO <span class="label label-primary">@ping</span> -w 1 -n 1 192.168.174.%I | findstr "TTL="
ARP探测内网
端口信息收集
查询域信息 net view /domain
查询域主机 net view /domain:XXX
查询域用户 net group /domain
查找域控 Nslookup -type=SRV _ldap._tcp net time /domain net group "Domain Controllers" /domain
查域用户信息 net user /domain
查询域管理员 net group "Domain Admins" /domain
查询域sid信息 whoami /all
内网环境不出网
1.通过webshell实现内网socket代理2.正向链接 3.ssh隧道 4.协议不同出网的方式不同,如dns对应dnscat2 tcp对应 5.测试是否是特定协议或端口出网
面试难度:简单
面试感受和建议:蓝队初级问的不难,应急响应比较多一些,不过多看一些网上的资料也可以