首先信息收集对收集的信息进行好的记录与分析,目录爆破发现文件管理,访问目录,尝试操作,分析cms的漏洞,目录猜解,查看文件利用curl编码解决报错,可以查看到passwd文件然后尝试查看shadow文件,利用john进行密码破解,ssh远程登录,sudo -l查看当前用户都有哪些权限,查看后发现是all,直接创建新的bash或者sh(推荐bash好用真正的权限)随后就是root权限,该靶机的难度在于对目录的猜解
nmap -sn 192.168.20.0/24 //扫描网段IP发现靶机

nmap --min-rate 10000 -p- 192.168.20.21 //扫描主机开放端口

nmap -sT -sC -sV -O -p22,21,80,3306 192.168.20.21 //扫描端口开放的服务

nmap --script=vuln -p21,22,80,3306 192.168.20.21 //默认脚本扫描,发现一个文件管理系统,并且有开放的ftp文件传输协议

分析协议的优先级,服务的优先级选择一个端口下手,以ftp先开始
尝试登录ftp使用匿名用户,匿名用户登录通常是不需要密码的

账户名anonymous,然后密码输入回车

登陆后救赎先就是查看匿名用户所拥有的文件列表使用ls命令进行查看,将查看的文件全部都保存到 自己的主机上
使用ls查看文件列表,使用cd切换目录使用mget命令将文件保存到本机的当前文件夹下

使用cat命令分别查看三个文件的内容是什么
在这里,第一个文件内容中他的命名方式有些奇怪,需要注意的一个点是他用的并不是正常的英文字母,而是采用了广泛的leetspeack进行了编码,这种方式是为了改变命名冲突的问题https://en.wikipedia.org/wiki/Leet

所以下面所显示的内容就是WIRES.inc

查看02.txt文件发现有两个字符出串,但是类似于加密

用hash-identifier这个去识别一下是哪种加密方式 hash-identifier 01ec2d8fc11c493b25029fb1f47f39ce

对第二个字符串进行识别,但是观察两个的格式肯定是不一样的,猜测第二个是base64编码,进行解密,echo作用是防止发生断开

解密上面的md5的字符串但是没有实际结果

查看其他两个文件:

还有一个

但是文字是翻转的,用工具翻转

提示信息不要在这里做,记住信息

换其他的方向,因为ftp没有收集到可以用的信息
访问80端口,是一个默认的界面,但是上面提示有文件系统,所以这里可能有其他的信息

尝试进行目录爆破
gobuster dir -u http://192.168.20.21 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

但是结果只有这一个看以看,经过一顿思考操作这个没什么用,但是还是要记笔记收集起来万一后面会用到的

既然是cms那就搜一下这个cms有没有什么漏洞
使用kali默认的工具,可以看到是有的:searchsploit cuppa cms

把这个文件加载到本机当前的路径,查看文件的详细内容
searchsploit cuppa cms -m 25971



可以看到两个路径,浏览器尝试访问,可以看到有显示信息
说明一下,url路径问题,大多数情况下在网站之中都不会将文件放在他的最初的默认下面,比如不太会放在cuppa下面,所以尝试访问的时候去找我们已经访问到的路径进行拼接,从低级目录到高级目录的拼接,所以会成为下面这样可以访问

路径访问既然有显示,接下来就是我们要看到这个文件的里面是什么内容,使用curl去解码
html2text是为了是使结果展现的更清晰,根据情况使用,没有html2text可以根据报错提示直接下载
可以到这个文件是可以成功访问的
curl --data-urlencode urlConfig=../../../../../../../../../etc/passwd http://192.168.20.21/administrator/alerts/alertConfigField.php | html2text

既然我们刚刚访问到了passwd这个文件,那么就可以尝试访问一下shadow文件,这两个文件的区别在于前者是每个用户都可以看的,存放的也只是普通用户的密码,但是shadow这个文件下面所存放的是系统用户的信息,是否能访问看网站的安全性
可以看到执行命令后出现两个很长的加密密码,这就是需要进行破解的地方(部分图片)
curl --data-urlencode urlConfig=../../../../../../../../../etc/shadow http://192.168.20.21/administrator/alerts/alertConfigField.php


接下来破解这两个密码,把这两个密码复制,使用vim编辑器生成文件hash(随意)
john hash
这个截图是因为已经破解过了,看提示展示某个文件就行

可以看到两个密码一个是computer的一个是www-data的,肯定是用计算机的去尝试ssh登录了(前面的是用户名后面的是密码,这是靶机真实情况万一有,俩都试试,但是先试一个,看看有没有什么特权,而不是试试能不能登录)
john --show hash

登录成功,初级shell拿到,接下来就是提权

查看当前用户信息

查看当前用户sudo的权限是什么样的
sudo -l //标记位置为所有权限,那就是这个用户可以直接提权到root

使用sudo /bin/bash 或者 sudo /bin/sh都可以执行此处的提权,本意就是创建一个新的进程?然后将这个权限是执行的sudo,又因为当前的这个用户是ALL权限,所以直接是root(我也有点这个原理上的疑惑,求证后会更改)_


最后切换到root下,截一张大图这里

我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
在我让另一个人重做我的前端UI之前,我的Rails应用程序运行平稳。我已经尝试解决此错误3天了。这是错误:Nosuchfileordirectory-identifyExtractedsource(aroundline#59):575859606162@post=Post.find(params[:id])authorize@postif@post.update_attributes(post_params)flash[:notice]="Postwasupdated."redirect_to[@topic,@post]else{"utf8"=>"✓","_method"=>"patc
我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│ ├──dbconfig.rb│ ├──functions.rb│ └──init.rb├──hidden│ └──Rakefile├──lib│ ├──admin.rb│ ├──api.rb│ ├──indexer.rb│ ├──init.rb│ └──magnet.rb├──models│ ├──init.rb│ ├──invite.rb│ ├─
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
我正在使用Rails3.2.2并希望递归加载某个目录中的所有代码。例如:[Railsroot]/lib/my_lib/my_lib.rb[Railsroot]/lib/my_lib/subdir/support_file_00.rb[Railsroot]/lib/my_lib/subdir/support_file_01.rb...基于谷歌搜索,我试过:config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**"]config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**/"
我是Ruby的新手,我正在尝试以如下方式打开文件:#!/usr/bin/envrubydata_file='~/path/to/file.txt'file=File.open(data_file,'r')但是我得到“没有这样的文件或目录”(该文件确实存在于该目录中)。如果我将该文件路径作为命令行参数,它会起作用,例如:#!/usr/bin/envrubyfile=File.open(ARGV[0],'r')然后从命令行运行,如:rubyscript.cgi~/path/to/file.txt关于如何让它以第一种方式工作的任何想法? 最佳答案
这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post
我对RoR有点陌生,我想要一个结构化的目录,因为项目可能会变大我不想让所有的Controller直接进入controllers目录。我想要一些东西app/controllers/application_controller.rbgroupa/athing_controller.rbathing2_controller.rbgroupb/bthing_controller.rb然而,当我在routes.rb中放置以下内容时:get'athing',:to=>"groupa/athing#index"我在localhost:3000/athing/上收到以下错误:superclassmis
我一直在尝试使用简单的递归方法在Ruby中为一个更大的程序的一部分实现目录遍历。但是我发现Dir.foreach不包括其中的目录。我怎样才能列出它们?代码:defwalk(start)Dir.foreach(start)do|x|ifx=="."orx==".."nextelsifFile.directory?(x)walk(x)elseputsxendendend 最佳答案 问题是每次递归,你传递给File.directory?的路径isno只是实体(文件或目录)名称;所有上下文都丢失了。所以说你进入one/two/three/检