21. CTF综合靶机渗透(十四)
靶机说明:
I created this machine to help others learn some basic CTF hacking strategies and some tools. I aimed this machine to be very similar in difficulty to those I was breaking on the OSCP.
This is a boot-to-root machine will not require any guest interaction.
There are two designed methods for privilege escalation.
- 23/09/2015 == v1.0.1
- 22/09/2015 == v1.0
If you are having issues with VirtualBox, try the following:
- Downloaded LordOfTheRoot_1.0.1.ova (confirmed file hash)
- Downloaded and installed VMWare ovftool.
- Converted the OVA to OVF using ovftool.
Modified the OVF using text editor, and did the following:
replaced all references to "ElementName" with "Caption" replaced the single reference to "vmware.sata.ahci" with "AHCI"
Saved the OVF. +Deleted the .mf (Manifest) file. If you don't you get an error when importing, saying the SHA doesn't match for the OVF (I also tried modifying the hash, but no luck).
- Try import the OVF file, and it should work fine.
靶机渗透:
本次依然采用kali+windows10来作为攻击机进行渗透,
我把靶机用导入到VM虚拟机,并且都在局域网内,攻击机的IP
为 192.168.0.109
我们用nmap开路,先寻找同一局域网内靶机IP:
我们找到靶机IP地址为:192.168.0.108
我们用nmap对靶机进行更深的信息探测:
只有22端口开启,运行的是OpenSSH 6.6.lpl服务
我们尝试链接22端口:
页面上有两个提示:" Knock Friend To Enter " 和 " Easy as 1,2,3 "
完全没有头绪好吧,Google了一下,了解这是Port Knocking的技术
端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击。
端口试探类似于一次秘密握手协议,比如一种最基本的方式:发送一定序列的UDP、TCP数据包。当运行在主机上的daemon程序捕捉到数据包以后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过。
由于对外的Linux服务器通过限制IP地址的方式来控制访问,因此可以利用这种端口试探方式来进行防火墙对于访问IP地址的控制。
(参考链接:http://en.wikipedia.org/wiki/Port_knocking)
在学习了这个概念后,我尝试用nmap命令来对1,2,3进行端口试探:
- 注意:
- -sV --->探测开放端口以确定服务版本信息。
- -Pn --->将所有主机视为在线或禁用ping。
- -r ---->连续扫描端口不随机化.
我们再次使用nmap来查明端口探测是否打开了其他端口:
果然,再次查看的话靶机开放了1337端口,是Apache服务,我们尝试访问:
查看源代码,发现没有什么可以利用的地方...
我们用dirb扫描一波目录结构:
看起来只有/images目录:
我们查看robots.txt:
我们查看源代码:
发现有一串base64的编码:
THprM09ETTBOVEl4TUM5cGJtUmxlQzV3YUhBPSBDbG9zZXIh
我们尝试解码:
Lzk3ODM0NTIxMC9pbmRleC5waHA= Closer!
这串字符的前半部分Lzk3ODM0NTIxMC9pbmRleC5waHA=也像是base64编码,
继续解码:
/978345210/index.php 是一个php页面,我们访问:
是一个登陆页面,依然没有验证码,我们尝试sqlmap来跑一跑注入:
hahaha,果然还是有点东西的,我们对Webapp这个数据库进行探测表:
我们对这个Users表进行字段探测:
我们尝试爆出用户名跟密码:
成功得到用户名跟密码:
- gimli:AndMyAxe
- legolas:AndMyBow
- aragorn:AndMySword
- frodo:iwilltakethering
- smeagol:MyPreciousR00t
我们在那个登录页面尝试登陆:
发现五个用户登陆全部跳转到了 http://192.168.0.108:1337/978345210/profile.php 这个页面
查看源代码:
也没什么发现...既然这个不是登陆的用户名跟密码,唯一还能用用户名跟密码
登陆的服务也就是ssh,我们尝试:
发现前四个用户登陆均会出现上述情况,只有smeagol这个用户可以登陆成功:
反正登进来就行,下一步就是提升权限,获取root目录下的信息,当然linux提权的
第一步就是系统枚举,这里我Google了一下,发现有个博客,讲的是手动检查:
https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/
同时也分享两个脚本文件:
- unix-privesc-check:http://pentestmonkey.net/tools/audit/unix-privesc-check
- linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py
这两个程序不止细致地检查了非常多的配置问题,更让人感动地列出了所有可写文件。
基本上可以说他们的检查是足够全面的。
我们下载脚本,并且在靶机上执行:
[*]查找相关权限升级漏洞…
注意:依赖于这个系统上未检测到的编译/脚本语言的漏洞被标记为“**”,但仍然应该被测试!
下面的开发在成功概率上排名更高,因为该脚本检测到相关的运行进程、OS或已安装文件系统。
- MySQL 4 .x/5用户定义函数本地权限升级漏洞利用
下面的漏洞适用于这个内核版本,也应该进行调查。
-内核IA32 SysCALL仿真特权升级
SeNePoST本地特权升级(HTTP://www-dab-dB.COM/Reavigs/1933)语言= Ruby**
- CasySysAdmin管理以root漏洞2(32和64位){ Twitter -Dig.B.COM/Realths/15944 }语言=C
-对根利用的CAPYSyssAdmin
- MySQL 4 .x/5用户定义函数本地权限升级漏洞利用
-开放时间能力文件
-开放时间能力文件FielsNSCABABLE()-特权升级脆弱性〉HTTP//www.
在最后,可以看到可能的漏洞列表,其中提到了MYSQL的本地提权,我感觉可以试一试。
这是作为超级用户运行的进程或数据包,我们发现了下图:
果然mysql是以root用户身份运行,我们再仔细检查一下关于mysql:
证实了我们的猜想,我们可以使用mysql本地提权漏洞,但是我们需要MYSQL的root密码才能使用该
漏洞,我们用sqlmap对mysql数据库进行探测:
...
我们爆破User,Password的值:
成功得到root的密码:darkshadow
我们尝试搜索一下mysql 4.x/5.0的漏洞exp:
我们使用:https://www.exploit-db.com/exploits/1518/
如何利用MYSQL4.x/5.0这里讲的很清楚:
https://blog.csdn.net/nixawk/article/details/52988147
我们在本地kali机器上编译exp : 1518.c :
kali的gcc编译不给力啊,我找了一台centos7来编译gcc
编译生成1518.so,我们在靶机上用wget下载到/home/smeagol/
上面我们用sqlmap获得了数据库的账号跟密码 :root/darkshadow
现在我们以root的身份登陆mysql数据库:
选择要使用的mysql数据库,并且创建一个新表myexploit来存储要利用的exp:
我们利用load_file()将已经编译过后的1518.so插入表中:
我们利用dumpfile()将表中的内容输出到 /usr/lib/mysql/plugin 中方便利用:
创建一个名为 " do_system "的MYSQL函数,并让他使用1518.so:
检测创建的函数是否存在:
指定我们要运行的命令,如上所述将作为mysqld用户运行,即“root”。
在这个例子中,我们只输出id命令的结果 ,以确认我们以root身份运行。
现在我们切换回shell提示符。
最后,让我们读取/ tmp / out的内容,它应该是先前运行的id命令的结果 。
优秀!所以我们的漏洞利用工作,我们可以将命令作为“root”运行。在这个阶段,我们
可以只更改上一个命令来列出/ root /目录的内容,看看是否有一个flag文件,然后cat
它的内容。但我仍然想要一个合适的...正确的根壳。
经过一些谷歌搜索,我发现了一个很简单的方法,按照这篇文章。这个细节使用了我们
已经使用的相同漏洞利用,但后来使用了一些简单的C代码,启动 /bin/bash,编译它,
然后最后给它SetUID属性。因此,当我们将其作为正常使用运行时,它会启动一个shell
(/ bin / bash),但以root身份运行。
首先,我们创建名为rootshell.c的C代码,它只是启动 /bin/bash。
然后,回到MySQL数据库,我们通过改变先前创建的ls命令来编译它 :
然后我们设置SetUID属性。
完成!所以我们现在有了“rootshell”二进制文件。退出MySQL,然后运行它。
我们现在是root ,快速找到flag文件,并查看它的内容。
21. CTF综合靶机渗透(十四)的更多相关文章
- 22. CTF综合靶机渗透(十五)
靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...
- 17. CTF综合靶机渗透(十)
靶机描述:欢迎来到超级马里奥主机!这个虚拟机是对真实世界场景场景的模拟.目标是在VM中找到2个标志.根是不够的(对不起!)VM可以以多种方式开发,但请记住枚举是关键.挑战的程度是中等的.感谢VDBAN ...
- 23. CTF综合靶机渗透(十六)
靶机说明: VM Name: JIS-CTF : VulnUpload Difficulty: Beginner Description: There are five flags on this m ...
- 19. CTF综合靶机渗透(十二)
靶机说明: 靶机主题来自美剧<黑客军团> 本次靶机有三个flag,难度在初级到中级,非常适合新手训练学习,不需要逆向技术,目标就是找到三个key,并且拿到主机root权限. 渗透过程: 本 ...
- 18. CTF综合靶机渗透(十一)
靶机描述: SkyDog Con CTF 2016 - Catch Me If You Can 难度:初学者/中级 说明:CTF是虚拟机,在虚拟箱中工作效果最好.下载OVA文件打开虚拟框,然后选择文件 ...
- 11. CTF综合靶机渗透(四)
运行环境 Virtualbox (二选一) Vnware Workstation player 通关提示 Enumeration is key Try Harder Look in front of ...
- 20. CTF综合靶机渗透(十三)
靶机说明: Wellcome to "PwnLab: init", my first Boot2Root virtual machine. Meant to be easy, I ...
- 15. CTF综合靶机渗透(八)
VM Name: BlackMarket VM Description: BlackMarket VM presented at Brisbane SecTalks BNE0x1B (28th Ses ...
- 14. CTF综合靶机渗透(七)
靶机说明 NinevehV0.3.7z是一个难度为初级到中级的BooT2Root/CTF挑战. VM虚机配置有静态IP地址(192.168.0.150) 目标 Boot to root:获得root权 ...
随机推荐
- android电池(四):电池 电量计(MAX17040)驱动分析篇【转】
本文转载自:http://blog.csdn.net/xubin341719/article/details/8969369 电池电量计,库仑计,用max17040这颗电量IC去计量电池电量,这种方法 ...
- Linux Shell总结
Shell编程总结: 1.linux命令 2.位置变量 $0 $1 $# $? 3.条件测试 [ ] [[ ]] (( )) if case 4.循环for while 5.打印echo cat 6. ...
- [算法]旋转矩阵问题(Spiral Matrix)
题目一: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spir ...
- 在Treeview中节点的data属性中保存记录类型及其消除的办法
一.保存记录类型在data指针中: procedure TForm1.getheaditems(pp:TfrxBand;hnode:THeadTreeNode;var i:Integer;var j: ...
- Hadoop- MR的shuffle过程
step1 input InputFormat读取数据,将数据转换成<key ,value>对,设置FileInputFormat,默认是文本格式(TextInputFormat) ste ...
- Jquery + css 日期控件用法实例.zip
/*==============================================================================** Filename:common.j ...
- Codeforces 245H Queries for Number of Palindromes:区间dp
题目链接:http://codeforces.com/problemset/problem/245/H 题意: 给你一个字符串s. 然后有t个询问,每个询问给出x,y,问你区间[x,y]中的回文子串的 ...
- Javascript 模块化编程 --RequireJs
什么是模块化 模块就是实现特定功能的一组方法,常见的几种js写法 原始写法 function A() { } function B() { } 上面函数A()和B()组成一个模块,使用的时候直接调用就 ...
- HTML5 学习记录——2
20150826 1.声明文档类型 <!DOCTYPE> 声明HTML是用什么版本写的. 常用声明; 2.HYML头部元素 <head> <title> 定义 ...
- HashMap,Hashtable,TreeMap ,Map
package com.wzy.list; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterato ...