Hello,各位小伙伴大家好
这里是你们的小编Monster~
话说提升技术很好的一个方法,就是去通关各种靶机
上周通关了一个靶机Billu_b0x,从中学到了很多东西,因此赶紧记录下来。
大家来跟我一起看看吧~
实验拓扑:
靶机下载链接:https://download.vulnhub.com/billu/
一、信息收集
1、IP与端口收集
搭建好靶机环境后,由于在同一网段中,我们先使用namp来扫描一下本网段IP。
发现靶机IP地址为192.168.211.185:
对开放的端口进行扫描,发现开放了ssh和http服务:
2、目录扫描
从HTTP服务入手,我们先访问一下这个网站
使用dirb工具对网站目录进行扫描,发现了一系列目录:
我们来依次访问一下这些目录,看看都是些什么
http://192.168.211.185/add 一个上传界面:
http://192.168.211.185/c 空白页面
http://192.168.211.185/cgi-bin/ 禁止访问
http://192.168.211.185/images/ 一个图片目录
http://192.168.211.185/in phoinfo( )信息
http://192.168.211.185/index.php 首页登陆界面
http://192.168.211.185/panel 访问自动跳转到首页
http://192.168.211.185/show 空白页面
http://192.168.211.185/show 该页面提示传入参数
二、渗透测试
1、SQL注入
我们先来试试首页是否存在SQL注入,尝试输入1’ or 1=1 or ‘1:
提示登陆失败:
尝试输入1’ OR 1=1 OR '1等均失败。
换个思路,我们来看看前面发现的需要传入参数的test.php页面
想试试这里有没有文件包含漏洞,尝试输入?file=index.php,无反应
虽然前面使用str_replace( )函数将单引号全部过滤了,但是我们可以在输入pass时,输入一个 \ 符号,将uname逃逸出来。
例如我们输入123/123,这里的查询语句就是:
select * from auth where pass=‘123’ and uname=‘123’
输入pass=123\ uname= or 1=1 --+
or 1=1永真,就可以成功绕过,查询语句就成了:
select * from auth where pass=‘123\’ and uname=’ or 1=1 – ’
按以上方法输入:
2、文件上传
选择Show Users,我们可以查看用户及其头像信息:
访问http://192.168.211.185/uploaded_images/,可以看到头像文件保存目录:
如果我们可以上传一个webshell到这个目录,就可以拿下这个靶机了。
通过前面的test.php页面,我们来读取一下这个页面的源码:
3、代码分析
刚才从test.php页面我们成功读取到index页面的源码,我们现在挨个读取一下其他页面的代码,看看有没有有用信息。
再读取panel.php页面代码,会发现这里还有一个文件包含漏洞,并且对输入未作任何处理:
我们可以上传一个图片马,然后尝试利用这个漏洞执行。
4、文件包含漏洞
访问该图片,可以正常访问:
现在利用图片马,通过文件包含漏洞尝试执行phpinfo():
这里学习了两个函数,顺便记录一下:
(1)file_get_contents(),用于将文件的内容读入到一个字符串中:
(2)scandir( ) 函数返回指定目录中的文件和目录的数组。
5、生成一句话木马
言归正传,我们现在利用我们的图片马,写入一个webshell:
可能是这个目录没有写入权限,我们往uploaded_images/写入:
依然生成失败:
6、系统提权
中国菜刀连接成功后,打开虚拟终端查看权限:
接下来我们来提权到root权限。
回到kali,搜索一下Ubuntu 12.04.5 ,找到可利用的exp:
将exp拷贝出来并进行编译:
进入shell模式,运行刚才上传的exp,成功提权至root :
完毕~~
其实还有一种方法,前面通过读取c.php的源码,发现了数据库的账号/密码:
通过dirb也没能发现数据库登陆页面:
其实是有的,使用强大一点的字典就能找出来:
数据库中可以查询到登陆界面的账号/密码,可以直接去登陆了:
好啦,这就是今天的全部内容了,大家都明白了吗?
peace!