VulnHub-pWnOS: 2.0-靶机渗透学习
2020-12-27 17:40:21 Author: www.freebuf.com(查看原文) 阅读量:126 收藏

靶机地址:https://www.vulnhub.com/entry/pwnos-20-pre-release,34/

靶机难度:中级(CTF

靶机发布日期:201174

靶机描述:pWnOS v2.0是一个Virutal机器映像,它托管一个服务器以进行实践渗透测试。它将测试您利用服务器的能力,并包含多个达到目标(根)的入口点。它是为与WMWare Workstation 7.0一起使用而设计的,但也可以与大多数其他虚拟机软件一起使用。

目标:得到root权限&找到flag.txt

作者:DXR嗯嗯呐

配置虚拟机

靶机规定了IP、网关、子网掩码,需要修改攻击者的地址,才能访问。

1609056885_5fe84275ee1308a8e6e3a.png!small?1609056884952

auto eth0

iface eth0 inet static

#配置eth0使用默认的静态地址

address 10.10.10.101

#配置eth0的IP地址

netmask 255.255.255.0

#配置eth0的子网掩码

gateway 10.10.10.15

#配置当前主机的默认网关

1609056902_5fe842862d47117ba61c8.png!small?1609056901112

启动网卡,修改IP成功

1609056906_5fe8428a96ea5c89877f0.png!small?1609056905799

如果你想你的物理机连接虚拟机,修改一下网卡 VMware Virtual Ethernet Adapter for VMnet8 的信息即可

1609058195_5fe8479324ece2e2ea428.png!small?1609058194125

信息收集

上面说了靶机的地址为10.10.10.100,现在nmap扫描一下看看

1609056954_5fe842baa43a49596eb47.png!small?1609056955822

nmap扫描端口信息

1609056924_5fe8429c9f1f5a54121b8.png!small?1609056938577

22 SSH

80 http

访问80端口,在前台界面获得一个邮箱,记下来

[email protected]

1609056937_5fe842a94d9bb080919e6.png!small?1609056938579

nikto扫描找到很多信息,这是一个登陆界面

1609056956_5fe842bc24f852a54289e.png!small?1609056955822

利用mysql LOCAL_INFILE 函数getshell

访问这个php,是个登陆界面,看一下有没有sql注入

1609056951_5fe842b7e273d2ffd38c5.png!small?1609056955821

email参数存在sql注入

1609056962_5fe842c23f28502b7d963.png!small?1609056961386

看一下可不可以直接使用sqlmap将反弹shell写入靶机

1609056975_5fe842cf06309cefd994d.png!small?1609056974129

执行sqlmap命令,通过mysql的LOCAL_INFILE 函数写入木马

sqlmap -r 2.txt --batch  --file-write /tmp/shell.php --file-dest /var/www/shell1.php

1609056986_5fe842daed3e90820ce05.png!small?1609056986214

1609057001_5fe842e9756df6638c5de.png!small?1609057000309

配置msf,获得shell

1609057007_5fe842efbea8427055f1e.png!small?1609057006879

1609057013_5fe842f5a1b1def95f4fd.png!small?1609057012505

利用文件上传getshell

我们这里采用其他思路获得shell

登陆界面

1609057210_5fe843ba0d5b0e31b62f9.png!small?1609057208943

sqlmap测试email参数存在注入

1609057214_5fe843beb163a07297efa.png!small?1609057213629

在ch16数据库存在users表,找到了[email protected]密码

sqlmap -r sqlmap.txt --batch -D ch16 -T users --dump

1609057221_5fe843c5531351737a46b.png!small?1609057220297

MD5解密

获得账号密码[email protected]/killerbeesareflying

1609057238_5fe843d69f56370a7527d.png!small?1609057237627

登陆没获得有用信息

1609057246_5fe843de844d576f294b1.png!small?1609057245434

dirb扫描发现blog目录

1609057251_5fe843e39ce310e737898.png!small?1609057250583

查看网页源代码发现靶机使用的是Simple PHP Blog 0.4.0

百度介绍

1609057258_5fe843ea9025a6fe984b0.png!small?1609057257413

1609057284_5fe84404c527b58c10945.png!small?1609057283766

看一下这个程序存在一个远程代码漏洞

1609057291_5fe8440b2a8cbf63b11c2.png!small?1609057290044

配置msf

1609057295_5fe8440f8cb6a12e4faaf.png!small?1609057294592

1609057305_5fe8441953f2b8b7ecf59.png!small?1609057304219

启动,没有获得shell,但是创建了一个账号

1609057312_5fe8442023e8834883f84.png!small?1609057311187

RG5Bqr/DHmsZA

登陆找到了一个图片上传点,上传一个木马

1609057320_5fe84428a52042e73ee1b.png!small?1609057319562

在之前dirb扫描的时候,我们发现过一个图片目录,看一下是不是上传这里了

1609057326_5fe8442eb982e874232ca.png!small?1609057325668

1609057337_5fe84439c1e2572877909.png!small?1609057336724

连个过滤都没有,可能是靶机太老了,毕竟是11年的

找到木马的路径http://10.10.10.100/blog/images/shell.php,连接木马,获得shell

1609057345_5fe8444128d90a77ded36.png!small?1609057344065

UDF提权

看mysql程序是root用户启动

1609057364_5fe8445437c44f62c5f20.png!small?1609057363143

没有没配置文件,记录了mysql的用户密码

在/var/www目录下找到

1609057376_5fe844605b425bc9fe9b3.png!small?1609057375252

但是登陆失败

又在/var目录下找到

1609057383_5fe844676c1c7b7456bb7.png!small?1609057382301

登陆mysql

1609057388_5fe8446c5e586ea40d7c0.png!small?1609057387393

因为前面都可以将文件写入/var/www目录了,应该可以UDF提权

show global variables like 'secure%';

  • 当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出文件,此时无法提权
  • 当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出文件只能发生在 /tmp/ 目录下,此时也无法提权
  • 当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出文件做限制,此时可提权
  • 查看mysql框架

1609057432_5fe84498ef5c6a95084ae.png!small?1609057431876

查看mysql框架

1609057473_5fe844c1d23715af3414a.png!small?1609057472749

在msf中找到合适的udf文件

1609057477_5fe844c5dd9a8fc8f8208.png!small?1609057476888

将文件上传到靶机上

1609057481_5fe844c9cdba5918254c9.png!small?16090574809331609057486_5fe844cee9d138fccd1b9.png!small?1609057485896

查看mysql数据库plugin目录位置

1609057502_5fe844de35e61cca03300.png!small?1609057501074

随便进入一个库,创建表,将文件内容写到表中

将表中数据,写到plugin目录,自定义一个文件名,并创建sys_eval函数

1609057523_5fe844f38ad8e2c1feb89.png!small?1609057541938

使用sys_eveal函数执行命令,获得root权限

1609057531_5fe844fb2f7080021b8bf.png!small?1609057545669

打算获得一个root权限的交互式界面,给find命令赋root的sid权限,并执行find命令,获得一个拥有sid root权限

1609057536_5fe84500457030d90b3c3.png!small?1609057545665

完成!!!

提权的方法就很多了,这里使用的是UDF提权,其他的方法就不测试了,有兴趣的同学可以试一下。总体来说这个靶机比较老了,我做的方法可能就和靶机设计的初衷不太一致了,不过也是学到了很多,现在靶机做的越来越顺了,高兴。

总结

  • 1、使用nikto找到login.php,登陆界面,使用sqlmap对登陆参数测试,发现email参数存在注入。
  • 2、直接使用sqlmap利用mysql的local_infile函数上传木马,获得shell;或者利用simple PHP Blog 0.4.0漏洞,创建一个账号,在利用文件上传漏洞,上面木马,获得shell。
  • 3、利用mysql数据库程序为root用户启动,利用mysql的udf漏洞提权,获得root用户。

文章来源: https://www.freebuf.com/articles/web/258950.html
如有侵权请联系:admin#unsafe.sh