redis&mysql攻击面
不出网有什么方法,正向shell 方法除了reg之类的,还有什么?
正向反向代理
其实通俗易懂就是,正向代理就是攻击者主动去访问目标机器的shell,反向代理就是由目标机将shell主动访问到攻击机。
Cobaltstrike
Beacon TCP
目标关闭防火墙,在dc内有一台主机可以出网,可以在原有的出网的主机正向带出来,利用一下CSDN的利用截图
生成分段传输Stageless的exe,后在目标主机进行执行。出网主机执行
portscan 10.211.55.3 4444 none 64
connect 10.211.55.3 4444
后可以正向上线
listen中继
这个就类似于ew的中转,原理是一样的。
Frp/Iptables
Frp基本算是比较常用的了。这种方法依然还是需要和不出网机器在域内或者局域网内有一台机器,进行反弹正向shell。以下画图来表示思路。
根据这一个思路图,可以简化这个正向代理的流程为
实际演示一下,按照上图的流程图进行演示。假设目标机器有一个webshell,然而攻击机没办法直接访问,想正向访问,那假设有一个同网内的出网机器,那么可以考虑转发shell端口做到正向访问
中转机器和目标机器在网内
!
在目标机器上有一个shell,但是机器不出网没办法访问,使用中转机器将目标端口代出来
设置转发规则,使用中转IP链接
Redis攻击面
Redis介绍
Redis是一个使用C编写的、基于内存的键值对存储数据库。由于数据被存储在内存中,所以拥有极快的数据存储和读取速度,很多应用场合都用到了Redis数据库。
Redis攻击方法
未授权访问
一般在配置错误的情况下,Redis大部分都会直接暴露在公网之上,同时Redis安装是没有密码的,所以任何人在未授权的情况下都可以进行访问。余下的方法都是通过SSRF配合来进行未授权访问。
这里采用一个dvwa一个现成的SSRF的环境,来模拟同目标机器上有Redis,同时作为管理员权限在运行的Redis进行攻击。
存储的序列化数据利用
Redis会存储序列化后的数据,Python相关的站点就可能将经过Pickle、Yaml序列化后的数据存储在 Redis 里。还有一些缓存的库可能就直接选择序列化后存入 Redis 中。 当Redis存在未授权攻击时,攻击者可以通过直接修改 Redis 中序列化后的数据,改为恶意payload。等待相关的程序读取该数据并反序列化该数据,反序列化时就会造成命令执行。
使用绝对路径写webshell
实际上,这个需要配合Redis一些命令来做比如dict,也可以通过config命令向固定路径的文件写入内容。不过这种核心前提,必须是Redis在root用户上运行,不过大多数都是用Redis的时候使用root权限运行的,
写SSH公钥
这个利用前提,必须是Redis是由root权限运行的。如果.ssh目录存在(如果不存在可以尝试创建),可以尝试写入/.ssh/authorized_keys。同时需要关闭保护模式。
Mysql攻击面
Mysql介绍
MySQL是一个关系型数据库管理系统,MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
Mysql攻击方法
客户端任意文件读取
需要客户端连接时开启 –enable-local-infile。其实这个就是读取本地的文件,利用mysql读取出来。同时借用csdn已经实测的截图
利用SSRF 攻击
主要是利用Gopher协议进行对目标机器的MYSQL进行攻击。并且要伪造客户端,Gopher基本协议格式。
URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
服务端文件读写
这个和客户端任意文件读取错误其实差不多,都是由服务端错误配置导致的。一般来说Mysql的文件读取有严格的限制,在安全的配置情况下,读取服务器端文件时,处于数据库目录或可被所有人读取。
CVE-2016-6662
这一类远程执行的提权漏洞其实在mysql蛮多的,挺多都大同小异,例如udf提权这一类的。基本都是利用载入外来的so文件(恶意库),这个漏洞就是利用默认安装包里自带了一个mysqld_safe的脚本用来启动mysql的服务进程,这个进程能够在启动mysql server之前预加载共享库文件,从而让攻击者有机会载入恶意库文件。
AMSI怎么绕过
AMSI
AMSI全称为“ANTI MALWARE SCAN INTERFACE”,即反恶意软件扫描接口。一般运用于powershell。运作情况如下
绕过方法
基于字符串验证
这种验证方式其实在很多CTF的情况都遇到过,这种绕过方法比较单一,例如将屏蔽字符拆开分开进行读取,使用bast64编码。
比如我刚刚运作的就可以尝试使用拼接绕过
禁用反病毒API
正如我刚刚的情况所示,我运行的内容被防病毒软件阻止,在powershell中,脚本检查会调用起防病毒API。绕过首先将一些经过XOR异或混淆的Base16编码文本转换为C#脚本,该脚本会禁用某些Microsoft反病毒API。网上给了这两个脚本,我实在是没看懂
[DllImport("kernel32")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
[DllImport("kernel32")]
public static extern IntPtr LoadLibrary(string name);
[DllImport("kernel32")]
public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint
flNewProtect, out uint lpflOldProtect);
[DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]
static extern void MoveMemory(IntPtr dest, IntPtr src, int size);
public static string v4bad81(string strIn)
{
string rbf4534 = "a25baab";
string m941db = String.Empty;
for (int i = 0; i < strIn.Length; i += 2)
{
byte b72323 = Convert.ToByte(strIn.Substring(i, 2), 16);
m941db += (char)(b72323 ^ rbf4534[(i / 2) % rbf4534.Length]);
}
return m941db;
}
有任何意见请评价。