信息收集:
服务器相关---:## 系统版本,真实IP,开放端口,使用的中间件
指纹信息---## 有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息
whois信息--- ## 备案信息,邮箱,手机号,姓名
子域名,旁站,C段敏感目录扫描等
漏洞测试
sql注入,xss,csrf,弱口令,文件包含,任意文件上传下载,远程命令执行,敏感信息泄漏,目录遍历等
Linux
1,账户安全 --- 查看有无异常用户
2,历史命令
3,异常进程和端口
4,异常程序
5,开机启动项
6,检查定时任务
7,检查服务
8,检查异常文件
9,检查系统日志
10,检查web日志
Windows
1,账户安全
2,异常进程和端口
3,异常程序
4,检查开机启动项
5,检查定时任务
6,检查服务
7,检查系统日志和web日志 -------------- 分析一些状态码信息
8,排查可疑文件
9,文件修改日期
登录页面
1,弱口令漏洞
2,用户名枚举漏洞
3,SQL注入漏洞
4,短信轰炸
5,任意用户登录
6,任意用户注册
7,任意用户切换
8,任意用户密码修改
9,越权注册
10,任意文件下载
11,源代码敏感信息泄漏
12,反射性xss漏洞
先判断时内网IP,还是外网IP,IP有没有报备过等,看请求头信息分析有没有恶意的攻击代码,看看响应体有
没有回显,如果该IP报备过应该是内部测试导致的误报,如果是没有报备的外网IP,真的存在攻击payload,
那就是攻击行为,应该立即屏蔽该IP,内网IP有类似的情况,也有可能是来自已经被控制电脑的攻击行为,也
应该立即进项排查。
命令 ------------- 序列化 ----AES加密-----base64编码 -------- remeberme cookie值
反向shell :## 被控制端主动与控制端进行连接,控制端打开监听,接受连接 (常用于内网中的主机无法
触网的情况)
正向shell:## 控制端主动与被控制端进项连接,被控制端需要打开监听,等待控制端连接 (平常测试)
静态检测:匹配特征码,特征值,危险函数来查找webshell,只能查找已知的webshell.如果进行了免杀处理很难检测到
动态检测:动态特征,如添加启动项,修改注册表,添加用户,添加定时任务等等
日志检测:webshell访问运行后会在网站日志中留下访问数据和数据提交的记录
语法检测:根据PHP语言扫描编译的实现形式,进行一个剥离代码注释,分析变量,函数,字符串,语言结构等分析方式来实现对危险函数的捕捉
ngrok (不安全,可能存在数据泄漏,毕竟服务端用的是人家的)
frp
Stowaway GO语言写的
DNS隧道
ICMP隧道
1、client(客户端)发送username到server(服务端)
2、server判断本地账户名是否存在,没有则失败,有的话生成16字节的随机challenge码,查找user对应的NTLM哈希值,使用NTLM哈希加密challenge码,生成一个net-ntlm hash存在内存中,并将将
challenge发送给client(客户端)
3、client接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
5、如果密码匹配,服务器向客户端发送一个接受消息,表示认证成功。
## 注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm hash一个格式
lsass.exe 这个进程负责处理登录密码 -------------- 抓取明文数据
sam文件中的数据 ---------------------- 可以读取到哈希
mimikatz 工具
## 需要管理员权限才可以,如果不是需要提权
privilege::debug ## 检查权限
sekurlsa::logonpasswords ## 获取密码
lsadump::sam ## 读取数据库中的NTML哈希值
Pass The Hash 即PTH,就是通过传递Windwos 本地账户或者域用户的hash值,达到控制其他服务器的目的
## hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb的服务(139端口和445端口)
1、client发送账户名user到server
2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client
3、client接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
5、如果密码匹配,服务器向客户端发送一个接受消息,表示认证成功。
## 注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm hash一个格式
## 横向移动指的是我们拿到了一个主机,比如是192.168.1.1 用这个主机攻击 192.168.1.2 称之为横向移动
## 横向移动可以利用Windows的文件共享服务IPC,
IPC文件共享服务 + at / schtasks(计划任务) ,把木马文件或者批处理文件通过IPC文件共享服务发送大目标主机,然后通过at(Windows2012一下版本)或者 schtasks (windows2012以及2012以上版本)在目标主机上创建计划任务,从而运行我们上传的木马文件或者批处理命令。从而达到控制目的。
1 IPC文件共享服务 + at / schtasks(计划任务)
2 IPC + sc 文件共享+ 创建服务也可以达到控制目标主机的目的
3 wmic 远程命令执行
4 msf 执行横向移动攻击,Python脚本(PSEXEC 等一些横向移动攻击工具
get 会把数据放在URL上,通过字符串查询方式传递(不太安全)
post会把数据放在请求体中(相对安全)
get一般是向后台请求数据
post一般是向后台提交数据
get 数据一般进行URL编码
post支持多种编码传递方式
get数据在浏览器刷新或者退出无影响
post请求再浏览器刷新时会重新发送请求
get请求会缓存在浏览器历史记录
post请求不会记录在历史记录中
GEt请求会被浏览器主动缓存
POst请求不会被主动缓存
get请求传递数据大小有限制,(实际取决于浏览器)
post理论上是没有限制
get会产生一个tcp数据包,浏览器会把http header和data一并发出去,服务器相应200(返回数据)
post 产生两个数据包,浏览器先发送header,服务器相应100(continue),浏览器再发送data,服务器相应200 (返回数据)
反射性: 非持久性,由后端进行处理,但不会保存在数据库中
持久性:恶意代码会保存在数据库中,影响较大
DOM型:恶意代码不会由服务端处理,也不会存储在数据库中,只是由前端处理DOM节点
xss漏洞:## 攻击者在网页中嵌入客户端脚本(js恶意代码),当用户使用浏览器加载别嵌入的恶意网页时,恶意代码脚本就会在用户的浏览器执行,就会导致一个跨站脚本攻击
产生原因:## 程序员写代码时没有对输入输出进行严格的过滤和格式校验或过滤过于简单可以容易绕过,攻
击者可以插入恶意代码进行攻击
本质:## 用户输入的HTML,js脚本直接输出运行
第一步:找到输入,找到用户可以操控代码的位置
第二步:找到输出的位置,输入的代码在网页哪个位置进行输出
第三步:构造pyload
XSS:跨站脚本攻击,用户提交数据中可以构造恶意代码,并且执行,从而实现窃取用户信息的攻击,如获取cookie等
修复方式:
## 对实体字符进行转义。
## 使用http Only 来禁止js脚本操作cookie,
## 对网页页面输入输出进行严格过滤校验
CSRF:跨站请求伪造攻击,利用站点对已经身份认证的用户的信任,即攻击者伪装成站点受信用户进行攻击。
XSS:## 利用用户对站点的信任;
CSRF:## 利用站点对已经身份认证的用户的信任,即攻击者伪装成站点受信用户进行攻击。
漏洞利用条件:
1、## 被害用户已经在站点完成身份认证
2、## 新请求的提交不需要重新身份认证或确认机制
3、## 攻击者必须了解Web APP请求的参数构造
4、## 诱使目标用户触发攻击的指令(社工)
## 需要满足至少以上的条件,才可能说存在CSRF漏洞。
攻击流程:
## 受害者登录a.com,并保留了登录凭证(Cookie)。
## 攻击者引诱受害者访问了b.com。
## b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
## a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
## a.com以受害者的名义执行了act=xx。
## 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。
修复方式:
## 筛选出需要防范的CSRF的页面,然后嵌入token,再次输入密码,校验refer
XXE:外部实体注入攻击,当允许引用外部实体时,通过构造恶意内容,导致读取任意文件、执行系统命令、内网探测与攻击等危害的一类漏洞。
修复方式:非必要不要用XML格式,或者XML解析库在调用时严格禁止对外部实体的解析
SRF(Server-Side Request Forgery:服务器端请求伪造) ## 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
## 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
## 比如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器
产生SSRF漏洞的函数
## SSRF攻击可能存在任何语言编写的应用,接下来将举例php中可能存在SSRF漏洞的函数。
file_get_contents:
## 用file_get_contents函数从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上,并展示给用户。
sockopen():
## 使用fsockopen函数实现获取用户制定url的数据(文件或者html)。这个函数会使用socket跟服务器建立tcp连接,传输原始数据。
curl_exec():
## cURL这是另一个非常常见的实现,它通过 PHP获取数据。文件/数据被下载并存储在“curled”文件夹下的磁盘中,并附加了一个随机数和“.txt”文件扩展名。
当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议
file:/// ## 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// ## 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// ## SSH文件传输协议或安全文件传输协议
ldap:// ## 轻量级目录访问协议
tftp:// ## 简单文件传输协议
gopher:// ## 分布式文档传递服务,可使用gopherus生成payload
CSRF 是跨站请求伪造攻击,由客户端发起
SSRF 是服务端请求伪造,由服务端发起
重放攻击是将截获的数据包进行重放,达到身份认证的目的
XSS : 跨站脚本攻击
CSFR : 客户端请求伪造攻击
SSRF : 服务器端请求伪造攻击
区别:
XSS ## 是服务器没有对用户输入的数据进行严格的过滤,导致客户端浏览器在渲染时执行了攻击者插入的恶意脚本,总而导致获取用户信息或者cookie信息泄漏等。
CSRF:## 是服务器端没有对用户提交的数据进行随机值校验,而且对http请求包内的refer字段校验不严格导致攻击者可以利用网站对已经进行身份认证用户的信任来利用已经身份认证用户的cookie,伪造用户请求发送至服务端从而达到攻击目的
SSRF:## 是服务端对用户提供的可控URL过于信任,没有对攻击者提供德 URL进行地址限制或者严格的检测,从而导致攻击者可以 跳板攻击内网或其他服务器
## 先确定黑盒测试还是白盒测试
## 黑盒测试
## 信息收集
服务器相关信息 ---- 真实IP,系统类型,版本,开放的端口
网站指纹识别 ------- CMS,cdn ,ssl证书,dns解析记录
whois信息 ------ 姓名,备案,邮箱,电话等
子域名收集,旁站,C段,hacking
网站目录结构,敏感目录泄漏,爆破后台
## 漏洞测试:
sql注入,文件上传下载,命令执行,XSS,XXE,弱口令,文件包含等
## Java中的ObjectOutStream 类的writeObject()可以实现序列化,其中用把对象转换为字节流,便于
保存或者传输,
## 而ObjectlnputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象
## Shiro反序列化主要是Apache Shiro提供了一个remember的功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用
## 而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其base64解码,再进行AES解密,再将其反序列化进行校验
## 而漏洞就是出现在这里,我们都知道AES他是一个硬编码,他是有默认秘钥的,如果程序员没有去修改或者过于简单,难么我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(秘钥我们爆出来了),在进行base64编码,形成我们的新cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码
serialize() 序列化 unserialize() 反序列化
## 创建实例 触发 __construct()函数
## 序列化时 触发 __sleep()函数
## 反序列化 触发 __wakeup()函数
## 销毁对象 触发 __destruct()函数
无类:## 如果源码会把传入的值进行反序列化,我们需要把数据提前序列化再传入
有类:## 需要用到魔术方法,如创建对象时就会默认触发一些特定函数,比如__construc(),并执行
__construct()中的代码。
利用条件
## root权限
## 知道网站的绝对路径
## GPC 关闭
## secure_file_priv 参数为空或者指定路径
原理:
## 先对目标进行一个基础信息探测,然后上传shell到目标web网站上,利用shell传参进行命令执行,退出删除shell
## 数据库不同,条件也不同,例如SQLserver需要数据库支持外连,数据库权限为SA权限,主要利用XP_CMDshell扩展进行命令执行sql
## 把数据包放到攻击器里面,用变量对密码请求参数进行替换,然后模拟请求获取不同的相应结果,以此达
到爆破目的。
IPS:入侵防御系统
## IPS系统是电脑网路安全设施,他是防病毒软件和防火墙的补充。IPS系统是一部能够监视网络或网络设备
的网络资料传输行为的计算机网路安全设备,能够及时中断,调整或隔离一些不正常或具有伤害性的网络资料
传输行为。
## IPS对于初始者来说,他是位于防火墙和网络的设备之间的设备。这样,如果检测到攻击,IPS会在这种攻
击扩散到网络的其他地方之前阻止恶意的通信,因此IPS具有检测已知和未知攻击并且具有成功防止攻击的能
力。
1,匿名用户
net user administrator$ woaijiushi /add && net localgroup administrators administrator$ /add
## 通过在用户后面添加$符号的形式将用户达到隐藏的效果。
## 可以通过注册表或直接用户管理删除隐藏的用户。
2,Shift 后门
## 将 C:\WINDOWS\system32\dllcache\sethc.exe 删除,这个文件夹中放着缓存,如果不删除就会自动变回去。
## 删除 C:\WINDOWS\system32\ 下的 sethc.exe 文件。
## 重命名 C:\WINDOWS\system32\ 下的 cmd.exe 为 sethc.exe 。
## 按下 5下 shift 即可弹出管理权限的 DOS 窗口。
3、创建schtasks 计划任务
## schtasks 是 Windows 自带的命令,使用 schtasks 命令创建计划任务
## 下面这句的意思是创建一个名称是 test 的计划任务,每隔一分钟去运行一次 5555.exe 文件:
schtasks /create /sc MINUTE /mo 1 /tr C:\Users\Administrator\Desktop\mx\5555.exe /tn test
4,激活Guest用户
## Guest 用户在 Windows 上默认是不开启的,可以把他开启并添加到管理员组,但是被管理员发现的话还是很容易删除
# 设置 guest 账户密码
net user guest passwd123 # guest 账户添加到管理员组
net localgroup administrators guest /add ## 把guest用户添加到管理员组
net user guest /active:yes # 激活账户
5,添加服务,添加启动项
1、收集信息:搜集客户信息和中毒信息,备份
2、判断类型:判断是否是安全事件、是何种安全事件(勒索病毒、挖矿、断网、ddos等)
3、深入分析:日志分析、进程分析、启动项分析、样本分析等
4、清理处置:杀掉恶意进程、删除恶意文件、打补丁、修复文件,检查后门
5、产出报告:整理并输出完整的安全事件报告
windows应急
一、查看系统账号安全
1、查看服务器是否有弱口令、可疑账号、隐藏账号、克隆账号、远程管理端口是否对公网开放
2、win+r(eventwmr.msc)查看系统日志,查看管理员登录时间、用户名是否存在异常
二、检查异常端口、进程
1、netstat -ano 检查端口连接情况,是否有远程连接、可疑连接
2、tasklist | findstr "PID"根据pid定位进程
3、使用功能查杀工具
三、启动项检查、计划任务、服务检查
1、检查服务器是否有异常的启动项,msconfig看一下启动项是否有可以的启动
2、检查计划任务,查看计划任务属性,可以发现木马文件的路径
3、见擦汗服务自启动,services.msc注意服务状态和启动类型,检查是否有异常服务
四、检查系统相关信息
1、查看系统版本以及补丁信息 systeminfo
2、查找可疑目录及文件 是否有新建用户目录 分析最近打开分析可疑文件
(%UserProfile%\Recent)
五、自动化查杀
使用360 火绒剑 webshell后门可以使用d盾 河马等
六、日志分析
360星图日志分析工具 ELK分析平台
linux应急
1、检查用户及密码文件,查看是否存在多余帐号或陌生账号,
## 主要看一下帐号后面是否是 nologin,如果没有 nologin 就要注意;
2、查看用户登录情况,用户行为
## 通过 who 命令查看当前登录用户(tty 本地登陆 pts 远程登录)、
#3 通过w 命令查看系统信息,查看某一时刻用户的行为、
## 通过 uptime查看登陆多久、多少用户,负载;
3、 查看history历史命令
4、 令分析可疑端口
## 用 netstat -antlp| more命令分析可疑端口、IP、PID,查看下 pid 所对应的进程文件路径,运行
ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的pid 号);
5、分析可疑进程
## 使用ps命令,分析进程 ps aux | grep pid
6、检查当前系统运行级别,检查运行级别对应目录下有没有可疑文件
## 使用 vi /etc/inittab 查看系统当前运行级别,通过运行级别找到/etc/rc.d/rc[0~6].d对
应目录是否存在可疑文件;
7、查看定时任务
## 看一下crontab定时任务是否存在可疑启用脚本;
8、检查服务,排查可疑服务
## 使用chkconfig --list 查看是否存在可疑服务;
9、分析系统日志和web日志,判断是否存在攻击痕迹
## 通过grep awk命令分析/var/log/secure安全日志里面是否存在攻击痕迹;
10、用工具对系统进行查杀
## chkrootkit、rkhunter、Clamav 病毒后门查杀工具对 Linux 系统文件查杀;
11、如果有 Web 站点,可通过 D 盾、河马查杀工具进行查杀或者手工对代码按脚本木马关键字、关键涵数
(evel、system、shell_exec、exec、passthru system、popen)进行查杀Webshell 后门。
一、原理
## 应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
二、利用条件
## 1、应用调用执行系统命令的函数
## 2、将用户输入作为系统命令的参数拼接到了命令行中
## 3、没有对用户输入进行过滤或过滤不严
三、漏洞分类
1、远程命令执行漏洞
## 远程命令执行漏洞,指用户通过浏览器提交执行操作命令, 由于服务器端,没有针对执行函数做过滤,就执行了恶意命令
2、远程代码执行漏洞
## 代码执行漏洞也叫代码注入漏洞,指用户通过浏览器 提交执行恶意脚本代码,执行恶意构造的脚本代码
四、漏洞的产生原因
1、代码层过滤不严
## 商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:
system(“/bin/program --arg $arg”);
2、系统的漏洞造成命令注入
## 比如:bash破壳漏洞(CVE-2014-6271)
3、调用的第三方组件存在代码执行漏洞
## 如wordPress中用来处理图片的imageMagick组件
## JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)
## ThinkPHP命令执行
越权操作类型:
## 横向越权操作(水平越权)和纵向越权(垂直越权)操作。
## 水平越权是指相同权限下不同的用户互相影响。
## 垂直越权是指使用权限低的用户影响到权限较高的用户。
## 交叉越权是指既可以水平越权又可以垂直越权。基本上只要垂直越权能做,水平越权也能做。、
三)常见越权方法
1.通过修改GET传参来越权
2.修改POST传参进行越权
3.修改cookie传参进行越权
## 注意:但凡看到可能代表身份或者某些信息的传参,都可以去尝试修改看看有没有漏洞。
(四)未授权访问
## 还有一类叫做未授权访问,即不需要权限就能访问。严格意义上而言,这个不属于越权漏洞,但是在日常
测试中常常会遇见。(比如只要输入正确的网址就可以直接访问,例如/admin默认是登录,登录后跳转到
user.php,然后你直接访问user.php,发现你直接有后台权限)
## 网站中的未授权访问通过目录扫描往往就可以发现。
(一)越权漏洞的思路
## 水平越权测试方法主要就是:看能否通过A用户的操作影响到B用户
## 垂直越权的测试思路就是:看低权限用户能否使用高权限用户专属的功能
## 一般而言,低权限用户的漏洞比较难挖,高权限的用户相对好挖(高权限用户功能多,而功能越多越可能有
漏洞)。
二)越权测试的过程
## 登录A用户时,正常更改或者是查看A用户信息,然后抓取数据包,将传参ID修改为其他用户,如果成功
查看或者修改了同权限其他用户的信息就属于水平越权测试。(如果可以影响到高权限用户就是垂直越权)
测试过程中的传参ID参数需要自己检测(常见:uid= id= user= 等)通常使用burp进行爆破传参(传参可
能在GET、POST、COOKIE传参)
(三)常见平行越权
## 不需要输入原密码的修改密码、抓包改用户名或者用户id修改他人密码、修改资料的时候修改用户id、查
看订单的时候,遍历订单id等。
## 有了解过,红队,一般是指网络实战攻防演习中的攻击一方。
## 红队一般会针对目标系统、人员、软件、硬件和设备同时执行的多角度、混合、对抗性的模拟攻击;通过实现系统提权、控制业务、获取数据等目标,来发现系统、技术、人员和基础架构中存在的网络安全隐患或薄弱环节。红队是以发现系统薄弱环节,提升系统安全性为目标
## 红队的工作可分为三个阶段:情报收集、建立据点和横向移动
## 红队的工作也与业界熟知的渗透测试有所区别。
## 渗透测试通常是按照规范技术流程对目标系统进行的安全性测试;点到即止
## 而红队攻击一般只限定攻击范围和攻击时段,对具体的攻击方法则没有太多限制。不择手段
## 渗透测试过程一般只要验证漏洞的存在即可,而红队攻击则要求实际获取系统权限或系统数据。
## 此外,渗透测试一般都会明确要求禁止使用社工手段(通过对人的诱导、欺骗等方法完成攻击),而红队
则可以在一定范围内使用社工手段。
分析思路:
## 查看告警详情,查看请求头、请求体内容,定位到触发告警攻击动作的payload,分析攻击动作是什么,
读取文件、打印输出内容、写入文件和尝试下载文件、执行函数或命令等,然后分析告警响应头、响应体、网
络行为是否有动作预期的结果,如符合预期则攻击成功。
常见漏洞:
## 弱口令、命令执行、反序列化、任意文件读取、sql注入等
红队攻击
蓝队防御:
## 蓝队分;监控组、事件分析、溯源、处置组
(1)webshell
## 查看web日志,分析攻击流量
## 用工具扫描webshell
## 排查网站目录,查看最近更改的文件
(2)主机shell
## 查看未知端口,未知进程
## 排查恶意流量,锁定感染进程
## 可以看安全设备
## 查看请求头UA,XFF,URL,referer是否正常
## 内网ip一般是误报
## 分析响应体信息是否正常,有没有攻击的特征代码
ping/超级ping/nslookup
/黑暗搜索引擎(fofa\shodan\钟馗之眼)
/域名收集工具--layzer域名挖掘,jsFinder工具
/查看备案号的网站/ssl证书查询/威胁情报微步、绿盟、奇安信
/目录扫描工具--7kb,破壳,dirsearch/github/码云
/指纹识别工具--潮汐,云悉,wapperlazer/云盘/
apache:部署Apache的页面
nginx:discuz,wordpress,转盘抽奖页面,
iis:Windows上的asp\aspx网页
phpstudy:皮卡丘、自己写的页面,discuz,可道云的网盘系统
CSRF一些不知名的链接,邮件,CS生成的免杀程序,一些自解压程序,通过用户的不经意点击,使攻击者获取
到了他所需要的一些信息,造成用户的信息泄露
chmod ## 给文件读写执行权限
chown ## 修改文件的拥有者
netstat -lntup |grep 3306(端口号)
(1)首先客户端向服务端发送一段tcp报文,标记为syn,建立新的连接,生成随机序列号seq=x。 syn
seq=x
(2)服务端收到来自客户端的tcp报文之后,并返回一段TCP报文,其中:标志位为SYN和ACK,就是告诉客户端,服务器收到了你的数据;随机序列号为seq=y,回应序列号为ack=x+1,表示收到客户端的序号Seq并将其值加1作为自己确认号Ack的值 。syn、ack seq=y ack=x+1
(3)客户端接收到来自服务器端的确认收到数据的TCP报文之后,明确了从客户端到服务器的数据传输是正常的,并生成最后一段报文,标志位为ack,返回序列号为seq=x+1,确认号为ack=y+1。 ack seq=x+1 ack=y+1
## TCP和UDP都是传输层协议
## TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例
如文件传输。面向字节流,传输慢 (可靠性,实时,效率低)
## UDP 是一种面向无连接的传输层协议,不会对自己提供的连接实施控制。适用于实时应用,例如:IP电
话、视频会议、直播等。以报文的方式传输,效率高 (不可靠,效率低)
## TCPDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端
口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。
2、第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。
3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的
ACK 报文之后才会进入 CLOSED 状态
5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
物理层 信号转换的问题
数据链路层 Mac地址
网络层 ip地址
传输层 tcp/udp协议
会话层 会话层负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接
表达层 表达层把数据转换为能与接收者的系统格式兼容并适合传输的格式。
应用层 协议(http,https)
## DDOS攻击是什么,怎么防,做过DDOS攻击没
## 分布式拒绝式服务攻击,发生在三次握手过程中,通过发起大量的请求(典型的就是大量的syn包、fin包
等),使得服务器夯住或者瘫痪
## 防止DDoS攻击1、硬扛,靠自身大带宽的硬件硬扛,抗不过就没办法了。2、购买安全产品,防御攻击,和
卖保险的道理类似。3、已经打过来了,拔网线。
## 如何检测是DDoS攻击:bp抓包分析、冰盾等ddos攻击监控器或者防火墙、看任务管理器进程 CPU占用、
带宽占用、查看网卡接包与发送情况
#常用端口
ftp 21
ssh 22
telnet 23 TELNET 是一个简单的远程终端协议(又称终端仿真协议),也是互联网的正式标准。
smtp 25 简单邮件传输协议
dns(udp) 53
http/nginx 80
samba 139 445 共享文件夹
ntp 123 网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来
使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。
mysql 3306
pgsql 5432
Apache 80
VNC 5900 远程桌面控制软件,检查弱口令
tomcat/jboss(java) 8080
weblogic 7001
mssql 1433
oracle 1521
https 443
dhcp 68 67
windows远程登录 3389
redis的默认端口是**6379**
MongoDB 27017/27018
200 OK
206 OK 文件拆分上传
301 永久跳转 缓存到浏览器
302 临时跳转 不缓存到浏览器 请求服务器
304 读取硬盘缓存
400 请求无效
401 身份认证没有通过(账号密码错误)
403 网站没有首页,deny,权限不够↓(没权限)Permission denied 权限拒绝
404 这个文件找不到 路径写错
413 上传文件过大
500 代码执行不下去了--服务端的代码问题
502 错误的网关--负载均衡的服务器都挂了 nginx抛给PHP处理而PHP没有启动
504 后端服务超时
## http是超文本传输协议,信息以明文进行传输
## HTTPS需要进行SSL加密传输协议,HTTPS需要获得CA的证书,通常需要付费,免费的较少
1)reverse_tcp
如果目标机器能够站出来与你的机器建立连接就可以使用反向连接。 **木马会主动连接目标服务器**
2)bind_tcp
如果目标属于深层网络,不能直接连通外网,也不能通过其他机器进行连接则可以使用正向连接。**木马会监
听本地的端口**
get:获取一个资源
POST:方法的主要作用是执行操作
Referer:表示发出请求的原始URL
User-Agent:消息头提供与浏览器或其他生成请求的客户端软件有关的信息
Host:代表访问别人域名和ip
Cookie:消息头用于提交服务器向客户端发布的其他参数
Origin:跨域Ajax求中,用于指示提出请求的域
Access-Control-Allow-Origin:这个消息头用于指示可否通过跨域Ajax请求获取资源
Location:这个消息头用于在重定向响应
secure:如果设置这个属性.则仅在HTTPS请求中提交cookie
HttpOnly:如果设置这个属性,将无法通过客户端JavaScript直接访问cookie
X-Forwarded-For:伪造IP地址,,,主要是为了让 Web 服务器获取访问用户的真实 IP 地址,但是这个IP却未必是真实的,
比如centos7的,使用epel源安装
yum install epel-release -y
yum install nginx -y
systemctl start nginx.service
systemctl enable nginx.service
(1)数据存放位置不同:
cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2)安全程度不同:
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
(3)性能使用程度不同:
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
(4)数据存储大小不同:
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制
## csrftoken:随机字符串,进行csrf攻击防范的
## jwt:身份认证的token,起到的作用和cookie是差不多的,只是生成和认证阶段的机制不同。只在服务
端保存一个secret_key密钥字符串,通过某种算法结合密钥进行加密,生成一个随机字符串,就是token
值,返回给客户端,客户端再发送请求的时候携带上token,后台通过计算来进行身份认证,认证前后都不需
要存储数据,所以效率很高,一般用在API接口认证中。
## token的安全问题:token重放攻击、token有效性不能太久(一般1小时左右)、关闭浏览器要让token失
效
5.0之后有一个information_sechma系统数据库,里面存在着一些重要数据
## information_schema下面又包含了这几张表:schemata、tables、columns。这三张表依次分别存放着字段:(schema_name)、(table_name、table_schema)、(table_schema、table_name、column_name),其次就是5.0以上都是多用户,5.0以下是单用户。
schemata、tables、columns三张表介绍:
1、SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
2、TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
3、COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之
不同的数据库sql语句写法不同
默认端口号不同
通过不同数据库的特性来判断:特定的库名表名,不同的数据库内置的库是不同的
grant all(权限名称) on blog.*(库名.表名) to blog@'192.168.56.%'(用户名@允许登录的主机IP);
## GBK是中文编码字符集,是GB2312的升级版,主要是为了存储中文字符,存储单个中文和英文字母,都是固定的2个字节长度
## utf-8他是一种全球通用的字符集,可变长度,长度在1-4个字符,英文字母一个字节存储,中文是三个字节存储,支持所有国家的语言,市面上utf-8编码的项目居多
iframe标签的src属性、img标签的src属性、link标签的href属性、a标签的href属性、script标签的src属性
同源:协议、域名、端口号相同的网址叫做同源
同源机制:是浏览器的一种安全机制,防止恶意网站非法窃取其他网站的数据,非同源的网址不能直接交互数据,确切的说是请求可以发出去,但是响应的数据会被浏览器拦截
跨域:绕过浏览器的同源机制叫做跨域,跨域的目的是,如果两个非同源的网站互相有交互数据的需求,那么就要跨域,跨域是可以控制的
跨域手法:
1、五大跨域标签,如上
2、corS跨域,CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),简单来说就是响应数据的一方,在响应数据的时候,添加一个响应头键值对,比如针对简单请求添加这个键值对:Access-Control-Allow-Origin: http://www.jaden.com,针对复杂请求就需要额外添加其他几个键值对了。
3、JSONP跨域:前端js基于某些标签的特性,比如script的src属性来发送get请求,请求数据中涵盖一个callback=func1回调函数,后台设置一个func1函数来进行数据的返回。
命令执行
system()
eval()
exec()
shell_exec()等
文件包含
include
include_once
require等
sql注入
$_GET
$_POST
$_REQUEST
等方法的下文有没有进行数据过滤
先确定黑盒测试还是白盒测试
黑盒测试
信息收集:
服务器相关---:系统版本,真实IP,开放端口,使用的中间件
指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息
whois信息--- 备案信息,邮箱,手机号,姓名
子域名,旁站,C段
漏洞测试
sql注入,xss,csrf,弱口令,文件包含,任意文件上传下载,远程命令执行,敏感信息泄漏,目录遍历等
可以先用工具进行扫描,对结果进行手动验证,排查误报,对一些没办法工具扫描的漏洞,比如逻辑漏洞等通过手动测试
最后书写报告,写出以及修复建议,整理报告,
白盒测试
直接进行漏洞扫描
针对ip地址进行渗透测试,用工具进行漏洞扫描,得出报告,进行手动验证,
再测试一些工具检测不出来的,一些漏洞:越权漏洞、逻辑漏洞、未授权访问漏洞。
还有一些不让用扫描器的项目,那么就需要纯手工进行漏洞检测了,
如果发现漏洞,一般就截图留证,写报告,一般不进行漏洞利用,最多获取出来一些数据作为证明,
最后出具报告以及修复建议,等修复完之后,在进行复测,出复测报告。
一、信息收集
服务器相关---:系统版本,真实IP,开放端口,使用的中间件
指纹信息---有无cdn加速,dns解析记录,是不是cms系统,ssl证书信息
whois信息--- 备案信息,邮箱,手机号,姓名
子域名,旁站,C段,敏感目录检测
二、漏洞扫描
用 AWVS、APPSCAN、长亭科技的 Xray 等扫描器检测 Web 漏洞,如 XSS,CSRF,sql 注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含, 远程命令执行,弱口令,上传,编辑器洞,暴力破解等
用 namp、sqlmap、天镜、Nessus扫描系统,对扫描出来的高危漏洞进行测试,以及进行漏洞验证。
三,漏洞利用
## 利用发现的漏洞,包括中间件以往爆出的漏洞,来进行命令执行、数据提取,或者getshell,或者敏感文件读取等操作
四,权限提升
Windows提权
微软官网找公布的exp --- 查看哪些补丁没有打,找到对应漏洞利用工具
使用工具 ---- 很多专门提权的工具,比如我用过一个叫Pr的工具
sc命令提权 --- 针对版本windows 7、8、03、08、12、16
利用 kali 的msf 提权
Linux提权
## 内核漏洞提权,比如老版本kali的内核漏洞
## 脏牛提权
## sudo 提权
## SUID提权
数据库提权
## mssql提权 ------ sqlTools 工具
## Oracle数据库 ------ 使用oracleshell工具
## MySQL提权
## UDF自身提权
## MOF漏洞提权
## MySQL启动项提权
五,权限维持
## 克隆账号
## 添加匿名用户
## 激活Guest用户
## shift后门
## 添加schtasks计划任务
## 添加启动项,服务
## SSH公钥登录
## 进程注入
六,收集内网信息,内网渗透
内网渗透基本步骤
Step1、信息收集 --- ## 基本信息,用户信息,网络信息,权限信息等
Step2、获取权限 --- ## 通过一些漏洞拿下一台主机的系统权限
Step3、横向移动 --- ## IPC + at/schtasks | IPC + sc | wmic 远程命令执行 | msf横向移动具,Python脚本工具
Step4、权限维持 --- ## 添加匿名用户,激活Guest用户,添加schtasks计划任务,添加启动项,服务
Step5、清理痕迹 ---- ## 操作记录,历史记录等
七,痕迹清理
## 操作系统、中间件、数据库等日志进行清除
服务器相关---:操作系统版本,真实IP,开放端口,使用的中间件,web中间件,数据库版本,软件版本
指纹信息---有无cdn加速,dns解析记录,是不是cms框架信息,ssl证书信息
whois信息--- 备案信息,邮箱,手机号,姓名
子域名,旁站,C段,敏感目录泄漏
## 判断出网站的cms就可以去网上查这个cms往常爆过什么漏洞,找对应的漏洞利用工具
## 如果是开源的话还可以下载相应的源码进行代码审计来发现漏洞。
## 可以收集敏感文件,进行二级目录扫描 获取他的目录结构,获取一些敏感数据,比如网站的备份文件,压缩文件gzip,phpinfo.php文件等
## 可能检测出程序员忘记删掉的备份文件,Git仓库文件,或者后台登录页面
## 1、Windows对大小写不敏感,Linux区分大小写。
## 2、通过ping的TTL值进行判断,Linux和widows TTL 值区段不一样
直接用7KBscan或破壳工具挂字典在网站二级目录/abc/下扫描敏感文件及目录。
丢进社工库看有没有泄露密码,并尝试登录后台
可以进行社工,查看他平时的兴趣点,找到其常用密码进行撞库,
将其邮箱丢进搜索引擎,查找其关联的一些账号及设置密码的习惯,
利用已有的信息生成专有字典
收集ip:## ping、超级ping、nslookup
收集域名:## 子域名(黑暗搜索引擎,工具:二级域名爆破工具、layer子域名挖掘机),备案号查询,ssl证书查询、威胁情报查询
敏感信息收集:## C段信息收集K8、目录扫描7KBscan和破壳、源码信息泄露.git、DS_store、SVN指纹识别:wappalyzer、御剑,nmap
WAF识别:## kali自带waf识别工具
CDN识别:## ping,黑暗搜索引擎,超级ping
## 身份认证阶段绕过
1,伪造搜索引擎 -------------------- ## 不太管用了,不过可以尝试一下
2,伪造白名单特殊目录 ---------------- ### 属于waf管理员配置规则不当导致的。
3,直接攻击源站(真实ip地址) ---------------- ## 可以绕过云waf
## 数据包解析阶段绕过
1、编码绕过 ------------------ ## 最常见的方法之一,可以进行urlencode,这是早期的方法,现在效果不是太好
2、修改请求方式和请求数据位置绕过
3、复参数绕过
## waf 触发规则绕过
1、特殊字符替换空格 # 比如在mysql中%0a是换行,可以代替空格,在sqlserver和mysql中都可以用/**/代替空格
2、特殊字符拼接 --------------------- ## 通过+拼接
3、注释包含关键字 --------------- ## /*!关键字/
5、使用大小写混合
6、双写(不好用)
7、编码与注释结合
8、利用WAF本身的功能绕过(不好用) -- ## 假如你发现WAF会把"*"替换为空,那么你就可以利用这一特性来进行绕过
9、使用其他变量或者命令对注入语句进行替换(√) -- ## 比如 ' and or 1=1 ,这里的1 可以用mod(8,7)来替换
10、组合绕过waf
11、http请求头设置分块传输(√)
判断是否存在CDN:
## 多地ping(也叫做超级ping)、nslookup查询
CDN绕过,网站有CDN怎么找真实ip:
## 可以利用查询目标网站的根域名、子域名、泛域名甚至多级子域名来获取真实的IP。
## 查看网站备案号来获取真实ip
## ping一个不存在的二级域名
## 查看DNS历史记录
## 利用网站漏洞查找
## 网站邮件订阅查找
## 通过国外服务器ping对方网站 ------------ 对于国内访问买了cdn服务器,由于国外访问量相对较少,可能没买cdn服务器
## DDOS打光CDN流量
msf全称:## The Metasploit Framework
常用指令:
msfconsole ## 启动msf
search ms17-010 ## 搜索漏洞
show options ## 查看都有哪些需要配置
set hosts ip ## 配置IP地址
set port 0000 ## 配置端口
run/exploit ## 进行漏洞利用
## AWVS是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。
## AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。
预登录:## 提前将用户名和密码配置好
设置记录值:## 扫描到登录页面,自动弹出填写用户名和密码等进行登录页面的记录
预设值cookie:## 设置 Cookie 模拟登录网站进行全面扫描
菜刀:## 先进行URL解码,在进行base64解码,分析明显特征,eval,ua头为百度爬虫
冰蝎:## Java开发,支持跨平台运行,传输数据用的是AES加密+base64编码,AES加密是对称加密算法
冰蝎2.0:## 进行三次密钥的协商过程,最后一次协商是进行aes加密的过程,先进行base64加密,然后再进行aes对称加密,传输给服务端,服务端在进行aes解密以及base64解密,这样拿到结果进行相应的操作去执行命令获取数据。
Content-Length: 16, ## 16就是冰蝎2连接的特征
冰蝎3.0:
## 静态密钥,如果失效了还是要协商密钥
## Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征
## ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老
冰蝎4.0:新增的功能
## 1.新增支持多线程超大文件上传、下载;
## 2.新增文件打包压缩;
## 3.新增数据库连接配置可保存;
## 4.新增主机扫描、端口扫描、服务识别模块;
## 5.新增支持Java9~java15+版本Agent内存马一键注入;
## 6.新增支持Java Agent无文件落地注入内存马;
## 7.新增多层网络子Shell穿透模块,实现多层”蝎中蝎”;
## 8.开放插件开发模块,可开发自定义插件,内置多款插件;
蚁剑:## ua有明显的antsword,能够支持自主编码,自行选择编码来传输数据,还可以使用数据分块传输。
## https的需要配置https证书,burp上导出证书,安装到浏览器上,本机开启代理,直接就可以抓https的包了
## 1、添加对应语言的插件
## 2、降低线程数
## 3、将历史误报信息保存在某个地方,每次扫描出来的告警信息先到历史误报中去查看,如果存在表示误报,不存在在进行验证,以减少误报
## 搜索型,字符型,数字型,xx型
## 除此之外 还可以细分比如
## 报错注入
## 时间型注入
## 布尔型注入
## JSON注入
## 宽字节注入
## 编码注入
## 加密注入
## 堆叠注入
## 二次注入
MySQL数据库 ------------------- 系统的去学过MySQL数据库基础,对DQL,DML,DDL,DTL有一定的了解。
5.0之后information-sechma,存着所有的表明库名 ------------------- 可以利用此特性可以进行
表结构数据的获取
1、# 判断是否存在注入点,在输入框的地方进行sql注入测试,用SQL注入的万能语句判断是什么类型,是数字型、字符型、搜索型还是XX型。
2、## 猜解sql查询语句的字段数
3、## 获取当前数据库的数据版本信息
4、## 获取数据库中的表
5、## 获取表中的字段名
6、## 获取字段里的数据
#3 当然了如果可以利用工具的话用工具进行SQL注入测试,效率高,节省时间
服务端后台绕过
1、## 编码、可以进行两次编码
2、## 参数绕过,复制参数(参数污染),id=1&id=1
3、## 采用内联注释 /*!select*/
4、## 组合法 如 and 可以用&&再 URL 编码
5、## 替换法,如 and 改成&&;=可以用 like 或 in 等
绕过空格(注释符/* */,%a0) ---## 两个空格代替一个空格,用Tab代替空格,%a0=空格:用注释替换空格:
括号绕过空格 ---- # 任何可以计算出结果的语句,都可以用括号包围起来。而括号的两端,可以没有多余的空格。
引号绕过(使用十六进制)-- ## 会使用到引号的地方一般是在最后的where子句中
逗号绕过(使用from或者offset) -- ## 在使用盲注的时候,需要使用到substr(),mid(),limit。这些子句方法都需要使用到逗号
比较符号(<>)绕过(过滤了<>:sqlmap盲注经常使用<>,使用between的脚本)
or and xor not绕过 --- ## and=&& or=|| xor=| not=!
绕过注释符号## (#,--(后面跟一个空格))过滤
使用注释符绕过
使用大小写绕过
内联注释绕过
双关键字绕过
通用绕过(编码)
等价函数绕过 ## sleep() ==>benchmark() | concat_ws()==>group_concat() | mid()、substr() ==> substring()
waf 绕过
## 单独说过了
## 这是进行sql注入的万能语句,获取所有的数据,可以认为拼接一个永真条件来获取所有数据
## 这是针对没有回显的情况下来获取数据的方法
布尔型盲注:## 用来获取数据的,一步步进行猜表名,常用函数length(),ascii() ,substr()这三个函数
时间型盲注:## sleep(),猜对了会有延迟,没猜对直接返回,没有延时,通过有无延时来猜数据,常用函数
if(),sleep()函数,benchmark()--可以多次执行SQL语句。
if(),sleep()函数,benchmark()-- 可以多次执行SQL语句。
宽字节是怎么注入的?
## 针对的是后台数据为GBK编码时,并且后台使用了反斜杠\对引号的转译时使用
%df' or 1=1#
%df\' or 1=1#
%df%5c' or 1=1#
運' or 1=1# 吃掉\,让单引号生效
怎么判断是不是GBK编码?
## 对于Windows中文版来说,本地编码就是GBK编码。
## 查看数据头的字节
## 当以UTF16或UTF-8编码存储时,头部需要添加几个字节作为标识。称为 BOM
## GBK是中文编码字符集,是GB2312的升级版,主要是为了存储中文字符,存储单个中文和英文字母,都是固定的2个字节长度
## utf-8他是一种全球通用的字符集,可变长度,长度在1-4个字符,英文字母一个字节存储,中文是三个字节存储,支持所有国家的语言,市面上utf-8编码的项目居多
## 有十几个,但我常用的就是updatexml(),floor(),extractvalue()
## 对等号或者单引号进行URL编码、base64编码,或者使用联合查询、或者将=替换为in关键字试一试
## 针对单引号可以使用宽字节注入试一试
一. into outfile
1. 此方法利用的先决条件
## web目录具有写权限,能够使用单引号
## 知道网站绝对路径(根目录,或则是根目录往下的目录都行)
## secure_file_priv没有具体值(在mysql/my.ini中查看)
2. secure_file_priv
## secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。如下关于
secure_file_priv的配置介绍
## secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
## 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
## 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
二. --os-shell
原理
--os-shell就是使用udf提权获取WebShell。也是通过into oufile向服务器写入两个文件,一个可以直接执行系统命令,一个进行上传文件
利用条件
## root权限
## 知道网站的绝对路径
## GPC 关闭
## secure_file_priv 参数为空或者指定路径
原理:
## 先对目标进行一个基础信息探测,然后上传shell到目标web网站上,利用shell传参进行命令执
行,退出删除shell
## 数据库不同,条件也不同,例如SQLserver需要数据库支持外连,数据库权限为SA权限,主要利用XP_CMDshell扩展进行命令执行sql
## 是mysql的提权方式,在Linux下不能用,就是利用了 c:/windows/system32/wbem/mof/目录下的nullevt.mof文件,每分钟都会在一个特定的时间去执行一次的特征
sql语句:
## 通过shell上传这个文件,通过sql语句写入这个文件,select 内容 into outfile select 内容 into outfile "c:/c:/windows/system32/wbem/mof/nullevt.mof";
## 1,后端对数据进行严格校验,对数据类型,数据长度,一些SQL注入特殊字符进行过滤转义
## 2,购买安全产品,如防护墙,使用waf
-u +url
-r +.txt --batch --table --dbs
--tamper=python脚本文件 ## sqlmap过waf
--os-shell: ## 1、先上传一个二进制文件,该文件时上传文件的功能能。2、基于上一个木马进行执行命令
-p #指定可测试的参数(?page=1&id=2 -p “page,id”)
--dbs: ## 会获取所有的数据库
--current-user: ## 大多数数据库中可检测到数据库管理系统当前用户
--current-db:## 当前连接数据库名
--is-dba:## 判断当前的用户是否为管理
--users:## 列出数据库所有所有用户
--tables -D 数据库名 ## 获取表名
## 上传了两个木马:一个小马是用来上传文件的,一个大马是通过小马上传文件来执行命令的
## 检查有没有waf
## 判断是不是注入点
## 判断sql注入的类型
## 判断对方的查询字段数 order by
## 判断数据库类型和版本
## 查询数据:库名表名,字段名
## mysql5.1及以上版本存在information_schema库,union select 联合查询这个库的信息,低版本的数据库基本就靠猜解,挂字典暴力猜解。
union select .. from information_schema.tables
## information_schema查看库名,用的它的哪个表哪个字段,tables\columns...
1)## 数据库拥有root权限或拥有file权限。
(2)## 知道网站的绝对路径。
(3)## PHP的GPC参数为OFF状态。
(4)## 配置文件中开启MYSQL中的一个配置secure_file_priv=“ ”,等于空字符串表示开启,开启之后sql语句才能进行文件读写
## sql server--getshell,执行系统指令
## xp_cmdshell功能开启,才能通过sql语句执行系统命令,sa用户具备开启和使用这个功能的权限
## dbowner:具备使用xp_cmdshell的权限
1、## 注入点及万能密码登录
2、## 登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误
3、## 查看登录页面源代码,看是否存在敏感信息泄露
4、## 不安全的验证码
5、## 在注册账号的时候,是否存在不安全的提示
6、## 不安全的密码,在注册账号的时候密码没有限制复杂度
7、## 任意无限注册账号
8、## 在暴力破解的时候不会限制ip,锁定用户
9、## 一个账号可以在多地登录,没有安全提示
10、## 账户登录之后,没有具备超时功能
11、## OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码
12、## 逻辑漏洞,任意更改密码文章来源地址:https://www.yii666.com/blog/401424.html
13、## 越权漏洞,纵向、横向越权
14、## 数据包含有风险信息泄露,比如COOKIE
15、## 不安全的数字传输,密码为明文,未使用https证书
16、## 任意文件下载
## 使用xp_cmdshell进行提权、 --- 已得到sql server 的sa权限并且sql server开启外联
## 使用sp_oacreate进行提权、
## 使用SQL Server 沙盒提权
## 利用工具---数据库综合利用工具
## 1、根据后缀判断,后缀为aspx的为SqlServer
## 2、根据报错信息判断,一般都会带有Microsoft 字样
## 3、根据系统表判断,and (select count(*)from sysdatabases) >0 ,如果成立的话,则说明它里边含有这个系统表,可以判断为sql server 数据库 sql server 数据库包含三张主要系统表:sysdatabases、sysobjects、syscolumns。
## 由于程序员写代码时没有对输入和输出做严格控制,从而攻击者可以在有输入的地方插入恶意的js代码,
从而可以获取cookie或者其他信息,以达到攻击目的
1,## 网络钓鱼,包括盗取各类用户账号;
2、## 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
3、## 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;
4、## 强制弹出广告页面、刷流量等;
5、## 网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;
6、## 进行大量的客户端攻击,如DDoS攻击;
7、## 获取客户端信息,例如用户的浏览历史、真实IP、开放端口等;
8、## 控制受害者机器向其他网站发起攻击;
9、## 结合其他漏洞,如CSRF漏洞,实施进一步作恶;
10、## 提升用户权限,包括进一步渗透网站;
11、## 传播跨站脚本蠕虫等;
反射性、
存储型、
DOM型
## 有输入,带参数、登录、留言的、更新、地方输出的地方
(1)输入过滤,
## 避免 XSS 的方法之一主要是将用户输入的内容进行过滤。对所有用户提交内容进行可靠的输入验证,包括对 URL、查询关键字、POST 数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。(客户端和服务器都要)
(2)输出转义
## 往 HTML 标签进行实体转义或者过滤
(3)使用 HttpOnly Cookie防止javascript操作cookie
前段绕过 ------------- ## 一些前段验证规则可以通过抓包,修改数据包来很容易的通过
后端绕过
## 大小写混合绕过
## 双写绕过
## 事件绕过
## 注释干扰绕过
## 伪协议绕过
## 编码绕过 --- base64,js编码,Unicode,16进制,HTML实体编码,URL编码
## img a script 等绕过
waf 绕过xss
## 编码绕过
## 伪协议绕过
## 文件包含漏洞就是使用函数去包含任意文件的时候,当包含的文件来源过滤不严谨的时候,当存在包含恶意文件后,就可以通过这个恶意的文件来达到相应的目的。
## 其实原理就是由于在代码开发的过程中,有时候会遇到相同的代码,不想重复输入,就将代码单独写在一个文件里面,当遇到的时候就直接调用该文件进行运行,而这种方式就会导致客户端可以调用其他的恶意文件,通过恶意文件造成文件包含漏洞。
## 但是前提也是当文件包含的代码文件被当作一个变量来使用,并且能够被用户传入参数,如果没有对该变
量做相应的安全防护,就可能会引发出文件包含漏洞。
PHP:include() 、include_once()、require()、require_once()
JSP/Servlet:ava.io.file()、java.io.filereader()
ASP:include file、include virtual
## 本地文件包含,通过意思就能够理解,就是在条件允许的情况下,所谓的条件允许也就是安全防护没做到位,通过这个条件对文件路径加 载文件,就形成了本地文件包含。
例如php代码:
远程文件包含漏洞
## 远程文件包含漏洞导致的原因和本地文件包含漏洞造成的原因是一样的,只不过远程文件包含漏洞是利用外部的服务器中的文件进行执行,就形成了远程文件包含漏洞
## 但是前提是需要在php.ini中的配置选项中allow_url_fopen和allow_url_include为ON
XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
修复方式:
## (1)输入过滤,预期输入之外的字符禁止输入,限制数据类型,数据长度
## (2)输出转义,对于HTML实体进行转义,对一些特殊字符进行替换
## (3) 使用http only 防止js操作cookie
CSRF 是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是利用站点对已经身份认证用户的信任,
没有对请求做再次身份确认导致的
修复方式:
## 筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer
XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类
似,会引发相关安全问题,例如敏感文件读取。
原理:
## xml外部实体攻击,程序在解析输入的xml数据时,解析了攻击者伪造的外部实体而产生的,可以读
取任意文件。
修复方式:
## XML 解析库在调用时严格禁止对外部实体的解析。
## 最简单的方法就是抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。
## 如果有Referer字段,但是去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
## 随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
ssrf 通过dnslog日志外带的方式来查看
1,“@”符号绕过
## http://[email protected]与http://10.10.10.10 请求是相同的。
2,点分割符号替换(钓鱼邮件常用于绕过检测)
## 在浏览器中可以使用不同的分割符号来代替域名中的.分割,可以使用。、、.来代替:
http://www。qq。com
http://wwwqqcom
http://www.qq.com
3,本地回环地址的其他表现形式
4,IP的进制转换
5,利用短网址 ---- ## 有在线生成短连接网址
## 对于能出网的:ip+port 直接访问就可以
## 不能出网的:代理隧道技术,端口转发等让其出网
## csrf客户端请求伪造,由于用户的不正当操作,使得被攻击者获取了cookie
## ssrf服务端请求伪造,由于服务端的配置问题,提供了从其他服务器获取数据的功能,但没有对其做过多的限制,导致了服务端请求伪造。
## 构造xss恶意代码,让恶意代码去请求运行CSRF获取信息或者获取cookie的脚本文件
前段绕过 -------- ## 抓包,修改数据包
后端绕过
## 抓包修改mime类型
## 黑名单绕过之php3、php5
php结尾在黑名单,但是由于配置不当,php3,php5结尾的文件也能解析
## 黑名单绕过 .htaccess和文件名叠加特性绕过
但是没有限制.htaccess文件的上传,所以我们依然可以使用。
分号配合IIS解析漏洞 ------ 这是一个windows2003上的IIS服务的解析漏洞
冒号配合PHP 和Windows文件命名环境的叠加特性 ------- 在windows直接修改文件名称,肯
定是不让你加冒号的
## 大小写混合绕过
## 空格和点配合绕过
## 基于文件流特性::$DATA来绕过 -- windows下的ntfs文件流特性来玩的
## 点空格点绕过
## 双写绕过
## %00截断 --- 这个属于白名单绕过,这是php语言自身的问题,php低版本存在的漏洞
## 0x00绕过
## 修改文件头来绕过
时间竞争--- ## 服务器先先允许你上传文件,然后再检测是否合法,不合法再删除,我们要利用的就是在服务器在检查删除前,访问到我们上传的php。
重命名竞争 -- ## 我们上传的文件到了服务器就会重命名,所以我们就要在文件重命名之前访问到我们上传的PHP
目录穿越:../../ 后端代码写的不当导致的,没有对输入的数据进行过滤
目录遍历:apache index of/ 服务程序配置问题,开启了目录浏览功能
## 看响应结果、一般没有错误,或者提示上传成功,或者看到状态码200 ok,基本是上传成功了,
## 还可以基于自己指定的上传路径来通过工具或者浏览器访问一下看看是否能够连接上文件
1、看用什么部署起来的,Apache,默认网站存放路径/var/www/html,系统日志存放路径
2、通过其他漏洞读取源码信息、敏感配置文件信息等来寻找路径
3、目录遍历漏洞
4、尝试报错,获取路径
5、看网站的的页面源码
6,上传文件的时候指定上传到哪里,
7,尝试目录爆破
8, 猜
目录遍历,目录扫描
## 你要把别人序列化好的文件进行反序列化进行利用,但是在序列化的过程中,被别人注入了攻击代码、魔
法函数之类的,当你反序列化的时候,这些攻击代码就被执行了
## 使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句一般为
asp;该解析漏洞也只能解析asp文件,而不能解析aspx文件。win7-win10中多为iis7.x-8.x了,版本比较高。
目录解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg
原理: 服务器默认会把.asp,.asa目录下的文件都解析成asp文件。
文件解析
形式:www.xxx.com/xx.asp;.jpg
原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。
解析文件类型
IIS6.0 默认的可执行文件除了asp还包含这三种 :
/test.asa
/test.cer
/test.cdx
修复方案
1.目前尚无微软官方的补丁,可以通过自己编写正则,阻止上传xx.asp;.jpg类型的文件名。
2.做好权限设置,限制用户创建文件夹。
漏洞原理
## Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。
比如test.php.owf.rar “.owf”和”.rar” 这两种后缀是apache不可识别解析,apache就会把
xx.php.owf.rar解析成php。
## 漏洞形式
www.xxxx.xxx.com/test.php.php123这个漏洞当时通杀了所有的apache搭建的网站。
## 其余配置问题导致漏洞
## (1)如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件
名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
## (2)如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即
使扩展名是 jpg,一样能以 php 方式执行。xx.jpg
其余配置问题导致漏洞
## (1)如果在 Apache 的 conf 里有这样一行配置 AddHandler php5-script .php 这时只要文件
名里包含.php 即使文件名是 test2.php.jpg 也会以 php 来执行。
## (2)如果在 Apache 的 conf 里有这样一行配置 AddType application/x-httpd-php .jpg 即
使扩展名是 jpg,一样能以 php 方式执行。
修复方案
1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入
2,用伪静态
大致原理:该漏洞与nginx、php版本无关,属于配置不当造成的解析漏洞。
## 当php.ini配置文件中开启了cgi.fix_pathinfo,该值默认为1,表示开启。看名字大概知道是处理路径用的配置。
## 比如我们上传了一个木马文件web.jpg,因为web.php不能上传,现在我们想执行这个web.jpg,可以如下路径访问
http://192.168.2.104/pikachu/web.jpg/aaa.php
## 而目标服务器上没有aaa.php文件,本来如果nginx.conf的配置没有问题的话,nginx会先去找下这个文件是否存在,如果存在,在找php解释器来解释执行代码,如果不存在,nginx会直接返回错误信息,说找不到该文件,但是如果nginx.conf配置不当会导致nginx把以’.php’结尾的文件交给fastcgi处理,也就是说首先nginx看到你路径中要找aaa.php,哦,原来是php文件,nginx不去找这个文件了,而是就直接交给了fastcgi,fastcgi又去找php解释器去处理该路径,而php开启了cgi.fix_pathinfo,那么php解释器处理这个路径的时候,发现没有aaa.php文件,那么他会找路径中上一层路径的文件作为aaa.php来运行,如是乎就找到了web.jpg,将web.jpg当作aaa.php来运行了,所以代码被执行,
修复方案
1.修改php.ini文件,将cgi.fix_pathinfo的值设置为0;
2.在Nginx配置文件中添加以下代码:
if ( $fastcgi_script_name ~ ..*/.*php ) {
return 403;
}
S7.5的漏洞与nginx的类似,都是由于php配置文件(php.ini文件)中,开启了cgi.fix_pathinfo,而这
并不是nginx或者iis7.5本身的漏洞,都是配置不当引起的。
(一) IIS
1、PUT漏洞
2、短文件名猜解
3、远程代码执行
4、解析漏洞
(二) Apache
1、解析漏洞
2、目录遍历
(三) Nginx
1、文件解析
2、目录遍历
3、CRLF注入
4、目录穿越
(四)Tomcat
1、远程代码执行
2、war后门文件部署
(五)jBoss
1、反序列化漏洞
2、war后门文件部署
(六)WebLogic
1、反序列化漏洞
3、任意文件上传
4、war后门文件部署
Windows提权
## 微软官网找公布的exp --- 查看哪些补丁没有打,找到对应漏洞利用工具
## 使用工具 ---- 很多专门提权的工具,比如我用过一个叫Pr的工具
## sc命令提权 --- 针对版本windows 7、8、03、08、12、16
## 利用 kali 的msf 提权
Linux提权
## 内核漏洞提权,比如老版本kali的内核漏洞
## 脏牛提权
## sudo 提权
## SUID提权
数据库提权
## mssql提权 ------ sqlTools 工具
## Oracle数据库 ------ 使用oracleshell工具
## MySQL提权
## UDF自身提权
## MOF漏洞提权
## MySQL启动项提权
mysql提权:udf、mof、启动项提权
mof提权:https://www.cnblogs.com/zzjdbk/p/12991468.html
udf提权:https://www.cnblogs.com/sfsec/p/15241860.html
## udf是mysql自带的拓展函数的功能模块,方便用户使用自定义函数来完成某些任务,只需要写一个dll文
件(动态链接库文件),上传到指定目录中,比如Mysql>5.1版本时,是放到mysql安装目录下面的一个叫
做/lib/plugin目录下。Mysql会自动加载这个dll文件和里面的代码。基于它来进行提权,就是我们的udf
提权
实践:
1.手工:
通过sql注入点,可以使用原生sql语句, SELECT 0x4d5a900003... INTO DUMPFILE
'C:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/lib_mysqludf_sys_64.dll';
目标主机目录
0x4d5a900003...是16进制编码的dll文件数据
语法:Select … into dumpfile ‘目录路径’
还可以使用sqlmap基于sql注入点来写入。
python sqlmap.py -u "http://192.168.178.130/sqli-labs/Less-1/?id=1" --file-
write="d:/tools/sqlmap/extra/cloak/lib_mysqludf_sys_64.dll" --file-
dest="C:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/lib_mysqludf_sys_64.dll"
2:工具
webshell大马也具备udf.dll提权功能。
## 在 linux 下不能使用,就是利用了c:/windows/system32/wbem/mof/目录下的nullevt.mof 文
件,每分钟都会在一个特定的时间去执行一次的特性
## redis未授权访问漏洞:通过上传公钥的方式将自己的公钥上传上去,以达到了免密登录的效果。
1、SpringBoot Actuator 未授权访问
2、Apache Spark未授权访问
3、Solr 未授权访问
4、Weblogic 未授权访问
5、Zabbix 未授权访问
6、Kibana 未授权访问漏洞
7、Elasticsearch 未授权访问漏洞
8、Druid未授权访问漏洞
9、FTP 未授权访问漏洞
10、JBoss未授权访问漏洞
## 密码修改
## 任意用户注册
## 积分修改
## 手机号无限注册
## 支付修改金额
## 修改积分
## 任意注册
## 任意密码修改
就是使得一个低权限的用户可以执行高权限用户的一些操作
分类:## 水平越权、垂直越权
水平越权:## 一个普通用户可以执行另一个普通用户的一些操作,查看的其信息或执行一些操作。
垂直越权:## 普通用户可以执行管理员用户的一些权限,进行增删改查
漏洞怎么测的:## 接受这个项目的时候,有一个普通用户登录的界面,有一个管理员用户的界面,在登陆的
时候,可以用普通用户的cookie登录管理员的cookie,可以执行一些管理员的操作。
## 公司会给我两个账号,一个普通一个管理员,管理员添加一条数据,普通用户是没有这个操作的,管理员
用户登录,添加数据抓个包,管理员用户的cookie替换为普通用户的cookie,这样就用普通用户的身份去发
送数据,以管理员的身份就可以成功添加用户。
命令执行漏洞就是服务器端没有对客户端用户输入的命令进行过滤,导致用户可以通过任意拼接系统命令,使
服务器端成功执行任意系统命令
命令执行漏洞主要是服务端没有对执行命令的函数做出过滤导致的。我们可通过编写一些系统函数来输入疑似
存在命令执行接口的地方,来检测是否此接口是否存在命令执行漏洞
s2命令执行漏洞,
命令执行原理:## 设计者在编写代码时没有做严格的安全控制,导致攻击者通过接口或相关参数提交“意想不
到”的命令,从而让后台进行执行,从而控制整个后台服务器 。
nmap看一个ip开放了什么端口你怎么输入
nmap -PA ip
namp工作原理
发送请求数据包,通过相应结果来判断是否开放或者存活
不能解析,因为传输过程中+或被处理为空格
解决办法:发送base64编码数据之前,先进行一次URL编码在发送。
甲方项目的安全巡检工作,是月检、每个月月底检查、主要是系统和数据库的巡检。
基线检查就是看哪里不合规、检查密码复杂度之类的
加固就是将不合规的地方改掉
1,查看进程,
2,看有没有异常连接,
3,查看ip地址的归属地,
4,在对进程查看其服务的名字,进一步确认是不是攻击,
5,确认之后再去杀掉进程,并检查是否留有后门,比如设置了开机启动项或者设置了定时任务。
1,查看异常连接
2,查看进程名字及服务
3,删除进程并查看系统配置
4,查找病毒注册表开机启动项
5,删除病毒源文件
6,删除一些后门程序之类的
自己凭亲身经验说就可以
windows应急
一、查看系统账号安全
1、查看服务器是否有弱口令、可疑账号、隐藏账号、克隆账号、远程管理端口是否对公网开放
2、win+r(eventwmr.msc)查看系统日志,查看管理员登录时间、用户名是否存在异常
二、检查异常端口、进程
1、netstat -ano 检查端口连接情况,是否有远程连接、可疑连接
2、tasklist | findstr "PID"根据pid定位进程
3、使用功能查杀工具
三、启动项检查、计划任务、服务检查
1、检查服务器是否有异常的启动项,msconfig看一下启动项是否有可以的启动
2、检查计划任务,查看计划任务属性,可以发现木马文件的路径
3、见擦汗服务自启动,services.msc注意服务状态和启动类型,检查是否有异常服务
四、检查系统相关信息
1、查看系统版本以及补丁信息 systeminfo
2、查找可疑目录及文件 是否有新建用户目录 分析最近打开分析可疑文件
(%UserProfile%\Recent)
五、自动化查杀
使用360 火绒剑 webshell后门可以使用d盾 河马等
六、日志分析
360星图日志分析工具 ELK分析平台
linux应急
1、检查用户及密码文件,查看是否存在多余帐号或陌生账号,
## 主要看一下帐号后面是否是 nologin,如果没有 nologin 就要注意;
2、查看用户登录情况,用户行为
## 通过 who 命令查看当前登录用户(tty 本地登陆 pts 远程登录)、
#3 通过w 命令查看系统信息,查看某一时刻用户的行为、
## 通过 uptime查看登陆多久、多少用户,负载;
3、 查看history历史命令
4、 令分析可疑端口
## 用 netstat -antlp| more命令分析可疑端口、IP、PID,查看下 pid 所对应的进程文件路径,运行
ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的pid 号);
5、分析可疑进程
## 使用ps命令,分析进程 ps aux | grep pid
6、检查当前系统运行级别,检查运行级别对应目录下有没有可疑文件
## 使用 vi /etc/inittab 查看系统当前运行级别,通过运行级别找到/etc/rc.d/rc[0~6].d对
应目录是否存在可疑文件;
7、查看定时任务
## 看一下crontab定时任务是否存在可疑启用脚本;
8、检查服务,排查可疑服务
## 使用chkconfig --list 查看是否存在可疑服务;
9、分析系统日志和web日志,判断是否存在攻击痕迹
## 通过grep awk命令分析/var/log/secure安全日志里面是否存在攻击痕迹;
10、用工具对系统进行查杀
## chkrootkit、rkhunter、Clamav 病毒后门查杀工具对 Linux 系统文件查杀;
11、如果有 Web 站点,可通过 D 盾、河马查杀工具进行查杀或者手工对代码按脚本木马关键字、关键涵数
(evel、system、shell_exec、exec、passthru system、popen)进行查杀Webshell 后门。
权限维持方法:
## 添加匿名用户
## 激活Guest用户
## shift后门
## 添加schtasks计划任务
## 添加启动项,服务
解决权限维持
## 及时删除,排查有无其他权限维持方法
内网渗透分为域渗透和工作组渗透
内网渗透基本步骤
Step1、信息收集 --- ## 基本信息,用户信息,网络信息,权限信息等
Step2、获取权限 --- ## 通过一些漏洞拿下一台主机的系统权限
Step3、横向移动 --- ## IPC + at/schtasks | IPC + sc | wmic 远程命令执行 | msf横向移动工具,Python脚本工具
Step4、权限维持 --- ## 添加匿名用户,激活Guest用户,添加schtasks计划任务,添加启动项,服务
Step5、清理痕迹 ---- ## 操作记录,历史记录等
如果属于内部网络,不能触网的主机还需要进行端口转发,建立隧道,创建代理等
端口转发:nc、netsh、lcx
代理:socks代理,regeorg+profixer,ew毒液
隧道:ngrok,frp ,Stowaway,DNS隧道,ICMP隧道
## 将内网主机的流量数据转发到被控制的主机上,然后利用
木马免杀:## 对php语言的一句话木马变形,研究了一些,基于语言特性可以实现免杀,比如:变量多层赋
值,eval函数中通过反引号和注释符号来进行干扰 /**123**/ ,变量赋值可以换行、一维、二维数组变
形、可变变量
ips:入侵防御系统
ids:入侵检测系统
IPS
IPS对web应用层进行防御,作用是防火墙一个弥补。(对sql注入xss等进行拦截),同时具备对一到七层进
行一个检测和防御,详细的和态势感知一样流量包,底层的ARP一些僵、木、蠕的流量检测都可以实现
缺点:误报率太高。经常会拦截正常的用户。
IDS
IDS只有入侵检测功能,不带防御。优点:进出的流量进入核心的交换机,它在某一个端口做一个镜像。把
internet进来的流量已复制的方式进入到IDS进行分析,也是一到七层进行一个详细分析 。它没有防御的功
能,不会拦截攻击,只能检测出由用户做决定
本机信息收集 ----- ## 网络配置,系统和软件信息,服务信息,进程列表,计划任务,用户,端口,补
丁,防火墙配置
权限查询 ----- ## 当前用户权限,指定用户权限
判断存不存在域 ------- ## ipconfig查询,查看系统详细信息,查询当前登录域及登录用户信息,判断
主域
探测域内存主机 ---- ## NetBIOS快速探测,ICMP协议探测,ARP协议探测等
1、基本信息收集
## 进程列表,版本,补丁,服务,任务,防护
2、用户信息收集
## 域用户,本地用户,用户权限,组信息…
3、网络信息收集
## 端口,环境,代理通道…
1.获取本机网络配置信息
2.操作系统和软件信息
3.查询本机服务信息
4.查询进程列表
5.查看启动程序信息
6.查看计划任务
7.查看主机开机时间
8.查询用户列表
9.列出或断开本地计算机与所连接的客户端之间的会话
10.查询端口列表
11.查看补丁列表
12.查询本机共享列表
13.查询路由表及所有可用接口的ARP缓存表
14.查询防火墙配置
15.查看代理配置情况
16.查询并开启远程连接服务
权限查询
1.查看当前权限
2.获取域SID
3.查询指定用户的详细信息
判断是否存在域
1.ipconfig查询
2.查看系统详细信息
3.查询当前登录域及登录用户信息
4.判断主域
执行 net time /domain ---- ## 该命令显示主域控制器的时间
执行 ipconfig /all ----- ## 当前主机如果是工作组中,则主DNS后缀为空。如果加入了域则主DNS为域名
执行 systeminfo ------- ## 工作组环境systeminfo查询的显示为WORKGROUP,域环境查询的域是域名
探测域内存活主机
1.NetBIOS快速探测
2.ICMP协议探测
3.ARP协议探测
## 了解,Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人称为CS。是渗透测试中不
可缺少的利器。
## 其拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆
绑,钓鱼等功能。
## 同时,Cobalt Strike还可以调用Mimikatz等其他知名工具,因此广受黑客喜爱
Cobalt Strike分为客户端和服务端可分布式操作可以协同作战
## 功能:
代理
远程vnc
屏幕截图
文件管理
端口扫描
生成无状态木马,
键盘记录
在线shellcode生成
看看能不能想办法恢复日志记录,备份恢复、使用工具来恢复,或者直接磁盘扇区物理恢复
## lsof(list open files)工具(是一个列出当前系统打开文件的工具)
## root 用户的身份运行lsof工具,具体实操不是我做的
工作内容:## 基线检查、安全加固方面的工作,基本都是通过公司的加固文档来操作的。
流程:## 等级备案、差距评估、等保整改、等保测评。
操作系统加固:## windows、linux、数据库加固,身份识别加固、配置加固
## 有组织、有特定目标、持续时间极长的新型攻击和威胁,国际上有的称之为 APT(Advanced Persistent Threat)攻击
## 高级持续性威胁(Advanced Persistent Threat)是指组织(特别是政府)或者小团体使用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式
判断是否存在域
执行 net time /domain ---- ## 该命令显示主域控制器的时间
执行 ipconfig /all ----- ## 当前主机如果是工作组中,则主DNS后缀为空。如果加入了域则主DNS为域名
执行 systeminfo ------- ## 工作组环境systeminfo查询的显示为WORKGROUP,域环境查询的域是域名
内网渗透基本步骤
Step1、信息收集 --- ## 基本信息,用户信息,网络信息,权限信息等
Step2、获取权限 --- ## 通过一些漏洞拿下一台主机的系统权限
Step3、横向移动 --- ## IPC + at/schtasks | IPC + sc | wmic 远程命令执行 | msf横向移动工具,Python脚本工具
Step4、权限维持 --- ## 添加匿名用户,激活Guest用户,添加schtasks计划任务,添加启动项,服务
Step5、清理痕迹 ---- ## 操作记录,历史记录等
如果属于内部网络,不能触网的主机还需要进行端口转发,建立隧道,创建代理等
端口转发:nc、netsh、lcx
代理:socks代理,regeorg+profixer,ew毒液
隧道:ngrok,frp ,Stowaway,DNS隧道,ICMP隧道