DC-2 靶机渗透测试
DC-2 靶机渗透测试
冲冲冲,好好学习。
本靶机核心内容“
受限shell提权”,知识点在另一篇文章中总结归纳了。
攻击机:kali
靶 机:DC-2
准备:在使用前需要在操作机的hosts文件里添加靶机的ip和域名,访问靶机80端口时会自动转跳dc-2,不添加则无法访问172.66.66.132 dc-2
信息收集:nmap -sV -A 172.66.66.0/24

nmap -sV -p- 172.66.66.132

-A :探测操作系统
-sV :探测版本
-p- :探测0~65535端口开放情况
没有robots.txt文件,访问80端口看看并识别cms:


dirb扫一下目录,找找就发现了登录页面

发现登录页面,因为是wordpress的网页,想到cewl和wpscan。接着操作。
cewl是kali自带的一个字典生成文件,教程参考freebuf的文章 Kali Linux字典生成工具Cewl使用全指南
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会根据爬取内容的关键字生成一份字典,通过这种方式生成的字典可以作为cupp生成字典的补充。你可以把字典用到类似John the Ripper这样的密码破解工具中。
其实就是生成一个社工的密码文件,网站的某些特定的字符有时候可能会成为密码,用cewl提取一下出来。
默认方法
cewl http://www.ignitetechnologies.in/ #输入下列命令之后,爬虫会根据指定的URL和深度进行爬取,然后打印出可用于密码破解的字典: 保存字典文件
cewl http://www.ignitetechnologies.in/ -w dict.txt #为了方便大家记录,或者为将来的研究提供参考,Cewl可以将打印出的字典存储为文件。这里可以使用 -w参数 来将密码字典存储为text文件: 查看的时候就 cat 一下 如果你想生成指定长度的密码字典,你可以使用-m选项来设置:
cewl http://www.ignitetechnologies.in/ -m 9 #上述命令将生成长度至少为9位的密码,你可以从下图中看到,Cewl对目标网站进行了爬取,并打印出了长度至少为9位的密码: 从网站中获取Email
cewl http://www.ignitetechnologies.in/ -n -e #你可以使用-e选项来启用Email参数,并配合-n选项来隐藏工具在爬取网站过程中生成的密码字典: 计算网站字典中重复的单词数量:
cewl http://www.ignitetechnologies.in/ -c #如果你想要计算目标网站中某个词的重复出现次数,你可以使用-c选项来开启参数计算功能:
输入cewl http://dc-2/ -w dir.txt 把生成的密码保存在 dir.txt中,路径在/root,可以用cat dir.txt查看详情。
接着有了密码,缺用户名,刚好这是个wordpress的站点,可以用WPScan枚举用户名,输入:wpscan --url dc-2 -e -u

找到三个用户名 admin jerry tom
可以尝试爆破:wpscan --url http://dc-2 -e u -P dir.txt 枚举用户名,加上 -P 密码文件路径
也可新建文件保存用户名再爆破:
wpscan --url http://dc-2 -U users.txt -P dir.txt
爆破成功:

| Username: jerry, Password: adipiscing
| Username: tom, Password: parturient

出现search,输入flag,找到flag1 、flag2,并且,是否存在注入点?


flag2 提示有另一个入口,猜想 注入 、SSH登录 ,注入尝试失败,剩下SSH登录,ssh tom@172.66.66.132 -p 7744 密码parturient
只有tom账号密码可登录,但shell受限制大,较多命令无法执行。!
查看vi flag3.txt

Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes. 可怜的老汤姆老是追杰瑞。也许他应该为他造成的所有压力负责。 提示信息指向jerry 并且提示使用su
简单试了一下发现,当前tom用户能使用的命令:ls vi less scp(不完全),得知当前shell为 rbash

开始提权,针对rbash 提权,下面的操作是突破 rbash,整个bash出来。先知道一个函数BASH_CMDS[]挖个坑,其实我也不是很透彻,后面再补。
BASH_CMDS[a]=/bin/sh;a
/bin/bash
再添加环境变量:export PATH=$PATH:/bin 添加/bin是为了能够使用/bin 下的命令
(/bin里是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。)
需要再去理解PATH的含义,再su与sudo 的那个login shell的区别

export -p 列出当前shell中所有的环境变量,特别留意 PATH

看一下passwd文件,jerry是允许登录的

提权成功后,执行su jerry,adipiscing切换到jerry用户,cd ../ ,ls 看到了flag4.txt,cat一下

提示git 提权
查看当前用户下的sudo命令列表 sudo -l

看到 (root) NOPASSWD: /usr/bin/git ,git命令是切换到root用户且无需密码直接使用,(注意,直接sudo ,不指定用户名,默认切换至 root 用户)
提权原理:因为git显示的内容太多需要分页显示的话,默认调用more来显示,那么more和less一样,都可以通过命令行模式输入!/bin/bash进行提权
sudo git -p help
!/bin/bash


本靶机核心“受限shell提权”
路线:nmap-->御剑扫后台并访问-->cewl-->wpscan-->ssh登录-->rbash突破-->sudo git 提权root
cewl一个工具,根据目标网站的内容,生成一个特殊的社工密码文件,可用于后续爆破,缺个用户名,这时候如果目标站点是WordPress站点的话,就可以配合 Wpscan来获取用户名,再一起爆破。
WPScan一个WordPress站点扫描工具:(kali默认自带工具)
--url [wordpress url]直接开始扫描
--enumerate |-e [option(s)]枚举, option有
u 枚举用户名(默认从1-10),
p 枚举插件
vp只枚举有漏洞的插件
vt只枚举有漏洞的主题
tt列举所列图相关的文件 注意:没有指定选项是,
-e 默认为vt tt u vp 四个
--update使用前先更新
wpscan --url https://www.xxxxxxx.wiki/ --enumerate u扫描用户名爆破:
wpscan --url https://www.xxxxx.wiki/ -e u --wordlist 字典文件路径 1.针对WPScan防护措施 :用户名枚举--->不要把昵称用作用户名,用包含随机字符的名字作用户名,昵称用低频的; 防止爆破措施:禁止ip重复尝试登陆; 防止扫描主题插件timthumb文件:使用
Block Bad Queries (BBQ)插件
当拿到了账号密码,接下来有什么可以做的?
后台登录、SSH登录SSH远程登录命令格式:
ssh 客户端用户名@服务器ip例:ssh tom@172.66.66.132
ssh 客户端用户名@服务器ip -p 端口例:ssh tom@172.66.66.132 -p 7744
ssh 服务器ip如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。拿到一个陌生的
受限制的shell后,尽可能多的获取当前shell的信息,shell的类型,可用功能/命令
检查可用命令:
敲入一个字母,按两下TAB键补全,看能不能列出来文件/目录,如图都是可用的命令
检查有suid权限的命令,哪些是归属于root用户。
find / -perm -4000 -type f 2>/dev/null -exec ls -alh {} \;
find / -perm -u=s -type f 2>/dev/null -exec ls -alh {} \;查找可以使用的命令列表sudo
sudo -l,看能不能用我们的密码执行其他用户的权限命令检查有什么语言可以使用,python、php、ruby、expect、perl等,它们会在后面排上用场
检查重定向运算符是否可用,例如
|>>><>|>&&>检查转义字符和执行标记,如
;&'"({其中,(这个是shell执行标记
export命令用于设置或显示环境变量,在shell中执行程序时,shell会提供一组环境变量。export可增删改环境变量,供后续程序使用,但是export的效力仅限于本次登录操作(这里的 删 其实更贴切的描述是“暂时性禁用”,并不真的删除)格式:
export [-fnp][变量名称]=[变量设置值]例:export MYNE=7 //定义环境变量并赋值,export -p 列出当前shell中所有环境变量
git提权-p | --paginate这个-p的意思就是以分页的形式展示git的帮助信息,进入交互模式,可输入命令sudo git -p help
!/bin/bash
su 与 sudo 异同:在另一个笔记里,自己想,想不起来再去翻
echo $0 查看当前shell类型
DC-2 靶机渗透测试的更多相关文章
- DC-1 靶机渗透测试
DC-1靶机渗透测试 对着镜子大喊三声"太菜了""太菜了""太菜了" DC系列靶机的第一篇.边学习边日靶机边进步,摸爬滚打着前行. 内容不只 ...
- DC-5 靶机渗透测试
DC-5 靶机渗透测试 冲冲冲,好好学习 .核心:footer 文件包含漏洞,wfuzz .收获总结写在文末. 谨记任务:找地方上传shell---> root. 操作机:kali 172.66 ...
- DC-9 靶机渗透测试
DC-9 渗透测试 冲冲冲,好好学习 DC系列的9个靶机做完了,对渗透流程基本掌握,但是实战中出现的情况千千万万,需要用到的知识面太广了,学不可以已. 靶机IP: 172.66.66.139 kali ...
- DC-7 靶机渗透测试
DC-7 渗透测试 冲冲冲,好好学习 .对管道符的理解加深了好多.最后提权时,遇到了点麻烦.想不懂一条命令为啥能执行生效,耗了一整天才算解决掉. 操作机:kali 172.66.66.129 靶机:D ...
- DC-8 靶机渗透测试
DC-8 渗透测试 冲冲冲 ,好好学习 . 核心:cms上传添加存在漏洞组件,利用该组件getshell 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.137 网络 ...
- DC-6 靶机渗透测试
DC-6 渗透测试 冲冲冲,好好学习 . 收获总结写在文末. 操作机:kali 172.66.66.129 靶机:DC-4 172.66.66.136 网络模式:NAT 上来一波 netdiscove ...
- DC-4 靶机渗透测试
DC-4 渗透测试 冲冲冲,努力学习 .掌握 hydra ,nc反弹shell 记住你要干嘛, 找地方上传shell(大多以后台登录为切入点,再反弹shell),shell提权到root 操作机:ka ...
- DC 1-3 靶机渗透
DC-1靶机 端口加内网主机探测,发现192.168.114.146这台主机,并且开放了有22,80,111以及48683这几个端口. 发现是Drupal框架. 进行目录的扫描: 发现admin被禁止 ...
- vulnhub-DC:7靶机渗透记录
准备工作 在vulnhub官网下载DC:7靶机DC: 7 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 已经知道了靶 ...
随机推荐
- Android系统编程入门系列之应用初始化Application
在上一篇文章中我们了解到Android系统启动应用的时候,会首先加载AndroidManifest.xml清单文件中的一系列信息,在清单文件中如果不指定<application></ ...
- rust漫游 - 写时拷贝 Cow<'_, B>
rust漫游 - 写时拷贝 Cow<'_, B> Cow 是一个写时复制功能的智能指针,在数据需要修改或者所有权发生变化时使用,多用于读多写少的场景. pub enum Cow<'a ...
- Lin语法(Linq对数据库操作)
一.Linq语句的应用: var queryAllCustomers = from cust in customers group cust by cust.City into custGroup ...
- 日常BUG-01 之 @Sl4j
问题描述: 需要打印日志,使用的是lombok包中的sl4j,lombok依赖如下: <dependency> <groupId>org.projectlombok</g ...
- Spring Boot配置Filter
此博客是学习Spring Boot过程中记录的,一来为了加深自己的理解,二来也希望这篇博客能帮到有需要的朋友.同时如果有错误,希望各位不吝指教 一.通过注入Bean的方式配置Filter: 注意:此方 ...
- mysql中,一个数字加上null,结果为null
在mysql中,一个数字加上null,结果为null. 这个问题是我用update语句时遇见的,就像下边的例子 update tableName set number = number + x 这里的 ...
- Mysql-5.7.28 Windows安装
1.下载mysql-5.7.28-winx64社区版并解压 2.解压后配置环境变量 3.my.ini配置文件及初始化mysql命令 4.登录mysql 每次windows安装mysql时都需要百度,自 ...
- C语言:宏参数的字符串化和宏参数的连接
在宏定义中,有时还会用到#和##两个符号,它们能够对宏参数进行操作. # 的用法 #用来将宏参数转换为字符串,也就是在宏参数的开头和末尾添加引号.例如有如下宏定义: #define STR(s) #s ...
- 高校表白App-团队冲刺第二天
今天要做什么 今天要把昨天的activity进行完善,并且加上计时跳转的功能,将其设置为主页面,设置两种跳转功能. 遇到的问题 今天没遇到什么大的问题,只是在进行编写的时候,又出现了R文件无法找到的情 ...
- [刘阳Java]_Spring入门_第1讲
Spring框架在企业中的使用非常多,优势明显.所以学好Spring框架肯定不言而喻.今天我们给大家介绍Spring的入门 1. 对于初学者来说我们要学习Spring框架中的哪些技术,这个有必要了解一 ...
